From 23d279e03ee1f7a1285614754738711359bc4b81 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Thu, 1 Aug 2019 17:28:00 +0300 Subject: [PATCH 001/272] [#1149] Replaced RetryQueue with oban-based retries. --- config/config.exs | 17 +- config/test.exs | 4 + docs/config.md | 7 - lib/pleroma/application.ex | 4 +- lib/pleroma/web/activity_pub/publisher.ex | 16 +- lib/pleroma/web/federator/federator.ex | 14 - lib/pleroma/web/federator/publisher.ex | 22 +- lib/pleroma/web/federator/retry_queue.ex | 239 ------------------ lib/pleroma/web/salmon/salmon.ex | 11 +- lib/pleroma/workers/publisher.ex | 14 + mix.exs | 1 + mix.lock | 1 + .../20190730055101_add_oban_jobs_table.exs | 6 + test/user_test.exs | 15 +- test/web/activity_pub/publisher_test.exs | 2 +- test/web/federator_test.exs | 78 +++--- test/web/retry_queue_test.exs | 48 ---- test/web/salmon/salmon_test.exs | 2 +- 18 files changed, 106 insertions(+), 395 deletions(-) delete mode 100644 lib/pleroma/web/federator/retry_queue.ex create mode 100644 lib/pleroma/workers/publisher.ex create mode 100644 priv/repo/migrations/20190730055101_add_oban_jobs_table.exs delete mode 100644 test/web/retry_queue_test.exs diff --git a/config/config.exs b/config/config.exs index 17770640a..1bb325bf5 100644 --- a/config/config.exs +++ b/config/config.exs @@ -440,13 +440,7 @@ "web" ] -config :pleroma, Pleroma.Web.Federator.RetryQueue, - enabled: false, - max_jobs: 20, - initial_timeout: 30, - max_retries: 5 - -config :pleroma_job_queue, :queues, +job_queues = [ federator_incoming: 50, federator_outgoing: 50, web_push: 50, @@ -454,6 +448,15 @@ transmogrifier: 20, scheduled_activities: 10, background: 5 +] + +config :pleroma_job_queue, :queues, job_queues + +config :pleroma, Oban, + repo: Pleroma.Repo, + verbose: false, + prune: {:maxage, 60 * 60 * 24 * 7}, + queues: job_queues config :pleroma, :fetch_initial_posts, enabled: false, diff --git a/config/test.exs b/config/test.exs index 92dca18bc..23d9bf779 100644 --- a/config/test.exs +++ b/config/test.exs @@ -62,6 +62,10 @@ config :pleroma_job_queue, disabled: true +config :pleroma, Oban, + queues: false, + prune: :disabled + config :pleroma, Pleroma.ScheduledActivity, daily_user_limit: 2, total_user_limit: 3, diff --git a/docs/config.md b/docs/config.md index 02f86dc16..5c18ffdbf 100644 --- a/docs/config.md +++ b/docs/config.md @@ -412,13 +412,6 @@ config :pleroma_job_queue, :queues, This config contains two queues: `federator_incoming` and `federator_outgoing`. Both have the `max_jobs` set to `50`. -## Pleroma.Web.Federator.RetryQueue - -* `enabled`: If set to `true`, failed federation jobs will be retried -* `max_jobs`: The maximum amount of parallel federation jobs running at the same time. -* `initial_timeout`: The initial timeout in seconds -* `max_retries`: The maximum number of times a federation job is retried - ## Pleroma.Web.Metadata * `providers`: a list of metadata providers to enable. Providers available: * Pleroma.Web.Metadata.Providers.OpenGraph diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 035331491..ce7d8c4b2 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -120,8 +120,8 @@ def start(_type, _args) do hackney_pool_children() ++ [ %{ - id: Pleroma.Web.Federator.RetryQueue, - start: {Pleroma.Web.Federator.RetryQueue, :start_link, []} + id: Oban, + start: {Oban, :start_link, [Application.get_env(:pleroma, Oban)]} }, %{ id: Pleroma.Web.OAuth.Token.CleanWorker, diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex index 46edab0bd..29f3221d1 100644 --- a/lib/pleroma/web/activity_pub/publisher.ex +++ b/lib/pleroma/web/activity_pub/publisher.ex @@ -85,6 +85,15 @@ def publish_one(%{inbox: inbox, json: json, actor: %User{} = actor, id: id} = pa end end + def publish_one(%{actor_id: actor_id} = params) do + actor = User.get_by_id(actor_id) + + params + |> Map.delete(:actor_id) + |> Map.put(:actor, actor) + |> publish_one() + end + defp should_federate?(inbox, public) do if public do true @@ -160,7 +169,8 @@ def determine_inbox( Publishes an activity with BCC to all relevant peers. """ - def publish(actor, %{data: %{"bcc" => bcc}} = activity) when is_list(bcc) and bcc != [] do + def publish(%User{} = actor, %{data: %{"bcc" => bcc}} = activity) + when is_list(bcc) and bcc != [] do public = is_public?(activity) {:ok, data} = Transmogrifier.prepare_outgoing(activity.data) @@ -187,7 +197,7 @@ def publish(actor, %{data: %{"bcc" => bcc}} = activity) when is_list(bcc) and bc Pleroma.Web.Federator.Publisher.enqueue_one(__MODULE__, %{ inbox: inbox, json: json, - actor: actor, + actor_id: actor.id, id: activity.data["id"], unreachable_since: unreachable_since }) @@ -222,7 +232,7 @@ def publish(%User{} = actor, %Activity{} = activity) do %{ inbox: inbox, json: json, - actor: actor, + actor_id: actor.id, id: activity.data["id"], unreachable_since: unreachable_since } diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index f4f9e83e0..97ec9d549 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -10,7 +10,6 @@ defmodule Pleroma.Web.Federator do alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.Federator.Publisher - alias Pleroma.Web.Federator.RetryQueue alias Pleroma.Web.OStatus alias Pleroma.Web.Websub @@ -130,19 +129,6 @@ def perform(:incoming_ap_doc, params) do end end - def perform( - :publish_single_websub, - %{xml: _xml, topic: _topic, callback: _callback, secret: _secret} = params - ) do - case Websub.publish_one(params) do - {:ok, _} -> - :ok - - {:error, _} -> - RetryQueue.enqueue(params, Websub) - end - end - def perform(type, _) do Logger.debug(fn -> "Unknown task: #{type}" end) {:error, "Don't know what to do with this"} diff --git a/lib/pleroma/web/federator/publisher.ex b/lib/pleroma/web/federator/publisher.ex index 70f870244..e8c1bf17f 100644 --- a/lib/pleroma/web/federator/publisher.ex +++ b/lib/pleroma/web/federator/publisher.ex @@ -6,7 +6,6 @@ defmodule Pleroma.Web.Federator.Publisher do alias Pleroma.Activity alias Pleroma.Config alias Pleroma.User - alias Pleroma.Web.Federator.RetryQueue require Logger @@ -30,23 +29,10 @@ defmodule Pleroma.Web.Federator.Publisher do Enqueue publishing a single activity. """ @spec enqueue_one(module(), Map.t()) :: :ok - def enqueue_one(module, %{} = params), - do: PleromaJobQueue.enqueue(:federator_outgoing, __MODULE__, [:publish_one, module, params]) - - @spec perform(atom(), module(), any()) :: {:ok, any()} | {:error, any()} - def perform(:publish_one, module, params) do - case apply(module, :publish_one, [params]) do - {:ok, _} -> - :ok - - {:error, _e} -> - RetryQueue.enqueue(params, module) - end - end - - def perform(type, _, _) do - Logger.debug("Unknown task: #{type}") - {:error, "Don't know what to do with this"} + def enqueue_one(module, %{} = params) do + %{module: to_string(module), params: params} + |> Pleroma.Workers.Publisher.new() + |> Pleroma.Repo.insert() end @doc """ diff --git a/lib/pleroma/web/federator/retry_queue.ex b/lib/pleroma/web/federator/retry_queue.ex deleted file mode 100644 index 3db948c2e..000000000 --- a/lib/pleroma/web/federator/retry_queue.ex +++ /dev/null @@ -1,239 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.Federator.RetryQueue do - use GenServer - - require Logger - - def init(args) do - queue_table = :ets.new(:pleroma_retry_queue, [:bag, :protected]) - - {:ok, %{args | queue_table: queue_table, running_jobs: :sets.new()}} - end - - def start_link do - enabled = - if Pleroma.Config.get(:env) == :test, - do: true, - else: Pleroma.Config.get([__MODULE__, :enabled], false) - - if enabled do - Logger.info("Starting retry queue") - - linkres = - GenServer.start_link( - __MODULE__, - %{delivered: 0, dropped: 0, queue_table: nil, running_jobs: nil}, - name: __MODULE__ - ) - - maybe_kickoff_timer() - linkres - else - Logger.info("Retry queue disabled") - :ignore - end - end - - def enqueue(data, transport, retries \\ 0) do - GenServer.cast(__MODULE__, {:maybe_enqueue, data, transport, retries + 1}) - end - - def get_stats do - GenServer.call(__MODULE__, :get_stats) - end - - def reset_stats do - GenServer.call(__MODULE__, :reset_stats) - end - - def get_retry_params(retries) do - if retries > Pleroma.Config.get([__MODULE__, :max_retries]) do - {:drop, "Max retries reached"} - else - {:retry, growth_function(retries)} - end - end - - def get_retry_timer_interval do - Pleroma.Config.get([:retry_queue, :interval], 1000) - end - - defp ets_count_expires(table, current_time) do - :ets.select_count( - table, - [ - { - {:"$1", :"$2"}, - [{:"=<", :"$1", {:const, current_time}}], - [true] - } - ] - ) - end - - defp ets_pop_n_expired(table, current_time, desired) do - {popped, _continuation} = - :ets.select( - table, - [ - { - {:"$1", :"$2"}, - [{:"=<", :"$1", {:const, current_time}}], - [:"$_"] - } - ], - desired - ) - - popped - |> Enum.each(fn e -> - :ets.delete_object(table, e) - end) - - popped - end - - def maybe_start_job(running_jobs, queue_table) do - # we don't want to hit the ets or the DateTime more times than we have to - # could optimize slightly further by not using the count, and instead grabbing - # up to N objects early... - current_time = DateTime.to_unix(DateTime.utc_now()) - n_running_jobs = :sets.size(running_jobs) - - if n_running_jobs < Pleroma.Config.get([__MODULE__, :max_jobs]) do - n_ready_jobs = ets_count_expires(queue_table, current_time) - - if n_ready_jobs > 0 do - # figure out how many we could start - available_job_slots = Pleroma.Config.get([__MODULE__, :max_jobs]) - n_running_jobs - start_n_jobs(running_jobs, queue_table, current_time, available_job_slots) - else - running_jobs - end - else - running_jobs - end - end - - defp start_n_jobs(running_jobs, _queue_table, _current_time, 0) do - running_jobs - end - - defp start_n_jobs(running_jobs, queue_table, current_time, available_job_slots) - when available_job_slots > 0 do - candidates = ets_pop_n_expired(queue_table, current_time, available_job_slots) - - candidates - |> List.foldl(running_jobs, fn {_, e}, rj -> - {:ok, pid} = Task.start(fn -> worker(e) end) - mref = Process.monitor(pid) - :sets.add_element(mref, rj) - end) - end - - def worker({:send, data, transport, retries}) do - case transport.publish_one(data) do - {:ok, _} -> - GenServer.cast(__MODULE__, :inc_delivered) - :delivered - - {:error, _reason} -> - enqueue(data, transport, retries) - :retry - end - end - - def handle_call(:get_stats, _from, %{delivered: delivery_count, dropped: drop_count} = state) do - {:reply, %{delivered: delivery_count, dropped: drop_count}, state} - end - - def handle_call(:reset_stats, _from, %{delivered: delivery_count, dropped: drop_count} = state) do - {:reply, %{delivered: delivery_count, dropped: drop_count}, - %{state | delivered: 0, dropped: 0}} - end - - def handle_cast(:reset_stats, state) do - {:noreply, %{state | delivered: 0, dropped: 0}} - end - - def handle_cast( - {:maybe_enqueue, data, transport, retries}, - %{dropped: drop_count, queue_table: queue_table, running_jobs: running_jobs} = state - ) do - case get_retry_params(retries) do - {:retry, timeout} -> - :ets.insert(queue_table, {timeout, {:send, data, transport, retries}}) - running_jobs = maybe_start_job(running_jobs, queue_table) - {:noreply, %{state | running_jobs: running_jobs}} - - {:drop, message} -> - Logger.debug(message) - {:noreply, %{state | dropped: drop_count + 1}} - end - end - - def handle_cast(:kickoff_timer, state) do - retry_interval = get_retry_timer_interval() - Process.send_after(__MODULE__, :retry_timer_run, retry_interval) - {:noreply, state} - end - - def handle_cast(:inc_delivered, %{delivered: delivery_count} = state) do - {:noreply, %{state | delivered: delivery_count + 1}} - end - - def handle_cast(:inc_dropped, %{dropped: drop_count} = state) do - {:noreply, %{state | dropped: drop_count + 1}} - end - - def handle_info({:send, data, transport, retries}, %{delivered: delivery_count} = state) do - case transport.publish_one(data) do - {:ok, _} -> - {:noreply, %{state | delivered: delivery_count + 1}} - - {:error, _reason} -> - enqueue(data, transport, retries) - {:noreply, state} - end - end - - def handle_info( - :retry_timer_run, - %{queue_table: queue_table, running_jobs: running_jobs} = state - ) do - maybe_kickoff_timer() - running_jobs = maybe_start_job(running_jobs, queue_table) - {:noreply, %{state | running_jobs: running_jobs}} - end - - def handle_info({:DOWN, ref, :process, _pid, _reason}, state) do - %{running_jobs: running_jobs, queue_table: queue_table} = state - running_jobs = :sets.del_element(ref, running_jobs) - running_jobs = maybe_start_job(running_jobs, queue_table) - {:noreply, %{state | running_jobs: running_jobs}} - end - - def handle_info(unknown, state) do - Logger.debug("RetryQueue: don't know what to do with #{inspect(unknown)}, ignoring") - {:noreply, state} - end - - if Pleroma.Config.get(:env) == :test do - defp growth_function(_retries) do - _shutit = Pleroma.Config.get([__MODULE__, :initial_timeout]) - DateTime.to_unix(DateTime.utc_now()) - 1 - end - else - defp growth_function(retries) do - round(Pleroma.Config.get([__MODULE__, :initial_timeout]) * :math.pow(retries, 3)) + - DateTime.to_unix(DateTime.utc_now()) - end - end - - defp maybe_kickoff_timer do - GenServer.cast(__MODULE__, :kickoff_timer) - end -end diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index 9b01ebcc6..bbaa293fd 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -170,6 +170,15 @@ def publish_one(%{recipient: url, feed: feed} = params) when is_binary(url) do end end + def publish_one(%{recipient_id: recipient_id} = params) do + recipient = User.get_by_id(recipient_id) + + params + |> Map.delete(:recipient_id) + |> Map.put(:recipient, recipient) + |> publish_one() + end + def publish_one(_), do: :noop @supported_activities [ @@ -218,7 +227,7 @@ def publish(%{info: %{keys: keys}} = user, %{data: %{"type" => type}} = activity Logger.debug(fn -> "Sending Salmon to #{remote_user.ap_id}" end) Publisher.enqueue_one(__MODULE__, %{ - recipient: remote_user, + recipient_id: remote_user.id, feed: feed, unreachable_since: reachable_urls_metadata[remote_user.info.salmon] }) diff --git a/lib/pleroma/workers/publisher.ex b/lib/pleroma/workers/publisher.ex new file mode 100644 index 000000000..639794830 --- /dev/null +++ b/lib/pleroma/workers/publisher.ex @@ -0,0 +1,14 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.Publisher do + use Oban.Worker, queue: "federator_outgoing", max_attempts: 5 + + @impl Oban.Worker + def perform(%Oban.Job{args: %{module: module_name, params: params}}) do + module_name + |> String.to_atom() + |> apply(:publish_one, [params]) + end +end diff --git a/mix.exs b/mix.exs index 2a8fe2e9d..1ca7a4a77 100644 --- a/mix.exs +++ b/mix.exs @@ -101,6 +101,7 @@ defp deps do {:phoenix_ecto, "~> 4.0"}, {:ecto_sql, "~> 3.1"}, {:postgrex, ">= 0.13.5"}, + {:oban, "~> 0.6"}, {:gettext, "~> 0.15"}, {:comeonin, "~> 4.1.1"}, {:pbkdf2_elixir, "~> 0.12.3"}, diff --git a/mix.lock b/mix.lock index 65da7be8b..8c0b9734e 100644 --- a/mix.lock +++ b/mix.lock @@ -55,6 +55,7 @@ "mogrify": {:hex, :mogrify, "0.6.1", "de1b527514f2d95a7bbe9642eb556061afb337e220cf97adbf3a4e6438ed70af", [:mix], [], "hexpm"}, "mox": {:hex, :mox, "0.5.1", "f86bb36026aac1e6f924a4b6d024b05e9adbed5c63e8daa069bd66fb3292165b", [:mix], [], "hexpm"}, "nimble_parsec": {:hex, :nimble_parsec, "0.5.0", "90e2eca3d0266e5c53f8fbe0079694740b9c91b6747f2b7e3c5d21966bba8300", [:mix], [], "hexpm"}, + "oban": {:hex, :oban, "0.6.0", "8b9b861355610e703e58a878bc29959f3f0e1b4cd1e90d785cf2bb2498d3b893", [:mix], [{:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm"}, "pbkdf2_elixir": {:hex, :pbkdf2_elixir, "0.12.3", "6706a148809a29c306062862c803406e88f048277f6e85b68faf73291e820b84", [:mix], [], "hexpm"}, "phoenix": {:hex, :phoenix, "1.4.9", "746d098e10741c334d88143d3c94cab1756435f94387a63441792e66ec0ee974", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.8.1 or ~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, diff --git a/priv/repo/migrations/20190730055101_add_oban_jobs_table.exs b/priv/repo/migrations/20190730055101_add_oban_jobs_table.exs new file mode 100644 index 000000000..2f201bd05 --- /dev/null +++ b/priv/repo/migrations/20190730055101_add_oban_jobs_table.exs @@ -0,0 +1,6 @@ +defmodule Pleroma.Repo.Migrations.AddObanJobsTable do + use Ecto.Migration + + defdelegate up, to: Oban.Migrations + defdelegate down, to: Oban.Migrations +end diff --git a/test/user_test.exs b/test/user_test.exs index 556df45fd..70c376384 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -12,9 +12,9 @@ defmodule Pleroma.UserTest do alias Pleroma.Web.CommonAPI use Pleroma.DataCase + use Oban.Testing, repo: Pleroma.Repo import Pleroma.Factory - import Mock setup_all do Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) @@ -1034,11 +1034,7 @@ test "it deletes a user, all follow relationships and all activities", %{user: u refute Activity.get_by_id(repeat.id) end - test_with_mock "it sends out User Delete activity", - %{user: user}, - Pleroma.Web.ActivityPub.Publisher, - [:passthrough], - [] do + test "it sends out User Delete activity", %{user: user} do config_path = [:instance, :federating] initial_setting = Pleroma.Config.get(config_path) Pleroma.Config.put(config_path, true) @@ -1048,11 +1044,8 @@ test "it deletes a user, all follow relationships and all activities", %{user: u {:ok, _user} = User.delete(user) - assert called( - Pleroma.Web.ActivityPub.Publisher.publish_one(%{ - inbox: "http://mastodon.example.org/inbox" - }) - ) + assert [%{args: %{"params" => %{"inbox" => "http://mastodon.example.org/inbox"}}}] = + all_enqueued(worker: Pleroma.Workers.Publisher) Pleroma.Config.put(config_path, initial_setting) end diff --git a/test/web/activity_pub/publisher_test.exs b/test/web/activity_pub/publisher_test.exs index 36a39c84c..26d019878 100644 --- a/test/web/activity_pub/publisher_test.exs +++ b/test/web/activity_pub/publisher_test.exs @@ -257,7 +257,7 @@ test "it returns inbox for messages involving single recipients in total" do assert called( Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{ inbox: "https://domain.com/users/nick1/inbox", - actor: actor, + actor_id: actor.id, id: note_activity.data["id"] }) ) diff --git a/test/web/federator_test.exs b/test/web/federator_test.exs index 6e143eee4..5c1704548 100644 --- a/test/web/federator_test.exs +++ b/test/web/federator_test.exs @@ -6,7 +6,10 @@ defmodule Pleroma.Web.FederatorTest do alias Pleroma.Instances alias Pleroma.Web.CommonAPI alias Pleroma.Web.Federator + use Pleroma.DataCase + use Oban.Testing, repo: Pleroma.Repo + import Pleroma.Factory import Mock @@ -22,15 +25,6 @@ defmodule Pleroma.Web.FederatorTest do :ok end - describe "Publisher.perform" do - test "call `perform` with unknown task" do - assert { - :error, - "Don't know what to do with this" - } = Pleroma.Web.Federator.Publisher.perform("test", :ok, :ok) - end - end - describe "Publish an activity" do setup do user = insert(:user) @@ -73,10 +67,7 @@ test "with relays deactivated, it does not publish to the relay", %{ end describe "Targets reachability filtering in `publish`" do - test_with_mock "it federates only to reachable instances via AP", - Pleroma.Web.ActivityPub.Publisher, - [:passthrough], - [] do + test "it federates only to reachable instances via AP" do user = insert(:user) {inbox1, inbox2} = @@ -104,20 +95,13 @@ test "with relays deactivated, it does not publish to the relay", %{ {:ok, _activity} = CommonAPI.post(user, %{"status" => "HI @nick1@domain.com, @nick2@domain2.com!"}) - assert called( - Pleroma.Web.ActivityPub.Publisher.publish_one(%{ - inbox: inbox1, - unreachable_since: dt - }) - ) + expected_dt = NaiveDateTime.to_iso8601(dt) - refute called(Pleroma.Web.ActivityPub.Publisher.publish_one(%{inbox: inbox2})) + assert [%{args: %{"params" => %{"inbox" => ^inbox1, "unreachable_since" => ^expected_dt}}}] = + all_enqueued(worker: Pleroma.Workers.Publisher) end - test_with_mock "it federates only to reachable instances via Websub", - Pleroma.Web.Websub, - [:passthrough], - [] do + test "it federates only to reachable instances via Websub" do user = insert(:user) websub_topic = Pleroma.Web.OStatus.feed_path(user) @@ -142,23 +126,25 @@ test "with relays deactivated, it does not publish to the relay", %{ {:ok, _activity} = CommonAPI.post(user, %{"status" => "HI"}) - assert called( - Pleroma.Web.Websub.publish_one(%{ - callback: sub2.callback, - unreachable_since: dt - }) - ) + expected_callback = sub2.callback + expected_dt = NaiveDateTime.to_iso8601(dt) - refute called(Pleroma.Web.Websub.publish_one(%{callback: sub1.callback})) + assert [ + %{ + args: %{ + "params" => %{ + "callback" => ^expected_callback, + "unreachable_since" => ^expected_dt + } + } + } + ] = all_enqueued(worker: Pleroma.Workers.Publisher) end - test_with_mock "it federates only to reachable instances via Salmon", - Pleroma.Web.Salmon, - [:passthrough], - [] do + test "it federates only to reachable instances via Salmon" do user = insert(:user) - remote_user1 = + _remote_user1 = insert(:user, %{ local: false, nickname: "nick1@domain.com", @@ -174,6 +160,8 @@ test "with relays deactivated, it does not publish to the relay", %{ info: %{salmon: "https://domain2.com/salmon"} }) + remote_user2_id = remote_user2.id + dt = NaiveDateTime.utc_now() Instances.set_unreachable(remote_user2.ap_id, dt) @@ -182,14 +170,18 @@ test "with relays deactivated, it does not publish to the relay", %{ {:ok, _activity} = CommonAPI.post(user, %{"status" => "HI @nick1@domain.com, @nick2@domain2.com!"}) - assert called( - Pleroma.Web.Salmon.publish_one(%{ - recipient: remote_user2, - unreachable_since: dt - }) - ) + expected_dt = NaiveDateTime.to_iso8601(dt) - refute called(Pleroma.Web.Salmon.publish_one(%{recipient: remote_user1})) + assert [ + %{ + args: %{ + "params" => %{ + "recipient_id" => ^remote_user2_id, + "unreachable_since" => ^expected_dt + } + } + } + ] = all_enqueued(worker: Pleroma.Workers.Publisher) end end diff --git a/test/web/retry_queue_test.exs b/test/web/retry_queue_test.exs deleted file mode 100644 index ecb3ce5d0..000000000 --- a/test/web/retry_queue_test.exs +++ /dev/null @@ -1,48 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule MockActivityPub do - def publish_one({ret, waiter}) do - send(waiter, :complete) - {ret, "success"} - end -end - -defmodule Pleroma.Web.Federator.RetryQueueTest do - use Pleroma.DataCase - alias Pleroma.Web.Federator.RetryQueue - - @small_retry_count 0 - @hopeless_retry_count 10 - - setup do - RetryQueue.reset_stats() - end - - test "RetryQueue responds to stats request" do - assert %{delivered: 0, dropped: 0} == RetryQueue.get_stats() - end - - test "failed posts are retried" do - {:retry, _timeout} = RetryQueue.get_retry_params(@small_retry_count) - - wait_task = - Task.async(fn -> - receive do - :complete -> :ok - end - end) - - RetryQueue.enqueue({:ok, wait_task.pid}, MockActivityPub, @small_retry_count) - Task.await(wait_task) - assert %{delivered: 1, dropped: 0} == RetryQueue.get_stats() - end - - test "posts that have been tried too many times are dropped" do - {:drop, _timeout} = RetryQueue.get_retry_params(@hopeless_retry_count) - - RetryQueue.enqueue({:ok, nil}, MockActivityPub, @hopeless_retry_count) - assert %{delivered: 0, dropped: 1} == RetryQueue.get_stats() - end -end diff --git a/test/web/salmon/salmon_test.exs b/test/web/salmon/salmon_test.exs index e86e76fe9..0186f3fef 100644 --- a/test/web/salmon/salmon_test.exs +++ b/test/web/salmon/salmon_test.exs @@ -96,6 +96,6 @@ test "it gets a magic key" do Salmon.publish(user, activity) - assert called(Publisher.enqueue_one(Salmon, %{recipient: mentioned_user})) + assert called(Publisher.enqueue_one(Salmon, %{recipient_id: mentioned_user.id})) end end From b7fad8d395c2bd1afe445a370e539571f5ec0c18 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 9 Aug 2019 20:08:01 +0300 Subject: [PATCH 002/272] [#1149] Oban jobs implementation for :federator_incoming and :federator_outgoing queues. --- config/config.exs | 7 + lib/pleroma/web/activity_pub/utils.ex | 9 +- lib/pleroma/web/federator/federator.ex | 134 +++++------------- lib/pleroma/web/federator/publisher.ex | 12 +- lib/pleroma/workers/publisher.ex | 25 +++- lib/pleroma/workers/receiver.ex | 61 ++++++++ lib/pleroma/workers/subscriber.ex | 44 ++++++ test/activity_test.exs | 4 +- test/support/oban_helpers.ex | 36 +++++ test/user_test.exs | 11 +- .../activity_pub_controller_test.exs | 14 +- test/web/federator_test.exs | 57 +++++--- test/web/websub/websub_test.exs | 4 + 13 files changed, 280 insertions(+), 138 deletions(-) create mode 100644 lib/pleroma/workers/receiver.ex create mode 100644 lib/pleroma/workers/subscriber.ex create mode 100644 test/support/oban_helpers.ex diff --git a/config/config.exs b/config/config.exs index 1bb325bf5..5fd64365c 100644 --- a/config/config.exs +++ b/config/config.exs @@ -458,6 +458,13 @@ prune: {:maxage, 60 * 60 * 24 * 7}, queues: job_queues +config :pleroma, :workers, + retries: [ + compile_time_default: 1, + federator_incoming: 5, + federator_outgoing: 5 + ] + config :pleroma, :fetch_initial_posts, enabled: false, pages: 5 diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 39074888b..f0917f9d4 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -168,14 +168,7 @@ def create_context(context) do """ def maybe_federate(%Activity{local: true} = activity) do if Pleroma.Config.get!([:instance, :federating]) do - priority = - case activity.data["type"] do - "Delete" -> 10 - "Create" -> 1 - _ -> 5 - end - - Pleroma.Web.Federator.publish(activity, priority) + Pleroma.Web.Federator.publish(activity) end :ok diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index 97ec9d549..bb9eadfee 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -3,22 +3,15 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Federator do - alias Pleroma.Activity - alias Pleroma.Object.Containment - alias Pleroma.User - alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Web.ActivityPub.Transmogrifier - alias Pleroma.Web.ActivityPub.Utils - alias Pleroma.Web.Federator.Publisher - alias Pleroma.Web.OStatus - alias Pleroma.Web.Websub + alias Pleroma.Workers.Publisher, as: PublisherWorker + alias Pleroma.Workers.Receiver, as: ReceiverWorker + alias Pleroma.Workers.Subscriber, as: SubscriberWorker require Logger def init do # 1 minute - Process.sleep(1000 * 60) - refresh_subscriptions() + refresh_subscriptions(schedule_in: 60) end @doc "Addresses [memory leaks on recursive replies fetching](https://git.pleroma.social/pleroma/pleroma/issues/161)" @@ -36,111 +29,50 @@ def allowed_incoming_reply_depth?(depth) do # Client API def incoming_doc(doc) do - PleromaJobQueue.enqueue(:federator_incoming, __MODULE__, [:incoming_doc, doc]) + %{"op" => "incoming_doc", "body" => doc} + |> ReceiverWorker.new(worker_args(:federator_incoming)) + |> Pleroma.Repo.insert() end def incoming_ap_doc(params) do - PleromaJobQueue.enqueue(:federator_incoming, __MODULE__, [:incoming_ap_doc, params]) + %{"op" => "incoming_ap_doc", "params" => params} + |> ReceiverWorker.new(worker_args(:federator_incoming)) + |> Pleroma.Repo.insert() end - def publish(activity, priority \\ 1) do - PleromaJobQueue.enqueue(:federator_outgoing, __MODULE__, [:publish, activity], priority) + def publish(%{id: "pleroma:fakeid"} = activity) do + PublisherWorker.perform_publish(activity) + end + + def publish(activity) do + %{"op" => "publish", "activity_id" => activity.id} + |> PublisherWorker.new(worker_args(:federator_outgoing)) + |> Pleroma.Repo.insert() end def verify_websub(websub) do - PleromaJobQueue.enqueue(:federator_outgoing, __MODULE__, [:verify_websub, websub]) + %{"op" => "verify_websub", "websub_id" => websub.id} + |> SubscriberWorker.new(worker_args(:federator_outgoing)) + |> Pleroma.Repo.insert() end - def request_subscription(sub) do - PleromaJobQueue.enqueue(:federator_outgoing, __MODULE__, [:request_subscription, sub]) + def request_subscription(websub) do + %{"op" => "request_subscription", "websub_id" => websub.id} + |> SubscriberWorker.new(worker_args(:federator_outgoing)) + |> Pleroma.Repo.insert() end - def refresh_subscriptions do - PleromaJobQueue.enqueue(:federator_outgoing, __MODULE__, [:refresh_subscriptions]) + def refresh_subscriptions(worker_args \\ []) do + %{"op" => "refresh_subscriptions"} + |> SubscriberWorker.new(worker_args ++ [max_attempts: 1] ++ worker_args(:federator_outgoing)) + |> Pleroma.Repo.insert() end - # Job Worker Callbacks - - def perform(:refresh_subscriptions) do - Logger.debug("Federator running refresh subscriptions") - Websub.refresh_subscriptions() - - spawn(fn -> - # 6 hours - Process.sleep(1000 * 60 * 60 * 6) - refresh_subscriptions() - end) - end - - def perform(:request_subscription, websub) do - Logger.debug("Refreshing #{websub.topic}") - - with {:ok, websub} <- Websub.request_subscription(websub) do - Logger.debug("Successfully refreshed #{websub.topic}") + defp worker_args(queue) do + if max_attempts = Pleroma.Config.get([:workers, :retries, queue]) do + [max_attempts: max_attempts] else - _e -> Logger.debug("Couldn't refresh #{websub.topic}") - end - end - - def perform(:publish, activity) do - Logger.debug(fn -> "Running publish for #{activity.data["id"]}" end) - - with %User{} = actor <- User.get_cached_by_ap_id(activity.data["actor"]), - {:ok, actor} <- User.ensure_keys_present(actor) do - Publisher.publish(actor, activity) - end - end - - def perform(:verify_websub, websub) do - Logger.debug(fn -> - "Running WebSub verification for #{websub.id} (#{websub.topic}, #{websub.callback})" - end) - - Websub.verify(websub) - end - - def perform(:incoming_doc, doc) do - Logger.info("Got document, trying to parse") - OStatus.handle_incoming(doc) - end - - def perform(:incoming_ap_doc, params) do - Logger.info("Handling incoming AP activity") - - params = Utils.normalize_params(params) - - # NOTE: we use the actor ID to do the containment, this is fine because an - # actor shouldn't be acting on objects outside their own AP server. - with {:ok, _user} <- ap_enabled_actor(params["actor"]), - nil <- Activity.normalize(params["id"]), - :ok <- Containment.contain_origin_from_id(params["actor"], params), - {:ok, activity} <- Transmogrifier.handle_incoming(params) do - {:ok, activity} - else - %Activity{} -> - Logger.info("Already had #{params["id"]}") - :error - - _e -> - # Just drop those for now - Logger.info("Unhandled activity") - Logger.info(Jason.encode!(params, pretty: true)) - :error - end - end - - def perform(type, _) do - Logger.debug(fn -> "Unknown task: #{type}" end) - {:error, "Don't know what to do with this"} - end - - def ap_enabled_actor(id) do - user = User.get_cached_by_ap_id(id) - - if User.ap_enabled?(user) do - {:ok, user} - else - ActivityPub.make_user_from_ap_id(id) + [] end end end diff --git a/lib/pleroma/web/federator/publisher.ex b/lib/pleroma/web/federator/publisher.ex index e8c1bf17f..05d2be615 100644 --- a/lib/pleroma/web/federator/publisher.ex +++ b/lib/pleroma/web/federator/publisher.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Web.Federator.Publisher do alias Pleroma.Activity alias Pleroma.Config alias Pleroma.User + alias Pleroma.Workers.Publisher, as: PublisherWorker require Logger @@ -30,8 +31,15 @@ defmodule Pleroma.Web.Federator.Publisher do """ @spec enqueue_one(module(), Map.t()) :: :ok def enqueue_one(module, %{} = params) do - %{module: to_string(module), params: params} - |> Pleroma.Workers.Publisher.new() + worker_args = + if max_attempts = Pleroma.Config.get([:workers, :retries, :federator_outgoing]) do + [max_attempts: max_attempts] + else + [] + end + + %{"op" => "publish_one", "module" => to_string(module), "params" => params} + |> PublisherWorker.new(worker_args) |> Pleroma.Repo.insert() end diff --git a/lib/pleroma/workers/publisher.ex b/lib/pleroma/workers/publisher.ex index 639794830..67871977a 100644 --- a/lib/pleroma/workers/publisher.ex +++ b/lib/pleroma/workers/publisher.ex @@ -3,12 +3,33 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.Publisher do - use Oban.Worker, queue: "federator_outgoing", max_attempts: 5 + alias Pleroma.Activity + alias Pleroma.User + + # Note: `max_attempts` is intended to be overridden in `new/1` call + use Oban.Worker, + queue: "federator_outgoing", + max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) @impl Oban.Worker - def perform(%Oban.Job{args: %{module: module_name, params: params}}) do + def perform(%{"op" => "publish", "activity_id" => activity_id}) do + with %Activity{} = activity <- Activity.get_by_id(activity_id) do + perform_publish(activity) + else + _ -> raise "Non-existing activity: #{activity_id}" + end + end + + def perform(%{"op" => "publish_one", "module" => module_name, "params" => params}) do module_name |> String.to_atom() |> apply(:publish_one, [params]) end + + def perform_publish(%Activity{} = activity) do + with %User{} = actor <- User.get_cached_by_ap_id(activity.data["actor"]), + {:ok, actor} <- User.ensure_keys_present(actor) do + Pleroma.Web.Federator.Publisher.publish(actor, activity) + end + end end diff --git a/lib/pleroma/workers/receiver.ex b/lib/pleroma/workers/receiver.ex new file mode 100644 index 000000000..43558b4e6 --- /dev/null +++ b/lib/pleroma/workers/receiver.ex @@ -0,0 +1,61 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.Receiver do + alias Pleroma.Activity + alias Pleroma.Object.Containment + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Transmogrifier + alias Pleroma.Web.ActivityPub.Utils + alias Pleroma.Web.OStatus + + require Logger + + # Note: `max_attempts` is intended to be overridden in `new/1` call + use Oban.Worker, + queue: "federator_incoming", + max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + + @impl Oban.Worker + def perform(%{"op" => "incoming_doc", "body" => doc}) do + Logger.info("Got incoming document, trying to parse") + OStatus.handle_incoming(doc) + end + + def perform(%{"op" => "incoming_ap_doc", "params" => params}) do + Logger.info("Handling incoming AP activity") + + params = Utils.normalize_params(params) + + # NOTE: we use the actor ID to do the containment, this is fine because an + # actor shouldn't be acting on objects outside their own AP server. + with {:ok, _user} <- ap_enabled_actor(params["actor"]), + nil <- Activity.normalize(params["id"]), + :ok <- Containment.contain_origin_from_id(params["actor"], params), + {:ok, activity} <- Transmogrifier.handle_incoming(params) do + {:ok, activity} + else + %Activity{} -> + Logger.info("Already had #{params["id"]}") + :error + + _e -> + # Just drop those for now + Logger.info("Unhandled activity") + Logger.info(Jason.encode!(params, pretty: true)) + :error + end + end + + defp ap_enabled_actor(id) do + user = User.get_cached_by_ap_id(id) + + if User.ap_enabled?(user) do + {:ok, user} + else + ActivityPub.make_user_from_ap_id(id) + end + end +end diff --git a/lib/pleroma/workers/subscriber.ex b/lib/pleroma/workers/subscriber.ex new file mode 100644 index 000000000..a8c01bb10 --- /dev/null +++ b/lib/pleroma/workers/subscriber.ex @@ -0,0 +1,44 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.Subscriber do + alias Pleroma.Repo + alias Pleroma.Web.Websub + alias Pleroma.Web.Websub.WebsubClientSubscription + + require Logger + + # Note: `max_attempts` is intended to be overridden in `new/1` call + use Oban.Worker, + queue: "federator_outgoing", + max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + + @impl Oban.Worker + def perform(%{"op" => "refresh_subscriptions"}) do + Websub.refresh_subscriptions() + # Schedule the next run in 6 hours + Pleroma.Web.Federator.refresh_subscriptions(schedule_in: 3600 * 6) + end + + def perform(%{"op" => "request_subscription", "websub_id" => websub_id}) do + websub = Repo.get(WebsubClientSubscription, websub_id) + Logger.debug("Refreshing #{websub.topic}") + + with {:ok, websub} <- Websub.request_subscription(websub) do + Logger.debug("Successfully refreshed #{websub.topic}") + else + _e -> Logger.debug("Couldn't refresh #{websub.topic}") + end + end + + def perform(%{"op" => "verify_websub", "websub_id" => websub_id}) do + websub = Repo.get(WebsubClientSubscription, websub_id) + + Logger.debug(fn -> + "Running WebSub verification for #{websub.id} (#{websub.topic}, #{websub.callback})" + end) + + Websub.verify(websub) + end +end diff --git a/test/activity_test.exs b/test/activity_test.exs index b27f6fd36..b9c12adb2 100644 --- a/test/activity_test.exs +++ b/test/activity_test.exs @@ -6,6 +6,7 @@ defmodule Pleroma.ActivityTest do use Pleroma.DataCase alias Pleroma.Activity alias Pleroma.Bookmark + alias Pleroma.ObanHelpers alias Pleroma.Object alias Pleroma.ThreadMute import Pleroma.Factory @@ -125,7 +126,8 @@ test "when association is not loaded" do } {:ok, local_activity} = Pleroma.Web.CommonAPI.post(user, %{"status" => "find me!"}) - {:ok, remote_activity} = Pleroma.Web.Federator.incoming_ap_doc(params) + {:ok, job} = Pleroma.Web.Federator.incoming_ap_doc(params) + {:ok, remote_activity} = ObanHelpers.perform(job) %{local_activity: local_activity, remote_activity: remote_activity, user: user} end diff --git a/test/support/oban_helpers.ex b/test/support/oban_helpers.ex new file mode 100644 index 000000000..54b5a9566 --- /dev/null +++ b/test/support/oban_helpers.ex @@ -0,0 +1,36 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.ObanHelpers do + @moduledoc """ + Oban test helpers. + """ + + alias Pleroma.Repo + + def perform(%Oban.Job{} = job) do + res = apply(String.to_existing_atom("Elixir." <> job.worker), :perform, [job]) + Repo.delete(job) + res + end + + def perform(jobs) when is_list(jobs) do + for job <- jobs, do: perform(job) + end + + def member?(%{} = job_args, jobs) when is_list(jobs) do + Enum.any?(jobs, fn job -> + member?(job_args, job.args) + end) + end + + def member?(%{} = test_attrs, %{} = attrs) do + Enum.all?( + test_attrs, + fn {k, _v} -> member?(test_attrs[k], attrs[k]) end + ) + end + + def member?(x, y), do: x == y +end diff --git a/test/user_test.exs b/test/user_test.exs index 70c376384..ee6d8e8f3 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -5,6 +5,7 @@ defmodule Pleroma.UserTest do alias Pleroma.Activity alias Pleroma.Builders.UserBuilder + alias Pleroma.ObanHelpers alias Pleroma.Object alias Pleroma.Repo alias Pleroma.User @@ -1044,8 +1045,16 @@ test "it sends out User Delete activity", %{user: user} do {:ok, _user} = User.delete(user) - assert [%{args: %{"params" => %{"inbox" => "http://mastodon.example.org/inbox"}}}] = + assert ObanHelpers.member?( + %{ + "op" => "publish_one", + "params" => %{ + "inbox" => "http://mastodon.example.org/inbox", + "id" => "pleroma:fakeid" + } + }, all_enqueued(worker: Pleroma.Workers.Publisher) + ) Pleroma.Config.put(config_path, initial_setting) end diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 40344f17e..1d809164f 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -4,15 +4,19 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do use Pleroma.Web.ConnCase + use Oban.Testing, repo: Pleroma.Repo + import Pleroma.Factory alias Pleroma.Activity alias Pleroma.Instances + alias Pleroma.ObanHelpers alias Pleroma.Object alias Pleroma.User alias Pleroma.Web.ActivityPub.ObjectView alias Pleroma.Web.ActivityPub.UserView alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.CommonAPI + alias Pleroma.Workers.Receiver, as: ReceiverWorker setup_all do Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) @@ -232,7 +236,8 @@ test "it inserts an incoming activity into the database", %{conn: conn} do |> post("/inbox", data) assert "ok" == json_response(conn, 200) - :timer.sleep(500) + + ObanHelpers.perform(all_enqueued(worker: ReceiverWorker)) assert Activity.get_by_ap_id(data["id"]) end @@ -274,7 +279,7 @@ test "it inserts an incoming activity into the database", %{conn: conn, data: da |> post("/users/#{user.nickname}/inbox", data) assert "ok" == json_response(conn, 200) - :timer.sleep(500) + ObanHelpers.perform(all_enqueued(worker: ReceiverWorker)) assert Activity.get_by_ap_id(data["id"]) end @@ -303,7 +308,7 @@ test "it accepts messages from actors that are followed by the user", %{ |> post("/users/#{recipient.nickname}/inbox", data) assert "ok" == json_response(conn, 200) - :timer.sleep(500) + ObanHelpers.perform(all_enqueued(worker: ReceiverWorker)) assert Activity.get_by_ap_id(data["id"]) end @@ -382,6 +387,8 @@ test "it removes all follower collections but actor's", %{conn: conn} do |> post("/users/#{recipient.nickname}/inbox", data) |> json_response(200) + ObanHelpers.perform(all_enqueued(worker: ReceiverWorker)) + activity = Activity.get_by_ap_id(data["id"]) assert activity.id @@ -457,6 +464,7 @@ test "it inserts an incoming create activity into the database", %{conn: conn} d |> post("/users/#{user.nickname}/outbox", data) result = json_response(conn, 201) + assert Activity.get_by_ap_id(result["id"]) end diff --git a/test/web/federator_test.exs b/test/web/federator_test.exs index 5c1704548..ebe962da2 100644 --- a/test/web/federator_test.exs +++ b/test/web/federator_test.exs @@ -4,8 +4,10 @@ defmodule Pleroma.Web.FederatorTest do alias Pleroma.Instances + alias Pleroma.ObanHelpers alias Pleroma.Web.CommonAPI alias Pleroma.Web.Federator + alias Pleroma.Workers.Publisher, as: PublisherWorker use Pleroma.DataCase use Oban.Testing, repo: Pleroma.Repo @@ -45,6 +47,7 @@ test "with relays active, it publishes to the relay", %{ } do with_mocks([relay_mock]) do Federator.publish(activity) + ObanHelpers.perform(all_enqueued(worker: PublisherWorker)) end assert_received :relay_publish @@ -58,6 +61,7 @@ test "with relays deactivated, it does not publish to the relay", %{ with_mocks([relay_mock]) do Federator.publish(activity) + ObanHelpers.perform(all_enqueued(worker: PublisherWorker)) end refute_received :relay_publish @@ -97,8 +101,15 @@ test "it federates only to reachable instances via AP" do expected_dt = NaiveDateTime.to_iso8601(dt) - assert [%{args: %{"params" => %{"inbox" => ^inbox1, "unreachable_since" => ^expected_dt}}}] = - all_enqueued(worker: Pleroma.Workers.Publisher) + ObanHelpers.perform(all_enqueued(worker: PublisherWorker)) + + assert ObanHelpers.member?( + %{ + "op" => "publish_one", + "params" => %{"inbox" => inbox1, "unreachable_since" => expected_dt} + }, + all_enqueued(worker: PublisherWorker) + ) end test "it federates only to reachable instances via Websub" do @@ -129,16 +140,18 @@ test "it federates only to reachable instances via Websub" do expected_callback = sub2.callback expected_dt = NaiveDateTime.to_iso8601(dt) - assert [ + ObanHelpers.perform(all_enqueued(worker: PublisherWorker)) + + assert ObanHelpers.member?( %{ - args: %{ - "params" => %{ - "callback" => ^expected_callback, - "unreachable_since" => ^expected_dt - } + "op" => "publish_one", + "params" => %{ + "callback" => expected_callback, + "unreachable_since" => expected_dt } - } - ] = all_enqueued(worker: Pleroma.Workers.Publisher) + }, + all_enqueued(worker: PublisherWorker) + ) end test "it federates only to reachable instances via Salmon" do @@ -172,16 +185,18 @@ test "it federates only to reachable instances via Salmon" do expected_dt = NaiveDateTime.to_iso8601(dt) - assert [ + ObanHelpers.perform(all_enqueued(worker: PublisherWorker)) + + assert ObanHelpers.member?( %{ - args: %{ - "params" => %{ - "recipient_id" => ^remote_user2_id, - "unreachable_since" => ^expected_dt - } + "op" => "publish_one", + "params" => %{ + "recipient_id" => remote_user2_id, + "unreachable_since" => expected_dt } - } - ] = all_enqueued(worker: Pleroma.Workers.Publisher) + }, + all_enqueued(worker: PublisherWorker) + ) end end @@ -201,7 +216,8 @@ test "successfully processes incoming AP docs with correct origin" do "to" => ["https://www.w3.org/ns/activitystreams#Public"] } - {:ok, _activity} = Federator.incoming_ap_doc(params) + assert {:ok, job} = Federator.incoming_ap_doc(params) + assert {:ok, _activity} = ObanHelpers.perform(job) end test "rejects incoming AP docs with incorrect origin" do @@ -219,7 +235,8 @@ test "rejects incoming AP docs with incorrect origin" do "to" => ["https://www.w3.org/ns/activitystreams#Public"] } - :error = Federator.incoming_ap_doc(params) + assert {:ok, job} = Federator.incoming_ap_doc(params) + assert :error = ObanHelpers.perform(job) end end end diff --git a/test/web/websub/websub_test.exs b/test/web/websub/websub_test.exs index 74386d7db..b704a558a 100644 --- a/test/web/websub/websub_test.exs +++ b/test/web/websub/websub_test.exs @@ -4,11 +4,14 @@ defmodule Pleroma.Web.WebsubTest do use Pleroma.DataCase + use Oban.Testing, repo: Pleroma.Repo + alias Pleroma.ObanHelpers alias Pleroma.Web.Router.Helpers alias Pleroma.Web.Websub alias Pleroma.Web.Websub.WebsubClientSubscription alias Pleroma.Web.Websub.WebsubServerSubscription + alias Pleroma.Workers.Subscriber, as: SubscriberWorker import Pleroma.Factory import Tesla.Mock @@ -224,6 +227,7 @@ test "it renews subscriptions that have less than a day of time left" do }) _refresh = Websub.refresh_subscriptions() + ObanHelpers.perform(all_enqueued(worker: SubscriberWorker)) assert still_good == Repo.get(WebsubClientSubscription, still_good.id) refute needs_refresh == Repo.get(WebsubClientSubscription, needs_refresh.id) From 33a5fc4a70b6f9b8c2d8c03a412d7eec8d5b3db1 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 10 Aug 2019 20:38:31 +0300 Subject: [PATCH 003/272] [#1149] Fixed failing tests. Ensured Instance.set_unreachable/2 supports ISO 8601 datetime. --- lib/pleroma/digest_email_worker.ex | 4 +--- lib/pleroma/instances/instance.ex | 8 +++++++- test/conversation_test.exs | 2 ++ test/support/oban_helpers.ex | 6 ++++++ test/web/federator_test.exs | 3 ++- test/web/instances/instance_test.exs | 3 ++- 6 files changed, 20 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/digest_email_worker.ex b/lib/pleroma/digest_email_worker.ex index 18e67d39b..3b0e2bca6 100644 --- a/lib/pleroma/digest_email_worker.ex +++ b/lib/pleroma/digest_email_worker.ex @@ -1,8 +1,6 @@ defmodule Pleroma.DigestEmailWorker do import Ecto.Query - @queue_name :digest_emails - def perform do config = Pleroma.Config.get([:email_notifications, :digest]) negative_interval = -Map.fetch!(config, :interval) @@ -17,7 +15,7 @@ def perform do select: u ) |> Pleroma.Repo.all() - |> Enum.each(&PleromaJobQueue.enqueue(@queue_name, __MODULE__, [&1])) + |> Enum.each(&PleromaJobQueue.enqueue(:digest_emails, __MODULE__, [&1])) end @doc """ diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index 4d7ed4ca1..544c4b687 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -90,7 +90,7 @@ def set_reachable(_), do: {:error, nil} def set_unreachable(url_or_host, unreachable_since \\ nil) def set_unreachable(url_or_host, unreachable_since) when is_binary(url_or_host) do - unreachable_since = unreachable_since || DateTime.utc_now() + unreachable_since = parse_datetime(unreachable_since) || NaiveDateTime.utc_now() host = host(url_or_host) existing_record = Repo.get_by(Instance, %{host: host}) @@ -114,4 +114,10 @@ def set_unreachable(url_or_host, unreachable_since) when is_binary(url_or_host) end def set_unreachable(_, _), do: {:error, nil} + + defp parse_datetime(datetime) when is_binary(datetime) do + NaiveDateTime.from_iso8601(datetime) + end + + defp parse_datetime(datetime), do: datetime end diff --git a/test/conversation_test.exs b/test/conversation_test.exs index aa193e0d4..2ebbcab76 100644 --- a/test/conversation_test.exs +++ b/test/conversation_test.exs @@ -28,6 +28,8 @@ test "it goes through old direct conversations" do {:ok, _activity} = CommonAPI.post(user, %{"visibility" => "direct", "status" => "hey @#{other_user.nickname}"}) + Pleroma.ObanHelpers.perform_all() + Repo.delete_all(Conversation) Repo.delete_all(Conversation.Participation) diff --git a/test/support/oban_helpers.ex b/test/support/oban_helpers.ex index 54b5a9566..ecc03ba1a 100644 --- a/test/support/oban_helpers.ex +++ b/test/support/oban_helpers.ex @@ -9,6 +9,12 @@ defmodule Pleroma.ObanHelpers do alias Pleroma.Repo + def perform_all do + Oban.Job + |> Repo.all() + |> perform() + end + def perform(%Oban.Job{} = job) do res = apply(String.to_existing_atom("Elixir." <> job.worker), :perform, [job]) Repo.delete(job) diff --git a/test/web/federator_test.exs b/test/web/federator_test.exs index d3a28d50e..e0be4342b 100644 --- a/test/web/federator_test.exs +++ b/test/web/federator_test.exs @@ -249,7 +249,8 @@ test "it does not crash if MRF rejects the post" do File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() - assert Federator.incoming_ap_doc(params) == :error + assert {:ok, job} = Federator.incoming_ap_doc(params) + assert :error = ObanHelpers.perform(job) Pleroma.Config.put([:instance, :rewrite_policy], policies) Pleroma.Config.put(:mrf_keyword, mrf_keyword_policy) diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index d28730994..a1bdd45d3 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -22,7 +22,8 @@ defmodule Pleroma.Instances.InstanceTest do describe "set_reachable/1" do test "clears `unreachable_since` of existing matching Instance record having non-nil `unreachable_since`" do - instance = insert(:instance, unreachable_since: NaiveDateTime.utc_now()) + unreachable_since = NaiveDateTime.to_iso8601(NaiveDateTime.utc_now()) + instance = insert(:instance, unreachable_since: unreachable_since) assert {:ok, instance} = Instance.set_reachable(instance.host) refute instance.unreachable_since From 0e1c481a94392b69833fbe6afc184ebbd90e1330 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Tue, 13 Aug 2019 20:20:26 +0300 Subject: [PATCH 004/272] [#1149] Added more oban workers. Refactoring. --- lib/pleroma/digest_email_worker.ex | 11 ++- lib/pleroma/scheduled_activity_worker.ex | 8 +- lib/pleroma/user.ex | 55 +++++++---- lib/pleroma/web/activity_pub/activity_pub.ex | 7 +- .../mrf/mediaproxy_warming_policy.ex | 12 ++- .../web/activity_pub/transmogrifier.ex | 7 +- lib/pleroma/web/federator/federator.ex | 98 ++++++++++++++++++- lib/pleroma/web/oauth/token/clean_worker.ex | 10 +- lib/pleroma/web/push/push.ex | 12 ++- .../controllers/util_controller.ex | 14 +-- lib/pleroma/workers/background_worker.ex | 66 +++++++++++++ lib/pleroma/workers/helper.ex | 13 +++ lib/pleroma/workers/mailer.ex | 18 ++++ lib/pleroma/workers/publisher.ex | 20 +--- lib/pleroma/workers/receiver.ex | 46 +-------- .../workers/scheduled_activity_worker.ex | 15 +++ lib/pleroma/workers/subscriber.ex | 23 +---- lib/pleroma/workers/transmogrifier.ex | 18 ++++ lib/pleroma/workers/web_pusher.ex | 19 ++++ test/activity_test.exs | 2 +- test/conversation_test.exs | 2 +- test/notification_test.exs | 5 +- test/support/oban_helpers.ex | 2 +- test/user_test.exs | 19 ++-- .../activity_pub_controller_test.exs | 2 +- .../mrf/mediaproxy_warming_policy_test.exs | 6 ++ test/web/activity_pub/transmogrifier_test.exs | 4 + test/web/federator_test.exs | 2 +- test/web/twitter_api/util_controller_test.exs | 43 ++++---- test/web/websub/websub_test.exs | 2 +- 30 files changed, 402 insertions(+), 159 deletions(-) create mode 100644 lib/pleroma/workers/background_worker.ex create mode 100644 lib/pleroma/workers/helper.ex create mode 100644 lib/pleroma/workers/mailer.ex create mode 100644 lib/pleroma/workers/scheduled_activity_worker.ex create mode 100644 lib/pleroma/workers/transmogrifier.ex create mode 100644 lib/pleroma/workers/web_pusher.ex diff --git a/lib/pleroma/digest_email_worker.ex b/lib/pleroma/digest_email_worker.ex index 3b0e2bca6..6e44cc955 100644 --- a/lib/pleroma/digest_email_worker.ex +++ b/lib/pleroma/digest_email_worker.ex @@ -1,6 +1,11 @@ defmodule Pleroma.DigestEmailWorker do + alias Pleroma.Repo + alias Pleroma.Workers.Mailer, as: MailerWorker + import Ecto.Query + defdelegate worker_args(queue), to: Pleroma.Workers.Helper + def perform do config = Pleroma.Config.get([:email_notifications, :digest]) negative_interval = -Map.fetch!(config, :interval) @@ -15,7 +20,11 @@ def perform do select: u ) |> Pleroma.Repo.all() - |> Enum.each(&PleromaJobQueue.enqueue(:digest_emails, __MODULE__, [&1])) + |> Enum.each(fn user -> + %{"op" => "digest_email", "user_id" => user.id} + |> MailerWorker.new([queue: "digest_emails"] ++ worker_args(:digest_emails)) + |> Repo.insert() + end) end @doc """ diff --git a/lib/pleroma/scheduled_activity_worker.ex b/lib/pleroma/scheduled_activity_worker.ex index 65b38622f..cabea51ca 100644 --- a/lib/pleroma/scheduled_activity_worker.ex +++ b/lib/pleroma/scheduled_activity_worker.ex @@ -8,14 +8,18 @@ defmodule Pleroma.ScheduledActivityWorker do """ alias Pleroma.Config + alias Pleroma.Repo alias Pleroma.ScheduledActivity alias Pleroma.User alias Pleroma.Web.CommonAPI + use GenServer require Logger @schedule_interval :timer.minutes(1) + defdelegate worker_args(queue), to: Pleroma.Workers.Helper + def start_link do GenServer.start_link(__MODULE__, nil) end @@ -45,7 +49,9 @@ def perform(:execute, scheduled_activity_id) do def handle_info(:perform, state) do ScheduledActivity.due_activities(@schedule_interval) |> Enum.each(fn scheduled_activity -> - PleromaJobQueue.enqueue(:scheduled_activities, __MODULE__, [:execute, scheduled_activity.id]) + %{"op" => "execute", "activity_id" => scheduled_activity.id} + |> Pleroma.Workers.ScheduledActivityWorker.new(worker_args(:scheduled_activities)) + |> Repo.insert() end) schedule_next() diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 7d18f099e..bc2102ca7 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -26,6 +26,7 @@ defmodule Pleroma.User do alias Pleroma.Web.OStatus alias Pleroma.Web.RelMe alias Pleroma.Web.Websub + alias Pleroma.Workers.BackgroundWorker require Logger @@ -39,6 +40,8 @@ defmodule Pleroma.User do @strict_local_nickname_regex ~r/^[a-zA-Z\d]+$/ @extended_local_nickname_regex ~r/^[a-zA-Z\d_-]+$/ + defdelegate worker_args(queue), to: Pleroma.Workers.Helper + schema "users" do field(:bio, :string) field(:email, :string) @@ -579,8 +582,11 @@ def get_or_fetch_by_nickname(nickname) do end @doc "Fetch some posts when the user has just been federated with" - def fetch_initial_posts(user), - do: PleromaJobQueue.enqueue(:background, __MODULE__, [:fetch_initial_posts, user]) + def fetch_initial_posts(user) do + %{"op" => "fetch_initial_posts", "user_id" => user.id} + |> BackgroundWorker.new(worker_args(:background)) + |> Repo.insert() + end @spec get_followers_query(User.t(), pos_integer() | nil) :: Ecto.Query.t() def get_followers_query(%User{} = user, nil) do @@ -1001,7 +1007,9 @@ def unblock_domain(user, domain) do end def deactivate_async(user, status \\ true) do - PleromaJobQueue.enqueue(:background, __MODULE__, [:deactivate_async, user, status]) + %{"op" => "deactivate_user", "user_id" => user.id, "status" => status} + |> BackgroundWorker.new(worker_args(:background)) + |> Repo.insert() end def deactivate(%User{} = user, status \\ true) do @@ -1029,9 +1037,11 @@ def update_notification_settings(%User{} = user, settings \\ %{}) do |> update_and_set_cache() end - @spec delete(User.t()) :: :ok - def delete(%User{} = user), - do: PleromaJobQueue.enqueue(:background, __MODULE__, [:delete, user]) + def delete(%User{} = user) do + %{"op" => "delete_user", "user_id" => user.id} + |> BackgroundWorker.new(worker_args(:background)) + |> Repo.insert() + end @spec perform(atom(), User.t()) :: {:ok, User.t()} def perform(:delete, %User{} = user) do @@ -1138,21 +1148,26 @@ def external_users(opts \\ []) do Repo.all(query) end - def blocks_import(%User{} = blocker, blocked_identifiers) when is_list(blocked_identifiers), - do: - PleromaJobQueue.enqueue(:background, __MODULE__, [ - :blocks_import, - blocker, - blocked_identifiers - ]) + def blocks_import(%User{} = blocker, blocked_identifiers) when is_list(blocked_identifiers) do + %{ + "op" => "blocks_import", + "blocker_id" => blocker.id, + "blocked_identifiers" => blocked_identifiers + } + |> BackgroundWorker.new(worker_args(:background)) + |> Repo.insert() + end - def follow_import(%User{} = follower, followed_identifiers) when is_list(followed_identifiers), - do: - PleromaJobQueue.enqueue(:background, __MODULE__, [ - :follow_import, - follower, - followed_identifiers - ]) + def follow_import(%User{} = follower, followed_identifiers) + when is_list(followed_identifiers) do + %{ + "op" => "follow_import", + "follower_id" => follower.id, + "followed_identifiers" => followed_identifiers + } + |> BackgroundWorker.new(worker_args(:background)) + |> Repo.insert() + end def delete_user_activities(%User{ap_id: ap_id} = user) do ap_id diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 1a279a7df..8be8ac86f 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -17,6 +17,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.Web.ActivityPub.MRF alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.WebFinger + alias Pleroma.Workers.BackgroundWorker import Ecto.Query import Pleroma.Web.ActivityPub.Utils @@ -25,6 +26,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do require Logger require Pleroma.Constants + defdelegate worker_args(queue), to: Pleroma.Workers.Helper + # For Announce activities, we filter the recipients based on following status for any actors # that match actual users. See issue #164 for more information about why this is necessary. defp get_recipients(%{"type" => "Announce"} = data) do @@ -145,7 +148,9 @@ def insert(map, local \\ true, fake \\ false) when is_map(map) do activity end - PleromaJobQueue.enqueue(:background, Pleroma.Web.RichMedia.Helpers, [:fetch, activity]) + %{"op" => "fetch_data_for_activity", "activity_id" => activity.id} + |> BackgroundWorker.new(worker_args(:background)) + |> Repo.insert() Notification.create_notifications(activity) diff --git a/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex index 01d21a299..1df3bb5b6 100644 --- a/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex @@ -7,7 +7,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do @behaviour Pleroma.Web.ActivityPub.MRF alias Pleroma.HTTP + alias Pleroma.Repo alias Pleroma.Web.MediaProxy + alias Pleroma.Workers.BackgroundWorker require Logger @@ -16,6 +18,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do recv_timeout: 10_000 ] + defdelegate worker_args(queue), to: Pleroma.Workers.Helper + def perform(:prefetch, url) do Logger.info("Prefetching #{inspect(url)}") @@ -30,7 +34,9 @@ def perform(:preload, %{"object" => %{"attachment" => attachments}} = _message) url |> Enum.each(fn %{"href" => href} -> - PleromaJobQueue.enqueue(:background, __MODULE__, [:prefetch, href]) + %{"op" => "media_proxy_prefetch", "url" => href} + |> BackgroundWorker.new(worker_args(:background)) + |> Repo.insert() x -> Logger.debug("Unhandled attachment URL object #{inspect(x)}") @@ -46,7 +52,9 @@ def filter( %{"type" => "Create", "object" => %{"attachment" => attachments} = _object} = message ) when is_list(attachments) and length(attachments) > 0 do - PleromaJobQueue.enqueue(:background, __MODULE__, [:preload, message]) + %{"op" => "media_proxy_preload", "message" => message} + |> BackgroundWorker.new(worker_args(:background)) + |> Repo.insert() {:ok, message} end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 5403b71d8..0f117cd04 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -15,12 +15,15 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.ActivityPub.Visibility alias Pleroma.Web.Federator + alias Pleroma.Workers.Transmogrifier, as: TransmogrifierWorker import Ecto.Query require Logger require Pleroma.Constants + defdelegate worker_args(queue), to: Pleroma.Workers.Helper + @doc """ Modifies an incoming AP object (mastodon format) to our internal format. """ @@ -1073,7 +1076,9 @@ def upgrade_user_from_ap_id(ap_id) do already_ap <- User.ap_enabled?(user), {:ok, user} <- user |> User.upgrade_changeset(data) |> User.update_and_set_cache() do unless already_ap do - PleromaJobQueue.enqueue(:transmogrifier, __MODULE__, [:user_upgrade, user]) + %{"op" => "user_upgrade", "user_id" => user.id} + |> TransmogrifierWorker.new(worker_args(:transmogrifier)) + |> Repo.insert() end {:ok, user} diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index bb9eadfee..d85fe824f 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -3,12 +3,23 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Federator do + alias Pleroma.Activity + alias Pleroma.Object.Containment + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Transmogrifier + alias Pleroma.Web.ActivityPub.Utils + alias Pleroma.Web.Federator.Publisher + alias Pleroma.Web.OStatus + alias Pleroma.Web.Websub alias Pleroma.Workers.Publisher, as: PublisherWorker alias Pleroma.Workers.Receiver, as: ReceiverWorker alias Pleroma.Workers.Subscriber, as: SubscriberWorker require Logger + defdelegate worker_args(queue), to: Pleroma.Workers.Helper + def init do # 1 minute refresh_subscriptions(schedule_in: 60) @@ -41,7 +52,7 @@ def incoming_ap_doc(params) do end def publish(%{id: "pleroma:fakeid"} = activity) do - PublisherWorker.perform_publish(activity) + perform(:publish, activity) end def publish(activity) do @@ -68,11 +79,88 @@ def refresh_subscriptions(worker_args \\ []) do |> Pleroma.Repo.insert() end - defp worker_args(queue) do - if max_attempts = Pleroma.Config.get([:workers, :retries, queue]) do - [max_attempts: max_attempts] + # Job Worker Callbacks + + @spec perform(atom(), module(), any()) :: {:ok, any()} | {:error, any()} + def perform(:publish_one, module, params) do + apply(module, :publish_one, [params]) + end + + def perform(:publish, activity) do + Logger.debug(fn -> "Running publish for #{activity.data["id"]}" end) + + with %User{} = actor <- User.get_cached_by_ap_id(activity.data["actor"]), + {:ok, actor} <- User.ensure_keys_present(actor) do + Publisher.publish(actor, activity) + end + end + + def perform(:incoming_doc, doc) do + Logger.info("Got document, trying to parse") + OStatus.handle_incoming(doc) + end + + def perform(:incoming_ap_doc, params) do + Logger.info("Handling incoming AP activity") + + params = Utils.normalize_params(params) + + # NOTE: we use the actor ID to do the containment, this is fine because an + # actor shouldn't be acting on objects outside their own AP server. + with {:ok, _user} <- ap_enabled_actor(params["actor"]), + nil <- Activity.normalize(params["id"]), + :ok <- Containment.contain_origin_from_id(params["actor"], params), + {:ok, activity} <- Transmogrifier.handle_incoming(params) do + {:ok, activity} else - [] + %Activity{} -> + Logger.info("Already had #{params["id"]}") + :error + + _e -> + # Just drop those for now + Logger.info("Unhandled activity") + Logger.info(Jason.encode!(params, pretty: true)) + :error + end + end + + def perform(:request_subscription, websub) do + Logger.debug("Refreshing #{websub.topic}") + + with {:ok, websub} <- Websub.request_subscription(websub) do + Logger.debug("Successfully refreshed #{websub.topic}") + else + _e -> Logger.debug("Couldn't refresh #{websub.topic}") + end + end + + def perform(:verify_websub, websub) do + Logger.debug(fn -> + "Running WebSub verification for #{websub.id} (#{websub.topic}, #{websub.callback})" + end) + + Websub.verify(websub) + end + + def perform(:refresh_subscriptions) do + Logger.debug("Federator running refresh subscriptions") + Websub.refresh_subscriptions() + + spawn(fn -> + # 6 hours + Process.sleep(1000 * 60 * 60 * 6) + refresh_subscriptions() + end) + end + + def ap_enabled_actor(id) do + user = User.get_cached_by_ap_id(id) + + if User.ap_enabled?(user) do + {:ok, user} + else + ActivityPub.make_user_from_ap_id(id) end end end diff --git a/lib/pleroma/web/oauth/token/clean_worker.ex b/lib/pleroma/web/oauth/token/clean_worker.ex index dca852449..c0c9c3653 100644 --- a/lib/pleroma/web/oauth/token/clean_worker.ex +++ b/lib/pleroma/web/oauth/token/clean_worker.ex @@ -14,9 +14,12 @@ defmodule Pleroma.Web.OAuth.Token.CleanWorker do [:oauth2, :clean_expired_tokens_interval], 86_400_000 ) - @queue :background + alias Pleroma.Repo alias Pleroma.Web.OAuth.Token + alias Pleroma.Workers.BackgroundWorker + + defdelegate worker_args(queue), to: Pleroma.Workers.Helper def start_link, do: GenServer.start_link(__MODULE__, nil) @@ -31,8 +34,11 @@ def init(_) do @doc false def handle_info(:perform, state) do + %{"op" => "clean_expired_tokens"} + |> BackgroundWorker.new(worker_args(:background)) + |> Repo.insert() + Process.send_after(self(), :perform, @interval) - PleromaJobQueue.enqueue(@queue, __MODULE__, [:clean]) {:noreply, state} end diff --git a/lib/pleroma/web/push/push.ex b/lib/pleroma/web/push/push.ex index 729dad02a..b4f0e5127 100644 --- a/lib/pleroma/web/push/push.ex +++ b/lib/pleroma/web/push/push.ex @@ -3,10 +3,13 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Push do - alias Pleroma.Web.Push.Impl + alias Pleroma.Repo + alias Pleroma.Workers.WebPusher require Logger + defdelegate worker_args(queue), to: Pleroma.Workers.Helper + def init do unless enabled() do Logger.warn(""" @@ -31,6 +34,9 @@ def enabled do end end - def send(notification), - do: PleromaJobQueue.enqueue(:web_push, Impl, [notification]) + def send(notification) do + %{"op" => "web_push", "notification_id" => notification.id} + |> WebPusher.new(worker_args(:web_push)) + |> Repo.insert() + end end diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index 3405bd3b7..7ba4ad305 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -265,12 +265,7 @@ def follow_import(%{assigns: %{user: follower}} = conn, %{"list" => list}) do String.split(line, ",") |> List.first() end) |> List.delete("Account address") do - PleromaJobQueue.enqueue(:background, User, [ - :follow_import, - follower, - followed_identifiers - ]) - + User.follow_import(follower, followed_identifiers) json(conn, "job started") end end @@ -281,12 +276,7 @@ def blocks_import(conn, %{"list" => %Plug.Upload{} = listfile}) do def blocks_import(%{assigns: %{user: blocker}} = conn, %{"list" => list}) do with blocked_identifiers <- String.split(list) do - PleromaJobQueue.enqueue(:background, User, [ - :blocks_import, - blocker, - blocked_identifiers - ]) - + User.blocks_import(blocker, blocked_identifiers) json(conn, "job started") end end diff --git a/lib/pleroma/workers/background_worker.ex b/lib/pleroma/workers/background_worker.ex new file mode 100644 index 000000000..3ab2b6bcc --- /dev/null +++ b/lib/pleroma/workers/background_worker.ex @@ -0,0 +1,66 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.BackgroundWorker do + alias Pleroma.Activity + alias Pleroma.User + alias Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy + alias Pleroma.Web.OAuth.Token.CleanWorker + + # Note: `max_attempts` is intended to be overridden in `new/1` call + use Oban.Worker, + queue: "background", + max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + + @impl Oban.Worker + def perform(%{"op" => "fetch_initial_posts", "user_id" => user_id}) do + user = User.get_by_id(user_id) + User.perform(:fetch_initial_posts, user) + end + + def perform(%{"op" => "deactivate_user", "user_id" => user_id, "status" => status}) do + user = User.get_by_id(user_id) + User.perform(:deactivate_async, user, status) + end + + def perform(%{"op" => "delete_user", "user_id" => user_id}) do + user = User.get_by_id(user_id) + User.perform(:delete, user) + end + + def perform(%{ + "op" => "blocks_import", + "blocker_id" => blocker_id, + "blocked_identifiers" => blocked_identifiers + }) do + blocker = User.get_by_id(blocker_id) + User.perform(:blocks_import, blocker, blocked_identifiers) + end + + def perform(%{ + "op" => "follow_import", + "follower_id" => follower_id, + "followed_identifiers" => followed_identifiers + }) do + follower = User.get_by_id(follower_id) + User.perform(:follow_import, follower, followed_identifiers) + end + + def perform(%{"op" => "clean_expired_tokens"}) do + CleanWorker.perform(:clean) + end + + def perform(%{"op" => "media_proxy_preload", "message" => message}) do + MediaProxyWarmingPolicy.perform(:preload, message) + end + + def perform(%{"op" => "media_proxy_prefetch", "url" => url}) do + MediaProxyWarmingPolicy.perform(:prefetch, url) + end + + def perform(%{"op" => "fetch_data_for_activity", "activity_id" => activity_id}) do + activity = Activity.get_by_id(activity_id) + Pleroma.Web.RichMedia.Helpers.perform(:fetch, activity) + end +end diff --git a/lib/pleroma/workers/helper.ex b/lib/pleroma/workers/helper.ex new file mode 100644 index 000000000..3286ce0e8 --- /dev/null +++ b/lib/pleroma/workers/helper.ex @@ -0,0 +1,13 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.Helper do + def worker_args(queue) do + if max_attempts = Pleroma.Config.get([:workers, :retries, queue]) do + [max_attempts: max_attempts] + else + [] + end + end +end diff --git a/lib/pleroma/workers/mailer.ex b/lib/pleroma/workers/mailer.ex new file mode 100644 index 000000000..da7fa6fd5 --- /dev/null +++ b/lib/pleroma/workers/mailer.ex @@ -0,0 +1,18 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.Mailer do + alias Pleroma.User + + # Note: `max_attempts` is intended to be overridden in `new/1` call + use Oban.Worker, + queue: "mailer", + max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + + @impl Oban.Worker + def perform(%{"op" => "digest_email", "user_id" => user_id}) do + user = User.get_by_id(user_id) + Pleroma.DigestEmailWorker.perform(user) + end +end diff --git a/lib/pleroma/workers/publisher.ex b/lib/pleroma/workers/publisher.ex index 67871977a..c890ffb79 100644 --- a/lib/pleroma/workers/publisher.ex +++ b/lib/pleroma/workers/publisher.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Workers.Publisher do alias Pleroma.Activity - alias Pleroma.User + alias Pleroma.Web.Federator # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, @@ -13,23 +13,11 @@ defmodule Pleroma.Workers.Publisher do @impl Oban.Worker def perform(%{"op" => "publish", "activity_id" => activity_id}) do - with %Activity{} = activity <- Activity.get_by_id(activity_id) do - perform_publish(activity) - else - _ -> raise "Non-existing activity: #{activity_id}" - end + activity = Activity.get_by_id(activity_id) + Federator.perform(:publish, activity) end def perform(%{"op" => "publish_one", "module" => module_name, "params" => params}) do - module_name - |> String.to_atom() - |> apply(:publish_one, [params]) - end - - def perform_publish(%Activity{} = activity) do - with %User{} = actor <- User.get_cached_by_ap_id(activity.data["actor"]), - {:ok, actor} <- User.ensure_keys_present(actor) do - Pleroma.Web.Federator.Publisher.publish(actor, activity) - end + Federator.perform(:publish_one, String.to_atom(module_name), params) end end diff --git a/lib/pleroma/workers/receiver.ex b/lib/pleroma/workers/receiver.ex index 43558b4e6..d3de95716 100644 --- a/lib/pleroma/workers/receiver.ex +++ b/lib/pleroma/workers/receiver.ex @@ -3,15 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.Receiver do - alias Pleroma.Activity - alias Pleroma.Object.Containment - alias Pleroma.User - alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Web.ActivityPub.Transmogrifier - alias Pleroma.Web.ActivityPub.Utils - alias Pleroma.Web.OStatus - - require Logger + alias Pleroma.Web.Federator # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, @@ -20,42 +12,10 @@ defmodule Pleroma.Workers.Receiver do @impl Oban.Worker def perform(%{"op" => "incoming_doc", "body" => doc}) do - Logger.info("Got incoming document, trying to parse") - OStatus.handle_incoming(doc) + Federator.perform(:incoming_doc, doc) end def perform(%{"op" => "incoming_ap_doc", "params" => params}) do - Logger.info("Handling incoming AP activity") - - params = Utils.normalize_params(params) - - # NOTE: we use the actor ID to do the containment, this is fine because an - # actor shouldn't be acting on objects outside their own AP server. - with {:ok, _user} <- ap_enabled_actor(params["actor"]), - nil <- Activity.normalize(params["id"]), - :ok <- Containment.contain_origin_from_id(params["actor"], params), - {:ok, activity} <- Transmogrifier.handle_incoming(params) do - {:ok, activity} - else - %Activity{} -> - Logger.info("Already had #{params["id"]}") - :error - - _e -> - # Just drop those for now - Logger.info("Unhandled activity") - Logger.info(Jason.encode!(params, pretty: true)) - :error - end - end - - defp ap_enabled_actor(id) do - user = User.get_cached_by_ap_id(id) - - if User.ap_enabled?(user) do - {:ok, user} - else - ActivityPub.make_user_from_ap_id(id) - end + Federator.perform(:incoming_ap_doc, params) end end diff --git a/lib/pleroma/workers/scheduled_activity_worker.ex b/lib/pleroma/workers/scheduled_activity_worker.ex new file mode 100644 index 000000000..a49834fd8 --- /dev/null +++ b/lib/pleroma/workers/scheduled_activity_worker.ex @@ -0,0 +1,15 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.ScheduledActivityWorker do + # Note: `max_attempts` is intended to be overridden in `new/1` call + use Oban.Worker, + queue: "scheduled_activities", + max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + + @impl Oban.Worker + def perform(%{"op" => "execute", "activity_id" => activity_id}) do + Pleroma.ScheduledActivityWorker.perform(:execute, activity_id) + end +end diff --git a/lib/pleroma/workers/subscriber.ex b/lib/pleroma/workers/subscriber.ex index a8c01bb10..6af3ad0a1 100644 --- a/lib/pleroma/workers/subscriber.ex +++ b/lib/pleroma/workers/subscriber.ex @@ -4,11 +4,9 @@ defmodule Pleroma.Workers.Subscriber do alias Pleroma.Repo - alias Pleroma.Web.Websub + alias Pleroma.Web.Federator alias Pleroma.Web.Websub.WebsubClientSubscription - require Logger - # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, queue: "federator_outgoing", @@ -16,29 +14,16 @@ defmodule Pleroma.Workers.Subscriber do @impl Oban.Worker def perform(%{"op" => "refresh_subscriptions"}) do - Websub.refresh_subscriptions() - # Schedule the next run in 6 hours - Pleroma.Web.Federator.refresh_subscriptions(schedule_in: 3600 * 6) + Federator.perform(:refresh_subscriptions) end def perform(%{"op" => "request_subscription", "websub_id" => websub_id}) do websub = Repo.get(WebsubClientSubscription, websub_id) - Logger.debug("Refreshing #{websub.topic}") - - with {:ok, websub} <- Websub.request_subscription(websub) do - Logger.debug("Successfully refreshed #{websub.topic}") - else - _e -> Logger.debug("Couldn't refresh #{websub.topic}") - end + Federator.perform(:request_subscription, websub) end def perform(%{"op" => "verify_websub", "websub_id" => websub_id}) do websub = Repo.get(WebsubClientSubscription, websub_id) - - Logger.debug(fn -> - "Running WebSub verification for #{websub.id} (#{websub.topic}, #{websub.callback})" - end) - - Websub.verify(websub) + Federator.perform(:verify_websub, websub) end end diff --git a/lib/pleroma/workers/transmogrifier.ex b/lib/pleroma/workers/transmogrifier.ex new file mode 100644 index 000000000..c6b4fab47 --- /dev/null +++ b/lib/pleroma/workers/transmogrifier.ex @@ -0,0 +1,18 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.Transmogrifier do + alias Pleroma.User + + # Note: `max_attempts` is intended to be overridden in `new/1` call + use Oban.Worker, + queue: "transmogrifier", + max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + + @impl Oban.Worker + def perform(%{"op" => "user_upgrade", "user_id" => user_id}) do + user = User.get_by_id(user_id) + Pleroma.Web.ActivityPub.Transmogrifier.perform(:user_upgrade, user) + end +end diff --git a/lib/pleroma/workers/web_pusher.ex b/lib/pleroma/workers/web_pusher.ex new file mode 100644 index 000000000..b99581eb0 --- /dev/null +++ b/lib/pleroma/workers/web_pusher.ex @@ -0,0 +1,19 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.WebPusher do + alias Pleroma.Notification + alias Pleroma.Repo + + # Note: `max_attempts` is intended to be overridden in `new/1` call + use Oban.Worker, + queue: "web_push", + max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + + @impl Oban.Worker + def perform(%{"op" => "web_push", "notification_id" => notification_id}) do + notification = Repo.get(Notification, notification_id) + Pleroma.Web.Push.Impl.perform(notification) + end +end diff --git a/test/activity_test.exs b/test/activity_test.exs index b9c12adb2..658c47837 100644 --- a/test/activity_test.exs +++ b/test/activity_test.exs @@ -6,8 +6,8 @@ defmodule Pleroma.ActivityTest do use Pleroma.DataCase alias Pleroma.Activity alias Pleroma.Bookmark - alias Pleroma.ObanHelpers alias Pleroma.Object + alias Pleroma.Tests.ObanHelpers alias Pleroma.ThreadMute import Pleroma.Factory diff --git a/test/conversation_test.exs b/test/conversation_test.exs index 2ebbcab76..f917aa691 100644 --- a/test/conversation_test.exs +++ b/test/conversation_test.exs @@ -28,7 +28,7 @@ test "it goes through old direct conversations" do {:ok, _activity} = CommonAPI.post(user, %{"visibility" => "direct", "status" => "hey @#{other_user.nickname}"}) - Pleroma.ObanHelpers.perform_all() + Pleroma.Tests.ObanHelpers.perform_all() Repo.delete_all(Conversation) Repo.delete_all(Conversation.Participation) diff --git a/test/notification_test.exs b/test/notification_test.exs index 80ea2a085..e1c9f4f93 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -8,6 +8,7 @@ defmodule Pleroma.NotificationTest do import Pleroma.Factory alias Pleroma.Notification + alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.CommonAPI @@ -621,7 +622,8 @@ test "notifications are deleted if a local user is deleted" do refute Enum.empty?(Notification.for_user(other_user)) - User.delete(user) + {:ok, job} = User.delete(user) + ObanHelpers.perform(job) assert Enum.empty?(Notification.for_user(other_user)) end @@ -666,6 +668,7 @@ test "notifications are deleted if a remote user is deleted" do } {:ok, _delete_activity} = Transmogrifier.handle_incoming(delete_user_message) + ObanHelpers.perform_all() assert Enum.empty?(Notification.for_user(local_user)) end diff --git a/test/support/oban_helpers.ex b/test/support/oban_helpers.ex index ecc03ba1a..d379c9ec7 100644 --- a/test/support/oban_helpers.ex +++ b/test/support/oban_helpers.ex @@ -2,7 +2,7 @@ # Copyright © 2017-2018 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.ObanHelpers do +defmodule Pleroma.Tests.ObanHelpers do @moduledoc """ Oban test helpers. """ diff --git a/test/user_test.exs b/test/user_test.exs index 8617752d7..9c2117a0b 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -5,9 +5,9 @@ defmodule Pleroma.UserTest do alias Pleroma.Activity alias Pleroma.Builders.UserBuilder - alias Pleroma.ObanHelpers alias Pleroma.Object alias Pleroma.Repo + alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.CommonAPI @@ -676,7 +676,9 @@ test "it imports user followings from list" do user3.nickname ] - result = User.follow_import(user1, identifiers) + {:ok, job} = User.follow_import(user1, identifiers) + result = ObanHelpers.perform(job) + assert is_list(result) assert result == [user2, user3] end @@ -887,7 +889,9 @@ test "it imports user blocks from list" do user3.nickname ] - result = User.blocks_import(user1, identifiers) + {:ok, job} = User.blocks_import(user1, identifiers) + result = ObanHelpers.perform(job) + assert is_list(result) assert result == [user2, user3] end @@ -1013,7 +1017,8 @@ test "it deletes a user, all follow relationships and all activities", %{user: u {:ok, like_two, _} = CommonAPI.favorite(activity.id, follower) {:ok, repeat, _} = CommonAPI.repeat(activity_two.id, user) - {:ok, _} = User.delete(user) + {:ok, job} = User.delete(user) + {:ok, _user} = ObanHelpers.perform(job) follower = User.get_cached_by_id(follower.id) @@ -1043,7 +1048,8 @@ test "it sends out User Delete activity", %{user: user} do {:ok, follower} = User.get_or_fetch_by_ap_id("http://mastodon.example.org/users/admin") {:ok, _} = User.follow(follower, user) - {:ok, _user} = User.delete(user) + {:ok, job} = User.delete(user) + {:ok, _user} = ObanHelpers.perform(job) assert ObanHelpers.member?( %{ @@ -1100,7 +1106,8 @@ test "invalidate_cache works" do test "User.delete() plugs any possible zombie objects" do user = insert(:user) - {:ok, _} = User.delete(user) + {:ok, job} = User.delete(user) + {:ok, _} = ObanHelpers.perform(job) {:ok, cached_user} = Cachex.get(:user_cache, "ap_id:#{user.ap_id}") diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index d7f0a8264..f46353fdd 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -9,8 +9,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do import Pleroma.Factory alias Pleroma.Activity alias Pleroma.Instances - alias Pleroma.ObanHelpers alias Pleroma.Object + alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.ObjectView alias Pleroma.Web.ActivityPub.UserView diff --git a/test/web/activity_pub/mrf/mediaproxy_warming_policy_test.exs b/test/web/activity_pub/mrf/mediaproxy_warming_policy_test.exs index 372e789be..95a809d25 100644 --- a/test/web/activity_pub/mrf/mediaproxy_warming_policy_test.exs +++ b/test/web/activity_pub/mrf/mediaproxy_warming_policy_test.exs @@ -6,6 +6,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicyTest do use Pleroma.DataCase alias Pleroma.HTTP + alias Pleroma.Tests.ObanHelpers alias Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy import Mock @@ -24,6 +25,11 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicyTest do test "it prefetches media proxy URIs" do with_mock HTTP, get: fn _, _, _ -> {:ok, []} end do MediaProxyWarmingPolicy.filter(@message) + + ObanHelpers.perform_all() + # Performing jobs which has been just enqueued + ObanHelpers.perform_all() + assert called(HTTP.get(:_, :_, :_)) end end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index e7498e005..52f46c141 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -8,6 +8,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do alias Pleroma.Object alias Pleroma.Object.Fetcher alias Pleroma.Repo + alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Transmogrifier @@ -563,6 +564,7 @@ test "it works for incoming user deletes" do |> Poison.decode!() {:ok, _} = Transmogrifier.handle_incoming(data) + ObanHelpers.perform_all() refute User.get_cached_by_ap_id(ap_id) end @@ -1132,6 +1134,8 @@ test "it upgrades a user to activitypub" do assert user.info.note_count == 1 {:ok, user} = Transmogrifier.upgrade_user_from_ap_id("https://niu.moe/users/rye") + ObanHelpers.perform_all() + assert user.info.ap_enabled assert user.info.note_count == 1 assert user.follower_address == "https://niu.moe/users/rye/followers" diff --git a/test/web/federator_test.exs b/test/web/federator_test.exs index e0be4342b..9ca341b6d 100644 --- a/test/web/federator_test.exs +++ b/test/web/federator_test.exs @@ -4,7 +4,7 @@ defmodule Pleroma.Web.FederatorTest do alias Pleroma.Instances - alias Pleroma.ObanHelpers + alias Pleroma.Tests.ObanHelpers alias Pleroma.Web.CommonAPI alias Pleroma.Web.Federator alias Pleroma.Workers.Publisher, as: PublisherWorker diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index 640579c09..e3f129f72 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -4,9 +4,11 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do use Pleroma.Web.ConnCase + use Oban.Testing, repo: Pleroma.Repo alias Pleroma.Notification alias Pleroma.Repo + alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.CommonAPI import Pleroma.Factory @@ -50,8 +52,7 @@ test "it imports follow lists from file", %{conn: conn} do {File, [], read!: fn "follow_list.txt" -> "Account address,Show boosts\n#{user2.ap_id},true" - end}, - {PleromaJobQueue, [:passthrough], []} + end} ]) do response = conn @@ -59,15 +60,16 @@ test "it imports follow lists from file", %{conn: conn} do |> post("/api/pleroma/follow_import", %{"list" => %Plug.Upload{path: "follow_list.txt"}}) |> json_response(:ok) - assert called( - PleromaJobQueue.enqueue( - :background, - User, - [:follow_import, user1, [user2.ap_id]] - ) - ) - assert response == "job started" + + assert ObanHelpers.member?( + %{ + "op" => "follow_import", + "follower_id" => user1.id, + "followed_identifiers" => [user2.ap_id] + }, + all_enqueued(worker: Pleroma.Workers.BackgroundWorker) + ) end end @@ -126,8 +128,7 @@ test "it imports blocks users from file", %{conn: conn} do user3 = insert(:user) with_mocks([ - {File, [], read!: fn "blocks_list.txt" -> "#{user2.ap_id} #{user3.ap_id}" end}, - {PleromaJobQueue, [:passthrough], []} + {File, [], read!: fn "blocks_list.txt" -> "#{user2.ap_id} #{user3.ap_id}" end} ]) do response = conn @@ -135,15 +136,16 @@ test "it imports blocks users from file", %{conn: conn} do |> post("/api/pleroma/blocks_import", %{"list" => %Plug.Upload{path: "blocks_list.txt"}}) |> json_response(:ok) - assert called( - PleromaJobQueue.enqueue( - :background, - User, - [:blocks_import, user1, [user2.ap_id, user3.ap_id]] - ) - ) - assert response == "job started" + + assert ObanHelpers.member?( + %{ + "op" => "blocks_import", + "blocker_id" => user1.id, + "blocked_identifiers" => [user2.ap_id, user3.ap_id] + }, + all_enqueued(worker: Pleroma.Workers.BackgroundWorker) + ) end end end @@ -607,6 +609,7 @@ test "it returns HTTP 200", %{conn: conn} do |> json_response(:ok) assert response == %{"status" => "success"} + ObanHelpers.perform_all() user = User.get_cached_by_id(user.id) diff --git a/test/web/websub/websub_test.exs b/test/web/websub/websub_test.exs index b704a558a..414610879 100644 --- a/test/web/websub/websub_test.exs +++ b/test/web/websub/websub_test.exs @@ -6,7 +6,7 @@ defmodule Pleroma.Web.WebsubTest do use Pleroma.DataCase use Oban.Testing, repo: Pleroma.Repo - alias Pleroma.ObanHelpers + alias Pleroma.Tests.ObanHelpers alias Pleroma.Web.Router.Helpers alias Pleroma.Web.Websub alias Pleroma.Web.Websub.WebsubClientSubscription From a180c1360ecdbed76eccf3435bb2c831356746bc Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 14 Aug 2019 21:42:21 +0300 Subject: [PATCH 005/272] [#1149] Oban mailer job. Adjusted tests. --- lib/pleroma/application.ex | 1 + lib/pleroma/emails/mailer.ex | 13 ++++++++++++- lib/pleroma/workers/mailer.ex | 9 +++++++++ test/mix/tasks/pleroma.digest_test.exs | 3 +++ .../mastodon_api/mastodon_api_controller_test.exs | 4 ++++ .../web/twitter_api/twitter_api_controller_test.exs | 4 ++++ test/web/twitter_api/twitter_api_test.exs | 2 ++ 7 files changed, 35 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 5550a4902..7cf60f44a 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -233,6 +233,7 @@ defp hackney_pool_children do defp after_supervisor_start do with digest_config <- Application.get_env(:pleroma, :email_notifications)[:digest], true <- digest_config[:active] do + # TODO: consider replacing with `quantum` scheduler PleromaJobQueue.schedule( digest_config[:schedule], :digest_emails, diff --git a/lib/pleroma/emails/mailer.ex b/lib/pleroma/emails/mailer.ex index 2e4657b7c..bb534f602 100644 --- a/lib/pleroma/emails/mailer.ex +++ b/lib/pleroma/emails/mailer.ex @@ -9,6 +9,8 @@ defmodule Pleroma.Emails.Mailer do The module contains functions to delivery email using Swoosh.Mailer. """ + alias Pleroma.Repo + alias Pleroma.Workers.Mailer, as: MailerWorker alias Swoosh.DeliveryError @otp_app :pleroma @@ -17,9 +19,18 @@ defmodule Pleroma.Emails.Mailer do @spec enabled?() :: boolean() def enabled?, do: Pleroma.Config.get([__MODULE__, :enabled]) + defdelegate worker_args(queue), to: Pleroma.Workers.Helper + @doc "add email to queue" def deliver_async(email, config \\ []) do - PleromaJobQueue.enqueue(:mailer, __MODULE__, [:deliver_async, email, config]) + encoded_email = + email + |> :erlang.term_to_binary() + |> Base.encode64() + + %{"op" => "email", "encoded_email" => encoded_email, "config" => config} + |> MailerWorker.new(worker_args(:mailer)) + |> Repo.insert() end @doc "callback to perform send email from queue" diff --git a/lib/pleroma/workers/mailer.ex b/lib/pleroma/workers/mailer.ex index da7fa6fd5..8bf9952bc 100644 --- a/lib/pleroma/workers/mailer.ex +++ b/lib/pleroma/workers/mailer.ex @@ -11,6 +11,15 @@ defmodule Pleroma.Workers.Mailer do max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) @impl Oban.Worker + def perform(%{"op" => "email", "encoded_email" => encoded_email, "config" => config}) do + email = + encoded_email + |> Base.decode64!() + |> :erlang.binary_to_term() + + Pleroma.Emails.Mailer.deliver(email, config) + end + def perform(%{"op" => "digest_email", "user_id" => user_id}) do user = User.get_by_id(user_id) Pleroma.DigestEmailWorker.perform(user) diff --git a/test/mix/tasks/pleroma.digest_test.exs b/test/mix/tasks/pleroma.digest_test.exs index 595f64ed7..5fbeac0d6 100644 --- a/test/mix/tasks/pleroma.digest_test.exs +++ b/test/mix/tasks/pleroma.digest_test.exs @@ -4,6 +4,7 @@ defmodule Mix.Tasks.Pleroma.DigestTest do import Pleroma.Factory import Swoosh.TestAssertions + alias Pleroma.Tests.ObanHelpers alias Pleroma.Web.CommonAPI setup_all do @@ -39,6 +40,8 @@ test "Sends digest to the given user" do :ok = Mix.Tasks.Pleroma.Digest.run(["test", user2.nickname, yesterday_date]) + ObanHelpers.perform_all() + assert_receive {:mix_shell, :info, [message]} assert message =~ "Digest email have been sent" diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index e49c4cc22..be9ff2568 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -11,6 +11,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do alias Pleroma.Object alias Pleroma.Repo alias Pleroma.ScheduledActivity + alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.CommonAPI @@ -3871,6 +3872,7 @@ test "it creates a PasswordResetToken record for user", %{user: user} do end test "it sends an email to user", %{user: user} do + ObanHelpers.perform_all() token_record = Repo.get_by(Pleroma.PasswordResetToken, user_id: user.id) email = Pleroma.Emails.UserEmail.password_reset_email(user, token_record.token) @@ -3934,6 +3936,8 @@ test "resend account confirmation email", %{conn: conn, user: user} do |> post("/api/v1/pleroma/accounts/confirmation_resend?email=#{user.email}") |> json_response(:no_content) + ObanHelpers.perform_all() + email = Pleroma.Emails.UserEmail.account_confirmation_email(user) notify_email = Pleroma.Config.get([:instance, :notify_email]) instance_name = Pleroma.Config.get([:instance, :name]) diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 8bb8aa36d..9ac4ff929 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -12,6 +12,7 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Repo + alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.CommonAPI @@ -1099,6 +1100,7 @@ test "it creates a PasswordResetToken record for user", %{user: user} do end test "it sends an email to user", %{user: user} do + ObanHelpers.perform_all() token_record = Repo.get_by(Pleroma.PasswordResetToken, user_id: user.id) email = Pleroma.Emails.UserEmail.password_reset_email(user, token_record.token) @@ -1209,6 +1211,8 @@ test "it sends confirmation email", %{conn: conn, user: user} do |> assign(:user, user) |> post("/api/account/resend_confirmation_email?email=#{user.email}") + ObanHelpers.perform_all() + email = Pleroma.Emails.UserEmail.account_confirmation_email(user) notify_email = Pleroma.Config.get([:instance, :notify_email]) instance_name = Pleroma.Config.get([:instance, :name]) diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index cbe83852e..bf063a0de 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -7,6 +7,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do alias Pleroma.Activity alias Pleroma.Object alias Pleroma.Repo + alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.UserInviteToken alias Pleroma.Web.ActivityPub.ActivityPub @@ -321,6 +322,7 @@ test "it sends confirmation email if :account_activation_required is specified i } {:ok, user} = TwitterAPI.register_user(data) + ObanHelpers.perform_all() assert user.info.confirmation_pending From c29686309eaf2cdae039ce813755c0e23cdc4a03 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 23 Aug 2019 09:23:10 +0300 Subject: [PATCH 006/272] [#1149] Upgraded `oban` from 0.6.0 to 0.7.1. --- config/config.exs | 1 - lib/pleroma/application.ex | 5 +-- lib/pleroma/workers/background_worker.ex | 42 +++++++++++-------- lib/pleroma/workers/mailer.ex | 6 +-- lib/pleroma/workers/publisher.ex | 6 +-- lib/pleroma/workers/receiver.ex | 6 +-- .../workers/scheduled_activity_worker.ex | 4 +- lib/pleroma/workers/subscriber.ex | 8 ++-- lib/pleroma/workers/transmogrifier.ex | 4 +- lib/pleroma/workers/web_pusher.ex | 4 +- mix.exs | 2 +- mix.lock | 10 ++--- test/support/oban_helpers.ex | 2 +- 13 files changed, 51 insertions(+), 49 deletions(-) diff --git a/config/config.exs b/config/config.exs index 9794997d9..1a6348bcd 100644 --- a/config/config.exs +++ b/config/config.exs @@ -469,7 +469,6 @@ config :pleroma, :workers, retries: [ - compile_time_default: 1, federator_incoming: 5, federator_outgoing: 5 ] diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 2e2922d28..384b03aa9 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -41,10 +41,7 @@ def start(_type, _args) do hackney_pool_children() ++ [ Pleroma.Stats, - %{ - id: Oban, - start: {Oban, :start_link, [Application.get_env(:pleroma, Oban)]} - }, + {Oban, Application.get_env(:pleroma, Oban)}, %{ id: :web_push_init, start: {Task, :start_link, [&Pleroma.Web.Push.init/0]}, diff --git a/lib/pleroma/workers/background_worker.ex b/lib/pleroma/workers/background_worker.ex index 3ab2b6bcc..3c021b9b4 100644 --- a/lib/pleroma/workers/background_worker.ex +++ b/lib/pleroma/workers/background_worker.ex @@ -11,55 +11,61 @@ defmodule Pleroma.Workers.BackgroundWorker do # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, queue: "background", - max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + max_attempts: 1 @impl Oban.Worker - def perform(%{"op" => "fetch_initial_posts", "user_id" => user_id}) do + def perform(%{"op" => "fetch_initial_posts", "user_id" => user_id}, _job) do user = User.get_by_id(user_id) User.perform(:fetch_initial_posts, user) end - def perform(%{"op" => "deactivate_user", "user_id" => user_id, "status" => status}) do + def perform(%{"op" => "deactivate_user", "user_id" => user_id, "status" => status}, _job) do user = User.get_by_id(user_id) User.perform(:deactivate_async, user, status) end - def perform(%{"op" => "delete_user", "user_id" => user_id}) do + def perform(%{"op" => "delete_user", "user_id" => user_id}, _job) do user = User.get_by_id(user_id) User.perform(:delete, user) end - def perform(%{ - "op" => "blocks_import", - "blocker_id" => blocker_id, - "blocked_identifiers" => blocked_identifiers - }) do + def perform( + %{ + "op" => "blocks_import", + "blocker_id" => blocker_id, + "blocked_identifiers" => blocked_identifiers + }, + _job + ) do blocker = User.get_by_id(blocker_id) User.perform(:blocks_import, blocker, blocked_identifiers) end - def perform(%{ - "op" => "follow_import", - "follower_id" => follower_id, - "followed_identifiers" => followed_identifiers - }) do + def perform( + %{ + "op" => "follow_import", + "follower_id" => follower_id, + "followed_identifiers" => followed_identifiers + }, + _job + ) do follower = User.get_by_id(follower_id) User.perform(:follow_import, follower, followed_identifiers) end - def perform(%{"op" => "clean_expired_tokens"}) do + def perform(%{"op" => "clean_expired_tokens"}, _job) do CleanWorker.perform(:clean) end - def perform(%{"op" => "media_proxy_preload", "message" => message}) do + def perform(%{"op" => "media_proxy_preload", "message" => message}, _job) do MediaProxyWarmingPolicy.perform(:preload, message) end - def perform(%{"op" => "media_proxy_prefetch", "url" => url}) do + def perform(%{"op" => "media_proxy_prefetch", "url" => url}, _job) do MediaProxyWarmingPolicy.perform(:prefetch, url) end - def perform(%{"op" => "fetch_data_for_activity", "activity_id" => activity_id}) do + def perform(%{"op" => "fetch_data_for_activity", "activity_id" => activity_id}, _job) do activity = Activity.get_by_id(activity_id) Pleroma.Web.RichMedia.Helpers.perform(:fetch, activity) end diff --git a/lib/pleroma/workers/mailer.ex b/lib/pleroma/workers/mailer.ex index 8bf9952bc..1cce2ea03 100644 --- a/lib/pleroma/workers/mailer.ex +++ b/lib/pleroma/workers/mailer.ex @@ -8,10 +8,10 @@ defmodule Pleroma.Workers.Mailer do # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, queue: "mailer", - max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + max_attempts: 1 @impl Oban.Worker - def perform(%{"op" => "email", "encoded_email" => encoded_email, "config" => config}) do + def perform(%{"op" => "email", "encoded_email" => encoded_email, "config" => config}, _job) do email = encoded_email |> Base.decode64!() @@ -20,7 +20,7 @@ def perform(%{"op" => "email", "encoded_email" => encoded_email, "config" => con Pleroma.Emails.Mailer.deliver(email, config) end - def perform(%{"op" => "digest_email", "user_id" => user_id}) do + def perform(%{"op" => "digest_email", "user_id" => user_id}, _job) do user = User.get_by_id(user_id) Pleroma.DigestEmailWorker.perform(user) end diff --git a/lib/pleroma/workers/publisher.ex b/lib/pleroma/workers/publisher.ex index c890ffb79..0a9084589 100644 --- a/lib/pleroma/workers/publisher.ex +++ b/lib/pleroma/workers/publisher.ex @@ -9,15 +9,15 @@ defmodule Pleroma.Workers.Publisher do # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, queue: "federator_outgoing", - max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + max_attempts: 1 @impl Oban.Worker - def perform(%{"op" => "publish", "activity_id" => activity_id}) do + def perform(%{"op" => "publish", "activity_id" => activity_id}, _job) do activity = Activity.get_by_id(activity_id) Federator.perform(:publish, activity) end - def perform(%{"op" => "publish_one", "module" => module_name, "params" => params}) do + def perform(%{"op" => "publish_one", "module" => module_name, "params" => params}, _job) do Federator.perform(:publish_one, String.to_atom(module_name), params) end end diff --git a/lib/pleroma/workers/receiver.ex b/lib/pleroma/workers/receiver.ex index d3de95716..4ee270d74 100644 --- a/lib/pleroma/workers/receiver.ex +++ b/lib/pleroma/workers/receiver.ex @@ -8,14 +8,14 @@ defmodule Pleroma.Workers.Receiver do # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, queue: "federator_incoming", - max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + max_attempts: 1 @impl Oban.Worker - def perform(%{"op" => "incoming_doc", "body" => doc}) do + def perform(%{"op" => "incoming_doc", "body" => doc}, _job) do Federator.perform(:incoming_doc, doc) end - def perform(%{"op" => "incoming_ap_doc", "params" => params}) do + def perform(%{"op" => "incoming_ap_doc", "params" => params}, _job) do Federator.perform(:incoming_ap_doc, params) end end diff --git a/lib/pleroma/workers/scheduled_activity_worker.ex b/lib/pleroma/workers/scheduled_activity_worker.ex index a49834fd8..d9724c78a 100644 --- a/lib/pleroma/workers/scheduled_activity_worker.ex +++ b/lib/pleroma/workers/scheduled_activity_worker.ex @@ -6,10 +6,10 @@ defmodule Pleroma.Workers.ScheduledActivityWorker do # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, queue: "scheduled_activities", - max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + max_attempts: 1 @impl Oban.Worker - def perform(%{"op" => "execute", "activity_id" => activity_id}) do + def perform(%{"op" => "execute", "activity_id" => activity_id}, _job) do Pleroma.ScheduledActivityWorker.perform(:execute, activity_id) end end diff --git a/lib/pleroma/workers/subscriber.ex b/lib/pleroma/workers/subscriber.ex index 6af3ad0a1..783c44173 100644 --- a/lib/pleroma/workers/subscriber.ex +++ b/lib/pleroma/workers/subscriber.ex @@ -10,19 +10,19 @@ defmodule Pleroma.Workers.Subscriber do # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, queue: "federator_outgoing", - max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + max_attempts: 1 @impl Oban.Worker - def perform(%{"op" => "refresh_subscriptions"}) do + def perform(%{"op" => "refresh_subscriptions"}, _job) do Federator.perform(:refresh_subscriptions) end - def perform(%{"op" => "request_subscription", "websub_id" => websub_id}) do + def perform(%{"op" => "request_subscription", "websub_id" => websub_id}, _job) do websub = Repo.get(WebsubClientSubscription, websub_id) Federator.perform(:request_subscription, websub) end - def perform(%{"op" => "verify_websub", "websub_id" => websub_id}) do + def perform(%{"op" => "verify_websub", "websub_id" => websub_id}, _job) do websub = Repo.get(WebsubClientSubscription, websub_id) Federator.perform(:verify_websub, websub) end diff --git a/lib/pleroma/workers/transmogrifier.ex b/lib/pleroma/workers/transmogrifier.ex index c6b4fab47..e13202c06 100644 --- a/lib/pleroma/workers/transmogrifier.ex +++ b/lib/pleroma/workers/transmogrifier.ex @@ -8,10 +8,10 @@ defmodule Pleroma.Workers.Transmogrifier do # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, queue: "transmogrifier", - max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + max_attempts: 1 @impl Oban.Worker - def perform(%{"op" => "user_upgrade", "user_id" => user_id}) do + def perform(%{"op" => "user_upgrade", "user_id" => user_id}, _job) do user = User.get_by_id(user_id) Pleroma.Web.ActivityPub.Transmogrifier.perform(:user_upgrade, user) end diff --git a/lib/pleroma/workers/web_pusher.ex b/lib/pleroma/workers/web_pusher.ex index b99581eb0..7b78bb3ea 100644 --- a/lib/pleroma/workers/web_pusher.ex +++ b/lib/pleroma/workers/web_pusher.ex @@ -9,10 +9,10 @@ defmodule Pleroma.Workers.WebPusher do # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, queue: "web_push", - max_attempts: Pleroma.Config.get([:workers, :retries, :compile_time_default]) + max_attempts: 1 @impl Oban.Worker - def perform(%{"op" => "web_push", "notification_id" => notification_id}) do + def perform(%{"op" => "web_push", "notification_id" => notification_id}, _job) do notification = Repo.get(Notification, notification_id) Pleroma.Web.Push.Impl.perform(notification) end diff --git a/mix.exs b/mix.exs index b651520ed..eb023313d 100644 --- a/mix.exs +++ b/mix.exs @@ -101,7 +101,7 @@ defp deps do {:phoenix_ecto, "~> 4.0"}, {:ecto_sql, "~> 3.1"}, {:postgrex, ">= 0.13.5"}, - {:oban, "~> 0.6"}, + {:oban, "~> 0.7"}, {:gettext, "~> 0.15"}, {:comeonin, "~> 4.1.1"}, {:pbkdf2_elixir, "~> 0.12.3"}, diff --git a/mix.lock b/mix.lock index 52932c9ef..8b8596375 100644 --- a/mix.lock +++ b/mix.lock @@ -17,12 +17,12 @@ "credo": {:hex, :credo, "0.9.3", "76fa3e9e497ab282e0cf64b98a624aa11da702854c52c82db1bf24e54ab7c97a", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:poison, ">= 0.0.0", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm"}, "crontab": {:hex, :crontab, "1.1.7", "b9219f0bdc8678b94143655a8f229716c5810c0636a4489f98c0956137e53985", [:mix], [{:ecto, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm"}, "crypt": {:git, "https://github.com/msantos/crypt", "1f2b58927ab57e72910191a7ebaeff984382a1d3", [ref: "1f2b58927ab57e72910191a7ebaeff984382a1d3"]}, - "db_connection": {:hex, :db_connection, "2.0.6", "bde2f85d047969c5b5800cb8f4b3ed6316c8cb11487afedac4aa5f93fd39abfa", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, repo: "hexpm", optional: false]}], "hexpm"}, + "db_connection": {:hex, :db_connection, "2.1.1", "a51e8a2ee54ef2ae6ec41a668c85787ed40cb8944928c191280fe34c15b76ae5", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, repo: "hexpm", optional: false]}], "hexpm"}, "decimal": {:hex, :decimal, "1.8.0", "ca462e0d885f09a1c5a342dbd7c1dcf27ea63548c65a65e67334f4b61803822e", [:mix], [], "hexpm"}, "deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm"}, "earmark": {:hex, :earmark, "1.3.2", "b840562ea3d67795ffbb5bd88940b1bed0ed9fa32834915125ea7d02e35888a5", [:mix], [], "hexpm"}, - "ecto": {:hex, :ecto, "3.1.4", "69d852da7a9f04ede725855a35ede48d158ca11a404fe94f8b2fb3b2162cd3c9", [:mix], [{:decimal, "~> 1.6", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, - "ecto_sql": {:hex, :ecto_sql, "3.1.3", "2c536139190492d9de33c5fefac7323c5eaaa82e1b9bf93482a14649042f7cd9", [:mix], [{:db_connection, "~> 2.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.1.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:mariaex, "~> 0.9.1", [hex: :mariaex, repo: "hexpm", optional: true]}, {:myxql, "~> 0.2.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.14.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, + "ecto": {:hex, :ecto, "3.1.7", "fa21d06ef56cdc2fdaa62574e8c3ba34a2751d44ea34c30bc65f0728421043e5", [:mix], [{:decimal, "~> 1.6", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, + "ecto_sql": {:hex, :ecto_sql, "3.1.6", "1e80e30d16138a729c717f73dcb938590bcdb3a4502f3012414d0cbb261045d8", [:mix], [{:db_connection, "~> 2.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.1.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:mariaex, "~> 0.9.1", [hex: :mariaex, repo: "hexpm", optional: true]}, {:myxql, "~> 0.2.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.14.0 or ~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, "esshd": {:hex, :esshd, "0.1.0", "6f93a2062adb43637edad0ea7357db2702a4b80dd9683482fe00f5134e97f4c1", [:mix], [], "hexpm"}, "eternal": {:hex, :eternal, "1.2.0", "e2a6b6ce3b8c248f7dc31451aefca57e3bdf0e48d73ae5043229380a67614c41", [:mix], [], "hexpm"}, "ex2ms": {:hex, :ex2ms, "1.5.0", "19e27f9212be9a96093fed8cdfbef0a2b56c21237196d26760f11dfcfae58e97", [:mix], [], "hexpm"}, @@ -57,7 +57,7 @@ "mogrify": {:hex, :mogrify, "0.6.1", "de1b527514f2d95a7bbe9642eb556061afb337e220cf97adbf3a4e6438ed70af", [:mix], [], "hexpm"}, "mox": {:hex, :mox, "0.5.1", "f86bb36026aac1e6f924a4b6d024b05e9adbed5c63e8daa069bd66fb3292165b", [:mix], [], "hexpm"}, "nimble_parsec": {:hex, :nimble_parsec, "0.5.0", "90e2eca3d0266e5c53f8fbe0079694740b9c91b6747f2b7e3c5d21966bba8300", [:mix], [], "hexpm"}, - "oban": {:hex, :oban, "0.6.0", "8b9b861355610e703e58a878bc29959f3f0e1b4cd1e90d785cf2bb2498d3b893", [:mix], [{:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, + "oban": {:hex, :oban, "0.7.1", "171bdd1b69c1a4a839f8c768f5e962fc22d1de1513d459fb6b8e0cbd34817a9a", [:mix], [{:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm"}, "pbkdf2_elixir": {:hex, :pbkdf2_elixir, "0.12.3", "6706a148809a29c306062862c803406e88f048277f6e85b68faf73291e820b84", [:mix], [], "hexpm"}, "phoenix": {:hex, :phoenix, "1.4.9", "746d098e10741c334d88143d3c94cab1756435f94387a63441792e66ec0ee974", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.8.1 or ~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, @@ -71,7 +71,7 @@ "plug_crypto": {:hex, :plug_crypto, "1.0.0", "18e49317d3fa343f24620ed22795ec29d4a5e602d52d1513ccea0b07d8ea7d4d", [:mix], [], "hexpm"}, "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"}, - "postgrex": {:hex, :postgrex, "0.14.3", "5754dee2fdf6e9e508cbf49ab138df964278700b764177e8f3871e658b345a1e", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, + "postgrex": {:hex, :postgrex, "0.15.0", "dd5349161019caeea93efa42f9b22f9d79995c3a86bdffb796427b4c9863b0f0", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, "prometheus": {:hex, :prometheus, "4.4.1", "1e96073b3ed7788053768fea779cbc896ddc3bdd9ba60687f2ad50b252ac87d6", [:mix, :rebar3], [], "hexpm"}, "prometheus_ecto": {:hex, :prometheus_ecto, "1.4.1", "6c768ea9654de871e5b32fab2eac348467b3021604ebebbcbd8bcbe806a65ed5", [:mix], [{:ecto, "~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.1 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}], "hexpm"}, "prometheus_ex": {:hex, :prometheus_ex, "3.0.5", "fa58cfd983487fc5ead331e9a3e0aa622c67232b3ec71710ced122c4c453a02f", [:mix], [{:prometheus, "~> 4.0", [hex: :prometheus, repo: "hexpm", optional: false]}], "hexpm"}, diff --git a/test/support/oban_helpers.ex b/test/support/oban_helpers.ex index d379c9ec7..989770926 100644 --- a/test/support/oban_helpers.ex +++ b/test/support/oban_helpers.ex @@ -16,7 +16,7 @@ def perform_all do end def perform(%Oban.Job{} = job) do - res = apply(String.to_existing_atom("Elixir." <> job.worker), :perform, [job]) + res = apply(String.to_existing_atom("Elixir." <> job.worker), :perform, [job.args, job]) Repo.delete(job) res end From c056736daaedb2a08557ee6c6a9bcb6bf44110ca Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 23 Aug 2019 16:11:39 +0300 Subject: [PATCH 007/272] [#1149] Publisher worker fix (atomized `params` keys). --- lib/pleroma/workers/publisher.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/pleroma/workers/publisher.ex b/lib/pleroma/workers/publisher.ex index 0a9084589..00fae99c7 100644 --- a/lib/pleroma/workers/publisher.ex +++ b/lib/pleroma/workers/publisher.ex @@ -18,6 +18,7 @@ def perform(%{"op" => "publish", "activity_id" => activity_id}, _job) do end def perform(%{"op" => "publish_one", "module" => module_name, "params" => params}, _job) do + params = Map.new(params, fn {k, v} -> {String.to_atom(k), v} end) Federator.perform(:publish_one, String.to_atom(module_name), params) end end From 581123f8bb703023cb652267a1fc34292f862852 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Fri, 23 Aug 2019 18:28:23 +0300 Subject: [PATCH 008/272] [#1149] Introduced `quantum` job scheduler. Documentation & config changes. --- CHANGELOG.md | 2 ++ config/config.exs | 40 +++++++++++++++++--------- config/test.exs | 2 -- docs/config.md | 15 ++++++---- lib/pleroma/application.ex | 19 ++---------- lib/pleroma/scheduler.ex | 7 +++++ lib/pleroma/web/federator/federator.ex | 8 +----- mix.exs | 2 +- mix.lock | 6 +++- 9 files changed, 54 insertions(+), 47 deletions(-) create mode 100644 lib/pleroma/scheduler.ex diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b0f4f40e..6dc19e79f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Unsubscribe followers when they unfollow a user - AdminAPI: Add "godmode" while fetching user statuses (i.e. admin can see private statuses) - Improve digest email template +- Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) with [Oban](https://github.com/sorentwo/oban) +- Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler ### Fixed - Not being able to pin unlisted posts diff --git a/config/config.exs b/config/config.exs index 1a6348bcd..43d114d70 100644 --- a/config/config.exs +++ b/config/config.exs @@ -51,6 +51,24 @@ telemetry_event: [Pleroma.Repo.Instrumenter], migration_lock: nil +scheduled_jobs = + with digest_config <- Application.get_env(:pleroma, :email_notifications)[:digest], + true <- digest_config[:active] do + [{digest_config[:schedule], {Pleroma.DigestEmailWorker, :perform, []}}] + else + _ -> [] + end + +scheduled_jobs = + scheduled_jobs ++ + [{"0 */6 * * * *", {Pleroma.Web.Websub, :refresh_subscriptions, []}}] + +config :pleroma, Pleroma.Scheduler, + global: true, + overlap: true, + timezone: :utc, + jobs: scheduled_jobs + config :pleroma, Pleroma.Captcha, enabled: false, seconds_valid: 60, @@ -449,23 +467,19 @@ "web" ] -job_queues = [ - federator_incoming: 50, - federator_outgoing: 50, - web_push: 50, - mailer: 10, - transmogrifier: 20, - scheduled_activities: 10, - background: 5 -] - -config :pleroma_job_queue, :queues, job_queues - config :pleroma, Oban, repo: Pleroma.Repo, verbose: false, prune: {:maxage, 60 * 60 * 24 * 7}, - queues: job_queues + queues: [ + federator_incoming: 50, + federator_outgoing: 50, + web_push: 50, + mailer: 10, + transmogrifier: 20, + scheduled_activities: 10, + background: 5 + ] config :pleroma, :workers, retries: [ diff --git a/config/test.exs b/config/test.exs index a0fa67516..62f2a04d2 100644 --- a/config/test.exs +++ b/config/test.exs @@ -61,8 +61,6 @@ config :web_push_encryption, :http_client, Pleroma.Web.WebPushHttpClientMock -config :pleroma_job_queue, disabled: true - config :pleroma, Oban, queues: false, prune: :disabled diff --git a/docs/config.md b/docs/config.md index ae8afad89..81923c640 100644 --- a/docs/config.md +++ b/docs/config.md @@ -400,9 +400,9 @@ You can then do curl "http://localhost:4000/api/pleroma/admin/invite_token?admin_token=somerandomtoken" ``` -## :pleroma_job_queue +## Oban -[Pleroma Job Queue](https://git.pleroma.social/pleroma/pleroma_job_queue) configuration: a list of queues with maximum concurrent jobs. +[Oban](https://github.com/sorentwo/oban) asynchronous job processor configuration. Pleroma has the following queues: @@ -416,12 +416,15 @@ Pleroma has the following queues: Example: ```elixir -config :pleroma_job_queue, :queues, - federator_incoming: 50, - federator_outgoing: 50 +config :pleroma, Oban, + repo: Pleroma.Repo, + queues: [ + federator_incoming: 50, + federator_outgoing: 50 + ] ``` -This config contains two queues: `federator_incoming` and `federator_outgoing`. Both have the `max_jobs` set to `50`. +This config contains two queues: `federator_incoming` and `federator_outgoing`. Both have the number of max concurrent jobs set to `50`. ## Pleroma.Web.Metadata * `providers`: a list of metadata providers to enable. Providers available: diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 384b03aa9..ce2d3ab59 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -31,6 +31,7 @@ def start(_type, _args) do children = [ Pleroma.Repo, + Pleroma.Scheduler, Pleroma.Config.TransferTask, Pleroma.Emoji, Pleroma.Captcha, @@ -69,9 +70,7 @@ def start(_type, _args) do # See http://elixir-lang.org/docs/stable/elixir/Supervisor.html # for other strategies and supported options opts = [strategy: :one_for_one, name: Pleroma.Supervisor] - result = Supervisor.start_link(children, opts) - :ok = after_supervisor_start() - result + Supervisor.start_link(children, opts) end defp setup_instrumenters do @@ -162,18 +161,4 @@ defp hackney_pool_children do :hackney_pool.child_spec(pool, options) end end - - defp after_supervisor_start do - with digest_config <- Application.get_env(:pleroma, :email_notifications)[:digest], - true <- digest_config[:active] do - # TODO: consider replacing with `quantum` scheduler - PleromaJobQueue.schedule( - digest_config[:schedule], - :digest_emails, - Pleroma.DigestEmailWorker - ) - end - - :ok - end end diff --git a/lib/pleroma/scheduler.ex b/lib/pleroma/scheduler.ex new file mode 100644 index 000000000..d84cd99ad --- /dev/null +++ b/lib/pleroma/scheduler.ex @@ -0,0 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Scheduler do + use Quantum.Scheduler, otp_app: :pleroma +end diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index d85fe824f..cf7e50fee 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -21,7 +21,7 @@ defmodule Pleroma.Web.Federator do defdelegate worker_args(queue), to: Pleroma.Workers.Helper def init do - # 1 minute + # To do: consider removing this call in favor of scheduled execution (`quantum`-based) refresh_subscriptions(schedule_in: 60) end @@ -146,12 +146,6 @@ def perform(:verify_websub, websub) do def perform(:refresh_subscriptions) do Logger.debug("Federator running refresh subscriptions") Websub.refresh_subscriptions() - - spawn(fn -> - # 6 hours - Process.sleep(1000 * 60 * 60 * 6) - refresh_subscriptions() - end) end def ap_enabled_actor(id) do diff --git a/mix.exs b/mix.exs index eb023313d..9d8ded1ff 100644 --- a/mix.exs +++ b/mix.exs @@ -102,6 +102,7 @@ defp deps do {:ecto_sql, "~> 3.1"}, {:postgrex, ">= 0.13.5"}, {:oban, "~> 0.7"}, + {:quantum, "~> 2.3"}, {:gettext, "~> 0.15"}, {:comeonin, "~> 4.1.1"}, {:pbkdf2_elixir, "~> 0.12.3"}, @@ -142,7 +143,6 @@ defp deps do {:http_signatures, git: "https://git.pleroma.social/pleroma/http_signatures.git", ref: "293d77bb6f4a67ac8bde1428735c3b42f22cbb30"}, - {:pleroma_job_queue, "~> 0.3"}, {:telemetry, "~> 0.3"}, {:prometheus_ex, "~> 3.0"}, {:prometheus_plugs, "~> 1.1"}, diff --git a/mix.lock b/mix.lock index 8b8596375..6ebc66271 100644 --- a/mix.lock +++ b/mix.lock @@ -36,6 +36,8 @@ "excoveralls": {:hex, :excoveralls, "0.11.1", "dd677fbdd49114fdbdbf445540ec735808250d56b011077798316505064edb2c", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"}, "floki": {:hex, :floki, "0.20.4", "be42ac911fece24b4c72f3b5846774b6e61b83fe685c2fc9d62093277fb3bc86", [:mix], [{:html_entities, "~> 0.4.0", [hex: :html_entities, repo: "hexpm", optional: false]}, {:mochiweb, "~> 2.15", [hex: :mochiweb, repo: "hexpm", optional: false]}], "hexpm"}, "gen_smtp": {:hex, :gen_smtp, "0.14.0", "39846a03522456077c6429b4badfd1d55e5e7d0fdfb65e935b7c5e38549d9202", [:rebar3], [], "hexpm"}, + "gen_stage": {:hex, :gen_stage, "0.14.2", "6a2a578a510c5bfca8a45e6b27552f613b41cf584b58210f017088d3d17d0b14", [:mix], [], "hexpm"}, + "gen_state_machine": {:hex, :gen_state_machine, "2.0.5", "9ac15ec6e66acac994cc442dcc2c6f9796cf380ec4b08267223014be1c728a95", [:mix], [], "hexpm"}, "gettext": {:hex, :gettext, "0.17.0", "abe21542c831887a2b16f4c94556db9c421ab301aee417b7c4fbde7fbdbe01ec", [:mix], [], "hexpm"}, "hackney": {:hex, :hackney, "1.15.1", "9f8f471c844b8ce395f7b6d8398139e26ddca9ebc171a8b91342ee15a19963f4", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.4", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"}, "html_entities": {:hex, :html_entities, "0.4.0", "f2fee876858cf6aaa9db608820a3209e45a087c5177332799592142b50e89a6b", [:mix], [], "hexpm"}, @@ -46,6 +48,7 @@ "jason": {:hex, :jason, "1.1.2", "b03dedea67a99223a2eaf9f1264ce37154564de899fd3d8b9a21b1a6fd64afe7", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm"}, "joken": {:hex, :joken, "2.0.1", "ec9ab31bf660f343380da033b3316855197c8d4c6ef597fa3fcb451b326beb14", [:mix], [{:jose, "~> 1.9", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm"}, "jose": {:hex, :jose, "1.9.0", "4167c5f6d06ffaebffd15cdb8da61a108445ef5e85ab8f5a7ad926fdf3ada154", [:mix, :rebar3], [{:base64url, "~> 0.0.1", [hex: :base64url, repo: "hexpm", optional: false]}], "hexpm"}, + "libring": {:hex, :libring, "1.4.0", "41246ba2f3fbc76b3971f6bce83119dfec1eee17e977a48d8a9cfaaf58c2a8d6", [:mix], [], "hexpm"}, "makeup": {:hex, :makeup, "0.8.0", "9cf32aea71c7fe0a4b2e9246c2c4978f9070257e5c9ce6d4a28ec450a839b55f", [:mix], [{:nimble_parsec, "~> 0.5.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm"}, "makeup_elixir": {:hex, :makeup_elixir, "0.13.0", "be7a477997dcac2e48a9d695ec730b2d22418292675c75aa2d34ba0909dcdeda", [:mix], [{:makeup, "~> 0.8", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm"}, "meck": {:hex, :meck, "0.8.13", "ffedb39f99b0b99703b8601c6f17c7f76313ee12de6b646e671e3188401f7866", [:rebar3], [], "hexpm"}, @@ -65,7 +68,6 @@ "phoenix_html": {:hex, :phoenix_html, "2.13.1", "fa8f034b5328e2dfa0e4131b5569379003f34bc1fafdaa84985b0b9d2f12e68b", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "1.1.2", "496c303bdf1b2e98a9d26e89af5bba3ab487ba3a3735f74bf1f4064d2a845a3e", [:mix], [], "hexpm"}, "phoenix_swoosh": {:hex, :phoenix_swoosh, "0.2.0", "a7e0b32077cd6d2323ae15198839b05d9caddfa20663fd85787479e81f89520e", [:mix], [{:phoenix, "~> 1.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.2", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:swoosh, "~> 0.1", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm"}, - "pleroma_job_queue": {:hex, :pleroma_job_queue, "0.3.0", "b84538d621f0c3d6fcc1cff9d5648d3faaf873b8b21b94e6503428a07a48ec47", [:mix], [{:crontab, "~> 1.1", [hex: :crontab, repo: "hexpm", optional: false]}], "hexpm"}, "plug": {:hex, :plug, "1.8.2", "0bcce1daa420f189a6491f3940cc77ea7fb1919761175c9c3b59800d897440fc", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm"}, "plug_cowboy": {:hex, :plug_cowboy, "2.1.0", "b75768153c3a8a9e8039d4b25bb9b14efbc58e9c4a6e6a270abff1cd30cbe320", [:mix], [{:cowboy, "~> 2.5", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "plug_crypto": {:hex, :plug_crypto, "1.0.0", "18e49317d3fa343f24620ed22795ec29d4a5e602d52d1513ccea0b07d8ea7d4d", [:mix], [], "hexpm"}, @@ -78,9 +80,11 @@ "prometheus_phoenix": {:hex, :prometheus_phoenix, "1.3.0", "c4b527e0b3a9ef1af26bdcfbfad3998f37795b9185d475ca610fe4388fdd3bb5", [:mix], [{:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.3 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}], "hexpm"}, "prometheus_plugs": {:hex, :prometheus_plugs, "1.1.5", "25933d48f8af3a5941dd7b621c889749894d8a1082a6ff7c67cc99dec26377c5", [:mix], [{:accept, "~> 0.1", [hex: :accept, repo: "hexpm", optional: false]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.1 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}, {:prometheus_process_collector, "~> 1.1", [hex: :prometheus_process_collector, repo: "hexpm", optional: true]}], "hexpm"}, "quack": {:hex, :quack, "0.1.1", "cca7b4da1a233757fdb44b3334fce80c94785b3ad5a602053b7a002b5a8967bf", [:mix], [{:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: false]}, {:tesla, "~> 1.2.0", [hex: :tesla, repo: "hexpm", optional: false]}], "hexpm"}, + "quantum": {:hex, :quantum, "2.3.4", "72a0e8855e2adc101459eac8454787cb74ab4169de6ca50f670e72142d4960e9", [:mix], [{:calendar, "~> 0.17", [hex: :calendar, repo: "hexpm", optional: true]}, {:crontab, "~> 1.1", [hex: :crontab, repo: "hexpm", optional: false]}, {:gen_stage, "~> 0.12", [hex: :gen_stage, repo: "hexpm", optional: false]}, {:swarm, "~> 3.3", [hex: :swarm, repo: "hexpm", optional: false]}, {:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: true]}], "hexpm"}, "ranch": {:hex, :ranch, "1.7.1", "6b1fab51b49196860b733a49c07604465a47bdb78aa10c1c16a3d199f7f8c881", [:rebar3], [], "hexpm"}, "recon": {:git, "https://github.com/ferd/recon.git", "75d70c7c08926d2f24f1ee6de14ee50fe8a52763", [tag: "2.4.0"]}, "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.4", "f0eafff810d2041e93f915ef59899c923f4568f4585904d010387ed74988e77b", [:make, :mix, :rebar3], [], "hexpm"}, + "swarm": {:hex, :swarm, "3.4.0", "64f8b30055d74640d2186c66354b33b999438692a91be275bb89cdc7e401f448", [:mix], [{:gen_state_machine, "~> 2.0", [hex: :gen_state_machine, repo: "hexpm", optional: false]}, {:libring, "~> 1.0", [hex: :libring, repo: "hexpm", optional: false]}], "hexpm"}, "sweet_xml": {:hex, :sweet_xml, "0.6.6", "fc3e91ec5dd7c787b6195757fbcf0abc670cee1e4172687b45183032221b66b8", [:mix], [], "hexpm"}, "swoosh": {:hex, :swoosh, "0.23.2", "7dda95ff0bf54a2298328d6899c74dae1223777b43563ccebebb4b5d2b61df38", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm"}, "syslog": {:git, "https://github.com/Vagabond/erlang-syslog.git", "4a6c6f2c996483e86c1320e9553f91d337bcb6aa", [tag: "1.0.5"]}, From 71700ea6d4104ecd2cc0afb0ac103e722b30fbb5 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 24 Aug 2019 09:27:32 +0300 Subject: [PATCH 009/272] [#1149] Updated docs & tests. --- docs/config.md | 6 ++++++ test/web/admin_api/admin_api_controller_test.exs | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/config.md b/docs/config.md index 81923c640..5b2c3a022 100644 --- a/docs/config.md +++ b/docs/config.md @@ -426,6 +426,12 @@ config :pleroma, Oban, This config contains two queues: `federator_incoming` and `federator_outgoing`. Both have the number of max concurrent jobs set to `50`. +## :workers + +Includes custom worker options not interpretable directly by `Oban`. + +* `retries` — keyword lists where keys are `Oban` queues (see above) and values are numbers of max attempts for failed jobs. + ## Pleroma.Web.Metadata * `providers`: a list of metadata providers to enable. Providers available: * Pleroma.Web.Metadata.Providers.OpenGraph diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 844cd0732..a867ac998 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -1861,7 +1861,7 @@ test "queues key as atom", %{conn: conn} do post(conn, "/api/pleroma/admin/config", %{ configs: [ %{ - "group" => "pleroma_job_queue", + "group" => "oban", "key" => ":queues", "value" => [ %{"tuple" => [":federator_incoming", 50]}, @@ -1879,7 +1879,7 @@ test "queues key as atom", %{conn: conn} do assert json_response(conn, 200) == %{ "configs" => [ %{ - "group" => "pleroma_job_queue", + "group" => "oban", "key" => ":queues", "value" => [ %{"tuple" => [":federator_incoming", 50]}, From ef9930ed8050a309f2d95df8f0504de2b1da4677 Mon Sep 17 00:00:00 2001 From: ultem Date: Sat, 24 Aug 2019 10:16:27 +0000 Subject: [PATCH 010/272] Minor corrections and clarification for Alpine standard v.3.10 --- docs/installation/alpine_linux_en.md | 33 +++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/docs/installation/alpine_linux_en.md b/docs/installation/alpine_linux_en.md index 1f300f353..c77618936 100644 --- a/docs/installation/alpine_linux_en.md +++ b/docs/installation/alpine_linux_en.md @@ -1,7 +1,9 @@ # Installing on Alpine Linux ## Installation -This guide is a step-by-step installation guide for Alpine Linux. It also assumes that you have administrative rights, either as root or a user with [sudo permissions](https://www.linode.com/docs/tools-reference/custom-kernels-distros/install-alpine-linux-on-your-linode/#configuration). If you want to run this guide with root, ignore the `sudo` at the beginning of the lines, unless it calls a user like `sudo -Hu pleroma`; in this case, use `su -l -s $SHELL -c 'command'` instead. +This guide is a step-by-step installation guide for Alpine Linux. The instructions were verified against Alpine v.3.10 standard image. You might miss additional dependencies if you use `netboot` instead. + +It assumes that you have administrative rights, either as root or a user with [sudo permissions](https://www.linode.com/docs/tools-reference/custom-kernels-distros/install-alpine-linux-on-your-linode/#configuration). If you want to run this guide with root, ignore the `sudo` at the beginning of the lines, unless it calls a user like `sudo -Hu pleroma`; in this case, use `su -l -s $SHELL -c 'command'` instead. ### Required packages @@ -20,12 +22,13 @@ This guide is a step-by-step installation guide for Alpine Linux. It also assume ### Prepare the system -* First make sure to have the community repository enabled: +* The community repository must be enabled in `/etc/apk/repositories`. Depending on which version and mirror you use this looks like `http://alpine.42.fr/v3.10/community`. If you autogenerated the mirror during installation: ```shell -echo "https://nl.alpinelinux.org/alpine/latest-stable/community" | sudo tee -a /etc/apk/repository +awk 'NR==2' /etc/apk/repositories | sed 's/main/community/' | tee -a /etc/apk/repositories ``` + * Then update the system, if not already done: ```shell @@ -77,7 +80,8 @@ sudo rc-update add postgresql * Add a new system user for the Pleroma service: ```shell -sudo adduser -S -s /bin/false -h /opt/pleroma -H pleroma +sudo addgroup pleroma +sudo adduser -S -s /bin/false -h /opt/pleroma -H -G pleroma pleroma ``` **Note**: To execute a single command as the Pleroma system user, use `sudo -Hu pleroma command`. You can also switch to a shell by using `sudo -Hu pleroma $SHELL`. If you don’t have and want `sudo` on your system, you can use `su` as root user (UID 0) for a single command by using `su -l pleroma -s $SHELL -c 'command'` and `su -l pleroma -s $SHELL` for starting a shell. @@ -164,7 +168,26 @@ If that doesn’t work, make sure, that nginx is not already running. If it stil sudo cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/conf.d/pleroma.conf ``` -* Before starting nginx edit the configuration and change it to your needs (e.g. change servername, change cert paths) +* Before starting nginx edit the configuration and change it to your needs. You must change change `server_name` and the paths to the certificates. You can use `nano` (install with `apk add nano` if missing). + +``` +server { + server_name your.domain; + listen 80; + ... +} + +server { + server_name your.domain; + listen 443 ssl http2; + ... + ssl_trusted_certificate /etc/letsencrypt/live/your.domain/chain.pem; + ssl_certificate /etc/letsencrypt/live/your.domain/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/your.domain/privkey.pem; + ... +} +``` + * Enable and start nginx: ```shell From cd78e63a2528ab813088d5e44a026f6bb05b344b Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Tue, 27 Aug 2019 14:34:37 +0300 Subject: [PATCH 011/272] [#1149] Bugfix: Pleroma.Workers.Subscriber / "verify_websub" works with WebsubServerSubscription. --- lib/pleroma/workers/subscriber.ex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/workers/subscriber.ex b/lib/pleroma/workers/subscriber.ex index 783c44173..e960b35bf 100644 --- a/lib/pleroma/workers/subscriber.ex +++ b/lib/pleroma/workers/subscriber.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Workers.Subscriber do alias Pleroma.Repo alias Pleroma.Web.Federator - alias Pleroma.Web.Websub.WebsubClientSubscription + alias Pleroma.Web.Websub # Note: `max_attempts` is intended to be overridden in `new/1` call use Oban.Worker, @@ -18,12 +18,12 @@ def perform(%{"op" => "refresh_subscriptions"}, _job) do end def perform(%{"op" => "request_subscription", "websub_id" => websub_id}, _job) do - websub = Repo.get(WebsubClientSubscription, websub_id) + websub = Repo.get(Websub.WebsubClientSubscription, websub_id) Federator.perform(:request_subscription, websub) end def perform(%{"op" => "verify_websub", "websub_id" => websub_id}, _job) do - websub = Repo.get(WebsubClientSubscription, websub_id) + websub = Repo.get(Websub.WebsubServerSubscription, websub_id) Federator.perform(:verify_websub, websub) end end From 5e4fde1d3d49ec56fae3b199fb4af51057e2dffd Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Tue, 27 Aug 2019 20:48:16 +0300 Subject: [PATCH 012/272] Filter logs by date --- lib/pleroma/moderation_log.ex | 37 ++++++++++++++- lib/pleroma/user/info.ex | 4 +- .../web/admin_api/admin_api_controller.ex | 8 +++- .../admin_api/admin_api_controller_test.exs | 46 +++++++++++++++++++ 4 files changed, 89 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/moderation_log.ex b/lib/pleroma/moderation_log.ex index 1ef6fe67a..2164ecfc2 100644 --- a/lib/pleroma/moderation_log.ex +++ b/lib/pleroma/moderation_log.ex @@ -14,13 +14,46 @@ defmodule Pleroma.ModerationLog do timestamps() end - def get_all(page, page_size) do + def get_all(params) do + params + |> get_all_query() + |> maybe_filter_by_date(params) + |> Repo.all() + end + + defp maybe_filter_by_date(query, %{start_date: nil, end_date: nil}), do: query + + defp maybe_filter_by_date(query, %{start_date: start_date, end_date: nil}) do + from(q in query, + where: q.inserted_at >= ^parse_datetime(start_date) + ) + end + + defp maybe_filter_by_date(query, %{start_date: nil, end_date: end_date}) do + from(q in query, + where: q.inserted_at <= ^parse_datetime(end_date) + ) + end + + defp maybe_filter_by_date(query, %{start_date: start_date, end_date: end_date}) do + from(q in query, + where: q.inserted_at >= ^parse_datetime(start_date), + where: q.inserted_at <= ^parse_datetime(end_date) + ) + end + + defp get_all_query(%{page: page, page_size: page_size}) do from(q in __MODULE__, order_by: [desc: q.inserted_at], limit: ^page_size, offset: ^((page - 1) * page_size) ) - |> Repo.all() + end + + defp parse_datetime(datetime) do + {:ok, parsed_datetime, _} = DateTime.from_iso8601(datetime) + + parsed_datetime end def insert_log(%{ diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex index 779bfbc18..7027c947b 100644 --- a/lib/pleroma/user/info.ex +++ b/lib/pleroma/user/info.ex @@ -318,9 +318,7 @@ defp valid_field?(%{"name" => name, "value" => value}) do name_limit = Pleroma.Config.get([:instance, :account_field_name_length], 255) value_limit = Pleroma.Config.get([:instance, :account_field_value_length], 255) - is_binary(name) && - is_binary(value) && - String.length(name) <= name_limit && + is_binary(name) && is_binary(value) && String.length(name) <= name_limit && String.length(value) <= value_limit end diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 544b9d7d8..065394a24 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -539,7 +539,13 @@ def status_delete(%{assigns: %{user: user}} = conn, %{"id" => id}) do def list_log(conn, params) do {page, page_size} = page_params(params) - log = ModerationLog.get_all(page, page_size) + log = + ModerationLog.get_all(%{ + page: page, + page_size: page_size, + start_date: params["start_date"], + end_date: params["end_date"] + }) conn |> put_view(ModerationLogView) diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 4e2c27431..a7269aee9 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -2348,6 +2348,52 @@ test "returns the log with pagination", %{conn: conn, admin: admin} do assert second_entry["message"] == "@#{admin.nickname} followed relay: https://example.org/relay" end + + test "filters log by date", %{conn: conn, admin: admin} do + first_date = "2017-08-15T15:47:06Z" + second_date = "2017-08-20T15:47:06Z" + + Repo.insert(%ModerationLog{ + data: %{ + actor: %{ + "id" => admin.id, + "nickname" => admin.nickname, + "type" => "user" + }, + action: "relay_follow", + target: "https://example.org/relay" + }, + inserted_at: NaiveDateTime.from_iso8601!(first_date) + }) + + Repo.insert(%ModerationLog{ + data: %{ + actor: %{ + "id" => admin.id, + "nickname" => admin.nickname, + "type" => "user" + }, + action: "relay_unfollow", + target: "https://example.org/relay" + }, + inserted_at: NaiveDateTime.from_iso8601!(second_date) + }) + + conn1 = + get( + conn, + "/api/pleroma/admin/moderation_log?start_date=#{second_date}" + ) + + response1 = json_response(conn1, 200) + [first_entry] = response1 + + assert response1 |> length() == 1 + assert first_entry["data"]["action"] == "relay_unfollow" + + assert first_entry["message"] == + "@#{admin.nickname} unfollowed relay: https://example.org/relay" + end end end From cef2e980b1f6b07c2bdb01030559aca83257bd7e Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Wed, 28 Aug 2019 21:32:44 +0300 Subject: [PATCH 013/272] division emoji.ex on loader.ex and emoji.ex --- lib/mix/tasks/pleroma/emoji.ex | 2 +- lib/pleroma/emoji.ex | 212 +++------------------------------ lib/pleroma/emoji/loader.ex | 204 +++++++++++++++++++++++++++++++ test/emoji/loader_test.exs | 83 +++++++++++++ test/emoji_test.exs | 75 ------------ 5 files changed, 304 insertions(+), 272 deletions(-) create mode 100644 lib/pleroma/emoji/loader.ex create mode 100644 test/emoji/loader_test.exs diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index c2225af7d..dc5f7c193 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -235,7 +235,7 @@ def run(["gen-pack", src]) do cwd: tmp_pack_dir ) - emoji_map = Pleroma.Emoji.make_shortcode_to_file_map(tmp_pack_dir, exts) + emoji_map = Pleroma.Emoji.Loader.make_shortcode_to_file_map(tmp_pack_dir, exts) File.write!(files_name, Jason.encode!(emoji_map, pretty: true)) diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index 66e20f0e4..ab6ba7d6a 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -4,24 +4,22 @@ defmodule Pleroma.Emoji do @moduledoc """ - The emojis are loaded from: - - * emoji packs in INSTANCE-DIR/emoji - * the files: `config/emoji.txt` and `config/custom_emoji.txt` - * glob paths, nested folder is used as tag name for grouping e.g. priv/static/emoji/custom/nested_folder - - This GenServer stores in an ETS table the list of the loaded emojis, and also allows to reload the list at runtime. + This GenServer stores in an ETS table the list of the loaded emojis, + and also allows to reload the list at runtime. """ use GenServer + alias Pleroma.Emoji.Loader + require Logger - @type pattern :: Regex.t() | module() | String.t() - @type patterns :: pattern() | [pattern()] - @type group_patterns :: keyword(patterns()) - @ets __MODULE__.Ets - @ets_options [:ordered_set, :protected, :named_table, {:read_concurrency, true}] + @ets_options [ + :ordered_set, + :protected, + :named_table, + {:read_concurrency, true} + ] @doc false def start_link(_) do @@ -44,7 +42,7 @@ def get(name) do end @doc "Returns all the emojos!!" - @spec get_all() :: [{String.t(), String.t()}, ...] + @spec get_all() :: list({String.t(), String.t(), String.t()}) def get_all do :ets.tab2list(@ets) end @@ -58,13 +56,13 @@ def init(_) do @doc false def handle_cast(:reload, state) do - load() + update_emojis(Loader.load()) {:noreply, state} end @doc false def handle_call(:reload, _from, state) do - load() + update_emojis(Loader.load()) {:reply, :ok, state} end @@ -75,189 +73,11 @@ def terminate(_, _) do @doc false def code_change(_old_vsn, state, _extra) do - load() + update_emojis(Loader.load()) {:ok, state} end - defp load do - emoji_dir_path = - Path.join( - Pleroma.Config.get!([:instance, :static_dir]), - "emoji" - ) - - emoji_groups = Pleroma.Config.get([:emoji, :groups]) - - case File.ls(emoji_dir_path) do - {:error, :enoent} -> - # The custom emoji directory doesn't exist, - # don't do anything - nil - - {:error, e} -> - # There was some other error - Logger.error("Could not access the custom emoji directory #{emoji_dir_path}: #{e}") - - {:ok, results} -> - grouped = - Enum.group_by(results, fn file -> File.dir?(Path.join(emoji_dir_path, file)) end) - - packs = grouped[true] || [] - files = grouped[false] || [] - - # Print the packs we've found - Logger.info("Found emoji packs: #{Enum.join(packs, ", ")}") - - if not Enum.empty?(files) do - Logger.warn( - "Found files in the emoji folder. These will be ignored, please move them to a subdirectory\nFound files: #{ - Enum.join(files, ", ") - }" - ) - end - - emojis = - Enum.flat_map( - packs, - fn pack -> load_pack(Path.join(emoji_dir_path, pack), emoji_groups) end - ) - - true = :ets.insert(@ets, emojis) - end - - # Compat thing for old custom emoji handling & default emoji, - # it should run even if there are no emoji packs - shortcode_globs = Pleroma.Config.get([:emoji, :shortcode_globs], []) - - emojis = - (load_from_file("config/emoji.txt", emoji_groups) ++ - load_from_file("config/custom_emoji.txt", emoji_groups) ++ - load_from_globs(shortcode_globs, emoji_groups)) - |> Enum.reject(fn value -> value == nil end) - - true = :ets.insert(@ets, emojis) - - :ok - end - - defp load_pack(pack_dir, emoji_groups) do - pack_name = Path.basename(pack_dir) - - emoji_txt = Path.join(pack_dir, "emoji.txt") - - if File.exists?(emoji_txt) do - load_from_file(emoji_txt, emoji_groups) - else - extensions = Pleroma.Config.get([:emoji, :pack_extensions]) - - Logger.info( - "No emoji.txt found for pack \"#{pack_name}\", assuming all #{Enum.join(extensions, ", ")} files are emoji" - ) - - make_shortcode_to_file_map(pack_dir, extensions) - |> Enum.map(fn {shortcode, rel_file} -> - filename = Path.join("/emoji/#{pack_name}", rel_file) - - {shortcode, filename, [to_string(match_extra(emoji_groups, filename))]} - end) - end - end - - def make_shortcode_to_file_map(pack_dir, exts) do - find_all_emoji(pack_dir, exts) - |> Enum.map(&Path.relative_to(&1, pack_dir)) - |> Enum.map(fn f -> {f |> Path.basename() |> Path.rootname(), f} end) - |> Enum.into(%{}) - end - - def find_all_emoji(dir, exts) do - Enum.reduce( - File.ls!(dir), - [], - fn f, acc -> - filepath = Path.join(dir, f) - - if File.dir?(filepath) do - acc ++ find_all_emoji(filepath, exts) - else - acc ++ [filepath] - end - end - ) - |> Enum.filter(fn f -> Path.extname(f) in exts end) - end - - defp load_from_file(file, emoji_groups) do - if File.exists?(file) do - load_from_file_stream(File.stream!(file), emoji_groups) - else - [] - end - end - - defp load_from_file_stream(stream, emoji_groups) do - stream - |> Stream.map(&String.trim/1) - |> Stream.map(fn line -> - case String.split(line, ~r/,\s*/) do - [name, file] -> - {name, file, [to_string(match_extra(emoji_groups, file))]} - - [name, file | tags] -> - {name, file, tags} - - _ -> - nil - end - end) - |> Enum.to_list() - end - - defp load_from_globs(globs, emoji_groups) do - static_path = Path.join(:code.priv_dir(:pleroma), "static") - - paths = - Enum.map(globs, fn glob -> - Path.join(static_path, glob) - |> Path.wildcard() - end) - |> Enum.concat() - - Enum.map(paths, fn path -> - tag = match_extra(emoji_groups, Path.join("/", Path.relative_to(path, static_path))) - shortcode = Path.basename(path, Path.extname(path)) - external_path = Path.join("/", Path.relative_to(path, static_path)) - {shortcode, external_path, [to_string(tag)]} - end) - end - - @doc """ - Finds a matching group for the given emoji filename - """ - @spec match_extra(group_patterns(), String.t()) :: atom() | nil - def match_extra(group_patterns, filename) do - match_group_patterns(group_patterns, fn pattern -> - case pattern do - %Regex{} = regex -> Regex.match?(regex, filename) - string when is_binary(string) -> filename == string - end - end) - end - - defp match_group_patterns(group_patterns, matcher) do - Enum.find_value(group_patterns, fn {group, patterns} -> - patterns = - patterns - |> List.wrap() - |> Enum.map(fn pattern -> - if String.contains?(pattern, "*") do - ~r(#{String.replace(pattern, "*", ".*")}) - else - pattern - end - end) - - Enum.any?(patterns, matcher) && group - end) + defp update_emojis(emojis) do + :ets.insert(@ets, emojis) end end diff --git a/lib/pleroma/emoji/loader.ex b/lib/pleroma/emoji/loader.ex new file mode 100644 index 000000000..e93b0aecc --- /dev/null +++ b/lib/pleroma/emoji/loader.ex @@ -0,0 +1,204 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Emoji.Loader do + @moduledoc """ + The Loader emoji from: + + * emoji packs in INSTANCE-DIR/emoji + * the files: `config/emoji.txt` and `config/custom_emoji.txt` + * glob paths, nested folder is used as tag name for grouping e.g. priv/static/emoji/custom/nested_folder + """ + alias Pleroma.Config + + require Logger + + @type pattern :: Regex.t() | module() | String.t() + @type patterns :: pattern() | [pattern()] + @type group_patterns :: keyword(patterns()) + @type emoji :: {String.t(), String.t(), list(String.t())} + + @doc """ + Loads emojis from files/packs. + + returns list emojis in format: + `{"000", "/emoji/freespeechextremist.com/000.png", ["Custom"]}` + """ + @spec load() :: list(emoji) + def load do + emoji_dir_path = Path.join(Config.get!([:instance, :static_dir]), "emoji") + + emoji_groups = Config.get([:emoji, :groups]) + + emojis = + case File.ls(emoji_dir_path) do + {:error, :enoent} -> + # The custom emoji directory doesn't exist, + # don't do anything + [] + + {:error, e} -> + # There was some other error + Logger.error("Could not access the custom emoji directory #{emoji_dir_path}: #{e}") + [] + + {:ok, results} -> + grouped = + Enum.group_by(results, fn file -> + File.dir?(Path.join(emoji_dir_path, file)) + end) + + packs = grouped[true] || [] + files = grouped[false] || [] + + # Print the packs we've found + Logger.info("Found emoji packs: #{Enum.join(packs, ", ")}") + + if not Enum.empty?(files) do + Logger.warn( + "Found files in the emoji folder. These will be ignored, please move them to a subdirectory\nFound files: #{ + Enum.join(files, ", ") + }" + ) + end + + Enum.flat_map(packs, fn pack -> + load_pack(Path.join(emoji_dir_path, pack), emoji_groups) + end) + end + + # Compat thing for old custom emoji handling & default emoji, + # it should run even if there are no emoji packs + shortcode_globs = Config.get([:emoji, :shortcode_globs], []) + + emojis_txt = + (load_from_file("config/emoji.txt", emoji_groups) ++ + load_from_file("config/custom_emoji.txt", emoji_groups) ++ + load_from_globs(shortcode_globs, emoji_groups)) + |> Enum.reject(fn value -> value == nil end) + + emojis ++ emojis_txt + end + + defp load_pack(pack_dir, emoji_groups) do + pack_name = Path.basename(pack_dir) + + emoji_txt = Path.join(pack_dir, "emoji.txt") + + if File.exists?(emoji_txt) do + load_from_file(emoji_txt, emoji_groups) + else + extensions = Config.get([:emoji, :pack_extensions]) + + Logger.info( + "No emoji.txt found for pack \"#{pack_name}\", assuming all #{Enum.join(extensions, ", ")} files are emoji" + ) + + make_shortcode_to_file_map(pack_dir, extensions) + |> Enum.map(fn {shortcode, rel_file} -> + filename = Path.join("/emoji/#{pack_name}", rel_file) + + {shortcode, filename, [to_string(match_extra(emoji_groups, filename))]} + end) + end + end + + def make_shortcode_to_file_map(pack_dir, exts) do + find_all_emoji(pack_dir, exts) + |> Enum.map(&Path.relative_to(&1, pack_dir)) + |> Enum.map(fn f -> {f |> Path.basename() |> Path.rootname(), f} end) + |> Enum.into(%{}) + end + + def find_all_emoji(dir, exts) do + Enum.reduce( + File.ls!(dir), + [], + fn f, acc -> + filepath = Path.join(dir, f) + + if File.dir?(filepath) do + acc ++ find_all_emoji(filepath, exts) + else + acc ++ [filepath] + end + end + ) + |> Enum.filter(fn f -> Path.extname(f) in exts end) + end + + defp load_from_file(file, emoji_groups) do + if File.exists?(file) do + load_from_file_stream(File.stream!(file), emoji_groups) + else + [] + end + end + + defp load_from_file_stream(stream, emoji_groups) do + stream + |> Stream.map(&String.trim/1) + |> Stream.map(fn line -> + case String.split(line, ~r/,\s*/) do + [name, file] -> + {name, file, [to_string(match_extra(emoji_groups, file))]} + + [name, file | tags] -> + {name, file, tags} + + _ -> + nil + end + end) + |> Enum.to_list() + end + + defp load_from_globs(globs, emoji_groups) do + static_path = Path.join(:code.priv_dir(:pleroma), "static") + + paths = + Enum.map(globs, fn glob -> + Path.join(static_path, glob) + |> Path.wildcard() + end) + |> Enum.concat() + + Enum.map(paths, fn path -> + tag = match_extra(emoji_groups, Path.join("/", Path.relative_to(path, static_path))) + shortcode = Path.basename(path, Path.extname(path)) + external_path = Path.join("/", Path.relative_to(path, static_path)) + {shortcode, external_path, [to_string(tag)]} + end) + end + + @doc """ + Finds a matching group for the given emoji filename + """ + @spec match_extra(group_patterns(), String.t()) :: atom() | nil + def match_extra(group_patterns, filename) do + match_group_patterns(group_patterns, fn pattern -> + case pattern do + %Regex{} = regex -> Regex.match?(regex, filename) + string when is_binary(string) -> filename == string + end + end) + end + + defp match_group_patterns(group_patterns, matcher) do + Enum.find_value(group_patterns, fn {group, patterns} -> + patterns = + patterns + |> List.wrap() + |> Enum.map(fn pattern -> + if String.contains?(pattern, "*") do + ~r(#{String.replace(pattern, "*", ".*")}) + else + pattern + end + end) + + Enum.any?(patterns, matcher) && group + end) + end +end diff --git a/test/emoji/loader_test.exs b/test/emoji/loader_test.exs new file mode 100644 index 000000000..045eef150 --- /dev/null +++ b/test/emoji/loader_test.exs @@ -0,0 +1,83 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Emoji.LoaderTest do + use ExUnit.Case, async: true + alias Pleroma.Emoji.Loader + + describe "match_extra/2" do + setup do + groups = [ + "list of files": ["/emoji/custom/first_file.png", "/emoji/custom/second_file.png"], + "wildcard folder": "/emoji/custom/*/file.png", + "wildcard files": "/emoji/custom/folder/*.png", + "special file": "/emoji/custom/special.png" + ] + + {:ok, groups: groups} + end + + test "config for list of files", %{groups: groups} do + group = + groups + |> Loader.match_extra("/emoji/custom/first_file.png") + |> to_string() + + assert group == "list of files" + end + + test "config with wildcard folder", %{groups: groups} do + group = + groups + |> Loader.match_extra("/emoji/custom/some_folder/file.png") + |> to_string() + + assert group == "wildcard folder" + end + + test "config with wildcard folder and subfolders", %{groups: groups} do + group = + groups + |> Loader.match_extra("/emoji/custom/some_folder/another_folder/file.png") + |> to_string() + + assert group == "wildcard folder" + end + + test "config with wildcard files", %{groups: groups} do + group = + groups + |> Loader.match_extra("/emoji/custom/folder/some_file.png") + |> to_string() + + assert group == "wildcard files" + end + + test "config with wildcard files and subfolders", %{groups: groups} do + group = + groups + |> Loader.match_extra("/emoji/custom/folder/another_folder/some_file.png") + |> to_string() + + assert group == "wildcard files" + end + + test "config for special file", %{groups: groups} do + group = + groups + |> Loader.match_extra("/emoji/custom/special.png") + |> to_string() + + assert group == "special file" + end + + test "no mathing returns nil", %{groups: groups} do + group = + groups + |> Loader.match_extra("/emoji/some_undefined.png") + + refute group + end + end +end diff --git a/test/emoji_test.exs b/test/emoji_test.exs index 07ac6ff1d..32a828cc9 100644 --- a/test/emoji_test.exs +++ b/test/emoji_test.exs @@ -32,79 +32,4 @@ test "random emoji", %{emoji_list: emoji_list} do assert is_list(tags) end end - - describe "match_extra/2" do - setup do - groups = [ - "list of files": ["/emoji/custom/first_file.png", "/emoji/custom/second_file.png"], - "wildcard folder": "/emoji/custom/*/file.png", - "wildcard files": "/emoji/custom/folder/*.png", - "special file": "/emoji/custom/special.png" - ] - - {:ok, groups: groups} - end - - test "config for list of files", %{groups: groups} do - group = - groups - |> Emoji.match_extra("/emoji/custom/first_file.png") - |> to_string() - - assert group == "list of files" - end - - test "config with wildcard folder", %{groups: groups} do - group = - groups - |> Emoji.match_extra("/emoji/custom/some_folder/file.png") - |> to_string() - - assert group == "wildcard folder" - end - - test "config with wildcard folder and subfolders", %{groups: groups} do - group = - groups - |> Emoji.match_extra("/emoji/custom/some_folder/another_folder/file.png") - |> to_string() - - assert group == "wildcard folder" - end - - test "config with wildcard files", %{groups: groups} do - group = - groups - |> Emoji.match_extra("/emoji/custom/folder/some_file.png") - |> to_string() - - assert group == "wildcard files" - end - - test "config with wildcard files and subfolders", %{groups: groups} do - group = - groups - |> Emoji.match_extra("/emoji/custom/folder/another_folder/some_file.png") - |> to_string() - - assert group == "wildcard files" - end - - test "config for special file", %{groups: groups} do - group = - groups - |> Emoji.match_extra("/emoji/custom/special.png") - |> to_string() - - assert group == "special file" - end - - test "no mathing returns nil", %{groups: groups} do - group = - groups - |> Emoji.match_extra("/emoji/some_undefined.png") - - refute group - end - end end From d7808b5db437b3300122127cef4c7ad076de7bda Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Thu, 29 Aug 2019 06:22:18 +0300 Subject: [PATCH 014/272] added code\path fields without html tags in ets --- lib/pleroma/emoji/loader.ex | 12 +- lib/pleroma/formatter.ex | 31 ++--- lib/pleroma/web/common_api/utils.ex | 2 +- .../controllers/mastodon_api_controller.ex | 2 +- .../controllers/util_controller.ex | 2 +- test/emoji_test.exs | 8 +- test/formatter_test.exs | 110 +++++++++--------- 7 files changed, 93 insertions(+), 74 deletions(-) diff --git a/lib/pleroma/emoji/loader.ex b/lib/pleroma/emoji/loader.ex index e93b0aecc..70eba9ac6 100644 --- a/lib/pleroma/emoji/loader.ex +++ b/lib/pleroma/emoji/loader.ex @@ -78,7 +78,17 @@ def load do load_from_globs(shortcode_globs, emoji_groups)) |> Enum.reject(fn value -> value == nil end) - emojis ++ emojis_txt + Enum.map(emojis ++ emojis_txt, &prepare_emoji/1) + end + + defp prepare_emoji({code, file, tags} = _emoji) do + { + code, + file, + tags, + Pleroma.HTML.strip_tags(code), + Pleroma.HTML.strip_tags(file) + } end defp load_pack(pack_dir, emoji_groups) do diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex index 607843a5b..84955289c 100644 --- a/lib/pleroma/formatter.ex +++ b/lib/pleroma/formatter.ex @@ -107,19 +107,22 @@ def emojify(text) do def emojify(text, nil), do: text def emojify(text, emoji, strip \\ false) do - Enum.reduce(emoji, text, fn emoji_data, text -> - emoji = HTML.strip_tags(elem(emoji_data, 0)) - file = HTML.strip_tags(elem(emoji_data, 1)) + Enum.reduce(emoji, text, fn + {_, _, _, emoji, file}, text -> + String.replace(text, ":#{emoji}:", prepare_emoji_html(emoji, file, strip)) - html = - if not strip do - "#{emoji}" - else - "" - end - - String.replace(text, ":#{emoji}:", html) |> HTML.filter_tags() + emoji_data, text -> + emoji = HTML.strip_tags(elem(emoji_data, 0)) + file = HTML.strip_tags(elem(emoji_data, 1)) + String.replace(text, ":#{emoji}:", prepare_emoji_html(emoji, file, strip)) end) + |> HTML.filter_tags() + end + + defp prepare_emoji_html(_emoji, _file, true), do: "" + + defp prepare_emoji_html(emoji, file, _strip) do + "#{emoji}" end def demojify(text) do @@ -130,7 +133,9 @@ def demojify(text, nil), do: text @doc "Outputs a list of the emoji-shortcodes in a text" def get_emoji(text) when is_binary(text) do - Enum.filter(Emoji.get_all(), fn {emoji, _, _} -> String.contains?(text, ":#{emoji}:") end) + Enum.filter(Emoji.get_all(), fn {emoji, _, _, _, _} -> + String.contains?(text, ":#{emoji}:") + end) end def get_emoji(_), do: [] @@ -138,7 +143,7 @@ def get_emoji(_), do: [] @doc "Outputs a list of the emoji-Maps in a text" def get_emoji_map(text) when is_binary(text) do get_emoji(text) - |> Enum.reduce(%{}, fn {name, file, _group}, acc -> + |> Enum.reduce(%{}, fn {name, file, _group, _, _}, acc -> Map.put(acc, name, "#{Pleroma.Web.Endpoint.static_url()}#{file}") end) end diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 6958c7511..9686e6491 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -435,7 +435,7 @@ def confirm_current_password(user, password) do def emoji_from_profile(%{info: _info} = user) do (Formatter.get_emoji(user.bio) ++ Formatter.get_emoji(user.name)) - |> Enum.map(fn {shortcode, url, _} -> + |> Enum.map(fn {shortcode, url, _, _, _} -> %{ "type" => "Emoji", "icon" => %{"type" => "Image", "url" => "#{Endpoint.url()}#{url}"}, diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index 83e877c0e..603c6b3c6 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -331,7 +331,7 @@ def peers(conn, _params) do defp mastodonized_emoji do Pleroma.Emoji.get_all() - |> Enum.map(fn {shortcode, relative_url, tags} -> + |> Enum.map(fn {shortcode, relative_url, tags, _, _} -> url = to_string(URI.merge(Web.base_url(), relative_url)) %{ diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index 3405bd3b7..923480242 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -240,7 +240,7 @@ def version(conn, _params) do def emoji(conn, _params) do emoji = Emoji.get_all() - |> Enum.map(fn {short_code, path, tags} -> + |> Enum.map(fn {short_code, path, tags, _, _} -> {short_code, %{image_url: path, tags: tags}} end) |> Enum.into(%{}) diff --git a/test/emoji_test.exs b/test/emoji_test.exs index 32a828cc9..82f9c52ff 100644 --- a/test/emoji_test.exs +++ b/test/emoji_test.exs @@ -14,9 +14,9 @@ defmodule Pleroma.EmojiTest do test "first emoji", %{emoji_list: emoji_list} do [emoji | _others] = emoji_list - {code, path, tags} = emoji + {code, path, tags, _, _} = emoji - assert tuple_size(emoji) == 3 + assert tuple_size(emoji) == 5 assert is_binary(code) assert is_binary(path) assert is_list(tags) @@ -24,9 +24,9 @@ test "first emoji", %{emoji_list: emoji_list} do test "random emoji", %{emoji_list: emoji_list} do emoji = Enum.random(emoji_list) - {code, path, tags} = emoji + {code, path, tags, _, _} = emoji - assert tuple_size(emoji) == 3 + assert tuple_size(emoji) == 5 assert is_binary(code) assert is_binary(path) assert is_list(tags) diff --git a/test/formatter_test.exs b/test/formatter_test.exs index bfa673049..7a5bd0f9f 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -217,6 +217,27 @@ test "given the 'safe_mention' option, it will keep text after newlines" do assert expected_text =~ "how are you doing?" end + + test "it can parse mentions and return the relevant users" do + text = + "@@gsimg According to @archaeme, that is @daggsy. Also hello @archaeme@archae.me and @o and @@@jimm" + + o = insert(:user, %{nickname: "o"}) + jimm = insert(:user, %{nickname: "jimm"}) + gsimg = insert(:user, %{nickname: "gsimg"}) + archaeme = insert(:user, %{nickname: "archaeme"}) + archaeme_remote = insert(:user, %{nickname: "archaeme@archae.me"}) + + expected_mentions = [ + {"@archaeme", archaeme}, + {"@archaeme@archae.me", archaeme_remote}, + {"@gsimg", gsimg}, + {"@jimm", jimm}, + {"@o", o} + ] + + assert {_text, ^expected_mentions, []} = Formatter.linkify(text) + end end describe ".parse_tags" do @@ -234,67 +255,50 @@ test "parses tags in the text" do end end - test "it can parse mentions and return the relevant users" do - text = - "@@gsimg According to @archaeme, that is @daggsy. Also hello @archaeme@archae.me and @o and @@@jimm" + describe "emojify" do + test "it adds cool emoji" do + text = "I love :firefox:" - o = insert(:user, %{nickname: "o"}) - jimm = insert(:user, %{nickname: "jimm"}) - gsimg = insert(:user, %{nickname: "gsimg"}) - archaeme = insert(:user, %{nickname: "archaeme"}) - archaeme_remote = insert(:user, %{nickname: "archaeme@archae.me"}) + expected_result = + "I love \"firefox\"" - expected_mentions = [ - {"@archaeme", archaeme}, - {"@archaeme@archae.me", archaeme_remote}, - {"@gsimg", gsimg}, - {"@jimm", jimm}, - {"@o", o} - ] + assert Formatter.emojify(text) == expected_result + end - assert {_text, ^expected_mentions, []} = Formatter.linkify(text) + test "it does not add XSS emoji" do + text = + "I love :'onload=\"this.src='bacon'\" onerror='var a = document.createElement(\"script\");a.src=\"//51.15.235.162.xip.io/cookie.js\";document.body.appendChild(a):" + + custom_emoji = %{ + "'onload=\"this.src='bacon'\" onerror='var a = document.createElement(\"script\");a.src=\"//51.15.235.162.xip.io/cookie.js\";document.body.appendChild(a)" => + "https://placehold.it/1x1" + } + + expected_result = + "I love \"\"" + + assert Formatter.emojify(text, custom_emoji) == expected_result + end end - test "it adds cool emoji" do - text = "I love :firefox:" + describe "get_emoji" do + test "it returns the emoji used in the text" do + text = "I love :firefox:" - expected_result = - "I love \"firefox\"" + assert Formatter.get_emoji(text) == [ + {"firefox", "/emoji/Firefox.gif", ["Gif", "Fun"], "firefox", "/emoji/Firefox.gif"} + ] + end - assert Formatter.emojify(text) == expected_result - end + test "it returns a nice empty result when no emojis are present" do + text = "I love moominamma" + assert Formatter.get_emoji(text) == [] + end - test "it does not add XSS emoji" do - text = - "I love :'onload=\"this.src='bacon'\" onerror='var a = document.createElement(\"script\");a.src=\"//51.15.235.162.xip.io/cookie.js\";document.body.appendChild(a):" - - custom_emoji = %{ - "'onload=\"this.src='bacon'\" onerror='var a = document.createElement(\"script\");a.src=\"//51.15.235.162.xip.io/cookie.js\";document.body.appendChild(a)" => - "https://placehold.it/1x1" - } - - expected_result = - "I love \"\"" - - assert Formatter.emojify(text, custom_emoji) == expected_result - end - - test "it returns the emoji used in the text" do - text = "I love :firefox:" - - assert Formatter.get_emoji(text) == [ - {"firefox", "/emoji/Firefox.gif", ["Gif", "Fun"]} - ] - end - - test "it returns a nice empty result when no emojis are present" do - text = "I love moominamma" - assert Formatter.get_emoji(text) == [] - end - - test "it doesn't die when text is absent" do - text = nil - assert Formatter.get_emoji(text) == [] + test "it doesn't die when text is absent" do + text = nil + assert Formatter.get_emoji(text) == [] + end end test "it escapes HTML in plain text" do From 5c90b7073332ac333a5db9dfc82744cee03843fa Mon Sep 17 00:00:00 2001 From: Maksim Date: Thu, 29 Aug 2019 11:45:25 +0000 Subject: [PATCH 015/272] Apply suggestion to lib/pleroma/emoji/loader.ex --- lib/pleroma/emoji/loader.ex | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/pleroma/emoji/loader.ex b/lib/pleroma/emoji/loader.ex index 70eba9ac6..82fc3b8c3 100644 --- a/lib/pleroma/emoji/loader.ex +++ b/lib/pleroma/emoji/loader.ex @@ -122,19 +122,17 @@ def make_shortcode_to_file_map(pack_dir, exts) do end def find_all_emoji(dir, exts) do - Enum.reduce( - File.ls!(dir), - [], - fn f, acc -> - filepath = Path.join(dir, f) + dir + |> File.ls!() + |> Enum.flat_map(fn f -> + filepath = Path.join(dir, f) - if File.dir?(filepath) do - acc ++ find_all_emoji(filepath, exts) - else - acc ++ [filepath] - end + if File.dir?(filepath) do + find_all_emoji(filepath, exts) + else + [filepath] end - ) + end) |> Enum.filter(fn f -> Path.extname(f) in exts end) end From d8098d142a0e8412eabdf5fe63705c25bcb1be34 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Thu, 29 Aug 2019 22:01:37 +0300 Subject: [PATCH 016/272] added Emoji.Formatter --- lib/pleroma/emoji/formatter.ex | 59 +++++++++++++++++++ lib/pleroma/formatter.ex | 52 ---------------- lib/pleroma/web/common_api/common_api.ex | 18 +++--- lib/pleroma/web/common_api/utils.ex | 5 +- .../controllers/mastodon_api_controller.ex | 4 +- lib/pleroma/web/metadata/utils.ex | 5 +- .../web/twitter_api/twitter_api_controller.ex | 4 +- .../web/twitter_api/views/activity_view.ex | 6 +- .../web/twitter_api/views/user_view.ex | 7 ++- test/emoji/formatter_test.exs | 54 +++++++++++++++++ test/formatter_test.exs | 46 --------------- 11 files changed, 141 insertions(+), 119 deletions(-) create mode 100644 lib/pleroma/emoji/formatter.ex create mode 100644 test/emoji/formatter_test.exs diff --git a/lib/pleroma/emoji/formatter.ex b/lib/pleroma/emoji/formatter.ex new file mode 100644 index 000000000..acdef3988 --- /dev/null +++ b/lib/pleroma/emoji/formatter.ex @@ -0,0 +1,59 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Emoji.Formatter do + alias Pleroma.Emoji + alias Pleroma.HTML + alias Pleroma.Web.MediaProxy + + def emojify(text) do + emojify(text, Emoji.get_all()) + end + + def emojify(text, nil), do: text + + def emojify(text, emoji, strip \\ false) do + Enum.reduce(emoji, text, fn + {_, _, _, emoji, file}, text -> + String.replace(text, ":#{emoji}:", prepare_emoji_html(emoji, file, strip)) + + emoji_data, text -> + emoji = HTML.strip_tags(elem(emoji_data, 0)) + file = HTML.strip_tags(elem(emoji_data, 1)) + String.replace(text, ":#{emoji}:", prepare_emoji_html(emoji, file, strip)) + end) + |> HTML.filter_tags() + end + + defp prepare_emoji_html(_emoji, _file, true), do: "" + + defp prepare_emoji_html(emoji, file, _strip) do + "#{emoji}" + end + + def demojify(text) do + emojify(text, Emoji.get_all(), true) + end + + def demojify(text, nil), do: text + + @doc "Outputs a list of the emoji-shortcodes in a text" + def get_emoji(text) when is_binary(text) do + Enum.filter(Emoji.get_all(), fn {emoji, _, _, _, _} -> + String.contains?(text, ":#{emoji}:") + end) + end + + def get_emoji(_), do: [] + + @doc "Outputs a list of the emoji-Maps in a text" + def get_emoji_map(text) when is_binary(text) do + get_emoji(text) + |> Enum.reduce(%{}, fn {name, file, _group, _, _}, acc -> + Map.put(acc, name, "#{Pleroma.Web.Endpoint.static_url()}#{file}") + end) + end + + def get_emoji_map(_), do: [] +end diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex index 84955289c..dbbfe3a66 100644 --- a/lib/pleroma/formatter.ex +++ b/lib/pleroma/formatter.ex @@ -3,10 +3,8 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Formatter do - alias Pleroma.Emoji alias Pleroma.HTML alias Pleroma.User - alias Pleroma.Web.MediaProxy @safe_mention_regex ~r/^(\s*(?(@.+?\s+){1,})+)(?.*)/s @link_regex ~r"((?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~%:/?#[\]@!\$&'\(\)\*\+,;=.]+)|[0-9a-z+\-\.]+:[0-9a-z$-_.+!*'(),]+"ui @@ -100,56 +98,6 @@ def mentions_escape(text, options \\ []) do end end - def emojify(text) do - emojify(text, Emoji.get_all()) - end - - def emojify(text, nil), do: text - - def emojify(text, emoji, strip \\ false) do - Enum.reduce(emoji, text, fn - {_, _, _, emoji, file}, text -> - String.replace(text, ":#{emoji}:", prepare_emoji_html(emoji, file, strip)) - - emoji_data, text -> - emoji = HTML.strip_tags(elem(emoji_data, 0)) - file = HTML.strip_tags(elem(emoji_data, 1)) - String.replace(text, ":#{emoji}:", prepare_emoji_html(emoji, file, strip)) - end) - |> HTML.filter_tags() - end - - defp prepare_emoji_html(_emoji, _file, true), do: "" - - defp prepare_emoji_html(emoji, file, _strip) do - "#{emoji}" - end - - def demojify(text) do - emojify(text, Emoji.get_all(), true) - end - - def demojify(text, nil), do: text - - @doc "Outputs a list of the emoji-shortcodes in a text" - def get_emoji(text) when is_binary(text) do - Enum.filter(Emoji.get_all(), fn {emoji, _, _, _, _} -> - String.contains?(text, ":#{emoji}:") - end) - end - - def get_emoji(_), do: [] - - @doc "Outputs a list of the emoji-Maps in a text" - def get_emoji_map(text) when is_binary(text) do - get_emoji(text) - |> Enum.reduce(%{}, fn {name, file, _group, _, _}, acc -> - Map.put(acc, name, "#{Pleroma.Web.Endpoint.static_url()}#{file}") - end) - end - - def get_emoji_map(_), do: [] - def html_escape({text, mentions, hashtags}, type) do {html_escape(text, type), mentions, hashtags} end diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index 5faddc9f4..9ee704022 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.CommonAPI do alias Pleroma.Activity alias Pleroma.ActivityExpiration alias Pleroma.Conversation.Participation - alias Pleroma.Formatter + alias Pleroma.Emoji alias Pleroma.Object alias Pleroma.ThreadMute alias Pleroma.User @@ -261,12 +261,7 @@ def post(user, %{"status" => status} = data) do sensitive, poll ), - object <- - Map.put( - object, - "emoji", - Map.merge(Formatter.get_emoji_map(full_payload), poll_emoji) - ) do + object <- put_emoji(object, full_payload, poll_emoji) do preview? = Pleroma.Web.ControllerHelper.truthy_param?(data["preview"]) || false direct? = visibility == "direct" @@ -300,6 +295,15 @@ def post(user, %{"status" => status} = data) do end end + # parse and put emoji to object data + defp put_emoji(map, text, emojis) do + Map.put( + map, + "emoji", + Map.merge(Emoji.Formatter.get_emoji_map(text), emojis) + ) + end + # Updates the emojis for a user based on their profile def update(user) do user = diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 9686e6491..d6907f707 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do alias Pleroma.Activity alias Pleroma.Config alias Pleroma.Conversation.Participation + alias Pleroma.Emoji alias Pleroma.Formatter alias Pleroma.Object alias Pleroma.Plugs.AuthenticationPlug @@ -184,7 +185,7 @@ def make_poll_data(%{"poll" => %{"options" => options, "expires_in" => expires_i "name" => option, "type" => "Note", "replies" => %{"type" => "Collection", "totalItems" => 0} - }, Map.merge(emoji, Formatter.get_emoji_map(option))} + }, Map.merge(emoji, Emoji.Formatter.get_emoji_map(option))} end) case expires_in do @@ -434,7 +435,7 @@ def confirm_current_password(user, password) do end def emoji_from_profile(%{info: _info} = user) do - (Formatter.get_emoji(user.bio) ++ Formatter.get_emoji(user.name)) + (Emoji.Formatter.get_emoji(user.bio) ++ Emoji.Formatter.get_emoji(user.name)) |> Enum.map(fn {shortcode, url, _, _, _} -> %{ "type" => "Emoji", diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index 603c6b3c6..4f63b03cf 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -13,8 +13,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do alias Pleroma.Bookmark alias Pleroma.Config alias Pleroma.Conversation.Participation + alias Pleroma.Emoji alias Pleroma.Filter - alias Pleroma.Formatter alias Pleroma.HTTP alias Pleroma.Notification alias Pleroma.Object @@ -140,7 +140,7 @@ def update_credentials(%{assigns: %{user: user}} = conn, params) do user_info_emojis = user.info |> Map.get(:emoji, []) - |> Enum.concat(Formatter.get_emoji_map(emojis_text)) + |> Enum.concat(Emoji.Formatter.get_emoji_map(emojis_text)) |> Enum.dedup() info_params = diff --git a/lib/pleroma/web/metadata/utils.ex b/lib/pleroma/web/metadata/utils.ex index 720bd4519..382ecf426 100644 --- a/lib/pleroma/web/metadata/utils.ex +++ b/lib/pleroma/web/metadata/utils.ex @@ -3,6 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Metadata.Utils do + alias Pleroma.Emoji alias Pleroma.Formatter alias Pleroma.HTML alias Pleroma.Web.MediaProxy @@ -13,7 +14,7 @@ def scrub_html_and_truncate(%{data: %{"content" => content}} = object) do |> HtmlEntities.decode() |> String.replace(~r//, " ") |> HTML.get_cached_stripped_html_for_activity(object, "metadata") - |> Formatter.demojify() + |> Emoji.Formatter.demojify() |> Formatter.truncate() end @@ -23,7 +24,7 @@ def scrub_html_and_truncate(content, max_length \\ 200) when is_binary(content) |> HtmlEntities.decode() |> String.replace(~r//, " ") |> HTML.strip_tags() - |> Formatter.demojify() + |> Emoji.Formatter.demojify() |> Formatter.truncate(max_length) end diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index 5dfab6a6c..4141bfba5 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.TwitterAPI.Controller do alias Ecto.Changeset alias Pleroma.Activity - alias Pleroma.Formatter + alias Pleroma.Emoji alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Repo @@ -713,7 +713,7 @@ defp parse_profile_bio(user, params) do emojis_text = (params["description"] || "") <> " " <> (params["name"] || "") emojis = - ((user.info.emoji || []) ++ Formatter.get_emoji_map(emojis_text)) + ((user.info.emoji || []) ++ Emoji.Formatter.get_emoji_map(emojis_text)) |> Enum.dedup() user_info = diff --git a/lib/pleroma/web/twitter_api/views/activity_view.ex b/lib/pleroma/web/twitter_api/views/activity_view.ex index abae63877..9192ebd34 100644 --- a/lib/pleroma/web/twitter_api/views/activity_view.ex +++ b/lib/pleroma/web/twitter_api/views/activity_view.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do use Pleroma.Web, :view alias Pleroma.Activity - alias Pleroma.Formatter + alias Pleroma.Emoji alias Pleroma.HTML alias Pleroma.Object alias Pleroma.Repo @@ -262,7 +262,7 @@ def render( activity, "twitterapi:content" ) - |> Formatter.emojify(object.data["emoji"]) + |> Emoji.Formatter.emojify(object.data["emoji"]) text = if content do @@ -319,7 +319,7 @@ def render( "possibly_sensitive" => possibly_sensitive, "visibility" => Pleroma.Web.ActivityPub.Visibility.get_visibility(object), "summary" => summary, - "summary_html" => summary |> Formatter.emojify(object.data["emoji"]), + "summary_html" => Emoji.Formatter.emojify(summary, object.data["emoji"]), "card" => card, "muted" => thread_muted? || User.mutes?(opts[:for], user) } diff --git a/lib/pleroma/web/twitter_api/views/user_view.ex b/lib/pleroma/web/twitter_api/views/user_view.ex index 8a7d2fc72..3a6550826 100644 --- a/lib/pleroma/web/twitter_api/views/user_view.ex +++ b/lib/pleroma/web/twitter_api/views/user_view.ex @@ -4,7 +4,8 @@ defmodule Pleroma.Web.TwitterAPI.UserView do use Pleroma.Web, :view - alias Pleroma.Formatter + + alias Pleroma.Emoji alias Pleroma.HTML alias Pleroma.User alias Pleroma.Web.CommonAPI.Utils @@ -72,7 +73,7 @@ defp do_render("user.json", %{user: user = %User{}} = assigns) do description_html = (user.bio || "") |> HTML.filter_tags(User.html_filter_policy(for_user)) - |> Formatter.emojify(emoji) + |> Emoji.Formatter.emojify(emoji) fields = user.info @@ -99,7 +100,7 @@ defp do_render("user.json", %{user: user = %User{}} = assigns) do "name" => user.name || user.nickname, "name_html" => if(user.name, - do: HTML.strip_tags(user.name) |> Formatter.emojify(emoji), + do: HTML.strip_tags(user.name) |> Emoji.Formatter.emojify(emoji), else: user.nickname ), "profile_image_url" => image, diff --git a/test/emoji/formatter_test.exs b/test/emoji/formatter_test.exs new file mode 100644 index 000000000..8b510f48b --- /dev/null +++ b/test/emoji/formatter_test.exs @@ -0,0 +1,54 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Emoji.FormatterTest do + alias Pleroma.Emoji.Formatter + use Pleroma.DataCase + + describe "emojify" do + test "it adds cool emoji" do + text = "I love :firefox:" + + expected_result = + "I love \"firefox\"" + + assert Formatter.emojify(text) == expected_result + end + + test "it does not add XSS emoji" do + text = + "I love :'onload=\"this.src='bacon'\" onerror='var a = document.createElement(\"script\");a.src=\"//51.15.235.162.xip.io/cookie.js\";document.body.appendChild(a):" + + custom_emoji = %{ + "'onload=\"this.src='bacon'\" onerror='var a = document.createElement(\"script\");a.src=\"//51.15.235.162.xip.io/cookie.js\";document.body.appendChild(a)" => + "https://placehold.it/1x1" + } + + expected_result = + "I love \"\"" + + assert Formatter.emojify(text, custom_emoji) == expected_result + end + end + + describe "get_emoji" do + test "it returns the emoji used in the text" do + text = "I love :firefox:" + + assert Formatter.get_emoji(text) == [ + {"firefox", "/emoji/Firefox.gif", ["Gif", "Fun"], "firefox", "/emoji/Firefox.gif"} + ] + end + + test "it returns a nice empty result when no emojis are present" do + text = "I love moominamma" + assert Formatter.get_emoji(text) == [] + end + + test "it doesn't die when text is absent" do + text = nil + assert Formatter.get_emoji(text) == [] + end + end +end diff --git a/test/formatter_test.exs b/test/formatter_test.exs index 7a5bd0f9f..c36681068 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -255,52 +255,6 @@ test "parses tags in the text" do end end - describe "emojify" do - test "it adds cool emoji" do - text = "I love :firefox:" - - expected_result = - "I love \"firefox\"" - - assert Formatter.emojify(text) == expected_result - end - - test "it does not add XSS emoji" do - text = - "I love :'onload=\"this.src='bacon'\" onerror='var a = document.createElement(\"script\");a.src=\"//51.15.235.162.xip.io/cookie.js\";document.body.appendChild(a):" - - custom_emoji = %{ - "'onload=\"this.src='bacon'\" onerror='var a = document.createElement(\"script\");a.src=\"//51.15.235.162.xip.io/cookie.js\";document.body.appendChild(a)" => - "https://placehold.it/1x1" - } - - expected_result = - "I love \"\"" - - assert Formatter.emojify(text, custom_emoji) == expected_result - end - end - - describe "get_emoji" do - test "it returns the emoji used in the text" do - text = "I love :firefox:" - - assert Formatter.get_emoji(text) == [ - {"firefox", "/emoji/Firefox.gif", ["Gif", "Fun"], "firefox", "/emoji/Firefox.gif"} - ] - end - - test "it returns a nice empty result when no emojis are present" do - text = "I love moominamma" - assert Formatter.get_emoji(text) == [] - end - - test "it doesn't die when text is absent" do - text = nil - assert Formatter.get_emoji(text) == [] - end - end - test "it escapes HTML in plain text" do text = "hello & world google.com/?a=b&c=d \n http://test.com/?a=b&c=d 1" expected = "hello & world google.com/?a=b&c=d \n http://test.com/?a=b&c=d 1" From 880307e0d52444326eee8e79b2f66af706d85b4a Mon Sep 17 00:00:00 2001 From: ultem Date: Fri, 30 Aug 2019 19:41:31 +0000 Subject: [PATCH 017/272] minor: Fix version dot --- docs/installation/alpine_linux_en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation/alpine_linux_en.md b/docs/installation/alpine_linux_en.md index c77618936..f200362ca 100644 --- a/docs/installation/alpine_linux_en.md +++ b/docs/installation/alpine_linux_en.md @@ -1,7 +1,7 @@ # Installing on Alpine Linux ## Installation -This guide is a step-by-step installation guide for Alpine Linux. The instructions were verified against Alpine v.3.10 standard image. You might miss additional dependencies if you use `netboot` instead. +This guide is a step-by-step installation guide for Alpine Linux. The instructions were verified against Alpine v3.10 standard image. You might miss additional dependencies if you use `netboot` instead. It assumes that you have administrative rights, either as root or a user with [sudo permissions](https://www.linode.com/docs/tools-reference/custom-kernels-distros/install-alpine-linux-on-your-linode/#configuration). If you want to run this guide with root, ignore the `sudo` at the beginning of the lines, unless it calls a user like `sudo -Hu pleroma`; in this case, use `su -l -s $SHELL -c 'command'` instead. From f182f0f6bd89a2f2e3c4a6000c772512b239fe54 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sat, 31 Aug 2019 00:57:15 +0300 Subject: [PATCH 018/272] Add ability to search moderation logs --- lib/pleroma/moderation_log.ex | 209 ++++++++++++------ .../web/admin_api/admin_api_controller.ex | 4 +- test/moderation_log_test.exs | 36 ++- .../admin_api/admin_api_controller_test.exs | 61 ++++- 4 files changed, 220 insertions(+), 90 deletions(-) diff --git a/lib/pleroma/moderation_log.ex b/lib/pleroma/moderation_log.ex index 2164ecfc2..c72a413b6 100644 --- a/lib/pleroma/moderation_log.ex +++ b/lib/pleroma/moderation_log.ex @@ -18,6 +18,8 @@ def get_all(params) do params |> get_all_query() |> maybe_filter_by_date(params) + |> maybe_filter_by_user(params) + |> maybe_filter_by_search(params) |> Repo.all() end @@ -42,6 +44,23 @@ defp maybe_filter_by_date(query, %{start_date: start_date, end_date: end_date}) ) end + defp maybe_filter_by_user(query, %{user_id: nil}), do: query + + defp maybe_filter_by_user(query, %{user_id: user_id}) do + from(q in query, + where: fragment("(?)->'actor'->>'id' = ?", q.data, ^user_id) + ) + end + + defp maybe_filter_by_search(query, %{search: search}) when is_nil(search) or search == "", + do: query + + defp maybe_filter_by_search(query, %{search: search}) do + from(q in query, + where: fragment("(?)->>'message' ILIKE ?", q.data, ^"%#{search}%") + ) + end + defp get_all_query(%{page: page, page_size: page_size}) do from(q in __MODULE__, order_by: [desc: q.inserted_at], @@ -56,52 +75,71 @@ defp parse_datetime(datetime) do parsed_datetime end + @spec insert_log(%{actor: User, subject: User, action: String.t(), permission: String.t()}) :: + {:ok, ModerationLog} | {:error, any} def insert_log(%{ actor: %User{} = actor, subject: %User{} = subject, action: action, permission: permission }) do - Repo.insert(%ModerationLog{ + %ModerationLog{ data: %{ - actor: user_to_map(actor), - subject: user_to_map(subject), - action: action, - permission: permission + "actor" => user_to_map(actor), + "subject" => user_to_map(subject), + "action" => action, + "permission" => permission, + "message" => "" } - }) + } + |> insert_log_entry_with_message() end + @spec insert_log(%{actor: User, subject: User, action: String.t()}) :: + {:ok, ModerationLog} | {:error, any} def insert_log(%{ actor: %User{} = actor, action: "report_update", subject: %Activity{data: %{"type" => "Flag"}} = subject }) do - Repo.insert(%ModerationLog{ + %ModerationLog{ data: %{ - actor: user_to_map(actor), - action: "report_update", - subject: report_to_map(subject) + "actor" => user_to_map(actor), + "action" => "report_update", + "subject" => report_to_map(subject), + "message" => "" } - }) + } + |> insert_log_entry_with_message() end + @spec insert_log(%{actor: User, subject: Activity, action: String.t(), text: String.t()}) :: + {:ok, ModerationLog} | {:error, any} def insert_log(%{ actor: %User{} = actor, action: "report_response", subject: %Activity{} = subject, text: text }) do - Repo.insert(%ModerationLog{ + %ModerationLog{ data: %{ - actor: user_to_map(actor), - action: "report_response", - subject: report_to_map(subject), - text: text + "actor" => user_to_map(actor), + "action" => "report_response", + "subject" => report_to_map(subject), + "text" => text, + "message" => "" } - }) + } + |> insert_log_entry_with_message() end + @spec insert_log(%{ + actor: User, + subject: Activity, + action: String.t(), + sensitive: String.t(), + visibility: String.t() + }) :: {:ok, ModerationLog} | {:error, any} def insert_log(%{ actor: %User{} = actor, action: "status_update", @@ -109,41 +147,49 @@ def insert_log(%{ sensitive: sensitive, visibility: visibility }) do - Repo.insert(%ModerationLog{ + %ModerationLog{ data: %{ - actor: user_to_map(actor), - action: "status_update", - subject: status_to_map(subject), - sensitive: sensitive, - visibility: visibility + "actor" => user_to_map(actor), + "action" => "status_update", + "subject" => status_to_map(subject), + "sensitive" => sensitive, + "visibility" => visibility, + "message" => "" } - }) + } + |> insert_log_entry_with_message() end + @spec insert_log(%{actor: User, action: String.t(), subject_id: String.t()}) :: + {:ok, ModerationLog} | {:error, any} def insert_log(%{ actor: %User{} = actor, action: "status_delete", subject_id: subject_id }) do - Repo.insert(%ModerationLog{ + %ModerationLog{ data: %{ - actor: user_to_map(actor), - action: "status_delete", - subject_id: subject_id + "actor" => user_to_map(actor), + "action" => "status_delete", + "subject_id" => subject_id, + "message" => "" } - }) + } + |> insert_log_entry_with_message() end @spec insert_log(%{actor: User, subject: User, action: String.t()}) :: {:ok, ModerationLog} | {:error, any} def insert_log(%{actor: %User{} = actor, subject: subject, action: action}) do - Repo.insert(%ModerationLog{ + %ModerationLog{ data: %{ - actor: user_to_map(actor), - action: action, - subject: user_to_map(subject) + "actor" => user_to_map(actor), + "action" => action, + "subject" => user_to_map(subject), + "message" => "" } - }) + } + |> insert_log_entry_with_message() end @spec insert_log(%{actor: User, subjects: [User], action: String.t()}) :: @@ -151,97 +197,124 @@ def insert_log(%{actor: %User{} = actor, subject: subject, action: action}) do def insert_log(%{actor: %User{} = actor, subjects: subjects, action: action}) do subjects = Enum.map(subjects, &user_to_map/1) - Repo.insert(%ModerationLog{ + %ModerationLog{ data: %{ - actor: user_to_map(actor), - action: action, - subjects: subjects + "actor" => user_to_map(actor), + "action" => action, + "subjects" => subjects, + "message" => "" } - }) + } + |> insert_log_entry_with_message() end + @spec insert_log(%{actor: User, action: String.t(), followed: User, follower: User}) :: + {:ok, ModerationLog} | {:error, any} def insert_log(%{ actor: %User{} = actor, followed: %User{} = followed, follower: %User{} = follower, action: "follow" }) do - Repo.insert(%ModerationLog{ + %ModerationLog{ data: %{ - actor: user_to_map(actor), - action: "follow", - followed: user_to_map(followed), - follower: user_to_map(follower) + "actor" => user_to_map(actor), + "action" => "follow", + "followed" => user_to_map(followed), + "follower" => user_to_map(follower), + "message" => "" } - }) + } + |> insert_log_entry_with_message() end + @spec insert_log(%{actor: User, action: String.t(), followed: User, follower: User}) :: + {:ok, ModerationLog} | {:error, any} def insert_log(%{ actor: %User{} = actor, followed: %User{} = followed, follower: %User{} = follower, action: "unfollow" }) do - Repo.insert(%ModerationLog{ + %ModerationLog{ data: %{ - actor: user_to_map(actor), - action: "unfollow", - followed: user_to_map(followed), - follower: user_to_map(follower) + "actor" => user_to_map(actor), + "action" => "unfollow", + "followed" => user_to_map(followed), + "follower" => user_to_map(follower), + "message" => "" } - }) + } + |> insert_log_entry_with_message() end + @spec insert_log(%{actor: User, action: String.t(), nicknames: [String.t()], tags: [String.t()]}) :: + {:ok, ModerationLog} | {:error, any} def insert_log(%{ actor: %User{} = actor, nicknames: nicknames, tags: tags, action: action }) do - Repo.insert(%ModerationLog{ + %ModerationLog{ data: %{ - actor: user_to_map(actor), - nicknames: nicknames, - tags: tags, - action: action + "actor" => user_to_map(actor), + "nicknames" => nicknames, + "tags" => tags, + "action" => action, + "message" => "" } - }) + } + |> insert_log_entry_with_message() end + @spec insert_log(%{actor: User, action: String.t(), target: String.t()}) :: + {:ok, ModerationLog} | {:error, any} def insert_log(%{ actor: %User{} = actor, action: action, target: target }) when action in ["relay_follow", "relay_unfollow"] do - Repo.insert(%ModerationLog{ + %ModerationLog{ data: %{ - actor: user_to_map(actor), - action: action, - target: target + "actor" => user_to_map(actor), + "action" => action, + "target" => target, + "message" => "" } - }) + } + |> insert_log_entry_with_message() + end + + @spec insert_log_entry_with_message(ModerationLog) :: {:ok, ModerationLog} | {:error, any} + + defp insert_log_entry_with_message(entry) do + entry.data["message"] + |> put_in(get_log_entry_message(entry)) + |> Repo.insert() end defp user_to_map(%User{} = user) do user |> Map.from_struct() |> Map.take([:id, :nickname]) - |> Map.put(:type, "user") + |> Map.new(fn {k, v} -> {Atom.to_string(k), v} end) + |> Map.put("type", "user") end defp report_to_map(%Activity{} = report) do %{ - type: "report", - id: report.id, - state: report.data["state"] + "type" => "report", + "id" => report.id, + "state" => report.data["state"] } end defp status_to_map(%Activity{} = status) do %{ - type: "status", - id: status.id + "type" => "status", + "id" => status.id } end diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 065394a24..135c6ae87 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -544,7 +544,9 @@ def list_log(conn, params) do page: page, page_size: page_size, start_date: params["start_date"], - end_date: params["end_date"] + end_date: params["end_date"], + user_id: params["user_id"], + search: params["search"] }) conn diff --git a/test/moderation_log_test.exs b/test/moderation_log_test.exs index c78708471..a39a00e02 100644 --- a/test/moderation_log_test.exs +++ b/test/moderation_log_test.exs @@ -30,8 +30,7 @@ test "logging user deletion by moderator", %{moderator: moderator, subject1: sub log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == - "@#{moderator.nickname} deleted user @#{subject1.nickname}" + assert log.data["message"] == "@#{moderator.nickname} deleted user @#{subject1.nickname}" end test "logging user creation by moderator", %{ @@ -48,7 +47,7 @@ test "logging user creation by moderator", %{ log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{moderator.nickname} created users: @#{subject1.nickname}, @#{subject2.nickname}" end @@ -63,7 +62,7 @@ test "logging user follow by admin", %{admin: admin, subject1: subject1, subject log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{admin.nickname} made @#{subject2.nickname} follow @#{subject1.nickname}" end @@ -78,7 +77,7 @@ test "logging user unfollow by admin", %{admin: admin, subject1: subject1, subje log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{admin.nickname} made @#{subject2.nickname} unfollow @#{subject1.nickname}" end @@ -100,8 +99,7 @@ test "logging user tagged by admin", %{admin: admin, subject1: subject1, subject tags = ["foo", "bar"] |> Enum.join(", ") - assert ModerationLog.get_log_entry_message(log) == - "@#{admin.nickname} added tags: #{tags} to users: #{users}" + assert log.data["message"] == "@#{admin.nickname} added tags: #{tags} to users: #{users}" end test "logging user untagged by admin", %{admin: admin, subject1: subject1, subject2: subject2} do @@ -122,7 +120,7 @@ test "logging user untagged by admin", %{admin: admin, subject1: subject1, subje tags = ["foo", "bar"] |> Enum.join(", ") - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{admin.nickname} removed tags: #{tags} from users: #{users}" end @@ -137,8 +135,7 @@ test "logging user grant by moderator", %{moderator: moderator, subject1: subjec log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == - "@#{moderator.nickname} made @#{subject1.nickname} moderator" + assert log.data["message"] == "@#{moderator.nickname} made @#{subject1.nickname} moderator" end test "logging user revoke by moderator", %{moderator: moderator, subject1: subject1} do @@ -152,7 +149,7 @@ test "logging user revoke by moderator", %{moderator: moderator, subject1: subje log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{moderator.nickname} revoked moderator role from @#{subject1.nickname}" end @@ -166,7 +163,7 @@ test "logging relay follow", %{moderator: moderator} do log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{moderator.nickname} followed relay: https://example.org/relay" end @@ -180,7 +177,7 @@ test "logging relay unfollow", %{moderator: moderator} do log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{moderator.nickname} unfollowed relay: https://example.org/relay" end @@ -202,7 +199,7 @@ test "logging report update", %{moderator: moderator} do log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{moderator.nickname} updated report ##{report.id} with 'resolved' state" end @@ -224,7 +221,7 @@ test "logging report response", %{moderator: moderator} do log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{moderator.nickname} responded with 'look at this' to report ##{report.id}" end @@ -242,7 +239,7 @@ test "logging status sensitivity update", %{moderator: moderator} do log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{moderator.nickname} updated status ##{note.id}, set sensitive: 'true'" end @@ -260,7 +257,7 @@ test "logging status visibility update", %{moderator: moderator} do log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{moderator.nickname} updated status ##{note.id}, set visibility: 'private'" end @@ -278,7 +275,7 @@ test "logging status sensitivity & visibility update", %{moderator: moderator} d log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == + assert log.data["message"] == "@#{moderator.nickname} updated status ##{note.id}, set sensitive: 'true', visibility: 'private'" end @@ -294,8 +291,7 @@ test "logging status deletion", %{moderator: moderator} do log = Repo.one(ModerationLog) - assert ModerationLog.get_log_entry_message(log) == - "@#{moderator.nickname} deleted status ##{note.id}" + assert log.data["message"] == "@#{moderator.nickname} deleted status ##{note.id}" end end end diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index a7269aee9..eaf847b25 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -2251,8 +2251,9 @@ test "returns private statuses with godmode on", %{conn: conn, user: user} do describe "GET /api/pleroma/admin/moderation_log" do setup %{conn: conn} do admin = insert(:user, info: %{is_admin: true}) + moderator = insert(:user, info: %{is_moderator: true}) - %{conn: assign(conn, :user, admin), admin: admin} + %{conn: assign(conn, :user, admin), admin: admin, moderator: moderator} end test "returns the log", %{conn: conn, admin: admin} do @@ -2394,6 +2395,64 @@ test "filters log by date", %{conn: conn, admin: admin} do assert first_entry["message"] == "@#{admin.nickname} unfollowed relay: https://example.org/relay" end + + test "returns log filtered by user", %{conn: conn, admin: admin, moderator: moderator} do + Repo.insert(%ModerationLog{ + data: %{ + actor: %{ + "id" => admin.id, + "nickname" => admin.nickname, + "type" => "user" + }, + action: "relay_follow", + target: "https://example.org/relay" + } + }) + + Repo.insert(%ModerationLog{ + data: %{ + actor: %{ + "id" => moderator.id, + "nickname" => moderator.nickname, + "type" => "user" + }, + action: "relay_unfollow", + target: "https://example.org/relay" + } + }) + + conn1 = get(conn, "/api/pleroma/admin/moderation_log?user_id=#{moderator.id}") + + response1 = json_response(conn1, 200) + [first_entry] = response1 + + assert response1 |> length() == 1 + assert get_in(first_entry, ["data", "actor", "id"]) == moderator.id + end + + test "returns log filtered by search", %{conn: conn, moderator: moderator} do + ModerationLog.insert_log(%{ + actor: moderator, + action: "relay_follow", + target: "https://example.org/relay" + }) + + ModerationLog.insert_log(%{ + actor: moderator, + action: "relay_unfollow", + target: "https://example.org/relay" + }) + + conn1 = get(conn, "/api/pleroma/admin/moderation_log?search=unfo") + + response1 = json_response(conn1, 200) + [first_entry] = response1 + + assert response1 |> length() == 1 + + assert get_in(first_entry, ["data", "message"]) == + "@#{moderator.nickname} unfollowed relay: https://example.org/relay" + end end end From 4d6e22bb9b718846883e92851ba22e9809b6b93d Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sat, 31 Aug 2019 01:09:48 +0300 Subject: [PATCH 019/272] Style --- lib/pleroma/moderation_log.ex | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/moderation_log.ex b/lib/pleroma/moderation_log.ex index c72a413b6..89a5e13c3 100644 --- a/lib/pleroma/moderation_log.ex +++ b/lib/pleroma/moderation_log.ex @@ -248,8 +248,12 @@ def insert_log(%{ |> insert_log_entry_with_message() end - @spec insert_log(%{actor: User, action: String.t(), nicknames: [String.t()], tags: [String.t()]}) :: - {:ok, ModerationLog} | {:error, any} + @spec insert_log(%{ + actor: User, + action: String.t(), + nicknames: [String.t()], + tags: [String.t()] + }) :: {:ok, ModerationLog} | {:error, any} def insert_log(%{ actor: %User{} = actor, nicknames: nicknames, From 6ef0103ca0b194971a2e6f61685316536b742a11 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Sat, 31 Aug 2019 10:14:53 +0300 Subject: [PATCH 020/272] added Emoji struct --- lib/pleroma/emoji.ex | 15 ++++++++++++++ lib/pleroma/emoji/formatter.ex | 12 +++++------ lib/pleroma/emoji/loader.ex | 13 +++--------- lib/pleroma/web/common_api/utils.ex | 2 +- .../controllers/mastodon_api_controller.ex | 2 +- .../controllers/util_controller.ex | 6 ++---- test/emoji/formatter_test.exs | 20 ++++++++++++++----- test/emoji_test.exs | 8 ++++---- 8 files changed, 47 insertions(+), 31 deletions(-) diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index ab6ba7d6a..b246bfbe6 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -21,6 +21,21 @@ defmodule Pleroma.Emoji do {:read_concurrency, true} ] + defstruct [:code, :file, :tags, :safe_code, :safe_file] + + @doc "Build emoji struct" + def build({code, file, tags}) do + %__MODULE__{ + code: code, + file: file, + tags: tags, + safe_code: Pleroma.HTML.strip_tags(code), + safe_file: Pleroma.HTML.strip_tags(file) + } + end + + def build({code, file}), do: build({code, file, []}) + @doc false def start_link(_) do GenServer.start_link(__MODULE__, [], name: __MODULE__) diff --git a/lib/pleroma/emoji/formatter.ex b/lib/pleroma/emoji/formatter.ex index acdef3988..4869d073e 100644 --- a/lib/pleroma/emoji/formatter.ex +++ b/lib/pleroma/emoji/formatter.ex @@ -15,12 +15,12 @@ def emojify(text, nil), do: text def emojify(text, emoji, strip \\ false) do Enum.reduce(emoji, text, fn - {_, _, _, emoji, file}, text -> + {_, %Emoji{safe_code: emoji, safe_file: file}}, text -> String.replace(text, ":#{emoji}:", prepare_emoji_html(emoji, file, strip)) - emoji_data, text -> - emoji = HTML.strip_tags(elem(emoji_data, 0)) - file = HTML.strip_tags(elem(emoji_data, 1)) + {unsafe_emoji, unsafe_file}, text -> + emoji = HTML.strip_tags(unsafe_emoji) + file = HTML.strip_tags(unsafe_file) String.replace(text, ":#{emoji}:", prepare_emoji_html(emoji, file, strip)) end) |> HTML.filter_tags() @@ -40,7 +40,7 @@ def demojify(text, nil), do: text @doc "Outputs a list of the emoji-shortcodes in a text" def get_emoji(text) when is_binary(text) do - Enum.filter(Emoji.get_all(), fn {emoji, _, _, _, _} -> + Enum.filter(Emoji.get_all(), fn {emoji, %Emoji{}} -> String.contains?(text, ":#{emoji}:") end) end @@ -50,7 +50,7 @@ def get_emoji(_), do: [] @doc "Outputs a list of the emoji-Maps in a text" def get_emoji_map(text) when is_binary(text) do get_emoji(text) - |> Enum.reduce(%{}, fn {name, file, _group, _, _}, acc -> + |> Enum.reduce(%{}, fn {name, %Emoji{file: file}}, acc -> Map.put(acc, name, "#{Pleroma.Web.Endpoint.static_url()}#{file}") end) end diff --git a/lib/pleroma/emoji/loader.ex b/lib/pleroma/emoji/loader.ex index 82fc3b8c3..839316713 100644 --- a/lib/pleroma/emoji/loader.ex +++ b/lib/pleroma/emoji/loader.ex @@ -11,13 +11,14 @@ defmodule Pleroma.Emoji.Loader do * glob paths, nested folder is used as tag name for grouping e.g. priv/static/emoji/custom/nested_folder """ alias Pleroma.Config + alias Pleroma.Emoji require Logger @type pattern :: Regex.t() | module() | String.t() @type patterns :: pattern() | [pattern()] @type group_patterns :: keyword(patterns()) - @type emoji :: {String.t(), String.t(), list(String.t())} + @type emoji :: {String.t(), Emoji.t()} @doc """ Loads emojis from files/packs. @@ -81,15 +82,7 @@ def load do Enum.map(emojis ++ emojis_txt, &prepare_emoji/1) end - defp prepare_emoji({code, file, tags} = _emoji) do - { - code, - file, - tags, - Pleroma.HTML.strip_tags(code), - Pleroma.HTML.strip_tags(file) - } - end + defp prepare_emoji({code, _, _} = emoji), do: {code, Emoji.build(emoji)} defp load_pack(pack_dir, emoji_groups) do pack_name = Path.basename(pack_dir) diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index d6907f707..1fb95f4ab 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -436,7 +436,7 @@ def confirm_current_password(user, password) do def emoji_from_profile(%{info: _info} = user) do (Emoji.Formatter.get_emoji(user.bio) ++ Emoji.Formatter.get_emoji(user.name)) - |> Enum.map(fn {shortcode, url, _, _, _} -> + |> Enum.map(fn {shortcode, %Emoji{file: url}} -> %{ "type" => "Emoji", "icon" => %{"type" => "Image", "url" => "#{Endpoint.url()}#{url}"}, diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index 4f63b03cf..a50c060bf 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -331,7 +331,7 @@ def peers(conn, _params) do defp mastodonized_emoji do Pleroma.Emoji.get_all() - |> Enum.map(fn {shortcode, relative_url, tags, _, _} -> + |> Enum.map(fn {shortcode, %Pleroma.Emoji{file: relative_url, tags: tags}} -> url = to_string(URI.merge(Web.base_url(), relative_url)) %{ diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex index 923480242..c14792068 100644 --- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -239,11 +239,9 @@ def version(conn, _params) do def emoji(conn, _params) do emoji = - Emoji.get_all() - |> Enum.map(fn {short_code, path, tags, _, _} -> - {short_code, %{image_url: path, tags: tags}} + Enum.reduce(Emoji.get_all(), %{}, fn {code, %Emoji{file: file, tags: tags}}, acc -> + Map.put(acc, code, %{image_url: file, tags: tags}) end) - |> Enum.into(%{}) json(conn, emoji) end diff --git a/test/emoji/formatter_test.exs b/test/emoji/formatter_test.exs index 8b510f48b..6d25fc453 100644 --- a/test/emoji/formatter_test.exs +++ b/test/emoji/formatter_test.exs @@ -3,6 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Emoji.FormatterTest do + alias Pleroma.Emoji alias Pleroma.Emoji.Formatter use Pleroma.DataCase @@ -20,15 +21,17 @@ test "it does not add XSS emoji" do text = "I love :'onload=\"this.src='bacon'\" onerror='var a = document.createElement(\"script\");a.src=\"//51.15.235.162.xip.io/cookie.js\";document.body.appendChild(a):" - custom_emoji = %{ - "'onload=\"this.src='bacon'\" onerror='var a = document.createElement(\"script\");a.src=\"//51.15.235.162.xip.io/cookie.js\";document.body.appendChild(a)" => + custom_emoji = + { + "'onload=\"this.src='bacon'\" onerror='var a = document.createElement(\"script\");a.src=\"//51.15.235.162.xip.io/cookie.js\";document.body.appendChild(a)", "https://placehold.it/1x1" - } + } + |> Pleroma.Emoji.build() expected_result = "I love \"\"" - assert Formatter.emojify(text, custom_emoji) == expected_result + assert Formatter.emojify(text, [{custom_emoji.code, custom_emoji}]) == expected_result end end @@ -37,7 +40,14 @@ test "it returns the emoji used in the text" do text = "I love :firefox:" assert Formatter.get_emoji(text) == [ - {"firefox", "/emoji/Firefox.gif", ["Gif", "Fun"], "firefox", "/emoji/Firefox.gif"} + {"firefox", + %Emoji{ + code: "firefox", + file: "/emoji/Firefox.gif", + tags: ["Gif", "Fun"], + safe_code: "firefox", + safe_file: "/emoji/Firefox.gif" + }} ] end diff --git a/test/emoji_test.exs b/test/emoji_test.exs index 82f9c52ff..1fdbd0fdf 100644 --- a/test/emoji_test.exs +++ b/test/emoji_test.exs @@ -14,9 +14,9 @@ defmodule Pleroma.EmojiTest do test "first emoji", %{emoji_list: emoji_list} do [emoji | _others] = emoji_list - {code, path, tags, _, _} = emoji + {code, %Emoji{file: path, tags: tags}} = emoji - assert tuple_size(emoji) == 5 + assert tuple_size(emoji) == 2 assert is_binary(code) assert is_binary(path) assert is_list(tags) @@ -24,9 +24,9 @@ test "first emoji", %{emoji_list: emoji_list} do test "random emoji", %{emoji_list: emoji_list} do emoji = Enum.random(emoji_list) - {code, path, tags, _, _} = emoji + {code, %Emoji{file: path, tags: tags}} = emoji - assert tuple_size(emoji) == 5 + assert tuple_size(emoji) == 2 assert is_binary(code) assert is_binary(path) assert is_list(tags) From 7808eee9aa4a02c289173a45e0b02def3bf51773 Mon Sep 17 00:00:00 2001 From: AkiraFukushima Date: Sat, 31 Aug 2019 16:23:15 +0900 Subject: [PATCH 021/272] Update Japanese document to follow English document --- docs/installation/debian_based_jp.md | 141 +++++++++++++-------------- 1 file changed, 70 insertions(+), 71 deletions(-) diff --git a/docs/installation/debian_based_jp.md b/docs/installation/debian_based_jp.md index caf72363b..5ca6b3634 100644 --- a/docs/installation/debian_based_jp.md +++ b/docs/installation/debian_based_jp.md @@ -5,180 +5,179 @@ ## インストール -このガイドはDebian Stretchを仮定しています。Ubuntu 16.04でも可能です。 +このガイドはDebian Stretchを利用することを想定しています。Ubuntu 16.04や18.04でもおそらく動作します。また、ユーザはrootもしくはsudoにより管理者権限を持っていることを前提とします。もし、以下の操作をrootユーザで行う場合は、 `sudo` を無視してください。ただし、`sudo -Hu pleroma` のようにユーザを指定している場合には `su -s $SHELL -c 'command'` を代わりに使ってください。 ### 必要なソフトウェア -- PostgreSQL 9.6+ (postgresql-contrib-9.6 または他のバージョンの PSQL をインストールしてください) -- Elixir 1.5 以上 ([Debianのリポジトリからインストールしないこと!!! ここからインストールすること!](https://elixir-lang.org/install.html#unix-and-unix-like))。または [asdf](https://github.com/asdf-vm/asdf) を pleroma ユーザーでインストール。 -- erlang-dev +- PostgreSQL 9.6以上 (Ubuntu16.04では9.5しか提供されていないので,[](https://www.postgresql.org/download/linux/ubuntu/)こちらから新しいバージョンを入手してください) +- postgresql-contrib 9.6以上 (同上) +- Elixir 1.5 以上 ([Debianのリポジトリからインストールしないこと!!! ここからインストールすること!](https://elixir-lang.org/install.html#unix-and-unix-like)。または [asdf](https://github.com/asdf-vm/asdf) をpleromaユーザーでインストールしてください) + - erlang-dev - erlang-tools - erlang-parsetools +- erlang-eldap (LDAP認証を有効化するときのみ必要) - erlang-ssh -- erlang-xmerl (Jessieではバックポートからインストールすること!) +- erlang-xmerl - git - build-essential -- openssh -- openssl -- nginx prefered (Apacheも動くかもしれませんが、誰もテストしていません!) -- certbot (または何らかのACME Let's encryptクライアント) + +#### このガイドで利用している追加パッケージ + +- nginx (おすすめです。他のリバースプロキシを使う場合は、参考となる設定をこのリポジトリから探してください) +- certbot (または何らかのLet's Encrypt向けACMEクライアント) ### システムを準備する * まずシステムをアップデートしてください。 ``` -apt update && apt dist-upgrade +sudo apt update +sudo apt full-upgrade ``` -* 複数のツールとpostgresqlをインストールします。あとで必要になるので。 +* 上記に挙げたパッケージをインストールしておきます。 ``` -apt install git build-essential openssl ssh sudo postgresql-9.6 postgresql-contrib-9.6 +sudo apt install git build-essential postgresql postgresql-contrib ``` -(postgresqlのバージョンは、あなたのディストロにあわせて変えてください。または、バージョン番号がいらないかもしれません。) + ### ElixirとErlangをインストールします * Erlangのリポジトリをダウンロードおよびインストールします。 ``` -wget -P /tmp/ https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i /tmp/erlang-solutions_1.0_all.deb +wget -P /tmp/ https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb +sudo dpkg -i /tmp/erlang-solutions_1.0_all.deb ``` * ElixirとErlangをインストールします、 ``` -apt update && apt install elixir erlang-dev erlang-parsetools erlang-xmerl erlang-tools erlang-ssh +sudo apt update +sudo apt install elixir erlang-dev erlang-parsetools erlang-xmerl erlang-tools erlang-ssh ``` ### Pleroma BE (バックエンド) をインストールします -* 新しいユーザーを作ります。 -``` -adduser pleroma -``` -(Give it any password you want, make it STRONG) +* Pleroma用に新しいユーザーを作ります。 -* 新しいユーザーをsudoグループに入れます。 ``` -usermod -aG sudo pleroma +sudo useradd -r -s /bin/false -m -d /var/lib/pleroma -U pleroma ``` -* 新しいユーザーに変身し、ホームディレクトリに移動します。 -``` -su pleroma -cd ~ -``` +**注意**: Pleromaユーザとして単発のコマンドを実行したい場合はは、`sudo -Hu pleroma command` を使ってください。シェルを使いたい場合は `sudo -Hu pleroma $SHELL`です。もし `sudo` を使わない場合は、rootユーザで `su -l pleroma -s $SHELL -c 'command'` とすることでコマンドを、`su -l pleroma -s $SHELL` とすることでシェルを開始できます。 * Gitリポジトリをクローンします。 ``` -git clone -b master https://git.pleroma.social/pleroma/pleroma +sudo mkdir -p /opt/pleroma +sudo chown -R pleroma:pleroma /opt/pleroma +sudo -Hu pleroma git clone -b master https://git.pleroma.social/pleroma/pleroma /opt/pleroma ``` * 新しいディレクトリに移動します。 ``` -cd pleroma/ +cd /opt/pleroma ``` * Pleromaが依存するパッケージをインストールします。Hexをインストールしてもよいか聞かれたら、yesを入力してください。 ``` -mix deps.get +sudo -Hu pleroma mix deps.get ``` * コンフィギュレーションを生成します。 ``` -mix pleroma.instance gen +sudo -Hu pleroma mix pleroma.instance gen ``` * rebar3をインストールしてもよいか聞かれたら、yesを入力してください。 - * この処理には時間がかかります。私もよく分かりませんが、何らかのコンパイルが行われているようです。 - * あなたのインスタンスについて、いくつかの質問があります。その回答は `config/generated_config.exs` というコンフィギュレーションファイルに保存されます。 + * このときにpleromaの一部がコンパイルされるため、この処理には時間がかかります。 + * あなたのインスタンスについて、いくつかの質問されます。この質問により `config/generated_config.exs` という設定ファイルが生成されます。 -**注意**: メディアプロクシを有効にすると回答して、なおかつ、キャッシュのURLは空欄のままにしている場合は、`generated_config.exs` を編集して、`base_url` で始まる行をコメントアウトまたは削除してください。そして、上にある行の `true` の後にあるコンマを消してください。 * コンフィギュレーションを確認して、もし問題なければ、ファイル名を変更してください。 ``` mv config/{generated_config.exs,prod.secret.exs} ``` -* これまでのコマンドで、すでに `config/setup_db.psql` というファイルが作られています。このファイルをもとに、データベースを作成します。 +* 先程のコマンドで、すでに `config/setup_db.psql` というファイルが作られています。このファイルをもとに、データベースを作成します。 ``` -sudo su postgres -c 'psql -f config/setup_db.psql' +sudo -Hu pleroma mix pleroma.instance gen ``` -* そして、データベースのミグレーションを実行します。 +* そして、データベースのマイグレーションを実行します。 ``` -MIX_ENV=prod mix ecto.migrate +sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate ``` -* Pleromaを起動できるようになりました。 +* これでPleromaを起動できるようになりました。 ``` -MIX_ENV=prod mix phx.server +sudo -Hu pleroma MIX_ENV=prod mix phx.server ``` -### インストールを終わらせる +### インストールの最終段階 -あなたの新しいインスタンスを世界に向けて公開するには、nginxまたは何らかのウェブサーバー (プロクシ) を使用する必要があります。また、Pleroma のためにシステムサービスファイルを作成する必要があります。 +あなたの新しいインスタンスを世界に向けて公開するには、nginx等のWebサーバやプロキシサーバをPleromaの前段に使用する必要があります。また、Pleroma のためにシステムサービスファイルを作成する必要があります。 #### Nginx * まだインストールしていないなら、nginxをインストールします。 ``` -apt install nginx +sudo apt install nginx ``` * SSLをセットアップします。他の方法でもよいですが、ここではcertbotを説明します。 certbotを使うならば、まずそれをインストールします。 ``` -apt install certbot +sudo apt install certbot ``` そしてセットアップします。 ``` -mkdir -p /var/lib/letsencrypt/.well-known -% certbot certonly --email your@emailaddress --webroot -w /var/lib/letsencrypt/ -d yourdomain +sudo mkdir -p /var/lib/letsencrypt/ +sudo certbot certonly --email -d --standalone ``` -もしうまくいかないときは、先にnginxを設定してください。ssl "on" を "off" に変えてから再試行してください。 +もしうまくいかないときは、nginxが正しく動いていない可能性があります。先にnginxを設定してください。ssl "on" を "off" に変えてから再試行してください。 --- -* nginxコンフィギュレーションの例をnginxフォルダーにコピーします。 +* nginxの設定ファイルサンプルをnginxフォルダーにコピーします。 ``` -cp /home/pleroma/pleroma/installation/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx +sudo cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.nginx +sudo ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx ``` -* nginxを起動する前に、コンフィギュレーションを編集してください。例えば、サーバー名、証明書のパスなどを変更する必要があります。 +* nginxを起動する前に、設定ファイルを編集してください。例えば、サーバー名、証明書のパスなどを変更する必要があります。 * nginxを再起動します。 ``` -systemctl reload nginx.service +sudo systemctl enable --now nginx.service ``` +もし証明書を更新する必要が出てきた場合には、nginxの関連するlocationブロックのコメントアウトを外し、以下のコマンドを動かします。 + +``` +sudo certbot certonly --email -d --webroot -w /var/lib/letsencrypt/ +``` + +#### 他のWebサーバやプロキシ +これに関してはサンプルが `/opt/pleroma/installation/` にあるので、探してみてください。 + #### Systemd サービス -* サービスファイルの例をコピーします。 +* サービスファイルのサンプルをコピーします。 ``` -cp /home/pleroma/pleroma/installation/pleroma.service /usr/lib/systemd/system/pleroma.service +sudo cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service ``` -* サービスファイルを変更します。すべてのパスが正しいことを確認してください。また、`[Service]` セクションに以下の行があることを確認してください。 +* サービスファイルを変更します。すべてのパスが正しいことを確認してください +* サービスを有効化し `pleroma.service` を開始してください ``` -Environment="MIX_ENV=prod" +sudo systemctl enable --now pleroma.service ``` -* `pleroma.service` を enable および start してください。 +#### 初期ユーザの作成 + +新たにインスタンスを作成したら、以下のコマンドにより管理者権限を持った初期ユーザを作成できます。 + ``` -systemctl enable --now pleroma.service +sudo -Hu pleroma MIX_ENV=prod mix pleroma.user new --admin ``` -#### モデレーターを作る - -新たにユーザーを作ったら、モデレーター権限を与えたいかもしれません。以下のタスクで可能です。 -``` -mix set_moderator username [true|false] -``` - -モデレーターはすべてのポストを消すことができます。将来的には他のことも可能になるかもしれません。 - -#### メディアプロクシを有効にする - -`generate_config` でメディアプロクシを有効にしているなら、すでにメディアプロクシが動作しています。あとから設定を変更したいなら、[How to activate mediaproxy](How-to-activate-mediaproxy) を見てください。 - -#### コンフィギュレーションとカスタマイズ +#### その他の設定とカスタマイズ * [Backup your instance](backup.html) * [Configuration tips](general-tips-for-customizing-pleroma-fe.html) From a90ea8ba1562818b025f677ffeea35f7ca08ddf2 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 31 Aug 2019 19:08:56 +0300 Subject: [PATCH 022/272] [#1149] Addressed code review comments (code style, jobs pruning etc.). --- CHANGELOG.md | 2 +- config/config.exs | 2 +- config/test.exs | 2 + docs/config.md | 56 ++++++++++++++++++- lib/pleroma/activity_expiration_worker.ex | 6 +- lib/pleroma/application.ex | 2 +- lib/pleroma/digest_email_worker.ex | 4 +- lib/pleroma/emails/mailer.ex | 4 +- lib/pleroma/scheduled_activity_worker.ex | 2 +- lib/pleroma/user.ex | 2 +- lib/pleroma/web/activity_pub/activity_pub.ex | 2 +- .../mrf/mediaproxy_warming_policy.ex | 2 +- lib/pleroma/web/activity_pub/publisher.ex | 2 +- .../web/activity_pub/transmogrifier.ex | 4 +- lib/pleroma/web/federator/federator.ex | 8 +-- lib/pleroma/web/federator/publisher.ex | 9 +-- lib/pleroma/web/oauth/token/clean_worker.ex | 2 +- lib/pleroma/web/push/push.ex | 6 +- lib/pleroma/web/salmon/salmon.ex | 2 +- .../workers/activity_expiration_worker.ex | 21 +++++++ lib/pleroma/workers/background_worker.ex | 19 ++----- lib/pleroma/workers/helper.ex | 13 ----- .../workers/{mailer.ex => mailer_worker.ex} | 19 +++---- .../{publisher.ex => publisher_worker.ex} | 8 ++- .../{receiver.ex => receiver_worker.ex} | 4 +- .../workers/scheduled_activity_worker.ex | 2 +- .../{subscriber.ex => subscriber_worker.ex} | 4 +- ...smogrifier.ex => transmogrifier_worker.ex} | 6 +- .../{web_pusher.ex => web_pusher_worker.ex} | 4 +- lib/pleroma/workers/worker_helper.ex | 23 ++++++++ test/user_test.exs | 2 +- .../activity_pub_controller_test.exs | 2 +- test/web/federator_test.exs | 2 +- test/web/websub/websub_test.exs | 2 +- 34 files changed, 163 insertions(+), 87 deletions(-) create mode 100644 lib/pleroma/workers/activity_expiration_worker.ex delete mode 100644 lib/pleroma/workers/helper.ex rename lib/pleroma/workers/{mailer.ex => mailer_worker.ex} (58%) rename lib/pleroma/workers/{publisher.ex => publisher_worker.ex} (76%) rename lib/pleroma/workers/{receiver.ex => receiver_worker.ex} (83%) rename lib/pleroma/workers/{subscriber.ex => subscriber_worker.ex} (88%) rename lib/pleroma/workers/{transmogrifier.ex => transmogrifier_worker.ex} (73%) rename lib/pleroma/workers/{web_pusher.ex => web_pusher_worker.ex} (82%) create mode 100644 lib/pleroma/workers/worker_helper.ex diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b73c783f..c9d6fef17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Unsubscribe followers when they unfollow a user - AdminAPI: Add "godmode" while fetching user statuses (i.e. admin can see private statuses) - Improve digest email template -- Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) with [Oban](https://github.com/sorentwo/oban) +- Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings). - Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler ### Fixed diff --git a/config/config.exs b/config/config.exs index da89aa3e9..6fb4a0969 100644 --- a/config/config.exs +++ b/config/config.exs @@ -470,7 +470,7 @@ config :pleroma, Oban, repo: Pleroma.Repo, verbose: false, - prune: {:maxage, 60 * 60 * 24 * 7}, + prune: {:maxlen, 1500}, queues: [ activity_expiration: 10, federator_incoming: 50, diff --git a/config/test.exs b/config/test.exs index 0ef809ac1..df512b5d7 100644 --- a/config/test.exs +++ b/config/test.exs @@ -65,6 +65,8 @@ queues: false, prune: :disabled +config :pleroma, Pleroma.Scheduler, jobs: [] + config :pleroma, Pleroma.ScheduledActivity, daily_user_limit: 2, total_user_limit: 3, diff --git a/docs/config.md b/docs/config.md index 2e351e272..29a4d4c97 100644 --- a/docs/config.md +++ b/docs/config.md @@ -404,20 +404,29 @@ curl "http://localhost:4000/api/pleroma/admin/invite_token?admin_token=somerando [Oban](https://github.com/sorentwo/oban) asynchronous job processor configuration. +Configuration options described in [Oban readme](https://github.com/sorentwo/oban#usage): +* `repo` - app's Ecto repo (`Pleroma.Repo`) +* `verbose` - logs verbosity +* `prune` - non-retryable jobs [pruning settings](https://github.com/sorentwo/oban#pruning) (`:disabled` / `{:maxlen, value}` / `{:maxage, value}`) +* `queues` - job queues (see below) + Pleroma has the following queues: +* `activity_expiration` - Activity expiration * `federator_outgoing` - Outgoing federation * `federator_incoming` - Incoming federation -* `mailer` - Email sender, see [`Pleroma.Emails.Mailer`](#pleroma-emails-mailer) +* `mailer` - Email sender, see [`Pleroma.Emails.Mailer`](#pleromaemailsmailer) * `transmogrifier` - Transmogrifier * `web_push` - Web push notifications -* `scheduled_activities` - Scheduled activities, see [`Pleroma.ScheduledActivities`](#pleromascheduledactivity) +* `scheduled_activities` - Scheduled activities, see [`Pleroma.ScheduledActivity`](#pleromascheduledactivity) Example: ```elixir config :pleroma, Oban, repo: Pleroma.Repo, + verbose: false, + prune: {:maxlen, 1500}, queues: [ federator_incoming: 50, federator_outgoing: 50 @@ -426,12 +435,37 @@ config :pleroma, Oban, This config contains two queues: `federator_incoming` and `federator_outgoing`. Both have the number of max concurrent jobs set to `50`. +### Migrating `pleroma_job_queue` settings + +`config :pleroma_job_queue, :queues` is replaced by `config :pleroma, Oban, :queues` and uses the same format (keys are queues' names, values are max concurrent jobs numbers). + +### Note on running with PostgreSQL in silent mode + +If you are running PostgreSQL in [`silent_mode`](https://postgresqlco.nf/en/doc/param/silent_mode?version=9.1), it's advised to set [`log_destination`](https://postgresqlco.nf/en/doc/param/log_destination?version=9.1) to `syslog`, +otherwise `postmaster.log` file may grow because of "you don't own a lock of type ShareLock" warnings (see https://github.com/sorentwo/oban/issues/52). + ## :workers Includes custom worker options not interpretable directly by `Oban`. * `retries` — keyword lists where keys are `Oban` queues (see above) and values are numbers of max attempts for failed jobs. +Example: + +```elixir +config :pleroma, :workers, + retries: [ + federator_incoming: 5, + federator_outgoing: 5 + ] +``` + +### Migrating `Pleroma.Web.Federator.RetryQueue` settings + +* `max_retries` is replaced with `config :pleroma, :workers, retries: [federator_outgoing: 5]` +* `enabled: false` corresponds to `config :pleroma, :workers, retries: [federator_outgoing: 1]` +* deprecated options: `max_jobs`, `initial_timeout` + ## Pleroma.Web.Metadata * `providers`: a list of metadata providers to enable. Providers available: * Pleroma.Web.Metadata.Providers.OpenGraph @@ -491,6 +525,24 @@ config :auto_linker, ] ``` +## Pleroma.Scheduler + +Configuration for [Quantum](https://github.com/quantum-elixir/quantum-core) jobs scheduler. + +See [Quantum readme](https://github.com/quantum-elixir/quantum-core#usage) for the list of supported options. + +Example: + +```elixir +config :pleroma, Pleroma.Scheduler, + global: true, + overlap: true, + timezone: :utc, + jobs: [{"0 */6 * * * *", {Pleroma.Web.Websub, :refresh_subscriptions, []}}] +``` + +The above example defines a single job which invokes `Pleroma.Web.Websub.refresh_subscriptions()` every 6 hours ("0 */6 * * * *", [crontab format](https://en.wikipedia.org/wiki/Cron)). + ## Pleroma.ScheduledActivity * `daily_user_limit`: the number of scheduled activities a user is allowed to create in a single day (Default: `25`) diff --git a/lib/pleroma/activity_expiration_worker.ex b/lib/pleroma/activity_expiration_worker.ex index 5c0c53232..7aba7eece 100644 --- a/lib/pleroma/activity_expiration_worker.ex +++ b/lib/pleroma/activity_expiration_worker.ex @@ -9,13 +9,13 @@ defmodule Pleroma.ActivityExpirationWorker do alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.CommonAPI - alias Pleroma.Workers.BackgroundWorker + alias Pleroma.Workers.ActivityExpirationWorker require Logger use GenServer import Ecto.Query - defdelegate worker_args(queue), to: Pleroma.Workers.Helper + import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] @schedule_interval :timer.minutes(1) @@ -57,7 +57,7 @@ def handle_info(:perform, state) do "op" => "activity_expiration", "activity_expiration_id" => expiration.id } - |> BackgroundWorker.new(worker_args(:activity_expiration)) + |> ActivityExpirationWorker.new(worker_args(:activity_expiration)) |> Repo.insert() end) diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 7d38ed5c4..f8f866dbd 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -43,7 +43,7 @@ def start(_type, _args) do hackney_pool_children() ++ [ Pleroma.Stats, - {Oban, Application.get_env(:pleroma, Oban)}, + {Oban, Pleroma.Config.get(Oban)}, %{ id: :web_push_init, start: {Task, :start_link, [&Pleroma.Web.Push.init/0]}, diff --git a/lib/pleroma/digest_email_worker.ex b/lib/pleroma/digest_email_worker.ex index ffc48bfab..4ab2a4ef4 100644 --- a/lib/pleroma/digest_email_worker.ex +++ b/lib/pleroma/digest_email_worker.ex @@ -4,11 +4,11 @@ defmodule Pleroma.DigestEmailWorker do alias Pleroma.Repo - alias Pleroma.Workers.Mailer, as: MailerWorker + alias Pleroma.Workers.MailerWorker import Ecto.Query - defdelegate worker_args(queue), to: Pleroma.Workers.Helper + import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] def perform do config = Pleroma.Config.get([:email_notifications, :digest]) diff --git a/lib/pleroma/emails/mailer.ex b/lib/pleroma/emails/mailer.ex index bb534f602..9cbe7313c 100644 --- a/lib/pleroma/emails/mailer.ex +++ b/lib/pleroma/emails/mailer.ex @@ -10,7 +10,7 @@ defmodule Pleroma.Emails.Mailer do """ alias Pleroma.Repo - alias Pleroma.Workers.Mailer, as: MailerWorker + alias Pleroma.Workers.MailerWorker alias Swoosh.DeliveryError @otp_app :pleroma @@ -19,7 +19,7 @@ defmodule Pleroma.Emails.Mailer do @spec enabled?() :: boolean() def enabled?, do: Pleroma.Config.get([__MODULE__, :enabled]) - defdelegate worker_args(queue), to: Pleroma.Workers.Helper + import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] @doc "add email to queue" def deliver_async(email, config \\ []) do diff --git a/lib/pleroma/scheduled_activity_worker.ex b/lib/pleroma/scheduled_activity_worker.ex index a01fb4fcb..8bf534f42 100644 --- a/lib/pleroma/scheduled_activity_worker.ex +++ b/lib/pleroma/scheduled_activity_worker.ex @@ -18,7 +18,7 @@ defmodule Pleroma.ScheduledActivityWorker do @schedule_interval :timer.minutes(1) - defdelegate worker_args(queue), to: Pleroma.Workers.Helper + import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] def start_link(_) do GenServer.start_link(__MODULE__, nil) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 18bba0fbb..abfa063fb 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -41,7 +41,7 @@ defmodule Pleroma.User do @strict_local_nickname_regex ~r/^[a-zA-Z\d]+$/ @extended_local_nickname_regex ~r/^[a-zA-Z\d_-]+$/ - defdelegate worker_args(queue), to: Pleroma.Workers.Helper + import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] schema "users" do field(:bio, :string) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 50279cca5..74c5eb91c 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -26,7 +26,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do require Logger require Pleroma.Constants - defdelegate worker_args(queue), to: Pleroma.Workers.Helper + import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] # For Announce activities, we filter the recipients based on following status for any actors # that match actual users. See issue #164 for more information about why this is necessary. diff --git a/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex index b188164ee..178321558 100644 --- a/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex @@ -18,7 +18,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do recv_timeout: 10_000 ] - defdelegate worker_args(queue), to: Pleroma.Workers.Helper + import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] def perform(:prefetch, url) do Logger.info("Prefetching #{inspect(url)}") diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex index 24d101dc8..a6322e25a 100644 --- a/lib/pleroma/web/activity_pub/publisher.ex +++ b/lib/pleroma/web/activity_pub/publisher.ex @@ -85,7 +85,7 @@ def publish_one(%{inbox: inbox, json: json, actor: %User{} = actor, id: id} = pa end def publish_one(%{actor_id: actor_id} = params) do - actor = User.get_by_id(actor_id) + actor = User.get_cached_by_id(actor_id) params |> Map.delete(:actor_id) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index b068d28a7..9437f9a16 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -15,14 +15,14 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.ActivityPub.Visibility alias Pleroma.Web.Federator - alias Pleroma.Workers.Transmogrifier, as: TransmogrifierWorker + alias Pleroma.Workers.TransmogrifierWorker import Ecto.Query require Logger require Pleroma.Constants - defdelegate worker_args(queue), to: Pleroma.Workers.Helper + import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] @doc """ Modifies an incoming AP object (mastodon format) to our internal format. diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index cf7e50fee..8f43066e3 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -12,13 +12,13 @@ defmodule Pleroma.Web.Federator do alias Pleroma.Web.Federator.Publisher alias Pleroma.Web.OStatus alias Pleroma.Web.Websub - alias Pleroma.Workers.Publisher, as: PublisherWorker - alias Pleroma.Workers.Receiver, as: ReceiverWorker - alias Pleroma.Workers.Subscriber, as: SubscriberWorker + alias Pleroma.Workers.PublisherWorker + alias Pleroma.Workers.ReceiverWorker + alias Pleroma.Workers.SubscriberWorker require Logger - defdelegate worker_args(queue), to: Pleroma.Workers.Helper + import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] def init do # To do: consider removing this call in favor of scheduled execution (`quantum`-based) diff --git a/lib/pleroma/web/federator/publisher.ex b/lib/pleroma/web/federator/publisher.ex index 05d2be615..42be109ab 100644 --- a/lib/pleroma/web/federator/publisher.ex +++ b/lib/pleroma/web/federator/publisher.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.Federator.Publisher do alias Pleroma.Activity alias Pleroma.Config alias Pleroma.User - alias Pleroma.Workers.Publisher, as: PublisherWorker + alias Pleroma.Workers.PublisherWorker require Logger @@ -31,12 +31,7 @@ defmodule Pleroma.Web.Federator.Publisher do """ @spec enqueue_one(module(), Map.t()) :: :ok def enqueue_one(module, %{} = params) do - worker_args = - if max_attempts = Pleroma.Config.get([:workers, :retries, :federator_outgoing]) do - [max_attempts: max_attempts] - else - [] - end + worker_args = Pleroma.Workers.WorkerHelper.worker_args(:federator_outgoing) %{"op" => "publish_one", "module" => to_string(module), "params" => params} |> PublisherWorker.new(worker_args) diff --git a/lib/pleroma/web/oauth/token/clean_worker.ex b/lib/pleroma/web/oauth/token/clean_worker.ex index 943e73289..b150a68a7 100644 --- a/lib/pleroma/web/oauth/token/clean_worker.ex +++ b/lib/pleroma/web/oauth/token/clean_worker.ex @@ -20,7 +20,7 @@ defmodule Pleroma.Web.OAuth.Token.CleanWorker do alias Pleroma.Web.OAuth.Token alias Pleroma.Workers.BackgroundWorker - defdelegate worker_args(queue), to: Pleroma.Workers.Helper + import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] def start_link(_), do: GenServer.start_link(__MODULE__, %{}) diff --git a/lib/pleroma/web/push/push.ex b/lib/pleroma/web/push/push.ex index b4f0e5127..4973b529c 100644 --- a/lib/pleroma/web/push/push.ex +++ b/lib/pleroma/web/push/push.ex @@ -4,11 +4,11 @@ defmodule Pleroma.Web.Push do alias Pleroma.Repo - alias Pleroma.Workers.WebPusher + alias Pleroma.Workers.WebPusherWorker require Logger - defdelegate worker_args(queue), to: Pleroma.Workers.Helper + import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] def init do unless enabled() do @@ -36,7 +36,7 @@ def enabled do def send(notification) do %{"op" => "web_push", "notification_id" => notification.id} - |> WebPusher.new(worker_args(:web_push)) + |> WebPusherWorker.new(worker_args(:web_push)) |> Repo.insert() end end diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index bbaa293fd..8ba7380c0 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -171,7 +171,7 @@ def publish_one(%{recipient: url, feed: feed} = params) when is_binary(url) do end def publish_one(%{recipient_id: recipient_id} = params) do - recipient = User.get_by_id(recipient_id) + recipient = User.get_cached_by_id(recipient_id) params |> Map.delete(:recipient_id) diff --git a/lib/pleroma/workers/activity_expiration_worker.ex b/lib/pleroma/workers/activity_expiration_worker.ex new file mode 100644 index 000000000..0b491eabb --- /dev/null +++ b/lib/pleroma/workers/activity_expiration_worker.ex @@ -0,0 +1,21 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.ActivityExpirationWorker do + # Note: `max_attempts` is intended to be overridden in `new/2` call + use Oban.Worker, + queue: "activity_expiration", + max_attempts: 1 + + @impl Oban.Worker + def perform( + %{ + "op" => "activity_expiration", + "activity_expiration_id" => activity_expiration_id + }, + _job + ) do + Pleroma.ActivityExpirationWorker.perform(:execute, activity_expiration_id) + end +end diff --git a/lib/pleroma/workers/background_worker.ex b/lib/pleroma/workers/background_worker.ex index fbce7d789..7b5575a5f 100644 --- a/lib/pleroma/workers/background_worker.ex +++ b/lib/pleroma/workers/background_worker.ex @@ -8,24 +8,24 @@ defmodule Pleroma.Workers.BackgroundWorker do alias Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy alias Pleroma.Web.OAuth.Token.CleanWorker - # Note: `max_attempts` is intended to be overridden in `new/1` call + # Note: `max_attempts` is intended to be overridden in `new/2` call use Oban.Worker, queue: "background", max_attempts: 1 @impl Oban.Worker def perform(%{"op" => "fetch_initial_posts", "user_id" => user_id}, _job) do - user = User.get_by_id(user_id) + user = User.get_cached_by_id(user_id) User.perform(:fetch_initial_posts, user) end def perform(%{"op" => "deactivate_user", "user_id" => user_id, "status" => status}, _job) do - user = User.get_by_id(user_id) + user = User.get_cached_by_id(user_id) User.perform(:deactivate_async, user, status) end def perform(%{"op" => "delete_user", "user_id" => user_id}, _job) do - user = User.get_by_id(user_id) + user = User.get_cached_by_id(user_id) User.perform(:delete, user) end @@ -37,7 +37,7 @@ def perform( }, _job ) do - blocker = User.get_by_id(blocker_id) + blocker = User.get_cached_by_id(blocker_id) User.perform(:blocks_import, blocker, blocked_identifiers) end @@ -49,7 +49,7 @@ def perform( }, _job ) do - follower = User.get_by_id(follower_id) + follower = User.get_cached_by_id(follower_id) User.perform(:follow_import, follower, followed_identifiers) end @@ -69,11 +69,4 @@ def perform(%{"op" => "fetch_data_for_activity", "activity_id" => activity_id}, activity = Activity.get_by_id(activity_id) Pleroma.Web.RichMedia.Helpers.perform(:fetch, activity) end - - def perform( - %{"op" => "activity_expiration", "activity_expiration_id" => activity_expiration_id}, - _job - ) do - Pleroma.ActivityExpirationWorker.perform(:execute, activity_expiration_id) - end end diff --git a/lib/pleroma/workers/helper.ex b/lib/pleroma/workers/helper.ex deleted file mode 100644 index 3286ce0e8..000000000 --- a/lib/pleroma/workers/helper.ex +++ /dev/null @@ -1,13 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.Helper do - def worker_args(queue) do - if max_attempts = Pleroma.Config.get([:workers, :retries, queue]) do - [max_attempts: max_attempts] - else - [] - end - end -end diff --git a/lib/pleroma/workers/mailer.ex b/lib/pleroma/workers/mailer_worker.ex similarity index 58% rename from lib/pleroma/workers/mailer.ex rename to lib/pleroma/workers/mailer_worker.ex index 1cce2ea03..4f73d61bc 100644 --- a/lib/pleroma/workers/mailer.ex +++ b/lib/pleroma/workers/mailer_worker.ex @@ -2,26 +2,25 @@ # Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Workers.Mailer do +defmodule Pleroma.Workers.MailerWorker do alias Pleroma.User - # Note: `max_attempts` is intended to be overridden in `new/1` call + # Note: `max_attempts` is intended to be overridden in `new/2` call use Oban.Worker, queue: "mailer", max_attempts: 1 @impl Oban.Worker def perform(%{"op" => "email", "encoded_email" => encoded_email, "config" => config}, _job) do - email = - encoded_email - |> Base.decode64!() - |> :erlang.binary_to_term() - - Pleroma.Emails.Mailer.deliver(email, config) + encoded_email + |> Base.decode64!() + |> :erlang.binary_to_term() + |> Pleroma.Emails.Mailer.deliver(config) end def perform(%{"op" => "digest_email", "user_id" => user_id}, _job) do - user = User.get_by_id(user_id) - Pleroma.DigestEmailWorker.perform(user) + user_id + |> User.get_cached_by_id() + |> Pleroma.DigestEmailWorker.perform() end end diff --git a/lib/pleroma/workers/publisher.ex b/lib/pleroma/workers/publisher_worker.ex similarity index 76% rename from lib/pleroma/workers/publisher.ex rename to lib/pleroma/workers/publisher_worker.ex index 00fae99c7..5671d2a29 100644 --- a/lib/pleroma/workers/publisher.ex +++ b/lib/pleroma/workers/publisher_worker.ex @@ -2,15 +2,19 @@ # Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Workers.Publisher do +defmodule Pleroma.Workers.PublisherWorker do alias Pleroma.Activity alias Pleroma.Web.Federator - # Note: `max_attempts` is intended to be overridden in `new/1` call + # Note: `max_attempts` is intended to be overridden in `new/2` call use Oban.Worker, queue: "federator_outgoing", max_attempts: 1 + def backoff(attempt) when is_integer(attempt) do + Pleroma.Workers.WorkerHelper.sidekiq_backoff(attempt, 5) + end + @impl Oban.Worker def perform(%{"op" => "publish", "activity_id" => activity_id}, _job) do activity = Activity.get_by_id(activity_id) diff --git a/lib/pleroma/workers/receiver.ex b/lib/pleroma/workers/receiver_worker.ex similarity index 83% rename from lib/pleroma/workers/receiver.ex rename to lib/pleroma/workers/receiver_worker.ex index 4ee270d74..cdce630f2 100644 --- a/lib/pleroma/workers/receiver.ex +++ b/lib/pleroma/workers/receiver_worker.ex @@ -2,10 +2,10 @@ # Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Workers.Receiver do +defmodule Pleroma.Workers.ReceiverWorker do alias Pleroma.Web.Federator - # Note: `max_attempts` is intended to be overridden in `new/1` call + # Note: `max_attempts` is intended to be overridden in `new/2` call use Oban.Worker, queue: "federator_incoming", max_attempts: 1 diff --git a/lib/pleroma/workers/scheduled_activity_worker.ex b/lib/pleroma/workers/scheduled_activity_worker.ex index d9724c78a..4094411ae 100644 --- a/lib/pleroma/workers/scheduled_activity_worker.ex +++ b/lib/pleroma/workers/scheduled_activity_worker.ex @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.ScheduledActivityWorker do - # Note: `max_attempts` is intended to be overridden in `new/1` call + # Note: `max_attempts` is intended to be overridden in `new/2` call use Oban.Worker, queue: "scheduled_activities", max_attempts: 1 diff --git a/lib/pleroma/workers/subscriber.ex b/lib/pleroma/workers/subscriber_worker.ex similarity index 88% rename from lib/pleroma/workers/subscriber.ex rename to lib/pleroma/workers/subscriber_worker.ex index e960b35bf..22d1dc956 100644 --- a/lib/pleroma/workers/subscriber.ex +++ b/lib/pleroma/workers/subscriber_worker.ex @@ -2,12 +2,12 @@ # Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Workers.Subscriber do +defmodule Pleroma.Workers.SubscriberWorker do alias Pleroma.Repo alias Pleroma.Web.Federator alias Pleroma.Web.Websub - # Note: `max_attempts` is intended to be overridden in `new/1` call + # Note: `max_attempts` is intended to be overridden in `new/2` call use Oban.Worker, queue: "federator_outgoing", max_attempts: 1 diff --git a/lib/pleroma/workers/transmogrifier.ex b/lib/pleroma/workers/transmogrifier_worker.ex similarity index 73% rename from lib/pleroma/workers/transmogrifier.ex rename to lib/pleroma/workers/transmogrifier_worker.ex index e13202c06..6f5c1a2f2 100644 --- a/lib/pleroma/workers/transmogrifier.ex +++ b/lib/pleroma/workers/transmogrifier_worker.ex @@ -2,17 +2,17 @@ # Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Workers.Transmogrifier do +defmodule Pleroma.Workers.TransmogrifierWorker do alias Pleroma.User - # Note: `max_attempts` is intended to be overridden in `new/1` call + # Note: `max_attempts` is intended to be overridden in `new/2` call use Oban.Worker, queue: "transmogrifier", max_attempts: 1 @impl Oban.Worker def perform(%{"op" => "user_upgrade", "user_id" => user_id}, _job) do - user = User.get_by_id(user_id) + user = User.get_cached_by_id(user_id) Pleroma.Web.ActivityPub.Transmogrifier.perform(:user_upgrade, user) end end diff --git a/lib/pleroma/workers/web_pusher.ex b/lib/pleroma/workers/web_pusher_worker.ex similarity index 82% rename from lib/pleroma/workers/web_pusher.ex rename to lib/pleroma/workers/web_pusher_worker.ex index 7b78bb3ea..2b1d3b99a 100644 --- a/lib/pleroma/workers/web_pusher.ex +++ b/lib/pleroma/workers/web_pusher_worker.ex @@ -2,11 +2,11 @@ # Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Workers.WebPusher do +defmodule Pleroma.Workers.WebPusherWorker do alias Pleroma.Notification alias Pleroma.Repo - # Note: `max_attempts` is intended to be overridden in `new/1` call + # Note: `max_attempts` is intended to be overridden in `new/2` call use Oban.Worker, queue: "web_push", max_attempts: 1 diff --git a/lib/pleroma/workers/worker_helper.ex b/lib/pleroma/workers/worker_helper.ex new file mode 100644 index 000000000..f9ed2e64d --- /dev/null +++ b/lib/pleroma/workers/worker_helper.ex @@ -0,0 +1,23 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.WorkerHelper do + alias Pleroma.Config + + def worker_args(queue) do + case Config.get([:workers, :retries, queue]) do + nil -> [] + max_attempts -> [max_attempts: max_attempts] + end + end + + def sidekiq_backoff(attempt, pow \\ 4, base_backoff \\ 15) do + backoff = + :math.pow(attempt, pow) + + base_backoff + + :rand.uniform(2 * base_backoff) * attempt + + trunc(backoff) + end +end diff --git a/test/user_test.exs b/test/user_test.exs index 86232de99..0acd0db4e 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1123,7 +1123,7 @@ test "it deletes a user, all follow relationships and all activities", %{user: u "id" => "pleroma:fakeid" } }, - all_enqueued(worker: Pleroma.Workers.Publisher) + all_enqueued(worker: Pleroma.Workers.PublisherWorker) ) end end diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index a1b567a46..f1c1bb503 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -17,7 +17,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do alias Pleroma.Web.ActivityPub.UserView alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.CommonAPI - alias Pleroma.Workers.Receiver, as: ReceiverWorker + alias Pleroma.Workers.ReceiverWorker setup_all do Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) diff --git a/test/web/federator_test.exs b/test/web/federator_test.exs index 5724672fd..4096d4690 100644 --- a/test/web/federator_test.exs +++ b/test/web/federator_test.exs @@ -7,7 +7,7 @@ defmodule Pleroma.Web.FederatorTest do alias Pleroma.Tests.ObanHelpers alias Pleroma.Web.CommonAPI alias Pleroma.Web.Federator - alias Pleroma.Workers.Publisher, as: PublisherWorker + alias Pleroma.Workers.PublisherWorker use Pleroma.DataCase use Oban.Testing, repo: Pleroma.Repo diff --git a/test/web/websub/websub_test.exs b/test/web/websub/websub_test.exs index 414610879..929acf5a2 100644 --- a/test/web/websub/websub_test.exs +++ b/test/web/websub/websub_test.exs @@ -11,7 +11,7 @@ defmodule Pleroma.Web.WebsubTest do alias Pleroma.Web.Websub alias Pleroma.Web.Websub.WebsubClientSubscription alias Pleroma.Web.Websub.WebsubServerSubscription - alias Pleroma.Workers.Subscriber, as: SubscriberWorker + alias Pleroma.Workers.SubscriberWorker import Pleroma.Factory import Tesla.Mock From dd017c65a4b86501c435f5cb01804300e6b7c6dd Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 31 Aug 2019 21:58:42 +0300 Subject: [PATCH 023/272] [#1149] Refactored Oban workers API (introduced `enqueue/3`). --- lib/pleroma/activity_expiration_worker.ex | 13 +++------ lib/pleroma/digest_email_worker.ex | 10 ++----- lib/pleroma/emails/mailer.ex | 7 +---- lib/pleroma/scheduled_activity_worker.ex | 10 +++---- lib/pleroma/user.ex | 28 +++++-------------- lib/pleroma/web/activity_pub/activity_pub.ex | 6 +--- .../mrf/mediaproxy_warming_policy.ex | 11 ++------ .../web/activity_pub/transmogrifier.ex | 6 +--- lib/pleroma/web/federator/federator.ex | 26 ++++------------- lib/pleroma/web/federator/publisher.ex | 9 +++--- lib/pleroma/web/oauth/token/clean_worker.ex | 7 +---- lib/pleroma/web/push/push.ex | 7 +---- .../workers/activity_expiration_worker.ex | 2 ++ lib/pleroma/workers/background_worker.ex | 2 ++ lib/pleroma/workers/digest_emails_worker.ex | 21 ++++++++++++++ lib/pleroma/workers/mailer_worker.ex | 10 ++----- lib/pleroma/workers/publisher_worker.ex | 2 ++ lib/pleroma/workers/receiver_worker.ex | 2 ++ .../workers/scheduled_activity_worker.ex | 2 ++ lib/pleroma/workers/subscriber_worker.ex | 2 ++ lib/pleroma/workers/transmogrifier_worker.ex | 2 ++ lib/pleroma/workers/web_pusher_worker.ex | 2 ++ lib/pleroma/workers/worker_helper.ex | 18 ++++++++++++ 23 files changed, 92 insertions(+), 113 deletions(-) create mode 100644 lib/pleroma/workers/digest_emails_worker.ex diff --git a/lib/pleroma/activity_expiration_worker.ex b/lib/pleroma/activity_expiration_worker.ex index 7aba7eece..c0820c202 100644 --- a/lib/pleroma/activity_expiration_worker.ex +++ b/lib/pleroma/activity_expiration_worker.ex @@ -9,14 +9,11 @@ defmodule Pleroma.ActivityExpirationWorker do alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.CommonAPI - alias Pleroma.Workers.ActivityExpirationWorker require Logger use GenServer import Ecto.Query - import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] - @schedule_interval :timer.minutes(1) def start_link(_) do @@ -53,12 +50,10 @@ def perform(:execute, expiration_id) do def handle_info(:perform, state) do ActivityExpiration.due_expirations(@schedule_interval) |> Enum.each(fn expiration -> - %{ - "op" => "activity_expiration", - "activity_expiration_id" => expiration.id - } - |> ActivityExpirationWorker.new(worker_args(:activity_expiration)) - |> Repo.insert() + Pleroma.Workers.ActivityExpirationWorker.enqueue( + "activity_expiration", + %{"activity_expiration_id" => expiration.id} + ) end) schedule_next() diff --git a/lib/pleroma/digest_email_worker.ex b/lib/pleroma/digest_email_worker.ex index 4ab2a4ef4..5be7cf26b 100644 --- a/lib/pleroma/digest_email_worker.ex +++ b/lib/pleroma/digest_email_worker.ex @@ -4,12 +4,10 @@ defmodule Pleroma.DigestEmailWorker do alias Pleroma.Repo - alias Pleroma.Workers.MailerWorker + alias Pleroma.Workers.DigestEmailsWorker import Ecto.Query - import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] - def perform do config = Pleroma.Config.get([:email_notifications, :digest]) negative_interval = -Map.fetch!(config, :interval) @@ -23,11 +21,9 @@ def perform do where: u.last_digest_emailed_at < datetime_add(^now, ^negative_interval, "day"), select: u ) - |> Pleroma.Repo.all() + |> Repo.all() |> Enum.each(fn user -> - %{"op" => "digest_email", "user_id" => user.id} - |> MailerWorker.new([queue: "digest_emails"] ++ worker_args(:digest_emails)) - |> Repo.insert() + DigestEmailsWorker.enqueue("digest_email", %{"user_id" => user.id}) end) end diff --git a/lib/pleroma/emails/mailer.ex b/lib/pleroma/emails/mailer.ex index 9cbe7313c..eb96f2e8b 100644 --- a/lib/pleroma/emails/mailer.ex +++ b/lib/pleroma/emails/mailer.ex @@ -9,7 +9,6 @@ defmodule Pleroma.Emails.Mailer do The module contains functions to delivery email using Swoosh.Mailer. """ - alias Pleroma.Repo alias Pleroma.Workers.MailerWorker alias Swoosh.DeliveryError @@ -19,8 +18,6 @@ defmodule Pleroma.Emails.Mailer do @spec enabled?() :: boolean() def enabled?, do: Pleroma.Config.get([__MODULE__, :enabled]) - import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] - @doc "add email to queue" def deliver_async(email, config \\ []) do encoded_email = @@ -28,9 +25,7 @@ def deliver_async(email, config \\ []) do |> :erlang.term_to_binary() |> Base.encode64() - %{"op" => "email", "encoded_email" => encoded_email, "config" => config} - |> MailerWorker.new(worker_args(:mailer)) - |> Repo.insert() + MailerWorker.enqueue("email", %{"encoded_email" => encoded_email, "config" => config}) end @doc "callback to perform send email from queue" diff --git a/lib/pleroma/scheduled_activity_worker.ex b/lib/pleroma/scheduled_activity_worker.ex index 8bf534f42..c41a542de 100644 --- a/lib/pleroma/scheduled_activity_worker.ex +++ b/lib/pleroma/scheduled_activity_worker.ex @@ -8,7 +8,6 @@ defmodule Pleroma.ScheduledActivityWorker do """ alias Pleroma.Config - alias Pleroma.Repo alias Pleroma.ScheduledActivity alias Pleroma.User alias Pleroma.Web.CommonAPI @@ -18,8 +17,6 @@ defmodule Pleroma.ScheduledActivityWorker do @schedule_interval :timer.minutes(1) - import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] - def start_link(_) do GenServer.start_link(__MODULE__, nil) end @@ -49,9 +46,10 @@ def perform(:execute, scheduled_activity_id) do def handle_info(:perform, state) do ScheduledActivity.due_activities(@schedule_interval) |> Enum.each(fn scheduled_activity -> - %{"op" => "execute", "activity_id" => scheduled_activity.id} - |> Pleroma.Workers.ScheduledActivityWorker.new(worker_args(:scheduled_activities)) - |> Repo.insert() + Pleroma.Workers.ScheduledActivityWorker.enqueue( + "execute", + %{"activity_id" => scheduled_activity.id} + ) end) schedule_next() diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index abfa063fb..2fe7e1748 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -41,8 +41,6 @@ defmodule Pleroma.User do @strict_local_nickname_regex ~r/^[a-zA-Z\d]+$/ @extended_local_nickname_regex ~r/^[a-zA-Z\d_-]+$/ - import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] - schema "users" do field(:bio, :string) field(:email, :string) @@ -623,9 +621,7 @@ def get_or_fetch_by_nickname(nickname) do @doc "Fetch some posts when the user has just been federated with" def fetch_initial_posts(user) do - %{"op" => "fetch_initial_posts", "user_id" => user.id} - |> BackgroundWorker.new(worker_args(:background)) - |> Repo.insert() + BackgroundWorker.enqueue("fetch_initial_posts", %{"user_id" => user.id}) end @spec get_followers_query(User.t(), pos_integer() | nil) :: Ecto.Query.t() @@ -1056,9 +1052,7 @@ def unblock_domain(user, domain) do end def deactivate_async(user, status \\ true) do - %{"op" => "deactivate_user", "user_id" => user.id, "status" => status} - |> BackgroundWorker.new(worker_args(:background)) - |> Repo.insert() + BackgroundWorker.enqueue("deactivate_user", %{"user_id" => user.id, "status" => status}) end def deactivate(%User{} = user, status \\ true) do @@ -1087,9 +1081,7 @@ def update_notification_settings(%User{} = user, settings \\ %{}) do end def delete(%User{} = user) do - %{"op" => "delete_user", "user_id" => user.id} - |> BackgroundWorker.new(worker_args(:background)) - |> Repo.insert() + BackgroundWorker.enqueue("delete_user", %{"user_id" => user.id}) end @spec perform(atom(), User.t()) :: {:ok, User.t()} @@ -1198,24 +1190,18 @@ def external_users(opts \\ []) do end def blocks_import(%User{} = blocker, blocked_identifiers) when is_list(blocked_identifiers) do - %{ - "op" => "blocks_import", + BackgroundWorker.enqueue("blocks_import", %{ "blocker_id" => blocker.id, "blocked_identifiers" => blocked_identifiers - } - |> BackgroundWorker.new(worker_args(:background)) - |> Repo.insert() + }) end def follow_import(%User{} = follower, followed_identifiers) when is_list(followed_identifiers) do - %{ - "op" => "follow_import", + BackgroundWorker.enqueue("follow_import", %{ "follower_id" => follower.id, "followed_identifiers" => followed_identifiers - } - |> BackgroundWorker.new(worker_args(:background)) - |> Repo.insert() + }) end def delete_user_activities(%User{ap_id: ap_id} = user) do diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 74c5eb91c..90b409606 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -26,8 +26,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do require Logger require Pleroma.Constants - import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] - # For Announce activities, we filter the recipients based on following status for any actors # that match actual users. See issue #164 for more information about why this is necessary. defp get_recipients(%{"type" => "Announce"} = data) do @@ -148,9 +146,7 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when activity end - %{"op" => "fetch_data_for_activity", "activity_id" => activity.id} - |> BackgroundWorker.new(worker_args(:background)) - |> Repo.insert() + BackgroundWorker.enqueue("fetch_data_for_activity", %{"activity_id" => activity.id}) Notification.create_notifications(activity) diff --git a/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex index 178321558..26b8539fe 100644 --- a/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do @behaviour Pleroma.Web.ActivityPub.MRF alias Pleroma.HTTP - alias Pleroma.Repo alias Pleroma.Web.MediaProxy alias Pleroma.Workers.BackgroundWorker @@ -18,8 +17,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do recv_timeout: 10_000 ] - import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] - def perform(:prefetch, url) do Logger.info("Prefetching #{inspect(url)}") @@ -34,9 +31,7 @@ def perform(:preload, %{"object" => %{"attachment" => attachments}} = _message) url |> Enum.each(fn %{"href" => href} -> - %{"op" => "media_proxy_prefetch", "url" => href} - |> BackgroundWorker.new(worker_args(:background)) - |> Repo.insert() + BackgroundWorker.enqueue("media_proxy_prefetch", %{"url" => href}) x -> Logger.debug("Unhandled attachment URL object #{inspect(x)}") @@ -52,9 +47,7 @@ def filter( %{"type" => "Create", "object" => %{"attachment" => attachments} = _object} = message ) when is_list(attachments) and length(attachments) > 0 do - %{"op" => "media_proxy_preload", "message" => message} - |> BackgroundWorker.new(worker_args(:background)) - |> Repo.insert() + BackgroundWorker.enqueue("media_proxy_preload", %{"message" => message}) {:ok, message} end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 9437f9a16..f27455e8b 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -22,8 +22,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do require Logger require Pleroma.Constants - import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] - @doc """ Modifies an incoming AP object (mastodon format) to our internal format. """ @@ -1054,9 +1052,7 @@ def upgrade_user_from_ap_id(ap_id) do already_ap <- User.ap_enabled?(user), {:ok, user} <- user |> User.upgrade_changeset(data) |> User.update_and_set_cache() do unless already_ap do - %{"op" => "user_upgrade", "user_id" => user.id} - |> TransmogrifierWorker.new(worker_args(:transmogrifier)) - |> Repo.insert() + TransmogrifierWorker.enqueue("user_upgrade", %{"user_id" => user.id}) end {:ok, user} diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index 8f43066e3..1a2da014a 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -18,8 +18,6 @@ defmodule Pleroma.Web.Federator do require Logger - import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] - def init do # To do: consider removing this call in favor of scheduled execution (`quantum`-based) refresh_subscriptions(schedule_in: 60) @@ -40,15 +38,11 @@ def allowed_incoming_reply_depth?(depth) do # Client API def incoming_doc(doc) do - %{"op" => "incoming_doc", "body" => doc} - |> ReceiverWorker.new(worker_args(:federator_incoming)) - |> Pleroma.Repo.insert() + ReceiverWorker.enqueue("incoming_doc", %{"body" => doc}) end def incoming_ap_doc(params) do - %{"op" => "incoming_ap_doc", "params" => params} - |> ReceiverWorker.new(worker_args(:federator_incoming)) - |> Pleroma.Repo.insert() + ReceiverWorker.enqueue("incoming_ap_doc", %{"params" => params}) end def publish(%{id: "pleroma:fakeid"} = activity) do @@ -56,27 +50,19 @@ def publish(%{id: "pleroma:fakeid"} = activity) do end def publish(activity) do - %{"op" => "publish", "activity_id" => activity.id} - |> PublisherWorker.new(worker_args(:federator_outgoing)) - |> Pleroma.Repo.insert() + PublisherWorker.enqueue("publish", %{"activity_id" => activity.id}) end def verify_websub(websub) do - %{"op" => "verify_websub", "websub_id" => websub.id} - |> SubscriberWorker.new(worker_args(:federator_outgoing)) - |> Pleroma.Repo.insert() + SubscriberWorker.enqueue("verify_websub", %{"websub_id" => websub.id}) end def request_subscription(websub) do - %{"op" => "request_subscription", "websub_id" => websub.id} - |> SubscriberWorker.new(worker_args(:federator_outgoing)) - |> Pleroma.Repo.insert() + SubscriberWorker.enqueue("request_subscription", %{"websub_id" => websub.id}) end def refresh_subscriptions(worker_args \\ []) do - %{"op" => "refresh_subscriptions"} - |> SubscriberWorker.new(worker_args ++ [max_attempts: 1] ++ worker_args(:federator_outgoing)) - |> Pleroma.Repo.insert() + SubscriberWorker.enqueue("refresh_subscriptions", %{}, worker_args ++ [max_attempts: 1]) end # Job Worker Callbacks diff --git a/lib/pleroma/web/federator/publisher.ex b/lib/pleroma/web/federator/publisher.ex index 42be109ab..937064638 100644 --- a/lib/pleroma/web/federator/publisher.ex +++ b/lib/pleroma/web/federator/publisher.ex @@ -31,11 +31,10 @@ defmodule Pleroma.Web.Federator.Publisher do """ @spec enqueue_one(module(), Map.t()) :: :ok def enqueue_one(module, %{} = params) do - worker_args = Pleroma.Workers.WorkerHelper.worker_args(:federator_outgoing) - - %{"op" => "publish_one", "module" => to_string(module), "params" => params} - |> PublisherWorker.new(worker_args) - |> Pleroma.Repo.insert() + PublisherWorker.enqueue( + "publish_one", + %{"module" => to_string(module), "params" => params} + ) end @doc """ diff --git a/lib/pleroma/web/oauth/token/clean_worker.ex b/lib/pleroma/web/oauth/token/clean_worker.ex index b150a68a7..eb94bf86f 100644 --- a/lib/pleroma/web/oauth/token/clean_worker.ex +++ b/lib/pleroma/web/oauth/token/clean_worker.ex @@ -16,12 +16,9 @@ defmodule Pleroma.Web.OAuth.Token.CleanWorker do @one_day ) - alias Pleroma.Repo alias Pleroma.Web.OAuth.Token alias Pleroma.Workers.BackgroundWorker - import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] - def start_link(_), do: GenServer.start_link(__MODULE__, %{}) def init(_) do @@ -31,9 +28,7 @@ def init(_) do @doc false def handle_info(:perform, state) do - %{"op" => "clean_expired_tokens"} - |> BackgroundWorker.new(worker_args(:background)) - |> Repo.insert() + BackgroundWorker.enqueue("clean_expired_tokens", %{}) Process.send_after(self(), :perform, @interval) {:noreply, state} diff --git a/lib/pleroma/web/push/push.ex b/lib/pleroma/web/push/push.ex index 4973b529c..7ef1532ac 100644 --- a/lib/pleroma/web/push/push.ex +++ b/lib/pleroma/web/push/push.ex @@ -3,13 +3,10 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Push do - alias Pleroma.Repo alias Pleroma.Workers.WebPusherWorker require Logger - import Pleroma.Workers.WorkerHelper, only: [worker_args: 1] - def init do unless enabled() do Logger.warn(""" @@ -35,8 +32,6 @@ def enabled do end def send(notification) do - %{"op" => "web_push", "notification_id" => notification.id} - |> WebPusherWorker.new(worker_args(:web_push)) - |> Repo.insert() + WebPusherWorker.enqueue("web_push", %{"notification_id" => notification.id}) end end diff --git a/lib/pleroma/workers/activity_expiration_worker.ex b/lib/pleroma/workers/activity_expiration_worker.ex index 0b491eabb..60dd3feba 100644 --- a/lib/pleroma/workers/activity_expiration_worker.ex +++ b/lib/pleroma/workers/activity_expiration_worker.ex @@ -8,6 +8,8 @@ defmodule Pleroma.Workers.ActivityExpirationWorker do queue: "activity_expiration", max_attempts: 1 + use Pleroma.Workers.WorkerHelper, queue: "activity_expiration" + @impl Oban.Worker def perform( %{ diff --git a/lib/pleroma/workers/background_worker.ex b/lib/pleroma/workers/background_worker.ex index 7b5575a5f..b9aef3a92 100644 --- a/lib/pleroma/workers/background_worker.ex +++ b/lib/pleroma/workers/background_worker.ex @@ -13,6 +13,8 @@ defmodule Pleroma.Workers.BackgroundWorker do queue: "background", max_attempts: 1 + use Pleroma.Workers.WorkerHelper, queue: "background" + @impl Oban.Worker def perform(%{"op" => "fetch_initial_posts", "user_id" => user_id}, _job) do user = User.get_cached_by_id(user_id) diff --git a/lib/pleroma/workers/digest_emails_worker.ex b/lib/pleroma/workers/digest_emails_worker.ex new file mode 100644 index 000000000..ca073ce67 --- /dev/null +++ b/lib/pleroma/workers/digest_emails_worker.ex @@ -0,0 +1,21 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.DigestEmailsWorker do + alias Pleroma.User + + # Note: `max_attempts` is intended to be overridden in `new/2` call + use Oban.Worker, + queue: "digest_emails", + max_attempts: 1 + + use Pleroma.Workers.WorkerHelper, queue: "digest_emails" + + @impl Oban.Worker + def perform(%{"op" => "digest_email", "user_id" => user_id}, _job) do + user_id + |> User.get_cached_by_id() + |> Pleroma.DigestEmailWorker.perform() + end +end diff --git a/lib/pleroma/workers/mailer_worker.ex b/lib/pleroma/workers/mailer_worker.ex index 4f73d61bc..a4bd54a6c 100644 --- a/lib/pleroma/workers/mailer_worker.ex +++ b/lib/pleroma/workers/mailer_worker.ex @@ -3,13 +3,13 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.MailerWorker do - alias Pleroma.User - # Note: `max_attempts` is intended to be overridden in `new/2` call use Oban.Worker, queue: "mailer", max_attempts: 1 + use Pleroma.Workers.WorkerHelper, queue: "mailer" + @impl Oban.Worker def perform(%{"op" => "email", "encoded_email" => encoded_email, "config" => config}, _job) do encoded_email @@ -17,10 +17,4 @@ def perform(%{"op" => "email", "encoded_email" => encoded_email, "config" => con |> :erlang.binary_to_term() |> Pleroma.Emails.Mailer.deliver(config) end - - def perform(%{"op" => "digest_email", "user_id" => user_id}, _job) do - user_id - |> User.get_cached_by_id() - |> Pleroma.DigestEmailWorker.perform() - end end diff --git a/lib/pleroma/workers/publisher_worker.ex b/lib/pleroma/workers/publisher_worker.ex index 5671d2a29..a3ac22635 100644 --- a/lib/pleroma/workers/publisher_worker.ex +++ b/lib/pleroma/workers/publisher_worker.ex @@ -11,6 +11,8 @@ defmodule Pleroma.Workers.PublisherWorker do queue: "federator_outgoing", max_attempts: 1 + use Pleroma.Workers.WorkerHelper, queue: "federator_outgoing" + def backoff(attempt) when is_integer(attempt) do Pleroma.Workers.WorkerHelper.sidekiq_backoff(attempt, 5) end diff --git a/lib/pleroma/workers/receiver_worker.ex b/lib/pleroma/workers/receiver_worker.ex index cdce630f2..3cc415ce4 100644 --- a/lib/pleroma/workers/receiver_worker.ex +++ b/lib/pleroma/workers/receiver_worker.ex @@ -10,6 +10,8 @@ defmodule Pleroma.Workers.ReceiverWorker do queue: "federator_incoming", max_attempts: 1 + use Pleroma.Workers.WorkerHelper, queue: "federator_incoming" + @impl Oban.Worker def perform(%{"op" => "incoming_doc", "body" => doc}, _job) do Federator.perform(:incoming_doc, doc) diff --git a/lib/pleroma/workers/scheduled_activity_worker.ex b/lib/pleroma/workers/scheduled_activity_worker.ex index 4094411ae..936bb64d3 100644 --- a/lib/pleroma/workers/scheduled_activity_worker.ex +++ b/lib/pleroma/workers/scheduled_activity_worker.ex @@ -8,6 +8,8 @@ defmodule Pleroma.Workers.ScheduledActivityWorker do queue: "scheduled_activities", max_attempts: 1 + use Pleroma.Workers.WorkerHelper, queue: "scheduled_activities" + @impl Oban.Worker def perform(%{"op" => "execute", "activity_id" => activity_id}, _job) do Pleroma.ScheduledActivityWorker.perform(:execute, activity_id) diff --git a/lib/pleroma/workers/subscriber_worker.ex b/lib/pleroma/workers/subscriber_worker.ex index 22d1dc956..4fb994554 100644 --- a/lib/pleroma/workers/subscriber_worker.ex +++ b/lib/pleroma/workers/subscriber_worker.ex @@ -12,6 +12,8 @@ defmodule Pleroma.Workers.SubscriberWorker do queue: "federator_outgoing", max_attempts: 1 + use Pleroma.Workers.WorkerHelper, queue: "federator_outgoing" + @impl Oban.Worker def perform(%{"op" => "refresh_subscriptions"}, _job) do Federator.perform(:refresh_subscriptions) diff --git a/lib/pleroma/workers/transmogrifier_worker.ex b/lib/pleroma/workers/transmogrifier_worker.ex index 6f5c1a2f2..6fecc2bf9 100644 --- a/lib/pleroma/workers/transmogrifier_worker.ex +++ b/lib/pleroma/workers/transmogrifier_worker.ex @@ -10,6 +10,8 @@ defmodule Pleroma.Workers.TransmogrifierWorker do queue: "transmogrifier", max_attempts: 1 + use Pleroma.Workers.WorkerHelper, queue: "transmogrifier" + @impl Oban.Worker def perform(%{"op" => "user_upgrade", "user_id" => user_id}, _job) do user = User.get_cached_by_id(user_id) diff --git a/lib/pleroma/workers/web_pusher_worker.ex b/lib/pleroma/workers/web_pusher_worker.ex index 2b1d3b99a..4c2591a5c 100644 --- a/lib/pleroma/workers/web_pusher_worker.ex +++ b/lib/pleroma/workers/web_pusher_worker.ex @@ -11,6 +11,8 @@ defmodule Pleroma.Workers.WebPusherWorker do queue: "web_push", max_attempts: 1 + use Pleroma.Workers.WorkerHelper, queue: "web_push" + @impl Oban.Worker def perform(%{"op" => "web_push", "notification_id" => notification_id}, _job) do notification = Repo.get(Notification, notification_id) diff --git a/lib/pleroma/workers/worker_helper.ex b/lib/pleroma/workers/worker_helper.ex index f9ed2e64d..b12f198d4 100644 --- a/lib/pleroma/workers/worker_helper.ex +++ b/lib/pleroma/workers/worker_helper.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Workers.WorkerHelper do alias Pleroma.Config + alias Pleroma.Workers.WorkerHelper def worker_args(queue) do case Config.get([:workers, :retries, queue]) do @@ -20,4 +21,21 @@ def sidekiq_backoff(attempt, pow \\ 4, base_backoff \\ 15) do trunc(backoff) end + + defmacro __using__(opts) do + caller_module = __CALLER__.module + queue = Keyword.fetch!(opts, :queue) + + quote do + def enqueue(op, params, worker_args \\ []) do + params = Map.merge(%{"op" => op}, params) + queue_atom = String.to_atom(unquote(queue)) + worker_args = worker_args ++ WorkerHelper.worker_args(queue_atom) + + unquote(caller_module) + |> apply(:new, [params, worker_args]) + |> Pleroma.Repo.insert() + end + end + end end From 9c96b17e16a4911d3e20149e1b54b12baaf71617 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sun, 1 Sep 2019 21:23:30 +0300 Subject: [PATCH 024/272] Add pagination to logs --- lib/pleroma/moderation_log.ex | 29 +++++++++++++------ .../admin_api/views/moderation_log_view.ex | 5 +++- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/moderation_log.ex b/lib/pleroma/moderation_log.ex index 89a5e13c3..352cad433 100644 --- a/lib/pleroma/moderation_log.ex +++ b/lib/pleroma/moderation_log.ex @@ -15,12 +15,18 @@ defmodule Pleroma.ModerationLog do end def get_all(params) do - params - |> get_all_query() - |> maybe_filter_by_date(params) - |> maybe_filter_by_user(params) - |> maybe_filter_by_search(params) - |> Repo.all() + base_query = + get_all_query() + |> maybe_filter_by_date(params) + |> maybe_filter_by_user(params) + |> maybe_filter_by_search(params) + + query_with_pagination = base_query |> paginate_query(params) + + %{ + items: Repo.all(query_with_pagination), + count: Repo.aggregate(base_query, :count, :id) + } end defp maybe_filter_by_date(query, %{start_date: nil, end_date: nil}), do: query @@ -61,14 +67,19 @@ defp maybe_filter_by_search(query, %{search: search}) do ) end - defp get_all_query(%{page: page, page_size: page_size}) do - from(q in __MODULE__, - order_by: [desc: q.inserted_at], + defp paginate_query(query, %{page: page, page_size: page_size}) do + from(q in query, limit: ^page_size, offset: ^((page - 1) * page_size) ) end + defp get_all_query do + from(q in __MODULE__, + order_by: [desc: q.inserted_at] + ) + end + defp parse_datetime(datetime) do {:ok, parsed_datetime, _} = DateTime.from_iso8601(datetime) diff --git a/lib/pleroma/web/admin_api/views/moderation_log_view.ex b/lib/pleroma/web/admin_api/views/moderation_log_view.ex index b3fc7cfe5..e7752d1f3 100644 --- a/lib/pleroma/web/admin_api/views/moderation_log_view.ex +++ b/lib/pleroma/web/admin_api/views/moderation_log_view.ex @@ -8,7 +8,10 @@ defmodule Pleroma.Web.AdminAPI.ModerationLogView do alias Pleroma.ModerationLog def render("index.json", %{log: log}) do - render_many(log, __MODULE__, "show.json", as: :log_entry) + %{ + items: render_many(log.items, __MODULE__, "show.json", as: :log_entry), + total: log.count + } end def render("show.json", %{log_entry: log_entry}) do From c5ffbfb8d547199f2345e28f085dd12e8b443f21 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sun, 1 Sep 2019 21:25:55 +0300 Subject: [PATCH 025/272] Changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fdcb014a..0d44944eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,6 +95,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mix Tasks: `mix pleroma.database fix_likes_collections` - Federation: Remove `likes` from objects. - Admin API: Added moderation log +- Admin API: Added moderation log filters (user/start date/end date/search/pagination) ### Changed - Configuration: Filter.AnonymizeFilename added ability to retain file extension with custom text From 6c2fd1b78bbbb4486a5dddeffa053199ba8cc015 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sun, 1 Sep 2019 21:38:15 +0300 Subject: [PATCH 026/272] Fix tests --- .../admin_api/admin_api_controller_test.exs | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index eaf847b25..b87fffc34 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -2286,9 +2286,9 @@ test "returns the log", %{conn: conn, admin: admin} do conn = get(conn, "/api/pleroma/admin/moderation_log") response = json_response(conn, 200) - [first_entry, second_entry] = response + [first_entry, second_entry] = response["items"] - assert response |> length() == 2 + assert response["total"] == 2 assert first_entry["data"]["action"] == "relay_unfollow" assert first_entry["message"] == @@ -2330,9 +2330,10 @@ test "returns the log with pagination", %{conn: conn, admin: admin} do conn1 = get(conn, "/api/pleroma/admin/moderation_log?page_size=1&page=1") response1 = json_response(conn1, 200) - [first_entry] = response1 + [first_entry] = response1["items"] - assert response1 |> length() == 1 + assert response1["total"] == 2 + assert response1["items"] |> length() == 1 assert first_entry["data"]["action"] == "relay_unfollow" assert first_entry["message"] == @@ -2341,9 +2342,10 @@ test "returns the log with pagination", %{conn: conn, admin: admin} do conn2 = get(conn, "/api/pleroma/admin/moderation_log?page_size=1&page=2") response2 = json_response(conn2, 200) - [second_entry] = response2 + [second_entry] = response2["items"] - assert response2 |> length() == 1 + assert response2["total"] == 2 + assert response2["items"] |> length() == 1 assert second_entry["data"]["action"] == "relay_follow" assert second_entry["message"] == @@ -2387,9 +2389,9 @@ test "filters log by date", %{conn: conn, admin: admin} do ) response1 = json_response(conn1, 200) - [first_entry] = response1 + [first_entry] = response1["items"] - assert response1 |> length() == 1 + assert response1["total"] == 1 assert first_entry["data"]["action"] == "relay_unfollow" assert first_entry["message"] == @@ -2424,9 +2426,9 @@ test "returns log filtered by user", %{conn: conn, admin: admin, moderator: mode conn1 = get(conn, "/api/pleroma/admin/moderation_log?user_id=#{moderator.id}") response1 = json_response(conn1, 200) - [first_entry] = response1 + [first_entry] = response1["items"] - assert response1 |> length() == 1 + assert response1["total"] == 1 assert get_in(first_entry, ["data", "actor", "id"]) == moderator.id end @@ -2446,9 +2448,9 @@ test "returns log filtered by search", %{conn: conn, moderator: moderator} do conn1 = get(conn, "/api/pleroma/admin/moderation_log?search=unfo") response1 = json_response(conn1, 200) - [first_entry] = response1 + [first_entry] = response1["items"] - assert response1 |> length() == 1 + assert response1["total"] == 1 assert get_in(first_entry, ["data", "message"]) == "@#{moderator.nickname} unfollowed relay: https://example.org/relay" From 35ef470d000c53e21c6f867d53ca3a83260d93b8 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Mon, 2 Sep 2019 12:15:21 +0100 Subject: [PATCH 027/272] truncate fields for remote users instead --- lib/pleroma/user/info.ex | 7 +++++++ test/user_test.exs | 17 +++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex index 779bfbc18..0beb2f721 100644 --- a/lib/pleroma/user/info.ex +++ b/lib/pleroma/user/info.ex @@ -242,6 +242,7 @@ def set_keys(info, keys) do end def remote_user_creation(info, params) do + params = Map.put(params, "fields", Enum.map(params["fields"], &truncate_field/1)) info |> cast(params, [ :ap_enabled, @@ -326,6 +327,12 @@ defp valid_field?(%{"name" => name, "value" => value}) do defp valid_field?(_), do: false + defp truncate_field(%{"name" => name, "value" => value}) do + {name, _chopped} = String.split_at(name, Pleroma.Config.get([:instance, :account_field_name_length], 255)) + {value, _chopped} = String.split_at(value, Pleroma.Config.get([:instance, :account_field_value_length], 255)) + %{"name" => name, "value" => value} + end + @spec confirmation_changeset(Info.t(), keyword()) :: Changeset.t() def confirmation_changeset(info, opts) do need_confirmation? = Keyword.get(opts, :need_confirmation) diff --git a/test/user_test.exs b/test/user_test.exs index 2cbc1f525..68a469fe3 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1117,11 +1117,20 @@ test "get_public_key_for_ap_id fetches a user that's not in the db" do assert {:ok, _key} = User.get_public_key_for_ap_id("http://mastodon.example.org/users/admin") end - test "insert or update a user from given data" do - user = insert(:user, %{nickname: "nick@name.de"}) - data = %{ap_id: user.ap_id <> "xxx", name: user.name, nickname: user.nickname} + describe "insert or update a user from given data" do + test "with normal data" do + user = insert(:user, %{nickname: "nick@name.de"}) + data = %{ap_id: user.ap_id <> "xxx", name: user.name, nickname: user.nickname} - assert {:ok, %User{}} = User.insert_or_update_user(data) + assert {:ok, %User{}} = User.insert_or_update_user(data) + end + + test "with overly long fields" do + current_max_length = Pleroma.Config.get([:instance, :account_field_value_length], 255) + user = insert(:user, nickname: "nickname@supergood.domain") + data = %{ap_id: user.ap_id, info: %{ fields: [%{"name" => "myfield", "value" => String.duplicate("h", current_max_length + 1)}] }} + assert {:ok, %User{}} = User.insert_or_update_user(data) + end end describe "per-user rich-text filtering" do From 05c935c3961e4c1a20c7713611920318d45d4b57 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Mon, 2 Sep 2019 12:15:40 +0100 Subject: [PATCH 028/272] mix format --- lib/pleroma/user/info.ex | 9 +++++++-- test/user_test.exs | 23 ++++++++++++++++------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex index 0beb2f721..ca1282d02 100644 --- a/lib/pleroma/user/info.ex +++ b/lib/pleroma/user/info.ex @@ -243,6 +243,7 @@ def set_keys(info, keys) do def remote_user_creation(info, params) do params = Map.put(params, "fields", Enum.map(params["fields"], &truncate_field/1)) + info |> cast(params, [ :ap_enabled, @@ -328,8 +329,12 @@ defp valid_field?(%{"name" => name, "value" => value}) do defp valid_field?(_), do: false defp truncate_field(%{"name" => name, "value" => value}) do - {name, _chopped} = String.split_at(name, Pleroma.Config.get([:instance, :account_field_name_length], 255)) - {value, _chopped} = String.split_at(value, Pleroma.Config.get([:instance, :account_field_value_length], 255)) + {name, _chopped} = + String.split_at(name, Pleroma.Config.get([:instance, :account_field_name_length], 255)) + + {value, _chopped} = + String.split_at(value, Pleroma.Config.get([:instance, :account_field_value_length], 255)) + %{"name" => name, "value" => value} end diff --git a/test/user_test.exs b/test/user_test.exs index 68a469fe3..0ca310331 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1119,17 +1119,26 @@ test "get_public_key_for_ap_id fetches a user that's not in the db" do describe "insert or update a user from given data" do test "with normal data" do - user = insert(:user, %{nickname: "nick@name.de"}) - data = %{ap_id: user.ap_id <> "xxx", name: user.name, nickname: user.nickname} + user = insert(:user, %{nickname: "nick@name.de"}) + data = %{ap_id: user.ap_id <> "xxx", name: user.name, nickname: user.nickname} - assert {:ok, %User{}} = User.insert_or_update_user(data) + assert {:ok, %User{}} = User.insert_or_update_user(data) end test "with overly long fields" do - current_max_length = Pleroma.Config.get([:instance, :account_field_value_length], 255) - user = insert(:user, nickname: "nickname@supergood.domain") - data = %{ap_id: user.ap_id, info: %{ fields: [%{"name" => "myfield", "value" => String.duplicate("h", current_max_length + 1)}] }} - assert {:ok, %User{}} = User.insert_or_update_user(data) + current_max_length = Pleroma.Config.get([:instance, :account_field_value_length], 255) + user = insert(:user, nickname: "nickname@supergood.domain") + + data = %{ + ap_id: user.ap_id, + info: %{ + fields: [ + %{"name" => "myfield", "value" => String.duplicate("h", current_max_length + 1)} + ] + } + } + + assert {:ok, %User{}} = User.insert_or_update_user(data) end end From d0f07e55d28d25684130cb1090d0bdbb48807548 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Mon, 2 Sep 2019 12:31:23 +0100 Subject: [PATCH 029/272] use atom key for fields --- lib/pleroma/user/info.ex | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex index ca1282d02..151e025de 100644 --- a/lib/pleroma/user/info.ex +++ b/lib/pleroma/user/info.ex @@ -242,7 +242,12 @@ def set_keys(info, keys) do end def remote_user_creation(info, params) do - params = Map.put(params, "fields", Enum.map(params["fields"], &truncate_field/1)) + params = + if Map.has_key?(params, :fields) do + Map.put(params, :fields, Enum.map(params[:fields], &truncate_field/1)) + else + params + end info |> cast(params, [ From e73685834c1797404c943f66417ffa30add87e04 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Mon, 2 Sep 2019 12:35:55 +0100 Subject: [PATCH 030/272] add mandatory fields for user update --- test/user_test.exs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/user_test.exs b/test/user_test.exs index 0ca310331..92a48f630 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1131,6 +1131,8 @@ test "with overly long fields" do data = %{ ap_id: user.ap_id, + name: user.name, + nickname: user.nickname, info: %{ fields: [ %{"name" => "myfield", "value" => String.duplicate("h", current_max_length + 1)} From b49085c156a6a4449c95c2c315f6250317122735 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Mon, 2 Sep 2019 14:57:40 +0300 Subject: [PATCH 031/272] [#1149] Refactoring: GenServer workers renamed to daemons, `use Oban.Worker` moved to helper. --- config/config.exs | 2 +- lib/pleroma/application.ex | 4 ++-- .../activity_expiration_daemon.ex} | 2 +- .../digest_email_daemon.ex} | 2 +- .../scheduled_activity_daemon.ex} | 2 +- lib/pleroma/workers/activity_expiration_worker.ex | 7 +------ lib/pleroma/workers/background_worker.ex | 5 ----- lib/pleroma/workers/digest_emails_worker.ex | 7 +------ lib/pleroma/workers/mailer_worker.ex | 5 ----- lib/pleroma/workers/publisher_worker.ex | 5 ----- lib/pleroma/workers/receiver_worker.ex | 5 ----- lib/pleroma/workers/scheduled_activity_worker.ex | 7 +------ lib/pleroma/workers/subscriber_worker.ex | 5 ----- lib/pleroma/workers/transmogrifier_worker.ex | 5 ----- lib/pleroma/workers/web_pusher_worker.ex | 5 ----- lib/pleroma/workers/worker_helper.ex | 5 +++++ .../activity_expiration_daemon_test.exs} | 2 +- .../digest_email_daemon_test.exs} | 6 +++--- .../scheduled_activity_daemon_test.exs} | 4 ++-- 19 files changed, 20 insertions(+), 65 deletions(-) rename lib/pleroma/{activity_expiration_worker.ex => daemons/activity_expiration_daemon.ex} (96%) rename lib/pleroma/{digest_email_worker.ex => daemons/digest_email_daemon.ex} (96%) rename lib/pleroma/{scheduled_activity_worker.ex => daemons/scheduled_activity_daemon.ex} (96%) rename test/{activity_expiration_worker_test.exs => daemons/activity_expiration_daemon_test.exs} (86%) rename test/{web/digest_email_worker_test.exs => daemons/digest_email_daemon_test.exs} (88%) rename test/{scheduled_activity_worker_test.exs => daemons/scheduled_activity_daemon_test.exs} (82%) diff --git a/config/config.exs b/config/config.exs index 6fb4a0969..b742a650d 100644 --- a/config/config.exs +++ b/config/config.exs @@ -54,7 +54,7 @@ scheduled_jobs = with digest_config <- Application.get_env(:pleroma, :email_notifications)[:digest], true <- digest_config[:active] do - [{digest_config[:schedule], {Pleroma.DigestEmailWorker, :perform, []}}] + [{digest_config[:schedule], {Pleroma.Daemons.DigestEmailDaemon, :perform, []}}] else _ -> [] end diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index f8f866dbd..0c27027a0 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -36,8 +36,8 @@ def start(_type, _args) do Pleroma.Emoji, Pleroma.Captcha, Pleroma.FlakeId, - Pleroma.ScheduledActivityWorker, - Pleroma.ActivityExpirationWorker + Pleroma.Daemons.ScheduledActivityDaemon, + Pleroma.Daemons.ActivityExpirationDaemon ] ++ cachex_children() ++ hackney_pool_children() ++ diff --git a/lib/pleroma/activity_expiration_worker.ex b/lib/pleroma/daemons/activity_expiration_daemon.ex similarity index 96% rename from lib/pleroma/activity_expiration_worker.ex rename to lib/pleroma/daemons/activity_expiration_daemon.ex index c0820c202..cab7628c4 100644 --- a/lib/pleroma/activity_expiration_worker.ex +++ b/lib/pleroma/daemons/activity_expiration_daemon.ex @@ -2,7 +2,7 @@ # Copyright © 2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.ActivityExpirationWorker do +defmodule Pleroma.Daemons.ActivityExpirationDaemon do alias Pleroma.Activity alias Pleroma.ActivityExpiration alias Pleroma.Config diff --git a/lib/pleroma/digest_email_worker.ex b/lib/pleroma/daemons/digest_email_daemon.ex similarity index 96% rename from lib/pleroma/digest_email_worker.ex rename to lib/pleroma/daemons/digest_email_daemon.ex index 5be7cf26b..462ad2c55 100644 --- a/lib/pleroma/digest_email_worker.ex +++ b/lib/pleroma/daemons/digest_email_daemon.ex @@ -2,7 +2,7 @@ # Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.DigestEmailWorker do +defmodule Pleroma.Daemons.DigestEmailDaemon do alias Pleroma.Repo alias Pleroma.Workers.DigestEmailsWorker diff --git a/lib/pleroma/scheduled_activity_worker.ex b/lib/pleroma/daemons/scheduled_activity_daemon.ex similarity index 96% rename from lib/pleroma/scheduled_activity_worker.ex rename to lib/pleroma/daemons/scheduled_activity_daemon.ex index c41a542de..aee5f723a 100644 --- a/lib/pleroma/scheduled_activity_worker.ex +++ b/lib/pleroma/daemons/scheduled_activity_daemon.ex @@ -2,7 +2,7 @@ # Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.ScheduledActivityWorker do +defmodule Pleroma.Daemons.ScheduledActivityDaemon do @moduledoc """ Sends scheduled activities to the job queue. """ diff --git a/lib/pleroma/workers/activity_expiration_worker.ex b/lib/pleroma/workers/activity_expiration_worker.ex index 60dd3feba..4e3e4195f 100644 --- a/lib/pleroma/workers/activity_expiration_worker.ex +++ b/lib/pleroma/workers/activity_expiration_worker.ex @@ -3,11 +3,6 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.ActivityExpirationWorker do - # Note: `max_attempts` is intended to be overridden in `new/2` call - use Oban.Worker, - queue: "activity_expiration", - max_attempts: 1 - use Pleroma.Workers.WorkerHelper, queue: "activity_expiration" @impl Oban.Worker @@ -18,6 +13,6 @@ def perform( }, _job ) do - Pleroma.ActivityExpirationWorker.perform(:execute, activity_expiration_id) + Pleroma.Daemons.ActivityExpirationDaemon.perform(:execute, activity_expiration_id) end end diff --git a/lib/pleroma/workers/background_worker.ex b/lib/pleroma/workers/background_worker.ex index b9aef3a92..082f20ab7 100644 --- a/lib/pleroma/workers/background_worker.ex +++ b/lib/pleroma/workers/background_worker.ex @@ -8,11 +8,6 @@ defmodule Pleroma.Workers.BackgroundWorker do alias Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy alias Pleroma.Web.OAuth.Token.CleanWorker - # Note: `max_attempts` is intended to be overridden in `new/2` call - use Oban.Worker, - queue: "background", - max_attempts: 1 - use Pleroma.Workers.WorkerHelper, queue: "background" @impl Oban.Worker diff --git a/lib/pleroma/workers/digest_emails_worker.ex b/lib/pleroma/workers/digest_emails_worker.ex index ca073ce67..3e5a836d0 100644 --- a/lib/pleroma/workers/digest_emails_worker.ex +++ b/lib/pleroma/workers/digest_emails_worker.ex @@ -5,17 +5,12 @@ defmodule Pleroma.Workers.DigestEmailsWorker do alias Pleroma.User - # Note: `max_attempts` is intended to be overridden in `new/2` call - use Oban.Worker, - queue: "digest_emails", - max_attempts: 1 - use Pleroma.Workers.WorkerHelper, queue: "digest_emails" @impl Oban.Worker def perform(%{"op" => "digest_email", "user_id" => user_id}, _job) do user_id |> User.get_cached_by_id() - |> Pleroma.DigestEmailWorker.perform() + |> Pleroma.Daemons.DigestEmailDaemon.perform() end end diff --git a/lib/pleroma/workers/mailer_worker.ex b/lib/pleroma/workers/mailer_worker.ex index a4bd54a6c..1b7a0eb3e 100644 --- a/lib/pleroma/workers/mailer_worker.ex +++ b/lib/pleroma/workers/mailer_worker.ex @@ -3,11 +3,6 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.MailerWorker do - # Note: `max_attempts` is intended to be overridden in `new/2` call - use Oban.Worker, - queue: "mailer", - max_attempts: 1 - use Pleroma.Workers.WorkerHelper, queue: "mailer" @impl Oban.Worker diff --git a/lib/pleroma/workers/publisher_worker.ex b/lib/pleroma/workers/publisher_worker.ex index a3ac22635..455f7fc7e 100644 --- a/lib/pleroma/workers/publisher_worker.ex +++ b/lib/pleroma/workers/publisher_worker.ex @@ -6,11 +6,6 @@ defmodule Pleroma.Workers.PublisherWorker do alias Pleroma.Activity alias Pleroma.Web.Federator - # Note: `max_attempts` is intended to be overridden in `new/2` call - use Oban.Worker, - queue: "federator_outgoing", - max_attempts: 1 - use Pleroma.Workers.WorkerHelper, queue: "federator_outgoing" def backoff(attempt) when is_integer(attempt) do diff --git a/lib/pleroma/workers/receiver_worker.ex b/lib/pleroma/workers/receiver_worker.ex index 3cc415ce4..83d528a66 100644 --- a/lib/pleroma/workers/receiver_worker.ex +++ b/lib/pleroma/workers/receiver_worker.ex @@ -5,11 +5,6 @@ defmodule Pleroma.Workers.ReceiverWorker do alias Pleroma.Web.Federator - # Note: `max_attempts` is intended to be overridden in `new/2` call - use Oban.Worker, - queue: "federator_incoming", - max_attempts: 1 - use Pleroma.Workers.WorkerHelper, queue: "federator_incoming" @impl Oban.Worker diff --git a/lib/pleroma/workers/scheduled_activity_worker.ex b/lib/pleroma/workers/scheduled_activity_worker.ex index 936bb64d3..ca7d53af1 100644 --- a/lib/pleroma/workers/scheduled_activity_worker.ex +++ b/lib/pleroma/workers/scheduled_activity_worker.ex @@ -3,15 +3,10 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.ScheduledActivityWorker do - # Note: `max_attempts` is intended to be overridden in `new/2` call - use Oban.Worker, - queue: "scheduled_activities", - max_attempts: 1 - use Pleroma.Workers.WorkerHelper, queue: "scheduled_activities" @impl Oban.Worker def perform(%{"op" => "execute", "activity_id" => activity_id}, _job) do - Pleroma.ScheduledActivityWorker.perform(:execute, activity_id) + Pleroma.Daemons.ScheduledActivityDaemon.perform(:execute, activity_id) end end diff --git a/lib/pleroma/workers/subscriber_worker.ex b/lib/pleroma/workers/subscriber_worker.ex index 4fb994554..fc490e300 100644 --- a/lib/pleroma/workers/subscriber_worker.ex +++ b/lib/pleroma/workers/subscriber_worker.ex @@ -7,11 +7,6 @@ defmodule Pleroma.Workers.SubscriberWorker do alias Pleroma.Web.Federator alias Pleroma.Web.Websub - # Note: `max_attempts` is intended to be overridden in `new/2` call - use Oban.Worker, - queue: "federator_outgoing", - max_attempts: 1 - use Pleroma.Workers.WorkerHelper, queue: "federator_outgoing" @impl Oban.Worker diff --git a/lib/pleroma/workers/transmogrifier_worker.ex b/lib/pleroma/workers/transmogrifier_worker.ex index 6fecc2bf9..b581a2f86 100644 --- a/lib/pleroma/workers/transmogrifier_worker.ex +++ b/lib/pleroma/workers/transmogrifier_worker.ex @@ -5,11 +5,6 @@ defmodule Pleroma.Workers.TransmogrifierWorker do alias Pleroma.User - # Note: `max_attempts` is intended to be overridden in `new/2` call - use Oban.Worker, - queue: "transmogrifier", - max_attempts: 1 - use Pleroma.Workers.WorkerHelper, queue: "transmogrifier" @impl Oban.Worker diff --git a/lib/pleroma/workers/web_pusher_worker.ex b/lib/pleroma/workers/web_pusher_worker.ex index 4c2591a5c..bea2baffb 100644 --- a/lib/pleroma/workers/web_pusher_worker.ex +++ b/lib/pleroma/workers/web_pusher_worker.ex @@ -6,11 +6,6 @@ defmodule Pleroma.Workers.WebPusherWorker do alias Pleroma.Notification alias Pleroma.Repo - # Note: `max_attempts` is intended to be overridden in `new/2` call - use Oban.Worker, - queue: "web_push", - max_attempts: 1 - use Pleroma.Workers.WorkerHelper, queue: "web_push" @impl Oban.Worker diff --git a/lib/pleroma/workers/worker_helper.ex b/lib/pleroma/workers/worker_helper.ex index b12f198d4..358efa14a 100644 --- a/lib/pleroma/workers/worker_helper.ex +++ b/lib/pleroma/workers/worker_helper.ex @@ -27,6 +27,11 @@ defmacro __using__(opts) do queue = Keyword.fetch!(opts, :queue) quote do + # Note: `max_attempts` is intended to be overridden in `new/2` call + use Oban.Worker, + queue: unquote(queue), + max_attempts: 1 + def enqueue(op, params, worker_args \\ []) do params = Map.merge(%{"op" => op}, params) queue_atom = String.to_atom(unquote(queue)) diff --git a/test/activity_expiration_worker_test.exs b/test/daemons/activity_expiration_daemon_test.exs similarity index 86% rename from test/activity_expiration_worker_test.exs rename to test/daemons/activity_expiration_daemon_test.exs index 939d912f1..31f4a70a6 100644 --- a/test/activity_expiration_worker_test.exs +++ b/test/daemons/activity_expiration_daemon_test.exs @@ -10,7 +10,7 @@ defmodule Pleroma.ActivityExpirationWorkerTest do test "deletes an activity" do activity = insert(:note_activity) expiration = insert(:expiration_in_the_past, %{activity_id: activity.id}) - Pleroma.ActivityExpirationWorker.perform(:execute, expiration.id) + Pleroma.Daemons.ActivityExpirationDaemon.perform(:execute, expiration.id) refute Repo.get(Activity, activity.id) end diff --git a/test/web/digest_email_worker_test.exs b/test/daemons/digest_email_daemon_test.exs similarity index 88% rename from test/web/digest_email_worker_test.exs rename to test/daemons/digest_email_daemon_test.exs index 5dfd920fa..3168f3b9a 100644 --- a/test/web/digest_email_worker_test.exs +++ b/test/daemons/digest_email_daemon_test.exs @@ -2,11 +2,11 @@ # Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.DigestEmailWorkerTest do +defmodule Pleroma.DigestEmailDaemonTest do use Pleroma.DataCase import Pleroma.Factory - alias Pleroma.DigestEmailWorker + alias Pleroma.Daemons.DigestEmailDaemon alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.CommonAPI @@ -23,7 +23,7 @@ test "it sends digest emails" do User.switch_email_notifications(user2, "digest", true) CommonAPI.post(user, %{"status" => "hey @#{user2.nickname}!"}) - DigestEmailWorker.perform() + DigestEmailDaemon.perform() ObanHelpers.perform_all() # Performing job(s) enqueued at previous step ObanHelpers.perform_all() diff --git a/test/scheduled_activity_worker_test.exs b/test/daemons/scheduled_activity_daemon_test.exs similarity index 82% rename from test/scheduled_activity_worker_test.exs rename to test/daemons/scheduled_activity_daemon_test.exs index e3ad1244e..32820b2b7 100644 --- a/test/scheduled_activity_worker_test.exs +++ b/test/daemons/scheduled_activity_daemon_test.exs @@ -2,7 +2,7 @@ # Copyright © 2017-2018 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.ScheduledActivityWorkerTest do +defmodule Pleroma.ScheduledActivityDaemonTest do use Pleroma.DataCase alias Pleroma.ScheduledActivity import Pleroma.Factory @@ -10,7 +10,7 @@ defmodule Pleroma.ScheduledActivityWorkerTest do test "creates a status from the scheduled activity" do user = insert(:user) scheduled_activity = insert(:scheduled_activity, user: user, params: %{status: "hi"}) - Pleroma.ScheduledActivityWorker.perform(:execute, scheduled_activity.id) + Pleroma.Daemons.ScheduledActivityDaemon.perform(:execute, scheduled_activity.id) refute Repo.get(ScheduledActivity, scheduled_activity.id) activity = Repo.all(Pleroma.Activity) |> Enum.find(&(&1.actor == user.ap_id)) From 8cbad5500cefbba1e0bb67604960fc331b75b498 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Wed, 4 Sep 2019 15:25:12 +0300 Subject: [PATCH 032/272] add tests for activity_pub/utils.ex --- lib/pleroma/user.ex | 1 + lib/pleroma/web/activity_pub/activity_pub.ex | 12 +- lib/pleroma/web/activity_pub/utils.ex | 298 +++++++++---------- test/web/activity_pub/utils_test.exs | 232 ++++++++++++++- 4 files changed, 371 insertions(+), 172 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 29fd6d2ea..424ed772f 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -147,6 +147,7 @@ def get_cached_follow_state(user, target) do Cachex.fetch!(:user_cache, key, fn _ -> {:commit, follow_state(user, target)} end) end + @spec set_follow_state_cache(String.t(), String.t(), String.t()) :: {:ok | :error, boolean()} def set_follow_state_cache(user_ap_id, target_ap_id, state) do Cachex.put( :user_cache, diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index eeb826814..39b46a595 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -435,6 +435,7 @@ def delete(%Object{data: %{"id" => id, "actor" => actor}} = object, local \\ tru end end + @spec block(User.t(), User.t(), String.t() | nil, boolean) :: {:ok, Activity.t() | nil} def block(blocker, blocked, activity_id \\ nil, local \\ true) do outgoing_blocks = Config.get([:activitypub, :outgoing_blocks]) unfollow_blocked = Config.get([:activitypub, :unfollow_blocked]) @@ -463,10 +464,11 @@ def unblock(blocker, blocked, activity_id \\ nil, local \\ true) do end end + @spec flag(map()) :: {:ok, Activity.t()} | any def flag( %{ actor: actor, - context: context, + context: _context, account: account, statuses: statuses, content: content @@ -478,14 +480,6 @@ def flag( additional = params[:additional] || %{} - params = %{ - actor: actor, - context: context, - account: account, - statuses: statuses, - content: content - } - additional = if forward do Map.merge(additional, %{"to" => [], "cc" => [account.ap_id]}) diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index c9c0c3763..cf82d1a9b 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -33,50 +33,40 @@ def normalize_params(params) do Map.put(params, "actor", get_ap_id(params["actor"])) end - def determine_explicit_mentions(%{"tag" => tag} = _object) when is_list(tag) do - tag - |> Enum.filter(fn x -> is_map(x) end) - |> Enum.filter(fn x -> x["type"] == "Mention" end) - |> Enum.map(fn x -> x["href"] end) + @spec determine_explicit_mentions(map()) :: map() + def determine_explicit_mentions(%{"tag" => tag} = _) when is_list(tag) do + Enum.flat_map(tag, fn + %{"type" => "Mention", "href" => href} -> [href] + _ -> [] + end) end def determine_explicit_mentions(%{"tag" => tag} = object) when is_map(tag) do - Map.put(object, "tag", [tag]) + object + |> Map.put("tag", [tag]) |> determine_explicit_mentions() end def determine_explicit_mentions(_), do: [] + @spec recipient_in_collection(any(), any()) :: boolean() defp recipient_in_collection(ap_id, coll) when is_binary(coll), do: ap_id == coll defp recipient_in_collection(ap_id, coll) when is_list(coll), do: ap_id in coll defp recipient_in_collection(_, _), do: false + @spec recipient_in_message(User.t(), User.t(), map()) :: boolean() def recipient_in_message(%User{ap_id: ap_id} = recipient, %User{} = actor, params) do + addresses = [params["to"], params["cc"], params["bto"], params["bcc"]] + cond do - recipient_in_collection(ap_id, params["to"]) -> - true - - recipient_in_collection(ap_id, params["cc"]) -> - true - - recipient_in_collection(ap_id, params["bto"]) -> - true - - recipient_in_collection(ap_id, params["bcc"]) -> - true - + Enum.any?(addresses, &recipient_in_collection(ap_id, &1)) -> true # if the message is unaddressed at all, then assume it is directly addressed # to the recipient - !params["to"] && !params["cc"] && !params["bto"] && !params["bcc"] -> - true - + Enum.all?(addresses, &is_nil(&1)) -> true # if the message is sent from somebody the user is following, then assume it # is addressed to the recipient - User.following?(recipient, actor) -> - true - - true -> - false + User.following?(recipient, actor) -> true + true -> false end end @@ -188,53 +178,58 @@ def maybe_federate(_), do: :ok Adds an id and a published data if they aren't there, also adds it to an included object """ - def lazy_put_activity_defaults(map, fake \\ false) do - map = - unless fake do - %{data: %{"id" => context}, id: context_id} = create_context(map["context"]) + @spec lazy_put_activity_defaults(map(), boolean) :: map() + def lazy_put_activity_defaults(map, fake \\ false) - map - |> Map.put_new_lazy("id", &generate_activity_id/0) - |> Map.put_new_lazy("published", &make_date/0) - |> Map.put_new("context", context) - |> Map.put_new("context_id", context_id) - else - map - |> Map.put_new("id", "pleroma:fakeid") - |> Map.put_new_lazy("published", &make_date/0) - |> Map.put_new("context", "pleroma:fakecontext") - |> Map.put_new("context_id", -1) - end + def lazy_put_activity_defaults(map, true) do + map + |> Map.put_new("id", "pleroma:fakeid") + |> Map.put_new_lazy("published", &make_date/0) + |> Map.put_new("context", "pleroma:fakecontext") + |> Map.put_new("context_id", -1) + |> lazy_put_object_defaults(true) + end - if is_map(map["object"]) do - object = lazy_put_object_defaults(map["object"], map, fake) - %{map | "object" => object} - else + def lazy_put_activity_defaults(map, _fake) do + %{data: %{"id" => context}, id: context_id} = create_context(map["context"]) + + map + |> Map.put_new_lazy("id", &generate_activity_id/0) + |> Map.put_new_lazy("published", &make_date/0) + |> Map.put_new("context", context) + |> Map.put_new("context_id", context_id) + |> lazy_put_object_defaults(false) + end + + # Adds an id and published date if they aren't there. + # + @spec lazy_put_object_defaults(map(), boolean()) :: map() + defp lazy_put_object_defaults(%{"object" => map} = activity, true) + when is_map(map) do + object = map - end + |> Map.put_new("id", "pleroma:fake_object_id") + |> Map.put_new_lazy("published", &make_date/0) + |> Map.put_new("context", activity["context"]) + |> Map.put_new("context_id", activity["context_id"]) + |> Map.put_new("fake", true) + + %{activity | "object" => object} end - @doc """ - Adds an id and published date if they aren't there. - """ - def lazy_put_object_defaults(map, activity \\ %{}, fake) + defp lazy_put_object_defaults(%{"object" => map} = activity, _) + when is_map(map) do + object = + map + |> Map.put_new_lazy("id", &generate_object_id/0) + |> Map.put_new_lazy("published", &make_date/0) + |> Map.put_new("context", activity["context"]) + |> Map.put_new("context_id", activity["context_id"]) - def lazy_put_object_defaults(map, activity, true = _fake) do - map - |> Map.put_new_lazy("published", &make_date/0) - |> Map.put_new("id", "pleroma:fake_object_id") - |> Map.put_new("context", activity["context"]) - |> Map.put_new("fake", true) - |> Map.put_new("context_id", activity["context_id"]) + %{activity | "object" => object} end - def lazy_put_object_defaults(map, activity, _fake) do - map - |> Map.put_new_lazy("id", &generate_object_id/0) - |> Map.put_new_lazy("published", &make_date/0) - |> Map.put_new("context", activity["context"]) - |> Map.put_new("context_id", activity["context_id"]) - end + defp lazy_put_object_defaults(activity, _), do: activity @doc """ Inserts a full object if it is contained in an activity. @@ -356,23 +351,30 @@ defp fetch_likes(object) do @doc """ Updates a follow activity's state (for locked accounts). """ + @spec update_follow_state_for_all(Activity.t(), String.t()) :: {:ok, Activity} | {:error, any()} def update_follow_state_for_all( %Activity{data: %{"actor" => actor, "object" => object}} = activity, state ) do - try do - Ecto.Adapters.SQL.query!( - Repo, - "UPDATE activities SET data = jsonb_set(data, '{state}', $1) WHERE data->>'type' = 'Follow' AND data->>'actor' = $2 AND data->>'object' = $3 AND data->>'state' = 'pending'", - [state, actor, object] + query = + from(activity in Activity, + where: fragment("data->>'type' = 'Follow'"), + where: fragment("data->>'state' = 'pending'"), + where: fragment("data->>'actor' = ?", ^actor), + where: fragment("data->>'object' = ?", ^object), + update: [ + set: [ + data: fragment("jsonb_set(data, '{state}', ?)", ^state) + ] + ] ) - User.set_follow_state_cache(actor, object, state) - activity = Activity.get_by_id(activity.id) + with {_, _} <- Repo.update_all(query, []), + {_, _} <- User.set_follow_state_cache(actor, object, state), + %Activity{} = activity <- Activity.get_by_id(activity.id) do {:ok, activity} - rescue - e -> - {:error, e} + else + e -> {:error, e} end end @@ -380,9 +382,7 @@ def update_follow_state( %Activity{data: %{"actor" => actor, "object" => object}} = activity, state ) do - with new_data <- - activity.data - |> Map.put("state", state), + with new_data <- Map.put(activity.data, "state", state), changeset <- Changeset.change(activity, data: new_data), {:ok, activity} <- Repo.update(changeset), _ <- User.set_follow_state_cache(actor, object, state) do @@ -411,27 +411,17 @@ def make_follow_data( def fetch_latest_follow(%User{ap_id: follower_id}, %User{ap_id: followed_id}) do query = - from( - activity in Activity, - where: - fragment( - "? ->> 'type' = 'Follow'", - activity.data - ), - where: activity.actor == ^follower_id, - # this is to use the index - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ?", - activity.data, - activity.data, - ^followed_id - ), - order_by: [fragment("? desc nulls last", activity.id)], - limit: 1 - ) + follower_id + |> Activity.Queries.by_actor() + |> Activity.Queries.by_type("Follow") + |> Activity.Queries.by_object_id(followed_id) + |> Activity.Queries.limit(1) - Repo.one(query) + from( + activity in query, + order_by: [fragment("? desc nulls last", activity.id)] + ) + |> Repo.one() end #### Announce-related helpers @@ -439,23 +429,14 @@ def fetch_latest_follow(%User{ap_id: follower_id}, %User{ap_id: followed_id}) do @doc """ Retruns an existing announce activity if the notice has already been announced """ + @spec get_existing_announce(String.t(), map()) :: Activity.t() | nil def get_existing_announce(actor, %{data: %{"id" => id}}) do - query = - from( - activity in Activity, - where: activity.actor == ^actor, - # this is to use the index - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ?", - activity.data, - activity.data, - ^id - ), - where: fragment("(?)->>'type' = 'Announce'", activity.data) - ) - - Repo.one(query) + actor + |> Activity.Queries.by_actor() + |> Activity.Queries.by_type("Announce") + |> Activity.Queries.by_object_id(id) + |> Activity.Queries.limit(1) + |> Repo.one() end @doc """ @@ -531,31 +512,35 @@ def make_unlike_data( |> maybe_put("id", activity_id) end + @spec add_announce_to_object(Activity.t(), Object.t()) :: + {:ok, Object.t()} | {:error, Ecto.Changeset.t()} def add_announce_to_object( - %Activity{ - data: %{"actor" => actor, "cc" => [Pleroma.Constants.as_public()]} - }, + %Activity{data: %{"actor" => actor, "cc" => [Pleroma.Constants.as_public()]}}, object ) do - announcements = - if is_list(object.data["announcements"]), do: object.data["announcements"], else: [] + announcements = fetch_announcements(object) - with announcements <- [actor | announcements] |> Enum.uniq() do + with announcements <- Enum.uniq([actor | announcements]) do update_element_in_object("announcement", announcements, object) end end def add_announce_to_object(_, object), do: {:ok, object} + @spec remove_announce_from_object(Activity.t(), Object.t()) :: + {:ok, Object.t()} | {:error, Ecto.Changeset.t()} def remove_announce_from_object(%Activity{data: %{"actor" => actor}}, object) do - announcements = - if is_list(object.data["announcements"]), do: object.data["announcements"], else: [] - - with announcements <- announcements |> List.delete(actor) do + with announcements <- List.delete(fetch_announcements(object), actor) do update_element_in_object("announcement", announcements, object) end end + defp fetch_announcements(%{data: %{"announcements" => announcements}} = _) + when is_list(announcements), + do: announcements + + defp fetch_announcements(_), do: [] + #### Unfollow-related helpers def make_unfollow_data(follower, followed, follow_activity, activity_id) do @@ -569,29 +554,20 @@ def make_unfollow_data(follower, followed, follow_activity, activity_id) do end #### Block-related helpers + @spec fetch_latest_block(User.t(), User.t()) :: Activity.t() | nil def fetch_latest_block(%User{ap_id: blocker_id}, %User{ap_id: blocked_id}) do query = - from( - activity in Activity, - where: - fragment( - "? ->> 'type' = 'Block'", - activity.data - ), - where: activity.actor == ^blocker_id, - # this is to use the index - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ?", - activity.data, - activity.data, - ^blocked_id - ), - order_by: [fragment("? desc nulls last", activity.id)], - limit: 1 - ) + blocker_id + |> Activity.Queries.by_actor() + |> Activity.Queries.by_type("Block") + |> Activity.Queries.by_object_id(blocked_id) + |> Activity.Queries.limit(1) - Repo.one(query) + from( + activity in query, + order_by: [fragment("? desc nulls last", activity.id)] + ) + |> Repo.one() end def make_block_data(blocker, blocked, activity_id) do @@ -631,28 +607,32 @@ def make_create_data(params, additional) do end #### Flag-related helpers - - def make_flag_data(params, additional) do - status_ap_ids = - Enum.map(params.statuses || [], fn - %Activity{} = act -> act.data["id"] - act when is_map(act) -> act["id"] - act when is_binary(act) -> act - end) - - object = [params.account.ap_id] ++ status_ap_ids - + @spec make_flag_data(map(), map()) :: map() + def make_flag_data(%{actor: actor, context: context, content: content} = params, additional) do %{ "type" => "Flag", - "actor" => params.actor.ap_id, - "content" => params.content, - "object" => object, - "context" => params.context, + "actor" => actor.ap_id, + "content" => content, + "object" => build_flag_object(params), + "context" => context, "state" => "open" } |> Map.merge(additional) end + def make_flag_data(_, _), do: %{} + + defp build_flag_object(%{account: account, statuses: statuses} = _) do + [account.ap_id] ++ + Enum.map(statuses || [], fn + %Activity{} = act -> act.data["id"] + act when is_map(act) -> act["id"] + act when is_binary(act) -> act + end) + end + + defp build_flag_object(_), do: [] + @doc """ Fetches the OrderedCollection/OrderedCollectionPage from `from`, limiting the amount of pages fetched after the first one to `pages_left` pages. diff --git a/test/web/activity_pub/utils_test.exs b/test/web/activity_pub/utils_test.exs index eb429b2c4..b1c1d6f71 100644 --- a/test/web/activity_pub/utils_test.exs +++ b/test/web/activity_pub/utils_test.exs @@ -87,6 +87,18 @@ test "works with an object that has only IR tags" do assert Utils.determine_explicit_mentions(object) == [] end + + test "works with an object has tags as map" do + object = %{ + "tag" => %{ + "type" => "Mention", + "href" => "https://example.com/~alyssa", + "name" => "Alyssa P. Hacker" + } + } + + assert Utils.determine_explicit_mentions(object) == ["https://example.com/~alyssa"] + end end describe "make_unlike_data/3" do @@ -300,8 +312,8 @@ test "updates the state of all Follow activities with the same actor and object" {:ok, follow_activity_two} = Utils.update_follow_state_for_all(follow_activity_two, "accept") - assert Repo.get(Activity, follow_activity.id).data["state"] == "accept" - assert Repo.get(Activity, follow_activity_two.id).data["state"] == "accept" + assert refresh_record(follow_activity).data["state"] == "accept" + assert refresh_record(follow_activity_two).data["state"] == "accept" end end @@ -323,8 +335,8 @@ test "updates the state of the given follow activity" do {:ok, follow_activity_two} = Utils.update_follow_state(follow_activity_two, "reject") - assert Repo.get(Activity, follow_activity.id).data["state"] == "pending" - assert Repo.get(Activity, follow_activity_two.id).data["state"] == "reject" + assert refresh_record(follow_activity).data["state"] == "pending" + assert refresh_record(follow_activity_two).data["state"] == "reject" end end @@ -401,4 +413,216 @@ test "fetches existing like" do assert ^like_activity = Utils.get_existing_like(user.ap_id, object) end end + + describe "get_get_existing_announce/2" do + test "returns nil if announce not found" do + actor = insert(:user) + refute Utils.get_existing_announce(actor.ap_id, %{data: %{"id" => "test"}}) + end + + test "fetches existing announce" do + note_activity = insert(:note_activity) + assert object = Object.normalize(note_activity) + actor = insert(:user) + + {:ok, announce, _object} = ActivityPub.announce(actor, object) + assert Utils.get_existing_announce(actor.ap_id, object) == announce + end + end + + describe "fetch_latest_block/2" do + test "fetches last block activities" do + user1 = insert(:user) + user2 = insert(:user) + + assert {:ok, %Activity{} = _} = ActivityPub.block(user1, user2) + assert {:ok, %Activity{} = _} = ActivityPub.block(user1, user2) + assert {:ok, %Activity{} = activity} = ActivityPub.block(user1, user2) + + assert Utils.fetch_latest_block(user1, user2) == activity + end + end + + describe "recipient_in_message/3" do + test "returns true when recipient in `to`" do + recipient = insert(:user) + actor = insert(:user) + assert Utils.recipient_in_message(recipient, actor, %{"to" => recipient.ap_id}) + + assert Utils.recipient_in_message( + recipient, + actor, + %{"to" => [recipient.ap_id], "cc" => ""} + ) + end + + test "returns true when recipient in `cc`" do + recipient = insert(:user) + actor = insert(:user) + assert Utils.recipient_in_message(recipient, actor, %{"cc" => recipient.ap_id}) + + assert Utils.recipient_in_message( + recipient, + actor, + %{"cc" => [recipient.ap_id], "to" => ""} + ) + end + + test "returns true when recipient in `bto`" do + recipient = insert(:user) + actor = insert(:user) + assert Utils.recipient_in_message(recipient, actor, %{"bto" => recipient.ap_id}) + + assert Utils.recipient_in_message( + recipient, + actor, + %{"bcc" => "", "bto" => [recipient.ap_id]} + ) + end + + test "returns true when recipient in `bcc`" do + recipient = insert(:user) + actor = insert(:user) + assert Utils.recipient_in_message(recipient, actor, %{"bcc" => recipient.ap_id}) + + assert Utils.recipient_in_message( + recipient, + actor, + %{"bto" => "", "bcc" => [recipient.ap_id]} + ) + end + + test "returns true when message without addresses fields" do + recipient = insert(:user) + actor = insert(:user) + assert Utils.recipient_in_message(recipient, actor, %{"bccc" => recipient.ap_id}) + + assert Utils.recipient_in_message( + recipient, + actor, + %{"btod" => "", "bccc" => [recipient.ap_id]} + ) + end + + test "returns false" do + recipient = insert(:user) + actor = insert(:user) + refute Utils.recipient_in_message(recipient, actor, %{"to" => "ap_id"}) + end + end + + describe "lazy_put_activity_defaults/2" do + test "returns map with id and published data" do + note_activity = insert(:note_activity) + object = Object.normalize(note_activity) + res = Utils.lazy_put_activity_defaults(%{"context" => object.data["id"]}) + assert res["context"] == object.data["id"] + assert res["context_id"] == object.id + assert res["id"] + assert res["published"] + end + + test "returns map with fake id and published data" do + assert %{ + "context" => "pleroma:fakecontext", + "context_id" => -1, + "id" => "pleroma:fakeid", + "published" => _ + } = Utils.lazy_put_activity_defaults(%{}, true) + end + + test "returns activity data with object" do + note_activity = insert(:note_activity) + object = Object.normalize(note_activity) + + res = + Utils.lazy_put_activity_defaults(%{ + "context" => object.data["id"], + "object" => %{} + }) + + assert res["context"] == object.data["id"] + assert res["context_id"] == object.id + assert res["id"] + assert res["published"] + assert res["object"]["id"] + assert res["object"]["published"] + assert res["object"]["context"] == object.data["id"] + assert res["object"]["context_id"] == object.id + end + end + + describe "make_flag_data" do + test "returns empty map when params is invalid" do + assert Utils.make_flag_data(%{}, %{}) == %{} + end + + test "returns map with Flag object" do + reporter = insert(:user) + target_account = insert(:user) + {:ok, activity} = CommonAPI.post(target_account, %{"status" => "foobar"}) + context = Utils.generate_context_id() + content = "foobar" + + target_ap_id = target_account.ap_id + activity_ap_id = activity.data["id"] + + res = + Utils.make_flag_data( + %{ + actor: reporter, + context: context, + account: target_account, + statuses: [%{"id" => activity.data["id"]}], + content: content + }, + %{} + ) + + assert %{ + "type" => "Flag", + "content" => ^content, + "context" => ^context, + "object" => [^target_ap_id, ^activity_ap_id], + "state" => "open" + } = res + end + end + + describe "add_announce_to_object/2" do + test "adds actor to announcement" do + user = insert(:user) + object = insert(:note) + + activity = + insert(:note_activity, + data: %{ + "actor" => user.ap_id, + "cc" => [Pleroma.Constants.as_public()] + } + ) + + assert {:ok, updated_object} = Utils.add_announce_to_object(activity, object) + assert updated_object.data["announcements"] == [user.ap_id] + assert updated_object.data["announcement_count"] == 1 + end + end + + describe "remove_announce_from_object/2" do + test "removes actor from announcements" do + user = insert(:user) + user2 = insert(:user) + + object = + insert(:note, + data: %{"announcements" => [user.ap_id, user2.ap_id], "announcement_count" => 2} + ) + + activity = insert(:note_activity, data: %{"actor" => user.ap_id}) + + assert {:ok, updated_object} = Utils.remove_announce_from_object(activity, object) + assert updated_object.data["announcements"] == [user2.ap_id] + assert updated_object.data["announcement_count"] == 1 + end + end end From a890451187f0b1507be96ccf144b18fdb8294dd8 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Wed, 4 Sep 2019 17:42:27 +0300 Subject: [PATCH 033/272] fetch_announcements -> take_announcements --- lib/pleroma/web/activity_pub/utils.ex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index cf82d1a9b..0d87b9220 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -518,7 +518,7 @@ def add_announce_to_object( %Activity{data: %{"actor" => actor, "cc" => [Pleroma.Constants.as_public()]}}, object ) do - announcements = fetch_announcements(object) + announcements = take_announcements(object) with announcements <- Enum.uniq([actor | announcements]) do update_element_in_object("announcement", announcements, object) @@ -530,16 +530,16 @@ def add_announce_to_object(_, object), do: {:ok, object} @spec remove_announce_from_object(Activity.t(), Object.t()) :: {:ok, Object.t()} | {:error, Ecto.Changeset.t()} def remove_announce_from_object(%Activity{data: %{"actor" => actor}}, object) do - with announcements <- List.delete(fetch_announcements(object), actor) do + with announcements <- List.delete(take_announcements(object), actor) do update_element_in_object("announcement", announcements, object) end end - defp fetch_announcements(%{data: %{"announcements" => announcements}} = _) + defp take_announcements(%{data: %{"announcements" => announcements}} = _) when is_list(announcements), do: announcements - defp fetch_announcements(_), do: [] + defp take_announcements(_), do: [] #### Unfollow-related helpers From 2975da284b75c846a99a56ce70a91ebc3cc43f33 Mon Sep 17 00:00:00 2001 From: Sadposter Date: Wed, 4 Sep 2019 15:45:40 +0100 Subject: [PATCH 034/272] truncate remote user bio/display name --- lib/pleroma/user.ex | 16 +++++++++++++++- test/user_test.exs | 45 +++++++++++++++++++++++++++++---------------- 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 29fd6d2ea..87e56b5b4 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -174,11 +174,25 @@ def following_count(%User{} = user) do |> Repo.aggregate(:count, :id) end + defp truncate_if_exists(params, key, max_length) do + if Map.has_key?(params, key) do + {value, _chopped} = String.split_at(params[key], max_length) + Map.put(params, key, value) + else + params + end + end + def remote_user_creation(params) do bio_limit = Pleroma.Config.get([:instance, :user_bio_length], 5000) name_limit = Pleroma.Config.get([:instance, :user_name_length], 100) - params = Map.put(params, :info, params[:info] || %{}) + params = + params + |> Map.put(:info, params[:info] || %{}) + |> truncate_if_exists(:name, name_limit) + |> truncate_if_exists(:bio, bio_limit) + info_cng = User.Info.remote_user_creation(%User.Info{}, params[:info]) changes = diff --git a/test/user_test.exs b/test/user_test.exs index 92a48f630..45f998ff8 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -570,22 +570,6 @@ test "it has required fields" do refute cs.valid? end) end - - test "it restricts some sizes" do - bio_limit = Pleroma.Config.get([:instance, :user_bio_length], 5000) - name_limit = Pleroma.Config.get([:instance, :user_name_length], 100) - - [bio: bio_limit, name: name_limit] - |> Enum.each(fn {field, size} -> - string = String.pad_leading(".", size) - cs = User.remote_user_creation(Map.put(@valid_remote, field, string)) - assert cs.valid? - - string = String.pad_leading(".", size + 1) - cs = User.remote_user_creation(Map.put(@valid_remote, field, string)) - refute cs.valid? - end) - end end describe "followers and friends" do @@ -1142,6 +1126,35 @@ test "with overly long fields" do assert {:ok, %User{}} = User.insert_or_update_user(data) end + + test "with an overly long bio" do + current_max_length = Pleroma.Config.get([:instance, :user_bio_length], 5000) + user = insert(:user, nickname: "nickname@supergood.domain") + + data = %{ + ap_id: user.ap_id, + name: user.name, + nickname: user.nickname, + bio: String.duplicate("h", current_max_length + 1), + info: %{} + } + + assert {:ok, %User{}} = User.insert_or_update_user(data) + end + + test "with an overly long display name" do + current_max_length = Pleroma.Config.get([:instance, :user_name_length], 100) + user = insert(:user, nickname: "nickname@supergood.domain") + + data = %{ + ap_id: user.ap_id, + name: String.duplicate("h", current_max_length + 1), + nickname: user.nickname, + info: %{} + } + + assert {:ok, %User{}} = User.insert_or_update_user(data) + end end describe "per-user rich-text filtering" do From cb99cfcc65f57f0044117ebd12d040488343d9ef Mon Sep 17 00:00:00 2001 From: Sadposter Date: Wed, 4 Sep 2019 15:57:42 +0100 Subject: [PATCH 035/272] don't try to truncate non-strings --- lib/pleroma/user.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 87e56b5b4..e2ebce6fc 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -175,7 +175,7 @@ def following_count(%User{} = user) do end defp truncate_if_exists(params, key, max_length) do - if Map.has_key?(params, key) do + if Map.has_key?(params, key) and is_binary(params[key]) do {value, _chopped} = String.split_at(params[key], max_length) Map.put(params, key, value) else From af746fa4a814dbacd4fe4a3e58b1ee1732363d22 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Wed, 4 Sep 2019 20:08:13 +0300 Subject: [PATCH 036/272] Return total for reports --- CHANGELOG.md | 3 ++- docs/api/admin_api.md | 1 + lib/pleroma/web/admin_api/admin_api_controller.ex | 6 ++---- lib/pleroma/web/admin_api/views/report_view.ex | 3 ++- test/web/admin_api/admin_api_controller_test.exs | 8 ++++++++ 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a414ba5e0..942605f28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Unsubscribe followers when they unfollow a user - AdminAPI: Add "godmode" while fetching user statuses (i.e. admin can see private statuses) - Improve digest email template -– Pagination: (optional) return `total` alongside with `items` when paginating +- Pagination: (optional) return `total` alongside with `items` when paginating +- Admin API: Return `total` when querying for reports ### Fixed - Following from Osada diff --git a/docs/api/admin_api.md b/docs/api/admin_api.md index d79c342be..5a090c720 100644 --- a/docs/api/admin_api.md +++ b/docs/api/admin_api.md @@ -313,6 +313,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret ```json { + "total" : 1, "reports": [ { "account": { diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 544b9d7d8..2a1cc59e5 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -442,11 +442,9 @@ def list_reports(conn, params) do params |> Map.put("type", "Flag") |> Map.put("skip_preload", true) + |> Map.put("total", true) - reports = - [] - |> ActivityPub.fetch_activities(params) - |> Enum.reverse() + reports = ActivityPub.fetch_activities([], params) conn |> put_view(ReportView) diff --git a/lib/pleroma/web/admin_api/views/report_view.ex b/lib/pleroma/web/admin_api/views/report_view.ex index a25f3f1fe..0b8745b2e 100644 --- a/lib/pleroma/web/admin_api/views/report_view.ex +++ b/lib/pleroma/web/admin_api/views/report_view.ex @@ -12,7 +12,8 @@ defmodule Pleroma.Web.AdminAPI.ReportView do def render("index.json", %{reports: reports}) do %{ - reports: render_many(reports, __MODULE__, "show.json", as: :report) + reports: render_many(reports[:items], __MODULE__, "show.json", as: :report), + total: reports[:total] } end diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 4e2c27431..b1ddd898b 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -1309,6 +1309,7 @@ test "returns empty response when no reports created", %{conn: conn} do |> json_response(:ok) assert Enum.empty?(response["reports"]) + assert response["total"] == 0 end test "returns reports", %{conn: conn} do @@ -1331,6 +1332,8 @@ test "returns reports", %{conn: conn} do assert length(response["reports"]) == 1 assert report["id"] == report_id + + assert response["total"] == 1 end test "returns reports with specified state", %{conn: conn} do @@ -1364,6 +1367,8 @@ test "returns reports with specified state", %{conn: conn} do assert length(response["reports"]) == 1 assert open_report["id"] == first_report_id + assert response["total"] == 1 + response = conn |> get("/api/pleroma/admin/reports", %{ @@ -1376,6 +1381,8 @@ test "returns reports with specified state", %{conn: conn} do assert length(response["reports"]) == 1 assert closed_report["id"] == second_report_id + assert response["total"] == 1 + response = conn |> get("/api/pleroma/admin/reports", %{ @@ -1384,6 +1391,7 @@ test "returns reports with specified state", %{conn: conn} do |> json_response(:ok) assert Enum.empty?(response["reports"]) + assert response["total"] == 0 end test "returns 403 when requested by a non-admin" do From 8306078de1abade082f932cda5b8d9297bdcdc80 Mon Sep 17 00:00:00 2001 From: Maksim Date: Wed, 4 Sep 2019 17:31:14 +0000 Subject: [PATCH 037/272] Apply suggestion to lib/pleroma/web/activity_pub/utils.ex --- lib/pleroma/web/activity_pub/utils.ex | 33 +++++++++++---------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 0d87b9220..2de02f607 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -356,26 +356,19 @@ def update_follow_state_for_all( %Activity{data: %{"actor" => actor, "object" => object}} = activity, state ) do - query = - from(activity in Activity, - where: fragment("data->>'type' = 'Follow'"), - where: fragment("data->>'state' = 'pending'"), - where: fragment("data->>'actor' = ?", ^actor), - where: fragment("data->>'object' = ?", ^object), - update: [ - set: [ - data: fragment("jsonb_set(data, '{state}', ?)", ^state) - ] - ] - ) - - with {_, _} <- Repo.update_all(query, []), - {_, _} <- User.set_follow_state_cache(actor, object, state), - %Activity{} = activity <- Activity.get_by_id(activity.id) do - {:ok, activity} - else - e -> {:error, e} - end + "Follow" + |> Activity.Queries.by_type() + |> Activity.Queries.by_actor(actor) + |> Activity.Queries.by_object_id(object["id"]) + |> where(fragment("data->>'state' = 'pending'")) + |> update(set: [data: fragment("jsonb_set(data, '{state}', ?)", ^state)]) + |> Repo.update_all([]) + + User.set_follow_state_cache(actor, object, state) + + activity = Activity.get_by_id(activity.id) + + {:ok, activity} end def update_follow_state( From e2011a667cdf5e67f257c9c30a02c206fb4df913 Mon Sep 17 00:00:00 2001 From: Maksim Date: Wed, 4 Sep 2019 18:35:01 +0000 Subject: [PATCH 038/272] Apply suggestion to lib/pleroma/web/activity_pub/utils.ex --- lib/pleroma/web/activity_pub/utils.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 2de02f607..011acd48e 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -359,7 +359,7 @@ def update_follow_state_for_all( "Follow" |> Activity.Queries.by_type() |> Activity.Queries.by_actor(actor) - |> Activity.Queries.by_object_id(object["id"]) + |> Activity.Queries.by_object_id(object) |> where(fragment("data->>'state' = 'pending'")) |> update(set: [data: fragment("jsonb_set(data, '{state}', ?)", ^state)]) |> Repo.update_all([]) From ae506ca997619f118d18703a9b0802246eb427d5 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Wed, 4 Sep 2019 21:40:53 +0300 Subject: [PATCH 039/272] fix formatting --- lib/pleroma/web/activity_pub/utils.ex | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 011acd48e..72e07b59d 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -356,19 +356,19 @@ def update_follow_state_for_all( %Activity{data: %{"actor" => actor, "object" => object}} = activity, state ) do - "Follow" - |> Activity.Queries.by_type() - |> Activity.Queries.by_actor(actor) - |> Activity.Queries.by_object_id(object) - |> where(fragment("data->>'state' = 'pending'")) - |> update(set: [data: fragment("jsonb_set(data, '{state}', ?)", ^state)]) - |> Repo.update_all([]) - - User.set_follow_state_cache(actor, object, state) - - activity = Activity.get_by_id(activity.id) - - {:ok, activity} + "Follow" + |> Activity.Queries.by_type() + |> Activity.Queries.by_actor(actor) + |> Activity.Queries.by_object_id(object) + |> where(fragment("data->>'state' = 'pending'")) + |> update(set: [data: fragment("jsonb_set(data, '{state}', ?)", ^state)]) + |> Repo.update_all([]) + + User.set_follow_state_cache(actor, object, state) + + activity = Activity.get_by_id(activity.id) + + {:ok, activity} end def update_follow_state( From 736165c082d34ef4d52367ea8315c228a1df3944 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Thu, 5 Sep 2019 16:54:34 +0300 Subject: [PATCH 040/272] Reverse reports list --- lib/pleroma/web/admin_api/views/report_view.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/admin_api/views/report_view.ex b/lib/pleroma/web/admin_api/views/report_view.ex index 0b8745b2e..51b95ad5e 100644 --- a/lib/pleroma/web/admin_api/views/report_view.ex +++ b/lib/pleroma/web/admin_api/views/report_view.ex @@ -12,7 +12,8 @@ defmodule Pleroma.Web.AdminAPI.ReportView do def render("index.json", %{reports: reports}) do %{ - reports: render_many(reports[:items], __MODULE__, "show.json", as: :report), + reports: + render_many(reports[:items], __MODULE__, "show.json", as: :report) |> Enum.reverse(), total: reports[:total] } end From 40b3289c26137ee4d07c7fb79faf232714cc7592 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Fri, 6 Sep 2019 17:08:47 +0700 Subject: [PATCH 041/272] Refactor `add_link_headers/7` -> `add_link_headers/3` --- lib/pleroma/web/controller_helper.ex | 95 ++++++------------- .../controllers/mastodon_api_controller.ex | 28 +++--- .../web/pleroma_api/pleroma_api_controller.ex | 27 ++---- 3 files changed, 50 insertions(+), 100 deletions(-) diff --git a/lib/pleroma/web/controller_helper.ex b/lib/pleroma/web/controller_helper.ex index eeac9f503..b53a01955 100644 --- a/lib/pleroma/web/controller_helper.ex +++ b/lib/pleroma/web/controller_helper.ex @@ -34,79 +34,38 @@ defp param_to_integer(val, default) when is_binary(val) do defp param_to_integer(_, default), do: default - def add_link_headers( - conn, - method, - activities, - param \\ nil, - params \\ %{}, - func3 \\ nil, - func4 \\ nil - ) do - params = - conn.params - |> Map.drop(["since_id", "max_id", "min_id"]) - |> Map.merge(params) + def add_link_headers(conn, activities, extra_params \\ %{}) do + case List.last(activities) do + %{id: max_id} -> + params = + conn.params + |> Map.drop(Map.keys(conn.path_params)) + |> Map.drop(["since_id", "max_id", "min_id"]) + |> Map.merge(extra_params) - last = List.last(activities) + limit = + params + |> Map.get("limit", "20") + |> String.to_integer() - func3 = func3 || (&mastodon_api_url/3) - func4 = func4 || (&mastodon_api_url/4) + min_id = + if length(activities) <= limit do + activities + |> List.first() + |> Map.get(:id) + else + activities + |> Enum.at(limit * -1) + |> Map.get(:id) + end - if last do - max_id = last.id + next_url = current_url(conn, Map.merge(params, %{max_id: max_id})) + prev_url = current_url(conn, Map.merge(params, %{min_id: min_id})) - limit = - params - |> Map.get("limit", "20") - |> String.to_integer() + put_resp_header(conn, "link", "<#{next_url}>; rel=\"next\", <#{prev_url}>; rel=\"prev\"") - min_id = - if length(activities) <= limit do - activities - |> List.first() - |> Map.get(:id) - else - activities - |> Enum.at(limit * -1) - |> Map.get(:id) - end - - {next_url, prev_url} = - if param do - { - func4.( - Pleroma.Web.Endpoint, - method, - param, - Map.merge(params, %{max_id: max_id}) - ), - func4.( - Pleroma.Web.Endpoint, - method, - param, - Map.merge(params, %{min_id: min_id}) - ) - } - else - { - func3.( - Pleroma.Web.Endpoint, - method, - Map.merge(params, %{max_id: max_id}) - ), - func3.( - Pleroma.Web.Endpoint, - method, - Map.merge(params, %{min_id: min_id}) - ) - } - end - - conn - |> put_resp_header("link", "<#{next_url}>; rel=\"next\", <#{prev_url}>; rel=\"prev\"") - else - conn + _ -> + conn end end end diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index 8dfad7a54..f30a21bcc 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do use Pleroma.Web, :controller import Pleroma.Web.ControllerHelper, - only: [json_response: 3, add_link_headers: 5, add_link_headers: 4, add_link_headers: 3] + only: [json_response: 3, add_link_headers: 2, add_link_headers: 3] alias Ecto.Changeset alias Pleroma.Activity @@ -365,7 +365,7 @@ def home_timeline(%{assigns: %{user: user}} = conn, params) do |> Enum.reverse() conn - |> add_link_headers(:home_timeline, activities) + |> add_link_headers(activities) |> put_view(StatusView) |> render("index.json", %{activities: activities, for: user, as: :activity}) end @@ -384,7 +384,7 @@ def public_timeline(%{assigns: %{user: user}} = conn, params) do |> Enum.reverse() conn - |> add_link_headers(:public_timeline, activities, false, %{"local" => local_only}) + |> add_link_headers(activities, %{"local" => local_only}) |> put_view(StatusView) |> render("index.json", %{activities: activities, for: user, as: :activity}) end @@ -398,7 +398,7 @@ def user_statuses(%{assigns: %{user: reading_user}} = conn, params) do activities = ActivityPub.fetch_user_activities(user, reading_user, params) conn - |> add_link_headers(:user_statuses, activities, params["id"]) + |> add_link_headers(activities) |> put_view(StatusView) |> render("index.json", %{ activities: activities, @@ -422,7 +422,7 @@ def dm_timeline(%{assigns: %{user: user}} = conn, params) do |> Pagination.fetch_paginated(params) conn - |> add_link_headers(:dm_timeline, activities) + |> add_link_headers(activities) |> put_view(StatusView) |> render("index.json", %{activities: activities, for: user, as: :activity}) end @@ -523,7 +523,7 @@ def poll_vote(%{assigns: %{user: user}} = conn, %{"id" => id, "choices" => choic def scheduled_statuses(%{assigns: %{user: user}} = conn, params) do with scheduled_activities <- MastodonAPI.get_scheduled_activities(user, params) do conn - |> add_link_headers(:scheduled_statuses, scheduled_activities) + |> add_link_headers(scheduled_activities) |> put_view(ScheduledActivityView) |> render("index.json", %{scheduled_activities: scheduled_activities}) end @@ -706,7 +706,7 @@ def notifications(%{assigns: %{user: user}} = conn, params) do notifications = MastodonAPI.get_notifications(user, params) conn - |> add_link_headers(:notifications, notifications) + |> add_link_headers(notifications) |> put_view(NotificationView) |> render("index.json", %{notifications: notifications, for: user}) end @@ -894,7 +894,7 @@ def hashtag_timeline(%{assigns: %{user: user}} = conn, params) do |> Enum.reverse() conn - |> add_link_headers(:hashtag_timeline, activities, params["tag"], %{"local" => local_only}) + |> add_link_headers(activities, %{"local" => local_only}) |> put_view(StatusView) |> render("index.json", %{activities: activities, for: user, as: :activity}) end @@ -910,7 +910,7 @@ def followers(%{assigns: %{user: for_user}} = conn, %{"id" => id} = params) do end conn - |> add_link_headers(:followers, followers, user) + |> add_link_headers(followers) |> put_view(AccountView) |> render("accounts.json", %{for: for_user, users: followers, as: :user}) end @@ -927,7 +927,7 @@ def following(%{assigns: %{user: for_user}} = conn, %{"id" => id} = params) do end conn - |> add_link_headers(:following, followers, user) + |> add_link_headers(followers) |> put_view(AccountView) |> render("accounts.json", %{for: for_user, users: followers, as: :user}) end @@ -1152,7 +1152,7 @@ def favourites(%{assigns: %{user: user}} = conn, params) do |> Enum.reverse() conn - |> add_link_headers(:favourites, activities) + |> add_link_headers(activities) |> put_view(StatusView) |> render("index.json", %{activities: activities, for: user, as: :activity}) end @@ -1179,7 +1179,7 @@ def user_favourites(%{assigns: %{user: for_user}} = conn, %{"id" => id} = params |> Enum.reverse() conn - |> add_link_headers(:favourites, activities) + |> add_link_headers(activities) |> put_view(StatusView) |> render("index.json", %{activities: activities, for: for_user, as: :activity}) else @@ -1200,7 +1200,7 @@ def bookmarks(%{assigns: %{user: user}} = conn, params) do |> Enum.map(fn b -> Map.put(b.activity, :bookmark, Map.delete(b, :activity)) end) conn - |> add_link_headers(:bookmarks, bookmarks) + |> add_link_headers(bookmarks) |> put_view(StatusView) |> render("index.json", %{activities: activities, for: user, as: :activity}) end @@ -1640,7 +1640,7 @@ def conversations(%{assigns: %{user: user}} = conn, params) do end) conn - |> add_link_headers(:conversations, participations) + |> add_link_headers(participations) |> json(conversations) end diff --git a/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex b/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex index f4df3b024..d17ccf84d 100644 --- a/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIController do use Pleroma.Web, :controller - import Pleroma.Web.ControllerHelper, only: [add_link_headers: 7] + import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2] alias Pleroma.Conversation.Participation alias Pleroma.Notification @@ -27,31 +27,22 @@ def conversation_statuses( %{assigns: %{user: user}} = conn, %{"id" => participation_id} = params ) do - params = - params - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) - - participation = - participation_id - |> Participation.get(preload: [:conversation]) + participation = Participation.get(participation_id, preload: [:conversation]) if user.id == participation.user_id do + params = + params + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("user", user) + activities = participation.conversation.ap_id |> ActivityPub.fetch_activities_for_context(params) |> Enum.reverse() conn - |> add_link_headers( - :conversation_statuses, - activities, - participation_id, - params, - nil, - &pleroma_api_url/4 - ) + |> add_link_headers(activities) |> put_view(StatusView) |> render("index.json", %{activities: activities, for: user, as: :activity}) end From ab2f21e470f349f783f895f26da3041afcc3d73e Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Fri, 6 Sep 2019 21:50:00 +0300 Subject: [PATCH 042/272] tests for mastodon_api_controller.ex --- lib/pleroma/object.ex | 7 + lib/pleroma/user.ex | 22 +- .../controllers/mastodon_api_controller.ex | 143 +++---- lib/pleroma/web/oauth/app.ex | 26 ++ lib/pleroma/web/twitter_api/twitter_api.ex | 2 +- .../mastodon_api_controller_test.exs | 370 +++++++++++++++--- test/web/oauth/app_test.exs | 33 ++ 7 files changed, 438 insertions(+), 165 deletions(-) create mode 100644 test/web/oauth/app_test.exs diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index d58eb7f7d..4398b9739 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -228,4 +228,11 @@ def increase_vote_count(ap_id, name) do _ -> :noop end end + + @doc "Updates data field of an object" + def update_data(%Object{data: data} = object, attrs \\ %{}) do + object + |> Object.change(%{data: Map.merge(data || %{}, attrs)}) + |> Repo.update() + end end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 3aa245f2a..d9db985a6 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -499,6 +499,11 @@ def get_all_by_ap_id(ap_ids) do |> Repo.all() end + def get_all_by_ids(ids) do + from(u in __MODULE__, where: u.id in ^ids) + |> Repo.all() + end + # This is mostly an SPC migration fix. This guesses the user nickname by taking the last part # of the ap_id and the domain and tries to get that user def get_by_guessed_nickname(ap_id) do @@ -770,6 +775,19 @@ def update_note_count(%User{} = user) do |> update_and_set_cache() end + def update_mascot(user, url) do + info_changeset = + User.Info.mascot_update( + user.info, + url + ) + + user + |> change() + |> put_embed(:info, info_changeset) + |> update_and_set_cache() + end + @spec maybe_fetch_follow_information(User.t()) :: User.t() def maybe_fetch_follow_information(user) do with {:ok, user} <- fetch_follow_information(user) do @@ -917,9 +935,7 @@ def subscribe(subscriber, %{ap_id: ap_id}) do def unsubscribe(unsubscriber, %{ap_id: ap_id}) do with %User{} = user <- get_cached_by_ap_id(ap_id) do - info_cng = - user.info - |> User.Info.remove_from_subscribers(unsubscriber.ap_id) + info_cng = User.Info.remove_from_subscribers(user.info, unsubscriber.ap_id) change(user) |> put_embed(:info, info_cng) diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index 8dfad7a54..e4e0a7ac9 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -447,8 +447,7 @@ def get_context(%{assigns: %{user: user}} = conn, %{"id" => id}) do grouped_activities <- Enum.group_by(activities, fn %{id: id} -> id < activity.id end) do result = %{ ancestors: - StatusView.render( - "index.json", + StatusView.render("index.json", for: user, activities: grouped_activities[true] || [], as: :activity @@ -456,8 +455,7 @@ def get_context(%{assigns: %{user: user}} = conn, %{"id" => id}) do |> Enum.reverse(), # credo:disable-for-previous-line Credo.Check.Refactor.PipeChainStart descendants: - StatusView.render( - "index.json", + StatusView.render("index.json", for: user, activities: grouped_activities[false] || [], as: :activity @@ -746,9 +744,7 @@ def destroy_multiple(%{assigns: %{user: user}} = conn, %{"ids" => ids} = _params end def relationships(%{assigns: %{user: user}} = conn, %{"id" => id}) do - id = List.wrap(id) - q = from(u in User, where: u.id in ^id) - targets = Repo.all(q) + targets = User.get_all_by_ids(List.wrap(id)) conn |> put_view(AccountView) @@ -758,19 +754,15 @@ def relationships(%{assigns: %{user: user}} = conn, %{"id" => id}) do # Instead of returning a 400 when no "id" params is present, Mastodon returns an empty array. def relationships(%{assigns: %{user: _user}} = conn, _), do: json(conn, []) - def update_media(%{assigns: %{user: user}} = conn, data) do - with %Object{} = object <- Repo.get(Object, data["id"]), + def update_media( + %{assigns: %{user: user}} = conn, + %{"id" => id, "description" => description} = _ + ) + when is_binary(description) do + with %Object{} = object <- Repo.get(Object, id), true <- Object.authorize_mutation(object, user), - true <- is_binary(data["description"]), - description <- data["description"] do - new_data = %{object.data | "name" => description} - - {:ok, _} = - object - |> Object.change(%{data: new_data}) - |> Repo.update() - - attachment_data = Map.put(new_data, "id", object.id) + {:ok, %Object{data: data}} <- Object.update_data(object, %{"name" => description}) do + attachment_data = Map.put(data, "id", object.id) conn |> put_view(StatusView) @@ -778,6 +770,8 @@ def update_media(%{assigns: %{user: user}} = conn, data) do end end + def update_media(_conn, _data), do: {:error, :bad_request} + def upload(%{assigns: %{user: user}} = conn, %{"file" => file} = data) do with {:ok, object} <- ActivityPub.upload( @@ -796,34 +790,23 @@ def upload(%{assigns: %{user: user}} = conn, %{"file" => file} = data) do def set_mascot(%{assigns: %{user: user}} = conn, %{"file" => file}) do with {:ok, object} <- ActivityPub.upload(file, actor: User.ap_id(user)), %{} = attachment_data <- Map.put(object.data, "id", object.id), - %{type: type} = rendered <- - StatusView.render("attachment.json", %{attachment: attachment_data}) do - # Reject if not an image - if type == "image" do - # Sure! - # Save to the user's info - info_changeset = User.Info.mascot_update(user.info, rendered) - - user_changeset = - user - |> Changeset.change() - |> Changeset.put_embed(:info, info_changeset) - - {:ok, _user} = User.update_and_set_cache(user_changeset) - - conn - |> json(rendered) - else + %{type: "image"} = rendered <- + StatusView.render("attachment.json", %{attachment: attachment_data}), + {:ok, _user} = User.update_mascot(user, rendered) do + json(conn, rendered) + else + %{type: _type} = _ -> render_error(conn, :unsupported_media_type, "mascots can only be images") - end + + e -> + e end end def get_mascot(%{assigns: %{user: user}} = conn, _params) do mascot = User.get_mascot(user) - conn - |> json(mascot) + json(conn, mascot) end def favourited_by(%{assigns: %{user: user}} = conn, %{"id" => id}) do @@ -1119,10 +1102,8 @@ def subscribe(%{assigns: %{user: user}} = conn, %{"id" => id}) do |> put_view(AccountView) |> render("relationship.json", %{user: user, target: subscription_target}) else - {:error, message} -> - conn - |> put_status(:forbidden) - |> json(%{error: message}) + nil -> {:error, :not_found} + e -> e end end @@ -1133,10 +1114,8 @@ def unsubscribe(%{assigns: %{user: user}} = conn, %{"id" => id}) do |> put_view(AccountView) |> render("relationship.json", %{user: user, target: subscription_target}) else - {:error, message} -> - conn - |> put_status(:forbidden) - |> json(%{error: message}) + nil -> {:error, :not_found} + e -> e end end @@ -1207,8 +1186,10 @@ def bookmarks(%{assigns: %{user: user}} = conn, params) do def account_lists(%{assigns: %{user: user}} = conn, %{"id" => account_id}) do lists = Pleroma.List.get_lists_account_belongs(user, account_id) - res = ListView.render("lists.json", lists: lists) - json(conn, res) + + conn + |> put_view(ListView) + |> render("index.json", %{lists: lists}) end def list_timeline(%{assigns: %{user: user}} = conn, %{"list_id" => id} = params) do @@ -1363,7 +1344,7 @@ def login(%{assigns: %{user: %User{}}} = conn, _params) do @doc "Local Mastodon FE login init action" def login(conn, %{"code" => auth_token}) do with {:ok, app} <- get_or_make_app(), - %Authorization{} = auth <- Repo.get_by(Authorization, token: auth_token, app_id: app.id), + {:ok, auth} <- Authorization.get_by_token(app, auth_token), {:ok, token} <- Token.exchange_token(app, auth) do conn |> put_session(:oauth_token, token.token) @@ -1375,9 +1356,7 @@ def login(conn, %{"code" => auth_token}) do def login(conn, _) do with {:ok, app} <- get_or_make_app() do path = - o_auth_path( - conn, - :authorize, + o_auth_path(conn, :authorize, response_type: "code", client_id: app.client_id, redirect_uri: ".", @@ -1399,31 +1378,12 @@ defp local_mastodon_root_path(conn) do end end + @spec get_or_make_app() :: {:ok, App.t()} | {:error, Ecto.Changeset.t()} defp get_or_make_app do - find_attrs = %{client_name: @local_mastodon_name, redirect_uris: "."} - scopes = ["read", "write", "follow", "push"] - - with %App{} = app <- Repo.get_by(App, find_attrs) do - {:ok, app} = - if app.scopes == scopes do - {:ok, app} - else - app - |> Changeset.change(%{scopes: scopes}) - |> Repo.update() - end - - {:ok, app} - else - _e -> - cs = - App.register_changeset( - %App{}, - Map.put(find_attrs, :scopes, scopes) - ) - - Repo.insert(cs) - end + App.get_or_make( + %{client_name: @local_mastodon_name, redirect_uris: "."}, + ["read", "write", "follow", "push"] + ) end def logout(conn, _) do @@ -1432,26 +1392,13 @@ def logout(conn, _) do |> redirect(to: "/") end - def relationship_noop(%{assigns: %{user: user}} = conn, %{"id" => id}) do - Logger.debug("Unimplemented, returning unmodified relationship") - - with %User{} = target <- User.get_cached_by_id(id) do - conn - |> put_view(AccountView) - |> render("relationship.json", %{user: user, target: target}) - end - end - + # Stubs for unimplemented mastodon api + # def empty_array(conn, _) do Logger.debug("Unimplemented, returning an empty array") json(conn, []) end - def empty_object(conn, _) do - Logger.debug("Unimplemented, returning an empty object") - json(conn, %{}) - end - def get_filters(%{assigns: %{user: user}} = conn, _) do filters = Filter.get_filters(user) res = FilterView.render("filters.json", filters: filters) @@ -1570,7 +1517,7 @@ def status_card(%{assigns: %{user: user}} = conn, %{"id" => status_id}) do json(conn, data) else _e -> - %{} + json(conn, %{}) end end @@ -1623,7 +1570,7 @@ def account_register( end end - def account_register(%{assigns: %{app: _app}} = conn, _params) do + def account_register(%{assigns: %{app: _app}} = conn, _) do render_error(conn, :bad_request, "Missing parameters") end @@ -1682,15 +1629,15 @@ def account_confirmation_resend(conn, params) do end end - def try_render(conn, target, params) - when is_binary(target) do + defp try_render(conn, target, params) + when is_binary(target) do case render(conn, target, params) do nil -> render_error(conn, :not_implemented, "Can't display this activity") res -> res end end - def try_render(conn, _, _) do + defp try_render(conn, _, _) do render_error(conn, :not_implemented, "Can't display this activity") end diff --git a/lib/pleroma/web/oauth/app.ex b/lib/pleroma/web/oauth/app.ex index ddcdb1871..cc3fb1ce5 100644 --- a/lib/pleroma/web/oauth/app.ex +++ b/lib/pleroma/web/oauth/app.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.OAuth.App do use Ecto.Schema import Ecto.Changeset + alias Pleroma.Repo @type t :: %__MODULE__{} @@ -39,4 +40,29 @@ def register_changeset(struct, params \\ %{}) do changeset end end + + @doc """ + Gets app by attrs or create new with attrs. + And updates the scopes if need. + """ + @spec get_or_make(map(), list(String.t())) :: {:ok, App.t()} | {:error, Ecto.Changeset.t()} + def get_or_make(attrs, scopes) do + with %__MODULE__{} = app <- Repo.get_by(__MODULE__, attrs) do + update_scopes(app, scopes) + else + _e -> + %__MODULE__{} + |> register_changeset(Map.put(attrs, :scopes, scopes)) + |> Repo.insert() + end + end + + defp update_scopes(%__MODULE__{} = app, []), do: {:ok, app} + defp update_scopes(%__MODULE__{scopes: scopes} = app, scopes), do: {:ok, app} + + defp update_scopes(%__MODULE__{} = app, scopes) do + app + |> change(%{scopes: scopes}) + |> Repo.update() + end end diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index 8eda762c7..bfd838902 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -29,7 +29,7 @@ def register_user(params, opts \\ []) do captcha_enabled = Pleroma.Config.get([Pleroma.Captcha, :enabled]) # true if captcha is disabled or enabled and valid, false otherwise captcha_ok = - if !captcha_enabled do + if not captcha_enabled do :ok else Pleroma.Captcha.validate( diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index e18f8f0d1..a331d6455 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -1551,6 +1551,17 @@ test "returns the relationships for the current user", %{conn: conn} do assert to_string(other_user.id) == relationship["id"] end + + test "returns an empty list when bad request", %{conn: conn} do + user = insert(:user) + + conn = + conn + |> assign(:user, user) + |> get("/api/v1/accounts/relationships", %{}) + + assert [] = json_response(conn, 200) + end end describe "media upload" do @@ -1752,70 +1763,72 @@ test "respects limit_to_local_content == :unauthenticated for remote user nickna end end - test "mascot upload", %{conn: conn} do - user = insert(:user) + describe "/api/v1/pleroma/mascot" do + test "mascot upload", %{conn: conn} do + user = insert(:user) - non_image_file = %Plug.Upload{ - content_type: "audio/mpeg", - path: Path.absname("test/fixtures/sound.mp3"), - filename: "sound.mp3" - } + non_image_file = %Plug.Upload{ + content_type: "audio/mpeg", + path: Path.absname("test/fixtures/sound.mp3"), + filename: "sound.mp3" + } - conn = - conn - |> assign(:user, user) - |> put("/api/v1/pleroma/mascot", %{"file" => non_image_file}) + conn = + conn + |> assign(:user, user) + |> put("/api/v1/pleroma/mascot", %{"file" => non_image_file}) - assert json_response(conn, 415) + assert json_response(conn, 415) - file = %Plug.Upload{ - content_type: "image/jpg", - path: Path.absname("test/fixtures/image.jpg"), - filename: "an_image.jpg" - } + file = %Plug.Upload{ + content_type: "image/jpg", + path: Path.absname("test/fixtures/image.jpg"), + filename: "an_image.jpg" + } - conn = - build_conn() - |> assign(:user, user) - |> put("/api/v1/pleroma/mascot", %{"file" => file}) + conn = + build_conn() + |> assign(:user, user) + |> put("/api/v1/pleroma/mascot", %{"file" => file}) - assert %{"id" => _, "type" => image} = json_response(conn, 200) - end + assert %{"id" => _, "type" => image} = json_response(conn, 200) + end - test "mascot retrieving", %{conn: conn} do - user = insert(:user) - # When user hasn't set a mascot, we should just get pleroma tan back - conn = - conn - |> assign(:user, user) - |> get("/api/v1/pleroma/mascot") + test "mascot retrieving", %{conn: conn} do + user = insert(:user) + # When user hasn't set a mascot, we should just get pleroma tan back + conn = + conn + |> assign(:user, user) + |> get("/api/v1/pleroma/mascot") - assert %{"url" => url} = json_response(conn, 200) - assert url =~ "pleroma-fox-tan-smol" + assert %{"url" => url} = json_response(conn, 200) + assert url =~ "pleroma-fox-tan-smol" - # When a user sets their mascot, we should get that back - file = %Plug.Upload{ - content_type: "image/jpg", - path: Path.absname("test/fixtures/image.jpg"), - filename: "an_image.jpg" - } + # When a user sets their mascot, we should get that back + file = %Plug.Upload{ + content_type: "image/jpg", + path: Path.absname("test/fixtures/image.jpg"), + filename: "an_image.jpg" + } - conn = - build_conn() - |> assign(:user, user) - |> put("/api/v1/pleroma/mascot", %{"file" => file}) + conn = + build_conn() + |> assign(:user, user) + |> put("/api/v1/pleroma/mascot", %{"file" => file}) - assert json_response(conn, 200) + assert json_response(conn, 200) - user = User.get_cached_by_id(user.id) + user = User.get_cached_by_id(user.id) - conn = - build_conn() - |> assign(:user, user) - |> get("/api/v1/pleroma/mascot") + conn = + build_conn() + |> assign(:user, user) + |> get("/api/v1/pleroma/mascot") - assert %{"url" => url, "type" => "image"} = json_response(conn, 200) - assert url =~ "an_image" + assert %{"url" => url, "type" => "image"} = json_response(conn, 200) + assert url =~ "an_image" + end end test "hashtag timeline", %{conn: conn} do @@ -2183,23 +2196,51 @@ test "without notifications", %{conn: conn} do end end - test "subscribing / unsubscribing to a user", %{conn: conn} do - user = insert(:user) - subscription_target = insert(:user) + describe "subscribing / unsubscribing" do + test "subscribing / unsubscribing to a user", %{conn: conn} do + user = insert(:user) + subscription_target = insert(:user) - conn = - conn - |> assign(:user, user) - |> post("/api/v1/pleroma/accounts/#{subscription_target.id}/subscribe") + conn = + conn + |> assign(:user, user) + |> post("/api/v1/pleroma/accounts/#{subscription_target.id}/subscribe") - assert %{"id" => _id, "subscribing" => true} = json_response(conn, 200) + assert %{"id" => _id, "subscribing" => true} = json_response(conn, 200) - conn = - build_conn() - |> assign(:user, user) - |> post("/api/v1/pleroma/accounts/#{subscription_target.id}/unsubscribe") + conn = + build_conn() + |> assign(:user, user) + |> post("/api/v1/pleroma/accounts/#{subscription_target.id}/unsubscribe") - assert %{"id" => _id, "subscribing" => false} = json_response(conn, 200) + assert %{"id" => _id, "subscribing" => false} = json_response(conn, 200) + end + end + + describe "subscribing" do + test "returns 404 when subscription_target not found", %{conn: conn} do + user = insert(:user) + + conn = + conn + |> assign(:user, user) + |> post("/api/v1/pleroma/accounts/target_id/subscribe") + + assert %{"error" => "Record not found"} = json_response(conn, 404) + end + end + + describe "unsubscribing" do + test "returns 404 when subscription_target not found", %{conn: conn} do + user = insert(:user) + + conn = + conn + |> assign(:user, user) + |> post("/api/v1/pleroma/accounts/target_id/unsubscribe") + + assert %{"error" => "Record not found"} = json_response(conn, 404) + end end test "getting a list of mutes", %{conn: conn} do @@ -2814,6 +2855,15 @@ test "replaces missing description with an empty string", %{conn: conn, user: us } } end + + test "returns empty object when id invalid", %{conn: conn} do + response = + conn + |> get("/api/v1/statuses/9eoozpwTul5mjSEDRI/card") + |> json_response(200) + + assert response == %{} + end end test "bookmarks" do @@ -3133,6 +3183,18 @@ test "redirects to the saved path after log in", %{conn: conn, path: path} do assert conn.status == 302 assert redirected_to(conn) == path end + end + + describe "GET /web/login" do + test "redirects to /oauth/authorize", %{conn: conn} do + app = insert(:oauth_app, client_name: "Mastodon-Local", redirect_uris: ".") + conn = get(conn, "/web/login", %{}) + + assert conn.status == 302 + + assert redirected_to(conn) == + "/oauth/authorize?response_type=code&client_id=#{app.client_id}&redirect_uri=.&scope=read+write+follow+push" + end test "redirects to the getting-started page when referer is not present", %{conn: conn} do app = insert(:oauth_app, client_name: "Mastodon-Local", redirect_uris: ".") @@ -3143,6 +3205,18 @@ test "redirects to the getting-started page when referer is not present", %{conn assert conn.status == 302 assert redirected_to(conn) == "/web/getting-started" end + + test "redirects to the getting-started page when user assigned", %{conn: conn} do + user = insert(:user) + + conn = + conn + |> assign(:user, user) + |> get("/web/login", %{}) + + assert conn.status == 302 + assert redirected_to(conn) == "/web/getting-started" + end end describe "scheduled activities" do @@ -3401,6 +3475,17 @@ test "Repeated posts that are replies incorrectly have in_reply_to_id null", %{c end describe "create account by app" do + setup do + valid_params = %{ + username: "lain", + email: "lain@example.org", + password: "PlzDontHackLain", + agreement: true + } + + [valid_params: valid_params] + end + test "Account registration via Application", %{conn: conn} do conn = conn @@ -3444,6 +3529,7 @@ test "Account registration via Application", %{conn: conn} do username: "lain", email: "lain@example.org", password: "PlzDontHackLain", + bio: "Test Bio", agreement: true }) @@ -3462,6 +3548,18 @@ test "Account registration via Application", %{conn: conn} do assert token_from_db.user.info.confirmation_pending end + test "returns error when user already registred", %{conn: conn, valid_params: valid_params} do + _user = insert(:user, email: "lain@example.org") + app_token = insert(:oauth_token, user: nil) + + conn = + conn + |> put_req_header("authorization", "Bearer " <> app_token.token) + + res = post(conn, "/api/v1/accounts", valid_params) + assert json_response(res, 400) == %{"error" => "{\"email\":[\"has already been taken\"]}"} + end + test "rate limit", %{conn: conn} do app_token = insert(:oauth_token, user: nil) @@ -3505,6 +3603,41 @@ test "rate limit", %{conn: conn} do assert json_response(conn, :too_many_requests) == %{"error" => "Throttled"} end + + test "returns bad_request if missing required params", %{ + conn: conn, + valid_params: valid_params + } do + app_token = insert(:oauth_token, user: nil) + + conn = + conn + |> put_req_header("authorization", "Bearer " <> app_token.token) + + res = post(conn, "/api/v1/accounts", valid_params) + assert json_response(res, 200) + + Enum.each(valid_params, fn {attr, _} -> + res = + conn + |> Map.put( + :remote_ip, + {:rand.uniform(15), :rand.uniform(15), :rand.uniform(15), :rand.uniform(15)} + ) + |> post("/api/v1/accounts", Map.delete(valid_params, attr)) + + assert json_response(res, 400) == %{"error" => "Missing parameters"} + end) + end + + test "returns forbidden if token is invalid", %{conn: conn, valid_params: valid_params} do + conn = + conn + |> put_req_header("authorization", "Bearer " <> "invalid-token") + + res = post(conn, "/api/v1/accounts", valid_params) + assert json_response(res, 403) == %{"error" => "Invalid credentials"} + end end describe "GET /api/v1/polls/:id" do @@ -3988,4 +4121,115 @@ test "returns suggestions", %{conn: conn, user: user, other_user: other_user} do ] end end + + describe "PUT /api/v1/media/:id" do + setup do + actor = insert(:user) + + file = %Plug.Upload{ + content_type: "image/jpg", + path: Path.absname("test/fixtures/image.jpg"), + filename: "an_image.jpg" + } + + {:ok, %Object{} = object} = + ActivityPub.upload( + file, + actor: User.ap_id(actor), + description: "test-m" + ) + + [actor: actor, object: object] + end + + test "updates name of media", %{conn: conn, actor: actor, object: object} do + media = + conn + |> assign(:user, actor) + |> put("/api/v1/media/#{object.id}", %{"description" => "test-media"}) + |> json_response(:ok) + + assert media["description"] == "test-media" + assert refresh_record(object).data["name"] == "test-media" + end + + test "returns error wheb request is bad", %{conn: conn, actor: actor, object: object} do + media = + conn + |> assign(:user, actor) + |> put("/api/v1/media/#{object.id}", %{}) + |> json_response(400) + + assert media == %{"error" => "bad_request"} + end + end + + describe "DELETE /auth/sign_out" do + test "redirect to root page", %{conn: conn} do + user = insert(:user) + + conn = + conn + |> assign(:user, user) + |> delete("/auth/sign_out") + + assert conn.status == 302 + assert redirected_to(conn) == "/" + end + end + + describe "GET /api/v1/accounts/:id/lists - account_lists" do + test "returns lists to which the account belongs", %{conn: conn} do + user = insert(:user) + other_user = insert(:user) + assert {:ok, %Pleroma.List{} = list} = Pleroma.List.create("Test List", user) + {:ok, %{following: _following}} = Pleroma.List.follow(list, other_user) + + res = + conn + |> assign(:user, user) + |> get("/api/v1/accounts/#{other_user.id}/lists") + |> json_response(200) + + assert res == [%{"id" => to_string(list.id), "title" => "Test List"}] + end + end + + describe "empty_array, stubs for mastodon api" do + test "GET /api/v1/accounts/:id/identity_proofs", %{conn: conn} do + user = insert(:user) + + res = + conn + |> assign(:user, user) + |> get("/api/v1/accounts/#{user.id}/identity_proofs") + |> json_response(200) + + assert res == [] + end + + test "GET /api/v1/endorsements", %{conn: conn} do + user = insert(:user) + + res = + conn + |> assign(:user, user) + |> get("/api/v1/endorsements") + |> json_response(200) + + assert res == [] + end + + test "GET /api/v1/trends", %{conn: conn} do + user = insert(:user) + + res = + conn + |> assign(:user, user) + |> get("/api/v1/trends") + |> json_response(200) + + assert res == [] + end + end end diff --git a/test/web/oauth/app_test.exs b/test/web/oauth/app_test.exs new file mode 100644 index 000000000..195b8c17f --- /dev/null +++ b/test/web/oauth/app_test.exs @@ -0,0 +1,33 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.OAuth.AppTest do + use Pleroma.DataCase + + alias Pleroma.Web.OAuth.App + import Pleroma.Factory + + describe "get_or_make/2" do + test "gets exist app" do + attrs = %{client_name: "Mastodon-Local", redirect_uris: "."} + app = insert(:oauth_app, Map.merge(attrs, %{scopes: ["read", "write"]})) + {:ok, %App{} = exist_app} = App.get_or_make(attrs, []) + assert exist_app == app + end + + test "make app" do + attrs = %{client_name: "Mastodon-Local", redirect_uris: "."} + {:ok, %App{} = app} = App.get_or_make(attrs, ["write"]) + assert app.scopes == ["write"] + end + + test "gets exist app and updates scopes" do + attrs = %{client_name: "Mastodon-Local", redirect_uris: "."} + app = insert(:oauth_app, Map.merge(attrs, %{scopes: ["read", "write"]})) + {:ok, %App{} = exist_app} = App.get_or_make(attrs, ["read", "write", "follow", "push"]) + assert exist_app.id == app.id + assert exist_app.scopes == ["read", "write", "follow", "push"] + end + end +end From a31af93e1d10d9db8796d86ccda35873697b5a4c Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Tue, 10 Sep 2019 16:43:10 +0300 Subject: [PATCH 043/272] added tests /activity_pub/transmogrifier.ex --- .../web/activity_pub/transmogrifier.ex | 264 +++++++----------- test/web/activity_pub/transmogrifier_test.exs | 162 +++++++++++ 2 files changed, 270 insertions(+), 156 deletions(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 468961bd0..93b3a1f97 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -41,8 +41,7 @@ def fix_object(object, options \\ []) do end def fix_summary(%{"summary" => nil} = object) do - object - |> Map.put("summary", "") + Map.put(object, "summary", "") end def fix_summary(%{"summary" => _} = object) do @@ -50,10 +49,7 @@ def fix_summary(%{"summary" => _} = object) do object end - def fix_summary(object) do - object - |> Map.put("summary", "") - end + def fix_summary(object), do: Map.put(object, "summary", "") def fix_addressing_list(map, field) do cond do @@ -73,13 +69,9 @@ def fix_explicit_addressing( explicit_mentions, follower_collection ) do - explicit_to = - to - |> Enum.filter(fn x -> x in explicit_mentions end) + explicit_to = Enum.filter(to, fn x -> x in explicit_mentions end) - explicit_cc = - to - |> Enum.filter(fn x -> x not in explicit_mentions end) + explicit_cc = Enum.filter(to, fn x -> x not in explicit_mentions end) final_cc = (cc ++ explicit_cc) @@ -97,13 +89,19 @@ def fix_explicit_addressing(object, _explicit_mentions, _followers_collection), def fix_explicit_addressing(%{"directMessage" => true} = object), do: object def fix_explicit_addressing(object) do - explicit_mentions = + explicit_mentions = Utils.determine_explicit_mentions(object) + + %User{follower_address: follower_collection} = object - |> Utils.determine_explicit_mentions() + |> Containment.get_actor() + |> User.get_cached_by_ap_id() - follower_collection = User.get_cached_by_ap_id(Containment.get_actor(object)).follower_address - - explicit_mentions = explicit_mentions ++ [Pleroma.Constants.as_public(), follower_collection] + explicit_mentions = + explicit_mentions ++ + [ + Pleroma.Constants.as_public(), + follower_collection + ] fix_explicit_addressing(object, explicit_mentions, follower_collection) end @@ -147,48 +145,25 @@ def fix_addressing(object) do end def fix_actor(%{"attributedTo" => actor} = object) do - object - |> Map.put("actor", Containment.get_actor(%{"actor" => actor})) + Map.put(object, "actor", Containment.get_actor(%{"actor" => actor})) end def fix_in_reply_to(object, options \\ []) def fix_in_reply_to(%{"inReplyTo" => in_reply_to} = object, options) when not is_nil(in_reply_to) do - in_reply_to_id = - cond do - is_bitstring(in_reply_to) -> - in_reply_to - - is_map(in_reply_to) && is_bitstring(in_reply_to["id"]) -> - in_reply_to["id"] - - is_list(in_reply_to) && is_bitstring(Enum.at(in_reply_to, 0)) -> - Enum.at(in_reply_to, 0) - - # Maybe I should output an error too? - true -> - "" - end - + in_reply_to_id = prepare_in_reply_to(in_reply_to) object = Map.put(object, "inReplyToAtomUri", in_reply_to_id) if Federator.allowed_incoming_reply_depth?(options[:depth]) do - case get_obj_helper(in_reply_to_id, options) do - {:ok, replied_object} -> - with %Activity{} = _activity <- - Activity.get_create_by_object_ap_id(replied_object.data["id"]) do - object - |> Map.put("inReplyTo", replied_object.data["id"]) - |> Map.put("inReplyToAtomUri", object["inReplyToAtomUri"] || in_reply_to_id) - |> Map.put("conversation", replied_object.data["context"] || object["conversation"]) - |> Map.put("context", replied_object.data["context"] || object["conversation"]) - else - e -> - Logger.error("Couldn't fetch \"#{inspect(in_reply_to_id)}\", error: #{inspect(e)}") - object - end - + with {:ok, replied_object} <- get_obj_helper(in_reply_to_id, options), + %Activity{} = _ <- Activity.get_create_by_object_ap_id(replied_object.data["id"]) do + object + |> Map.put("inReplyTo", replied_object.data["id"]) + |> Map.put("inReplyToAtomUri", object["inReplyToAtomUri"] || in_reply_to_id) + |> Map.put("conversation", replied_object.data["context"] || object["conversation"]) + |> Map.put("context", replied_object.data["context"] || object["conversation"]) + else e -> Logger.error("Couldn't fetch \"#{inspect(in_reply_to_id)}\", error: #{inspect(e)}") object @@ -200,6 +175,22 @@ def fix_in_reply_to(%{"inReplyTo" => in_reply_to} = object, options) def fix_in_reply_to(object, _options), do: object + defp prepare_in_reply_to(in_reply_to) do + cond do + is_bitstring(in_reply_to) -> + in_reply_to + + is_map(in_reply_to) && is_bitstring(in_reply_to["id"]) -> + in_reply_to["id"] + + is_list(in_reply_to) && is_bitstring(Enum.at(in_reply_to, 0)) -> + Enum.at(in_reply_to, 0) + + true -> + "" + end + end + def fix_context(object) do context = object["context"] || object["conversation"] || Utils.generate_context_id() @@ -210,8 +201,7 @@ def fix_context(object) do def fix_attachments(%{"attachment" => attachment} = object) when is_list(attachment) do attachments = - attachment - |> Enum.map(fn data -> + Enum.map(attachment, fn data -> media_type = data["mediaType"] || data["mimeType"] href = data["url"] || data["href"] @@ -222,30 +212,23 @@ def fix_attachments(%{"attachment" => attachment} = object) when is_list(attachm |> Map.put("url", url) end) - object - |> Map.put("attachment", attachments) + Map.put(object, "attachment", attachments) end def fix_attachments(%{"attachment" => attachment} = object) when is_map(attachment) do - Map.put(object, "attachment", [attachment]) - |> fix_attachments() + fix_attachments(Map.put(object, "attachment", [attachment])) end def fix_attachments(object), do: object def fix_url(%{"url" => url} = object) when is_map(url) do - object - |> Map.put("url", url["href"]) + Map.put(object, "url", url["href"]) end def fix_url(%{"type" => "Video", "url" => url} = object) when is_list(url) do first_element = Enum.at(url, 0) - link_element = - url - |> Enum.filter(fn x -> is_map(x) end) - |> Enum.filter(fn x -> x["mimeType"] == "text/html" end) - |> Enum.at(0) + link_element = Enum.find(url, fn x -> is_map(x) and x["mimeType"] == "text/html" end) object |> Map.put("attachment", [first_element]) @@ -263,36 +246,32 @@ def fix_url(%{"type" => object_type, "url" => url} = object) true -> "" end - object - |> Map.put("url", url_string) + Map.put(object, "url", url_string) end def fix_url(object), do: object def fix_emoji(%{"tag" => tags} = object) when is_list(tags) do - emoji = tags |> Enum.filter(fn data -> data["type"] == "Emoji" and data["icon"] end) - emoji = - emoji + tags + |> Enum.filter(fn data -> data["type"] == "Emoji" and data["icon"] end) |> Enum.reduce(%{}, fn data, mapping -> name = String.trim(data["name"], ":") - mapping |> Map.put(name, data["icon"]["url"]) + Map.put(mapping, name, data["icon"]["url"]) end) # we merge mastodon and pleroma emoji into a single mapping, to allow for both wire formats emoji = Map.merge(object["emoji"] || %{}, emoji) - object - |> Map.put("emoji", emoji) + Map.put(object, "emoji", emoji) end def fix_emoji(%{"tag" => %{"type" => "Emoji"} = tag} = object) do name = String.trim(tag["name"], ":") emoji = %{name => tag["icon"]["url"]} - object - |> Map.put("emoji", emoji) + Map.put(object, "emoji", emoji) end def fix_emoji(object), do: object @@ -303,17 +282,13 @@ def fix_tag(%{"tag" => tag} = object) when is_list(tag) do |> Enum.filter(fn data -> data["type"] == "Hashtag" and data["name"] end) |> Enum.map(fn data -> String.slice(data["name"], 1..-1) end) - combined = tag ++ tags - - object - |> Map.put("tag", combined) + Map.put(object, "tag", tag ++ tags) end def fix_tag(%{"tag" => %{"type" => "Hashtag", "name" => hashtag} = tag} = object) do combined = [tag, String.slice(hashtag, 1..-1)] - object - |> Map.put("tag", combined) + Map.put(object, "tag", combined) end def fix_tag(%{"tag" => %{} = tag} = object), do: Map.put(object, "tag", [tag]) @@ -325,8 +300,7 @@ def fix_content_map(%{"contentMap" => content_map} = object) do content_groups = Map.to_list(content_map) {_, content} = Enum.at(content_groups, 0) - object - |> Map.put("content", content) + Map.put(object, "content", content) end def fix_content_map(object), do: object @@ -335,16 +309,11 @@ def fix_type(object, options \\ []) def fix_type(%{"inReplyTo" => reply_id, "name" => _} = object, options) when is_binary(reply_id) do - reply = - with true <- Federator.allowed_incoming_reply_depth?(options[:depth]), - {:ok, object} <- get_obj_helper(reply_id, options) do - object - end - - if reply && reply.data["type"] == "Question" do + with true <- Federator.allowed_incoming_reply_depth?(options[:depth]), + {:ok, %{data: %{"type" => "Question"} = _} = _} <- get_obj_helper(reply_id, options) do Map.put(object, "type", "Answer") else - object + _ -> object end end @@ -376,6 +345,17 @@ defp get_follow_activity(follow_object, followed) do end end + # Reduce the object list to find the reported user. + defp get_reported(objects) do + Enum.reduce_while(objects, nil, fn ap_id, _ -> + with %User{} = user <- User.get_cached_by_ap_id(ap_id) do + {:halt, user} + else + _ -> {:cont, nil} + end + end) + end + def handle_incoming(data, options \\ []) # Flag objects are placed ahead of the ID check because Mastodon 2.8 and earlier send them @@ -384,31 +364,19 @@ def handle_incoming(%{"type" => "Flag", "object" => objects, "actor" => actor} = with context <- data["context"] || Utils.generate_context_id(), content <- data["content"] || "", %User{} = actor <- User.get_cached_by_ap_id(actor), - # Reduce the object list to find the reported user. - %User{} = account <- - Enum.reduce_while(objects, nil, fn ap_id, _ -> - with %User{} = user <- User.get_cached_by_ap_id(ap_id) do - {:halt, user} - else - _ -> {:cont, nil} - end - end), - + %User{} = account <- get_reported(objects), # Remove the reported user from the object list. statuses <- Enum.filter(objects, fn ap_id -> ap_id != account.ap_id end) do - params = %{ + %{ actor: actor, context: context, account: account, statuses: statuses, content: content, - additional: %{ - "cc" => [account.ap_id] - } + additional: %{"cc" => [account.ap_id]} } - - ActivityPub.flag(params) + |> ActivityPub.flag() end end @@ -755,8 +723,13 @@ def handle_incoming( def handle_incoming(_, _), do: :error + @spec get_obj_helper(String.t(), Keyword.t()) :: {:ok, Object.t()} | nil def get_obj_helper(id, options \\ []) do - if object = Object.normalize(id, true, options), do: {:ok, object}, else: nil + if object = Object.normalize(id, true, options) do + {:ok, object} + else + nil + end end def set_reply_to_uri(%{"inReplyTo" => in_reply_to} = object) when is_binary(in_reply_to) do @@ -855,27 +828,24 @@ def prepare_outgoing(%{"type" => _type} = data) do {:ok, data} end - def maybe_fix_object_url(data) do - if is_binary(data["object"]) and not String.starts_with?(data["object"], "http") do - case get_obj_helper(data["object"]) do - {:ok, relative_object} -> - if relative_object.data["external_url"] do - _data = - data - |> Map.put("object", relative_object.data["external_url"]) - else - data - end - - e -> - Logger.error("Couldn't fetch #{data["object"]} #{inspect(e)}") - data - end + def maybe_fix_object_url(%{"object" => object} = data) when is_binary(object) do + with false <- String.starts_with?(object, "http"), + {:fetch, {:ok, relative_object}} <- {:fetch, get_obj_helper(object)}, + %{data: %{"external_url" => external_url}} when not is_nil(external_url) <- + relative_object do + Map.put(data, "object", external_url) else - data + {:fetch, e} -> + Logger.error("Couldn't fetch #{object} #{inspect(e)}") + data + + _ -> + data end end + def maybe_fix_object_url(data), do: data + def add_hashtags(object) do tags = (object["tag"] || []) @@ -893,8 +863,7 @@ def add_hashtags(object) do tag end) - object - |> Map.put("tag", tags) + Map.put(object, "tag", tags) end def add_mention_tags(object) do @@ -907,15 +876,13 @@ def add_mention_tags(object) do tags = object["tag"] || [] - object - |> Map.put("tag", tags ++ mentions) + Map.put(object, "tag", tags ++ mentions) end def add_emoji_tags(%User{info: %{"emoji" => _emoji} = user_info} = object) do user_info = add_emoji_tags(user_info) - object - |> Map.put(:info, user_info) + Map.put(object, :info, user_info) end # TODO: we should probably send mtime instead of unix epoch time for updated @@ -923,8 +890,7 @@ def add_emoji_tags(%{"emoji" => emoji} = object) do tags = object["tag"] || [] out = - emoji - |> Enum.map(fn {name, url} -> + Enum.map(emoji, fn {name, url} -> %{ "icon" => %{"url" => url, "type" => "Image"}, "name" => ":" <> name <> ":", @@ -934,13 +900,10 @@ def add_emoji_tags(%{"emoji" => emoji} = object) do } end) - object - |> Map.put("tag", tags ++ out) + Map.put(object, "tag", tags ++ out) end - def add_emoji_tags(object) do - object - end + def add_emoji_tags(object), do: object def set_conversation(object) do Map.put(object, "conversation", object["context"]) @@ -959,9 +922,7 @@ def set_type(object), do: object def add_attributed_to(object) do attributed_to = object["attributedTo"] || object["actor"] - - object - |> Map.put("attributedTo", attributed_to) + Map.put(object, "attributedTo", attributed_to) end def prepare_attachments(object) do @@ -972,8 +933,7 @@ def prepare_attachments(object) do %{"url" => href, "mediaType" => media_type, "name" => data["name"], "type" => "Document"} end) - object - |> Map.put("attachment", attachments) + Map.put(object, "attachment", attachments) end defp strip_internal_fields(object) do @@ -990,12 +950,9 @@ defp strip_internal_fields(object) do end defp strip_internal_tags(%{"tag" => tags} = object) do - tags = - tags - |> Enum.filter(fn x -> is_map(x) end) + tags = Enum.filter(tags, fn x -> is_map(x) end) - object - |> Map.put("tag", tags) + Map.put(object, "tag", tags) end defp strip_internal_tags(object), do: object @@ -1074,16 +1031,11 @@ def maybe_retire_websub(ap_id) do end end - def maybe_fix_user_url(data) do - if is_map(data["url"]) do - Map.put(data, "url", data["url"]["href"]) - else - data - end + def maybe_fix_user_url(%{"url" => url} = data) when is_map(url) do + Map.put(data, "url", url["href"]) end - def maybe_fix_user_object(data) do - data - |> maybe_fix_user_url - end + def maybe_fix_user_url(data), do: data + + def maybe_fix_user_object(data), do: maybe_fix_user_url(data) end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 0661d5d7c..63c869d35 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -1451,4 +1451,166 @@ test "removes recipient's follower collection from cc", %{user: user} do refute recipient.follower_address in fixed_object["to"] end end + + describe "fix_summary/1" do + test "returns fixed object" do + assert Transmogrifier.fix_summary(%{"summary" => nil}) == %{"summary" => ""} + assert Transmogrifier.fix_summary(%{"summary" => "ok"}) == %{"summary" => "ok"} + assert Transmogrifier.fix_summary(%{}) == %{"summary" => ""} + end + end + + describe "fix_in_reply_to/2" do + clear_config([:instance, :federation_incoming_replies_max_depth]) + + setup do + data = Poison.decode!(File.read!("test/fixtures/mastodon-post-activity.json")) + [data: data] + end + + test "returns not modified object when hasn't containts inReplyTo field", %{data: data} do + assert Transmogrifier.fix_in_reply_to(data) == data + end + + test "returns object with inReplyToAtomUri when denied incoming reply", %{data: data} do + Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 0) + + object_with_reply = + Map.put(data["object"], "inReplyTo", "https://shitposter.club/notice/2827873") + + modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) + assert modified_object["inReplyTo"] == "https://shitposter.club/notice/2827873" + assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" + + object_with_reply = + Map.put(data["object"], "inReplyTo", %{"id" => "https://shitposter.club/notice/2827873"}) + + modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) + assert modified_object["inReplyTo"] == %{"id" => "https://shitposter.club/notice/2827873"} + assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" + + object_with_reply = + Map.put(data["object"], "inReplyTo", ["https://shitposter.club/notice/2827873"]) + + modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) + assert modified_object["inReplyTo"] == ["https://shitposter.club/notice/2827873"] + assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" + + object_with_reply = Map.put(data["object"], "inReplyTo", []) + modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) + assert modified_object["inReplyTo"] == [] + assert modified_object["inReplyToAtomUri"] == "" + end + + test "returns modified object when allowed incoming reply", %{data: data} do + object_with_reply = + Map.put( + data["object"], + "inReplyTo", + "https://shitposter.club/notice/2827873" + ) + + Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 5) + modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) + + assert modified_object["inReplyTo"] == + "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" + + assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" + + assert modified_object["conversation"] == + "tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26" + + assert modified_object["context"] == + "tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26" + end + end + + describe "fix_url/1" do + test "fixes data for object when url is map" do + object = %{ + "url" => %{ + "type" => "Link", + "mimeType" => "video/mp4", + "href" => "https://peede8d-46fb-ad81-2d4c2d1630e3-480.mp4" + } + } + + assert Transmogrifier.fix_url(object) == %{ + "url" => "https://peede8d-46fb-ad81-2d4c2d1630e3-480.mp4" + } + end + + test "fixes data for video object" do + object = %{ + "type" => "Video", + "url" => [ + %{ + "type" => "Link", + "mimeType" => "video/mp4", + "href" => "https://peede8d-46fb-ad81-2d4c2d1630e3-480.mp4" + }, + %{ + "type" => "Link", + "mimeType" => "video/mp4", + "href" => "https://peertube46fb-ad81-2d4c2d1630e3-240.mp4" + }, + %{ + "type" => "Link", + "mimeType" => "text/html", + "href" => "https://peertube.-2d4c2d1630e3" + }, + %{ + "type" => "Link", + "mimeType" => "text/html", + "href" => "https://peertube.-2d4c2d16377-42" + } + ] + } + + assert Transmogrifier.fix_url(object) == %{ + "attachment" => [ + %{ + "href" => "https://peede8d-46fb-ad81-2d4c2d1630e3-480.mp4", + "mimeType" => "video/mp4", + "type" => "Link" + } + ], + "type" => "Video", + "url" => "https://peertube.-2d4c2d1630e3" + } + end + + test "fixes url for not Video object" do + object = %{ + "type" => "Text", + "url" => [ + %{ + "type" => "Link", + "mimeType" => "text/html", + "href" => "https://peertube.-2d4c2d1630e3" + }, + %{ + "type" => "Link", + "mimeType" => "text/html", + "href" => "https://peertube.-2d4c2d16377-42" + } + ] + } + + assert Transmogrifier.fix_url(object) == %{ + "type" => "Text", + "url" => "https://peertube.-2d4c2d1630e3" + } + + assert Transmogrifier.fix_url(%{"type" => "Text", "url" => []}) == %{ + "type" => "Text", + "url" => "" + } + end + + test "retunrs not modified object" do + assert Transmogrifier.fix_url(%{"type" => "Text"}) == %{"type" => "Text"} + end + end end From fcf604fa43031be747b33c05866a192d9651322c Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Wed, 11 Sep 2019 07:23:33 +0300 Subject: [PATCH 044/272] added tests --- lib/pleroma/object/fetcher.ex | 77 ++++++++++--------- .../web/activity_pub/transmogrifier.ex | 12 +-- test/web/activity_pub/transmogrifier_test.exs | 74 ++++++++++++++++++ 3 files changed, 121 insertions(+), 42 deletions(-) diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index c1795ae0f..2217d1eb3 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -13,6 +13,7 @@ defmodule Pleroma.Object.Fetcher do require Logger + @spec reinject_object(map()) :: {:ok, Object.t()} | {:error, any()} defp reinject_object(data) do Logger.debug("Reinjecting object #{data["id"]}") @@ -29,50 +30,54 @@ defp reinject_object(data) do # TODO: # This will create a Create activity, which we need internally at the moment. def fetch_object_from_id(id, options \\ []) do - if object = Object.get_cached_by_ap_id(id) do + with {:fetch_object, nil} <- {:fetch_object, Object.get_cached_by_ap_id(id)}, + {:fetch, {:ok, data}} <- {:fetch, fetch_and_contain_remote_object_from_id(id)}, + {:normalize, nil} <- {:normalize, Object.normalize(data, false)}, + params <- prepare_activity_params(data), + {:containment, :ok} <- {:containment, Containment.contain_origin(id, params)}, + {:ok, activity} <- Transmogrifier.handle_incoming(params, options), + {:object, _data, %Object{} = object} <- + {:object, data, Object.normalize(activity, false)} do {:ok, object} else - Logger.info("Fetching #{id} via AP") + {:containment, _} -> + {:error, "Object containment failed."} - with {:fetch, {:ok, data}} <- {:fetch, fetch_and_contain_remote_object_from_id(id)}, - {:normalize, nil} <- {:normalize, Object.normalize(data, false)}, - params <- %{ - "type" => "Create", - "to" => data["to"], - "cc" => data["cc"], - # Should we seriously keep this attributedTo thing? - "actor" => data["actor"] || data["attributedTo"], - "object" => data - }, - {:containment, :ok} <- {:containment, Containment.contain_origin(id, params)}, - {:ok, activity} <- Transmogrifier.handle_incoming(params, options), - {:object, _data, %Object{} = object} <- - {:object, data, Object.normalize(activity, false)} do + {:error, {:reject, nil}} -> + {:reject, nil} + + {:object, data, nil} -> + reinject_object(data) + + {:normalize, object = %Object{}} -> {:ok, object} - else - {:containment, _} -> - {:error, "Object containment failed."} - {:error, {:reject, nil}} -> - {:reject, nil} + {:fetch_object, %Object{} = object} -> + {:ok, object} - {:object, data, nil} -> - reinject_object(data) + _e -> + # Only fallback when receiving a fetch/normalization error with ActivityPub + Logger.info("Couldn't get object via AP, trying out OStatus fetching...") - {:normalize, object = %Object{}} -> - {:ok, object} - - _e -> - # Only fallback when receiving a fetch/normalization error with ActivityPub - Logger.info("Couldn't get object via AP, trying out OStatus fetching...") - - # FIXME: OStatus Object Containment? - case OStatus.fetch_activity_from_url(id) do - {:ok, [activity | _]} -> {:ok, Object.normalize(activity, false)} - e -> e - end - end + # FIXME: OStatus Object Containment? + case OStatus.fetch_activity_from_url(id) do + {:ok, [activity | _]} -> {:ok, Object.normalize(activity, false)} + e -> e + end end + + # end + end + + defp prepare_activity_params(data) do + %{ + "type" => "Create", + "to" => data["to"], + "cc" => data["cc"], + # Should we seriously keep this attributedTo thing? + "actor" => data["actor"] || data["attributedTo"], + "object" => data + } end def fetch_object_from_id!(id, options \\ []) do diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 93b3a1f97..18a3c3f39 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -204,7 +204,6 @@ def fix_attachments(%{"attachment" => attachment} = object) when is_list(attachm Enum.map(attachment, fn data -> media_type = data["mediaType"] || data["mimeType"] href = data["url"] || data["href"] - url = [%{"type" => "Link", "mediaType" => media_type, "href" => href}] data @@ -216,7 +215,9 @@ def fix_attachments(%{"attachment" => attachment} = object) when is_list(attachm end def fix_attachments(%{"attachment" => attachment} = object) when is_map(attachment) do - fix_attachments(Map.put(object, "attachment", [attachment])) + object + |> Map.put("attachment", [attachment]) + |> fix_attachments() end def fix_attachments(object), do: object @@ -725,10 +726,9 @@ def handle_incoming(_, _), do: :error @spec get_obj_helper(String.t(), Keyword.t()) :: {:ok, Object.t()} | nil def get_obj_helper(id, options \\ []) do - if object = Object.normalize(id, true, options) do - {:ok, object} - else - nil + case Object.normalize(id, true, options) do + %Object{} = object -> {:ok, object} + _ -> nil end end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 63c869d35..ab6e76056 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -1613,4 +1613,78 @@ test "retunrs not modified object" do assert Transmogrifier.fix_url(%{"type" => "Text"}) == %{"type" => "Text"} end end + + describe "get_obj_helper/2" do + test "returns nil when cannot normalize object" do + refute Transmogrifier.get_obj_helper("test-obj-id") + end + + test "returns {:ok, %Object{}} for success case" do + assert {:ok, %Object{}} = + Transmogrifier.get_obj_helper("https://shitposter.club/notice/2827873") + end + end + + describe "fix_attachments/1" do + test "returns not modified object" do + data = Poison.decode!(File.read!("test/fixtures/mastodon-post-activity.json")) + assert Transmogrifier.fix_attachments(data) == data + end + + test "returns modified object when attachment is map" do + assert Transmogrifier.fix_attachments(%{ + "attachment" => %{ + "mediaType" => "video/mp4", + "url" => "https://peertube.moe/stat-480.mp4" + } + }) == %{ + "attachment" => [ + %{ + "mediaType" => "video/mp4", + "url" => [ + %{ + "href" => "https://peertube.moe/stat-480.mp4", + "mediaType" => "video/mp4", + "type" => "Link" + } + ] + } + ] + } + end + + test "returns modified object when attachment is list" do + assert Transmogrifier.fix_attachments(%{ + "attachment" => [ + %{"mediaType" => "video/mp4", "url" => "https://pe.er/stat-480.mp4"}, + %{"mimeType" => "video/mp4", "href" => "https://pe.er/stat-480.mp4"} + ] + }) == %{ + "attachment" => [ + %{ + "mediaType" => "video/mp4", + "url" => [ + %{ + "href" => "https://pe.er/stat-480.mp4", + "mediaType" => "video/mp4", + "type" => "Link" + } + ] + }, + %{ + "href" => "https://pe.er/stat-480.mp4", + "mediaType" => "video/mp4", + "mimeType" => "video/mp4", + "url" => [ + %{ + "href" => "https://pe.er/stat-480.mp4", + "mediaType" => "video/mp4", + "type" => "Link" + } + ] + } + ] + } + end + end end From 007e0c1ce158bdfc11738a194944534837ae0258 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Wed, 11 Sep 2019 23:19:06 +0300 Subject: [PATCH 045/272] added tests --- .../web/activity_pub/transmogrifier.ex | 35 ++++++++++--------- .../web/activity_pub/views/user_view.ex | 7 ++-- test/web/activity_pub/transmogrifier_test.exs | 31 ++++++++++++++++ .../web/activity_pub/views/user_view_test.exs | 16 +++++++++ 4 files changed, 68 insertions(+), 21 deletions(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 18a3c3f39..9f699de9e 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -870,41 +870,44 @@ def add_mention_tags(object) do mentions = object |> Utils.get_notified_from_object() - |> Enum.map(fn user -> - %{"type" => "Mention", "href" => user.ap_id, "name" => "@#{user.nickname}"} - end) + |> Enum.map(&build_mention_tag/1) tags = object["tag"] || [] Map.put(object, "tag", tags ++ mentions) end - def add_emoji_tags(%User{info: %{"emoji" => _emoji} = user_info} = object) do - user_info = add_emoji_tags(user_info) + defp build_mention_tag(%{ap_id: ap_id, nickname: nickname} = _) do + %{"type" => "Mention", "href" => ap_id, "name" => "@#{nickname}"} + end - Map.put(object, :info, user_info) + def take_emoji_tags(%User{info: %{emoji: emoji} = _user_info} = _user) do + emoji + |> Enum.flat_map(&Map.to_list/1) + |> Enum.map(&build_emoji_tag/1) end # TODO: we should probably send mtime instead of unix epoch time for updated def add_emoji_tags(%{"emoji" => emoji} = object) do tags = object["tag"] || [] - out = - Enum.map(emoji, fn {name, url} -> - %{ - "icon" => %{"url" => url, "type" => "Image"}, - "name" => ":" <> name <> ":", - "type" => "Emoji", - "updated" => "1970-01-01T00:00:00Z", - "id" => url - } - end) + out = Enum.map(emoji, &build_emoji_tag/1) Map.put(object, "tag", tags ++ out) end def add_emoji_tags(object), do: object + defp build_emoji_tag({name, url}) do + %{ + "icon" => %{"url" => url, "type" => "Image"}, + "name" => ":" <> name <> ":", + "type" => "Emoji", + "updated" => "1970-01-01T00:00:00Z", + "id" => url + } + end + def set_conversation(object) do Map.put(object, "conversation", object["context"]) end diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index 7be734b26..8abfa1fcd 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -75,10 +75,7 @@ def render("user.json", %{user: user}) do endpoints = render("endpoints.json", %{user: user}) - user_tags = - user - |> Transmogrifier.add_emoji_tags() - |> Map.get("tag", []) + emoji_tags = Transmogrifier.take_emoji_tags(user) fields = user.info @@ -110,7 +107,7 @@ def render("user.json", %{user: user}) do }, "endpoints" => endpoints, "attachment" => fields, - "tag" => (user.info.source_data["tag"] || []) ++ user_tags + "tag" => (user.info.source_data["tag"] || []) ++ emoji_tags } |> Map.merge(maybe_make_image(&User.avatar_url/2, "icon", user)) |> Map.merge(maybe_make_image(&User.banner_url/2, "image", user)) diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index ab6e76056..87ef843c6 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -1687,4 +1687,35 @@ test "returns modified object when attachment is list" do } end end + + describe "fix_emoji/1" do + test "returns not modified object when object not contains tags" do + data = Poison.decode!(File.read!("test/fixtures/mastodon-post-activity.json")) + assert Transmogrifier.fix_emoji(data) == data + end + + test "returns object with emoji when object contains list tags" do + assert Transmogrifier.fix_emoji(%{ + "tag" => [ + %{"type" => "Emoji", "name" => ":bib:", "icon" => %{"url" => "/test"}}, + %{"type" => "Hashtag"} + ] + }) == %{ + "emoji" => %{"bib" => "/test"}, + "tag" => [ + %{"icon" => %{"url" => "/test"}, "name" => ":bib:", "type" => "Emoji"}, + %{"type" => "Hashtag"} + ] + } + end + + test "returns object with emoji when object contains map tag" do + assert Transmogrifier.fix_emoji(%{ + "tag" => %{"type" => "Emoji", "name" => ":bib:", "icon" => %{"url" => "/test"}} + }) == %{ + "emoji" => %{"bib" => "/test"}, + "tag" => %{"icon" => %{"url" => "/test"}, "name" => ":bib:", "type" => "Emoji"} + } + end + end end diff --git a/test/web/activity_pub/views/user_view_test.exs b/test/web/activity_pub/views/user_view_test.exs index fb7fd9e79..4390f9272 100644 --- a/test/web/activity_pub/views/user_view_test.exs +++ b/test/web/activity_pub/views/user_view_test.exs @@ -37,6 +37,22 @@ test "Renders profile fields" do } = UserView.render("user.json", %{user: user}) end + test "Renders with emoji tags" do + user = insert(:user, %{info: %{emoji: [%{"bib" => "/test"}]}}) + + assert %{ + "tag" => [ + %{ + "icon" => %{"type" => "Image", "url" => "/test"}, + "id" => "/test", + "name" => ":bib:", + "type" => "Emoji", + "updated" => "1970-01-01T00:00:00Z" + } + ] + } = UserView.render("user.json", %{user: user}) + end + test "Does not add an avatar image if the user hasn't set one" do user = insert(:user) {:ok, user} = User.ensure_keys_present(user) From 4f548cb2b7b4a16a956a4f4a0ff64d279777925e Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Thu, 12 Sep 2019 09:59:34 +0300 Subject: [PATCH 046/272] added test for Ostatus --- .../web/activity_pub/transmogrifier.ex | 10 +- lib/pleroma/web/ostatus/ostatus.ex | 99 ++++++++----------- lib/pleroma/web/ostatus/ostatus_controller.ex | 12 +-- test/web/ostatus/ostatus_test.exs | 14 +++ 4 files changed, 68 insertions(+), 67 deletions(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 468961bd0..acd61bda3 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -1049,8 +1049,8 @@ def upgrade_user_from_ap_id(ap_id) do with %User{local: false} = user <- User.get_cached_by_ap_id(ap_id), {:ok, data} <- ActivityPub.fetch_and_prepare_user_from_ap_id(ap_id), already_ap <- User.ap_enabled?(user), - {:ok, user} <- user |> User.upgrade_changeset(data) |> User.update_and_set_cache() do - unless already_ap do + {:ok, user} <- upgrade_user(user, data) do + if not already_ap do PleromaJobQueue.enqueue(:transmogrifier, __MODULE__, [:user_upgrade, user]) end @@ -1061,6 +1061,12 @@ def upgrade_user_from_ap_id(ap_id) do end end + defp upgrade_user(user, data) do + user + |> User.upgrade_changeset(data) + |> User.update_and_set_cache() + end + def maybe_retire_websub(ap_id) do # some sanity checks if is_binary(ap_id) && String.length(ap_id) > 8 do diff --git a/lib/pleroma/web/ostatus/ostatus.ex b/lib/pleroma/web/ostatus/ostatus.ex index 331cbc0b7..5de1ceef3 100644 --- a/lib/pleroma/web/ostatus/ostatus.ex +++ b/lib/pleroma/web/ostatus/ostatus.ex @@ -3,14 +3,12 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OStatus do - import Ecto.Query import Pleroma.Web.XML require Logger alias Pleroma.Activity alias Pleroma.HTTP alias Pleroma.Object - alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web alias Pleroma.Web.ActivityPub.ActivityPub @@ -38,21 +36,13 @@ def is_representable?(%Activity{} = activity) do end end - def feed_path(user) do - "#{user.ap_id}/feed.atom" - end + def feed_path(user), do: "#{user.ap_id}/feed.atom" - def pubsub_path(user) do - "#{Web.base_url()}/push/hub/#{user.nickname}" - end + def pubsub_path(user), do: "#{Web.base_url()}/push/hub/#{user.nickname}" - def salmon_path(user) do - "#{user.ap_id}/salmon" - end + def salmon_path(user), do: "#{user.ap_id}/salmon" - def remote_follow_path do - "#{Web.base_url()}/ostatus_subscribe?acct={uri}" - end + def remote_follow_path, do: "#{Web.base_url()}/ostatus_subscribe?acct={uri}" def handle_incoming(xml_string, options \\ []) do with doc when doc != :error <- parse_document(xml_string) do @@ -217,10 +207,9 @@ def get_content(entry) do Get the cw that mastodon uses. """ def get_cw(entry) do - with cw when not is_nil(cw) <- string_from_xpath("/*/summary", entry) do - cw - else - _e -> nil + case string_from_xpath("/*/summary", entry) do + cw when not is_nil(cw) -> cw + _ -> nil end end @@ -232,19 +221,17 @@ def get_tags(entry) do end def maybe_update(doc, user) do - if "true" == string_from_xpath("//author[1]/ap_enabled", doc) do - Transmogrifier.upgrade_user_from_ap_id(user.ap_id) - else - maybe_update_ostatus(doc, user) + case string_from_xpath("//author[1]/ap_enabled", doc) do + "true" -> + Transmogrifier.upgrade_user_from_ap_id(user.ap_id) + + _ -> + maybe_update_ostatus(doc, user) end end def maybe_update_ostatus(doc, user) do - old_data = %{ - avatar: user.avatar, - bio: user.bio, - name: user.name - } + old_data = Map.take(user, [:bio, :avatar, :name]) with false <- user.local, avatar <- make_avatar_object(doc), @@ -279,38 +266,37 @@ def find_make_or_update_actor(doc) do end end + @spec find_or_make_user(String.t()) :: {:ok, User.t()} def find_or_make_user(uri) do - query = from(user in User, where: user.ap_id == ^uri) - - user = Repo.one(query) - - if is_nil(user) do - make_user(uri) - else - {:ok, user} + case User.get_by_ap_id(uri) do + %User{} = user -> {:ok, user} + _ -> make_user(uri) end end + @spec make_user(String.t(), boolean()) :: {:ok, User.t()} | {:error, any()} def make_user(uri, update \\ false) do with {:ok, info} <- gather_user_info(uri) do - data = %{ - name: info["name"], - nickname: info["nickname"] <> "@" <> info["host"], - ap_id: info["uri"], - info: info, - avatar: info["avatar"], - bio: info["bio"] - } - with false <- update, - %User{} = user <- User.get_cached_by_ap_id(data.ap_id) do + %User{} = user <- User.get_cached_by_ap_id(info["uri"]) do {:ok, user} else - _e -> User.insert_or_update_user(data) + _e -> User.insert_or_update_user(build_user_data(info)) end end end + defp build_user_data(info) do + %{ + name: info["name"], + nickname: info["nickname"] <> "@" <> info["host"], + ap_id: info["uri"], + info: info, + avatar: info["avatar"], + bio: info["bio"] + } + end + # TODO: Just takes the first one for now. def make_avatar_object(author_doc, rel \\ "avatar") do href = string_from_xpath("//author[1]/link[@rel=\"#{rel}\"]/@href", author_doc) @@ -319,23 +305,23 @@ def make_avatar_object(author_doc, rel \\ "avatar") do if href do %{ "type" => "Image", - "url" => [ - %{ - "type" => "Link", - "mediaType" => type, - "href" => href - } - ] + "url" => [%{"type" => "Link", "mediaType" => type, "href" => href}] } else nil end end + @spec gather_user_info(String.t()) :: {:ok, map()} | {:error, any()} def gather_user_info(username) do with {:ok, webfinger_data} <- WebFinger.finger(username), {:ok, feed_data} <- Websub.gather_feed_data(webfinger_data["topic"]) do - {:ok, Map.merge(webfinger_data, feed_data) |> Map.put("fqn", username)} + data = + webfinger_data + |> Map.merge(feed_data) + |> Map.put("fqn", username) + + {:ok, data} else e -> Logger.debug(fn -> "Couldn't gather info for #{username}" end) @@ -371,10 +357,7 @@ def get_atom_url(body) do def fetch_activity_from_atom_url(url, options \\ []) do with true <- String.starts_with?(url, "http"), {:ok, %{body: body, status: code}} when code in 200..299 <- - HTTP.get( - url, - [{:Accept, "application/atom+xml"}] - ) do + HTTP.get(url, [{:Accept, "application/atom+xml"}]) do Logger.debug("Got document from #{url}, handling...") handle_incoming(body, options) else diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index 07e2a4c2d..64b2c64b3 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -55,12 +55,11 @@ def feed_redirect(conn, %{"nickname" => nickname}) do def feed(conn, %{"nickname" => nickname} = params) do with {_, %User{} = user} <- {:fetch_user, User.get_cached_by_nickname(nickname)} do - query_params = - Map.take(params, ["max_id"]) - |> Map.merge(%{"whole_db" => true, "actor_id" => user.ap_id}) - activities = - ActivityPub.fetch_public_activities(query_params) + params + |> Map.take(["max_id"]) + |> Map.merge(%{"whole_db" => true, "actor_id" => user.ap_id}) + |> ActivityPub.fetch_public_activities() |> Enum.reverse() response = @@ -98,8 +97,7 @@ def salmon_incoming(conn, _) do Federator.incoming_doc(doc) - conn - |> send_resp(200, "") + send_resp(conn, 200, "") end def object(%{assigns: %{format: format}} = conn, %{"uuid" => _uuid}) diff --git a/test/web/ostatus/ostatus_test.exs b/test/web/ostatus/ostatus_test.exs index 803a97695..ff00c53ee 100644 --- a/test/web/ostatus/ostatus_test.exs +++ b/test/web/ostatus/ostatus_test.exs @@ -628,4 +628,18 @@ test "Article objects are not representable" do refute OStatus.is_representable?(note_activity) end end + + describe "make_user/2" do + test "creates new user" do + {:ok, user} = OStatus.make_user("https://social.heldscal.la/user/23211") + + created_user = + User + |> Repo.get_by(ap_id: "https://social.heldscal.la/user/23211") + |> Map.put(:last_digest_emailed_at, nil) + + assert user.info + assert user == created_user + end + end end From 769fb778d41df77c2514b5e3c663f3f624c0a266 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 12 Sep 2019 21:37:36 +0300 Subject: [PATCH 047/272] Track object/create activity fetches --- lib/pleroma/delivery.ex | 58 +++++++++++++ lib/pleroma/plugs/cache.ex | 16 +++- lib/pleroma/user.ex | 10 +++ .../activity_pub/activity_pub_controller.ex | 29 ++++++- .../20190912065617_create_deliveries.exs | 12 +++ .../activity_pub_controller_test.exs | 83 +++++++++++++++++++ 6 files changed, 206 insertions(+), 2 deletions(-) create mode 100644 lib/pleroma/delivery.ex create mode 100644 priv/repo/migrations/20190912065617_create_deliveries.exs diff --git a/lib/pleroma/delivery.ex b/lib/pleroma/delivery.ex new file mode 100644 index 000000000..f9a9e35cd --- /dev/null +++ b/lib/pleroma/delivery.ex @@ -0,0 +1,58 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Delivery do + use Ecto.Schema + + alias Pleroma.Delivery + alias Pleroma.FlakeId + alias Pleroma.User + alias Pleroma.Repo + alias Pleroma.Object + alias Pleroma.User + + import Ecto.Changeset + import Ecto.Query + + schema "deliveries" do + belongs_to(:user, User, type: FlakeId) + belongs_to(:object, Object) + end + + def changeset(delivery, params \\ %{}) do + delivery + |> cast(params, [:user_id, :object_id]) + |> foreign_key_constraint(:object_id) + |> foreign_key_constraint(:user_id) + |> unique_constraint(:user_id, name: :deliveries_user_id_object_id_index) + end + + def create(object_id, user_id) do + %Delivery{} + |> changeset(%{user_id: user_id, object_id: object_id}) + |> Repo.insert() + end + + def get(object_id, user_id) do + from(d in Delivery, where: d.user_id == ^user_id and d.object_id == ^object_id) + |> Repo.one() + end + + def get_or_create(object_id, user_id) do + case get(object_id, user_id) do + %Delivery{} = delivery -> {:ok, delivery} + nil -> create(object_id, user_id) + end + end + + def delete_all_by_object_id(object_id) do + from(d in Delivery, where: d.object_id == ^object_id) + |> Repo.delete_all() + end + + def get_all_by_object_id(object_id) do + from(d in Delivery, where: d.object_id == ^object_id) + |> Repo.all() + end +end diff --git a/lib/pleroma/plugs/cache.ex b/lib/pleroma/plugs/cache.ex index a81a861d0..42d77fc1f 100644 --- a/lib/pleroma/plugs/cache.ex +++ b/lib/pleroma/plugs/cache.ex @@ -20,6 +20,7 @@ defmodule Pleroma.Plugs.Cache do - `ttl`: An expiration time (time-to-live). This value should be in milliseconds or `nil` to disable expiration. Defaults to `nil`. - `query_params`: Take URL query string into account (`true`), ignore it (`false`) or limit to specific params only (list). Defaults to `true`. + - `tracking_fun`: A function that is called on successfull responses, no matter if the request is cached or not. It should accept a conn as the first argument and the value assigned to `tracking_fun_data` as the second. Additionally, you can overwrite the TTL inside a controller action by assigning `cache_ttl` to the connection struct: @@ -56,6 +57,10 @@ def call(%{method: "GET"} = conn, opts) do {:ok, nil} -> cache_resp(conn, opts) + {:ok, {content_type, body, tracking_fun_data}} -> + conn = opts.tracking_fun(conn, tracking_fun_data) + send_cached(conn, {content_type, body}) + {:ok, record} -> send_cached(conn, record) @@ -90,7 +95,16 @@ defp cache_resp(conn, opts) do content_type = content_type(conn) record = {content_type, body} - Cachex.put(:web_resp_cache, key, record, ttl: ttl) + conn = + unless opts[:tracking_fun] do + Cachex.put(:web_resp_cache, key, {content_type, body}, ttl: ttl) + conn + else + tracking_fun_data = Map.get(conn.assigns, :tracking_fun_data, nil) + Cachex.put(:web_resp_cache, {content_type, body, tracking_fun_data}, record, ttl: ttl) + + opts.tracking_fun.(conn, tracking_fun_data) + end put_resp_header(conn, "x-cache", "MISS from Pleroma") diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 3aa245f2a..9614acdab 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -11,6 +11,7 @@ defmodule Pleroma.User do alias Comeonin.Pbkdf2 alias Ecto.Multi alias Pleroma.Activity + alias Pleroma.Delivery alias Pleroma.Keys alias Pleroma.Notification alias Pleroma.Object @@ -61,6 +62,7 @@ defmodule Pleroma.User do field(:last_digest_emailed_at, :naive_datetime) has_many(:notifications, Notification) has_many(:registrations, Registration) + has_many(:deliveries, Delivery) embeds_one(:info, User.Info) timestamps() @@ -1624,4 +1626,12 @@ defp put_password_hash(changeset), do: changeset def is_internal_user?(%User{nickname: nil}), do: true def is_internal_user?(%User{local: true, nickname: "internal." <> _}), do: true def is_internal_user?(_), do: false + + def get_delivered_users_by_object_id(object_id) do + from(u in User, + inner_join: delivery in assoc(u, :deliveries), + where: delivery.object_id == ^object_id + ) + |> Repo.all() + end end diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 705dbc1c2..009260d3f 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do use Pleroma.Web, :controller alias Pleroma.Activity + alias Pleroma.Delivery alias Pleroma.Object alias Pleroma.Object.Fetcher alias Pleroma.User @@ -23,7 +24,15 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do action_fallback(:errors) - plug(Pleroma.Plugs.Cache, [query_params: false] when action in [:activity, :object]) + plug( + Pleroma.Plugs.Cache, + [ + query_params: false, + tracking_fun: &Pleroma.Web.ActivityPub.ActivityPubController.track_object_fetch/2 + ] + when action in [:activity, :object] + ) + plug(Pleroma.Web.FederatingPlug when action in [:inbox, :relay]) plug(:set_requester_reachable when action in [:inbox]) plug(:relay_active? when action in [:relay]) @@ -54,6 +63,7 @@ def object(conn, %{"uuid" => uuid}) do %Object{} = object <- Object.get_cached_by_ap_id(ap_id), {_, true} <- {:public?, Visibility.is_public?(object)} do conn + |> assign(:tracking_fun_data, object.id) |> set_cache_ttl_for(object) |> put_resp_content_type("application/activity+json") |> put_view(ObjectView) @@ -64,6 +74,15 @@ def object(conn, %{"uuid" => uuid}) do end end + def track_object_fetch(conn, object_id) do + case conn.assigns[:user] do + %User{id: user_id} -> Delivery.create(object_id, user_id) + _ -> nil + end + + conn + end + def object_likes(conn, %{"uuid" => uuid, "page" => page}) do with ap_id <- o_status_url(conn, :object, uuid), %Object{} = object <- Object.get_cached_by_ap_id(ap_id), @@ -99,6 +118,7 @@ def activity(conn, %{"uuid" => uuid}) do %Activity{} = activity <- Activity.normalize(ap_id), {_, true} <- {:public?, Visibility.is_public?(activity)} do conn + |> maybe_set_tracking_data(activity) |> set_cache_ttl_for(activity) |> put_resp_content_type("application/activity+json") |> put_view(ObjectView) @@ -109,6 +129,13 @@ def activity(conn, %{"uuid" => uuid}) do end end + defp maybe_set_tracking_data(conn, %Activity{data: %{"type" => "Create"}} = activity) do + object_id = Object.normalize(activity).id + assign(conn, :tracking_fun_data, object_id) + end + + defp maybe_set_tracking_data(conn, _activity), do: assign(conn, :tracking_fun_data, nil) + defp set_cache_ttl_for(conn, %Activity{object: object}) do set_cache_ttl_for(conn, object) end diff --git a/priv/repo/migrations/20190912065617_create_deliveries.exs b/priv/repo/migrations/20190912065617_create_deliveries.exs new file mode 100644 index 000000000..92ca5650a --- /dev/null +++ b/priv/repo/migrations/20190912065617_create_deliveries.exs @@ -0,0 +1,12 @@ +defmodule Pleroma.Repo.Migrations.CreateDeliveries do + use Ecto.Migration + + def change do + create_if_not_exists table(:deliveries) do + add(:object_id, references(:objects, type: :id)) + add(:user_id, references(:users, type: :uuid, on_delete: :delete_all)) + end + create_if_not_exists index(:deliveries, :object_id, name: :deliveries_object_id) + create_if_not_exists(unique_index(:deliveries, [:user_id, :object_id])) + end +end diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 9698c7099..0bab555b5 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -6,6 +6,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do use Pleroma.Web.ConnCase import Pleroma.Factory alias Pleroma.Activity + alias Pleroma.Delivery alias Pleroma.Instances alias Pleroma.Object alias Pleroma.User @@ -885,4 +886,86 @@ test "it works for more than 10 users", %{conn: conn} do assert result["totalItems"] == 15 end end + + describe "delivery tracking" do + test "it tracks a signed object fetch", %{conn: conn} do + user = insert(:user, local: false) + activity = insert(:note_activity) + object = Object.normalize(activity) + + object_path = String.trim_leading(object.data["id"], Pleroma.Web.Endpoint.url()) + + conn + |> put_req_header("accept", "application/activity+json") + |> assign(:user, user) + |> get(object_path) + |> json_response(200) + + assert Delivery.get(object.id, user.id) + end + + test "it tracks a signed activity fetch", %{conn: conn} do + user = insert(:user, local: false) + activity = insert(:note_activity) + object = Object.normalize(activity) + + activity_path = String.trim_leading(activity.data["id"], Pleroma.Web.Endpoint.url()) + + conn + |> put_req_header("accept", "application/activity+json") + |> assign(:user, user) + |> get(activity_path) + |> json_response(200) + + assert Delivery.get(object.id, user.id) + end + + test "it tracks a signed object fetch when the json is cached", %{conn: conn} do + user = insert(:user, local: false) + other_user = insert(:user, local: false) + activity = insert(:note_activity) + object = Object.normalize(activity) + + object_path = String.trim_leading(object.data["id"], Pleroma.Web.Endpoint.url()) + + conn + |> put_req_header("accept", "application/activity+json") + |> assign(:user, user) + |> get(object_path) + |> json_response(200) + + build_conn() + |> put_req_header("accept", "application/activity+json") + |> assign(:user, other_user) + |> get(object_path) + |> json_response(200) + + assert Delivery.get(object.id, user.id) + assert Delivery.get(object.id, other_user.id) + end + + test "it tracks a signed activity fetch when the json is cached", %{conn: conn} do + user = insert(:user, local: false) + other_user = insert(:user, local: false) + activity = insert(:note_activity) + object = Object.normalize(activity) + + activity_path = String.trim_leading(activity.data["id"], Pleroma.Web.Endpoint.url()) + + conn + |> put_req_header("accept", "application/activity+json") + |> assign(:user, user) + |> get(activity_path) + |> json_response(200) + + build_conn() + |> put_req_header("accept", "application/activity+json") + |> assign(:user, other_user) + |> get(activity_path) + |> json_response(200) + + assert Delivery.get(object.id, user.id) + assert Delivery.get(object.id, other_user.id) + end + end end From dabc4a00f5cf08dac75f701457a24fce8735175f Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 12 Sep 2019 22:10:15 +0300 Subject: [PATCH 048/272] Put the cache with the right key when using a tracking function --- lib/pleroma/plugs/cache.ex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/plugs/cache.ex b/lib/pleroma/plugs/cache.ex index 42d77fc1f..50b534e7b 100644 --- a/lib/pleroma/plugs/cache.ex +++ b/lib/pleroma/plugs/cache.ex @@ -58,7 +58,8 @@ def call(%{method: "GET"} = conn, opts) do cache_resp(conn, opts) {:ok, {content_type, body, tracking_fun_data}} -> - conn = opts.tracking_fun(conn, tracking_fun_data) + conn = opts.tracking_fun.(conn, tracking_fun_data) + send_cached(conn, {content_type, body}) {:ok, record} -> @@ -93,7 +94,6 @@ defp cache_resp(conn, opts) do ttl = Map.get(conn.assigns, :cache_ttl, opts.ttl) key = cache_key(conn, opts) content_type = content_type(conn) - record = {content_type, body} conn = unless opts[:tracking_fun] do @@ -101,7 +101,7 @@ defp cache_resp(conn, opts) do conn else tracking_fun_data = Map.get(conn.assigns, :tracking_fun_data, nil) - Cachex.put(:web_resp_cache, {content_type, body, tracking_fun_data}, record, ttl: ttl) + Cachex.put(:web_resp_cache, key, {content_type, body, tracking_fun_data}, ttl: ttl) opts.tracking_fun.(conn, tracking_fun_data) end From b0e60580215e26caae6452099fa1fbace525937c Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 12 Sep 2019 22:40:53 +0300 Subject: [PATCH 049/272] Parse http signature for request to objects/activities --- lib/pleroma/plugs/http_signature.ex | 3 ++- lib/pleroma/web/router.ex | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/plugs/http_signature.ex b/lib/pleroma/plugs/http_signature.ex index d87fa52fa..23d22a712 100644 --- a/lib/pleroma/plugs/http_signature.ex +++ b/lib/pleroma/plugs/http_signature.ex @@ -15,7 +15,8 @@ def call(%{assigns: %{valid_signature: true}} = conn, _opts) do end def call(conn, _opts) do - [signature | _] = get_req_header(conn, "signature") + headers = get_req_header(conn, "signature") + signature = Enum.at(headers, 0) if signature do # set (request-target) header to the appropriate value diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 7cd59acb2..badc7e048 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -135,6 +135,7 @@ defmodule Pleroma.Web.Router do pipeline :http_signature do plug(Pleroma.Web.Plugs.HTTPSignaturePlug) + plug(Pleroma.Web.Plugs.MappedSignatureToIdentityPlug) end scope "/api/pleroma", Pleroma.Web.TwitterAPI do @@ -513,6 +514,7 @@ defmodule Pleroma.Web.Router do scope "/", Pleroma.Web do pipe_through(:ostatus) + pipe_through(:http_signature) get("/objects/:uuid", OStatus.OStatusController, :object) get("/activities/:uuid", OStatus.OStatusController, :activity) From 58b17196fa3f2583db5ee0534766350ed25727e0 Mon Sep 17 00:00:00 2001 From: Maksim Date: Fri, 13 Sep 2019 03:58:58 +0000 Subject: [PATCH 050/272] Apply suggestion to test/web/mastodon_api/mastodon_api_controller_test.exs --- test/web/mastodon_api/mastodon_api_controller_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index a331d6455..7b337044c 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -1552,7 +1552,7 @@ test "returns the relationships for the current user", %{conn: conn} do assert to_string(other_user.id) == relationship["id"] end - test "returns an empty list when bad request", %{conn: conn} do + test "returns an empty list on a bad request", %{conn: conn} do user = insert(:user) conn = From d8a178274bd1eb642270e52f207849014cba12bc Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Fri, 13 Sep 2019 07:12:34 +0300 Subject: [PATCH 051/272] fix Activity.get_by_id --- lib/pleroma/activity.ex | 15 +++++++++++---- .../mastodon_api/mastodon_api_controller_test.exs | 9 +++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 2d4e9da0c..56c51aef8 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -150,11 +150,18 @@ def get_by_ap_id_with_object(ap_id) do ) end + @spec get_by_id(String.t()) :: Activity.t() | nil def get_by_id(id) do - Activity - |> where([a], a.id == ^id) - |> restrict_deactivated_users() - |> Repo.one() + case Pleroma.FlakeId.is_flake_id?(id) do + true -> + Activity + |> where([a], a.id == ^id) + |> restrict_deactivated_users() + |> Repo.one() + + _ -> + nil + end end def get_by_id_with_object(id) do diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 7b337044c..35c2236c8 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -2864,6 +2864,15 @@ test "returns empty object when id invalid", %{conn: conn} do assert response == %{} end + + test "returns empty object when id isn't FlakeID", %{conn: conn} do + response = + conn + |> get("/api/v1/statuses/3ebbadd1-eb14-4e20-8118/card") + |> json_response(200) + + assert response == %{} + end end test "bookmarks" do From 39dc9b470c7ad8348a13f181039f11d14a42fa2b Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 3 Sep 2019 21:58:30 +0700 Subject: [PATCH 052/272] Cleanup Pleroma.Activity and Pleroma.Web.ActivityPub.Utils --- lib/pleroma/activity.ex | 193 ++++++-------------------- lib/pleroma/activity/queries.ex | 32 ++++- lib/pleroma/user.ex | 2 +- lib/pleroma/web/activity_pub/utils.ex | 167 ++++++++-------------- test/user_test.exs | 2 +- 5 files changed, 128 insertions(+), 268 deletions(-) diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 44f1e3011..ec558168a 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Activity do use Ecto.Schema alias Pleroma.Activity + alias Pleroma.Activity.Queries alias Pleroma.ActivityExpiration alias Pleroma.Bookmark alias Pleroma.Notification @@ -65,8 +66,8 @@ defmodule Pleroma.Activity do timestamps() end - def with_joined_object(query) do - join(query, :inner, [activity], o in Object, + def with_joined_object(query, join_type \\ :inner) do + join(query, join_type, [activity], o in Object, on: fragment( "(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')", @@ -78,10 +79,10 @@ def with_joined_object(query) do ) end - def with_preloaded_object(query) do + def with_preloaded_object(query, join_type \\ :inner) do query |> has_named_binding?(:object) - |> if(do: query, else: with_joined_object(query)) + |> if(do: query, else: with_joined_object(query, join_type)) |> preload([activity, object: object], object: object) end @@ -107,12 +108,9 @@ def with_set_thread_muted_field(query, %User{} = user) do def with_set_thread_muted_field(query, _), do: query def get_by_ap_id(ap_id) do - Repo.one( - from( - activity in Activity, - where: fragment("(?)->>'id' = ?", activity.data, ^to_string(ap_id)) - ) - ) + ap_id + |> Queries.by_ap_id() + |> Repo.one() end def get_bookmark(%Activity{} = activity, %User{} = user) do @@ -133,21 +131,10 @@ def change(struct, params \\ %{}) do end def get_by_ap_id_with_object(ap_id) do - Repo.one( - from( - activity in Activity, - where: fragment("(?)->>'id' = ?", activity.data, ^to_string(ap_id)), - left_join: o in Object, - on: - fragment( - "(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')", - o.data, - activity.data, - activity.data - ), - preload: [object: o] - ) - ) + ap_id + |> Queries.by_ap_id() + |> with_preloaded_object(:left) + |> Repo.one() end def get_by_id(id) do @@ -158,18 +145,9 @@ def get_by_id(id) do end def get_by_id_with_object(id) do - from(activity in Activity, - where: activity.id == ^id, - inner_join: o in Object, - on: - fragment( - "(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')", - o.data, - activity.data, - activity.data - ), - preload: [object: o] - ) + Activity + |> where(id: ^id) + |> with_preloaded_object() |> Repo.one() end @@ -180,51 +158,21 @@ def all_by_ids_with_object(ids) do |> Repo.all() end - def by_object_ap_id(ap_id) do - from( - activity in Activity, - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ?", - activity.data, - activity.data, - ^to_string(ap_id) - ) - ) + @doc """ + Accepts `ap_id` or list of `ap_id`. + Returns a query. + """ + @spec create_by_object_ap_id(String.t() | [String.t()]) :: Ecto.Queryable.t() + def create_by_object_ap_id(ap_id) do + ap_id + |> Queries.by_object_id() + |> Queries.by_type("Create") end - def create_by_object_ap_id(ap_ids) when is_list(ap_ids) do - from( - activity in Activity, - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ANY(?)", - activity.data, - activity.data, - ^ap_ids - ), - where: fragment("(?)->>'type' = 'Create'", activity.data) - ) - end - - def create_by_object_ap_id(ap_id) when is_binary(ap_id) do - from( - activity in Activity, - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ?", - activity.data, - activity.data, - ^to_string(ap_id) - ), - where: fragment("(?)->>'type' = 'Create'", activity.data) - ) - end - - def create_by_object_ap_id(_), do: nil - def get_all_create_by_object_ap_id(ap_id) do - Repo.all(create_by_object_ap_id(ap_id)) + ap_id + |> create_by_object_ap_id() + |> Repo.all() end def get_create_by_object_ap_id(ap_id) when is_binary(ap_id) do @@ -235,54 +183,17 @@ def get_create_by_object_ap_id(ap_id) when is_binary(ap_id) do def get_create_by_object_ap_id(_), do: nil - def create_by_object_ap_id_with_object(ap_ids) when is_list(ap_ids) do - from( - activity in Activity, - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ANY(?)", - activity.data, - activity.data, - ^ap_ids - ), - where: fragment("(?)->>'type' = 'Create'", activity.data), - inner_join: o in Object, - on: - fragment( - "(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')", - o.data, - activity.data, - activity.data - ), - preload: [object: o] - ) + @doc """ + Accepts `ap_id` or list of `ap_id`. + Returns a query. + """ + @spec create_by_object_ap_id_with_object(String.t() | [String.t()]) :: Ecto.Queryable.t() + def create_by_object_ap_id_with_object(ap_id) do + ap_id + |> create_by_object_ap_id() + |> with_preloaded_object() end - def create_by_object_ap_id_with_object(ap_id) when is_binary(ap_id) do - from( - activity in Activity, - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ?", - activity.data, - activity.data, - ^to_string(ap_id) - ), - where: fragment("(?)->>'type' = 'Create'", activity.data), - inner_join: o in Object, - on: - fragment( - "(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')", - o.data, - activity.data, - activity.data - ), - preload: [object: o] - ) - end - - def create_by_object_ap_id_with_object(_), do: nil - def get_create_by_object_ap_id_with_object(ap_id) when is_binary(ap_id) do ap_id |> create_by_object_ap_id_with_object() @@ -306,7 +217,8 @@ def normalize(ap_id) when is_binary(ap_id), do: get_by_ap_id_with_object(ap_id) def normalize(_), do: nil def delete_by_ap_id(id) when is_binary(id) do - by_object_ap_id(id) + id + |> Queries.by_object_id() |> select([u], u) |> Repo.delete_all() |> elem(1) @@ -350,31 +262,10 @@ def all_by_actor_and_id(actor, status_ids) do end def follow_requests_for_actor(%Pleroma.User{ap_id: ap_id}) do - from( - a in Activity, - where: - fragment( - "? ->> 'type' = 'Follow'", - a.data - ), - where: - fragment( - "? ->> 'state' = 'pending'", - a.data - ), - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ?", - a.data, - a.data, - ^ap_id - ) - ) - end - - @spec query_by_actor(actor()) :: Ecto.Query.t() - def query_by_actor(actor) do - from(a in Activity, where: a.actor == ^actor) + ap_id + |> Queries.by_object_id() + |> Queries.by_type("Follow") + |> where([a], fragment("? ->> 'state' = 'pending'", a.data)) end def restrict_deactivated_users(query) do diff --git a/lib/pleroma/activity/queries.ex b/lib/pleroma/activity/queries.ex index aa5b29566..13fa33831 100644 --- a/lib/pleroma/activity/queries.ex +++ b/lib/pleroma/activity/queries.ex @@ -13,6 +13,14 @@ defmodule Pleroma.Activity.Queries do alias Pleroma.Activity + @spec by_ap_id(query, String.t()) :: query + def by_ap_id(query \\ Activity, ap_id) do + from( + activity in query, + where: fragment("(?)->>'id' = ?", activity.data, ^to_string(ap_id)) + ) + end + @spec by_actor(query, String.t()) :: query def by_actor(query \\ Activity, actor) do from( @@ -21,8 +29,23 @@ def by_actor(query \\ Activity, actor) do ) end - @spec by_object_id(query, String.t()) :: query - def by_object_id(query \\ Activity, object_id) do + @spec by_object_id(query, String.t() | [String.t()]) :: query + def by_object_id(query \\ Activity, object_id) + + def by_object_id(query, object_ids) when is_list(object_ids) do + from( + activity in query, + where: + fragment( + "coalesce((?)->'object'->>'id', (?)->>'object') = ANY(?)", + activity.data, + activity.data, + ^object_ids + ) + ) + end + + def by_object_id(query, object_id) when is_binary(object_id) do from(activity in query, where: fragment( @@ -41,9 +64,4 @@ def by_type(query \\ Activity, activity_type) do where: fragment("(?)->>'type' = ?", activity.data, ^activity_type) ) end - - @spec limit(query, pos_integer()) :: query - def limit(query \\ Activity, limit) do - from(activity in query, limit: ^limit) - end end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 3aa245f2a..ceca11def 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1219,7 +1219,7 @@ def follow_import(%User{} = follower, followed_identifiers) when is_list(followe def delete_user_activities(%User{ap_id: ap_id} = user) do ap_id - |> Activity.query_by_actor() + |> Activity.Queries.by_actor() |> RepoStreamer.chunk_stream(50) |> Stream.each(fn activities -> Enum.each(activities, &delete_activity(&1)) diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index c9c0c3763..47917f5d3 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -85,15 +85,13 @@ defp extract_list(lst) when is_list(lst), do: lst defp extract_list(_), do: [] def maybe_splice_recipient(ap_id, params) do - need_splice = + need_splice? = !recipient_in_collection(ap_id, params["to"]) && !recipient_in_collection(ap_id, params["cc"]) - cc_list = extract_list(params["cc"]) - - if need_splice do - params - |> Map.put("cc", [ap_id | cc_list]) + if need_splice? do + cc_list = extract_list(params["cc"]) + Map.put(params, "cc", [ap_id | cc_list]) else params end @@ -139,7 +137,7 @@ def get_notified_from_object(%{"type" => type} = object) when type in @supported "object" => object } - Notification.get_notified_from_activity(%Activity{data: fake_create_activity}, false) + get_notified_from_object(fake_create_activity) end def get_notified_from_object(object) do @@ -188,9 +186,9 @@ def maybe_federate(_), do: :ok Adds an id and a published data if they aren't there, also adds it to an included object """ - def lazy_put_activity_defaults(map, fake \\ false) do + def lazy_put_activity_defaults(map, fake? \\ false) do map = - unless fake do + if not fake? do %{data: %{"id" => context}, id: context_id} = create_context(map["context"]) map @@ -207,7 +205,7 @@ def lazy_put_activity_defaults(map, fake \\ false) do end if is_map(map["object"]) do - object = lazy_put_object_defaults(map["object"], map, fake) + object = lazy_put_object_defaults(map["object"], map, fake?) %{map | "object" => object} else map @@ -217,9 +215,9 @@ def lazy_put_activity_defaults(map, fake \\ false) do @doc """ Adds an id and published date if they aren't there. """ - def lazy_put_object_defaults(map, activity \\ %{}, fake) + def lazy_put_object_defaults(map, activity \\ %{}, fake?) - def lazy_put_object_defaults(map, activity, true = _fake) do + def lazy_put_object_defaults(map, activity, true = _fake?) do map |> Map.put_new_lazy("published", &make_date/0) |> Map.put_new("id", "pleroma:fake_object_id") @@ -228,7 +226,7 @@ def lazy_put_object_defaults(map, activity, true = _fake) do |> Map.put_new("context_id", activity["context_id"]) end - def lazy_put_object_defaults(map, activity, _fake) do + def lazy_put_object_defaults(map, activity, _fake?) do map |> Map.put_new_lazy("id", &generate_object_id/0) |> Map.put_new_lazy("published", &make_date/0) @@ -242,9 +240,7 @@ def lazy_put_object_defaults(map, activity, _fake) do def insert_full_object(%{"object" => %{"type" => type} = object_data} = map) when is_map(object_data) and type in @supported_object_types do with {:ok, object} <- Object.create(object_data) do - map = - map - |> Map.put("object", object.data["id"]) + map = Map.put(map, "object", object.data["id"]) {:ok, map, object} end @@ -263,7 +259,7 @@ def get_existing_like(actor, %{data: %{"id" => id}}) do |> Activity.Queries.by_actor() |> Activity.Queries.by_object_id(id) |> Activity.Queries.by_type("Like") - |> Activity.Queries.limit(1) + |> limit(1) |> Repo.one() end @@ -380,12 +376,11 @@ def update_follow_state( %Activity{data: %{"actor" => actor, "object" => object}} = activity, state ) do - with new_data <- - activity.data - |> Map.put("state", state), - changeset <- Changeset.change(activity, data: new_data), - {:ok, activity} <- Repo.update(changeset), - _ <- User.set_follow_state_cache(actor, object, state) do + new_data = Map.put(activity.data, "state", state) + changeset = Changeset.change(activity, data: new_data) + + with {:ok, activity} <- Repo.update(changeset) do + User.set_follow_state_cache(actor, object, state) {:ok, activity} end end @@ -410,28 +405,14 @@ def make_follow_data( end def fetch_latest_follow(%User{ap_id: follower_id}, %User{ap_id: followed_id}) do - query = - from( - activity in Activity, - where: - fragment( - "? ->> 'type' = 'Follow'", - activity.data - ), - where: activity.actor == ^follower_id, - # this is to use the index - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ?", - activity.data, - activity.data, - ^followed_id - ), - order_by: [fragment("? desc nulls last", activity.id)], - limit: 1 - ) - - Repo.one(query) + "Follow" + |> Activity.Queries.by_type() + |> where(actor: ^follower_id) + # this is to use the index + |> Activity.Queries.by_object_id(followed_id) + |> order_by([activity], fragment("? desc nulls last", activity.id)) + |> limit(1) + |> Repo.one() end #### Announce-related helpers @@ -439,23 +420,13 @@ def fetch_latest_follow(%User{ap_id: follower_id}, %User{ap_id: followed_id}) do @doc """ Retruns an existing announce activity if the notice has already been announced """ - def get_existing_announce(actor, %{data: %{"id" => id}}) do - query = - from( - activity in Activity, - where: activity.actor == ^actor, - # this is to use the index - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ?", - activity.data, - activity.data, - ^id - ), - where: fragment("(?)->>'type' = 'Announce'", activity.data) - ) - - Repo.one(query) + def get_existing_announce(actor, %{data: %{"id" => ap_id}}) do + "Announce" + |> Activity.Queries.by_type() + |> where(actor: ^actor) + # this is to use the index + |> Activity.Queries.by_object_id(ap_id) + |> Repo.one() end @doc """ @@ -538,11 +509,13 @@ def add_announce_to_object( object ) do announcements = - if is_list(object.data["announcements"]), do: object.data["announcements"], else: [] + if is_list(object.data["announcements"]) do + Enum.uniq([actor | object.data["announcements"]]) + else + [actor] + end - with announcements <- [actor | announcements] |> Enum.uniq() do - update_element_in_object("announcement", announcements, object) - end + update_element_in_object("announcement", announcements, object) end def add_announce_to_object(_, object), do: {:ok, object} @@ -570,28 +543,14 @@ def make_unfollow_data(follower, followed, follow_activity, activity_id) do #### Block-related helpers def fetch_latest_block(%User{ap_id: blocker_id}, %User{ap_id: blocked_id}) do - query = - from( - activity in Activity, - where: - fragment( - "? ->> 'type' = 'Block'", - activity.data - ), - where: activity.actor == ^blocker_id, - # this is to use the index - where: - fragment( - "coalesce((?)->'object'->>'id', (?)->>'object') = ?", - activity.data, - activity.data, - ^blocked_id - ), - order_by: [fragment("? desc nulls last", activity.id)], - limit: 1 - ) - - Repo.one(query) + "Block" + |> Activity.Queries.by_type() + |> where(actor: ^blocker_id) + # this is to use the index + |> Activity.Queries.by_object_id(blocked_id) + |> order_by([activity], fragment("? desc nulls last", activity.id)) + |> limit(1) + |> Repo.one() end def make_block_data(blocker, blocked, activity_id) do @@ -695,11 +654,11 @@ def fetch_ordered_collection(from, pages_left, acc \\ []) do #### Report-related helpers def update_report_state(%Activity{} = activity, state) when state in @supported_report_states do - with new_data <- Map.put(activity.data, "state", state), - changeset <- Changeset.change(activity, data: new_data), - {:ok, activity} <- Repo.update(changeset) do - {:ok, activity} - end + new_data = Map.put(activity.data, "state", state) + + activity + |> Changeset.change(data: new_data) + |> Repo.update() end def update_report_state(_, _), do: {:error, "Unsupported state"} @@ -766,21 +725,13 @@ defp get_updated_targets( end def get_existing_votes(actor, %{data: %{"id" => id}}) do - query = - from( - [activity, object: object] in Activity.with_preloaded_object(Activity), - where: fragment("(?)->>'type' = 'Create'", activity.data), - where: fragment("(?)->>'actor' = ?", activity.data, ^actor), - where: - fragment( - "(?)->>'inReplyTo' = ?", - object.data, - ^to_string(id) - ), - where: fragment("(?)->>'type' = 'Answer'", object.data) - ) - - Repo.all(query) + actor + |> Activity.Queries.by_actor() + |> Activity.Queries.by_type("Create") + |> Activity.with_preloaded_object() + |> where([a, object: o], fragment("(?)->>'inReplyTo' = ?", o.data, ^to_string(id))) + |> where([a, object: o], fragment("(?)->>'type' = 'Answer'", o.data)) + |> Repo.all() end defp maybe_put(map, _key, nil), do: map diff --git a/test/user_test.exs b/test/user_test.exs index a25b72f4e..206258fee 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1081,7 +1081,7 @@ test "it deletes a user, all follow relationships and all activities", %{user: u user_activities = user.ap_id - |> Activity.query_by_actor() + |> Activity.Queries.by_actor() |> Repo.all() |> Enum.map(fn act -> act.data["type"] end) From 5bfbad13ad4dd009b172748d81f56ead21c700de Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 3 Sep 2019 21:33:02 +0700 Subject: [PATCH 053/272] Add more tests for Pleroma.Activity --- test/activity_test.exs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/test/activity_test.exs b/test/activity_test.exs index 4152aaa7e..f9f789a76 100644 --- a/test/activity_test.exs +++ b/test/activity_test.exs @@ -185,4 +185,35 @@ test "all_by_ids_with_object/1" do assert [%{id: ^id1, object: %Object{}}, %{id: ^id2, object: %Object{}}] = activities end + + test "get_by_id_with_object/1" do + %{id: id} = insert(:note_activity) + + assert %Activity{id: ^id, object: %Object{}} = Activity.get_by_id_with_object(id) + end + + test "get_by_ap_id_with_object/1" do + %{data: %{"id" => ap_id}} = insert(:note_activity) + + assert %Activity{data: %{"id" => ^ap_id}, object: %Object{}} = + Activity.get_by_ap_id_with_object(ap_id) + end + + test "get_by_id/1" do + %{id: id} = insert(:note_activity) + + assert %Activity{id: ^id} = Activity.get_by_id(id) + end + + test "all_by_actor_and_id/2" do + user = insert(:user) + + {:ok, %{id: id1}} = Pleroma.Web.CommonAPI.post(user, %{"status" => "cofe"}) + {:ok, %{id: id2}} = Pleroma.Web.CommonAPI.post(user, %{"status" => "cofefe"}) + + assert [] == Activity.all_by_actor_and_id(user, []) + + assert [%Activity{id: ^id2}, %Activity{id: ^id1}] = + Activity.all_by_actor_and_id(user.ap_id, [id1, id2]) + end end From ce23529d917c1830b270a29e774e4ed7768bfeff Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 13 Sep 2019 11:36:49 +0300 Subject: [PATCH 054/272] Use delivery info when federating deletes --- lib/pleroma/delivery.ex | 4 ++ lib/pleroma/user.ex | 4 ++ lib/pleroma/web/activity_pub/publisher.ex | 15 ++++- test/web/activity_pub/publisher_test.exs | 68 ++++++++++++++++++++++- 4 files changed, 89 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/delivery.ex b/lib/pleroma/delivery.ex index f9a9e35cd..2e7c019fa 100644 --- a/lib/pleroma/delivery.ex +++ b/lib/pleroma/delivery.ex @@ -46,6 +46,10 @@ def get_or_create(object_id, user_id) do end end + # A hack because user delete activities have a fake id for whatever reason + # TODO: Get rid of this + def delete_all_by_object_id("pleroma:fake_object_id"), do: {0, []} + def delete_all_by_object_id(object_id) do from(d in Delivery, where: d.object_id == ^object_id) |> Repo.delete_all() diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 9614acdab..785b22643 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1627,6 +1627,10 @@ def is_internal_user?(%User{nickname: nil}), do: true def is_internal_user?(%User{local: true, nickname: "internal." <> _}), do: true def is_internal_user?(_), do: false + # A hack because user delete activities have a fake id for whatever reason + # TODO: Get rid of this + def get_delivered_users_by_object_id("pleroma:fake_object_id"), do: [] + def get_delivered_users_by_object_id(object_id) do from(u in User, inner_join: delivery in assoc(u, :deliveries), diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex index c97405690..db64fd2f6 100644 --- a/lib/pleroma/web/activity_pub/publisher.ex +++ b/lib/pleroma/web/activity_pub/publisher.ex @@ -5,9 +5,11 @@ defmodule Pleroma.Web.ActivityPub.Publisher do alias Pleroma.Activity alias Pleroma.Config + alias Pleroma.Delivery alias Pleroma.HTTP alias Pleroma.Instances alias Pleroma.User + alias Pleroma.Object alias Pleroma.Web.ActivityPub.Relay alias Pleroma.Web.ActivityPub.Transmogrifier @@ -107,7 +109,18 @@ defp recipients(actor, activity) do {:ok, []} end - Pleroma.Web.Salmon.remote_users(actor, activity) ++ followers + fetchers = + with %Activity{data: %{"type" => "Delete"}} <- activity, + %Object{id: object_id} <- Object.normalize(activity), + fetchers <- User.get_delivered_users_by_object_id(object_id), + _ <- Delivery.delete_all_by_object_id(object_id) do + fetchers + else + _ -> + [] + end + + Pleroma.Web.Salmon.remote_users(actor, activity) ++ followers ++ fetchers end defp get_cc_ap_ids(ap_id, recipients) do diff --git a/test/web/activity_pub/publisher_test.exs b/test/web/activity_pub/publisher_test.exs index 36a39c84c..32b7a242c 100644 --- a/test/web/activity_pub/publisher_test.exs +++ b/test/web/activity_pub/publisher_test.exs @@ -3,15 +3,17 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.PublisherTest do - use Pleroma.DataCase + use Pleroma.Web.ConnCase import Pleroma.Factory import Tesla.Mock import Mock alias Pleroma.Activity + alias Pleroma.Object alias Pleroma.Instances alias Pleroma.Web.ActivityPub.Publisher + alias Pleroma.Web.CommonAPI @as_public "https://www.w3.org/ns/activitystreams#Public" @@ -262,5 +264,69 @@ test "it returns inbox for messages involving single recipients in total" do }) ) end + + test_with_mock "publishes a delete activity to peers who signed fetch requests to the create acitvity/object.", + Pleroma.Web.Federator.Publisher, + [:passthrough], + [] do + fetcher = + insert(:user, + local: false, + info: %{ + ap_enabled: true, + source_data: %{"inbox" => "https://domain.com/users/nick1/inbox"} + } + ) + + another_fetcher = + insert(:user, + local: false, + info: %{ + ap_enabled: true, + source_data: %{"inbox" => "https://domain2.com/users/nick1/inbox"} + } + ) + + actor = insert(:user) + + note_activity = insert(:note_activity, user: actor) + object = Object.normalize(note_activity) + + activity_path = String.trim_leading(note_activity.data["id"], Pleroma.Web.Endpoint.url()) + object_path = String.trim_leading(object.data["id"], Pleroma.Web.Endpoint.url()) + + build_conn() + |> put_req_header("accept", "application/activity+json") + |> assign(:user, fetcher) + |> get(object_path) + |> json_response(200) + + build_conn() + |> put_req_header("accept", "application/activity+json") + |> assign(:user, another_fetcher) + |> get(activity_path) + |> json_response(200) + + {:ok, delete} = CommonAPI.delete(note_activity.id, actor) + + res = Publisher.publish(actor, delete) + assert res == :ok + + assert called( + Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{ + inbox: "https://domain.com/users/nick1/inbox", + actor: actor, + id: delete.data["id"] + }) + ) + + assert called( + Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{ + inbox: "https://domain2.com/users/nick1/inbox", + actor: actor, + id: delete.data["id"] + }) + ) + end end end From fb96facc32fb275efffeefa2892a1098ecd68b77 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 13 Sep 2019 12:06:31 +0300 Subject: [PATCH 055/272] Remove unused functions and fix credo issues --- lib/pleroma/delivery.ex | 16 ++-------------- lib/pleroma/web/activity_pub/publisher.ex | 2 +- test/web/activity_pub/publisher_test.exs | 2 +- 3 files changed, 4 insertions(+), 16 deletions(-) diff --git a/lib/pleroma/delivery.ex b/lib/pleroma/delivery.ex index 2e7c019fa..ce8fb96f4 100644 --- a/lib/pleroma/delivery.ex +++ b/lib/pleroma/delivery.ex @@ -7,9 +7,9 @@ defmodule Pleroma.Delivery do alias Pleroma.Delivery alias Pleroma.FlakeId - alias Pleroma.User - alias Pleroma.Repo alias Pleroma.Object + alias Pleroma.Repo + alias Pleroma.User alias Pleroma.User import Ecto.Changeset @@ -39,13 +39,6 @@ def get(object_id, user_id) do |> Repo.one() end - def get_or_create(object_id, user_id) do - case get(object_id, user_id) do - %Delivery{} = delivery -> {:ok, delivery} - nil -> create(object_id, user_id) - end - end - # A hack because user delete activities have a fake id for whatever reason # TODO: Get rid of this def delete_all_by_object_id("pleroma:fake_object_id"), do: {0, []} @@ -54,9 +47,4 @@ def delete_all_by_object_id(object_id) do from(d in Delivery, where: d.object_id == ^object_id) |> Repo.delete_all() end - - def get_all_by_object_id(object_id) do - from(d in Delivery, where: d.object_id == ^object_id) - |> Repo.all() - end end diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex index db64fd2f6..c39e89a6a 100644 --- a/lib/pleroma/web/activity_pub/publisher.ex +++ b/lib/pleroma/web/activity_pub/publisher.ex @@ -8,8 +8,8 @@ defmodule Pleroma.Web.ActivityPub.Publisher do alias Pleroma.Delivery alias Pleroma.HTTP alias Pleroma.Instances - alias Pleroma.User alias Pleroma.Object + alias Pleroma.User alias Pleroma.Web.ActivityPub.Relay alias Pleroma.Web.ActivityPub.Transmogrifier diff --git a/test/web/activity_pub/publisher_test.exs b/test/web/activity_pub/publisher_test.exs index 32b7a242c..0ef97464e 100644 --- a/test/web/activity_pub/publisher_test.exs +++ b/test/web/activity_pub/publisher_test.exs @@ -10,8 +10,8 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do import Mock alias Pleroma.Activity - alias Pleroma.Object alias Pleroma.Instances + alias Pleroma.Object alias Pleroma.Web.ActivityPub.Publisher alias Pleroma.Web.CommonAPI From 517017048316a52172d60d26b03beddb85af7b39 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 13 Sep 2019 10:09:46 +0000 Subject: [PATCH 056/272] Apply suggestion to lib/pleroma/web/activity_pub/activity_pub_controller.ex --- lib/pleroma/web/activity_pub/activity_pub_controller.ex | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 009260d3f..025641722 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -26,10 +26,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do plug( Pleroma.Plugs.Cache, - [ - query_params: false, - tracking_fun: &Pleroma.Web.ActivityPub.ActivityPubController.track_object_fetch/2 - ] + [query_params: false, tracking_fun: &__MODULE__.track_object_fetch/2] when action in [:activity, :object] ) From 3896a51b8aefe6fe54251ffd559c636980faa87e Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 13 Sep 2019 10:09:56 +0000 Subject: [PATCH 057/272] Apply suggestion to lib/pleroma/web/activity_pub/activity_pub_controller.ex --- lib/pleroma/web/activity_pub/activity_pub_controller.ex | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 025641722..4bd13defb 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -72,9 +72,8 @@ def object(conn, %{"uuid" => uuid}) do end def track_object_fetch(conn, object_id) do - case conn.assigns[:user] do - %User{id: user_id} -> Delivery.create(object_id, user_id) - _ -> nil + with %{assigns: %{user: %User{id: user_id}}} <- conn do + Delivery.create(object_id, user_id) end conn From ec5aaf5bd72c91db93a9dbfbe73b58cf7ae5e566 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Fri, 13 Sep 2019 14:59:58 +0300 Subject: [PATCH 058/272] fix tests --- .../mastodon_api/mastodon_api_controller_test.exs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 35c2236c8..f899d77d9 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -3626,16 +3626,16 @@ test "returns bad_request if missing required params", %{ res = post(conn, "/api/v1/accounts", valid_params) assert json_response(res, 200) - Enum.each(valid_params, fn {attr, _} -> + [{127,0,0,1}, {127,0,0,2}, {127,0,0,3}, {127,0,0,4}] + |> Stream.zip(valid_params) + |> Enum.each(fn {ip, {attr, _}} -> res = conn - |> Map.put( - :remote_ip, - {:rand.uniform(15), :rand.uniform(15), :rand.uniform(15), :rand.uniform(15)} - ) + |> Map.put(:remote_ip, ip) |> post("/api/v1/accounts", Map.delete(valid_params, attr)) + |> json_response(400) - assert json_response(res, 400) == %{"error" => "Missing parameters"} + assert res == %{"error" => "Missing parameters"} end) end From bc3e8c033bbef303890ff6afa92d1fe365e530fb Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Fri, 13 Sep 2019 15:06:34 +0300 Subject: [PATCH 059/272] fix formatting --- test/web/mastodon_api/mastodon_api_controller_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index f899d77d9..58efbba38 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -3626,7 +3626,7 @@ test "returns bad_request if missing required params", %{ res = post(conn, "/api/v1/accounts", valid_params) assert json_response(res, 200) - [{127,0,0,1}, {127,0,0,2}, {127,0,0,3}, {127,0,0,4}] + [{127, 0, 0, 1}, {127, 0, 0, 2}, {127, 0, 0, 3}, {127, 0, 0, 4}] |> Stream.zip(valid_params) |> Enum.each(fn {ip, {attr, _}} -> res = From 2784962dba295ee35677e93996df53d1711e5768 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 13 Sep 2019 15:23:03 +0000 Subject: [PATCH 060/272] Apply suggestion to lib/pleroma/web/activity_pub/activity_pub_controller.ex --- lib/pleroma/web/activity_pub/activity_pub_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 4bd13defb..70d4a5baf 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -130,7 +130,7 @@ defp maybe_set_tracking_data(conn, %Activity{data: %{"type" => "Create"}} = acti assign(conn, :tracking_fun_data, object_id) end - defp maybe_set_tracking_data(conn, _activity), do: assign(conn, :tracking_fun_data, nil) + defp maybe_set_tracking_data(conn, _activity), do: conn defp set_cache_ttl_for(conn, %Activity{object: object}) do set_cache_ttl_for(conn, object) From 05f8a066a107af2f7151aee8d85af97cf6a4835c Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 13 Sep 2019 15:23:26 +0000 Subject: [PATCH 061/272] Apply suggestion to lib/pleroma/delivery.ex --- lib/pleroma/delivery.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/delivery.ex b/lib/pleroma/delivery.ex index ce8fb96f4..38c148c34 100644 --- a/lib/pleroma/delivery.ex +++ b/lib/pleroma/delivery.ex @@ -31,7 +31,7 @@ def changeset(delivery, params \\ %{}) do def create(object_id, user_id) do %Delivery{} |> changeset(%{user_id: user_id, object_id: object_id}) - |> Repo.insert() + |> Repo.insert(on_conflict: :nothing) end def get(object_id, user_id) do From 8900cb68aef535dbf60de87fce47d85b91909077 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 13 Sep 2019 15:25:15 +0000 Subject: [PATCH 062/272] Apply suggestion to lib/pleroma/web/activity_pub/activity_pub_controller.ex --- lib/pleroma/web/activity_pub/activity_pub_controller.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 70d4a5baf..01b34fb1d 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -71,6 +71,8 @@ def object(conn, %{"uuid" => uuid}) do end end + def track_object_fetch(conn, nil), do: conn + def track_object_fetch(conn, object_id) do with %{assigns: %{user: %User{id: user_id}}} <- conn do Delivery.create(object_id, user_id) From 0bd2b85edbf3b7062570778649cf2b77cc7a0bce Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Fri, 13 Sep 2019 18:25:27 +0300 Subject: [PATCH 063/272] Separate Subscription Notifications from regular Notifications --- lib/pleroma/notification.ex | 1 - lib/pleroma/subscription_notification.ex | 266 ++++++++++++++++++ lib/pleroma/web/activity_pub/activity_pub.ex | 2 + .../controllers/mastodon_api_controller.ex | 48 ++++ lib/pleroma/web/mastodon_api/mastodon_api.ex | 10 + .../views/subscription_notification_view.ex | 61 ++++ .../web/pleroma_api/pleroma_api_controller.ex | 26 ++ lib/pleroma/web/push/impl.ex | 3 +- lib/pleroma/web/router.ex | 28 ++ lib/pleroma/web/streamer.ex | 14 +- ...5028_create_subscription_notifications.exs | 15 + test/notification_test.exs | 12 +- .../mastodon_api_controller_test.exs | 192 +++++++++++++ test/web/mastodon_api/mastodon_api_test.exs | 4 +- 14 files changed, 670 insertions(+), 12 deletions(-) create mode 100644 lib/pleroma/subscription_notification.ex create mode 100644 lib/pleroma/web/mastodon_api/views/subscription_notification_view.ex create mode 100644 priv/repo/migrations/20190824195028_create_subscription_notifications.exs diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index b7c880c51..716d98733 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -228,7 +228,6 @@ def get_notified_from_activity( [] |> Utils.maybe_notify_to_recipients(activity) |> Utils.maybe_notify_mentioned_recipients(activity) - |> Utils.maybe_notify_subscribers(activity) |> Enum.uniq() User.get_users_from_set(recipients, local_only) diff --git a/lib/pleroma/subscription_notification.ex b/lib/pleroma/subscription_notification.ex new file mode 100644 index 000000000..7ae25a7b1 --- /dev/null +++ b/lib/pleroma/subscription_notification.ex @@ -0,0 +1,266 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.SubscriptionNotification do + use Ecto.Schema + + alias Pleroma.Activity + alias Pleroma.Object + alias Pleroma.Pagination + alias Pleroma.Repo + alias Pleroma.SubscriptionNotification + alias Pleroma.User + alias Pleroma.Web.CommonAPI.Utils + alias Pleroma.Web.Push + alias Pleroma.Web.Streamer + + import Ecto.Query + import Ecto.Changeset + + @type t :: %__MODULE__{} + + schema "subscription_notifications" do + belongs_to(:user, User, type: Pleroma.FlakeId) + belongs_to(:activity, Activity, type: Pleroma.FlakeId) + + timestamps() + end + + def changeset(%SubscriptionNotification{} = notification, attrs) do + cast(notification, attrs, []) + end + + def for_user_query(user, opts \\ []) do + query = + SubscriptionNotification + |> where(user_id: ^user.id) + |> where( + [n, a], + fragment( + "? not in (SELECT ap_id FROM users WHERE info->'deactivated' @> 'true')", + a.actor + ) + ) + |> join(:inner, [n], activity in assoc(n, :activity)) + |> join(:left, [n, a], object in Object, + on: + fragment( + "(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)", + object.data, + a.data + ) + ) + |> preload([n, a, o], activity: {a, object: o}) + + if opts[:with_muted] do + query + else + where(query, [n, a], a.actor not in ^user.info.muted_notifications) + |> where([n, a], a.actor not in ^user.info.blocks) + |> where( + [n, a], + fragment("substring(? from '.*://([^/]*)')", a.actor) not in ^user.info.domain_blocks + ) + |> join(:left, [n, a], tm in Pleroma.ThreadMute, + on: tm.user_id == ^user.id and tm.context == fragment("?->>'context'", a.data) + ) + |> where([n, a, o, tm], is_nil(tm.user_id)) + end + end + + def for_user(user, opts \\ %{}) do + user + |> for_user_query(opts) + |> Pagination.fetch_paginated(opts) + end + + @doc """ + Returns notifications for user received since given date. + + ## Examples + + iex> Pleroma.SubscriptionNotification.for_user_since(%Pleroma.User{}, ~N[2019-04-13 11:22:33]) + [%Pleroma.SubscriptionNotification{}, %Pleroma.SubscriptionNotification{}] + + iex> Pleroma.SubscriptionNotification.for_user_since(%Pleroma.User{}, ~N[2019-04-15 11:22:33]) + [] + """ + @spec for_user_since(Pleroma.User.t(), NaiveDateTime.t()) :: [t()] + def for_user_since(user, date) do + from(n in for_user_query(user), + where: n.updated_at > ^date + ) + |> Repo.all() + end + + def clear_up_to(%{id: user_id} = _user, id) do + from( + n in SubscriptionNotification, + where: n.user_id == ^user_id, + where: n.id <= ^id + ) + |> Repo.delete_all([]) + end + + def get(%{id: user_id} = _user, id) do + query = + from( + n in SubscriptionNotification, + where: n.id == ^id, + join: activity in assoc(n, :activity), + preload: [activity: activity] + ) + + notification = Repo.one(query) + + case notification do + %{user_id: ^user_id} -> + {:ok, notification} + + _ -> + {:error, "Cannot get notification"} + end + end + + def clear(user) do + from(n in SubscriptionNotification, where: n.user_id == ^user.id) + |> Repo.delete_all() + end + + def destroy_multiple(%{id: user_id} = _user, ids) do + from(n in SubscriptionNotification, + where: n.id in ^ids, + where: n.user_id == ^user_id + ) + |> Repo.delete_all() + end + + def dismiss(%{id: user_id} = _user, id) do + notification = Repo.get(SubscriptionNotification, id) + + case notification do + %{user_id: ^user_id} -> + Repo.delete(notification) + + _ -> + {:error, "Cannot dismiss notification"} + end + end + + def create_notifications(%Activity{data: %{"to" => _, "type" => "Create"}} = activity) do + object = Object.normalize(activity) + + unless object && object.data["type"] == "Answer" do + users = get_notified_from_activity(activity) + notifications = Enum.map(users, fn user -> create_notification(activity, user) end) + {:ok, notifications} + else + {:ok, []} + end + end + + def create_notifications(%Activity{data: %{"to" => _, "type" => type}} = activity) + when type in ["Like", "Announce", "Follow"] do + users = get_notified_from_activity(activity) + notifications = Enum.map(users, fn user -> create_notification(activity, user) end) + {:ok, notifications} + end + + def create_notifications(_), do: {:ok, []} + + # TODO move to sql, too. + def create_notification(%Activity{} = activity, %User{} = user) do + unless skip?(activity, user) do + notification = %SubscriptionNotification{user_id: user.id, activity: activity} + {:ok, notification} = Repo.insert(notification) + Streamer.stream("user", notification) + Streamer.stream("user:subscription_notification", notification) + Push.send(notification) + notification + end + end + + def get_notified_from_activity(activity, local_only \\ true) + + def get_notified_from_activity( + %Activity{data: %{"to" => _, "type" => type} = _data} = activity, + local_only + ) + when type in ["Create", "Like", "Announce", "Follow"] do + recipients = + [] + |> Utils.maybe_notify_subscribers(activity) + |> Enum.uniq() + + User.get_users_from_set(recipients, local_only) + end + + def get_notified_from_activity(_, _local_only), do: [] + + @spec skip?(Activity.t(), User.t()) :: boolean() + def skip?(activity, user) do + [ + :self, + :followers, + :follows, + :non_followers, + :non_follows, + :recently_followed + ] + |> Enum.any?(&skip?(&1, activity, user)) + end + + @spec skip?(atom(), Activity.t(), User.t()) :: boolean() + def skip?(:self, activity, user) do + activity.data["actor"] == user.ap_id + end + + def skip?( + :followers, + activity, + %{info: %{notification_settings: %{"followers" => false}}} = user + ) do + actor = activity.data["actor"] + follower = User.get_cached_by_ap_id(actor) + User.following?(follower, user) + end + + def skip?( + :non_followers, + activity, + %{info: %{notification_settings: %{"non_followers" => false}}} = user + ) do + actor = activity.data["actor"] + follower = User.get_cached_by_ap_id(actor) + !User.following?(follower, user) + end + + def skip?(:follows, activity, %{info: %{notification_settings: %{"follows" => false}}} = user) do + actor = activity.data["actor"] + followed = User.get_cached_by_ap_id(actor) + User.following?(user, followed) + end + + def skip?( + :non_follows, + activity, + %{info: %{notification_settings: %{"non_follows" => false}}} = user + ) do + actor = activity.data["actor"] + followed = User.get_cached_by_ap_id(actor) + !User.following?(user, followed) + end + + def skip?(:recently_followed, %{data: %{"type" => "Follow"}} = activity, user) do + actor = activity.data["actor"] + + SubscriptionNotification.for_user(user) + |> Enum.any?(fn + %{activity: %{data: %{"type" => "Follow", "actor" => ^actor}}} -> true + _ -> false + end) + end + + def skip?(_, _, _), do: false +end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index d23ec66ac..bc9a7a2d6 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -12,6 +12,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.Object.Fetcher alias Pleroma.Pagination alias Pleroma.Repo + alias Pleroma.SubscriptionNotification alias Pleroma.Upload alias Pleroma.User alias Pleroma.Web.ActivityPub.MRF @@ -148,6 +149,7 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when PleromaJobQueue.enqueue(:background, Pleroma.Web.RichMedia.Helpers, [:fetch, activity]) Notification.create_notifications(activity) + SubscriptionNotification.create_notifications(activity) participations = activity diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index c54462bb3..3730c962c 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -23,6 +23,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do alias Pleroma.Repo alias Pleroma.ScheduledActivity alias Pleroma.Stats + alias Pleroma.SubscriptionNotification alias Pleroma.User alias Pleroma.Web alias Pleroma.Web.ActivityPub.ActivityPub @@ -39,6 +40,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do alias Pleroma.Web.MastodonAPI.ReportView alias Pleroma.Web.MastodonAPI.ScheduledActivityView alias Pleroma.Web.MastodonAPI.StatusView + alias Pleroma.Web.MastodonAPI.SubscriptionNotificationView alias Pleroma.Web.MediaProxy alias Pleroma.Web.OAuth.App alias Pleroma.Web.OAuth.Authorization @@ -725,6 +727,28 @@ def notifications(%{assigns: %{user: user}} = conn, params) do |> render("index.json", %{notifications: notifications, for: user}) end + def subscription_notifications(%{assigns: %{user: user}} = conn, params) do + notifications = MastodonAPI.get_subscription_notifications(user, params) + + conn + |> add_link_headers(:subscription_notifications, notifications) + |> put_view(SubscriptionNotificationView) + |> render("index.json", %{notifications: notifications, for: user}) + end + + def get_subscription_notification(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do + with {:ok, notification} <- SubscriptionNotification.get(user, id) do + conn + |> put_view(SubscriptionNotificationView) + |> render("show.json", %{subscription_notification: notification, for: user}) + else + {:error, reason} -> + conn + |> put_status(:forbidden) + |> json(%{"error" => reason}) + end + end + def get_notification(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do with {:ok, notification} <- Notification.get(user, id) do conn @@ -743,6 +767,11 @@ def clear_notifications(%{assigns: %{user: user}} = conn, _params) do json(conn, %{}) end + def clear_subscription_notifications(%{assigns: %{user: user}} = conn, _params) do + SubscriptionNotification.clear(user) + json(conn, %{}) + end + def dismiss_notification(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do with {:ok, _notif} <- Notification.dismiss(user, id) do json(conn, %{}) @@ -754,11 +783,30 @@ def dismiss_notification(%{assigns: %{user: user}} = conn, %{"id" => id} = _para end end + def dismiss_subscription_notification(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do + with {:ok, _notif} <- SubscriptionNotification.dismiss(user, id) do + json(conn, %{}) + else + {:error, reason} -> + conn + |> put_status(:forbidden) + |> json(%{"error" => reason}) + end + end + def destroy_multiple(%{assigns: %{user: user}} = conn, %{"ids" => ids} = _params) do Notification.destroy_multiple(user, ids) json(conn, %{}) end + def destroy_multiple_subscription_notifications( + %{assigns: %{user: user}} = conn, + %{"ids" => ids} = _params + ) do + SubscriptionNotification.destroy_multiple(user, ids) + json(conn, %{}) + end + def relationships(%{assigns: %{user: user}} = conn, %{"id" => id}) do id = List.wrap(id) q = from(u in User, where: u.id in ^id) diff --git a/lib/pleroma/web/mastodon_api/mastodon_api.ex b/lib/pleroma/web/mastodon_api/mastodon_api.ex index ac01d1ff3..6751e24d8 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api.ex @@ -10,6 +10,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do alias Pleroma.Notification alias Pleroma.Pagination alias Pleroma.ScheduledActivity + alias Pleroma.SubscriptionNotification alias Pleroma.User alias Pleroma.Web.CommonAPI @@ -62,6 +63,15 @@ def get_notifications(user, params \\ %{}) do |> Pagination.fetch_paginated(params) end + def get_subscription_notifications(user, params \\ %{}) do + options = cast_params(params) + + user + |> SubscriptionNotification.for_user_query(options) + |> restrict(:exclude_types, options) + |> Pagination.fetch_paginated(params) + end + def get_scheduled_activities(user, params \\ %{}) do user |> ScheduledActivity.for_user_query() diff --git a/lib/pleroma/web/mastodon_api/views/subscription_notification_view.ex b/lib/pleroma/web/mastodon_api/views/subscription_notification_view.ex new file mode 100644 index 000000000..c6f0b5064 --- /dev/null +++ b/lib/pleroma/web/mastodon_api/views/subscription_notification_view.ex @@ -0,0 +1,61 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.MastodonAPI.SubscriptionNotificationView do + use Pleroma.Web, :view + + alias Pleroma.Activity + # alias Pleroma.SubscriptionNotification + alias Pleroma.User + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.MastodonAPI.AccountView + alias Pleroma.Web.MastodonAPI.SubscriptionNotificationView + alias Pleroma.Web.MastodonAPI.StatusView + + def render("index.json", %{notifications: notifications, for: user}) do + safe_render_many(notifications, SubscriptionNotificationView, "show.json", %{for: user}) + end + + def render("show.json", %{ + subscription_notification: %{activity: activity} = notification, + for: user + }) do + actor = User.get_cached_by_ap_id(activity.data["actor"]) + parent_activity = Activity.get_create_by_object_ap_id(activity.data["object"]) + mastodon_type = Activity.mastodon_notification_type(activity) + + response = %{ + id: to_string(notification.id), + type: mastodon_type, + created_at: CommonAPI.Utils.to_masto_date(notification.inserted_at), + account: AccountView.render("account.json", %{user: actor, for: user}) + } + + case mastodon_type do + "mention" -> + response + |> Map.merge(%{ + status: StatusView.render("status.json", %{activity: activity, for: user}) + }) + + "favourite" -> + response + |> Map.merge(%{ + status: StatusView.render("status.json", %{activity: parent_activity, for: user}) + }) + + "reblog" -> + response + |> Map.merge(%{ + status: StatusView.render("status.json", %{activity: parent_activity, for: user}) + }) + + "follow" -> + response + + _ -> + nil + end + end +end diff --git a/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex b/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex index f4df3b024..71792d913 100644 --- a/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIController do alias Pleroma.Conversation.Participation alias Pleroma.Notification + alias Pleroma.SubscriptionNotification alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.MastodonAPI.ConversationView alias Pleroma.Web.MastodonAPI.NotificationView @@ -95,4 +96,29 @@ def read_notification(%{assigns: %{user: user}} = conn, %{"max_id" => max_id}) d |> render("index.json", %{notifications: notifications, for: user}) end end + + def delete_subscription_notification(%{assigns: %{user: user}} = conn, %{ + "id" => notification_id + }) do + with {:ok, notification} <- SubscriptionNotification.dismiss(user, notification_id) do + conn + |> put_view(NotificationView) + |> render("show.json", %{notification: notification, for: user}) + else + {:error, message} -> + conn + |> put_status(:bad_request) + |> json(%{"error" => message}) + end + end + + def read_subscription_notification(%{assigns: %{user: user}} = conn, %{"max_id" => max_id}) do + with notifications <- SubscriptionNotification.clear_up_to(user, max_id) do + notifications = Enum.take(notifications, 80) + + conn + |> put_view(NotificationView) + |> render("index.json", %{notifications: notifications, for: user}) + end + end end diff --git a/lib/pleroma/web/push/impl.ex b/lib/pleroma/web/push/impl.ex index 35d3ff07c..7ea5607fa 100644 --- a/lib/pleroma/web/push/impl.ex +++ b/lib/pleroma/web/push/impl.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.Push.Impl do alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Repo + alias Pleroma.SubscriptionNotification alias Pleroma.User alias Pleroma.Web.Metadata.Utils alias Pleroma.Web.Push.Subscription @@ -19,7 +20,7 @@ defmodule Pleroma.Web.Push.Impl do @types ["Create", "Follow", "Announce", "Like"] @doc "Performs sending notifications for user subscriptions" - @spec perform(Notification.t()) :: list(any) | :error + @spec perform(Notification.t() | SubscriptionNotification.t()) :: list(any) | :error def perform( %{ activity: %{data: %{"type" => activity_type}, id: activity_id} = activity, diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index b0464037e..dbd0deecd 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -300,11 +300,39 @@ defmodule Pleroma.Web.Router do get("/bookmarks", MastodonAPIController, :bookmarks) post("/notifications/clear", MastodonAPIController, :clear_notifications) + + post( + "/notifications/subscription/clear", + MastodonAPIController, + :clear_subscription_notifications + ) + post("/notifications/dismiss", MastodonAPIController, :dismiss_notification) + + post( + "/notifications/subscription/dismiss", + MastodonAPIController, + :dismiss_subscription_notification + ) + get("/notifications", MastodonAPIController, :notifications) + get("/notifications/subscription", MastodonAPIController, :subscription_notifications) get("/notifications/:id", MastodonAPIController, :get_notification) + + get( + "/notifications/subscription/:id", + MastodonAPIController, + :get_subscription_notification + ) + delete("/notifications/destroy_multiple", MastodonAPIController, :destroy_multiple) + delete( + "/notifications/subscription/destroy_multiple", + MastodonAPIController, + :destroy_multiple_subscription_notifications + ) + get("/scheduled_statuses", MastodonAPIController, :scheduled_statuses) get("/scheduled_statuses/:id", MastodonAPIController, :show_scheduled_status) diff --git a/lib/pleroma/web/streamer.ex b/lib/pleroma/web/streamer.ex index 587c43f40..42d95e33a 100644 --- a/lib/pleroma/web/streamer.ex +++ b/lib/pleroma/web/streamer.ex @@ -10,6 +10,7 @@ defmodule Pleroma.Web.Streamer do alias Pleroma.Conversation.Participation alias Pleroma.Notification alias Pleroma.Object + alias Pleroma.SubscriptionNotification alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Visibility @@ -208,10 +209,17 @@ def represent_conversation(%Participation{} = participation) do |> Jason.encode!() end - @spec represent_notification(User.t(), Notification.t()) :: binary() - defp represent_notification(%User{} = user, %Notification{} = notify) do + @spec represent_notification(User.t(), Notification.t() | %SubscriptionNotification{}) :: + binary() + defp represent_notification(%User{} = user, notify) do + event = + case notify do + %Notification{} -> "notification" + %SubscriptionNotification{} -> "subscription_norification" + end + %{ - event: "notification", + event: event, payload: NotificationView.render( "show.json", diff --git a/priv/repo/migrations/20190824195028_create_subscription_notifications.exs b/priv/repo/migrations/20190824195028_create_subscription_notifications.exs new file mode 100644 index 000000000..fcceb4386 --- /dev/null +++ b/priv/repo/migrations/20190824195028_create_subscription_notifications.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.CreateSubscriptionNotifications do + use Ecto.Migration + + def change do + create_if_not_exists table(:subscription_notifications) do + add(:user_id, references(:users, type: :uuid, on_delete: :delete_all)) + add(:activity_id, references(:activities, type: :uuid, on_delete: :delete_all)) + + timestamps() + end + + create_if_not_exists(index(:subscription_notifications, [:user_id])) + create_if_not_exists(index(:subscription_notifications, ["id desc nulls last"])) + end +end diff --git a/test/notification_test.exs b/test/notification_test.exs index 2a52dad8d..0e2635aad 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -32,16 +32,16 @@ test "notifies someone when they are directly addressed" do assert other_notification.activity_id == activity.id end - test "it creates a notification for subscribed users" do + test "it does not create a notification for subscribed users" do user = insert(:user) subscriber = insert(:user) User.subscribe(subscriber, user) {:ok, status} = CommonAPI.post(user, %{"status" => "Akariiiin"}) - {:ok, [notification]} = Notification.create_notifications(status) + {:ok, notifications} = Notification.create_notifications(status) - assert notification.user_id == subscriber.id + assert notifications == [] end test "does not create a notification for subscribed users if status is a reply" do @@ -190,14 +190,16 @@ test "it doesn't create a notification for follow-unfollow-follow chains" do refute Notification.create_notification(activity_dupe, followed_user) end - test "it doesn't create duplicate notifications for follow+subscribed users" do + test "it doesn't create notifications for follow+subscribed users" do user = insert(:user) subscriber = insert(:user) {:ok, _, _, _} = CommonAPI.follow(subscriber, user) User.subscribe(subscriber, user) {:ok, status} = CommonAPI.post(user, %{"status" => "Akariiiin"}) - {:ok, [_notif]} = Notification.create_notifications(status) + {:ok, notifications} = Notification.create_notifications(status) + + assert notifications == [] end test "it doesn't create subscription notifications if the recipient cannot see the status" do diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index f4902d043..95fcecc52 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -13,6 +13,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do alias Pleroma.Object alias Pleroma.Repo alias Pleroma.ScheduledActivity + alias Pleroma.SubscriptionNotification alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.CommonAPI @@ -1273,6 +1274,197 @@ test "see notifications after muting user with notifications and with_muted para end end + describe "subscription_notifications" do + setup do + user = insert(:user) + subscriber = insert(:user) + + User.subscribe(subscriber, user) + + {:ok, %{user: user, subscriber: subscriber}} + end + + test "list of notifications", %{conn: conn, user: user, subscriber: subscriber} do + status_text = "Hello" + {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) + + conn = + conn + |> assign(:user, subscriber) + |> get("/api/v1/notifications/subscription") + + assert [%{"status" => %{"content" => response}} | _rest] = json_response(conn, 200) + assert response == status_text + end + + test "getting a single notification", %{conn: conn, user: user, subscriber: subscriber} do + status_text = "Hello" + + {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) + [notification] = Repo.all(SubscriptionNotification) + + conn = + conn + |> assign(:user, subscriber) + |> get("/api/v1/notifications/subscription/#{notification.id}") + + assert %{"status" => %{"content" => response}} = json_response(conn, 200) + assert response == status_text + end + + test "dismissing a single notification also deletes it", %{ + conn: conn, + user: user, + subscriber: subscriber + } do + status_text = "Hello" + {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) + + [notification] = Repo.all(SubscriptionNotification) + + conn = + conn + |> assign(:user, subscriber) + |> post("/api/v1/notifications/subscription/dismiss", %{"id" => notification.id}) + + assert %{} = json_response(conn, 200) + + assert Repo.all(SubscriptionNotification) == [] + end + + test "clearing all notifications also deletes them", %{ + conn: conn, + user: user, + subscriber: subscriber + } do + status_text1 = "Hello" + status_text2 = "Hello again" + {:ok, _activity1} = CommonAPI.post(user, %{"status" => status_text1}) + {:ok, _activity2} = CommonAPI.post(user, %{"status" => status_text2}) + + conn = + conn + |> assign(:user, subscriber) + |> post("/api/v1/notifications/subscription/clear") + + assert %{} = json_response(conn, 200) + + conn = + build_conn() + |> assign(:user, subscriber) + |> get("/api/v1/notifications/subscription") + + assert json_response(conn, 200) == [] + + assert Repo.all(SubscriptionNotification) == [] + end + + test "paginates notifications using min_id, since_id, max_id, and limit", %{ + conn: conn, + user: user, + subscriber: subscriber + } do + {:ok, activity1} = CommonAPI.post(user, %{"status" => "Hello 1"}) + {:ok, activity2} = CommonAPI.post(user, %{"status" => "Hello 2"}) + {:ok, activity3} = CommonAPI.post(user, %{"status" => "Hello 3"}) + {:ok, activity4} = CommonAPI.post(user, %{"status" => "Hello 4"}) + + notification1_id = + Repo.get_by(SubscriptionNotification, activity_id: activity1.id).id |> to_string() + + notification2_id = + Repo.get_by(SubscriptionNotification, activity_id: activity2.id).id |> to_string() + + notification3_id = + Repo.get_by(SubscriptionNotification, activity_id: activity3.id).id |> to_string() + + notification4_id = + Repo.get_by(SubscriptionNotification, activity_id: activity4.id).id |> to_string() + + conn = assign(conn, :user, subscriber) + + # min_id + conn_res = + get(conn, "/api/v1/notifications/subscription?limit=2&min_id=#{notification1_id}") + + result = json_response(conn_res, 200) + assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result + + # since_id + conn_res = + get(conn, "/api/v1/notifications/subscription?limit=2&since_id=#{notification1_id}") + + result = json_response(conn_res, 200) + assert [%{"id" => ^notification4_id}, %{"id" => ^notification3_id}] = result + + # max_id + conn_res = + get(conn, "/api/v1/notifications/subscription?limit=2&max_id=#{notification4_id}") + + result = json_response(conn_res, 200) + assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result + end + + test "destroy multiple", %{conn: conn, user: user1, subscriber: user2} do + # mutual subscription + User.subscribe(user1, user2) + + {:ok, activity1} = CommonAPI.post(user1, %{"status" => "Hello 1"}) + {:ok, activity2} = CommonAPI.post(user1, %{"status" => "World 1"}) + {:ok, activity3} = CommonAPI.post(user2, %{"status" => "Hello 2"}) + {:ok, activity4} = CommonAPI.post(user2, %{"status" => "World 2"}) + + notification1_id = + Repo.get_by(SubscriptionNotification, activity_id: activity1.id).id |> to_string() + + notification2_id = + Repo.get_by(SubscriptionNotification, activity_id: activity2.id).id |> to_string() + + notification3_id = + Repo.get_by(SubscriptionNotification, activity_id: activity3.id).id |> to_string() + + notification4_id = + Repo.get_by(SubscriptionNotification, activity_id: activity4.id).id |> to_string() + + conn = assign(conn, :user, user1) + + conn_res = get(conn, "/api/v1/notifications/subscription") + + result = json_response(conn_res, 200) + + Enum.each(result, fn %{"id" => id} -> + assert id in [notification3_id, notification4_id] + end) + + conn2 = assign(conn, :user, user2) + + conn_res = get(conn2, "/api/v1/notifications/subscription") + + result = json_response(conn_res, 200) + + Enum.each(result, fn %{"id" => id} -> + assert id in [notification1_id, notification2_id] + end) + + conn_destroy = + delete(conn, "/api/v1/notifications/subscription/destroy_multiple", %{ + "ids" => [notification3_id, notification4_id] + }) + + assert json_response(conn_destroy, 200) == %{} + + conn_res = get(conn2, "/api/v1/notifications/subscription") + + result = json_response(conn_res, 200) + + Enum.each(result, fn %{"id" => id} -> + assert id in [notification1_id, notification2_id] + end) + + assert length(Repo.all(SubscriptionNotification)) == 2 + end + end + describe "reblogging" do test "reblogs and returns the reblogged status", %{conn: conn} do activity = insert(:note_activity) diff --git a/test/web/mastodon_api/mastodon_api_test.exs b/test/web/mastodon_api/mastodon_api_test.exs index 7fcb2bd55..848fce7ad 100644 --- a/test/web/mastodon_api/mastodon_api_test.exs +++ b/test/web/mastodon_api/mastodon_api_test.exs @@ -75,9 +75,9 @@ test "returns notifications for user" do User.subscribe(subscriber, user) - {:ok, status} = CommonAPI.post(user, %{"status" => "Akariiiin"}) + {:ok, status} = CommonAPI.post(user, %{"status" => "Akariiiin @#{subscriber.nickname}"}) - {:ok, status1} = CommonAPI.post(user, %{"status" => "Magi"}) + {:ok, status1} = CommonAPI.post(user, %{"status" => "Magi @#{subscriber.nickname}"}) {:ok, [notification]} = Notification.create_notifications(status) {:ok, [notification1]} = Notification.create_notifications(status1) res = MastodonAPI.get_notifications(subscriber) From 25a64a4aa0a10bf06c2ccdf9a6c493f184170a89 Mon Sep 17 00:00:00 2001 From: stwf Date: Fri, 13 Sep 2019 11:46:41 -0400 Subject: [PATCH 064/272] Capture test error messages where appropriate --- test/integration/mastodon_websocket_test.exs | 29 ++++++++++++++----- test/web/activity_pub/publisher_test.exs | 24 +++++++++------ test/web/activity_pub/relay_test.exs | 13 +++++++-- .../mastodon_api_controller_test.exs | 14 +++++---- test/web/twitter_api/util_controller_test.exs | 13 +++++---- .../web_finger/web_finger_controller_test.exs | 13 +++++---- 6 files changed, 70 insertions(+), 36 deletions(-) diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs index 3975cdcd6..63bf73412 100644 --- a/test/integration/mastodon_websocket_test.exs +++ b/test/integration/mastodon_websocket_test.exs @@ -5,6 +5,7 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do use Pleroma.DataCase + import ExUnit.CaptureLog import Pleroma.Factory alias Pleroma.Integration.WebsocketClient @@ -39,13 +40,17 @@ def start_socket(qs \\ nil, headers \\ []) do end test "refuses invalid requests" do - assert {:error, {400, _}} = start_socket() - assert {:error, {404, _}} = start_socket("?stream=ncjdk") + capture_log(fn -> + assert {:error, {400, _}} = start_socket() + assert {:error, {404, _}} = start_socket("?stream=ncjdk") + end) end test "requires authentication and a valid token for protected streams" do - assert {:error, {403, _}} = start_socket("?stream=user&access_token=aaaaaaaaaaaa") - assert {:error, {403, _}} = start_socket("?stream=user") + capture_log(fn -> + assert {:error, {403, _}} = start_socket("?stream=user&access_token=aaaaaaaaaaaa") + assert {:error, {403, _}} = start_socket("?stream=user") + end) end test "allows public streams without authentication" do @@ -100,19 +105,27 @@ test "accepts valid tokens", state do test "accepts the 'user' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user&access_token=#{token.token}") - assert {:error, {403, "Forbidden"}} = start_socket("?stream=user") + + assert capture_log(fn -> + assert {:error, {403, "Forbidden"}} = start_socket("?stream=user") + end) =~ ":badarg" end test "accepts the 'user:notification' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user:notification&access_token=#{token.token}") - assert {:error, {403, "Forbidden"}} = start_socket("?stream=user:notification") + + assert capture_log(fn -> + assert {:error, {403, "Forbidden"}} = start_socket("?stream=user:notification") + end) =~ ":badarg" end test "accepts valid token on Sec-WebSocket-Protocol header", %{token: token} do assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}]) - assert {:error, {403, "Forbidden"}} = - start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}]) + assert capture_log(fn -> + assert {:error, {403, "Forbidden"}} = + start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}]) + end) =~ ":badarg" end end end diff --git a/test/web/activity_pub/publisher_test.exs b/test/web/activity_pub/publisher_test.exs index 36a39c84c..381757e1b 100644 --- a/test/web/activity_pub/publisher_test.exs +++ b/test/web/activity_pub/publisher_test.exs @@ -5,6 +5,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do use Pleroma.DataCase + import ExUnit.CaptureLog import Pleroma.Factory import Tesla.Mock import Mock @@ -188,7 +189,10 @@ test "it returns inbox for messages involving single recipients in total" do actor = insert(:user) inbox = "http://connrefused.site/users/nick1/inbox" - assert {:error, _} = Publisher.publish_one(%{inbox: inbox, json: "{}", actor: actor, id: 1}) + assert capture_log(fn -> + assert {:error, _} = + Publisher.publish_one(%{inbox: inbox, json: "{}", actor: actor, id: 1}) + end) =~ "connrefused" assert called(Instances.set_unreachable(inbox)) end @@ -212,14 +216,16 @@ test "it returns inbox for messages involving single recipients in total" do actor = insert(:user) inbox = "http://connrefused.site/users/nick1/inbox" - assert {:error, _} = - Publisher.publish_one(%{ - inbox: inbox, - json: "{}", - actor: actor, - id: 1, - unreachable_since: NaiveDateTime.utc_now() - }) + assert capture_log(fn -> + assert {:error, _} = + Publisher.publish_one(%{ + inbox: inbox, + json: "{}", + actor: actor, + id: 1, + unreachable_since: NaiveDateTime.utc_now() + }) + end) =~ "connrefused" refute called(Instances.set_unreachable(inbox)) end diff --git a/test/web/activity_pub/relay_test.exs b/test/web/activity_pub/relay_test.exs index 4f7d592a6..9db4255d8 100644 --- a/test/web/activity_pub/relay_test.exs +++ b/test/web/activity_pub/relay_test.exs @@ -10,6 +10,7 @@ defmodule Pleroma.Web.ActivityPub.RelayTest do alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Relay + import ExUnit.CaptureLog import Pleroma.Factory import Mock @@ -20,7 +21,9 @@ test "gets an actor for the relay" do describe "follow/1" do test "returns errors when user not found" do - assert Relay.follow("test-ap-id") == {:error, "Could not fetch by AP id"} + assert capture_log(fn -> + assert Relay.follow("test-ap-id") == {:error, "Could not fetch by AP id"} + end) =~ "Could not fetch by AP id" end test "returns activity" do @@ -37,7 +40,9 @@ test "returns activity" do describe "unfollow/1" do test "returns errors when user not found" do - assert Relay.unfollow("test-ap-id") == {:error, "Could not fetch by AP id"} + assert capture_log(fn -> + assert Relay.unfollow("test-ap-id") == {:error, "Could not fetch by AP id"} + end) =~ "Could not fetch by AP id" end test "returns activity" do @@ -78,7 +83,9 @@ test "returns error when object is unknown" do } ) - assert Relay.publish(activity) == {:error, nil} + assert capture_log(fn -> + assert Relay.publish(activity) == {:error, nil} + end) =~ "[error] error: nil" end test_with_mock "returns announce activity and publish to federate", diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index f4902d043..806ae7e69 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -3963,13 +3963,15 @@ test "returns error", %{conn: conn, user: user} do Config.put([:suggestions, :enabled], true) Config.put([:suggestions, :third_party_engine], "http://test500?{{host}}&{{user}}") - res = - conn - |> assign(:user, user) - |> get("/api/v1/suggestions") - |> json_response(500) + assert capture_log(fn -> + res = + conn + |> assign(:user, user) + |> get("/api/v1/suggestions") + |> json_response(500) - assert res == "Something went wrong" + assert res == "Something went wrong" + end) =~ "Could not retrieve suggestions" end test "returns suggestions", %{conn: conn, user: user, other_user: other_user} do diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index cf8e69d2b..e36d3130f 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -8,6 +8,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.CommonAPI + import ExUnit.CaptureLog import Pleroma.Factory import Mock @@ -338,12 +339,14 @@ test "show follow page if the `acct` is a account link", %{conn: conn} do test "show follow page with error when user cannot fecth by `acct` link", %{conn: conn} do user = insert(:user) - response = - conn - |> assign(:user, user) - |> get("/ostatus_subscribe?acct=https://mastodon.social/users/not_found") + assert capture_log(fn -> + response = + conn + |> assign(:user, user) + |> get("/ostatus_subscribe?acct=https://mastodon.social/users/not_found") - assert html_response(response, 200) =~ "Error fetching user" + assert html_response(response, 200) =~ "Error fetching user" + end) =~ "Object has been deleted" end end diff --git a/test/web/web_finger/web_finger_controller_test.exs b/test/web/web_finger/web_finger_controller_test.exs index e23086b2a..bd3ccaaf7 100644 --- a/test/web/web_finger/web_finger_controller_test.exs +++ b/test/web/web_finger/web_finger_controller_test.exs @@ -5,6 +5,7 @@ defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do use Pleroma.Web.ConnCase + import ExUnit.CaptureLog import Pleroma.Factory import Tesla.Mock @@ -75,11 +76,13 @@ test "it returns 404 when user isn't found (XML)" do test "Sends a 404 when invalid format" do user = insert(:user) - assert_raise Phoenix.NotAcceptableError, fn -> - build_conn() - |> put_req_header("accept", "text/html") - |> get("/.well-known/webfinger?resource=acct:#{user.nickname}@localhost") - end + assert capture_log(fn -> + assert_raise Phoenix.NotAcceptableError, fn -> + build_conn() + |> put_req_header("accept", "text/html") + |> get("/.well-known/webfinger?resource=acct:#{user.nickname}@localhost") + end + end) =~ "no supported media type in accept header" end test "Sends a 400 when resource param is missing" do From 69faec031d62f4e87a1791ae0c71ca4b0f02f12b Mon Sep 17 00:00:00 2001 From: Alex S Date: Fri, 13 Sep 2019 19:02:42 +0300 Subject: [PATCH 065/272] markdown generation to the new file --- lib/pleroma/docs/markdown.ex | 4 ++-- mix.exs | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index 24930cc9f..8386dc2fb 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -3,9 +3,9 @@ defmodule Pleroma.Docs.Markdown do @spec process(keyword()) :: {:ok, String.t()} def process(descriptions) do - config_path = "docs/config.md" + config_path = "docs/generated_config.md" {:ok, file} = File.open(config_path, [:utf8, :write]) - IO.write(file, "# Configuration\n") + IO.write(file, "# Generated configuration\n") IO.write(file, "Date of generation: #{Date.utc_today()}\n\n") IO.write( diff --git a/mix.exs b/mix.exs index 96ef723b2..dfa530358 100644 --- a/mix.exs +++ b/mix.exs @@ -172,8 +172,7 @@ defp aliases do "ecto.rollback": ["pleroma.ecto.rollback"], "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"], "ecto.reset": ["ecto.drop", "ecto.setup"], - test: ["ecto.create --quiet", "ecto.migrate", "test"], - docs: ["pleroma.docs", "docs"] + test: ["ecto.create --quiet", "ecto.migrate", "test"] ] end From c625fe6f09a308f10e98c9e5ea4bf14500a0b58a Mon Sep 17 00:00:00 2001 From: Alex S Date: Fri, 13 Sep 2019 19:03:39 +0300 Subject: [PATCH 066/272] config.md back --- docs/config.md | 702 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 701 insertions(+), 1 deletion(-) diff --git a/docs/config.md b/docs/config.md index 7f54a34b1..066547bb1 100644 --- a/docs/config.md +++ b/docs/config.md @@ -1 +1,701 @@ -This file is a placeholder, please run mix pleroma.docs to generate it. +# Configuration + +This file describe the configuration, it is recommended to edit the relevant *.secret.exs file instead of the others founds in the ``config`` directory. +If you run Pleroma with ``MIX_ENV=prod`` the file is ``prod.secret.exs``, otherwise it is ``dev.secret.exs``. + +## Pleroma.Upload +* `uploader`: Select which `Pleroma.Uploaders` to use +* `filters`: List of `Pleroma.Upload.Filter` to use. +* `link_name`: When enabled Pleroma will add a `name` parameter to the url of the upload, for example `https://instance.tld/media/corndog.png?name=corndog.png`. This is needed to provide the correct filename in Content-Disposition headers when using filters like `Pleroma.Upload.Filter.Dedupe` +* `base_url`: The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host. +* `proxy_remote`: If you're using a remote uploader, Pleroma will proxy media requests instead of redirecting to it. +* `proxy_opts`: Proxy options, see `Pleroma.ReverseProxy` documentation. + +Note: `strip_exif` has been replaced by `Pleroma.Upload.Filter.Mogrify`. + +## Pleroma.Uploaders.Local +* `uploads`: Which directory to store the user-uploads in, relative to pleroma’s working directory + +## Pleroma.Uploaders.S3 +* `bucket`: S3 bucket name +* `bucket_namespace`: S3 bucket namespace +* `public_endpoint`: S3 endpoint that the user finally accesses(ex. "https://s3.dualstack.ap-northeast-1.amazonaws.com") +* `truncated_namespace`: If you use S3 compatible service such as Digital Ocean Spaces or CDN, set folder name or "" etc. +For example, when using CDN to S3 virtual host format, set "". +At this time, write CNAME to CDN in public_endpoint. + +## Pleroma.Upload.Filter.Mogrify + +* `args`: List of actions for the `mogrify` command like `"strip"` or `["strip", "auto-orient", {"implode", "1"}]`. + +## Pleroma.Upload.Filter.Dedupe + +No specific configuration. + +## Pleroma.Upload.Filter.AnonymizeFilename + +This filter replaces the filename (not the path) of an upload. For complete obfuscation, add +`Pleroma.Upload.Filter.Dedupe` before AnonymizeFilename. + +* `text`: Text to replace filenames in links. If empty, `{random}.extension` will be used. You can get the original filename extension by using `{extension}`, for example `custom-file-name.{extension}`. + +## Pleroma.Emails.Mailer +* `adapter`: one of the mail adapters listed in [Swoosh readme](https://github.com/swoosh/swoosh#adapters), or `Swoosh.Adapters.Local` for in-memory mailbox. +* `api_key` / `password` and / or other adapter-specific settings, per the above documentation. +* `enabled`: Allows enable/disable send emails. Default: `false`. + +An example for Sendgrid adapter: + +```elixir +config :pleroma, Pleroma.Emails.Mailer, + adapter: Swoosh.Adapters.Sendgrid, + api_key: "YOUR_API_KEY" +``` + +An example for SMTP adapter: + +```elixir +config :pleroma, Pleroma.Emails.Mailer, + adapter: Swoosh.Adapters.SMTP, + relay: "smtp.gmail.com", + username: "YOUR_USERNAME@gmail.com", + password: "YOUR_SMTP_PASSWORD", + port: 465, + ssl: true, + tls: :always, + auth: :always +``` + +## :uri_schemes +* `valid_schemes`: List of the scheme part that is considered valid to be an URL + +## :instance +* `name`: The instance’s name +* `email`: Email used to reach an Administrator/Moderator of the instance +* `notify_email`: Email used for notifications. +* `description`: The instance’s description, can be seen in nodeinfo and ``/api/v1/instance`` +* `limit`: Posts character limit (CW/Subject included in the counter) +* `remote_limit`: Hard character limit beyond which remote posts will be dropped. +* `upload_limit`: File size limit of uploads (except for avatar, background, banner) +* `avatar_upload_limit`: File size limit of user’s profile avatars +* `background_upload_limit`: File size limit of user’s profile backgrounds +* `banner_upload_limit`: File size limit of user’s profile banners +* `poll_limits`: A map with poll limits for **local** polls + * `max_options`: Maximum number of options + * `max_option_chars`: Maximum number of characters per option + * `min_expiration`: Minimum expiration time (in seconds) + * `max_expiration`: Maximum expiration time (in seconds) +* `registrations_open`: Enable registrations for anyone, invitations can be enabled when false. +* `invites_enabled`: Enable user invitations for admins (depends on `registrations_open: false`). +* `account_activation_required`: Require users to confirm their emails before signing in. +* `federating`: Enable federation with other instances +* `federation_incoming_replies_max_depth`: Max. depth of reply-to activities fetching on incoming federation, to prevent out-of-memory situations while fetching very long threads. If set to `nil`, threads of any depth will be fetched. Lower this value if you experience out-of-memory crashes. +* `federation_reachability_timeout_days`: Timeout (in days) of each external federation target being unreachable prior to pausing federating to it. +* `allow_relay`: Enable Pleroma’s Relay, which makes it possible to follow a whole instance +* `rewrite_policy`: Message Rewrite Policy, either one or a list. Here are the ones available by default: + * `Pleroma.Web.ActivityPub.MRF.NoOpPolicy`: Doesn’t modify activities (default) + * `Pleroma.Web.ActivityPub.MRF.DropPolicy`: Drops all activities. It generally doesn’t makes sense to use in production + * `Pleroma.Web.ActivityPub.MRF.SimplePolicy`: Restrict the visibility of activities from certains instances (See ``:mrf_simple`` section) + * `Pleroma.Web.ActivityPub.MRF.TagPolicy`: Applies policies to individual users based on tags, which can be set using pleroma-fe/admin-fe/any other app that supports Pleroma Admin API. For example it allows marking posts from individual users nsfw (sensitive) + * `Pleroma.Web.ActivityPub.MRF.SubchainPolicy`: Selectively runs other MRF policies when messages match (see ``:mrf_subchain`` section) + * `Pleroma.Web.ActivityPub.MRF.RejectNonPublic`: Drops posts with non-public visibility settings (See ``:mrf_rejectnonpublic`` section) + * `Pleroma.Web.ActivityPub.MRF.EnsureRePrepended`: Rewrites posts to ensure that replies to posts with subjects do not have an identical subject and instead begin with re:. + * `Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy`: Rejects posts from likely spambots by rejecting posts from new users that contain links. + * `Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy`: Crawls attachments using their MediaProxy URLs so that the MediaProxy cache is primed. + * `Pleroma.Web.ActivityPub.MRF.MentionPolicy`: Drops posts mentioning configurable users. (see `:mrf_mention` section) + * `Pleroma.Web.ActivityPub.MRF.VocabularyPolicy`: Restricts activities to a configured set of vocabulary. (see `:mrf_vocabulary` section) +* `public`: Makes the client API in authentificated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network. +* `quarantined_instances`: List of ActivityPub instances where private(DMs, followers-only) activities will not be send. +* `managed_config`: Whenether the config for pleroma-fe is configured in this config or in ``static/config.json`` +* `allowed_post_formats`: MIME-type list of formats allowed to be posted (transformed into HTML) +* `mrf_transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo). +* `mrf_transparency_exclusions`: Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value. +* `scope_copy`: Copy the scope (private/unlisted/public) in replies to posts by default. +* `subject_line_behavior`: Allows changing the default behaviour of subject lines in replies. Valid values: + * "email": Copy and preprend re:, as in email. + * "masto": Copy verbatim, as in Mastodon. + * "noop": Don't copy the subject. +* `always_show_subject_input`: When set to false, auto-hide the subject field when it's empty. +* `extended_nickname_format`: Set to `true` to use extended local nicknames format (allows underscores/dashes). This will break federation with + older software for theses nicknames. +* `max_pinned_statuses`: The maximum number of pinned statuses. `0` will disable the feature. +* `autofollowed_nicknames`: Set to nicknames of (local) users that every new user should automatically follow. +* `no_attachment_links`: Set to true to disable automatically adding attachment link text to statuses +* `welcome_message`: A message that will be send to a newly registered users as a direct message. +* `welcome_user_nickname`: The nickname of the local user that sends the welcome message. +* `max_report_comment_size`: The maximum size of the report comment (Default: `1000`) +* `safe_dm_mentions`: If set to true, only mentions at the beginning of a post will be used to address people in direct messages. This is to prevent accidental mentioning of people when talking about them (e.g. "@friend hey i really don't like @enemy"). Default: `false`. +* `healthcheck`: If set to true, system data will be shown on ``/api/pleroma/healthcheck``. +* `remote_post_retention_days`: The default amount of days to retain remote posts when pruning the database. +* `user_bio_length`: A user bio maximum length (default: `5000`) +* `user_name_length`: A user name maximum length (default: `100`) +* `skip_thread_containment`: Skip filter out broken threads. The default is `false`. +* `limit_to_local_content`: Limit unauthenticated users to search for local statutes and users only. Possible values: `:unauthenticated`, `:all` and `false`. The default is `:unauthenticated`. +* `dynamic_configuration`: Allow transferring configuration to DB with the subsequent customization from Admin api. +* `max_account_fields`: The maximum number of custom fields in the user profile (default: `10`) +* `max_remote_account_fields`: The maximum number of custom fields in the remote user profile (default: `20`) +* `account_field_name_length`: An account field name maximum length (default: `512`) +* `account_field_value_length`: An account field value maximum length (default: `512`) +* `external_user_synchronization`: Enabling following/followers counters synchronization for external users. + + + +## :logger +* `backends`: `:console` is used to send logs to stdout, `{ExSyslogger, :ex_syslogger}` to log to syslog, and `Quack.Logger` to log to Slack + +An example to enable ONLY ExSyslogger (f/ex in ``prod.secret.exs``) with info and debug suppressed: +```elixir +config :logger, + backends: [{ExSyslogger, :ex_syslogger}] + +config :logger, :ex_syslogger, + level: :warn +``` + +Another example, keeping console output and adding the pid to syslog output: +```elixir +config :logger, + backends: [:console, {ExSyslogger, :ex_syslogger}] + +config :logger, :ex_syslogger, + level: :warn, + option: [:pid, :ndelay] +``` + +See: [logger’s documentation](https://hexdocs.pm/logger/Logger.html) and [ex_syslogger’s documentation](https://hexdocs.pm/ex_syslogger/) + +An example of logging info to local syslog, but warn to a Slack channel: +```elixir +config :logger, + backends: [ {ExSyslogger, :ex_syslogger}, Quack.Logger ], + level: :info + +config :logger, :ex_syslogger, + level: :info, + ident: "pleroma", + format: "$metadata[$level] $message" + +config :quack, + level: :warn, + meta: [:all], + webhook_url: "https://hooks.slack.com/services/YOUR-API-KEY-HERE" +``` + +See the [Quack Github](https://github.com/azohra/quack) for more details + +## :frontend_configurations + +This can be used to configure a keyword list that keeps the configuration data for any kind of frontend. By default, settings for `pleroma_fe` and `masto_fe` are configured. + +Frontends can access these settings at `/api/pleroma/frontend_configurations` + +To add your own configuration for PleromaFE, use it like this: + +```elixir +config :pleroma, :frontend_configurations, + pleroma_fe: %{ + theme: "pleroma-dark", + # ... see /priv/static/static/config.json for the available keys. +}, + masto_fe: %{ + showInstanceSpecificPanel: true + } +``` + +These settings **need to be complete**, they will override the defaults. + +NOTE: for versions < 1.0, you need to set [`:fe`](#fe) to false, as shown a few lines below. + +## :fe +__THIS IS DEPRECATED__ + +If you are using this method, please change it to the [`frontend_configurations`](#frontend_configurations) method. +Please **set this option to false** in your config like this: + +```elixir +config :pleroma, :fe, false +``` + +This section is used to configure Pleroma-FE, unless ``:managed_config`` in ``:instance`` is set to false. + +* `theme`: Which theme to use, they are defined in ``styles.json`` +* `logo`: URL of the logo, defaults to Pleroma’s logo +* `logo_mask`: Whether to use only the logo's shape as a mask (true) or as a regular image (false) +* `logo_margin`: What margin to use around the logo +* `background`: URL of the background, unless viewing a user profile with a background that is set +* `redirect_root_no_login`: relative URL which indicates where to redirect when a user isn’t logged in. +* `redirect_root_login`: relative URL which indicates where to redirect when a user is logged in. +* `show_instance_panel`: Whenether to show the instance’s specific panel. +* `scope_options_enabled`: Enable setting an notice visibility and subject/CW when posting +* `formatting_options_enabled`: Enable setting a formatting different than plain-text (ie. HTML, Markdown) when posting, relates to ``:instance, allowed_post_formats`` +* `collapse_message_with_subjects`: When a message has a subject(aka Content Warning), collapse it by default +* `hide_post_stats`: Hide notices statistics(repeats, favorites, …) +* `hide_user_stats`: Hide profile statistics(posts, posts per day, followers, followings, …) + +## :assets + +This section configures assets to be used with various frontends. Currently the only option +relates to mascots on the mastodon frontend + +* `mascots`: KeywordList of mascots, each element __MUST__ contain both a `url` and a + `mime_type` key. +* `default_mascot`: An element from `mascots` - This will be used as the default mascot + on MastoFE (default: `:pleroma_fox_tan`) + +## :mrf_simple +* `media_removal`: List of instances to remove medias from +* `media_nsfw`: List of instances to put medias as NSFW(sensitive) from +* `federated_timeline_removal`: List of instances to remove from Federated (aka The Whole Known Network) Timeline +* `reject`: List of instances to reject any activities from +* `accept`: List of instances to accept any activities from +* `report_removal`: List of instances to reject reports from +* `avatar_removal`: List of instances to strip avatars from +* `banner_removal`: List of instances to strip banners from + +## :mrf_subchain +This policy processes messages through an alternate pipeline when a given message matches certain criteria. +All criteria are configured as a map of regular expressions to lists of policy modules. + +* `match_actor`: Matches a series of regular expressions against the actor field. + +Example: + +``` +config :pleroma, :mrf_subchain, + match_actor: %{ + ~r/https:\/\/example.com/s => [Pleroma.Web.ActivityPub.MRF.DropPolicy] + } +``` + +## :mrf_rejectnonpublic +* `allow_followersonly`: whether to allow followers-only posts +* `allow_direct`: whether to allow direct messages + +## :mrf_hellthread +* `delist_threshold`: Number of mentioned users after which the message gets delisted (the message can still be seen, but it will not show up in public timelines and mentioned users won't get notifications about it). Set to 0 to disable. +* `reject_threshold`: Number of mentioned users after which the messaged gets rejected. Set to 0 to disable. + +## :mrf_keyword +* `reject`: A list of patterns which result in message being rejected, each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html) +* `federated_timeline_removal`: A list of patterns which result in message being removed from federated timelines (a.k.a unlisted), each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html) +* `replace`: A list of tuples containing `{pattern, replacement}`, `pattern` can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html) + +## :mrf_mention +* `actors`: A list of actors, for which to drop any posts mentioning. + +## :mrf_vocabulary +* `accept`: A list of ActivityStreams terms to accept. If empty, all supported messages are accepted. +* `reject`: A list of ActivityStreams terms to reject. If empty, no messages are rejected. + +## :media_proxy +* `enabled`: Enables proxying of remote media to the instance’s proxy +* `base_url`: The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts. +* `proxy_opts`: All options defined in `Pleroma.ReverseProxy` documentation, defaults to `[max_body_length: (25*1_048_576)]`. +* `whitelist`: List of domains to bypass the mediaproxy + +## :gopher +* `enabled`: Enables the gopher interface +* `ip`: IP address to bind to +* `port`: Port to bind to +* `dstport`: Port advertised in urls (optional, defaults to `port`) + +## Pleroma.Web.Endpoint +`Phoenix` endpoint configuration, all configuration options can be viewed [here](https://hexdocs.pm/phoenix/Phoenix.Endpoint.html#module-dynamic-configuration), only common options are listed here +* `http` - a list containing http protocol configuration, all configuration options can be viewed [here](https://hexdocs.pm/plug_cowboy/Plug.Cowboy.html#module-options), only common options are listed here. For deployment using docker, you need to set this to `[ip: {0,0,0,0}, port: 4000]` to make pleroma accessible from other containers (such as your nginx server). + - `ip` - a tuple consisting of 4 integers + - `port` +* `url` - a list containing the configuration for generating urls, accepts + - `host` - the host without the scheme and a post (e.g `example.com`, not `https://example.com:2020`) + - `scheme` - e.g `http`, `https` + - `port` + - `path` +* `extra_cookie_attrs` - a list of `Key=Value` strings to be added as non-standard cookie attributes. Defaults to `["SameSite=Lax"]`. See the [SameSite article](https://www.owasp.org/index.php/SameSite) on OWASP for more info. + + + +**Important note**: if you modify anything inside these lists, default `config.exs` values will be overwritten, which may result in breakage, to make sure this does not happen please copy the default value for the list from `config.exs` and modify/add only what you need + +Example: +```elixir +config :pleroma, Pleroma.Web.Endpoint, + url: [host: "example.com", port: 2020, scheme: "https"], + http: [ + # start copied from config.exs + dispatch: [ + {:_, + [ + {"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []}, + {"/websocket", Phoenix.Endpoint.CowboyWebSocket, + {Phoenix.Transports.WebSocket, + {Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, websocket_config}}}, + {:_, Phoenix.Endpoint.Cowboy2Handler, {Pleroma.Web.Endpoint, []}} + ]} + # end copied from config.exs + ], + port: 8080, + ip: {127, 0, 0, 1} + ] +``` + +This will make Pleroma listen on `127.0.0.1` port `8080` and generate urls starting with `https://example.com:2020` + +## :activitypub +* ``unfollow_blocked``: Whether blocks result in people getting unfollowed +* ``outgoing_blocks``: Whether to federate blocks to other instances +* ``deny_follow_blocked``: Whether to disallow following an account that has blocked the user in question +* ``sign_object_fetches``: Sign object fetches with HTTP signatures + +## :http_security +* ``enabled``: Whether the managed content security policy is enabled +* ``sts``: Whether to additionally send a `Strict-Transport-Security` header +* ``sts_max_age``: The maximum age for the `Strict-Transport-Security` header if sent +* ``ct_max_age``: The maximum age for the `Expect-CT` header if sent +* ``referrer_policy``: The referrer policy to use, either `"same-origin"` or `"no-referrer"` +* ``report_uri``: Adds the specified url to `report-uri` and `report-to` group in CSP header. + +## :mrf_user_allowlist + +The keys in this section are the domain names that the policy should apply to. +Each key should be assigned a list of users that should be allowed through by +their ActivityPub ID. + +An example: + +```elixir +config :pleroma, :mrf_user_allowlist, + "example.org": ["https://example.org/users/admin"] +``` + +## :web_push_encryption, :vapid_details + +Web Push Notifications configuration. You can use the mix task `mix web_push.gen.keypair` to generate it. + +* ``subject``: a mailto link for the administrative contact. It’s best if this email is not a personal email address, but rather a group email so that if a person leaves an organization, is unavailable for an extended period, or otherwise can’t respond, someone else on the list can. +* ``public_key``: VAPID public key +* ``private_key``: VAPID private key + +## Pleroma.Captcha +* `enabled`: Whether the captcha should be shown on registration +* `method`: The method/service to use for captcha +* `seconds_valid`: The time in seconds for which the captcha is valid + +### Pleroma.Captcha.Kocaptcha +Kocaptcha is a very simple captcha service with a single API endpoint, +the source code is here: https://github.com/koto-bank/kocaptcha. The default endpoint +`https://captcha.kotobank.ch` is hosted by the developer. + +* `endpoint`: the kocaptcha endpoint to use + +## :admin_token + +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. Example: + +```elixir +config :pleroma, :admin_token, "somerandomtoken" +``` + +You can then do + +```sh +curl "http://localhost:4000/api/pleroma/admin/invite_token?admin_token=somerandomtoken" +``` + +## :pleroma_job_queue + +[Pleroma Job Queue](https://git.pleroma.social/pleroma/pleroma_job_queue) configuration: a list of queues with maximum concurrent jobs. + +Pleroma has the following queues: + +* `federator_outgoing` - Outgoing federation +* `federator_incoming` - Incoming federation +* `mailer` - Email sender, see [`Pleroma.Emails.Mailer`](#pleroma-emails-mailer) +* `transmogrifier` - Transmogrifier +* `web_push` - Web push notifications +* `scheduled_activities` - Scheduled activities, see [`Pleroma.ScheduledActivities`](#pleromascheduledactivity) + +Example: + +```elixir +config :pleroma_job_queue, :queues, + federator_incoming: 50, + federator_outgoing: 50 +``` + +This config contains two queues: `federator_incoming` and `federator_outgoing`. Both have the `max_jobs` set to `50`. + +## Pleroma.Web.Federator.RetryQueue + +* `enabled`: If set to `true`, failed federation jobs will be retried +* `max_jobs`: The maximum amount of parallel federation jobs running at the same time. +* `initial_timeout`: The initial timeout in seconds +* `max_retries`: The maximum number of times a federation job is retried + +## Pleroma.Web.Metadata +* `providers`: a list of metadata providers to enable. Providers available: + * Pleroma.Web.Metadata.Providers.OpenGraph + * Pleroma.Web.Metadata.Providers.TwitterCard + * Pleroma.Web.Metadata.Providers.RelMe - add links from user bio with rel=me into the `
` as `` +* `unfurl_nsfw`: If set to `true` nsfw attachments will be shown in previews + +## :rich_media +* `enabled`: if enabled the instance will parse metadata from attached links to generate link previews +* `ignore_hosts`: list of hosts which will be ignored by the metadata parser. For example `["accounts.google.com", "xss.website"]`, defaults to `[]`. +* `ignore_tld`: list TLDs (top-level domains) which will ignore for parse metadata. default is ["local", "localdomain", "lan"] +* `parsers`: list of Rich Media parsers + +## :fetch_initial_posts +* `enabled`: if enabled, when a new user is federated with, fetch some of their latest posts +* `pages`: the amount of pages to fetch + +## :hackney_pools + +Advanced. Tweaks Hackney (http client) connections pools. + +There's three pools used: + +* `:federation` for the federation jobs. + You may want this pool max_connections to be at least equal to the number of federator jobs + retry queue jobs. +* `:media` for rich media, media proxy +* `:upload` for uploaded media (if using a remote uploader and `proxy_remote: true`) + +For each pool, the options are: + +* `max_connections` - how much connections a pool can hold +* `timeout` - retention duration for connections + +## :auto_linker + +Configuration for the `auto_linker` library: + +* `class: "auto-linker"` - specify the class to be added to the generated link. false to clear +* `rel: "noopener noreferrer"` - override the rel attribute. false to clear +* `new_window: true` - set to false to remove `target='_blank'` attribute +* `scheme: false` - Set to true to link urls with schema `http://google.com` +* `truncate: false` - Set to a number to truncate urls longer then the number. Truncated urls will end in `..` +* `strip_prefix: true` - Strip the scheme prefix +* `extra: false` - link urls with rarely used schemes (magnet, ipfs, irc, etc.) + +Example: + +```elixir +config :auto_linker, + opts: [ + scheme: true, + extra: true, + class: false, + strip_prefix: false, + new_window: false, + rel: false + ] +``` + +## Pleroma.ScheduledActivity + +* `daily_user_limit`: the number of scheduled activities a user is allowed to create in a single day (Default: `25`) +* `total_user_limit`: the number of scheduled activities a user is allowed to create in total (Default: `300`) +* `enabled`: whether scheduled activities are sent to the job queue to be executed + +## Pleroma.ActivityExpiration + +# `enabled`: whether expired activities will be sent to the job queue to be deleted + +## Pleroma.Web.Auth.Authenticator + +* `Pleroma.Web.Auth.PleromaAuthenticator`: default database authenticator +* `Pleroma.Web.Auth.LDAPAuthenticator`: LDAP authentication + +## :ldap + +Use LDAP for user authentication. When a user logs in to the Pleroma +instance, the name and password will be verified by trying to authenticate +(bind) to an LDAP server. If a user exists in the LDAP directory but there +is no account with the same name yet on the Pleroma instance then a new +Pleroma account will be created with the same name as the LDAP user name. + +* `enabled`: enables LDAP authentication +* `host`: LDAP server hostname +* `port`: LDAP port, e.g. 389 or 636 +* `ssl`: true to use SSL, usually implies the port 636 +* `sslopts`: additional SSL options +* `tls`: true to start TLS, usually implies the port 389 +* `tlsopts`: additional TLS options +* `base`: LDAP base, e.g. "dc=example,dc=com" +* `uid`: LDAP attribute name to authenticate the user, e.g. when "cn", the filter will be "cn=username,base" + +## BBS / SSH access + +To enable simple command line interface accessible over ssh, add a setting like this to your configuration file: + +```exs +app_dir = File.cwd! +priv_dir = Path.join([app_dir, "priv/ssh_keys"]) + +config :esshd, + enabled: true, + priv_dir: priv_dir, + handler: "Pleroma.BBS.Handler", + port: 10_022, + password_authenticator: "Pleroma.BBS.Authenticator" +``` + +Feel free to adjust the priv_dir and port number. Then you will have to create the key for the keys (in the example `priv/ssh_keys`) and create the host keys with `ssh-keygen -m PEM -N "" -b 2048 -t rsa -f ssh_host_rsa_key`. After restarting, you should be able to connect to your Pleroma instance with `ssh username@server -p $PORT` + +## :auth + +* `Pleroma.Web.Auth.PleromaAuthenticator`: default database authenticator +* `Pleroma.Web.Auth.LDAPAuthenticator`: LDAP authentication + +Authentication / authorization settings. + +* `auth_template`: authentication form template. By default it's `show.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/show.html.eex`. +* `oauth_consumer_template`: OAuth consumer mode authentication form template. By default it's `consumer.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex`. +* `oauth_consumer_strategies`: the list of enabled OAuth consumer strategies; by default it's set by `OAUTH_CONSUMER_STRATEGIES` environment variable. Each entry in this space-delimited string should be of format `` or `:` (e.g. `twitter` or `keycloak:ueberauth_keycloak_strategy` in case dependency is named differently than `ueberauth_`). + +## :email_notifications + +Email notifications settings. + + - digest - emails of "what you've missed" for users who have been + inactive for a while. + - active: globally enable or disable digest emails + - schedule: When to send digest email, in [crontab format](https://en.wikipedia.org/wiki/Cron). + "0 0 * * 0" is the default, meaning "once a week at midnight on Sunday morning" + - interval: Minimum interval between digest emails to one user + - inactivity_threshold: Minimum user inactivity threshold + +## Pleroma.Emails.UserEmail + +- `:logo` - a path to a custom logo. Set it to `nil` to use the default Pleroma logo. +- `:styling` - a map with color settings for email templates. + +## OAuth consumer mode + +OAuth consumer mode allows sign in / sign up via external OAuth providers (e.g. Twitter, Facebook, Google, Microsoft, etc.). +Implementation is based on Ueberauth; see the list of [available strategies](https://github.com/ueberauth/ueberauth/wiki/List-of-Strategies). + +Note: each strategy is shipped as a separate dependency; in order to get the strategies, run `OAUTH_CONSUMER_STRATEGIES="..." mix deps.get`, +e.g. `OAUTH_CONSUMER_STRATEGIES="twitter facebook google microsoft" mix deps.get`. +The server should also be started with `OAUTH_CONSUMER_STRATEGIES="..." mix phx.server` in case you enable any strategies. + +Note: each strategy requires separate setup (on external provider side and Pleroma side). Below are the guidelines on setting up most popular strategies. + +Note: make sure that `"SameSite=Lax"` is set in `extra_cookie_attrs` when you have this feature enabled. OAuth consumer mode will not work with `"SameSite=Strict"` + +* For Twitter, [register an app](https://developer.twitter.com/en/apps), configure callback URL to https:///oauth/twitter/callback + +* For Facebook, [register an app](https://developers.facebook.com/apps), configure callback URL to https:///oauth/facebook/callback, enable Facebook Login service at https://developers.facebook.com/apps//fb-login/settings/ + +* For Google, [register an app](https://console.developers.google.com), configure callback URL to https:///oauth/google/callback + +* For Microsoft, [register an app](https://portal.azure.com), configure callback URL to https:///oauth/microsoft/callback + +Once the app is configured on external OAuth provider side, add app's credentials and strategy-specific settings (if any — e.g. see Microsoft below) to `config/prod.secret.exs`, +per strategy's documentation (e.g. [ueberauth_twitter](https://github.com/ueberauth/ueberauth_twitter)). Example config basing on environment variables: + +```elixir +# Twitter +config :ueberauth, Ueberauth.Strategy.Twitter.OAuth, + consumer_key: System.get_env("TWITTER_CONSUMER_KEY"), + consumer_secret: System.get_env("TWITTER_CONSUMER_SECRET") + +# Facebook +config :ueberauth, Ueberauth.Strategy.Facebook.OAuth, + client_id: System.get_env("FACEBOOK_APP_ID"), + client_secret: System.get_env("FACEBOOK_APP_SECRET"), + redirect_uri: System.get_env("FACEBOOK_REDIRECT_URI") + +# Google +config :ueberauth, Ueberauth.Strategy.Google.OAuth, + client_id: System.get_env("GOOGLE_CLIENT_ID"), + client_secret: System.get_env("GOOGLE_CLIENT_SECRET"), + redirect_uri: System.get_env("GOOGLE_REDIRECT_URI") + +# Microsoft +config :ueberauth, Ueberauth.Strategy.Microsoft.OAuth, + client_id: System.get_env("MICROSOFT_CLIENT_ID"), + client_secret: System.get_env("MICROSOFT_CLIENT_SECRET") + +config :ueberauth, Ueberauth, + providers: [ + microsoft: {Ueberauth.Strategy.Microsoft, [callback_params: []]} + ] + +# Keycloak +# Note: make sure to add `keycloak:ueberauth_keycloak_strategy` entry to `OAUTH_CONSUMER_STRATEGIES` environment variable +keycloak_url = "https://publicly-reachable-keycloak-instance.org:8080" + +config :ueberauth, Ueberauth.Strategy.Keycloak.OAuth, + client_id: System.get_env("KEYCLOAK_CLIENT_ID"), + client_secret: System.get_env("KEYCLOAK_CLIENT_SECRET"), + site: keycloak_url, + authorize_url: "#{keycloak_url}/auth/realms/master/protocol/openid-connect/auth", + token_url: "#{keycloak_url}/auth/realms/master/protocol/openid-connect/token", + userinfo_url: "#{keycloak_url}/auth/realms/master/protocol/openid-connect/userinfo", + token_method: :post + +config :ueberauth, Ueberauth, + providers: [ + keycloak: {Ueberauth.Strategy.Keycloak, [uid_field: :email]} + ] +``` + +## OAuth 2.0 provider - :oauth2 + +Configure OAuth 2 provider capabilities: + +* `token_expires_in` - The lifetime in seconds of the access token. +* `issue_new_refresh_token` - Keeps old refresh token or generate new refresh token when to obtain an access token. +* `clean_expired_tokens` - Enable a background job to clean expired oauth tokens. Defaults to `false`. +* `clean_expired_tokens_interval` - Interval to run the job to clean expired tokens. Defaults to `86_400_000` (24 hours). + +## :emoji +* `shortcode_globs`: Location of custom emoji files. `*` can be used as a wildcard. Example `["/emoji/custom/**/*.png"]` +* `pack_extensions`: A list of file extensions for emojis, when no emoji.txt for a pack is present. Example `[".png", ".gif"]` +* `groups`: Emojis are ordered in groups (tags). This is an array of key-value pairs where the key is the groupname and the value the location or array of locations. `*` can be used as a wildcard. Example `[Custom: ["/emoji/*.png", "/emoji/custom/*.png"]]` +* `default_manifest`: Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download. Currently only one manifest can be added (no arrays). + +## Database options + +### RUM indexing for full text search +* `rum_enabled`: If RUM indexes should be used. Defaults to `false`. + +RUM indexes are an alternative indexing scheme that is not included in PostgreSQL by default. While they may eventually be mainlined, for now they have to be installed as a PostgreSQL extension from https://github.com/postgrespro/rum. + +Their advantage over the standard GIN indexes is that they allow efficient ordering of search results by timestamp, which makes search queries a lot faster on larger servers, by one or two orders of magnitude. They take up around 3 times as much space as GIN indexes. + +To enable them, both the `rum_enabled` flag has to be set and the following special migration has to be run: + +`mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/` + +This will probably take a long time. + +## :rate_limit + +This is an advanced feature and disabled by default. + +A keyword list of rate limiters where a key is a limiter name and value is the limiter configuration. The basic configuration is a tuple where: + +* The first element: `scale` (Integer). The time scale in milliseconds. +* The second element: `limit` (Integer). How many requests to limit in the time scale provided. + +It is also possible to have different limits for unauthenticated and authenticated users: the keyword value must be a list of two tuples where the first one is a config for unauthenticated users and the second one is for authenticated. + +See [`Pleroma.Plugs.RateLimiter`](Pleroma.Plugs.RateLimiter.html) documentation for examples. + +Supported rate limiters: + +* `:search` for the search requests (account & status search etc.) +* `:app_account_creation` for registering user accounts from the same IP address +* `:relations_actions` for actions on relations with all users (follow, unfollow) +* `:relation_id_action` for actions on relation with a specific user (follow, unfollow) +* `:statuses_actions` for create / delete / fav / unfav / reblog / unreblog actions on any statuses +* `:status_id_action` for fav / unfav or reblog / unreblog actions on the same status by the same user + +## :web_cache_ttl + +The expiration time for the web responses cache. Values should be in milliseconds or `nil` to disable expiration. + +Available caches: + +* `:activity_pub` - activity pub routes (except question activities). Defaults to `nil` (no expiration). +* `:activity_pub_question` - activity pub routes (question activities). Defaults to `30_000` (30 seconds). From 4da0da9aa46f0970735f398a1786902f4e3a86eb Mon Sep 17 00:00:00 2001 From: Alex S Date: Fri, 13 Sep 2019 19:13:04 +0300 Subject: [PATCH 067/272] don't track generated_config.md --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9591f9976..4e71a7df0 100644 --- a/.gitignore +++ b/.gitignore @@ -38,6 +38,7 @@ erl_crash.dump # Prevent committing docs files /priv/static/doc/* +docs/generated_config.md # Code test coverage /cover From ac4a748fad34c02647bf72e802cd9d74205681fe Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 13 Sep 2019 19:28:35 +0300 Subject: [PATCH 068/272] Disallow NULLs in deliveries --- lib/pleroma/delivery.ex | 1 + priv/repo/migrations/20190912065617_create_deliveries.exs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/delivery.ex b/lib/pleroma/delivery.ex index 38c148c34..29a1e5a77 100644 --- a/lib/pleroma/delivery.ex +++ b/lib/pleroma/delivery.ex @@ -23,6 +23,7 @@ defmodule Pleroma.Delivery do def changeset(delivery, params \\ %{}) do delivery |> cast(params, [:user_id, :object_id]) + |> validate_required([:user_id, :object_id]) |> foreign_key_constraint(:object_id) |> foreign_key_constraint(:user_id) |> unique_constraint(:user_id, name: :deliveries_user_id_object_id_index) diff --git a/priv/repo/migrations/20190912065617_create_deliveries.exs b/priv/repo/migrations/20190912065617_create_deliveries.exs index 92ca5650a..79071a799 100644 --- a/priv/repo/migrations/20190912065617_create_deliveries.exs +++ b/priv/repo/migrations/20190912065617_create_deliveries.exs @@ -3,8 +3,8 @@ defmodule Pleroma.Repo.Migrations.CreateDeliveries do def change do create_if_not_exists table(:deliveries) do - add(:object_id, references(:objects, type: :id)) - add(:user_id, references(:users, type: :uuid, on_delete: :delete_all)) + add(:object_id, references(:objects, type: :id), null: false) + add(:user_id, references(:users, type: :uuid, on_delete: :delete_all), null: false) end create_if_not_exists index(:deliveries, :object_id, name: :deliveries_object_id) create_if_not_exists(unique_index(:deliveries, [:user_id, :object_id])) From 5c5ebd38619bb853a58374918fd8983569ba7c0b Mon Sep 17 00:00:00 2001 From: rinpatch Date: Sat, 14 Sep 2019 01:50:15 +0300 Subject: [PATCH 069/272] Mastodon API: Respect post privacy in favourited/reblogged endpoints --- CHANGELOG.md | 1 + .../controllers/mastodon_api_controller.ex | 4 ++ .../mastodon_api_controller_test.exs | 53 ++++++++++++++++++- 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fe3bf687..0c5e43123 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Security - OStatus: eliminate the possibility of a protocol downgrade attack. - OStatus: prevent following locked accounts, bypassing the approval process. +- Mastodon API: respect post privacy in `/api/v1/statuses/:id/{favourited,reblogged}_by` ### Removed - **Breaking:** GNU Social API with Qvitter extensions support diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index 0940e07a6..060137b80 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -842,6 +842,7 @@ def get_mascot(%{assigns: %{user: user}} = conn, _params) do def favourited_by(%{assigns: %{user: user}} = conn, %{"id" => id}) do with %Activity{} = activity <- Activity.get_by_id_with_object(id), + {:visible, true} <- {:visible, Visibility.visible_for_user?(activity, user)}, %Object{data: %{"likes" => likes}} <- Object.normalize(activity) do q = from(u in User, where: u.ap_id in ^likes) @@ -853,12 +854,14 @@ def favourited_by(%{assigns: %{user: user}} = conn, %{"id" => id}) do |> put_view(AccountView) |> render("accounts.json", %{for: user, users: users, as: :user}) else + {:visible, false} -> {:error, :not_found} _ -> json(conn, []) end end def reblogged_by(%{assigns: %{user: user}} = conn, %{"id" => id}) do with %Activity{} = activity <- Activity.get_by_id_with_object(id), + {:visible, true} <- {:visible, Visibility.visible_for_user?(activity, user)}, %Object{data: %{"announcements" => announces}} <- Object.normalize(activity) do q = from(u in User, where: u.ap_id in ^announces) @@ -870,6 +873,7 @@ def reblogged_by(%{assigns: %{user: user}} = conn, %{"id" => id}) do |> put_view(AccountView) |> render("accounts.json", %{for: user, users: users, as: :user}) else + {:visible, false} -> {:error, :not_found} _ -> json(conn, []) end end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 806ae7e69..c9bce1439 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -3698,7 +3698,7 @@ test "returns 404 when poll is private and not available for user", %{conn: conn build_conn() |> assign(:user, user) - [conn: conn, activity: activity] + [conn: conn, activity: activity, user: user] end test "returns users who have favorited the status", %{conn: conn, activity: activity} do @@ -3758,6 +3758,32 @@ test "does not fail on an unauthenticated request", %{conn: conn, activity: acti [%{"id" => id}] = response assert id == other_user.id end + + test "requires authentifucation for private posts", %{conn: conn, user: user} do + other_user = insert(:user) + + {:ok, activity} = + CommonAPI.post(user, %{ + "status" => "@#{other_user.nickname} wanna get some #cofe together?", + "visibility" => "direct" + }) + + {:ok, _, _} = CommonAPI.favorite(activity.id, other_user) + + conn + |> assign(:user, nil) + |> get("/api/v1/statuses/#{activity.id}/favourited_by") + |> json_response(404) + + response = + build_conn() + |> assign(:user, other_user) + |> get("/api/v1/statuses/#{activity.id}/favourited_by") + |> json_response(200) + + [%{"id" => id}] = response + assert id == other_user.id + end end describe "GET /api/v1/statuses/:id/reblogged_by" do @@ -3769,7 +3795,7 @@ test "does not fail on an unauthenticated request", %{conn: conn, activity: acti build_conn() |> assign(:user, user) - [conn: conn, activity: activity] + [conn: conn, activity: activity, user: user] end test "returns users who have reblogged the status", %{conn: conn, activity: activity} do @@ -3829,6 +3855,29 @@ test "does not fail on an unauthenticated request", %{conn: conn, activity: acti [%{"id" => id}] = response assert id == other_user.id end + + test "requires authentifucation for private posts", %{conn: conn, user: user} do + other_user = insert(:user) + + {:ok, activity} = + CommonAPI.post(user, %{ + "status" => "@#{other_user.nickname} wanna get some #cofe together?", + "visibility" => "direct" + }) + + conn + |> assign(:user, nil) + |> get("/api/v1/statuses/#{activity.id}/reblogged_by") + |> json_response(404) + + response = + build_conn() + |> assign(:user, other_user) + |> get("/api/v1/statuses/#{activity.id}/reblogged_by") + |> json_response(200) + + assert [] == response + end end describe "POST /auth/password, with valid parameters" do From 85b6144ffd9e96fc79608847fe739a40ca094207 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Sat, 14 Sep 2019 10:46:35 +0000 Subject: [PATCH 070/272] Apply suggestion to test/web/mastodon_api/mastodon_api_controller_test.exs --- test/web/mastodon_api/mastodon_api_controller_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index c9bce1439..013a838b8 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -3759,7 +3759,7 @@ test "does not fail on an unauthenticated request", %{conn: conn, activity: acti assert id == other_user.id end - test "requires authentifucation for private posts", %{conn: conn, user: user} do + test "requires authentification for private posts", %{conn: conn, user: user} do other_user = insert(:user) {:ok, activity} = From a78a7ee455c4e8f4c2aab15a15626237b2b90399 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Sat, 14 Sep 2019 10:50:08 +0000 Subject: [PATCH 071/272] Apply suggestion to test/web/mastodon_api/mastodon_api_controller_test.exs --- test/web/mastodon_api/mastodon_api_controller_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 013a838b8..061c3a8ad 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -3856,7 +3856,7 @@ test "does not fail on an unauthenticated request", %{conn: conn, activity: acti assert id == other_user.id end - test "requires authentifucation for private posts", %{conn: conn, user: user} do + test "requires authentification for private posts", %{conn: conn, user: user} do other_user = insert(:user) {:ok, activity} = From b870ae08fd19acd7c40e4353e657e6a1ed1b34c5 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Sat, 14 Sep 2019 19:31:20 +0700 Subject: [PATCH 072/272] Fix `Activity.all_by_actor_and_id/2` test --- test/activity_test.exs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test/activity_test.exs b/test/activity_test.exs index f9f789a76..275cab81e 100644 --- a/test/activity_test.exs +++ b/test/activity_test.exs @@ -213,7 +213,11 @@ test "all_by_actor_and_id/2" do assert [] == Activity.all_by_actor_and_id(user, []) - assert [%Activity{id: ^id2}, %Activity{id: ^id1}] = - Activity.all_by_actor_and_id(user.ap_id, [id1, id2]) + activities = + user.ap_id + |> Activity.all_by_actor_and_id([id1, id2]) + |> Enum.sort(&(&1.id < &2.id)) + + assert [%Activity{id: ^id1}, %Activity{id: ^id2}] = activities end end From e127b9ab6d01da48ebad188d2b9fcf7cb8a41578 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sat, 14 Sep 2019 16:28:59 +0300 Subject: [PATCH 073/272] [#1149] Rewritten readme as config/description.exs. --- config/description.exs | 198 ++++++++++++++++++++++++++--------------- 1 file changed, 126 insertions(+), 72 deletions(-) diff --git a/config/description.exs b/config/description.exs index c5ae63915..be5eb0cc3 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1778,87 +1778,141 @@ group: :pleroma_job_queue, key: :queues, type: :group, - description: "Pleroma Job Queue configuration: a list of queues with maximum concurrent jobs", - children: [ - %{ - key: :federator_outgoing, - type: :integer, - description: "Outgoing federation queue", - suggestions: [50] - }, - %{ - key: :federator_incoming, - type: :integer, - description: "Incoming federation queue", - suggestions: [50] - }, - %{ - key: :mailer, - type: :integer, - description: "Email sender queue, see Pleroma.Emails.Mailer", - suggestions: [10] - }, - %{ - key: :web_push, - type: :integer, - description: "Web push notifications queue", - suggestions: [50] - }, - %{ - key: :transmogrifier, - type: :integer, - description: "Transmogrifier queue", - suggestions: [20] - }, - %{ - key: :scheduled_activities, - type: :integer, - description: "Scheduled activities queue, see Pleroma.ScheduledActivities", - suggestions: [10] - }, - %{ - key: :activity_expiration, - type: :integer, - description: "Activity expiration queue", - suggestions: [10] - }, - %{ - key: :background, - type: :integer, - description: "Background queue", - suggestions: [5] - } - ] + description: "[Deprecated] Replaced with `Oban`/`:queues` (keeping the same format)", + children: [] }, %{ group: :pleroma, key: Pleroma.Web.Federator.RetryQueue, type: :group, - description: "", + description: "[Deprecated] See `Oban` and `:workers` sections for configuration notes", children: [ - %{ - key: :enabled, - type: :boolean, - description: "If set to true, failed federation jobs will be retried", - suggestions: [true, false] - }, - %{ - key: :max_jobs, - type: :integer, - description: "The maximum amount of parallel federation jobs running at the same time", - suggestions: [20] - }, - %{ - key: :initial_timeout, - type: :integer, - description: "The initial timeout in seconds", - suggestions: [30] - }, %{ key: :max_retries, type: :integer, - description: "The maximum number of times a federation job is retried", - suggestions: [5] + description: "[Deprecated] Replaced as `Oban`/`:queues`/`:outgoing_federation` value", + suggestions: [] + } + ] + }, + %{ + group: :pleroma, + key: Oban, + type: :group, + description: """ + [Oban](https://github.com/sorentwo/oban) asynchronous job processor configuration. + + Note: if you are running PostgreSQL in [`silent_mode`](https://postgresqlco.nf/en/doc/param/silent_mode?version=9.1), + it's advised to set [`log_destination`](https://postgresqlco.nf/en/doc/param/log_destination?version=9.1) to `syslog`, + otherwise `postmaster.log` file may grow because of "you don't own a lock of type ShareLock" warnings + (see https://github.com/sorentwo/oban/issues/52). + """, + children: [ + %{ + key: :repo, + type: :module, + description: "Application's Ecto repo", + suggestions: [Pleroma.Repo] + }, + %{ + key: :verbose, + type: :boolean, + description: "Logs verbose mode", + suggestions: [false, true] + }, + %{ + key: :prune, + type: [:atom, :tuple], + description: + "Non-retryable jobs [pruning settings](https://github.com/sorentwo/oban#pruning)", + suggestions: [:disabled, {:maxlen, 1500}, {:maxage, 60 * 60}] + }, + %{ + key: :queues, + type: :keyword, + description: + "Background jobs queues (keys: queues, values: max numbers of concurrent jobs)", + suggestions: [ + [ + activity_expiration: 10, + background: 5, + federator_incoming: 50, + federator_outgoing: 50, + mailer: 10, + scheduled_activities: 10, + transmogrifier: 20, + web_push: 50 + ] + ], + children: [ + %{ + key: :activity_expiration, + type: :integer, + description: "Activity expiration queue", + suggestions: [10] + }, + %{ + key: :background, + type: :integer, + description: "Background queue", + suggestions: [5] + }, + %{ + key: :federator_incoming, + type: :integer, + description: "Incoming federation queue", + suggestions: [50] + }, + %{ + key: :federator_outgoing, + type: :integer, + description: "Outgoing federation queue", + suggestions: [50] + }, + %{ + key: :mailer, + type: :integer, + description: "Email sender queue, see Pleroma.Emails.Mailer", + suggestions: [10] + }, + %{ + key: :scheduled_activities, + type: :integer, + description: "Scheduled activities queue, see Pleroma.ScheduledActivities", + suggestions: [10] + }, + %{ + key: :transmogrifier, + type: :integer, + description: "Transmogrifier queue", + suggestions: [20] + }, + %{ + key: :web_push, + type: :integer, + description: "Web push notifications queue", + suggestions: [50] + } + ] + } + ] + }, + %{ + group: :pleroma, + key: :workers, + type: :group, + description: "Includes custom worker options not interpretable directly by `Oban`", + children: [ + %{ + key: :retries, + type: :keyword, + description: "Max retry attempts for failed jobs, per `Oban` queue", + suggestions: [ + [ + federator_incoming: 5, + federator_outgoing: 5 + ] + ] } ] }, From 3b8ec98b0e3b3fb2bd333f3be724676c4821366f Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Sun, 15 Sep 2019 10:15:57 +0300 Subject: [PATCH 074/272] [#1149] Reinstated docs/config.md changes. --- docs/config.md | 1456 +++++++++++++++++++++++++----------------------- 1 file changed, 755 insertions(+), 701 deletions(-) diff --git a/docs/config.md b/docs/config.md index 066547bb1..270d7fcea 100644 --- a/docs/config.md +++ b/docs/config.md @@ -1,701 +1,755 @@ -# Configuration - -This file describe the configuration, it is recommended to edit the relevant *.secret.exs file instead of the others founds in the ``config`` directory. -If you run Pleroma with ``MIX_ENV=prod`` the file is ``prod.secret.exs``, otherwise it is ``dev.secret.exs``. - -## Pleroma.Upload -* `uploader`: Select which `Pleroma.Uploaders` to use -* `filters`: List of `Pleroma.Upload.Filter` to use. -* `link_name`: When enabled Pleroma will add a `name` parameter to the url of the upload, for example `https://instance.tld/media/corndog.png?name=corndog.png`. This is needed to provide the correct filename in Content-Disposition headers when using filters like `Pleroma.Upload.Filter.Dedupe` -* `base_url`: The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host. -* `proxy_remote`: If you're using a remote uploader, Pleroma will proxy media requests instead of redirecting to it. -* `proxy_opts`: Proxy options, see `Pleroma.ReverseProxy` documentation. - -Note: `strip_exif` has been replaced by `Pleroma.Upload.Filter.Mogrify`. - -## Pleroma.Uploaders.Local -* `uploads`: Which directory to store the user-uploads in, relative to pleroma’s working directory - -## Pleroma.Uploaders.S3 -* `bucket`: S3 bucket name -* `bucket_namespace`: S3 bucket namespace -* `public_endpoint`: S3 endpoint that the user finally accesses(ex. "https://s3.dualstack.ap-northeast-1.amazonaws.com") -* `truncated_namespace`: If you use S3 compatible service such as Digital Ocean Spaces or CDN, set folder name or "" etc. -For example, when using CDN to S3 virtual host format, set "". -At this time, write CNAME to CDN in public_endpoint. - -## Pleroma.Upload.Filter.Mogrify - -* `args`: List of actions for the `mogrify` command like `"strip"` or `["strip", "auto-orient", {"implode", "1"}]`. - -## Pleroma.Upload.Filter.Dedupe - -No specific configuration. - -## Pleroma.Upload.Filter.AnonymizeFilename - -This filter replaces the filename (not the path) of an upload. For complete obfuscation, add -`Pleroma.Upload.Filter.Dedupe` before AnonymizeFilename. - -* `text`: Text to replace filenames in links. If empty, `{random}.extension` will be used. You can get the original filename extension by using `{extension}`, for example `custom-file-name.{extension}`. - -## Pleroma.Emails.Mailer -* `adapter`: one of the mail adapters listed in [Swoosh readme](https://github.com/swoosh/swoosh#adapters), or `Swoosh.Adapters.Local` for in-memory mailbox. -* `api_key` / `password` and / or other adapter-specific settings, per the above documentation. -* `enabled`: Allows enable/disable send emails. Default: `false`. - -An example for Sendgrid adapter: - -```elixir -config :pleroma, Pleroma.Emails.Mailer, - adapter: Swoosh.Adapters.Sendgrid, - api_key: "YOUR_API_KEY" -``` - -An example for SMTP adapter: - -```elixir -config :pleroma, Pleroma.Emails.Mailer, - adapter: Swoosh.Adapters.SMTP, - relay: "smtp.gmail.com", - username: "YOUR_USERNAME@gmail.com", - password: "YOUR_SMTP_PASSWORD", - port: 465, - ssl: true, - tls: :always, - auth: :always -``` - -## :uri_schemes -* `valid_schemes`: List of the scheme part that is considered valid to be an URL - -## :instance -* `name`: The instance’s name -* `email`: Email used to reach an Administrator/Moderator of the instance -* `notify_email`: Email used for notifications. -* `description`: The instance’s description, can be seen in nodeinfo and ``/api/v1/instance`` -* `limit`: Posts character limit (CW/Subject included in the counter) -* `remote_limit`: Hard character limit beyond which remote posts will be dropped. -* `upload_limit`: File size limit of uploads (except for avatar, background, banner) -* `avatar_upload_limit`: File size limit of user’s profile avatars -* `background_upload_limit`: File size limit of user’s profile backgrounds -* `banner_upload_limit`: File size limit of user’s profile banners -* `poll_limits`: A map with poll limits for **local** polls - * `max_options`: Maximum number of options - * `max_option_chars`: Maximum number of characters per option - * `min_expiration`: Minimum expiration time (in seconds) - * `max_expiration`: Maximum expiration time (in seconds) -* `registrations_open`: Enable registrations for anyone, invitations can be enabled when false. -* `invites_enabled`: Enable user invitations for admins (depends on `registrations_open: false`). -* `account_activation_required`: Require users to confirm their emails before signing in. -* `federating`: Enable federation with other instances -* `federation_incoming_replies_max_depth`: Max. depth of reply-to activities fetching on incoming federation, to prevent out-of-memory situations while fetching very long threads. If set to `nil`, threads of any depth will be fetched. Lower this value if you experience out-of-memory crashes. -* `federation_reachability_timeout_days`: Timeout (in days) of each external federation target being unreachable prior to pausing federating to it. -* `allow_relay`: Enable Pleroma’s Relay, which makes it possible to follow a whole instance -* `rewrite_policy`: Message Rewrite Policy, either one or a list. Here are the ones available by default: - * `Pleroma.Web.ActivityPub.MRF.NoOpPolicy`: Doesn’t modify activities (default) - * `Pleroma.Web.ActivityPub.MRF.DropPolicy`: Drops all activities. It generally doesn’t makes sense to use in production - * `Pleroma.Web.ActivityPub.MRF.SimplePolicy`: Restrict the visibility of activities from certains instances (See ``:mrf_simple`` section) - * `Pleroma.Web.ActivityPub.MRF.TagPolicy`: Applies policies to individual users based on tags, which can be set using pleroma-fe/admin-fe/any other app that supports Pleroma Admin API. For example it allows marking posts from individual users nsfw (sensitive) - * `Pleroma.Web.ActivityPub.MRF.SubchainPolicy`: Selectively runs other MRF policies when messages match (see ``:mrf_subchain`` section) - * `Pleroma.Web.ActivityPub.MRF.RejectNonPublic`: Drops posts with non-public visibility settings (See ``:mrf_rejectnonpublic`` section) - * `Pleroma.Web.ActivityPub.MRF.EnsureRePrepended`: Rewrites posts to ensure that replies to posts with subjects do not have an identical subject and instead begin with re:. - * `Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy`: Rejects posts from likely spambots by rejecting posts from new users that contain links. - * `Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy`: Crawls attachments using their MediaProxy URLs so that the MediaProxy cache is primed. - * `Pleroma.Web.ActivityPub.MRF.MentionPolicy`: Drops posts mentioning configurable users. (see `:mrf_mention` section) - * `Pleroma.Web.ActivityPub.MRF.VocabularyPolicy`: Restricts activities to a configured set of vocabulary. (see `:mrf_vocabulary` section) -* `public`: Makes the client API in authentificated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network. -* `quarantined_instances`: List of ActivityPub instances where private(DMs, followers-only) activities will not be send. -* `managed_config`: Whenether the config for pleroma-fe is configured in this config or in ``static/config.json`` -* `allowed_post_formats`: MIME-type list of formats allowed to be posted (transformed into HTML) -* `mrf_transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo). -* `mrf_transparency_exclusions`: Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value. -* `scope_copy`: Copy the scope (private/unlisted/public) in replies to posts by default. -* `subject_line_behavior`: Allows changing the default behaviour of subject lines in replies. Valid values: - * "email": Copy and preprend re:, as in email. - * "masto": Copy verbatim, as in Mastodon. - * "noop": Don't copy the subject. -* `always_show_subject_input`: When set to false, auto-hide the subject field when it's empty. -* `extended_nickname_format`: Set to `true` to use extended local nicknames format (allows underscores/dashes). This will break federation with - older software for theses nicknames. -* `max_pinned_statuses`: The maximum number of pinned statuses. `0` will disable the feature. -* `autofollowed_nicknames`: Set to nicknames of (local) users that every new user should automatically follow. -* `no_attachment_links`: Set to true to disable automatically adding attachment link text to statuses -* `welcome_message`: A message that will be send to a newly registered users as a direct message. -* `welcome_user_nickname`: The nickname of the local user that sends the welcome message. -* `max_report_comment_size`: The maximum size of the report comment (Default: `1000`) -* `safe_dm_mentions`: If set to true, only mentions at the beginning of a post will be used to address people in direct messages. This is to prevent accidental mentioning of people when talking about them (e.g. "@friend hey i really don't like @enemy"). Default: `false`. -* `healthcheck`: If set to true, system data will be shown on ``/api/pleroma/healthcheck``. -* `remote_post_retention_days`: The default amount of days to retain remote posts when pruning the database. -* `user_bio_length`: A user bio maximum length (default: `5000`) -* `user_name_length`: A user name maximum length (default: `100`) -* `skip_thread_containment`: Skip filter out broken threads. The default is `false`. -* `limit_to_local_content`: Limit unauthenticated users to search for local statutes and users only. Possible values: `:unauthenticated`, `:all` and `false`. The default is `:unauthenticated`. -* `dynamic_configuration`: Allow transferring configuration to DB with the subsequent customization from Admin api. -* `max_account_fields`: The maximum number of custom fields in the user profile (default: `10`) -* `max_remote_account_fields`: The maximum number of custom fields in the remote user profile (default: `20`) -* `account_field_name_length`: An account field name maximum length (default: `512`) -* `account_field_value_length`: An account field value maximum length (default: `512`) -* `external_user_synchronization`: Enabling following/followers counters synchronization for external users. - - - -## :logger -* `backends`: `:console` is used to send logs to stdout, `{ExSyslogger, :ex_syslogger}` to log to syslog, and `Quack.Logger` to log to Slack - -An example to enable ONLY ExSyslogger (f/ex in ``prod.secret.exs``) with info and debug suppressed: -```elixir -config :logger, - backends: [{ExSyslogger, :ex_syslogger}] - -config :logger, :ex_syslogger, - level: :warn -``` - -Another example, keeping console output and adding the pid to syslog output: -```elixir -config :logger, - backends: [:console, {ExSyslogger, :ex_syslogger}] - -config :logger, :ex_syslogger, - level: :warn, - option: [:pid, :ndelay] -``` - -See: [logger’s documentation](https://hexdocs.pm/logger/Logger.html) and [ex_syslogger’s documentation](https://hexdocs.pm/ex_syslogger/) - -An example of logging info to local syslog, but warn to a Slack channel: -```elixir -config :logger, - backends: [ {ExSyslogger, :ex_syslogger}, Quack.Logger ], - level: :info - -config :logger, :ex_syslogger, - level: :info, - ident: "pleroma", - format: "$metadata[$level] $message" - -config :quack, - level: :warn, - meta: [:all], - webhook_url: "https://hooks.slack.com/services/YOUR-API-KEY-HERE" -``` - -See the [Quack Github](https://github.com/azohra/quack) for more details - -## :frontend_configurations - -This can be used to configure a keyword list that keeps the configuration data for any kind of frontend. By default, settings for `pleroma_fe` and `masto_fe` are configured. - -Frontends can access these settings at `/api/pleroma/frontend_configurations` - -To add your own configuration for PleromaFE, use it like this: - -```elixir -config :pleroma, :frontend_configurations, - pleroma_fe: %{ - theme: "pleroma-dark", - # ... see /priv/static/static/config.json for the available keys. -}, - masto_fe: %{ - showInstanceSpecificPanel: true - } -``` - -These settings **need to be complete**, they will override the defaults. - -NOTE: for versions < 1.0, you need to set [`:fe`](#fe) to false, as shown a few lines below. - -## :fe -__THIS IS DEPRECATED__ - -If you are using this method, please change it to the [`frontend_configurations`](#frontend_configurations) method. -Please **set this option to false** in your config like this: - -```elixir -config :pleroma, :fe, false -``` - -This section is used to configure Pleroma-FE, unless ``:managed_config`` in ``:instance`` is set to false. - -* `theme`: Which theme to use, they are defined in ``styles.json`` -* `logo`: URL of the logo, defaults to Pleroma’s logo -* `logo_mask`: Whether to use only the logo's shape as a mask (true) or as a regular image (false) -* `logo_margin`: What margin to use around the logo -* `background`: URL of the background, unless viewing a user profile with a background that is set -* `redirect_root_no_login`: relative URL which indicates where to redirect when a user isn’t logged in. -* `redirect_root_login`: relative URL which indicates where to redirect when a user is logged in. -* `show_instance_panel`: Whenether to show the instance’s specific panel. -* `scope_options_enabled`: Enable setting an notice visibility and subject/CW when posting -* `formatting_options_enabled`: Enable setting a formatting different than plain-text (ie. HTML, Markdown) when posting, relates to ``:instance, allowed_post_formats`` -* `collapse_message_with_subjects`: When a message has a subject(aka Content Warning), collapse it by default -* `hide_post_stats`: Hide notices statistics(repeats, favorites, …) -* `hide_user_stats`: Hide profile statistics(posts, posts per day, followers, followings, …) - -## :assets - -This section configures assets to be used with various frontends. Currently the only option -relates to mascots on the mastodon frontend - -* `mascots`: KeywordList of mascots, each element __MUST__ contain both a `url` and a - `mime_type` key. -* `default_mascot`: An element from `mascots` - This will be used as the default mascot - on MastoFE (default: `:pleroma_fox_tan`) - -## :mrf_simple -* `media_removal`: List of instances to remove medias from -* `media_nsfw`: List of instances to put medias as NSFW(sensitive) from -* `federated_timeline_removal`: List of instances to remove from Federated (aka The Whole Known Network) Timeline -* `reject`: List of instances to reject any activities from -* `accept`: List of instances to accept any activities from -* `report_removal`: List of instances to reject reports from -* `avatar_removal`: List of instances to strip avatars from -* `banner_removal`: List of instances to strip banners from - -## :mrf_subchain -This policy processes messages through an alternate pipeline when a given message matches certain criteria. -All criteria are configured as a map of regular expressions to lists of policy modules. - -* `match_actor`: Matches a series of regular expressions against the actor field. - -Example: - -``` -config :pleroma, :mrf_subchain, - match_actor: %{ - ~r/https:\/\/example.com/s => [Pleroma.Web.ActivityPub.MRF.DropPolicy] - } -``` - -## :mrf_rejectnonpublic -* `allow_followersonly`: whether to allow followers-only posts -* `allow_direct`: whether to allow direct messages - -## :mrf_hellthread -* `delist_threshold`: Number of mentioned users after which the message gets delisted (the message can still be seen, but it will not show up in public timelines and mentioned users won't get notifications about it). Set to 0 to disable. -* `reject_threshold`: Number of mentioned users after which the messaged gets rejected. Set to 0 to disable. - -## :mrf_keyword -* `reject`: A list of patterns which result in message being rejected, each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html) -* `federated_timeline_removal`: A list of patterns which result in message being removed from federated timelines (a.k.a unlisted), each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html) -* `replace`: A list of tuples containing `{pattern, replacement}`, `pattern` can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html) - -## :mrf_mention -* `actors`: A list of actors, for which to drop any posts mentioning. - -## :mrf_vocabulary -* `accept`: A list of ActivityStreams terms to accept. If empty, all supported messages are accepted. -* `reject`: A list of ActivityStreams terms to reject. If empty, no messages are rejected. - -## :media_proxy -* `enabled`: Enables proxying of remote media to the instance’s proxy -* `base_url`: The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts. -* `proxy_opts`: All options defined in `Pleroma.ReverseProxy` documentation, defaults to `[max_body_length: (25*1_048_576)]`. -* `whitelist`: List of domains to bypass the mediaproxy - -## :gopher -* `enabled`: Enables the gopher interface -* `ip`: IP address to bind to -* `port`: Port to bind to -* `dstport`: Port advertised in urls (optional, defaults to `port`) - -## Pleroma.Web.Endpoint -`Phoenix` endpoint configuration, all configuration options can be viewed [here](https://hexdocs.pm/phoenix/Phoenix.Endpoint.html#module-dynamic-configuration), only common options are listed here -* `http` - a list containing http protocol configuration, all configuration options can be viewed [here](https://hexdocs.pm/plug_cowboy/Plug.Cowboy.html#module-options), only common options are listed here. For deployment using docker, you need to set this to `[ip: {0,0,0,0}, port: 4000]` to make pleroma accessible from other containers (such as your nginx server). - - `ip` - a tuple consisting of 4 integers - - `port` -* `url` - a list containing the configuration for generating urls, accepts - - `host` - the host without the scheme and a post (e.g `example.com`, not `https://example.com:2020`) - - `scheme` - e.g `http`, `https` - - `port` - - `path` -* `extra_cookie_attrs` - a list of `Key=Value` strings to be added as non-standard cookie attributes. Defaults to `["SameSite=Lax"]`. See the [SameSite article](https://www.owasp.org/index.php/SameSite) on OWASP for more info. - - - -**Important note**: if you modify anything inside these lists, default `config.exs` values will be overwritten, which may result in breakage, to make sure this does not happen please copy the default value for the list from `config.exs` and modify/add only what you need - -Example: -```elixir -config :pleroma, Pleroma.Web.Endpoint, - url: [host: "example.com", port: 2020, scheme: "https"], - http: [ - # start copied from config.exs - dispatch: [ - {:_, - [ - {"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []}, - {"/websocket", Phoenix.Endpoint.CowboyWebSocket, - {Phoenix.Transports.WebSocket, - {Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, websocket_config}}}, - {:_, Phoenix.Endpoint.Cowboy2Handler, {Pleroma.Web.Endpoint, []}} - ]} - # end copied from config.exs - ], - port: 8080, - ip: {127, 0, 0, 1} - ] -``` - -This will make Pleroma listen on `127.0.0.1` port `8080` and generate urls starting with `https://example.com:2020` - -## :activitypub -* ``unfollow_blocked``: Whether blocks result in people getting unfollowed -* ``outgoing_blocks``: Whether to federate blocks to other instances -* ``deny_follow_blocked``: Whether to disallow following an account that has blocked the user in question -* ``sign_object_fetches``: Sign object fetches with HTTP signatures - -## :http_security -* ``enabled``: Whether the managed content security policy is enabled -* ``sts``: Whether to additionally send a `Strict-Transport-Security` header -* ``sts_max_age``: The maximum age for the `Strict-Transport-Security` header if sent -* ``ct_max_age``: The maximum age for the `Expect-CT` header if sent -* ``referrer_policy``: The referrer policy to use, either `"same-origin"` or `"no-referrer"` -* ``report_uri``: Adds the specified url to `report-uri` and `report-to` group in CSP header. - -## :mrf_user_allowlist - -The keys in this section are the domain names that the policy should apply to. -Each key should be assigned a list of users that should be allowed through by -their ActivityPub ID. - -An example: - -```elixir -config :pleroma, :mrf_user_allowlist, - "example.org": ["https://example.org/users/admin"] -``` - -## :web_push_encryption, :vapid_details - -Web Push Notifications configuration. You can use the mix task `mix web_push.gen.keypair` to generate it. - -* ``subject``: a mailto link for the administrative contact. It’s best if this email is not a personal email address, but rather a group email so that if a person leaves an organization, is unavailable for an extended period, or otherwise can’t respond, someone else on the list can. -* ``public_key``: VAPID public key -* ``private_key``: VAPID private key - -## Pleroma.Captcha -* `enabled`: Whether the captcha should be shown on registration -* `method`: The method/service to use for captcha -* `seconds_valid`: The time in seconds for which the captcha is valid - -### Pleroma.Captcha.Kocaptcha -Kocaptcha is a very simple captcha service with a single API endpoint, -the source code is here: https://github.com/koto-bank/kocaptcha. The default endpoint -`https://captcha.kotobank.ch` is hosted by the developer. - -* `endpoint`: the kocaptcha endpoint to use - -## :admin_token - -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. Example: - -```elixir -config :pleroma, :admin_token, "somerandomtoken" -``` - -You can then do - -```sh -curl "http://localhost:4000/api/pleroma/admin/invite_token?admin_token=somerandomtoken" -``` - -## :pleroma_job_queue - -[Pleroma Job Queue](https://git.pleroma.social/pleroma/pleroma_job_queue) configuration: a list of queues with maximum concurrent jobs. - -Pleroma has the following queues: - -* `federator_outgoing` - Outgoing federation -* `federator_incoming` - Incoming federation -* `mailer` - Email sender, see [`Pleroma.Emails.Mailer`](#pleroma-emails-mailer) -* `transmogrifier` - Transmogrifier -* `web_push` - Web push notifications -* `scheduled_activities` - Scheduled activities, see [`Pleroma.ScheduledActivities`](#pleromascheduledactivity) - -Example: - -```elixir -config :pleroma_job_queue, :queues, - federator_incoming: 50, - federator_outgoing: 50 -``` - -This config contains two queues: `federator_incoming` and `federator_outgoing`. Both have the `max_jobs` set to `50`. - -## Pleroma.Web.Federator.RetryQueue - -* `enabled`: If set to `true`, failed federation jobs will be retried -* `max_jobs`: The maximum amount of parallel federation jobs running at the same time. -* `initial_timeout`: The initial timeout in seconds -* `max_retries`: The maximum number of times a federation job is retried - -## Pleroma.Web.Metadata -* `providers`: a list of metadata providers to enable. Providers available: - * Pleroma.Web.Metadata.Providers.OpenGraph - * Pleroma.Web.Metadata.Providers.TwitterCard - * Pleroma.Web.Metadata.Providers.RelMe - add links from user bio with rel=me into the `
` as `` -* `unfurl_nsfw`: If set to `true` nsfw attachments will be shown in previews - -## :rich_media -* `enabled`: if enabled the instance will parse metadata from attached links to generate link previews -* `ignore_hosts`: list of hosts which will be ignored by the metadata parser. For example `["accounts.google.com", "xss.website"]`, defaults to `[]`. -* `ignore_tld`: list TLDs (top-level domains) which will ignore for parse metadata. default is ["local", "localdomain", "lan"] -* `parsers`: list of Rich Media parsers - -## :fetch_initial_posts -* `enabled`: if enabled, when a new user is federated with, fetch some of their latest posts -* `pages`: the amount of pages to fetch - -## :hackney_pools - -Advanced. Tweaks Hackney (http client) connections pools. - -There's three pools used: - -* `:federation` for the federation jobs. - You may want this pool max_connections to be at least equal to the number of federator jobs + retry queue jobs. -* `:media` for rich media, media proxy -* `:upload` for uploaded media (if using a remote uploader and `proxy_remote: true`) - -For each pool, the options are: - -* `max_connections` - how much connections a pool can hold -* `timeout` - retention duration for connections - -## :auto_linker - -Configuration for the `auto_linker` library: - -* `class: "auto-linker"` - specify the class to be added to the generated link. false to clear -* `rel: "noopener noreferrer"` - override the rel attribute. false to clear -* `new_window: true` - set to false to remove `target='_blank'` attribute -* `scheme: false` - Set to true to link urls with schema `http://google.com` -* `truncate: false` - Set to a number to truncate urls longer then the number. Truncated urls will end in `..` -* `strip_prefix: true` - Strip the scheme prefix -* `extra: false` - link urls with rarely used schemes (magnet, ipfs, irc, etc.) - -Example: - -```elixir -config :auto_linker, - opts: [ - scheme: true, - extra: true, - class: false, - strip_prefix: false, - new_window: false, - rel: false - ] -``` - -## Pleroma.ScheduledActivity - -* `daily_user_limit`: the number of scheduled activities a user is allowed to create in a single day (Default: `25`) -* `total_user_limit`: the number of scheduled activities a user is allowed to create in total (Default: `300`) -* `enabled`: whether scheduled activities are sent to the job queue to be executed - -## Pleroma.ActivityExpiration - -# `enabled`: whether expired activities will be sent to the job queue to be deleted - -## Pleroma.Web.Auth.Authenticator - -* `Pleroma.Web.Auth.PleromaAuthenticator`: default database authenticator -* `Pleroma.Web.Auth.LDAPAuthenticator`: LDAP authentication - -## :ldap - -Use LDAP for user authentication. When a user logs in to the Pleroma -instance, the name and password will be verified by trying to authenticate -(bind) to an LDAP server. If a user exists in the LDAP directory but there -is no account with the same name yet on the Pleroma instance then a new -Pleroma account will be created with the same name as the LDAP user name. - -* `enabled`: enables LDAP authentication -* `host`: LDAP server hostname -* `port`: LDAP port, e.g. 389 or 636 -* `ssl`: true to use SSL, usually implies the port 636 -* `sslopts`: additional SSL options -* `tls`: true to start TLS, usually implies the port 389 -* `tlsopts`: additional TLS options -* `base`: LDAP base, e.g. "dc=example,dc=com" -* `uid`: LDAP attribute name to authenticate the user, e.g. when "cn", the filter will be "cn=username,base" - -## BBS / SSH access - -To enable simple command line interface accessible over ssh, add a setting like this to your configuration file: - -```exs -app_dir = File.cwd! -priv_dir = Path.join([app_dir, "priv/ssh_keys"]) - -config :esshd, - enabled: true, - priv_dir: priv_dir, - handler: "Pleroma.BBS.Handler", - port: 10_022, - password_authenticator: "Pleroma.BBS.Authenticator" -``` - -Feel free to adjust the priv_dir and port number. Then you will have to create the key for the keys (in the example `priv/ssh_keys`) and create the host keys with `ssh-keygen -m PEM -N "" -b 2048 -t rsa -f ssh_host_rsa_key`. After restarting, you should be able to connect to your Pleroma instance with `ssh username@server -p $PORT` - -## :auth - -* `Pleroma.Web.Auth.PleromaAuthenticator`: default database authenticator -* `Pleroma.Web.Auth.LDAPAuthenticator`: LDAP authentication - -Authentication / authorization settings. - -* `auth_template`: authentication form template. By default it's `show.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/show.html.eex`. -* `oauth_consumer_template`: OAuth consumer mode authentication form template. By default it's `consumer.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex`. -* `oauth_consumer_strategies`: the list of enabled OAuth consumer strategies; by default it's set by `OAUTH_CONSUMER_STRATEGIES` environment variable. Each entry in this space-delimited string should be of format `` or `:` (e.g. `twitter` or `keycloak:ueberauth_keycloak_strategy` in case dependency is named differently than `ueberauth_`). - -## :email_notifications - -Email notifications settings. - - - digest - emails of "what you've missed" for users who have been - inactive for a while. - - active: globally enable or disable digest emails - - schedule: When to send digest email, in [crontab format](https://en.wikipedia.org/wiki/Cron). - "0 0 * * 0" is the default, meaning "once a week at midnight on Sunday morning" - - interval: Minimum interval between digest emails to one user - - inactivity_threshold: Minimum user inactivity threshold - -## Pleroma.Emails.UserEmail - -- `:logo` - a path to a custom logo. Set it to `nil` to use the default Pleroma logo. -- `:styling` - a map with color settings for email templates. - -## OAuth consumer mode - -OAuth consumer mode allows sign in / sign up via external OAuth providers (e.g. Twitter, Facebook, Google, Microsoft, etc.). -Implementation is based on Ueberauth; see the list of [available strategies](https://github.com/ueberauth/ueberauth/wiki/List-of-Strategies). - -Note: each strategy is shipped as a separate dependency; in order to get the strategies, run `OAUTH_CONSUMER_STRATEGIES="..." mix deps.get`, -e.g. `OAUTH_CONSUMER_STRATEGIES="twitter facebook google microsoft" mix deps.get`. -The server should also be started with `OAUTH_CONSUMER_STRATEGIES="..." mix phx.server` in case you enable any strategies. - -Note: each strategy requires separate setup (on external provider side and Pleroma side). Below are the guidelines on setting up most popular strategies. - -Note: make sure that `"SameSite=Lax"` is set in `extra_cookie_attrs` when you have this feature enabled. OAuth consumer mode will not work with `"SameSite=Strict"` - -* For Twitter, [register an app](https://developer.twitter.com/en/apps), configure callback URL to https:///oauth/twitter/callback - -* For Facebook, [register an app](https://developers.facebook.com/apps), configure callback URL to https:///oauth/facebook/callback, enable Facebook Login service at https://developers.facebook.com/apps//fb-login/settings/ - -* For Google, [register an app](https://console.developers.google.com), configure callback URL to https:///oauth/google/callback - -* For Microsoft, [register an app](https://portal.azure.com), configure callback URL to https:///oauth/microsoft/callback - -Once the app is configured on external OAuth provider side, add app's credentials and strategy-specific settings (if any — e.g. see Microsoft below) to `config/prod.secret.exs`, -per strategy's documentation (e.g. [ueberauth_twitter](https://github.com/ueberauth/ueberauth_twitter)). Example config basing on environment variables: - -```elixir -# Twitter -config :ueberauth, Ueberauth.Strategy.Twitter.OAuth, - consumer_key: System.get_env("TWITTER_CONSUMER_KEY"), - consumer_secret: System.get_env("TWITTER_CONSUMER_SECRET") - -# Facebook -config :ueberauth, Ueberauth.Strategy.Facebook.OAuth, - client_id: System.get_env("FACEBOOK_APP_ID"), - client_secret: System.get_env("FACEBOOK_APP_SECRET"), - redirect_uri: System.get_env("FACEBOOK_REDIRECT_URI") - -# Google -config :ueberauth, Ueberauth.Strategy.Google.OAuth, - client_id: System.get_env("GOOGLE_CLIENT_ID"), - client_secret: System.get_env("GOOGLE_CLIENT_SECRET"), - redirect_uri: System.get_env("GOOGLE_REDIRECT_URI") - -# Microsoft -config :ueberauth, Ueberauth.Strategy.Microsoft.OAuth, - client_id: System.get_env("MICROSOFT_CLIENT_ID"), - client_secret: System.get_env("MICROSOFT_CLIENT_SECRET") - -config :ueberauth, Ueberauth, - providers: [ - microsoft: {Ueberauth.Strategy.Microsoft, [callback_params: []]} - ] - -# Keycloak -# Note: make sure to add `keycloak:ueberauth_keycloak_strategy` entry to `OAUTH_CONSUMER_STRATEGIES` environment variable -keycloak_url = "https://publicly-reachable-keycloak-instance.org:8080" - -config :ueberauth, Ueberauth.Strategy.Keycloak.OAuth, - client_id: System.get_env("KEYCLOAK_CLIENT_ID"), - client_secret: System.get_env("KEYCLOAK_CLIENT_SECRET"), - site: keycloak_url, - authorize_url: "#{keycloak_url}/auth/realms/master/protocol/openid-connect/auth", - token_url: "#{keycloak_url}/auth/realms/master/protocol/openid-connect/token", - userinfo_url: "#{keycloak_url}/auth/realms/master/protocol/openid-connect/userinfo", - token_method: :post - -config :ueberauth, Ueberauth, - providers: [ - keycloak: {Ueberauth.Strategy.Keycloak, [uid_field: :email]} - ] -``` - -## OAuth 2.0 provider - :oauth2 - -Configure OAuth 2 provider capabilities: - -* `token_expires_in` - The lifetime in seconds of the access token. -* `issue_new_refresh_token` - Keeps old refresh token or generate new refresh token when to obtain an access token. -* `clean_expired_tokens` - Enable a background job to clean expired oauth tokens. Defaults to `false`. -* `clean_expired_tokens_interval` - Interval to run the job to clean expired tokens. Defaults to `86_400_000` (24 hours). - -## :emoji -* `shortcode_globs`: Location of custom emoji files. `*` can be used as a wildcard. Example `["/emoji/custom/**/*.png"]` -* `pack_extensions`: A list of file extensions for emojis, when no emoji.txt for a pack is present. Example `[".png", ".gif"]` -* `groups`: Emojis are ordered in groups (tags). This is an array of key-value pairs where the key is the groupname and the value the location or array of locations. `*` can be used as a wildcard. Example `[Custom: ["/emoji/*.png", "/emoji/custom/*.png"]]` -* `default_manifest`: Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download. Currently only one manifest can be added (no arrays). - -## Database options - -### RUM indexing for full text search -* `rum_enabled`: If RUM indexes should be used. Defaults to `false`. - -RUM indexes are an alternative indexing scheme that is not included in PostgreSQL by default. While they may eventually be mainlined, for now they have to be installed as a PostgreSQL extension from https://github.com/postgrespro/rum. - -Their advantage over the standard GIN indexes is that they allow efficient ordering of search results by timestamp, which makes search queries a lot faster on larger servers, by one or two orders of magnitude. They take up around 3 times as much space as GIN indexes. - -To enable them, both the `rum_enabled` flag has to be set and the following special migration has to be run: - -`mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/` - -This will probably take a long time. - -## :rate_limit - -This is an advanced feature and disabled by default. - -A keyword list of rate limiters where a key is a limiter name and value is the limiter configuration. The basic configuration is a tuple where: - -* The first element: `scale` (Integer). The time scale in milliseconds. -* The second element: `limit` (Integer). How many requests to limit in the time scale provided. - -It is also possible to have different limits for unauthenticated and authenticated users: the keyword value must be a list of two tuples where the first one is a config for unauthenticated users and the second one is for authenticated. - -See [`Pleroma.Plugs.RateLimiter`](Pleroma.Plugs.RateLimiter.html) documentation for examples. - -Supported rate limiters: - -* `:search` for the search requests (account & status search etc.) -* `:app_account_creation` for registering user accounts from the same IP address -* `:relations_actions` for actions on relations with all users (follow, unfollow) -* `:relation_id_action` for actions on relation with a specific user (follow, unfollow) -* `:statuses_actions` for create / delete / fav / unfav / reblog / unreblog actions on any statuses -* `:status_id_action` for fav / unfav or reblog / unreblog actions on the same status by the same user - -## :web_cache_ttl - -The expiration time for the web responses cache. Values should be in milliseconds or `nil` to disable expiration. - -Available caches: - -* `:activity_pub` - activity pub routes (except question activities). Defaults to `nil` (no expiration). -* `:activity_pub_question` - activity pub routes (question activities). Defaults to `30_000` (30 seconds). +# Configuration + +This file describe the configuration, it is recommended to edit the relevant *.secret.exs file instead of the others founds in the ``config`` directory. +If you run Pleroma with ``MIX_ENV=prod`` the file is ``prod.secret.exs``, otherwise it is ``dev.secret.exs``. + +## Pleroma.Upload +* `uploader`: Select which `Pleroma.Uploaders` to use +* `filters`: List of `Pleroma.Upload.Filter` to use. +* `link_name`: When enabled Pleroma will add a `name` parameter to the url of the upload, for example `https://instance.tld/media/corndog.png?name=corndog.png`. This is needed to provide the correct filename in Content-Disposition headers when using filters like `Pleroma.Upload.Filter.Dedupe` +* `base_url`: The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host. +* `proxy_remote`: If you're using a remote uploader, Pleroma will proxy media requests instead of redirecting to it. +* `proxy_opts`: Proxy options, see `Pleroma.ReverseProxy` documentation. + +Note: `strip_exif` has been replaced by `Pleroma.Upload.Filter.Mogrify`. + +## Pleroma.Uploaders.Local +* `uploads`: Which directory to store the user-uploads in, relative to pleroma’s working directory + +## Pleroma.Uploaders.S3 +* `bucket`: S3 bucket name +* `bucket_namespace`: S3 bucket namespace +* `public_endpoint`: S3 endpoint that the user finally accesses(ex. "https://s3.dualstack.ap-northeast-1.amazonaws.com") +* `truncated_namespace`: If you use S3 compatible service such as Digital Ocean Spaces or CDN, set folder name or "" etc. +For example, when using CDN to S3 virtual host format, set "". +At this time, write CNAME to CDN in public_endpoint. + +## Pleroma.Upload.Filter.Mogrify + +* `args`: List of actions for the `mogrify` command like `"strip"` or `["strip", "auto-orient", {"implode", "1"}]`. + +## Pleroma.Upload.Filter.Dedupe + +No specific configuration. + +## Pleroma.Upload.Filter.AnonymizeFilename + +This filter replaces the filename (not the path) of an upload. For complete obfuscation, add +`Pleroma.Upload.Filter.Dedupe` before AnonymizeFilename. + +* `text`: Text to replace filenames in links. If empty, `{random}.extension` will be used. You can get the original filename extension by using `{extension}`, for example `custom-file-name.{extension}`. + +## Pleroma.Emails.Mailer +* `adapter`: one of the mail adapters listed in [Swoosh readme](https://github.com/swoosh/swoosh#adapters), or `Swoosh.Adapters.Local` for in-memory mailbox. +* `api_key` / `password` and / or other adapter-specific settings, per the above documentation. +* `enabled`: Allows enable/disable send emails. Default: `false`. + +An example for Sendgrid adapter: + +```elixir +config :pleroma, Pleroma.Emails.Mailer, + adapter: Swoosh.Adapters.Sendgrid, + api_key: "YOUR_API_KEY" +``` + +An example for SMTP adapter: + +```elixir +config :pleroma, Pleroma.Emails.Mailer, + adapter: Swoosh.Adapters.SMTP, + relay: "smtp.gmail.com", + username: "YOUR_USERNAME@gmail.com", + password: "YOUR_SMTP_PASSWORD", + port: 465, + ssl: true, + tls: :always, + auth: :always +``` + +## :uri_schemes +* `valid_schemes`: List of the scheme part that is considered valid to be an URL + +## :instance +* `name`: The instance’s name +* `email`: Email used to reach an Administrator/Moderator of the instance +* `notify_email`: Email used for notifications. +* `description`: The instance’s description, can be seen in nodeinfo and ``/api/v1/instance`` +* `limit`: Posts character limit (CW/Subject included in the counter) +* `remote_limit`: Hard character limit beyond which remote posts will be dropped. +* `upload_limit`: File size limit of uploads (except for avatar, background, banner) +* `avatar_upload_limit`: File size limit of user’s profile avatars +* `background_upload_limit`: File size limit of user’s profile backgrounds +* `banner_upload_limit`: File size limit of user’s profile banners +* `poll_limits`: A map with poll limits for **local** polls + * `max_options`: Maximum number of options + * `max_option_chars`: Maximum number of characters per option + * `min_expiration`: Minimum expiration time (in seconds) + * `max_expiration`: Maximum expiration time (in seconds) +* `registrations_open`: Enable registrations for anyone, invitations can be enabled when false. +* `invites_enabled`: Enable user invitations for admins (depends on `registrations_open: false`). +* `account_activation_required`: Require users to confirm their emails before signing in. +* `federating`: Enable federation with other instances +* `federation_incoming_replies_max_depth`: Max. depth of reply-to activities fetching on incoming federation, to prevent out-of-memory situations while fetching very long threads. If set to `nil`, threads of any depth will be fetched. Lower this value if you experience out-of-memory crashes. +* `federation_reachability_timeout_days`: Timeout (in days) of each external federation target being unreachable prior to pausing federating to it. +* `allow_relay`: Enable Pleroma’s Relay, which makes it possible to follow a whole instance +* `rewrite_policy`: Message Rewrite Policy, either one or a list. Here are the ones available by default: + * `Pleroma.Web.ActivityPub.MRF.NoOpPolicy`: Doesn’t modify activities (default) + * `Pleroma.Web.ActivityPub.MRF.DropPolicy`: Drops all activities. It generally doesn’t makes sense to use in production + * `Pleroma.Web.ActivityPub.MRF.SimplePolicy`: Restrict the visibility of activities from certains instances (See ``:mrf_simple`` section) + * `Pleroma.Web.ActivityPub.MRF.TagPolicy`: Applies policies to individual users based on tags, which can be set using pleroma-fe/admin-fe/any other app that supports Pleroma Admin API. For example it allows marking posts from individual users nsfw (sensitive) + * `Pleroma.Web.ActivityPub.MRF.SubchainPolicy`: Selectively runs other MRF policies when messages match (see ``:mrf_subchain`` section) + * `Pleroma.Web.ActivityPub.MRF.RejectNonPublic`: Drops posts with non-public visibility settings (See ``:mrf_rejectnonpublic`` section) + * `Pleroma.Web.ActivityPub.MRF.EnsureRePrepended`: Rewrites posts to ensure that replies to posts with subjects do not have an identical subject and instead begin with re:. + * `Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy`: Rejects posts from likely spambots by rejecting posts from new users that contain links. + * `Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy`: Crawls attachments using their MediaProxy URLs so that the MediaProxy cache is primed. + * `Pleroma.Web.ActivityPub.MRF.MentionPolicy`: Drops posts mentioning configurable users. (see `:mrf_mention` section) + * `Pleroma.Web.ActivityPub.MRF.VocabularyPolicy`: Restricts activities to a configured set of vocabulary. (see `:mrf_vocabulary` section) +* `public`: Makes the client API in authentificated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network. +* `quarantined_instances`: List of ActivityPub instances where private(DMs, followers-only) activities will not be send. +* `managed_config`: Whenether the config for pleroma-fe is configured in this config or in ``static/config.json`` +* `allowed_post_formats`: MIME-type list of formats allowed to be posted (transformed into HTML) +* `mrf_transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo). +* `mrf_transparency_exclusions`: Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value. +* `scope_copy`: Copy the scope (private/unlisted/public) in replies to posts by default. +* `subject_line_behavior`: Allows changing the default behaviour of subject lines in replies. Valid values: + * "email": Copy and preprend re:, as in email. + * "masto": Copy verbatim, as in Mastodon. + * "noop": Don't copy the subject. +* `always_show_subject_input`: When set to false, auto-hide the subject field when it's empty. +* `extended_nickname_format`: Set to `true` to use extended local nicknames format (allows underscores/dashes). This will break federation with + older software for theses nicknames. +* `max_pinned_statuses`: The maximum number of pinned statuses. `0` will disable the feature. +* `autofollowed_nicknames`: Set to nicknames of (local) users that every new user should automatically follow. +* `no_attachment_links`: Set to true to disable automatically adding attachment link text to statuses +* `welcome_message`: A message that will be send to a newly registered users as a direct message. +* `welcome_user_nickname`: The nickname of the local user that sends the welcome message. +* `max_report_comment_size`: The maximum size of the report comment (Default: `1000`) +* `safe_dm_mentions`: If set to true, only mentions at the beginning of a post will be used to address people in direct messages. This is to prevent accidental mentioning of people when talking about them (e.g. "@friend hey i really don't like @enemy"). Default: `false`. +* `healthcheck`: If set to true, system data will be shown on ``/api/pleroma/healthcheck``. +* `remote_post_retention_days`: The default amount of days to retain remote posts when pruning the database. +* `user_bio_length`: A user bio maximum length (default: `5000`) +* `user_name_length`: A user name maximum length (default: `100`) +* `skip_thread_containment`: Skip filter out broken threads. The default is `false`. +* `limit_to_local_content`: Limit unauthenticated users to search for local statutes and users only. Possible values: `:unauthenticated`, `:all` and `false`. The default is `:unauthenticated`. +* `dynamic_configuration`: Allow transferring configuration to DB with the subsequent customization from Admin api. +* `max_account_fields`: The maximum number of custom fields in the user profile (default: `10`) +* `max_remote_account_fields`: The maximum number of custom fields in the remote user profile (default: `20`) +* `account_field_name_length`: An account field name maximum length (default: `512`) +* `account_field_value_length`: An account field value maximum length (default: `512`) +* `external_user_synchronization`: Enabling following/followers counters synchronization for external users. + + + +## :logger +* `backends`: `:console` is used to send logs to stdout, `{ExSyslogger, :ex_syslogger}` to log to syslog, and `Quack.Logger` to log to Slack + +An example to enable ONLY ExSyslogger (f/ex in ``prod.secret.exs``) with info and debug suppressed: +```elixir +config :logger, + backends: [{ExSyslogger, :ex_syslogger}] + +config :logger, :ex_syslogger, + level: :warn +``` + +Another example, keeping console output and adding the pid to syslog output: +```elixir +config :logger, + backends: [:console, {ExSyslogger, :ex_syslogger}] + +config :logger, :ex_syslogger, + level: :warn, + option: [:pid, :ndelay] +``` + +See: [logger’s documentation](https://hexdocs.pm/logger/Logger.html) and [ex_syslogger’s documentation](https://hexdocs.pm/ex_syslogger/) + +An example of logging info to local syslog, but warn to a Slack channel: +```elixir +config :logger, + backends: [ {ExSyslogger, :ex_syslogger}, Quack.Logger ], + level: :info + +config :logger, :ex_syslogger, + level: :info, + ident: "pleroma", + format: "$metadata[$level] $message" + +config :quack, + level: :warn, + meta: [:all], + webhook_url: "https://hooks.slack.com/services/YOUR-API-KEY-HERE" +``` + +See the [Quack Github](https://github.com/azohra/quack) for more details + +## :frontend_configurations + +This can be used to configure a keyword list that keeps the configuration data for any kind of frontend. By default, settings for `pleroma_fe` and `masto_fe` are configured. + +Frontends can access these settings at `/api/pleroma/frontend_configurations` + +To add your own configuration for PleromaFE, use it like this: + +```elixir +config :pleroma, :frontend_configurations, + pleroma_fe: %{ + theme: "pleroma-dark", + # ... see /priv/static/static/config.json for the available keys. +}, + masto_fe: %{ + showInstanceSpecificPanel: true + } +``` + +These settings **need to be complete**, they will override the defaults. + +NOTE: for versions < 1.0, you need to set [`:fe`](#fe) to false, as shown a few lines below. + +## :fe +__THIS IS DEPRECATED__ + +If you are using this method, please change it to the [`frontend_configurations`](#frontend_configurations) method. +Please **set this option to false** in your config like this: + +```elixir +config :pleroma, :fe, false +``` + +This section is used to configure Pleroma-FE, unless ``:managed_config`` in ``:instance`` is set to false. + +* `theme`: Which theme to use, they are defined in ``styles.json`` +* `logo`: URL of the logo, defaults to Pleroma’s logo +* `logo_mask`: Whether to use only the logo's shape as a mask (true) or as a regular image (false) +* `logo_margin`: What margin to use around the logo +* `background`: URL of the background, unless viewing a user profile with a background that is set +* `redirect_root_no_login`: relative URL which indicates where to redirect when a user isn’t logged in. +* `redirect_root_login`: relative URL which indicates where to redirect when a user is logged in. +* `show_instance_panel`: Whenether to show the instance’s specific panel. +* `scope_options_enabled`: Enable setting an notice visibility and subject/CW when posting +* `formatting_options_enabled`: Enable setting a formatting different than plain-text (ie. HTML, Markdown) when posting, relates to ``:instance, allowed_post_formats`` +* `collapse_message_with_subjects`: When a message has a subject(aka Content Warning), collapse it by default +* `hide_post_stats`: Hide notices statistics(repeats, favorites, …) +* `hide_user_stats`: Hide profile statistics(posts, posts per day, followers, followings, …) + +## :assets + +This section configures assets to be used with various frontends. Currently the only option +relates to mascots on the mastodon frontend + +* `mascots`: KeywordList of mascots, each element __MUST__ contain both a `url` and a + `mime_type` key. +* `default_mascot`: An element from `mascots` - This will be used as the default mascot + on MastoFE (default: `:pleroma_fox_tan`) + +## :mrf_simple +* `media_removal`: List of instances to remove medias from +* `media_nsfw`: List of instances to put medias as NSFW(sensitive) from +* `federated_timeline_removal`: List of instances to remove from Federated (aka The Whole Known Network) Timeline +* `reject`: List of instances to reject any activities from +* `accept`: List of instances to accept any activities from +* `report_removal`: List of instances to reject reports from +* `avatar_removal`: List of instances to strip avatars from +* `banner_removal`: List of instances to strip banners from + +## :mrf_subchain +This policy processes messages through an alternate pipeline when a given message matches certain criteria. +All criteria are configured as a map of regular expressions to lists of policy modules. + +* `match_actor`: Matches a series of regular expressions against the actor field. + +Example: + +``` +config :pleroma, :mrf_subchain, + match_actor: %{ + ~r/https:\/\/example.com/s => [Pleroma.Web.ActivityPub.MRF.DropPolicy] + } +``` + +## :mrf_rejectnonpublic +* `allow_followersonly`: whether to allow followers-only posts +* `allow_direct`: whether to allow direct messages + +## :mrf_hellthread +* `delist_threshold`: Number of mentioned users after which the message gets delisted (the message can still be seen, but it will not show up in public timelines and mentioned users won't get notifications about it). Set to 0 to disable. +* `reject_threshold`: Number of mentioned users after which the messaged gets rejected. Set to 0 to disable. + +## :mrf_keyword +* `reject`: A list of patterns which result in message being rejected, each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html) +* `federated_timeline_removal`: A list of patterns which result in message being removed from federated timelines (a.k.a unlisted), each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html) +* `replace`: A list of tuples containing `{pattern, replacement}`, `pattern` can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html) + +## :mrf_mention +* `actors`: A list of actors, for which to drop any posts mentioning. + +## :mrf_vocabulary +* `accept`: A list of ActivityStreams terms to accept. If empty, all supported messages are accepted. +* `reject`: A list of ActivityStreams terms to reject. If empty, no messages are rejected. + +## :media_proxy +* `enabled`: Enables proxying of remote media to the instance’s proxy +* `base_url`: The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts. +* `proxy_opts`: All options defined in `Pleroma.ReverseProxy` documentation, defaults to `[max_body_length: (25*1_048_576)]`. +* `whitelist`: List of domains to bypass the mediaproxy + +## :gopher +* `enabled`: Enables the gopher interface +* `ip`: IP address to bind to +* `port`: Port to bind to +* `dstport`: Port advertised in urls (optional, defaults to `port`) + +## Pleroma.Web.Endpoint +`Phoenix` endpoint configuration, all configuration options can be viewed [here](https://hexdocs.pm/phoenix/Phoenix.Endpoint.html#module-dynamic-configuration), only common options are listed here +* `http` - a list containing http protocol configuration, all configuration options can be viewed [here](https://hexdocs.pm/plug_cowboy/Plug.Cowboy.html#module-options), only common options are listed here. For deployment using docker, you need to set this to `[ip: {0,0,0,0}, port: 4000]` to make pleroma accessible from other containers (such as your nginx server). + - `ip` - a tuple consisting of 4 integers + - `port` +* `url` - a list containing the configuration for generating urls, accepts + - `host` - the host without the scheme and a post (e.g `example.com`, not `https://example.com:2020`) + - `scheme` - e.g `http`, `https` + - `port` + - `path` +* `extra_cookie_attrs` - a list of `Key=Value` strings to be added as non-standard cookie attributes. Defaults to `["SameSite=Lax"]`. See the [SameSite article](https://www.owasp.org/index.php/SameSite) on OWASP for more info. + + + +**Important note**: if you modify anything inside these lists, default `config.exs` values will be overwritten, which may result in breakage, to make sure this does not happen please copy the default value for the list from `config.exs` and modify/add only what you need + +Example: +```elixir +config :pleroma, Pleroma.Web.Endpoint, + url: [host: "example.com", port: 2020, scheme: "https"], + http: [ + # start copied from config.exs + dispatch: [ + {:_, + [ + {"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []}, + {"/websocket", Phoenix.Endpoint.CowboyWebSocket, + {Phoenix.Transports.WebSocket, + {Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, websocket_config}}}, + {:_, Phoenix.Endpoint.Cowboy2Handler, {Pleroma.Web.Endpoint, []}} + ]} + # end copied from config.exs + ], + port: 8080, + ip: {127, 0, 0, 1} + ] +``` + +This will make Pleroma listen on `127.0.0.1` port `8080` and generate urls starting with `https://example.com:2020` + +## :activitypub +* ``unfollow_blocked``: Whether blocks result in people getting unfollowed +* ``outgoing_blocks``: Whether to federate blocks to other instances +* ``deny_follow_blocked``: Whether to disallow following an account that has blocked the user in question +* ``sign_object_fetches``: Sign object fetches with HTTP signatures + +## :http_security +* ``enabled``: Whether the managed content security policy is enabled +* ``sts``: Whether to additionally send a `Strict-Transport-Security` header +* ``sts_max_age``: The maximum age for the `Strict-Transport-Security` header if sent +* ``ct_max_age``: The maximum age for the `Expect-CT` header if sent +* ``referrer_policy``: The referrer policy to use, either `"same-origin"` or `"no-referrer"` +* ``report_uri``: Adds the specified url to `report-uri` and `report-to` group in CSP header. + +## :mrf_user_allowlist + +The keys in this section are the domain names that the policy should apply to. +Each key should be assigned a list of users that should be allowed through by +their ActivityPub ID. + +An example: + +```elixir +config :pleroma, :mrf_user_allowlist, + "example.org": ["https://example.org/users/admin"] +``` + +## :web_push_encryption, :vapid_details + +Web Push Notifications configuration. You can use the mix task `mix web_push.gen.keypair` to generate it. + +* ``subject``: a mailto link for the administrative contact. It’s best if this email is not a personal email address, but rather a group email so that if a person leaves an organization, is unavailable for an extended period, or otherwise can’t respond, someone else on the list can. +* ``public_key``: VAPID public key +* ``private_key``: VAPID private key + +## Pleroma.Captcha +* `enabled`: Whether the captcha should be shown on registration +* `method`: The method/service to use for captcha +* `seconds_valid`: The time in seconds for which the captcha is valid + +### Pleroma.Captcha.Kocaptcha +Kocaptcha is a very simple captcha service with a single API endpoint, +the source code is here: https://github.com/koto-bank/kocaptcha. The default endpoint +`https://captcha.kotobank.ch` is hosted by the developer. + +* `endpoint`: the kocaptcha endpoint to use + +## :admin_token + +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. Example: + +```elixir +config :pleroma, :admin_token, "somerandomtoken" +``` + +You can then do + +```sh +curl "http://localhost:4000/api/pleroma/admin/invite_token?admin_token=somerandomtoken" +``` + +## Oban + +[Oban](https://github.com/sorentwo/oban) asynchronous job processor configuration. + +Configuration options described in [Oban readme](https://github.com/sorentwo/oban#usage): +* `repo` - app's Ecto repo (`Pleroma.Repo`) +* `verbose` - logs verbosity +* `prune` - non-retryable jobs [pruning settings](https://github.com/sorentwo/oban#pruning) (`:disabled` / `{:maxlen, value}` / `{:maxage, value}`) +* `queues` - job queues (see below) + +Pleroma has the following queues: + +* `activity_expiration` - Activity expiration +* `federator_outgoing` - Outgoing federation +* `federator_incoming` - Incoming federation +* `mailer` - Email sender, see [`Pleroma.Emails.Mailer`](#pleromaemailsmailer) +* `transmogrifier` - Transmogrifier +* `web_push` - Web push notifications +* `scheduled_activities` - Scheduled activities, see [`Pleroma.ScheduledActivity`](#pleromascheduledactivity) + +Example: + +```elixir +config :pleroma, Oban, + repo: Pleroma.Repo, + verbose: false, + prune: {:maxlen, 1500}, + queues: [ + federator_incoming: 50, + federator_outgoing: 50 + ] +``` + +This config contains two queues: `federator_incoming` and `federator_outgoing`. Both have the number of max concurrent jobs set to `50`. + +### Migrating `pleroma_job_queue` settings + +`config :pleroma_job_queue, :queues` is replaced by `config :pleroma, Oban, :queues` and uses the same format (keys are queues' names, values are max concurrent jobs numbers). + +### Note on running with PostgreSQL in silent mode + +If you are running PostgreSQL in [`silent_mode`](https://postgresqlco.nf/en/doc/param/silent_mode?version=9.1), it's advised to set [`log_destination`](https://postgresqlco.nf/en/doc/param/log_destination?version=9.1) to `syslog`, +otherwise `postmaster.log` file may grow because of "you don't own a lock of type ShareLock" warnings (see https://github.com/sorentwo/oban/issues/52). + +## :workers + +Includes custom worker options not interpretable directly by `Oban`. + +* `retries` — keyword lists where keys are `Oban` queues (see above) and values are numbers of max attempts for failed jobs. + +Example: + +```elixir +config :pleroma, :workers, + retries: [ + federator_incoming: 5, + federator_outgoing: 5 + ] +``` + +### Migrating `Pleroma.Web.Federator.RetryQueue` settings + +* `max_retries` is replaced with `config :pleroma, :workers, retries: [federator_outgoing: 5]` +* `enabled: false` corresponds to `config :pleroma, :workers, retries: [federator_outgoing: 1]` +* deprecated options: `max_jobs`, `initial_timeout` + +## Pleroma.Web.Metadata +* `providers`: a list of metadata providers to enable. Providers available: + * Pleroma.Web.Metadata.Providers.OpenGraph + * Pleroma.Web.Metadata.Providers.TwitterCard + * Pleroma.Web.Metadata.Providers.RelMe - add links from user bio with rel=me into the `
` as `` +* `unfurl_nsfw`: If set to `true` nsfw attachments will be shown in previews + +## :rich_media +* `enabled`: if enabled the instance will parse metadata from attached links to generate link previews +* `ignore_hosts`: list of hosts which will be ignored by the metadata parser. For example `["accounts.google.com", "xss.website"]`, defaults to `[]`. +* `ignore_tld`: list TLDs (top-level domains) which will ignore for parse metadata. default is ["local", "localdomain", "lan"] +* `parsers`: list of Rich Media parsers + +## :fetch_initial_posts +* `enabled`: if enabled, when a new user is federated with, fetch some of their latest posts +* `pages`: the amount of pages to fetch + +## :hackney_pools + +Advanced. Tweaks Hackney (http client) connections pools. + +There's three pools used: + +* `:federation` for the federation jobs. + You may want this pool max_connections to be at least equal to the number of federator jobs + retry queue jobs. +* `:media` for rich media, media proxy +* `:upload` for uploaded media (if using a remote uploader and `proxy_remote: true`) + +For each pool, the options are: + +* `max_connections` - how much connections a pool can hold +* `timeout` - retention duration for connections + +## :auto_linker + +Configuration for the `auto_linker` library: + +* `class: "auto-linker"` - specify the class to be added to the generated link. false to clear +* `rel: "noopener noreferrer"` - override the rel attribute. false to clear +* `new_window: true` - set to false to remove `target='_blank'` attribute +* `scheme: false` - Set to true to link urls with schema `http://google.com` +* `truncate: false` - Set to a number to truncate urls longer then the number. Truncated urls will end in `..` +* `strip_prefix: true` - Strip the scheme prefix +* `extra: false` - link urls with rarely used schemes (magnet, ipfs, irc, etc.) + +Example: + +```elixir +config :auto_linker, + opts: [ + scheme: true, + extra: true, + class: false, + strip_prefix: false, + new_window: false, + rel: false + ] +``` + +## Pleroma.Scheduler + +Configuration for [Quantum](https://github.com/quantum-elixir/quantum-core) jobs scheduler. + +See [Quantum readme](https://github.com/quantum-elixir/quantum-core#usage) for the list of supported options. + +Example: + +```elixir +config :pleroma, Pleroma.Scheduler, + global: true, + overlap: true, + timezone: :utc, + jobs: [{"0 */6 * * * *", {Pleroma.Web.Websub, :refresh_subscriptions, []}}] +``` + +The above example defines a single job which invokes `Pleroma.Web.Websub.refresh_subscriptions()` every 6 hours ("0 */6 * * * *", [crontab format](https://en.wikipedia.org/wiki/Cron)). + +## Pleroma.ScheduledActivity + +* `daily_user_limit`: the number of scheduled activities a user is allowed to create in a single day (Default: `25`) +* `total_user_limit`: the number of scheduled activities a user is allowed to create in total (Default: `300`) +* `enabled`: whether scheduled activities are sent to the job queue to be executed + +## Pleroma.ActivityExpiration + +# `enabled`: whether expired activities will be sent to the job queue to be deleted + +## Pleroma.Web.Auth.Authenticator + +* `Pleroma.Web.Auth.PleromaAuthenticator`: default database authenticator +* `Pleroma.Web.Auth.LDAPAuthenticator`: LDAP authentication + +## :ldap + +Use LDAP for user authentication. When a user logs in to the Pleroma +instance, the name and password will be verified by trying to authenticate +(bind) to an LDAP server. If a user exists in the LDAP directory but there +is no account with the same name yet on the Pleroma instance then a new +Pleroma account will be created with the same name as the LDAP user name. + +* `enabled`: enables LDAP authentication +* `host`: LDAP server hostname +* `port`: LDAP port, e.g. 389 or 636 +* `ssl`: true to use SSL, usually implies the port 636 +* `sslopts`: additional SSL options +* `tls`: true to start TLS, usually implies the port 389 +* `tlsopts`: additional TLS options +* `base`: LDAP base, e.g. "dc=example,dc=com" +* `uid`: LDAP attribute name to authenticate the user, e.g. when "cn", the filter will be "cn=username,base" + +## BBS / SSH access + +To enable simple command line interface accessible over ssh, add a setting like this to your configuration file: + +```exs +app_dir = File.cwd! +priv_dir = Path.join([app_dir, "priv/ssh_keys"]) + +config :esshd, + enabled: true, + priv_dir: priv_dir, + handler: "Pleroma.BBS.Handler", + port: 10_022, + password_authenticator: "Pleroma.BBS.Authenticator" +``` + +Feel free to adjust the priv_dir and port number. Then you will have to create the key for the keys (in the example `priv/ssh_keys`) and create the host keys with `ssh-keygen -m PEM -N "" -b 2048 -t rsa -f ssh_host_rsa_key`. After restarting, you should be able to connect to your Pleroma instance with `ssh username@server -p $PORT` + +## :auth + +* `Pleroma.Web.Auth.PleromaAuthenticator`: default database authenticator +* `Pleroma.Web.Auth.LDAPAuthenticator`: LDAP authentication + +Authentication / authorization settings. + +* `auth_template`: authentication form template. By default it's `show.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/show.html.eex`. +* `oauth_consumer_template`: OAuth consumer mode authentication form template. By default it's `consumer.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex`. +* `oauth_consumer_strategies`: the list of enabled OAuth consumer strategies; by default it's set by `OAUTH_CONSUMER_STRATEGIES` environment variable. Each entry in this space-delimited string should be of format `` or `:` (e.g. `twitter` or `keycloak:ueberauth_keycloak_strategy` in case dependency is named differently than `ueberauth_`). + +## :email_notifications + +Email notifications settings. + + - digest - emails of "what you've missed" for users who have been + inactive for a while. + - active: globally enable or disable digest emails + - schedule: When to send digest email, in [crontab format](https://en.wikipedia.org/wiki/Cron). + "0 0 * * 0" is the default, meaning "once a week at midnight on Sunday morning" + - interval: Minimum interval between digest emails to one user + - inactivity_threshold: Minimum user inactivity threshold + +## Pleroma.Emails.UserEmail + +- `:logo` - a path to a custom logo. Set it to `nil` to use the default Pleroma logo. +- `:styling` - a map with color settings for email templates. + +## OAuth consumer mode + +OAuth consumer mode allows sign in / sign up via external OAuth providers (e.g. Twitter, Facebook, Google, Microsoft, etc.). +Implementation is based on Ueberauth; see the list of [available strategies](https://github.com/ueberauth/ueberauth/wiki/List-of-Strategies). + +Note: each strategy is shipped as a separate dependency; in order to get the strategies, run `OAUTH_CONSUMER_STRATEGIES="..." mix deps.get`, +e.g. `OAUTH_CONSUMER_STRATEGIES="twitter facebook google microsoft" mix deps.get`. +The server should also be started with `OAUTH_CONSUMER_STRATEGIES="..." mix phx.server` in case you enable any strategies. + +Note: each strategy requires separate setup (on external provider side and Pleroma side). Below are the guidelines on setting up most popular strategies. + +Note: make sure that `"SameSite=Lax"` is set in `extra_cookie_attrs` when you have this feature enabled. OAuth consumer mode will not work with `"SameSite=Strict"` + +* For Twitter, [register an app](https://developer.twitter.com/en/apps), configure callback URL to https:///oauth/twitter/callback + +* For Facebook, [register an app](https://developers.facebook.com/apps), configure callback URL to https:///oauth/facebook/callback, enable Facebook Login service at https://developers.facebook.com/apps//fb-login/settings/ + +* For Google, [register an app](https://console.developers.google.com), configure callback URL to https:///oauth/google/callback + +* For Microsoft, [register an app](https://portal.azure.com), configure callback URL to https:///oauth/microsoft/callback + +Once the app is configured on external OAuth provider side, add app's credentials and strategy-specific settings (if any — e.g. see Microsoft below) to `config/prod.secret.exs`, +per strategy's documentation (e.g. [ueberauth_twitter](https://github.com/ueberauth/ueberauth_twitter)). Example config basing on environment variables: + +```elixir +# Twitter +config :ueberauth, Ueberauth.Strategy.Twitter.OAuth, + consumer_key: System.get_env("TWITTER_CONSUMER_KEY"), + consumer_secret: System.get_env("TWITTER_CONSUMER_SECRET") + +# Facebook +config :ueberauth, Ueberauth.Strategy.Facebook.OAuth, + client_id: System.get_env("FACEBOOK_APP_ID"), + client_secret: System.get_env("FACEBOOK_APP_SECRET"), + redirect_uri: System.get_env("FACEBOOK_REDIRECT_URI") + +# Google +config :ueberauth, Ueberauth.Strategy.Google.OAuth, + client_id: System.get_env("GOOGLE_CLIENT_ID"), + client_secret: System.get_env("GOOGLE_CLIENT_SECRET"), + redirect_uri: System.get_env("GOOGLE_REDIRECT_URI") + +# Microsoft +config :ueberauth, Ueberauth.Strategy.Microsoft.OAuth, + client_id: System.get_env("MICROSOFT_CLIENT_ID"), + client_secret: System.get_env("MICROSOFT_CLIENT_SECRET") + +config :ueberauth, Ueberauth, + providers: [ + microsoft: {Ueberauth.Strategy.Microsoft, [callback_params: []]} + ] + +# Keycloak +# Note: make sure to add `keycloak:ueberauth_keycloak_strategy` entry to `OAUTH_CONSUMER_STRATEGIES` environment variable +keycloak_url = "https://publicly-reachable-keycloak-instance.org:8080" + +config :ueberauth, Ueberauth.Strategy.Keycloak.OAuth, + client_id: System.get_env("KEYCLOAK_CLIENT_ID"), + client_secret: System.get_env("KEYCLOAK_CLIENT_SECRET"), + site: keycloak_url, + authorize_url: "#{keycloak_url}/auth/realms/master/protocol/openid-connect/auth", + token_url: "#{keycloak_url}/auth/realms/master/protocol/openid-connect/token", + userinfo_url: "#{keycloak_url}/auth/realms/master/protocol/openid-connect/userinfo", + token_method: :post + +config :ueberauth, Ueberauth, + providers: [ + keycloak: {Ueberauth.Strategy.Keycloak, [uid_field: :email]} + ] +``` + +## OAuth 2.0 provider - :oauth2 + +Configure OAuth 2 provider capabilities: + +* `token_expires_in` - The lifetime in seconds of the access token. +* `issue_new_refresh_token` - Keeps old refresh token or generate new refresh token when to obtain an access token. +* `clean_expired_tokens` - Enable a background job to clean expired oauth tokens. Defaults to `false`. +* `clean_expired_tokens_interval` - Interval to run the job to clean expired tokens. Defaults to `86_400_000` (24 hours). + +## :emoji +* `shortcode_globs`: Location of custom emoji files. `*` can be used as a wildcard. Example `["/emoji/custom/**/*.png"]` +* `pack_extensions`: A list of file extensions for emojis, when no emoji.txt for a pack is present. Example `[".png", ".gif"]` +* `groups`: Emojis are ordered in groups (tags). This is an array of key-value pairs where the key is the groupname and the value the location or array of locations. `*` can be used as a wildcard. Example `[Custom: ["/emoji/*.png", "/emoji/custom/*.png"]]` +* `default_manifest`: Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download. Currently only one manifest can be added (no arrays). + +## Database options + +### RUM indexing for full text search +* `rum_enabled`: If RUM indexes should be used. Defaults to `false`. + +RUM indexes are an alternative indexing scheme that is not included in PostgreSQL by default. While they may eventually be mainlined, for now they have to be installed as a PostgreSQL extension from https://github.com/postgrespro/rum. + +Their advantage over the standard GIN indexes is that they allow efficient ordering of search results by timestamp, which makes search queries a lot faster on larger servers, by one or two orders of magnitude. They take up around 3 times as much space as GIN indexes. + +To enable them, both the `rum_enabled` flag has to be set and the following special migration has to be run: + +`mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/` + +This will probably take a long time. + +## :rate_limit + +This is an advanced feature and disabled by default. + +A keyword list of rate limiters where a key is a limiter name and value is the limiter configuration. The basic configuration is a tuple where: + +* The first element: `scale` (Integer). The time scale in milliseconds. +* The second element: `limit` (Integer). How many requests to limit in the time scale provided. + +It is also possible to have different limits for unauthenticated and authenticated users: the keyword value must be a list of two tuples where the first one is a config for unauthenticated users and the second one is for authenticated. + +See [`Pleroma.Plugs.RateLimiter`](Pleroma.Plugs.RateLimiter.html) documentation for examples. + +Supported rate limiters: + +* `:search` for the search requests (account & status search etc.) +* `:app_account_creation` for registering user accounts from the same IP address +* `:relations_actions` for actions on relations with all users (follow, unfollow) +* `:relation_id_action` for actions on relation with a specific user (follow, unfollow) +* `:statuses_actions` for create / delete / fav / unfav / reblog / unreblog actions on any statuses +* `:status_id_action` for fav / unfav or reblog / unreblog actions on the same status by the same user + +## :web_cache_ttl + +The expiration time for the web responses cache. Values should be in milliseconds or `nil` to disable expiration. + +Available caches: + +* `:activity_pub` - activity pub routes (except question activities). Defaults to `nil` (no expiration). +* `:activity_pub_question` - activity pub routes (question activities). Defaults to `30_000` (30 seconds). From b4cf74c1067b866574a63fbd25ccb12cc1fed619 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Sun, 15 Sep 2019 14:53:58 +0300 Subject: [PATCH 075/272] added prepare html for RichMedia.Parser --- lib/pleroma/web/rich_media/parser.ex | 6 +++++- mix.exs | 2 +- mix.lock | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index f5f9e358c..c06b0a0f2 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -81,6 +81,7 @@ defp parse_url(url) do {:ok, %Tesla.Env{body: html}} = Pleroma.HTTP.get(url, [], adapter: @hackney_options) html + |> parse_html |> maybe_parse() |> Map.put(:url, url) |> clean_parsed_data() @@ -91,6 +92,8 @@ defp parse_url(url) do end end + defp parse_html(html), do: Floki.parse(html) + defp maybe_parse(html) do Enum.reduce_while(parsers(), %{}, fn parser, acc -> case parser.parse(html, acc) do @@ -100,7 +103,8 @@ defp maybe_parse(html) do end) end - defp check_parsed_data(%{title: title} = data) when is_binary(title) and byte_size(title) > 0 do + defp check_parsed_data(%{title: title} = data) + when is_binary(title) and byte_size(title) > 0 do {:ok, data} end diff --git a/mix.exs b/mix.exs index dfa530358..6f952fa12 100644 --- a/mix.exs +++ b/mix.exs @@ -131,7 +131,7 @@ defp deps do {:phoenix_swoosh, "~> 0.2"}, {:gen_smtp, "~> 0.13"}, {:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test}, - {:floki, "~> 0.20.0"}, + {:floki, "~> 0.23.0"}, {:ex_syslogger, github: "slashmili/ex_syslogger", tag: "1.4.0"}, {:timex, "~> 3.5"}, {:ueberauth, "~> 0.4"}, diff --git a/mix.lock b/mix.lock index 5762dae4f..2bce00dea 100644 --- a/mix.lock +++ b/mix.lock @@ -34,7 +34,7 @@ "ex_rated": {:hex, :ex_rated, "1.3.3", "30ecbdabe91f7eaa9d37fa4e81c85ba420f371babeb9d1910adbcd79ec798d27", [:mix], [{:ex2ms, "~> 1.5", [hex: :ex2ms, repo: "hexpm", optional: false]}], "hexpm"}, "ex_syslogger": {:git, "https://github.com/slashmili/ex_syslogger.git", "f3963399047af17e038897c69e20d552e6899e1d", [tag: "1.4.0"]}, "excoveralls": {:hex, :excoveralls, "0.11.1", "dd677fbdd49114fdbdbf445540ec735808250d56b011077798316505064edb2c", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"}, - "floki": {:hex, :floki, "0.20.4", "be42ac911fece24b4c72f3b5846774b6e61b83fe685c2fc9d62093277fb3bc86", [:mix], [{:html_entities, "~> 0.4.0", [hex: :html_entities, repo: "hexpm", optional: false]}, {:mochiweb, "~> 2.15", [hex: :mochiweb, repo: "hexpm", optional: false]}], "hexpm"}, + "floki": {:hex, :floki, "0.23.0", "956ab6dba828c96e732454809fb0bd8d43ce0979b75f34de6322e73d4c917829", [:mix], [{:html_entities, "~> 0.4.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm"}, "gen_smtp": {:hex, :gen_smtp, "0.14.0", "39846a03522456077c6429b4badfd1d55e5e7d0fdfb65e935b7c5e38549d9202", [:rebar3], [], "hexpm"}, "gettext": {:hex, :gettext, "0.17.0", "abe21542c831887a2b16f4c94556db9c421ab301aee417b7c4fbde7fbdbe01ec", [:mix], [], "hexpm"}, "hackney": {:hex, :hackney, "1.15.1", "9f8f471c844b8ce395f7b6d8398139e26ddca9ebc171a8b91342ee15a19963f4", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.4", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"}, From 43f17c2e67cfb85ae469eee39b526a5baf7c7408 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Thu, 12 Sep 2019 19:04:55 +0700 Subject: [PATCH 076/272] Restore tests for `change_password` and `delete_account` --- test/web/twitter_api/util_controller_test.exs | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/test/web/twitter_api/util_controller_test.exs b/test/web/twitter_api/util_controller_test.exs index 0a2a48fb7..56e318182 100644 --- a/test/web/twitter_api/util_controller_test.exs +++ b/test/web/twitter_api/util_controller_test.exs @@ -775,4 +775,109 @@ test "with credentials, valid password and valid email", %{ assert json_response(conn, 200) == %{"status" => "success"} end end + + describe "POST /api/pleroma/change_password" do + setup [:valid_user] + + test "without credentials", %{conn: conn} do + conn = post(conn, "/api/pleroma/change_password") + assert json_response(conn, 403) == %{"error" => "Invalid credentials."} + end + + test "with credentials and invalid password", %{conn: conn, user: current_user} do + conn = + conn + |> with_credentials(current_user.nickname, "test") + |> post("/api/pleroma/change_password", %{ + "password" => "hi", + "new_password" => "newpass", + "new_password_confirmation" => "newpass" + }) + + assert json_response(conn, 200) == %{"error" => "Invalid password."} + end + + test "with credentials, valid password and new password and confirmation not matching", %{ + conn: conn, + user: current_user + } do + conn = + conn + |> with_credentials(current_user.nickname, "test") + |> post("/api/pleroma/change_password", %{ + "password" => "test", + "new_password" => "newpass", + "new_password_confirmation" => "notnewpass" + }) + + assert json_response(conn, 200) == %{ + "error" => "New password does not match confirmation." + } + end + + test "with credentials, valid password and invalid new password", %{ + conn: conn, + user: current_user + } do + conn = + conn + |> with_credentials(current_user.nickname, "test") + |> post("/api/pleroma/change_password", %{ + "password" => "test", + "new_password" => "", + "new_password_confirmation" => "" + }) + + assert json_response(conn, 200) == %{ + "error" => "New password can't be blank." + } + end + + test "with credentials, valid password and matching new password and confirmation", %{ + conn: conn, + user: current_user + } do + conn = + conn + |> with_credentials(current_user.nickname, "test") + |> post("/api/pleroma/change_password", %{ + "password" => "test", + "new_password" => "newpass", + "new_password_confirmation" => "newpass" + }) + + assert json_response(conn, 200) == %{"status" => "success"} + fetched_user = User.get_cached_by_id(current_user.id) + assert Comeonin.Pbkdf2.checkpw("newpass", fetched_user.password_hash) == true + end + end + + describe "POST /api/pleroma/delete_account" do + setup [:valid_user] + + test "without credentials", %{conn: conn} do + conn = post(conn, "/api/pleroma/delete_account") + assert json_response(conn, 403) == %{"error" => "Invalid credentials."} + end + + test "with credentials and invalid password", %{conn: conn, user: current_user} do + conn = + conn + |> with_credentials(current_user.nickname, "test") + |> post("/api/pleroma/delete_account", %{"password" => "hi"}) + + assert json_response(conn, 200) == %{"error" => "Invalid password."} + end + + test "with credentials and valid password", %{conn: conn, user: current_user} do + conn = + conn + |> with_credentials(current_user.nickname, "test") + |> post("/api/pleroma/delete_account", %{"password" => "test"}) + + assert json_response(conn, 200) == %{"status" => "success"} + # Wait a second for the started task to end + :timer.sleep(1000) + end + end end From ca88e37a8f3b0b52771f94df676e26471fb44019 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Mon, 16 Sep 2019 12:55:05 +0700 Subject: [PATCH 077/272] Fix a race condition in tests --- test/web/mastodon_api/mastodon_api_controller_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 9c5322ccb..fb04748bb 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -752,7 +752,7 @@ test "get statuses by IDs", %{conn: conn} do query_string = "ids[]=#{id1}&ids[]=#{id2}" conn = get(conn, "/api/v1/statuses/?#{query_string}") - assert [%{"id" => ^id1}, %{"id" => ^id2}] = json_response(conn, :ok) + assert [%{"id" => ^id1}, %{"id" => ^id2}] = Enum.sort_by(json_response(conn, :ok), & &1["id"]) end describe "deleting a status" do From aab264db82054df470075c65ca25c42bbcc5d7a8 Mon Sep 17 00:00:00 2001 From: Steven Fuchs Date: Mon, 16 Sep 2019 07:44:03 +0000 Subject: [PATCH 078/272] Streamer refactoring --- .gitignore | 4 + config/config.exs | 4 + lib/pleroma/activity/ir/topics.ex | 63 ++++ lib/pleroma/application.ex | 2 +- lib/pleroma/notification.ex | 6 +- lib/pleroma/web/activity_pub/activity_pub.ex | 48 +-- .../web/mastodon_api/websocket_handler.ex | 7 +- lib/pleroma/web/streamer.ex | 318 ------------------ lib/pleroma/web/streamer/ping.ex | 33 ++ lib/pleroma/web/streamer/state.ex | 68 ++++ lib/pleroma/web/streamer/streamer.ex | 55 +++ lib/pleroma/web/streamer/streamer_socket.ex | 31 ++ lib/pleroma/web/streamer/supervisor.ex | 33 ++ lib/pleroma/web/streamer/worker.ex | 220 ++++++++++++ lib/pleroma/web/views/streamer_view.ex | 66 ++++ mix.exs | 1 + mix.lock | 1 + test/activity/ir/topics_test.exs | 141 ++++++++ test/integration/mastodon_websocket_test.exs | 16 +- test/notification_test.exs | 11 +- test/support/conn_case.ex | 4 + test/support/data_case.ex | 4 + test/web/activity_pub/activity_pub_test.exs | 4 +- test/web/streamer/ping_test.exs | 36 ++ test/web/streamer/state_test.exs | 54 +++ test/web/{ => streamer}/streamer_test.exs | 105 +++--- 26 files changed, 888 insertions(+), 447 deletions(-) create mode 100644 lib/pleroma/activity/ir/topics.ex delete mode 100644 lib/pleroma/web/streamer.ex create mode 100644 lib/pleroma/web/streamer/ping.ex create mode 100644 lib/pleroma/web/streamer/state.ex create mode 100644 lib/pleroma/web/streamer/streamer.ex create mode 100644 lib/pleroma/web/streamer/streamer_socket.ex create mode 100644 lib/pleroma/web/streamer/supervisor.ex create mode 100644 lib/pleroma/web/streamer/worker.ex create mode 100644 lib/pleroma/web/views/streamer_view.ex create mode 100644 test/activity/ir/topics_test.exs create mode 100644 test/web/streamer/ping_test.exs create mode 100644 test/web/streamer/state_test.exs rename test/web/{ => streamer}/streamer_test.exs (86%) diff --git a/.gitignore b/.gitignore index 4e71a7df0..3b0c7d361 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,7 @@ docs/generated_config.md # Code test coverage /cover /Elixir.*.coverdata + +.idea +pleroma.iml + diff --git a/config/config.exs b/config/config.exs index ab6e00c98..b1b98af93 100644 --- a/config/config.exs +++ b/config/config.exs @@ -331,6 +331,10 @@ follow_handshake_timeout: 500, sign_object_fetches: true +config :pleroma, :streamer, + workers: 3, + overflow_workers: 2 + config :pleroma, :user, deny_follow_blocked: true config :pleroma, :mrf_normalize_markup, scrub_policy: Pleroma.HTML.Scrubber.Default diff --git a/lib/pleroma/activity/ir/topics.ex b/lib/pleroma/activity/ir/topics.ex new file mode 100644 index 000000000..010897abc --- /dev/null +++ b/lib/pleroma/activity/ir/topics.ex @@ -0,0 +1,63 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Activity.Ir.Topics do + alias Pleroma.Object + alias Pleroma.Web.ActivityPub.Visibility + + def get_activity_topics(activity) do + activity + |> Object.normalize() + |> generate_topics(activity) + |> List.flatten() + end + + defp generate_topics(%{data: %{"type" => "Answer"}}, _) do + [] + end + + defp generate_topics(object, activity) do + ["user", "list"] ++ visibility_tags(object, activity) + end + + defp visibility_tags(object, activity) do + case Visibility.get_visibility(activity) do + "public" -> + if activity.local do + ["public", "public:local"] + else + ["public"] + end + |> item_creation_tags(object, activity) + + "direct" -> + ["direct"] + + _ -> + [] + end + end + + defp item_creation_tags(tags, %{data: %{"type" => "Create"}} = object, activity) do + tags ++ hashtags_to_topics(object) ++ attachment_topics(object, activity) + end + + defp item_creation_tags(tags, _, _) do + tags + end + + defp hashtags_to_topics(%{data: %{"tag" => tags}}) do + tags + |> Enum.filter(&is_bitstring(&1)) + |> Enum.map(fn tag -> "hashtag:" <> tag end) + end + + defp hashtags_to_topics(_), do: [] + + defp attachment_topics(%{data: %{"attachment" => []}}, _act), do: [] + + defp attachment_topics(_object, %{local: true}), do: ["public:media", "public:local:media"] + + defp attachment_topics(_object, _act), do: ["public:media"] +end diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 49094704b..3b37ce630 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -141,7 +141,7 @@ defp oauth_cleanup_enabled?, defp streamer_child(:test), do: [] defp streamer_child(_) do - [Pleroma.Web.Streamer] + [Pleroma.Web.Streamer.supervisor()] end defp oauth_cleanup_child(true), diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index b7c880c51..8012389ac 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -210,8 +210,10 @@ def create_notification(%Activity{} = activity, %User{} = user) do unless skip?(activity, user) do notification = %Notification{user_id: user.id, activity: activity} {:ok, notification} = Repo.insert(notification) - Streamer.stream("user", notification) - Streamer.stream("user:notification", notification) + + ["user", "user:notification"] + |> Streamer.stream(notification) + Push.send(notification) notification end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 41f6a0f1f..bc5ae7fbf 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.Activity + alias Pleroma.Activity.Ir.Topics alias Pleroma.Config alias Pleroma.Conversation alias Pleroma.Notification @@ -16,6 +17,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.User alias Pleroma.Web.ActivityPub.MRF alias Pleroma.Web.ActivityPub.Transmogrifier + alias Pleroma.Web.Streamer alias Pleroma.Web.WebFinger alias Pleroma.Workers.BackgroundWorker @@ -187,9 +189,7 @@ def stream_out_participations(participations) do participations |> Repo.preload(:user) - Enum.each(participations, fn participation -> - Pleroma.Web.Streamer.stream("participation", participation) - end) + Streamer.stream("participation", participations) end def stream_out_participations(%Object{data: %{"context" => context}}, user) do @@ -208,41 +208,15 @@ def stream_out_participations(%Object{data: %{"context" => context}}, user) do def stream_out_participations(_, _), do: :noop - def stream_out(activity) do - if activity.data["type"] in ["Create", "Announce", "Delete"] do - object = Object.normalize(activity) - # Do not stream out poll replies - unless object.data["type"] == "Answer" do - Pleroma.Web.Streamer.stream("user", activity) - Pleroma.Web.Streamer.stream("list", activity) + def stream_out(%Activity{data: %{"type" => data_type}} = activity) + when data_type in ["Create", "Announce", "Delete"] do + activity + |> Topics.get_activity_topics() + |> Streamer.stream(activity) + end - if get_visibility(activity) == "public" do - Pleroma.Web.Streamer.stream("public", activity) - - if activity.local do - Pleroma.Web.Streamer.stream("public:local", activity) - end - - if activity.data["type"] in ["Create"] do - object.data - |> Map.get("tag", []) - |> Enum.filter(fn tag -> is_bitstring(tag) end) - |> Enum.each(fn tag -> Pleroma.Web.Streamer.stream("hashtag:" <> tag, activity) end) - - if object.data["attachment"] != [] do - Pleroma.Web.Streamer.stream("public:media", activity) - - if activity.local do - Pleroma.Web.Streamer.stream("public:local:media", activity) - end - end - end - else - if get_visibility(activity) == "direct", - do: Pleroma.Web.Streamer.stream("direct", activity) - end - end - end + def stream_out(_activity) do + :noop end def create(%{to: to, actor: actor, context: context, object: object} = params, fake \\ false) do diff --git a/lib/pleroma/web/mastodon_api/websocket_handler.ex b/lib/pleroma/web/mastodon_api/websocket_handler.ex index dbd3542ea..3c26eb406 100644 --- a/lib/pleroma/web/mastodon_api/websocket_handler.ex +++ b/lib/pleroma/web/mastodon_api/websocket_handler.ex @@ -8,6 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.OAuth.Token + alias Pleroma.Web.Streamer @behaviour :cowboy_websocket @@ -24,7 +25,7 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do ] @anonymous_streams ["public", "public:local", "hashtag"] - # Handled by periodic keepalive in Pleroma.Web.Streamer. + # Handled by periodic keepalive in Pleroma.Web.Streamer.Ping. @timeout :infinity def init(%{qs: qs} = req, state) do @@ -65,7 +66,7 @@ def websocket_info(:subscribe, state) do }, topic #{state.topic}" ) - Pleroma.Web.Streamer.add_socket(state.topic, streamer_socket(state)) + Streamer.add_socket(state.topic, streamer_socket(state)) {:ok, state} end @@ -80,7 +81,7 @@ def terminate(reason, _req, state) do }, topic #{state.topic || "?"}: #{inspect(reason)}" ) - Pleroma.Web.Streamer.remove_socket(state.topic, streamer_socket(state)) + Streamer.remove_socket(state.topic, streamer_socket(state)) :ok end diff --git a/lib/pleroma/web/streamer.ex b/lib/pleroma/web/streamer.ex deleted file mode 100644 index 587c43f40..000000000 --- a/lib/pleroma/web/streamer.ex +++ /dev/null @@ -1,318 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.Streamer do - use GenServer - require Logger - alias Pleroma.Activity - alias Pleroma.Config - alias Pleroma.Conversation.Participation - alias Pleroma.Notification - alias Pleroma.Object - alias Pleroma.User - alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Web.ActivityPub.Visibility - alias Pleroma.Web.CommonAPI - alias Pleroma.Web.MastodonAPI.NotificationView - - @keepalive_interval :timer.seconds(30) - - def start_link(_) do - GenServer.start_link(__MODULE__, %{}, name: __MODULE__) - end - - def add_socket(topic, socket) do - GenServer.cast(__MODULE__, %{action: :add, socket: socket, topic: topic}) - end - - def remove_socket(topic, socket) do - GenServer.cast(__MODULE__, %{action: :remove, socket: socket, topic: topic}) - end - - def stream(topic, item) do - GenServer.cast(__MODULE__, %{action: :stream, topic: topic, item: item}) - end - - def init(args) do - Process.send_after(self(), %{action: :ping}, @keepalive_interval) - - {:ok, args} - end - - def handle_info(%{action: :ping}, topics) do - topics - |> Map.values() - |> List.flatten() - |> Enum.each(fn socket -> - Logger.debug("Sending keepalive ping") - send(socket.transport_pid, {:text, ""}) - end) - - Process.send_after(self(), %{action: :ping}, @keepalive_interval) - - {:noreply, topics} - end - - def handle_cast(%{action: :stream, topic: "direct", item: item}, topics) do - recipient_topics = - User.get_recipients_from_activity(item) - |> Enum.map(fn %{id: id} -> "direct:#{id}" end) - - Enum.each(recipient_topics || [], fn user_topic -> - Logger.debug("Trying to push direct message to #{user_topic}\n\n") - push_to_socket(topics, user_topic, item) - end) - - {:noreply, topics} - end - - def handle_cast(%{action: :stream, topic: "participation", item: participation}, topics) do - user_topic = "direct:#{participation.user_id}" - Logger.debug("Trying to push a conversation participation to #{user_topic}\n\n") - - push_to_socket(topics, user_topic, participation) - - {:noreply, topics} - end - - def handle_cast(%{action: :stream, topic: "list", item: item}, topics) do - # filter the recipient list if the activity is not public, see #270. - recipient_lists = - case Visibility.is_public?(item) do - true -> - Pleroma.List.get_lists_from_activity(item) - - _ -> - Pleroma.List.get_lists_from_activity(item) - |> Enum.filter(fn list -> - owner = User.get_cached_by_id(list.user_id) - - Visibility.visible_for_user?(item, owner) - end) - end - - recipient_topics = - recipient_lists - |> Enum.map(fn %{id: id} -> "list:#{id}" end) - - Enum.each(recipient_topics || [], fn list_topic -> - Logger.debug("Trying to push message to #{list_topic}\n\n") - push_to_socket(topics, list_topic, item) - end) - - {:noreply, topics} - end - - def handle_cast( - %{action: :stream, topic: topic, item: %Notification{} = item}, - topics - ) - when topic in ["user", "user:notification"] do - topics - |> Map.get("#{topic}:#{item.user_id}", []) - |> Enum.each(fn socket -> - with %User{} = user <- User.get_cached_by_ap_id(socket.assigns[:user].ap_id), - true <- should_send?(user, item) do - send( - socket.transport_pid, - {:text, represent_notification(socket.assigns[:user], item)} - ) - end - end) - - {:noreply, topics} - end - - def handle_cast(%{action: :stream, topic: "user", item: item}, topics) do - Logger.debug("Trying to push to users") - - recipient_topics = - User.get_recipients_from_activity(item) - |> Enum.map(fn %{id: id} -> "user:#{id}" end) - - Enum.each(recipient_topics, fn topic -> - push_to_socket(topics, topic, item) - end) - - {:noreply, topics} - end - - def handle_cast(%{action: :stream, topic: topic, item: item}, topics) do - Logger.debug("Trying to push to #{topic}") - Logger.debug("Pushing item to #{topic}") - push_to_socket(topics, topic, item) - {:noreply, topics} - end - - def handle_cast(%{action: :add, topic: topic, socket: socket}, sockets) do - topic = internal_topic(topic, socket) - sockets_for_topic = sockets[topic] || [] - sockets_for_topic = Enum.uniq([socket | sockets_for_topic]) - sockets = Map.put(sockets, topic, sockets_for_topic) - Logger.debug("Got new conn for #{topic}") - {:noreply, sockets} - end - - def handle_cast(%{action: :remove, topic: topic, socket: socket}, sockets) do - topic = internal_topic(topic, socket) - sockets_for_topic = sockets[topic] || [] - sockets_for_topic = List.delete(sockets_for_topic, socket) - sockets = Map.put(sockets, topic, sockets_for_topic) - Logger.debug("Removed conn for #{topic}") - {:noreply, sockets} - end - - def handle_cast(m, state) do - Logger.info("Unknown: #{inspect(m)}, #{inspect(state)}") - {:noreply, state} - end - - defp represent_update(%Activity{} = activity, %User{} = user) do - %{ - event: "update", - payload: - Pleroma.Web.MastodonAPI.StatusView.render( - "status.json", - activity: activity, - for: user - ) - |> Jason.encode!() - } - |> Jason.encode!() - end - - defp represent_update(%Activity{} = activity) do - %{ - event: "update", - payload: - Pleroma.Web.MastodonAPI.StatusView.render( - "status.json", - activity: activity - ) - |> Jason.encode!() - } - |> Jason.encode!() - end - - def represent_conversation(%Participation{} = participation) do - %{ - event: "conversation", - payload: - Pleroma.Web.MastodonAPI.ConversationView.render("participation.json", %{ - participation: participation, - for: participation.user - }) - |> Jason.encode!() - } - |> Jason.encode!() - end - - @spec represent_notification(User.t(), Notification.t()) :: binary() - defp represent_notification(%User{} = user, %Notification{} = notify) do - %{ - event: "notification", - payload: - NotificationView.render( - "show.json", - %{notification: notify, for: user} - ) - |> Jason.encode!() - } - |> Jason.encode!() - end - - defp should_send?(%User{} = user, %Activity{} = item) do - blocks = user.info.blocks || [] - mutes = user.info.mutes || [] - reblog_mutes = user.info.muted_reblogs || [] - domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.info.domain_blocks) - - with parent when not is_nil(parent) <- Object.normalize(item), - true <- Enum.all?([blocks, mutes, reblog_mutes], &(item.actor not in &1)), - true <- Enum.all?([blocks, mutes], &(parent.data["actor"] not in &1)), - %{host: item_host} <- URI.parse(item.actor), - %{host: parent_host} <- URI.parse(parent.data["actor"]), - false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, item_host), - false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, parent_host), - true <- thread_containment(item, user), - false <- CommonAPI.thread_muted?(user, item) do - true - else - _ -> false - end - end - - defp should_send?(%User{} = user, %Notification{activity: activity}) do - should_send?(user, activity) - end - - def push_to_socket(topics, topic, %Activity{data: %{"type" => "Announce"}} = item) do - Enum.each(topics[topic] || [], fn socket -> - # Get the current user so we have up-to-date blocks etc. - if socket.assigns[:user] do - user = User.get_cached_by_ap_id(socket.assigns[:user].ap_id) - - if should_send?(user, item) do - send(socket.transport_pid, {:text, represent_update(item, user)}) - end - else - send(socket.transport_pid, {:text, represent_update(item)}) - end - end) - end - - def push_to_socket(topics, topic, %Participation{} = participation) do - Enum.each(topics[topic] || [], fn socket -> - send(socket.transport_pid, {:text, represent_conversation(participation)}) - end) - end - - def push_to_socket(topics, topic, %Activity{ - data: %{"type" => "Delete", "deleted_activity_id" => deleted_activity_id} - }) do - Enum.each(topics[topic] || [], fn socket -> - send( - socket.transport_pid, - {:text, %{event: "delete", payload: to_string(deleted_activity_id)} |> Jason.encode!()} - ) - end) - end - - def push_to_socket(_topics, _topic, %Activity{data: %{"type" => "Delete"}}), do: :noop - - def push_to_socket(topics, topic, item) do - Enum.each(topics[topic] || [], fn socket -> - # Get the current user so we have up-to-date blocks etc. - if socket.assigns[:user] do - user = User.get_cached_by_ap_id(socket.assigns[:user].ap_id) - blocks = user.info.blocks || [] - mutes = user.info.mutes || [] - - with true <- Enum.all?([blocks, mutes], &(item.actor not in &1)), - true <- thread_containment(item, user) do - send(socket.transport_pid, {:text, represent_update(item, user)}) - end - else - send(socket.transport_pid, {:text, represent_update(item)}) - end - end) - end - - defp internal_topic(topic, socket) when topic in ~w[user user:notification direct] do - "#{topic}:#{socket.assigns[:user].id}" - end - - defp internal_topic(topic, _), do: topic - - @spec thread_containment(Activity.t(), User.t()) :: boolean() - defp thread_containment(_activity, %User{info: %{skip_thread_containment: true}}), do: true - - defp thread_containment(activity, user) do - if Config.get([:instance, :skip_thread_containment]) do - true - else - ActivityPub.contain_activity(activity, user) - end - end -end diff --git a/lib/pleroma/web/streamer/ping.ex b/lib/pleroma/web/streamer/ping.ex new file mode 100644 index 000000000..f77cbb95c --- /dev/null +++ b/lib/pleroma/web/streamer/ping.ex @@ -0,0 +1,33 @@ +defmodule Pleroma.Web.Streamer.Ping do + use GenServer + require Logger + + alias Pleroma.Web.Streamer.State + alias Pleroma.Web.Streamer.StreamerSocket + + @keepalive_interval :timer.seconds(30) + + def start_link(opts) do + ping_interval = Keyword.get(opts, :ping_interval, @keepalive_interval) + GenServer.start_link(__MODULE__, %{ping_interval: ping_interval}, name: __MODULE__) + end + + def init(%{ping_interval: ping_interval} = args) do + Process.send_after(self(), :ping, ping_interval) + {:ok, args} + end + + def handle_info(:ping, %{ping_interval: ping_interval} = state) do + State.get_sockets() + |> Map.values() + |> List.flatten() + |> Enum.each(fn %StreamerSocket{transport_pid: transport_pid} -> + Logger.debug("Sending keepalive ping") + send(transport_pid, {:text, ""}) + end) + + Process.send_after(self(), :ping, ping_interval) + + {:noreply, state} + end +end diff --git a/lib/pleroma/web/streamer/state.ex b/lib/pleroma/web/streamer/state.ex new file mode 100644 index 000000000..7b5199068 --- /dev/null +++ b/lib/pleroma/web/streamer/state.ex @@ -0,0 +1,68 @@ +defmodule Pleroma.Web.Streamer.State do + use GenServer + require Logger + + alias Pleroma.Web.Streamer.StreamerSocket + + def start_link(_) do + GenServer.start_link(__MODULE__, %{sockets: %{}}, name: __MODULE__) + end + + def add_socket(topic, socket) do + GenServer.call(__MODULE__, {:add, socket, topic}) + end + + def remove_socket(topic, socket) do + GenServer.call(__MODULE__, {:remove, socket, topic}) + end + + def get_sockets do + %{sockets: stream_sockets} = GenServer.call(__MODULE__, :get_state) + stream_sockets + end + + def init(init_arg) do + {:ok, init_arg} + end + + def handle_call(:get_state, _from, state) do + {:reply, state, state} + end + + def handle_call({:add, socket, topic}, _from, %{sockets: sockets} = state) do + internal_topic = internal_topic(topic, socket) + stream_socket = StreamerSocket.from_socket(socket) + + sockets_for_topic = + sockets + |> Map.get(internal_topic, []) + |> List.insert_at(0, stream_socket) + |> Enum.uniq() + + state = put_in(state, [:sockets, internal_topic], sockets_for_topic) + Logger.debug("Got new conn for #{topic}") + {:reply, state, state} + end + + def handle_call({:remove, socket, topic}, _from, %{sockets: sockets} = state) do + internal_topic = internal_topic(topic, socket) + stream_socket = StreamerSocket.from_socket(socket) + + sockets_for_topic = + sockets + |> Map.get(internal_topic, []) + |> List.delete(stream_socket) + + state = Kernel.put_in(state, [:sockets, internal_topic], sockets_for_topic) + {:reply, state, state} + end + + defp internal_topic(topic, socket) + when topic in ~w[user user:notification direct] do + "#{topic}:#{socket.assigns[:user].id}" + end + + defp internal_topic(topic, _) do + topic + end +end diff --git a/lib/pleroma/web/streamer/streamer.ex b/lib/pleroma/web/streamer/streamer.ex new file mode 100644 index 000000000..8cf719277 --- /dev/null +++ b/lib/pleroma/web/streamer/streamer.ex @@ -0,0 +1,55 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Streamer do + alias Pleroma.Web.Streamer.State + alias Pleroma.Web.Streamer.Worker + + @timeout 60_000 + @mix_env Mix.env() + + def add_socket(topic, socket) do + State.add_socket(topic, socket) + end + + def remove_socket(topic, socket) do + State.remove_socket(topic, socket) + end + + def get_sockets do + State.get_sockets() + end + + def stream(topics, items) do + if should_send?() do + Task.async(fn -> + :poolboy.transaction( + :streamer_worker, + &Worker.stream(&1, topics, items), + @timeout + ) + end) + end + end + + def supervisor, do: Pleroma.Web.Streamer.Supervisor + + defp should_send? do + handle_should_send(@mix_env) + end + + defp handle_should_send(:test) do + case Process.whereis(:streamer_worker) do + nil -> + false + + pid -> + Process.alive?(pid) + end + end + + defp handle_should_send(_) do + true + end +end diff --git a/lib/pleroma/web/streamer/streamer_socket.ex b/lib/pleroma/web/streamer/streamer_socket.ex new file mode 100644 index 000000000..f006c0306 --- /dev/null +++ b/lib/pleroma/web/streamer/streamer_socket.ex @@ -0,0 +1,31 @@ +defmodule Pleroma.Web.Streamer.StreamerSocket do + defstruct transport_pid: nil, user: nil + + alias Pleroma.User + alias Pleroma.Web.Streamer.StreamerSocket + + def from_socket(%{ + transport_pid: transport_pid, + assigns: %{user: nil} + }) do + %StreamerSocket{ + transport_pid: transport_pid + } + end + + def from_socket(%{ + transport_pid: transport_pid, + assigns: %{user: %User{} = user} + }) do + %StreamerSocket{ + transport_pid: transport_pid, + user: user + } + end + + def from_socket(%{transport_pid: transport_pid}) do + %StreamerSocket{ + transport_pid: transport_pid + } + end +end diff --git a/lib/pleroma/web/streamer/supervisor.ex b/lib/pleroma/web/streamer/supervisor.ex new file mode 100644 index 000000000..6afe19323 --- /dev/null +++ b/lib/pleroma/web/streamer/supervisor.ex @@ -0,0 +1,33 @@ +defmodule Pleroma.Web.Streamer.Supervisor do + use Supervisor + + def start_link(opts) do + Supervisor.start_link(__MODULE__, opts, name: __MODULE__) + end + + def init(args) do + children = [ + {Pleroma.Web.Streamer.State, args}, + {Pleroma.Web.Streamer.Ping, args}, + :poolboy.child_spec(:streamer_worker, poolboy_config()) + ] + + opts = [strategy: :one_for_one, name: Pleroma.Web.Streamer.Supervisor] + Supervisor.init(children, opts) + end + + defp poolboy_config do + opts = + Pleroma.Config.get(:streamer, + workers: 3, + overflow_workers: 2 + ) + + [ + {:name, {:local, :streamer_worker}}, + {:worker_module, Pleroma.Web.Streamer.Worker}, + {:size, opts[:workers]}, + {:max_overflow, opts[:overflow_workers]} + ] + end +end diff --git a/lib/pleroma/web/streamer/worker.ex b/lib/pleroma/web/streamer/worker.ex new file mode 100644 index 000000000..5804508eb --- /dev/null +++ b/lib/pleroma/web/streamer/worker.ex @@ -0,0 +1,220 @@ +defmodule Pleroma.Web.Streamer.Worker do + use GenServer + + require Logger + + alias Pleroma.Activity + alias Pleroma.Config + alias Pleroma.Conversation.Participation + alias Pleroma.Notification + alias Pleroma.Object + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Visibility + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.Streamer.State + alias Pleroma.Web.Streamer.StreamerSocket + alias Pleroma.Web.StreamerView + + def start_link(_) do + GenServer.start_link(__MODULE__, %{}, []) + end + + def init(init_arg) do + {:ok, init_arg} + end + + def stream(pid, topics, items) do + GenServer.call(pid, {:stream, topics, items}) + end + + def handle_call({:stream, topics, item}, _from, state) when is_list(topics) do + Enum.each(topics, fn t -> + do_stream(%{topic: t, item: item}) + end) + + {:reply, state, state} + end + + def handle_call({:stream, topic, items}, _from, state) when is_list(items) do + Enum.each(items, fn i -> + do_stream(%{topic: topic, item: i}) + end) + + {:reply, state, state} + end + + def handle_call({:stream, topic, item}, _from, state) do + do_stream(%{topic: topic, item: item}) + + {:reply, state, state} + end + + defp do_stream(%{topic: "direct", item: item}) do + recipient_topics = + User.get_recipients_from_activity(item) + |> Enum.map(fn %{id: id} -> "direct:#{id}" end) + + Enum.each(recipient_topics, fn user_topic -> + Logger.debug("Trying to push direct message to #{user_topic}\n\n") + push_to_socket(State.get_sockets(), user_topic, item) + end) + end + + defp do_stream(%{topic: "participation", item: participation}) do + user_topic = "direct:#{participation.user_id}" + Logger.debug("Trying to push a conversation participation to #{user_topic}\n\n") + + push_to_socket(State.get_sockets(), user_topic, participation) + end + + defp do_stream(%{topic: "list", item: item}) do + # filter the recipient list if the activity is not public, see #270. + recipient_lists = + case Visibility.is_public?(item) do + true -> + Pleroma.List.get_lists_from_activity(item) + + _ -> + Pleroma.List.get_lists_from_activity(item) + |> Enum.filter(fn list -> + owner = User.get_cached_by_id(list.user_id) + + Visibility.visible_for_user?(item, owner) + end) + end + + recipient_topics = + recipient_lists + |> Enum.map(fn %{id: id} -> "list:#{id}" end) + + Enum.each(recipient_topics, fn list_topic -> + Logger.debug("Trying to push message to #{list_topic}\n\n") + push_to_socket(State.get_sockets(), list_topic, item) + end) + end + + defp do_stream(%{topic: topic, item: %Notification{} = item}) + when topic in ["user", "user:notification"] do + State.get_sockets() + |> Map.get("#{topic}:#{item.user_id}", []) + |> Enum.each(fn %StreamerSocket{transport_pid: transport_pid, user: socket_user} -> + with %User{} = user <- User.get_cached_by_ap_id(socket_user.ap_id), + true <- should_send?(user, item) do + send(transport_pid, {:text, StreamerView.render("notification.json", socket_user, item)}) + end + end) + end + + defp do_stream(%{topic: "user", item: item}) do + Logger.debug("Trying to push to users") + + recipient_topics = + User.get_recipients_from_activity(item) + |> Enum.map(fn %{id: id} -> "user:#{id}" end) + + Enum.each(recipient_topics, fn topic -> + push_to_socket(State.get_sockets(), topic, item) + end) + end + + defp do_stream(%{topic: topic, item: item}) do + Logger.debug("Trying to push to #{topic}") + Logger.debug("Pushing item to #{topic}") + push_to_socket(State.get_sockets(), topic, item) + end + + defp should_send?(%User{} = user, %Activity{} = item) do + blocks = user.info.blocks || [] + mutes = user.info.mutes || [] + reblog_mutes = user.info.muted_reblogs || [] + domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.info.domain_blocks) + + with parent when not is_nil(parent) <- Object.normalize(item), + true <- Enum.all?([blocks, mutes, reblog_mutes], &(item.actor not in &1)), + true <- Enum.all?([blocks, mutes], &(parent.data["actor"] not in &1)), + %{host: item_host} <- URI.parse(item.actor), + %{host: parent_host} <- URI.parse(parent.data["actor"]), + false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, item_host), + false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, parent_host), + true <- thread_containment(item, user), + false <- CommonAPI.thread_muted?(user, item) do + true + else + _ -> false + end + end + + defp should_send?(%User{} = user, %Notification{activity: activity}) do + should_send?(user, activity) + end + + def push_to_socket(topics, topic, %Activity{data: %{"type" => "Announce"}} = item) do + Enum.each(topics[topic] || [], fn %StreamerSocket{ + transport_pid: transport_pid, + user: socket_user + } -> + # Get the current user so we have up-to-date blocks etc. + if socket_user do + user = User.get_cached_by_ap_id(socket_user.ap_id) + + if should_send?(user, item) do + send(transport_pid, {:text, StreamerView.render("update.json", item, user)}) + end + else + send(transport_pid, {:text, StreamerView.render("update.json", item)}) + end + end) + end + + def push_to_socket(topics, topic, %Participation{} = participation) do + Enum.each(topics[topic] || [], fn %StreamerSocket{transport_pid: transport_pid} -> + send(transport_pid, {:text, StreamerView.render("conversation.json", participation)}) + end) + end + + def push_to_socket(topics, topic, %Activity{ + data: %{"type" => "Delete", "deleted_activity_id" => deleted_activity_id} + }) do + Enum.each(topics[topic] || [], fn %StreamerSocket{transport_pid: transport_pid} -> + send( + transport_pid, + {:text, %{event: "delete", payload: to_string(deleted_activity_id)} |> Jason.encode!()} + ) + end) + end + + def push_to_socket(_topics, _topic, %Activity{data: %{"type" => "Delete"}}), do: :noop + + def push_to_socket(topics, topic, item) do + Enum.each(topics[topic] || [], fn %StreamerSocket{ + transport_pid: transport_pid, + user: socket_user + } -> + # Get the current user so we have up-to-date blocks etc. + if socket_user do + user = User.get_cached_by_ap_id(socket_user.ap_id) + blocks = user.info.blocks || [] + mutes = user.info.mutes || [] + + with true <- Enum.all?([blocks, mutes], &(item.actor not in &1)), + true <- thread_containment(item, user) do + send(transport_pid, {:text, StreamerView.render("update.json", item, user)}) + end + else + send(transport_pid, {:text, StreamerView.render("update.json", item)}) + end + end) + end + + @spec thread_containment(Activity.t(), User.t()) :: boolean() + defp thread_containment(_activity, %User{info: %{skip_thread_containment: true}}), do: true + + defp thread_containment(activity, user) do + if Config.get([:instance, :skip_thread_containment]) do + true + else + ActivityPub.contain_activity(activity, user) + end + end +end diff --git a/lib/pleroma/web/views/streamer_view.ex b/lib/pleroma/web/views/streamer_view.ex new file mode 100644 index 000000000..b13030fa0 --- /dev/null +++ b/lib/pleroma/web/views/streamer_view.ex @@ -0,0 +1,66 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.StreamerView do + use Pleroma.Web, :view + + alias Pleroma.Activity + alias Pleroma.Conversation.Participation + alias Pleroma.Notification + alias Pleroma.User + alias Pleroma.Web.MastodonAPI.NotificationView + + def render("update.json", %Activity{} = activity, %User{} = user) do + %{ + event: "update", + payload: + Pleroma.Web.MastodonAPI.StatusView.render( + "status.json", + activity: activity, + for: user + ) + |> Jason.encode!() + } + |> Jason.encode!() + end + + def render("notification.json", %User{} = user, %Notification{} = notify) do + %{ + event: "notification", + payload: + NotificationView.render( + "show.json", + %{notification: notify, for: user} + ) + |> Jason.encode!() + } + |> Jason.encode!() + end + + def render("update.json", %Activity{} = activity) do + %{ + event: "update", + payload: + Pleroma.Web.MastodonAPI.StatusView.render( + "status.json", + activity: activity + ) + |> Jason.encode!() + } + |> Jason.encode!() + end + + def render("conversation.json", %Participation{} = participation) do + %{ + event: "conversation", + payload: + Pleroma.Web.MastodonAPI.ConversationView.render("participation.json", %{ + participation: participation, + for: participation.user + }) + |> Jason.encode!() + } + |> Jason.encode!() + end +end diff --git a/mix.exs b/mix.exs index f1e98585b..911ebad1d 100644 --- a/mix.exs +++ b/mix.exs @@ -144,6 +144,7 @@ defp deps do git: "https://git.pleroma.social/pleroma/http_signatures.git", ref: "293d77bb6f4a67ac8bde1428735c3b42f22cbb30"}, {:telemetry, "~> 0.3"}, + {:poolboy, "~> 1.5"}, {:prometheus_ex, "~> 3.0"}, {:prometheus_plugs, "~> 1.1"}, {:prometheus_phoenix, "~> 1.3"}, diff --git a/mix.lock b/mix.lock index 41697dd5c..0bf6a811e 100644 --- a/mix.lock +++ b/mix.lock @@ -73,6 +73,7 @@ "plug_crypto": {:hex, :plug_crypto, "1.0.0", "18e49317d3fa343f24620ed22795ec29d4a5e602d52d1513ccea0b07d8ea7d4d", [:mix], [], "hexpm"}, "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"}, + "poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm"}, "postgrex": {:hex, :postgrex, "0.14.3", "5754dee2fdf6e9e508cbf49ab138df964278700b764177e8f3871e658b345a1e", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, "prometheus": {:hex, :prometheus, "4.4.1", "1e96073b3ed7788053768fea779cbc896ddc3bdd9ba60687f2ad50b252ac87d6", [:mix, :rebar3], [], "hexpm"}, "prometheus_ecto": {:hex, :prometheus_ecto, "1.4.1", "6c768ea9654de871e5b32fab2eac348467b3021604ebebbcbd8bcbe806a65ed5", [:mix], [{:ecto, "~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.1 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}], "hexpm"}, diff --git a/test/activity/ir/topics_test.exs b/test/activity/ir/topics_test.exs new file mode 100644 index 000000000..e75f83586 --- /dev/null +++ b/test/activity/ir/topics_test.exs @@ -0,0 +1,141 @@ +defmodule Pleroma.Activity.Ir.TopicsTest do + use Pleroma.DataCase + + alias Pleroma.Activity + alias Pleroma.Activity.Ir.Topics + alias Pleroma.Object + + require Pleroma.Constants + + describe "poll answer" do + test "produce no topics" do + activity = %Activity{object: %Object{data: %{"type" => "Answer"}}} + + assert [] == Topics.get_activity_topics(activity) + end + end + + describe "non poll answer" do + test "always add user and list topics" do + activity = %Activity{object: %Object{data: %{"type" => "FooBar"}}} + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "user") + assert Enum.member?(topics, "list") + end + end + + describe "public visibility" do + setup do + activity = %Activity{ + object: %Object{data: %{"type" => "Note"}}, + data: %{"to" => [Pleroma.Constants.as_public()]} + } + + {:ok, activity: activity} + end + + test "produces public topic", %{activity: activity} do + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "public") + end + + test "local action produces public:local topic", %{activity: activity} do + activity = %{activity | local: true} + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "public:local") + end + + test "non-local action does not produce public:local topic", %{activity: activity} do + activity = %{activity | local: false} + topics = Topics.get_activity_topics(activity) + + refute Enum.member?(topics, "public:local") + end + end + + describe "public visibility create events" do + setup do + activity = %Activity{ + object: %Object{data: %{"type" => "Create", "attachment" => []}}, + data: %{"to" => [Pleroma.Constants.as_public()]} + } + + {:ok, activity: activity} + end + + test "with no attachments doesn't produce public:media topics", %{activity: activity} do + topics = Topics.get_activity_topics(activity) + + refute Enum.member?(topics, "public:media") + refute Enum.member?(topics, "public:local:media") + end + + test "converts tags to hash tags", %{activity: %{object: %{data: data} = object} = activity} do + tagged_data = Map.put(data, "tag", ["foo", "bar"]) + activity = %{activity | object: %{object | data: tagged_data}} + + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "hashtag:foo") + assert Enum.member?(topics, "hashtag:bar") + end + + test "only converts strinngs to hash tags", %{ + activity: %{object: %{data: data} = object} = activity + } do + tagged_data = Map.put(data, "tag", [2]) + activity = %{activity | object: %{object | data: tagged_data}} + + topics = Topics.get_activity_topics(activity) + + refute Enum.member?(topics, "hashtag:2") + end + end + + describe "public visibility create events with attachments" do + setup do + activity = %Activity{ + object: %Object{data: %{"type" => "Create", "attachment" => ["foo"]}}, + data: %{"to" => [Pleroma.Constants.as_public()]} + } + + {:ok, activity: activity} + end + + test "produce public:media topics", %{activity: activity} do + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "public:media") + end + + test "local produces public:local:media topics", %{activity: activity} do + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "public:local:media") + end + + test "non-local doesn't produce public:local:media topics", %{activity: activity} do + activity = %{activity | local: false} + + topics = Topics.get_activity_topics(activity) + + refute Enum.member?(topics, "public:local:media") + end + end + + describe "non-public visibility" do + test "produces direct topic" do + activity = %Activity{object: %Object{data: %{"type" => "Note"}}, data: %{"to" => []}} + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "direct") + refute Enum.member?(topics, "public") + refute Enum.member?(topics, "public:local") + refute Enum.member?(topics, "public:media") + refute Enum.member?(topics, "public:local:media") + end + end +end diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs index 63bf73412..c04262808 100644 --- a/test/integration/mastodon_websocket_test.exs +++ b/test/integration/mastodon_websocket_test.exs @@ -11,7 +11,6 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do alias Pleroma.Integration.WebsocketClient alias Pleroma.Web.CommonAPI alias Pleroma.Web.OAuth - alias Pleroma.Web.Streamer @path Pleroma.Web.Endpoint.url() |> URI.parse() @@ -19,16 +18,6 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do |> Map.put(:path, "/api/v1/streaming") |> URI.to_string() - setup do - GenServer.start(Streamer, %{}, name: Streamer) - - on_exit(fn -> - if pid = Process.whereis(Streamer) do - Process.exit(pid, :kill) - end - end) - end - def start_socket(qs \\ nil, headers \\ []) do path = case qs do @@ -53,12 +42,14 @@ test "requires authentication and a valid token for protected streams" do end) end + @tag needs_streamer: true test "allows public streams without authentication" do assert {:ok, _} = start_socket("?stream=public") assert {:ok, _} = start_socket("?stream=public:local") assert {:ok, _} = start_socket("?stream=hashtag&tag=lain") end + @tag needs_streamer: true test "receives well formatted events" do user = insert(:user) {:ok, _} = start_socket("?stream=public") @@ -103,6 +94,7 @@ test "accepts valid tokens", state do assert {:ok, _} = start_socket("?stream=user&access_token=#{state.token.token}") end + @tag needs_streamer: true test "accepts the 'user' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user&access_token=#{token.token}") @@ -111,6 +103,7 @@ test "accepts the 'user' stream", %{token: token} = _state do end) =~ ":badarg" end + @tag needs_streamer: true test "accepts the 'user:notification' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user:notification&access_token=#{token.token}") @@ -119,6 +112,7 @@ test "accepts the 'user:notification' stream", %{token: token} = _state do end) =~ ":badarg" end + @tag needs_streamer: true test "accepts valid token on Sec-WebSocket-Protocol header", %{token: token} do assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}]) diff --git a/test/notification_test.exs b/test/notification_test.exs index 3be9db09b..3d2f9a8fc 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -69,16 +69,7 @@ test "does not create a notification for subscribed users if status is a reply" end describe "create_notification" do - setup do - GenServer.start(Streamer, %{}, name: Streamer) - - on_exit(fn -> - if pid = Process.whereis(Streamer) do - Process.exit(pid, :kill) - end - end) - end - + @tag needs_streamer: true test "it creates a notification for user and send to the 'user' and the 'user:notification' stream" do user = insert(:user) task = Task.async(fn -> assert_receive {:text, _}, 4_000 end) diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index ec5892ff5..b39c70677 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -40,6 +40,10 @@ defmodule Pleroma.Web.ConnCase do Ecto.Adapters.SQL.Sandbox.mode(Pleroma.Repo, {:shared, self()}) end + if tags[:needs_streamer] do + start_supervised(Pleroma.Web.Streamer.supervisor()) + end + {:ok, conn: Phoenix.ConnTest.build_conn()} end end diff --git a/test/support/data_case.ex b/test/support/data_case.ex index f3d98e7e3..17fa15214 100644 --- a/test/support/data_case.ex +++ b/test/support/data_case.ex @@ -39,6 +39,10 @@ defmodule Pleroma.DataCase do Ecto.Adapters.SQL.Sandbox.mode(Pleroma.Repo, {:shared, self()}) end + if tags[:needs_streamer] do + start_supervised(Pleroma.Web.Streamer.supervisor()) + end + :ok end diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index d0118fefa..4100108a5 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -38,9 +38,7 @@ test "it streams them out" do stream: fn _, _ -> nil end do ActivityPub.stream_out_participations(conversation.participations) - Enum.each(participations, fn participation -> - assert called(Pleroma.Web.Streamer.stream("participation", participation)) - end) + assert called(Pleroma.Web.Streamer.stream("participation", participations)) end end end diff --git a/test/web/streamer/ping_test.exs b/test/web/streamer/ping_test.exs new file mode 100644 index 000000000..3d52c00e4 --- /dev/null +++ b/test/web/streamer/ping_test.exs @@ -0,0 +1,36 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PingTest do + use Pleroma.DataCase + + import Pleroma.Factory + alias Pleroma.Web.Streamer + + setup do + start_supervised({Streamer.supervisor(), [ping_interval: 30]}) + + :ok + end + + describe "sockets" do + setup do + user = insert(:user) + {:ok, %{user: user}} + end + + test "it sends pings", %{user: user} do + task = + Task.async(fn -> + assert_receive {:text, received_event}, 40 + assert_receive {:text, received_event}, 40 + assert_receive {:text, received_event}, 40 + end) + + Streamer.add_socket("public", %{transport_pid: task.pid, assigns: %{user: user}}) + + Task.await(task) + end + end +end diff --git a/test/web/streamer/state_test.exs b/test/web/streamer/state_test.exs new file mode 100644 index 000000000..d1aeac541 --- /dev/null +++ b/test/web/streamer/state_test.exs @@ -0,0 +1,54 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.StateTest do + use Pleroma.DataCase + + import Pleroma.Factory + alias Pleroma.Web.Streamer + alias Pleroma.Web.Streamer.StreamerSocket + + @moduletag needs_streamer: true + + describe "sockets" do + setup do + user = insert(:user) + user2 = insert(:user) + {:ok, %{user: user, user2: user2}} + end + + test "it can add a socket", %{user: user} do + Streamer.add_socket("public", %{transport_pid: 1, assigns: %{user: user}}) + + assert(%{"public" => [%StreamerSocket{transport_pid: 1}]} = Streamer.get_sockets()) + end + + test "it can add multiple sockets per user", %{user: user} do + Streamer.add_socket("public", %{transport_pid: 1, assigns: %{user: user}}) + Streamer.add_socket("public", %{transport_pid: 2, assigns: %{user: user}}) + + assert( + %{ + "public" => [ + %StreamerSocket{transport_pid: 2}, + %StreamerSocket{transport_pid: 1} + ] + } = Streamer.get_sockets() + ) + end + + test "it will not add a duplicate socket", %{user: user} do + Streamer.add_socket("activity", %{transport_pid: 1, assigns: %{user: user}}) + Streamer.add_socket("activity", %{transport_pid: 1, assigns: %{user: user}}) + + assert( + %{ + "activity" => [ + %StreamerSocket{transport_pid: 1} + ] + } = Streamer.get_sockets() + ) + end + end +end diff --git a/test/web/streamer_test.exs b/test/web/streamer/streamer_test.exs similarity index 86% rename from test/web/streamer_test.exs rename to test/web/streamer/streamer_test.exs index 96fa7645f..88847e20f 100644 --- a/test/web/streamer_test.exs +++ b/test/web/streamer/streamer_test.exs @@ -5,24 +5,20 @@ defmodule Pleroma.Web.StreamerTest do use Pleroma.DataCase + import Pleroma.Factory + alias Pleroma.List alias Pleroma.User alias Pleroma.Web.CommonAPI alias Pleroma.Web.Streamer - import Pleroma.Factory + alias Pleroma.Web.Streamer.StreamerSocket + alias Pleroma.Web.Streamer.Worker + @moduletag needs_streamer: true clear_config_all([:instance, :skip_thread_containment]) describe "user streams" do setup do - GenServer.start(Streamer, %{}, name: Streamer) - - on_exit(fn -> - if pid = Process.whereis(Streamer) do - Process.exit(pid, :kill) - end - end) - user = insert(:user) notify = insert(:notification, user: user, activity: build(:note_activity)) {:ok, %{user: user, notify: notify}} @@ -125,11 +121,9 @@ test "it sends to public" do assert_receive {:text, _}, 4_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user - } + user: user } {:ok, activity} = CommonAPI.post(other_user, %{"status" => "Test"}) @@ -138,7 +132,7 @@ test "it sends to public" do "public" => [fake_socket] } - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) @@ -155,11 +149,9 @@ test "it sends to public" do assert received_event == expected_event end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user - } + user: user } {:ok, activity} = CommonAPI.delete(activity.id, other_user) @@ -168,7 +160,7 @@ test "it sends to public" do "public" => [fake_socket] } - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) end @@ -189,9 +181,9 @@ test "it doesn't send to user if recipients invalid and thread containment is en ) task = Task.async(fn -> refute_receive {:text, _}, 1_000 end) - fake_socket = %{transport_pid: task.pid, assigns: %{user: user}} + fake_socket = %StreamerSocket{transport_pid: task.pid, user: user} topics = %{"public" => [fake_socket]} - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) end @@ -211,9 +203,9 @@ test "it sends message if recipients invalid and thread containment is disabled" ) task = Task.async(fn -> assert_receive {:text, _}, 1_000 end) - fake_socket = %{transport_pid: task.pid, assigns: %{user: user}} + fake_socket = %StreamerSocket{transport_pid: task.pid, user: user} topics = %{"public" => [fake_socket]} - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) end @@ -233,9 +225,9 @@ test "it sends message if recipients invalid and thread containment is enabled b ) task = Task.async(fn -> assert_receive {:text, _}, 1_000 end) - fake_socket = %{transport_pid: task.pid, assigns: %{user: user}} + fake_socket = %StreamerSocket{transport_pid: task.pid, user: user} topics = %{"public" => [fake_socket]} - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) end @@ -251,11 +243,9 @@ test "it doesn't send to blocked users" do refute_receive {:text, _}, 1_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user - } + user: user } {:ok, activity} = CommonAPI.post(blocked_user, %{"status" => "Test"}) @@ -264,7 +254,7 @@ test "it doesn't send to blocked users" do "public" => [fake_socket] } - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) end @@ -284,11 +274,9 @@ test "it doesn't send unwanted DMs to list" do refute_receive {:text, _}, 1_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user_a - } + user: user_a } {:ok, activity} = @@ -301,7 +289,7 @@ test "it doesn't send unwanted DMs to list" do "list:#{list.id}" => [fake_socket] } - Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics) + Worker.handle_call({:stream, "list", activity}, self(), topics) Task.await(task) end @@ -318,11 +306,9 @@ test "it doesn't send unwanted private posts to list" do refute_receive {:text, _}, 1_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user_a - } + user: user_a } {:ok, activity} = @@ -335,12 +321,12 @@ test "it doesn't send unwanted private posts to list" do "list:#{list.id}" => [fake_socket] } - Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics) + Worker.handle_call({:stream, "list", activity}, self(), topics) Task.await(task) end - test "it send wanted private posts to list" do + test "it sends wanted private posts to list" do user_a = insert(:user) user_b = insert(:user) @@ -354,11 +340,9 @@ test "it send wanted private posts to list" do assert_receive {:text, _}, 1_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user_a - } + user: user_a } {:ok, activity} = @@ -367,11 +351,12 @@ test "it send wanted private posts to list" do "visibility" => "private" }) - topics = %{ - "list:#{list.id}" => [fake_socket] - } + Streamer.add_socket( + "list:#{list.id}", + fake_socket + ) - Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics) + Worker.handle_call({:stream, "list", activity}, self(), %{}) Task.await(task) end @@ -387,11 +372,9 @@ test "it doesn't send muted reblogs" do refute_receive {:text, _}, 1_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user1 - } + user: user1 } {:ok, create_activity} = CommonAPI.post(user3, %{"status" => "I'm kawen"}) @@ -401,7 +384,7 @@ test "it doesn't send muted reblogs" do "public" => [fake_socket] } - Streamer.push_to_socket(topics, "public", announce_activity) + Worker.push_to_socket(topics, "public", announce_activity) Task.await(task) end @@ -417,6 +400,8 @@ test "it doesn't send posts from muted threads" do task = Task.async(fn -> refute_receive {:text, _}, 4_000 end) + Process.sleep(4000) + Streamer.add_socket( "user", %{transport_pid: task.pid, assigns: %{user: user2}} @@ -428,14 +413,6 @@ test "it doesn't send posts from muted threads" do describe "direct streams" do setup do - GenServer.start(Streamer, %{}, name: Streamer) - - on_exit(fn -> - if pid = Process.whereis(Streamer) do - Process.exit(pid, :kill) - end - end) - :ok end @@ -480,6 +457,8 @@ test "it doesn't send conversation update to the 'direct' streamj when the last refute_receive {:text, _}, 4_000 end) + Process.sleep(1000) + Streamer.add_socket( "direct", %{transport_pid: task.pid, assigns: %{user: user}} @@ -521,6 +500,8 @@ test "it sends conversation update to the 'direct' stream when a message is dele assert last_status["id"] == to_string(create_activity.id) end) + Process.sleep(1000) + Streamer.add_socket( "direct", %{transport_pid: task.pid, assigns: %{user: user}} From c623b4324deaf236334a0f77a81435b5bffadf3c Mon Sep 17 00:00:00 2001 From: kaniini Date: Mon, 16 Sep 2019 09:09:21 +0000 Subject: [PATCH 079/272] Revert "Merge branch 'streamer-refactoring' into 'develop'" This reverts merge request !1653 --- .gitignore | 4 - config/config.exs | 4 - lib/pleroma/activity/ir/topics.ex | 63 ---- lib/pleroma/application.ex | 2 +- lib/pleroma/notification.ex | 6 +- lib/pleroma/web/activity_pub/activity_pub.ex | 48 ++- .../web/mastodon_api/websocket_handler.ex | 7 +- lib/pleroma/web/streamer.ex | 318 ++++++++++++++++++ lib/pleroma/web/streamer/ping.ex | 33 -- lib/pleroma/web/streamer/state.ex | 68 ---- lib/pleroma/web/streamer/streamer.ex | 55 --- lib/pleroma/web/streamer/streamer_socket.ex | 31 -- lib/pleroma/web/streamer/supervisor.ex | 33 -- lib/pleroma/web/streamer/worker.ex | 220 ------------ lib/pleroma/web/views/streamer_view.ex | 66 ---- mix.exs | 1 - mix.lock | 1 - test/activity/ir/topics_test.exs | 141 -------- test/integration/mastodon_websocket_test.exs | 16 +- test/notification_test.exs | 11 +- test/support/conn_case.ex | 4 - test/support/data_case.ex | 4 - test/web/activity_pub/activity_pub_test.exs | 4 +- test/web/streamer/ping_test.exs | 36 -- test/web/streamer/state_test.exs | 54 --- test/web/{streamer => }/streamer_test.exs | 105 +++--- 26 files changed, 447 insertions(+), 888 deletions(-) delete mode 100644 lib/pleroma/activity/ir/topics.ex create mode 100644 lib/pleroma/web/streamer.ex delete mode 100644 lib/pleroma/web/streamer/ping.ex delete mode 100644 lib/pleroma/web/streamer/state.ex delete mode 100644 lib/pleroma/web/streamer/streamer.ex delete mode 100644 lib/pleroma/web/streamer/streamer_socket.ex delete mode 100644 lib/pleroma/web/streamer/supervisor.ex delete mode 100644 lib/pleroma/web/streamer/worker.ex delete mode 100644 lib/pleroma/web/views/streamer_view.ex delete mode 100644 test/activity/ir/topics_test.exs delete mode 100644 test/web/streamer/ping_test.exs delete mode 100644 test/web/streamer/state_test.exs rename test/web/{streamer => }/streamer_test.exs (86%) diff --git a/.gitignore b/.gitignore index 3b0c7d361..4e71a7df0 100644 --- a/.gitignore +++ b/.gitignore @@ -43,7 +43,3 @@ docs/generated_config.md # Code test coverage /cover /Elixir.*.coverdata - -.idea -pleroma.iml - diff --git a/config/config.exs b/config/config.exs index b1b98af93..ab6e00c98 100644 --- a/config/config.exs +++ b/config/config.exs @@ -331,10 +331,6 @@ follow_handshake_timeout: 500, sign_object_fetches: true -config :pleroma, :streamer, - workers: 3, - overflow_workers: 2 - config :pleroma, :user, deny_follow_blocked: true config :pleroma, :mrf_normalize_markup, scrub_policy: Pleroma.HTML.Scrubber.Default diff --git a/lib/pleroma/activity/ir/topics.ex b/lib/pleroma/activity/ir/topics.ex deleted file mode 100644 index 010897abc..000000000 --- a/lib/pleroma/activity/ir/topics.ex +++ /dev/null @@ -1,63 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Activity.Ir.Topics do - alias Pleroma.Object - alias Pleroma.Web.ActivityPub.Visibility - - def get_activity_topics(activity) do - activity - |> Object.normalize() - |> generate_topics(activity) - |> List.flatten() - end - - defp generate_topics(%{data: %{"type" => "Answer"}}, _) do - [] - end - - defp generate_topics(object, activity) do - ["user", "list"] ++ visibility_tags(object, activity) - end - - defp visibility_tags(object, activity) do - case Visibility.get_visibility(activity) do - "public" -> - if activity.local do - ["public", "public:local"] - else - ["public"] - end - |> item_creation_tags(object, activity) - - "direct" -> - ["direct"] - - _ -> - [] - end - end - - defp item_creation_tags(tags, %{data: %{"type" => "Create"}} = object, activity) do - tags ++ hashtags_to_topics(object) ++ attachment_topics(object, activity) - end - - defp item_creation_tags(tags, _, _) do - tags - end - - defp hashtags_to_topics(%{data: %{"tag" => tags}}) do - tags - |> Enum.filter(&is_bitstring(&1)) - |> Enum.map(fn tag -> "hashtag:" <> tag end) - end - - defp hashtags_to_topics(_), do: [] - - defp attachment_topics(%{data: %{"attachment" => []}}, _act), do: [] - - defp attachment_topics(_object, %{local: true}), do: ["public:media", "public:local:media"] - - defp attachment_topics(_object, _act), do: ["public:media"] -end diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 3b37ce630..49094704b 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -141,7 +141,7 @@ defp oauth_cleanup_enabled?, defp streamer_child(:test), do: [] defp streamer_child(_) do - [Pleroma.Web.Streamer.supervisor()] + [Pleroma.Web.Streamer] end defp oauth_cleanup_child(true), diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index 8012389ac..b7c880c51 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -210,10 +210,8 @@ def create_notification(%Activity{} = activity, %User{} = user) do unless skip?(activity, user) do notification = %Notification{user_id: user.id, activity: activity} {:ok, notification} = Repo.insert(notification) - - ["user", "user:notification"] - |> Streamer.stream(notification) - + Streamer.stream("user", notification) + Streamer.stream("user:notification", notification) Push.send(notification) notification end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index bc5ae7fbf..41f6a0f1f 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -4,7 +4,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.Activity - alias Pleroma.Activity.Ir.Topics alias Pleroma.Config alias Pleroma.Conversation alias Pleroma.Notification @@ -17,7 +16,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.User alias Pleroma.Web.ActivityPub.MRF alias Pleroma.Web.ActivityPub.Transmogrifier - alias Pleroma.Web.Streamer alias Pleroma.Web.WebFinger alias Pleroma.Workers.BackgroundWorker @@ -189,7 +187,9 @@ def stream_out_participations(participations) do participations |> Repo.preload(:user) - Streamer.stream("participation", participations) + Enum.each(participations, fn participation -> + Pleroma.Web.Streamer.stream("participation", participation) + end) end def stream_out_participations(%Object{data: %{"context" => context}}, user) do @@ -208,15 +208,41 @@ def stream_out_participations(%Object{data: %{"context" => context}}, user) do def stream_out_participations(_, _), do: :noop - def stream_out(%Activity{data: %{"type" => data_type}} = activity) - when data_type in ["Create", "Announce", "Delete"] do - activity - |> Topics.get_activity_topics() - |> Streamer.stream(activity) - end + def stream_out(activity) do + if activity.data["type"] in ["Create", "Announce", "Delete"] do + object = Object.normalize(activity) + # Do not stream out poll replies + unless object.data["type"] == "Answer" do + Pleroma.Web.Streamer.stream("user", activity) + Pleroma.Web.Streamer.stream("list", activity) - def stream_out(_activity) do - :noop + if get_visibility(activity) == "public" do + Pleroma.Web.Streamer.stream("public", activity) + + if activity.local do + Pleroma.Web.Streamer.stream("public:local", activity) + end + + if activity.data["type"] in ["Create"] do + object.data + |> Map.get("tag", []) + |> Enum.filter(fn tag -> is_bitstring(tag) end) + |> Enum.each(fn tag -> Pleroma.Web.Streamer.stream("hashtag:" <> tag, activity) end) + + if object.data["attachment"] != [] do + Pleroma.Web.Streamer.stream("public:media", activity) + + if activity.local do + Pleroma.Web.Streamer.stream("public:local:media", activity) + end + end + end + else + if get_visibility(activity) == "direct", + do: Pleroma.Web.Streamer.stream("direct", activity) + end + end + end end def create(%{to: to, actor: actor, context: context, object: object} = params, fake \\ false) do diff --git a/lib/pleroma/web/mastodon_api/websocket_handler.ex b/lib/pleroma/web/mastodon_api/websocket_handler.ex index 3c26eb406..dbd3542ea 100644 --- a/lib/pleroma/web/mastodon_api/websocket_handler.ex +++ b/lib/pleroma/web/mastodon_api/websocket_handler.ex @@ -8,7 +8,6 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.OAuth.Token - alias Pleroma.Web.Streamer @behaviour :cowboy_websocket @@ -25,7 +24,7 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do ] @anonymous_streams ["public", "public:local", "hashtag"] - # Handled by periodic keepalive in Pleroma.Web.Streamer.Ping. + # Handled by periodic keepalive in Pleroma.Web.Streamer. @timeout :infinity def init(%{qs: qs} = req, state) do @@ -66,7 +65,7 @@ def websocket_info(:subscribe, state) do }, topic #{state.topic}" ) - Streamer.add_socket(state.topic, streamer_socket(state)) + Pleroma.Web.Streamer.add_socket(state.topic, streamer_socket(state)) {:ok, state} end @@ -81,7 +80,7 @@ def terminate(reason, _req, state) do }, topic #{state.topic || "?"}: #{inspect(reason)}" ) - Streamer.remove_socket(state.topic, streamer_socket(state)) + Pleroma.Web.Streamer.remove_socket(state.topic, streamer_socket(state)) :ok end diff --git a/lib/pleroma/web/streamer.ex b/lib/pleroma/web/streamer.ex new file mode 100644 index 000000000..587c43f40 --- /dev/null +++ b/lib/pleroma/web/streamer.ex @@ -0,0 +1,318 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Streamer do + use GenServer + require Logger + alias Pleroma.Activity + alias Pleroma.Config + alias Pleroma.Conversation.Participation + alias Pleroma.Notification + alias Pleroma.Object + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Visibility + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.MastodonAPI.NotificationView + + @keepalive_interval :timer.seconds(30) + + def start_link(_) do + GenServer.start_link(__MODULE__, %{}, name: __MODULE__) + end + + def add_socket(topic, socket) do + GenServer.cast(__MODULE__, %{action: :add, socket: socket, topic: topic}) + end + + def remove_socket(topic, socket) do + GenServer.cast(__MODULE__, %{action: :remove, socket: socket, topic: topic}) + end + + def stream(topic, item) do + GenServer.cast(__MODULE__, %{action: :stream, topic: topic, item: item}) + end + + def init(args) do + Process.send_after(self(), %{action: :ping}, @keepalive_interval) + + {:ok, args} + end + + def handle_info(%{action: :ping}, topics) do + topics + |> Map.values() + |> List.flatten() + |> Enum.each(fn socket -> + Logger.debug("Sending keepalive ping") + send(socket.transport_pid, {:text, ""}) + end) + + Process.send_after(self(), %{action: :ping}, @keepalive_interval) + + {:noreply, topics} + end + + def handle_cast(%{action: :stream, topic: "direct", item: item}, topics) do + recipient_topics = + User.get_recipients_from_activity(item) + |> Enum.map(fn %{id: id} -> "direct:#{id}" end) + + Enum.each(recipient_topics || [], fn user_topic -> + Logger.debug("Trying to push direct message to #{user_topic}\n\n") + push_to_socket(topics, user_topic, item) + end) + + {:noreply, topics} + end + + def handle_cast(%{action: :stream, topic: "participation", item: participation}, topics) do + user_topic = "direct:#{participation.user_id}" + Logger.debug("Trying to push a conversation participation to #{user_topic}\n\n") + + push_to_socket(topics, user_topic, participation) + + {:noreply, topics} + end + + def handle_cast(%{action: :stream, topic: "list", item: item}, topics) do + # filter the recipient list if the activity is not public, see #270. + recipient_lists = + case Visibility.is_public?(item) do + true -> + Pleroma.List.get_lists_from_activity(item) + + _ -> + Pleroma.List.get_lists_from_activity(item) + |> Enum.filter(fn list -> + owner = User.get_cached_by_id(list.user_id) + + Visibility.visible_for_user?(item, owner) + end) + end + + recipient_topics = + recipient_lists + |> Enum.map(fn %{id: id} -> "list:#{id}" end) + + Enum.each(recipient_topics || [], fn list_topic -> + Logger.debug("Trying to push message to #{list_topic}\n\n") + push_to_socket(topics, list_topic, item) + end) + + {:noreply, topics} + end + + def handle_cast( + %{action: :stream, topic: topic, item: %Notification{} = item}, + topics + ) + when topic in ["user", "user:notification"] do + topics + |> Map.get("#{topic}:#{item.user_id}", []) + |> Enum.each(fn socket -> + with %User{} = user <- User.get_cached_by_ap_id(socket.assigns[:user].ap_id), + true <- should_send?(user, item) do + send( + socket.transport_pid, + {:text, represent_notification(socket.assigns[:user], item)} + ) + end + end) + + {:noreply, topics} + end + + def handle_cast(%{action: :stream, topic: "user", item: item}, topics) do + Logger.debug("Trying to push to users") + + recipient_topics = + User.get_recipients_from_activity(item) + |> Enum.map(fn %{id: id} -> "user:#{id}" end) + + Enum.each(recipient_topics, fn topic -> + push_to_socket(topics, topic, item) + end) + + {:noreply, topics} + end + + def handle_cast(%{action: :stream, topic: topic, item: item}, topics) do + Logger.debug("Trying to push to #{topic}") + Logger.debug("Pushing item to #{topic}") + push_to_socket(topics, topic, item) + {:noreply, topics} + end + + def handle_cast(%{action: :add, topic: topic, socket: socket}, sockets) do + topic = internal_topic(topic, socket) + sockets_for_topic = sockets[topic] || [] + sockets_for_topic = Enum.uniq([socket | sockets_for_topic]) + sockets = Map.put(sockets, topic, sockets_for_topic) + Logger.debug("Got new conn for #{topic}") + {:noreply, sockets} + end + + def handle_cast(%{action: :remove, topic: topic, socket: socket}, sockets) do + topic = internal_topic(topic, socket) + sockets_for_topic = sockets[topic] || [] + sockets_for_topic = List.delete(sockets_for_topic, socket) + sockets = Map.put(sockets, topic, sockets_for_topic) + Logger.debug("Removed conn for #{topic}") + {:noreply, sockets} + end + + def handle_cast(m, state) do + Logger.info("Unknown: #{inspect(m)}, #{inspect(state)}") + {:noreply, state} + end + + defp represent_update(%Activity{} = activity, %User{} = user) do + %{ + event: "update", + payload: + Pleroma.Web.MastodonAPI.StatusView.render( + "status.json", + activity: activity, + for: user + ) + |> Jason.encode!() + } + |> Jason.encode!() + end + + defp represent_update(%Activity{} = activity) do + %{ + event: "update", + payload: + Pleroma.Web.MastodonAPI.StatusView.render( + "status.json", + activity: activity + ) + |> Jason.encode!() + } + |> Jason.encode!() + end + + def represent_conversation(%Participation{} = participation) do + %{ + event: "conversation", + payload: + Pleroma.Web.MastodonAPI.ConversationView.render("participation.json", %{ + participation: participation, + for: participation.user + }) + |> Jason.encode!() + } + |> Jason.encode!() + end + + @spec represent_notification(User.t(), Notification.t()) :: binary() + defp represent_notification(%User{} = user, %Notification{} = notify) do + %{ + event: "notification", + payload: + NotificationView.render( + "show.json", + %{notification: notify, for: user} + ) + |> Jason.encode!() + } + |> Jason.encode!() + end + + defp should_send?(%User{} = user, %Activity{} = item) do + blocks = user.info.blocks || [] + mutes = user.info.mutes || [] + reblog_mutes = user.info.muted_reblogs || [] + domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.info.domain_blocks) + + with parent when not is_nil(parent) <- Object.normalize(item), + true <- Enum.all?([blocks, mutes, reblog_mutes], &(item.actor not in &1)), + true <- Enum.all?([blocks, mutes], &(parent.data["actor"] not in &1)), + %{host: item_host} <- URI.parse(item.actor), + %{host: parent_host} <- URI.parse(parent.data["actor"]), + false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, item_host), + false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, parent_host), + true <- thread_containment(item, user), + false <- CommonAPI.thread_muted?(user, item) do + true + else + _ -> false + end + end + + defp should_send?(%User{} = user, %Notification{activity: activity}) do + should_send?(user, activity) + end + + def push_to_socket(topics, topic, %Activity{data: %{"type" => "Announce"}} = item) do + Enum.each(topics[topic] || [], fn socket -> + # Get the current user so we have up-to-date blocks etc. + if socket.assigns[:user] do + user = User.get_cached_by_ap_id(socket.assigns[:user].ap_id) + + if should_send?(user, item) do + send(socket.transport_pid, {:text, represent_update(item, user)}) + end + else + send(socket.transport_pid, {:text, represent_update(item)}) + end + end) + end + + def push_to_socket(topics, topic, %Participation{} = participation) do + Enum.each(topics[topic] || [], fn socket -> + send(socket.transport_pid, {:text, represent_conversation(participation)}) + end) + end + + def push_to_socket(topics, topic, %Activity{ + data: %{"type" => "Delete", "deleted_activity_id" => deleted_activity_id} + }) do + Enum.each(topics[topic] || [], fn socket -> + send( + socket.transport_pid, + {:text, %{event: "delete", payload: to_string(deleted_activity_id)} |> Jason.encode!()} + ) + end) + end + + def push_to_socket(_topics, _topic, %Activity{data: %{"type" => "Delete"}}), do: :noop + + def push_to_socket(topics, topic, item) do + Enum.each(topics[topic] || [], fn socket -> + # Get the current user so we have up-to-date blocks etc. + if socket.assigns[:user] do + user = User.get_cached_by_ap_id(socket.assigns[:user].ap_id) + blocks = user.info.blocks || [] + mutes = user.info.mutes || [] + + with true <- Enum.all?([blocks, mutes], &(item.actor not in &1)), + true <- thread_containment(item, user) do + send(socket.transport_pid, {:text, represent_update(item, user)}) + end + else + send(socket.transport_pid, {:text, represent_update(item)}) + end + end) + end + + defp internal_topic(topic, socket) when topic in ~w[user user:notification direct] do + "#{topic}:#{socket.assigns[:user].id}" + end + + defp internal_topic(topic, _), do: topic + + @spec thread_containment(Activity.t(), User.t()) :: boolean() + defp thread_containment(_activity, %User{info: %{skip_thread_containment: true}}), do: true + + defp thread_containment(activity, user) do + if Config.get([:instance, :skip_thread_containment]) do + true + else + ActivityPub.contain_activity(activity, user) + end + end +end diff --git a/lib/pleroma/web/streamer/ping.ex b/lib/pleroma/web/streamer/ping.ex deleted file mode 100644 index f77cbb95c..000000000 --- a/lib/pleroma/web/streamer/ping.ex +++ /dev/null @@ -1,33 +0,0 @@ -defmodule Pleroma.Web.Streamer.Ping do - use GenServer - require Logger - - alias Pleroma.Web.Streamer.State - alias Pleroma.Web.Streamer.StreamerSocket - - @keepalive_interval :timer.seconds(30) - - def start_link(opts) do - ping_interval = Keyword.get(opts, :ping_interval, @keepalive_interval) - GenServer.start_link(__MODULE__, %{ping_interval: ping_interval}, name: __MODULE__) - end - - def init(%{ping_interval: ping_interval} = args) do - Process.send_after(self(), :ping, ping_interval) - {:ok, args} - end - - def handle_info(:ping, %{ping_interval: ping_interval} = state) do - State.get_sockets() - |> Map.values() - |> List.flatten() - |> Enum.each(fn %StreamerSocket{transport_pid: transport_pid} -> - Logger.debug("Sending keepalive ping") - send(transport_pid, {:text, ""}) - end) - - Process.send_after(self(), :ping, ping_interval) - - {:noreply, state} - end -end diff --git a/lib/pleroma/web/streamer/state.ex b/lib/pleroma/web/streamer/state.ex deleted file mode 100644 index 7b5199068..000000000 --- a/lib/pleroma/web/streamer/state.ex +++ /dev/null @@ -1,68 +0,0 @@ -defmodule Pleroma.Web.Streamer.State do - use GenServer - require Logger - - alias Pleroma.Web.Streamer.StreamerSocket - - def start_link(_) do - GenServer.start_link(__MODULE__, %{sockets: %{}}, name: __MODULE__) - end - - def add_socket(topic, socket) do - GenServer.call(__MODULE__, {:add, socket, topic}) - end - - def remove_socket(topic, socket) do - GenServer.call(__MODULE__, {:remove, socket, topic}) - end - - def get_sockets do - %{sockets: stream_sockets} = GenServer.call(__MODULE__, :get_state) - stream_sockets - end - - def init(init_arg) do - {:ok, init_arg} - end - - def handle_call(:get_state, _from, state) do - {:reply, state, state} - end - - def handle_call({:add, socket, topic}, _from, %{sockets: sockets} = state) do - internal_topic = internal_topic(topic, socket) - stream_socket = StreamerSocket.from_socket(socket) - - sockets_for_topic = - sockets - |> Map.get(internal_topic, []) - |> List.insert_at(0, stream_socket) - |> Enum.uniq() - - state = put_in(state, [:sockets, internal_topic], sockets_for_topic) - Logger.debug("Got new conn for #{topic}") - {:reply, state, state} - end - - def handle_call({:remove, socket, topic}, _from, %{sockets: sockets} = state) do - internal_topic = internal_topic(topic, socket) - stream_socket = StreamerSocket.from_socket(socket) - - sockets_for_topic = - sockets - |> Map.get(internal_topic, []) - |> List.delete(stream_socket) - - state = Kernel.put_in(state, [:sockets, internal_topic], sockets_for_topic) - {:reply, state, state} - end - - defp internal_topic(topic, socket) - when topic in ~w[user user:notification direct] do - "#{topic}:#{socket.assigns[:user].id}" - end - - defp internal_topic(topic, _) do - topic - end -end diff --git a/lib/pleroma/web/streamer/streamer.ex b/lib/pleroma/web/streamer/streamer.ex deleted file mode 100644 index 8cf719277..000000000 --- a/lib/pleroma/web/streamer/streamer.ex +++ /dev/null @@ -1,55 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.Streamer do - alias Pleroma.Web.Streamer.State - alias Pleroma.Web.Streamer.Worker - - @timeout 60_000 - @mix_env Mix.env() - - def add_socket(topic, socket) do - State.add_socket(topic, socket) - end - - def remove_socket(topic, socket) do - State.remove_socket(topic, socket) - end - - def get_sockets do - State.get_sockets() - end - - def stream(topics, items) do - if should_send?() do - Task.async(fn -> - :poolboy.transaction( - :streamer_worker, - &Worker.stream(&1, topics, items), - @timeout - ) - end) - end - end - - def supervisor, do: Pleroma.Web.Streamer.Supervisor - - defp should_send? do - handle_should_send(@mix_env) - end - - defp handle_should_send(:test) do - case Process.whereis(:streamer_worker) do - nil -> - false - - pid -> - Process.alive?(pid) - end - end - - defp handle_should_send(_) do - true - end -end diff --git a/lib/pleroma/web/streamer/streamer_socket.ex b/lib/pleroma/web/streamer/streamer_socket.ex deleted file mode 100644 index f006c0306..000000000 --- a/lib/pleroma/web/streamer/streamer_socket.ex +++ /dev/null @@ -1,31 +0,0 @@ -defmodule Pleroma.Web.Streamer.StreamerSocket do - defstruct transport_pid: nil, user: nil - - alias Pleroma.User - alias Pleroma.Web.Streamer.StreamerSocket - - def from_socket(%{ - transport_pid: transport_pid, - assigns: %{user: nil} - }) do - %StreamerSocket{ - transport_pid: transport_pid - } - end - - def from_socket(%{ - transport_pid: transport_pid, - assigns: %{user: %User{} = user} - }) do - %StreamerSocket{ - transport_pid: transport_pid, - user: user - } - end - - def from_socket(%{transport_pid: transport_pid}) do - %StreamerSocket{ - transport_pid: transport_pid - } - end -end diff --git a/lib/pleroma/web/streamer/supervisor.ex b/lib/pleroma/web/streamer/supervisor.ex deleted file mode 100644 index 6afe19323..000000000 --- a/lib/pleroma/web/streamer/supervisor.ex +++ /dev/null @@ -1,33 +0,0 @@ -defmodule Pleroma.Web.Streamer.Supervisor do - use Supervisor - - def start_link(opts) do - Supervisor.start_link(__MODULE__, opts, name: __MODULE__) - end - - def init(args) do - children = [ - {Pleroma.Web.Streamer.State, args}, - {Pleroma.Web.Streamer.Ping, args}, - :poolboy.child_spec(:streamer_worker, poolboy_config()) - ] - - opts = [strategy: :one_for_one, name: Pleroma.Web.Streamer.Supervisor] - Supervisor.init(children, opts) - end - - defp poolboy_config do - opts = - Pleroma.Config.get(:streamer, - workers: 3, - overflow_workers: 2 - ) - - [ - {:name, {:local, :streamer_worker}}, - {:worker_module, Pleroma.Web.Streamer.Worker}, - {:size, opts[:workers]}, - {:max_overflow, opts[:overflow_workers]} - ] - end -end diff --git a/lib/pleroma/web/streamer/worker.ex b/lib/pleroma/web/streamer/worker.ex deleted file mode 100644 index 5804508eb..000000000 --- a/lib/pleroma/web/streamer/worker.ex +++ /dev/null @@ -1,220 +0,0 @@ -defmodule Pleroma.Web.Streamer.Worker do - use GenServer - - require Logger - - alias Pleroma.Activity - alias Pleroma.Config - alias Pleroma.Conversation.Participation - alias Pleroma.Notification - alias Pleroma.Object - alias Pleroma.User - alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Web.ActivityPub.Visibility - alias Pleroma.Web.CommonAPI - alias Pleroma.Web.Streamer.State - alias Pleroma.Web.Streamer.StreamerSocket - alias Pleroma.Web.StreamerView - - def start_link(_) do - GenServer.start_link(__MODULE__, %{}, []) - end - - def init(init_arg) do - {:ok, init_arg} - end - - def stream(pid, topics, items) do - GenServer.call(pid, {:stream, topics, items}) - end - - def handle_call({:stream, topics, item}, _from, state) when is_list(topics) do - Enum.each(topics, fn t -> - do_stream(%{topic: t, item: item}) - end) - - {:reply, state, state} - end - - def handle_call({:stream, topic, items}, _from, state) when is_list(items) do - Enum.each(items, fn i -> - do_stream(%{topic: topic, item: i}) - end) - - {:reply, state, state} - end - - def handle_call({:stream, topic, item}, _from, state) do - do_stream(%{topic: topic, item: item}) - - {:reply, state, state} - end - - defp do_stream(%{topic: "direct", item: item}) do - recipient_topics = - User.get_recipients_from_activity(item) - |> Enum.map(fn %{id: id} -> "direct:#{id}" end) - - Enum.each(recipient_topics, fn user_topic -> - Logger.debug("Trying to push direct message to #{user_topic}\n\n") - push_to_socket(State.get_sockets(), user_topic, item) - end) - end - - defp do_stream(%{topic: "participation", item: participation}) do - user_topic = "direct:#{participation.user_id}" - Logger.debug("Trying to push a conversation participation to #{user_topic}\n\n") - - push_to_socket(State.get_sockets(), user_topic, participation) - end - - defp do_stream(%{topic: "list", item: item}) do - # filter the recipient list if the activity is not public, see #270. - recipient_lists = - case Visibility.is_public?(item) do - true -> - Pleroma.List.get_lists_from_activity(item) - - _ -> - Pleroma.List.get_lists_from_activity(item) - |> Enum.filter(fn list -> - owner = User.get_cached_by_id(list.user_id) - - Visibility.visible_for_user?(item, owner) - end) - end - - recipient_topics = - recipient_lists - |> Enum.map(fn %{id: id} -> "list:#{id}" end) - - Enum.each(recipient_topics, fn list_topic -> - Logger.debug("Trying to push message to #{list_topic}\n\n") - push_to_socket(State.get_sockets(), list_topic, item) - end) - end - - defp do_stream(%{topic: topic, item: %Notification{} = item}) - when topic in ["user", "user:notification"] do - State.get_sockets() - |> Map.get("#{topic}:#{item.user_id}", []) - |> Enum.each(fn %StreamerSocket{transport_pid: transport_pid, user: socket_user} -> - with %User{} = user <- User.get_cached_by_ap_id(socket_user.ap_id), - true <- should_send?(user, item) do - send(transport_pid, {:text, StreamerView.render("notification.json", socket_user, item)}) - end - end) - end - - defp do_stream(%{topic: "user", item: item}) do - Logger.debug("Trying to push to users") - - recipient_topics = - User.get_recipients_from_activity(item) - |> Enum.map(fn %{id: id} -> "user:#{id}" end) - - Enum.each(recipient_topics, fn topic -> - push_to_socket(State.get_sockets(), topic, item) - end) - end - - defp do_stream(%{topic: topic, item: item}) do - Logger.debug("Trying to push to #{topic}") - Logger.debug("Pushing item to #{topic}") - push_to_socket(State.get_sockets(), topic, item) - end - - defp should_send?(%User{} = user, %Activity{} = item) do - blocks = user.info.blocks || [] - mutes = user.info.mutes || [] - reblog_mutes = user.info.muted_reblogs || [] - domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.info.domain_blocks) - - with parent when not is_nil(parent) <- Object.normalize(item), - true <- Enum.all?([blocks, mutes, reblog_mutes], &(item.actor not in &1)), - true <- Enum.all?([blocks, mutes], &(parent.data["actor"] not in &1)), - %{host: item_host} <- URI.parse(item.actor), - %{host: parent_host} <- URI.parse(parent.data["actor"]), - false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, item_host), - false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, parent_host), - true <- thread_containment(item, user), - false <- CommonAPI.thread_muted?(user, item) do - true - else - _ -> false - end - end - - defp should_send?(%User{} = user, %Notification{activity: activity}) do - should_send?(user, activity) - end - - def push_to_socket(topics, topic, %Activity{data: %{"type" => "Announce"}} = item) do - Enum.each(topics[topic] || [], fn %StreamerSocket{ - transport_pid: transport_pid, - user: socket_user - } -> - # Get the current user so we have up-to-date blocks etc. - if socket_user do - user = User.get_cached_by_ap_id(socket_user.ap_id) - - if should_send?(user, item) do - send(transport_pid, {:text, StreamerView.render("update.json", item, user)}) - end - else - send(transport_pid, {:text, StreamerView.render("update.json", item)}) - end - end) - end - - def push_to_socket(topics, topic, %Participation{} = participation) do - Enum.each(topics[topic] || [], fn %StreamerSocket{transport_pid: transport_pid} -> - send(transport_pid, {:text, StreamerView.render("conversation.json", participation)}) - end) - end - - def push_to_socket(topics, topic, %Activity{ - data: %{"type" => "Delete", "deleted_activity_id" => deleted_activity_id} - }) do - Enum.each(topics[topic] || [], fn %StreamerSocket{transport_pid: transport_pid} -> - send( - transport_pid, - {:text, %{event: "delete", payload: to_string(deleted_activity_id)} |> Jason.encode!()} - ) - end) - end - - def push_to_socket(_topics, _topic, %Activity{data: %{"type" => "Delete"}}), do: :noop - - def push_to_socket(topics, topic, item) do - Enum.each(topics[topic] || [], fn %StreamerSocket{ - transport_pid: transport_pid, - user: socket_user - } -> - # Get the current user so we have up-to-date blocks etc. - if socket_user do - user = User.get_cached_by_ap_id(socket_user.ap_id) - blocks = user.info.blocks || [] - mutes = user.info.mutes || [] - - with true <- Enum.all?([blocks, mutes], &(item.actor not in &1)), - true <- thread_containment(item, user) do - send(transport_pid, {:text, StreamerView.render("update.json", item, user)}) - end - else - send(transport_pid, {:text, StreamerView.render("update.json", item)}) - end - end) - end - - @spec thread_containment(Activity.t(), User.t()) :: boolean() - defp thread_containment(_activity, %User{info: %{skip_thread_containment: true}}), do: true - - defp thread_containment(activity, user) do - if Config.get([:instance, :skip_thread_containment]) do - true - else - ActivityPub.contain_activity(activity, user) - end - end -end diff --git a/lib/pleroma/web/views/streamer_view.ex b/lib/pleroma/web/views/streamer_view.ex deleted file mode 100644 index b13030fa0..000000000 --- a/lib/pleroma/web/views/streamer_view.ex +++ /dev/null @@ -1,66 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.StreamerView do - use Pleroma.Web, :view - - alias Pleroma.Activity - alias Pleroma.Conversation.Participation - alias Pleroma.Notification - alias Pleroma.User - alias Pleroma.Web.MastodonAPI.NotificationView - - def render("update.json", %Activity{} = activity, %User{} = user) do - %{ - event: "update", - payload: - Pleroma.Web.MastodonAPI.StatusView.render( - "status.json", - activity: activity, - for: user - ) - |> Jason.encode!() - } - |> Jason.encode!() - end - - def render("notification.json", %User{} = user, %Notification{} = notify) do - %{ - event: "notification", - payload: - NotificationView.render( - "show.json", - %{notification: notify, for: user} - ) - |> Jason.encode!() - } - |> Jason.encode!() - end - - def render("update.json", %Activity{} = activity) do - %{ - event: "update", - payload: - Pleroma.Web.MastodonAPI.StatusView.render( - "status.json", - activity: activity - ) - |> Jason.encode!() - } - |> Jason.encode!() - end - - def render("conversation.json", %Participation{} = participation) do - %{ - event: "conversation", - payload: - Pleroma.Web.MastodonAPI.ConversationView.render("participation.json", %{ - participation: participation, - for: participation.user - }) - |> Jason.encode!() - } - |> Jason.encode!() - end -end diff --git a/mix.exs b/mix.exs index 911ebad1d..f1e98585b 100644 --- a/mix.exs +++ b/mix.exs @@ -144,7 +144,6 @@ defp deps do git: "https://git.pleroma.social/pleroma/http_signatures.git", ref: "293d77bb6f4a67ac8bde1428735c3b42f22cbb30"}, {:telemetry, "~> 0.3"}, - {:poolboy, "~> 1.5"}, {:prometheus_ex, "~> 3.0"}, {:prometheus_plugs, "~> 1.1"}, {:prometheus_phoenix, "~> 1.3"}, diff --git a/mix.lock b/mix.lock index 0bf6a811e..41697dd5c 100644 --- a/mix.lock +++ b/mix.lock @@ -73,7 +73,6 @@ "plug_crypto": {:hex, :plug_crypto, "1.0.0", "18e49317d3fa343f24620ed22795ec29d4a5e602d52d1513ccea0b07d8ea7d4d", [:mix], [], "hexpm"}, "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"}, - "poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm"}, "postgrex": {:hex, :postgrex, "0.14.3", "5754dee2fdf6e9e508cbf49ab138df964278700b764177e8f3871e658b345a1e", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, "prometheus": {:hex, :prometheus, "4.4.1", "1e96073b3ed7788053768fea779cbc896ddc3bdd9ba60687f2ad50b252ac87d6", [:mix, :rebar3], [], "hexpm"}, "prometheus_ecto": {:hex, :prometheus_ecto, "1.4.1", "6c768ea9654de871e5b32fab2eac348467b3021604ebebbcbd8bcbe806a65ed5", [:mix], [{:ecto, "~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.1 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}], "hexpm"}, diff --git a/test/activity/ir/topics_test.exs b/test/activity/ir/topics_test.exs deleted file mode 100644 index e75f83586..000000000 --- a/test/activity/ir/topics_test.exs +++ /dev/null @@ -1,141 +0,0 @@ -defmodule Pleroma.Activity.Ir.TopicsTest do - use Pleroma.DataCase - - alias Pleroma.Activity - alias Pleroma.Activity.Ir.Topics - alias Pleroma.Object - - require Pleroma.Constants - - describe "poll answer" do - test "produce no topics" do - activity = %Activity{object: %Object{data: %{"type" => "Answer"}}} - - assert [] == Topics.get_activity_topics(activity) - end - end - - describe "non poll answer" do - test "always add user and list topics" do - activity = %Activity{object: %Object{data: %{"type" => "FooBar"}}} - topics = Topics.get_activity_topics(activity) - - assert Enum.member?(topics, "user") - assert Enum.member?(topics, "list") - end - end - - describe "public visibility" do - setup do - activity = %Activity{ - object: %Object{data: %{"type" => "Note"}}, - data: %{"to" => [Pleroma.Constants.as_public()]} - } - - {:ok, activity: activity} - end - - test "produces public topic", %{activity: activity} do - topics = Topics.get_activity_topics(activity) - - assert Enum.member?(topics, "public") - end - - test "local action produces public:local topic", %{activity: activity} do - activity = %{activity | local: true} - topics = Topics.get_activity_topics(activity) - - assert Enum.member?(topics, "public:local") - end - - test "non-local action does not produce public:local topic", %{activity: activity} do - activity = %{activity | local: false} - topics = Topics.get_activity_topics(activity) - - refute Enum.member?(topics, "public:local") - end - end - - describe "public visibility create events" do - setup do - activity = %Activity{ - object: %Object{data: %{"type" => "Create", "attachment" => []}}, - data: %{"to" => [Pleroma.Constants.as_public()]} - } - - {:ok, activity: activity} - end - - test "with no attachments doesn't produce public:media topics", %{activity: activity} do - topics = Topics.get_activity_topics(activity) - - refute Enum.member?(topics, "public:media") - refute Enum.member?(topics, "public:local:media") - end - - test "converts tags to hash tags", %{activity: %{object: %{data: data} = object} = activity} do - tagged_data = Map.put(data, "tag", ["foo", "bar"]) - activity = %{activity | object: %{object | data: tagged_data}} - - topics = Topics.get_activity_topics(activity) - - assert Enum.member?(topics, "hashtag:foo") - assert Enum.member?(topics, "hashtag:bar") - end - - test "only converts strinngs to hash tags", %{ - activity: %{object: %{data: data} = object} = activity - } do - tagged_data = Map.put(data, "tag", [2]) - activity = %{activity | object: %{object | data: tagged_data}} - - topics = Topics.get_activity_topics(activity) - - refute Enum.member?(topics, "hashtag:2") - end - end - - describe "public visibility create events with attachments" do - setup do - activity = %Activity{ - object: %Object{data: %{"type" => "Create", "attachment" => ["foo"]}}, - data: %{"to" => [Pleroma.Constants.as_public()]} - } - - {:ok, activity: activity} - end - - test "produce public:media topics", %{activity: activity} do - topics = Topics.get_activity_topics(activity) - - assert Enum.member?(topics, "public:media") - end - - test "local produces public:local:media topics", %{activity: activity} do - topics = Topics.get_activity_topics(activity) - - assert Enum.member?(topics, "public:local:media") - end - - test "non-local doesn't produce public:local:media topics", %{activity: activity} do - activity = %{activity | local: false} - - topics = Topics.get_activity_topics(activity) - - refute Enum.member?(topics, "public:local:media") - end - end - - describe "non-public visibility" do - test "produces direct topic" do - activity = %Activity{object: %Object{data: %{"type" => "Note"}}, data: %{"to" => []}} - topics = Topics.get_activity_topics(activity) - - assert Enum.member?(topics, "direct") - refute Enum.member?(topics, "public") - refute Enum.member?(topics, "public:local") - refute Enum.member?(topics, "public:media") - refute Enum.member?(topics, "public:local:media") - end - end -end diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs index c04262808..63bf73412 100644 --- a/test/integration/mastodon_websocket_test.exs +++ b/test/integration/mastodon_websocket_test.exs @@ -11,6 +11,7 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do alias Pleroma.Integration.WebsocketClient alias Pleroma.Web.CommonAPI alias Pleroma.Web.OAuth + alias Pleroma.Web.Streamer @path Pleroma.Web.Endpoint.url() |> URI.parse() @@ -18,6 +19,16 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do |> Map.put(:path, "/api/v1/streaming") |> URI.to_string() + setup do + GenServer.start(Streamer, %{}, name: Streamer) + + on_exit(fn -> + if pid = Process.whereis(Streamer) do + Process.exit(pid, :kill) + end + end) + end + def start_socket(qs \\ nil, headers \\ []) do path = case qs do @@ -42,14 +53,12 @@ test "requires authentication and a valid token for protected streams" do end) end - @tag needs_streamer: true test "allows public streams without authentication" do assert {:ok, _} = start_socket("?stream=public") assert {:ok, _} = start_socket("?stream=public:local") assert {:ok, _} = start_socket("?stream=hashtag&tag=lain") end - @tag needs_streamer: true test "receives well formatted events" do user = insert(:user) {:ok, _} = start_socket("?stream=public") @@ -94,7 +103,6 @@ test "accepts valid tokens", state do assert {:ok, _} = start_socket("?stream=user&access_token=#{state.token.token}") end - @tag needs_streamer: true test "accepts the 'user' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user&access_token=#{token.token}") @@ -103,7 +111,6 @@ test "accepts the 'user' stream", %{token: token} = _state do end) =~ ":badarg" end - @tag needs_streamer: true test "accepts the 'user:notification' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user:notification&access_token=#{token.token}") @@ -112,7 +119,6 @@ test "accepts the 'user:notification' stream", %{token: token} = _state do end) =~ ":badarg" end - @tag needs_streamer: true test "accepts valid token on Sec-WebSocket-Protocol header", %{token: token} do assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}]) diff --git a/test/notification_test.exs b/test/notification_test.exs index 3d2f9a8fc..3be9db09b 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -69,7 +69,16 @@ test "does not create a notification for subscribed users if status is a reply" end describe "create_notification" do - @tag needs_streamer: true + setup do + GenServer.start(Streamer, %{}, name: Streamer) + + on_exit(fn -> + if pid = Process.whereis(Streamer) do + Process.exit(pid, :kill) + end + end) + end + test "it creates a notification for user and send to the 'user' and the 'user:notification' stream" do user = insert(:user) task = Task.async(fn -> assert_receive {:text, _}, 4_000 end) diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index b39c70677..ec5892ff5 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -40,10 +40,6 @@ defmodule Pleroma.Web.ConnCase do Ecto.Adapters.SQL.Sandbox.mode(Pleroma.Repo, {:shared, self()}) end - if tags[:needs_streamer] do - start_supervised(Pleroma.Web.Streamer.supervisor()) - end - {:ok, conn: Phoenix.ConnTest.build_conn()} end end diff --git a/test/support/data_case.ex b/test/support/data_case.ex index 17fa15214..f3d98e7e3 100644 --- a/test/support/data_case.ex +++ b/test/support/data_case.ex @@ -39,10 +39,6 @@ defmodule Pleroma.DataCase do Ecto.Adapters.SQL.Sandbox.mode(Pleroma.Repo, {:shared, self()}) end - if tags[:needs_streamer] do - start_supervised(Pleroma.Web.Streamer.supervisor()) - end - :ok end diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 4100108a5..d0118fefa 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -38,7 +38,9 @@ test "it streams them out" do stream: fn _, _ -> nil end do ActivityPub.stream_out_participations(conversation.participations) - assert called(Pleroma.Web.Streamer.stream("participation", participations)) + Enum.each(participations, fn participation -> + assert called(Pleroma.Web.Streamer.stream("participation", participation)) + end) end end end diff --git a/test/web/streamer/ping_test.exs b/test/web/streamer/ping_test.exs deleted file mode 100644 index 3d52c00e4..000000000 --- a/test/web/streamer/ping_test.exs +++ /dev/null @@ -1,36 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.PingTest do - use Pleroma.DataCase - - import Pleroma.Factory - alias Pleroma.Web.Streamer - - setup do - start_supervised({Streamer.supervisor(), [ping_interval: 30]}) - - :ok - end - - describe "sockets" do - setup do - user = insert(:user) - {:ok, %{user: user}} - end - - test "it sends pings", %{user: user} do - task = - Task.async(fn -> - assert_receive {:text, received_event}, 40 - assert_receive {:text, received_event}, 40 - assert_receive {:text, received_event}, 40 - end) - - Streamer.add_socket("public", %{transport_pid: task.pid, assigns: %{user: user}}) - - Task.await(task) - end - end -end diff --git a/test/web/streamer/state_test.exs b/test/web/streamer/state_test.exs deleted file mode 100644 index d1aeac541..000000000 --- a/test/web/streamer/state_test.exs +++ /dev/null @@ -1,54 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.StateTest do - use Pleroma.DataCase - - import Pleroma.Factory - alias Pleroma.Web.Streamer - alias Pleroma.Web.Streamer.StreamerSocket - - @moduletag needs_streamer: true - - describe "sockets" do - setup do - user = insert(:user) - user2 = insert(:user) - {:ok, %{user: user, user2: user2}} - end - - test "it can add a socket", %{user: user} do - Streamer.add_socket("public", %{transport_pid: 1, assigns: %{user: user}}) - - assert(%{"public" => [%StreamerSocket{transport_pid: 1}]} = Streamer.get_sockets()) - end - - test "it can add multiple sockets per user", %{user: user} do - Streamer.add_socket("public", %{transport_pid: 1, assigns: %{user: user}}) - Streamer.add_socket("public", %{transport_pid: 2, assigns: %{user: user}}) - - assert( - %{ - "public" => [ - %StreamerSocket{transport_pid: 2}, - %StreamerSocket{transport_pid: 1} - ] - } = Streamer.get_sockets() - ) - end - - test "it will not add a duplicate socket", %{user: user} do - Streamer.add_socket("activity", %{transport_pid: 1, assigns: %{user: user}}) - Streamer.add_socket("activity", %{transport_pid: 1, assigns: %{user: user}}) - - assert( - %{ - "activity" => [ - %StreamerSocket{transport_pid: 1} - ] - } = Streamer.get_sockets() - ) - end - end -end diff --git a/test/web/streamer/streamer_test.exs b/test/web/streamer_test.exs similarity index 86% rename from test/web/streamer/streamer_test.exs rename to test/web/streamer_test.exs index 88847e20f..96fa7645f 100644 --- a/test/web/streamer/streamer_test.exs +++ b/test/web/streamer_test.exs @@ -5,20 +5,24 @@ defmodule Pleroma.Web.StreamerTest do use Pleroma.DataCase - import Pleroma.Factory - alias Pleroma.List alias Pleroma.User alias Pleroma.Web.CommonAPI alias Pleroma.Web.Streamer - alias Pleroma.Web.Streamer.StreamerSocket - alias Pleroma.Web.Streamer.Worker + import Pleroma.Factory - @moduletag needs_streamer: true clear_config_all([:instance, :skip_thread_containment]) describe "user streams" do setup do + GenServer.start(Streamer, %{}, name: Streamer) + + on_exit(fn -> + if pid = Process.whereis(Streamer) do + Process.exit(pid, :kill) + end + end) + user = insert(:user) notify = insert(:notification, user: user, activity: build(:note_activity)) {:ok, %{user: user, notify: notify}} @@ -121,9 +125,11 @@ test "it sends to public" do assert_receive {:text, _}, 4_000 end) - fake_socket = %StreamerSocket{ + fake_socket = %{ transport_pid: task.pid, - user: user + assigns: %{ + user: user + } } {:ok, activity} = CommonAPI.post(other_user, %{"status" => "Test"}) @@ -132,7 +138,7 @@ test "it sends to public" do "public" => [fake_socket] } - Worker.push_to_socket(topics, "public", activity) + Streamer.push_to_socket(topics, "public", activity) Task.await(task) @@ -149,9 +155,11 @@ test "it sends to public" do assert received_event == expected_event end) - fake_socket = %StreamerSocket{ + fake_socket = %{ transport_pid: task.pid, - user: user + assigns: %{ + user: user + } } {:ok, activity} = CommonAPI.delete(activity.id, other_user) @@ -160,7 +168,7 @@ test "it sends to public" do "public" => [fake_socket] } - Worker.push_to_socket(topics, "public", activity) + Streamer.push_to_socket(topics, "public", activity) Task.await(task) end @@ -181,9 +189,9 @@ test "it doesn't send to user if recipients invalid and thread containment is en ) task = Task.async(fn -> refute_receive {:text, _}, 1_000 end) - fake_socket = %StreamerSocket{transport_pid: task.pid, user: user} + fake_socket = %{transport_pid: task.pid, assigns: %{user: user}} topics = %{"public" => [fake_socket]} - Worker.push_to_socket(topics, "public", activity) + Streamer.push_to_socket(topics, "public", activity) Task.await(task) end @@ -203,9 +211,9 @@ test "it sends message if recipients invalid and thread containment is disabled" ) task = Task.async(fn -> assert_receive {:text, _}, 1_000 end) - fake_socket = %StreamerSocket{transport_pid: task.pid, user: user} + fake_socket = %{transport_pid: task.pid, assigns: %{user: user}} topics = %{"public" => [fake_socket]} - Worker.push_to_socket(topics, "public", activity) + Streamer.push_to_socket(topics, "public", activity) Task.await(task) end @@ -225,9 +233,9 @@ test "it sends message if recipients invalid and thread containment is enabled b ) task = Task.async(fn -> assert_receive {:text, _}, 1_000 end) - fake_socket = %StreamerSocket{transport_pid: task.pid, user: user} + fake_socket = %{transport_pid: task.pid, assigns: %{user: user}} topics = %{"public" => [fake_socket]} - Worker.push_to_socket(topics, "public", activity) + Streamer.push_to_socket(topics, "public", activity) Task.await(task) end @@ -243,9 +251,11 @@ test "it doesn't send to blocked users" do refute_receive {:text, _}, 1_000 end) - fake_socket = %StreamerSocket{ + fake_socket = %{ transport_pid: task.pid, - user: user + assigns: %{ + user: user + } } {:ok, activity} = CommonAPI.post(blocked_user, %{"status" => "Test"}) @@ -254,7 +264,7 @@ test "it doesn't send to blocked users" do "public" => [fake_socket] } - Worker.push_to_socket(topics, "public", activity) + Streamer.push_to_socket(topics, "public", activity) Task.await(task) end @@ -274,9 +284,11 @@ test "it doesn't send unwanted DMs to list" do refute_receive {:text, _}, 1_000 end) - fake_socket = %StreamerSocket{ + fake_socket = %{ transport_pid: task.pid, - user: user_a + assigns: %{ + user: user_a + } } {:ok, activity} = @@ -289,7 +301,7 @@ test "it doesn't send unwanted DMs to list" do "list:#{list.id}" => [fake_socket] } - Worker.handle_call({:stream, "list", activity}, self(), topics) + Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics) Task.await(task) end @@ -306,9 +318,11 @@ test "it doesn't send unwanted private posts to list" do refute_receive {:text, _}, 1_000 end) - fake_socket = %StreamerSocket{ + fake_socket = %{ transport_pid: task.pid, - user: user_a + assigns: %{ + user: user_a + } } {:ok, activity} = @@ -321,12 +335,12 @@ test "it doesn't send unwanted private posts to list" do "list:#{list.id}" => [fake_socket] } - Worker.handle_call({:stream, "list", activity}, self(), topics) + Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics) Task.await(task) end - test "it sends wanted private posts to list" do + test "it send wanted private posts to list" do user_a = insert(:user) user_b = insert(:user) @@ -340,9 +354,11 @@ test "it sends wanted private posts to list" do assert_receive {:text, _}, 1_000 end) - fake_socket = %StreamerSocket{ + fake_socket = %{ transport_pid: task.pid, - user: user_a + assigns: %{ + user: user_a + } } {:ok, activity} = @@ -351,12 +367,11 @@ test "it sends wanted private posts to list" do "visibility" => "private" }) - Streamer.add_socket( - "list:#{list.id}", - fake_socket - ) + topics = %{ + "list:#{list.id}" => [fake_socket] + } - Worker.handle_call({:stream, "list", activity}, self(), %{}) + Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics) Task.await(task) end @@ -372,9 +387,11 @@ test "it doesn't send muted reblogs" do refute_receive {:text, _}, 1_000 end) - fake_socket = %StreamerSocket{ + fake_socket = %{ transport_pid: task.pid, - user: user1 + assigns: %{ + user: user1 + } } {:ok, create_activity} = CommonAPI.post(user3, %{"status" => "I'm kawen"}) @@ -384,7 +401,7 @@ test "it doesn't send muted reblogs" do "public" => [fake_socket] } - Worker.push_to_socket(topics, "public", announce_activity) + Streamer.push_to_socket(topics, "public", announce_activity) Task.await(task) end @@ -400,8 +417,6 @@ test "it doesn't send posts from muted threads" do task = Task.async(fn -> refute_receive {:text, _}, 4_000 end) - Process.sleep(4000) - Streamer.add_socket( "user", %{transport_pid: task.pid, assigns: %{user: user2}} @@ -413,6 +428,14 @@ test "it doesn't send posts from muted threads" do describe "direct streams" do setup do + GenServer.start(Streamer, %{}, name: Streamer) + + on_exit(fn -> + if pid = Process.whereis(Streamer) do + Process.exit(pid, :kill) + end + end) + :ok end @@ -457,8 +480,6 @@ test "it doesn't send conversation update to the 'direct' streamj when the last refute_receive {:text, _}, 4_000 end) - Process.sleep(1000) - Streamer.add_socket( "direct", %{transport_pid: task.pid, assigns: %{user: user}} @@ -500,8 +521,6 @@ test "it sends conversation update to the 'direct' stream when a message is dele assert last_status["id"] == to_string(create_activity.id) end) - Process.sleep(1000) - Streamer.add_socket( "direct", %{transport_pid: task.pid, assigns: %{user: user}} From e8120944d8c016a1aa8fcefe34b1f0cc9089ea4f Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 16 Sep 2019 13:23:06 +0300 Subject: [PATCH 080/272] Fix signed fetch inclusion publisher test Oban branch changed `actor` to `actor_id` and this test was not adjusted for that --- test/web/activity_pub/publisher_test.exs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/web/activity_pub/publisher_test.exs b/test/web/activity_pub/publisher_test.exs index c7d1d05aa..df03b4008 100644 --- a/test/web/activity_pub/publisher_test.exs +++ b/test/web/activity_pub/publisher_test.exs @@ -321,7 +321,7 @@ test "it returns inbox for messages involving single recipients in total" do assert called( Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{ inbox: "https://domain.com/users/nick1/inbox", - actor: actor, + actor_id: actor.id, id: delete.data["id"] }) ) @@ -329,7 +329,7 @@ test "it returns inbox for messages involving single recipients in total" do assert called( Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{ inbox: "https://domain2.com/users/nick1/inbox", - actor: actor, + actor_id: actor.id, id: delete.data["id"] }) ) From 96816ceaa25c21cec7677e75dcddd7ffb42d83c3 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Mon, 16 Sep 2019 17:03:37 +0700 Subject: [PATCH 081/272] Revert "Merge branch 'revert-4fabf83a' into 'develop'" This reverts commit fe7fd331263007e0fb2877ef7370a09a9704da36, reversing changes made to 4fabf83ad01352442906d79187aeab4c777f4df8. --- .gitignore | 4 + config/config.exs | 4 + lib/pleroma/activity/ir/topics.ex | 63 ++++ lib/pleroma/application.ex | 2 +- lib/pleroma/notification.ex | 6 +- lib/pleroma/web/activity_pub/activity_pub.ex | 48 +-- .../web/mastodon_api/websocket_handler.ex | 7 +- lib/pleroma/web/streamer.ex | 318 ------------------ lib/pleroma/web/streamer/ping.ex | 33 ++ lib/pleroma/web/streamer/state.ex | 68 ++++ lib/pleroma/web/streamer/streamer.ex | 55 +++ lib/pleroma/web/streamer/streamer_socket.ex | 31 ++ lib/pleroma/web/streamer/supervisor.ex | 33 ++ lib/pleroma/web/streamer/worker.ex | 220 ++++++++++++ lib/pleroma/web/views/streamer_view.ex | 66 ++++ mix.exs | 1 + mix.lock | 1 + test/activity/ir/topics_test.exs | 141 ++++++++ test/integration/mastodon_websocket_test.exs | 16 +- test/notification_test.exs | 11 +- test/support/conn_case.ex | 4 + test/support/data_case.ex | 4 + test/web/activity_pub/activity_pub_test.exs | 4 +- test/web/streamer/ping_test.exs | 36 ++ test/web/streamer/state_test.exs | 54 +++ test/web/{ => streamer}/streamer_test.exs | 105 +++--- 26 files changed, 888 insertions(+), 447 deletions(-) create mode 100644 lib/pleroma/activity/ir/topics.ex delete mode 100644 lib/pleroma/web/streamer.ex create mode 100644 lib/pleroma/web/streamer/ping.ex create mode 100644 lib/pleroma/web/streamer/state.ex create mode 100644 lib/pleroma/web/streamer/streamer.ex create mode 100644 lib/pleroma/web/streamer/streamer_socket.ex create mode 100644 lib/pleroma/web/streamer/supervisor.ex create mode 100644 lib/pleroma/web/streamer/worker.ex create mode 100644 lib/pleroma/web/views/streamer_view.ex create mode 100644 test/activity/ir/topics_test.exs create mode 100644 test/web/streamer/ping_test.exs create mode 100644 test/web/streamer/state_test.exs rename test/web/{ => streamer}/streamer_test.exs (86%) diff --git a/.gitignore b/.gitignore index 4e71a7df0..3b0c7d361 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,7 @@ docs/generated_config.md # Code test coverage /cover /Elixir.*.coverdata + +.idea +pleroma.iml + diff --git a/config/config.exs b/config/config.exs index ab6e00c98..b1b98af93 100644 --- a/config/config.exs +++ b/config/config.exs @@ -331,6 +331,10 @@ follow_handshake_timeout: 500, sign_object_fetches: true +config :pleroma, :streamer, + workers: 3, + overflow_workers: 2 + config :pleroma, :user, deny_follow_blocked: true config :pleroma, :mrf_normalize_markup, scrub_policy: Pleroma.HTML.Scrubber.Default diff --git a/lib/pleroma/activity/ir/topics.ex b/lib/pleroma/activity/ir/topics.ex new file mode 100644 index 000000000..010897abc --- /dev/null +++ b/lib/pleroma/activity/ir/topics.ex @@ -0,0 +1,63 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Activity.Ir.Topics do + alias Pleroma.Object + alias Pleroma.Web.ActivityPub.Visibility + + def get_activity_topics(activity) do + activity + |> Object.normalize() + |> generate_topics(activity) + |> List.flatten() + end + + defp generate_topics(%{data: %{"type" => "Answer"}}, _) do + [] + end + + defp generate_topics(object, activity) do + ["user", "list"] ++ visibility_tags(object, activity) + end + + defp visibility_tags(object, activity) do + case Visibility.get_visibility(activity) do + "public" -> + if activity.local do + ["public", "public:local"] + else + ["public"] + end + |> item_creation_tags(object, activity) + + "direct" -> + ["direct"] + + _ -> + [] + end + end + + defp item_creation_tags(tags, %{data: %{"type" => "Create"}} = object, activity) do + tags ++ hashtags_to_topics(object) ++ attachment_topics(object, activity) + end + + defp item_creation_tags(tags, _, _) do + tags + end + + defp hashtags_to_topics(%{data: %{"tag" => tags}}) do + tags + |> Enum.filter(&is_bitstring(&1)) + |> Enum.map(fn tag -> "hashtag:" <> tag end) + end + + defp hashtags_to_topics(_), do: [] + + defp attachment_topics(%{data: %{"attachment" => []}}, _act), do: [] + + defp attachment_topics(_object, %{local: true}), do: ["public:media", "public:local:media"] + + defp attachment_topics(_object, _act), do: ["public:media"] +end diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 49094704b..3b37ce630 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -141,7 +141,7 @@ defp oauth_cleanup_enabled?, defp streamer_child(:test), do: [] defp streamer_child(_) do - [Pleroma.Web.Streamer] + [Pleroma.Web.Streamer.supervisor()] end defp oauth_cleanup_child(true), diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index b7c880c51..8012389ac 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -210,8 +210,10 @@ def create_notification(%Activity{} = activity, %User{} = user) do unless skip?(activity, user) do notification = %Notification{user_id: user.id, activity: activity} {:ok, notification} = Repo.insert(notification) - Streamer.stream("user", notification) - Streamer.stream("user:notification", notification) + + ["user", "user:notification"] + |> Streamer.stream(notification) + Push.send(notification) notification end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 41f6a0f1f..bc5ae7fbf 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.Activity + alias Pleroma.Activity.Ir.Topics alias Pleroma.Config alias Pleroma.Conversation alias Pleroma.Notification @@ -16,6 +17,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.User alias Pleroma.Web.ActivityPub.MRF alias Pleroma.Web.ActivityPub.Transmogrifier + alias Pleroma.Web.Streamer alias Pleroma.Web.WebFinger alias Pleroma.Workers.BackgroundWorker @@ -187,9 +189,7 @@ def stream_out_participations(participations) do participations |> Repo.preload(:user) - Enum.each(participations, fn participation -> - Pleroma.Web.Streamer.stream("participation", participation) - end) + Streamer.stream("participation", participations) end def stream_out_participations(%Object{data: %{"context" => context}}, user) do @@ -208,41 +208,15 @@ def stream_out_participations(%Object{data: %{"context" => context}}, user) do def stream_out_participations(_, _), do: :noop - def stream_out(activity) do - if activity.data["type"] in ["Create", "Announce", "Delete"] do - object = Object.normalize(activity) - # Do not stream out poll replies - unless object.data["type"] == "Answer" do - Pleroma.Web.Streamer.stream("user", activity) - Pleroma.Web.Streamer.stream("list", activity) + def stream_out(%Activity{data: %{"type" => data_type}} = activity) + when data_type in ["Create", "Announce", "Delete"] do + activity + |> Topics.get_activity_topics() + |> Streamer.stream(activity) + end - if get_visibility(activity) == "public" do - Pleroma.Web.Streamer.stream("public", activity) - - if activity.local do - Pleroma.Web.Streamer.stream("public:local", activity) - end - - if activity.data["type"] in ["Create"] do - object.data - |> Map.get("tag", []) - |> Enum.filter(fn tag -> is_bitstring(tag) end) - |> Enum.each(fn tag -> Pleroma.Web.Streamer.stream("hashtag:" <> tag, activity) end) - - if object.data["attachment"] != [] do - Pleroma.Web.Streamer.stream("public:media", activity) - - if activity.local do - Pleroma.Web.Streamer.stream("public:local:media", activity) - end - end - end - else - if get_visibility(activity) == "direct", - do: Pleroma.Web.Streamer.stream("direct", activity) - end - end - end + def stream_out(_activity) do + :noop end def create(%{to: to, actor: actor, context: context, object: object} = params, fake \\ false) do diff --git a/lib/pleroma/web/mastodon_api/websocket_handler.ex b/lib/pleroma/web/mastodon_api/websocket_handler.ex index dbd3542ea..3c26eb406 100644 --- a/lib/pleroma/web/mastodon_api/websocket_handler.ex +++ b/lib/pleroma/web/mastodon_api/websocket_handler.ex @@ -8,6 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.OAuth.Token + alias Pleroma.Web.Streamer @behaviour :cowboy_websocket @@ -24,7 +25,7 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do ] @anonymous_streams ["public", "public:local", "hashtag"] - # Handled by periodic keepalive in Pleroma.Web.Streamer. + # Handled by periodic keepalive in Pleroma.Web.Streamer.Ping. @timeout :infinity def init(%{qs: qs} = req, state) do @@ -65,7 +66,7 @@ def websocket_info(:subscribe, state) do }, topic #{state.topic}" ) - Pleroma.Web.Streamer.add_socket(state.topic, streamer_socket(state)) + Streamer.add_socket(state.topic, streamer_socket(state)) {:ok, state} end @@ -80,7 +81,7 @@ def terminate(reason, _req, state) do }, topic #{state.topic || "?"}: #{inspect(reason)}" ) - Pleroma.Web.Streamer.remove_socket(state.topic, streamer_socket(state)) + Streamer.remove_socket(state.topic, streamer_socket(state)) :ok end diff --git a/lib/pleroma/web/streamer.ex b/lib/pleroma/web/streamer.ex deleted file mode 100644 index 587c43f40..000000000 --- a/lib/pleroma/web/streamer.ex +++ /dev/null @@ -1,318 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.Streamer do - use GenServer - require Logger - alias Pleroma.Activity - alias Pleroma.Config - alias Pleroma.Conversation.Participation - alias Pleroma.Notification - alias Pleroma.Object - alias Pleroma.User - alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Web.ActivityPub.Visibility - alias Pleroma.Web.CommonAPI - alias Pleroma.Web.MastodonAPI.NotificationView - - @keepalive_interval :timer.seconds(30) - - def start_link(_) do - GenServer.start_link(__MODULE__, %{}, name: __MODULE__) - end - - def add_socket(topic, socket) do - GenServer.cast(__MODULE__, %{action: :add, socket: socket, topic: topic}) - end - - def remove_socket(topic, socket) do - GenServer.cast(__MODULE__, %{action: :remove, socket: socket, topic: topic}) - end - - def stream(topic, item) do - GenServer.cast(__MODULE__, %{action: :stream, topic: topic, item: item}) - end - - def init(args) do - Process.send_after(self(), %{action: :ping}, @keepalive_interval) - - {:ok, args} - end - - def handle_info(%{action: :ping}, topics) do - topics - |> Map.values() - |> List.flatten() - |> Enum.each(fn socket -> - Logger.debug("Sending keepalive ping") - send(socket.transport_pid, {:text, ""}) - end) - - Process.send_after(self(), %{action: :ping}, @keepalive_interval) - - {:noreply, topics} - end - - def handle_cast(%{action: :stream, topic: "direct", item: item}, topics) do - recipient_topics = - User.get_recipients_from_activity(item) - |> Enum.map(fn %{id: id} -> "direct:#{id}" end) - - Enum.each(recipient_topics || [], fn user_topic -> - Logger.debug("Trying to push direct message to #{user_topic}\n\n") - push_to_socket(topics, user_topic, item) - end) - - {:noreply, topics} - end - - def handle_cast(%{action: :stream, topic: "participation", item: participation}, topics) do - user_topic = "direct:#{participation.user_id}" - Logger.debug("Trying to push a conversation participation to #{user_topic}\n\n") - - push_to_socket(topics, user_topic, participation) - - {:noreply, topics} - end - - def handle_cast(%{action: :stream, topic: "list", item: item}, topics) do - # filter the recipient list if the activity is not public, see #270. - recipient_lists = - case Visibility.is_public?(item) do - true -> - Pleroma.List.get_lists_from_activity(item) - - _ -> - Pleroma.List.get_lists_from_activity(item) - |> Enum.filter(fn list -> - owner = User.get_cached_by_id(list.user_id) - - Visibility.visible_for_user?(item, owner) - end) - end - - recipient_topics = - recipient_lists - |> Enum.map(fn %{id: id} -> "list:#{id}" end) - - Enum.each(recipient_topics || [], fn list_topic -> - Logger.debug("Trying to push message to #{list_topic}\n\n") - push_to_socket(topics, list_topic, item) - end) - - {:noreply, topics} - end - - def handle_cast( - %{action: :stream, topic: topic, item: %Notification{} = item}, - topics - ) - when topic in ["user", "user:notification"] do - topics - |> Map.get("#{topic}:#{item.user_id}", []) - |> Enum.each(fn socket -> - with %User{} = user <- User.get_cached_by_ap_id(socket.assigns[:user].ap_id), - true <- should_send?(user, item) do - send( - socket.transport_pid, - {:text, represent_notification(socket.assigns[:user], item)} - ) - end - end) - - {:noreply, topics} - end - - def handle_cast(%{action: :stream, topic: "user", item: item}, topics) do - Logger.debug("Trying to push to users") - - recipient_topics = - User.get_recipients_from_activity(item) - |> Enum.map(fn %{id: id} -> "user:#{id}" end) - - Enum.each(recipient_topics, fn topic -> - push_to_socket(topics, topic, item) - end) - - {:noreply, topics} - end - - def handle_cast(%{action: :stream, topic: topic, item: item}, topics) do - Logger.debug("Trying to push to #{topic}") - Logger.debug("Pushing item to #{topic}") - push_to_socket(topics, topic, item) - {:noreply, topics} - end - - def handle_cast(%{action: :add, topic: topic, socket: socket}, sockets) do - topic = internal_topic(topic, socket) - sockets_for_topic = sockets[topic] || [] - sockets_for_topic = Enum.uniq([socket | sockets_for_topic]) - sockets = Map.put(sockets, topic, sockets_for_topic) - Logger.debug("Got new conn for #{topic}") - {:noreply, sockets} - end - - def handle_cast(%{action: :remove, topic: topic, socket: socket}, sockets) do - topic = internal_topic(topic, socket) - sockets_for_topic = sockets[topic] || [] - sockets_for_topic = List.delete(sockets_for_topic, socket) - sockets = Map.put(sockets, topic, sockets_for_topic) - Logger.debug("Removed conn for #{topic}") - {:noreply, sockets} - end - - def handle_cast(m, state) do - Logger.info("Unknown: #{inspect(m)}, #{inspect(state)}") - {:noreply, state} - end - - defp represent_update(%Activity{} = activity, %User{} = user) do - %{ - event: "update", - payload: - Pleroma.Web.MastodonAPI.StatusView.render( - "status.json", - activity: activity, - for: user - ) - |> Jason.encode!() - } - |> Jason.encode!() - end - - defp represent_update(%Activity{} = activity) do - %{ - event: "update", - payload: - Pleroma.Web.MastodonAPI.StatusView.render( - "status.json", - activity: activity - ) - |> Jason.encode!() - } - |> Jason.encode!() - end - - def represent_conversation(%Participation{} = participation) do - %{ - event: "conversation", - payload: - Pleroma.Web.MastodonAPI.ConversationView.render("participation.json", %{ - participation: participation, - for: participation.user - }) - |> Jason.encode!() - } - |> Jason.encode!() - end - - @spec represent_notification(User.t(), Notification.t()) :: binary() - defp represent_notification(%User{} = user, %Notification{} = notify) do - %{ - event: "notification", - payload: - NotificationView.render( - "show.json", - %{notification: notify, for: user} - ) - |> Jason.encode!() - } - |> Jason.encode!() - end - - defp should_send?(%User{} = user, %Activity{} = item) do - blocks = user.info.blocks || [] - mutes = user.info.mutes || [] - reblog_mutes = user.info.muted_reblogs || [] - domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.info.domain_blocks) - - with parent when not is_nil(parent) <- Object.normalize(item), - true <- Enum.all?([blocks, mutes, reblog_mutes], &(item.actor not in &1)), - true <- Enum.all?([blocks, mutes], &(parent.data["actor"] not in &1)), - %{host: item_host} <- URI.parse(item.actor), - %{host: parent_host} <- URI.parse(parent.data["actor"]), - false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, item_host), - false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, parent_host), - true <- thread_containment(item, user), - false <- CommonAPI.thread_muted?(user, item) do - true - else - _ -> false - end - end - - defp should_send?(%User{} = user, %Notification{activity: activity}) do - should_send?(user, activity) - end - - def push_to_socket(topics, topic, %Activity{data: %{"type" => "Announce"}} = item) do - Enum.each(topics[topic] || [], fn socket -> - # Get the current user so we have up-to-date blocks etc. - if socket.assigns[:user] do - user = User.get_cached_by_ap_id(socket.assigns[:user].ap_id) - - if should_send?(user, item) do - send(socket.transport_pid, {:text, represent_update(item, user)}) - end - else - send(socket.transport_pid, {:text, represent_update(item)}) - end - end) - end - - def push_to_socket(topics, topic, %Participation{} = participation) do - Enum.each(topics[topic] || [], fn socket -> - send(socket.transport_pid, {:text, represent_conversation(participation)}) - end) - end - - def push_to_socket(topics, topic, %Activity{ - data: %{"type" => "Delete", "deleted_activity_id" => deleted_activity_id} - }) do - Enum.each(topics[topic] || [], fn socket -> - send( - socket.transport_pid, - {:text, %{event: "delete", payload: to_string(deleted_activity_id)} |> Jason.encode!()} - ) - end) - end - - def push_to_socket(_topics, _topic, %Activity{data: %{"type" => "Delete"}}), do: :noop - - def push_to_socket(topics, topic, item) do - Enum.each(topics[topic] || [], fn socket -> - # Get the current user so we have up-to-date blocks etc. - if socket.assigns[:user] do - user = User.get_cached_by_ap_id(socket.assigns[:user].ap_id) - blocks = user.info.blocks || [] - mutes = user.info.mutes || [] - - with true <- Enum.all?([blocks, mutes], &(item.actor not in &1)), - true <- thread_containment(item, user) do - send(socket.transport_pid, {:text, represent_update(item, user)}) - end - else - send(socket.transport_pid, {:text, represent_update(item)}) - end - end) - end - - defp internal_topic(topic, socket) when topic in ~w[user user:notification direct] do - "#{topic}:#{socket.assigns[:user].id}" - end - - defp internal_topic(topic, _), do: topic - - @spec thread_containment(Activity.t(), User.t()) :: boolean() - defp thread_containment(_activity, %User{info: %{skip_thread_containment: true}}), do: true - - defp thread_containment(activity, user) do - if Config.get([:instance, :skip_thread_containment]) do - true - else - ActivityPub.contain_activity(activity, user) - end - end -end diff --git a/lib/pleroma/web/streamer/ping.ex b/lib/pleroma/web/streamer/ping.ex new file mode 100644 index 000000000..f77cbb95c --- /dev/null +++ b/lib/pleroma/web/streamer/ping.ex @@ -0,0 +1,33 @@ +defmodule Pleroma.Web.Streamer.Ping do + use GenServer + require Logger + + alias Pleroma.Web.Streamer.State + alias Pleroma.Web.Streamer.StreamerSocket + + @keepalive_interval :timer.seconds(30) + + def start_link(opts) do + ping_interval = Keyword.get(opts, :ping_interval, @keepalive_interval) + GenServer.start_link(__MODULE__, %{ping_interval: ping_interval}, name: __MODULE__) + end + + def init(%{ping_interval: ping_interval} = args) do + Process.send_after(self(), :ping, ping_interval) + {:ok, args} + end + + def handle_info(:ping, %{ping_interval: ping_interval} = state) do + State.get_sockets() + |> Map.values() + |> List.flatten() + |> Enum.each(fn %StreamerSocket{transport_pid: transport_pid} -> + Logger.debug("Sending keepalive ping") + send(transport_pid, {:text, ""}) + end) + + Process.send_after(self(), :ping, ping_interval) + + {:noreply, state} + end +end diff --git a/lib/pleroma/web/streamer/state.ex b/lib/pleroma/web/streamer/state.ex new file mode 100644 index 000000000..7b5199068 --- /dev/null +++ b/lib/pleroma/web/streamer/state.ex @@ -0,0 +1,68 @@ +defmodule Pleroma.Web.Streamer.State do + use GenServer + require Logger + + alias Pleroma.Web.Streamer.StreamerSocket + + def start_link(_) do + GenServer.start_link(__MODULE__, %{sockets: %{}}, name: __MODULE__) + end + + def add_socket(topic, socket) do + GenServer.call(__MODULE__, {:add, socket, topic}) + end + + def remove_socket(topic, socket) do + GenServer.call(__MODULE__, {:remove, socket, topic}) + end + + def get_sockets do + %{sockets: stream_sockets} = GenServer.call(__MODULE__, :get_state) + stream_sockets + end + + def init(init_arg) do + {:ok, init_arg} + end + + def handle_call(:get_state, _from, state) do + {:reply, state, state} + end + + def handle_call({:add, socket, topic}, _from, %{sockets: sockets} = state) do + internal_topic = internal_topic(topic, socket) + stream_socket = StreamerSocket.from_socket(socket) + + sockets_for_topic = + sockets + |> Map.get(internal_topic, []) + |> List.insert_at(0, stream_socket) + |> Enum.uniq() + + state = put_in(state, [:sockets, internal_topic], sockets_for_topic) + Logger.debug("Got new conn for #{topic}") + {:reply, state, state} + end + + def handle_call({:remove, socket, topic}, _from, %{sockets: sockets} = state) do + internal_topic = internal_topic(topic, socket) + stream_socket = StreamerSocket.from_socket(socket) + + sockets_for_topic = + sockets + |> Map.get(internal_topic, []) + |> List.delete(stream_socket) + + state = Kernel.put_in(state, [:sockets, internal_topic], sockets_for_topic) + {:reply, state, state} + end + + defp internal_topic(topic, socket) + when topic in ~w[user user:notification direct] do + "#{topic}:#{socket.assigns[:user].id}" + end + + defp internal_topic(topic, _) do + topic + end +end diff --git a/lib/pleroma/web/streamer/streamer.ex b/lib/pleroma/web/streamer/streamer.ex new file mode 100644 index 000000000..8cf719277 --- /dev/null +++ b/lib/pleroma/web/streamer/streamer.ex @@ -0,0 +1,55 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Streamer do + alias Pleroma.Web.Streamer.State + alias Pleroma.Web.Streamer.Worker + + @timeout 60_000 + @mix_env Mix.env() + + def add_socket(topic, socket) do + State.add_socket(topic, socket) + end + + def remove_socket(topic, socket) do + State.remove_socket(topic, socket) + end + + def get_sockets do + State.get_sockets() + end + + def stream(topics, items) do + if should_send?() do + Task.async(fn -> + :poolboy.transaction( + :streamer_worker, + &Worker.stream(&1, topics, items), + @timeout + ) + end) + end + end + + def supervisor, do: Pleroma.Web.Streamer.Supervisor + + defp should_send? do + handle_should_send(@mix_env) + end + + defp handle_should_send(:test) do + case Process.whereis(:streamer_worker) do + nil -> + false + + pid -> + Process.alive?(pid) + end + end + + defp handle_should_send(_) do + true + end +end diff --git a/lib/pleroma/web/streamer/streamer_socket.ex b/lib/pleroma/web/streamer/streamer_socket.ex new file mode 100644 index 000000000..f006c0306 --- /dev/null +++ b/lib/pleroma/web/streamer/streamer_socket.ex @@ -0,0 +1,31 @@ +defmodule Pleroma.Web.Streamer.StreamerSocket do + defstruct transport_pid: nil, user: nil + + alias Pleroma.User + alias Pleroma.Web.Streamer.StreamerSocket + + def from_socket(%{ + transport_pid: transport_pid, + assigns: %{user: nil} + }) do + %StreamerSocket{ + transport_pid: transport_pid + } + end + + def from_socket(%{ + transport_pid: transport_pid, + assigns: %{user: %User{} = user} + }) do + %StreamerSocket{ + transport_pid: transport_pid, + user: user + } + end + + def from_socket(%{transport_pid: transport_pid}) do + %StreamerSocket{ + transport_pid: transport_pid + } + end +end diff --git a/lib/pleroma/web/streamer/supervisor.ex b/lib/pleroma/web/streamer/supervisor.ex new file mode 100644 index 000000000..6afe19323 --- /dev/null +++ b/lib/pleroma/web/streamer/supervisor.ex @@ -0,0 +1,33 @@ +defmodule Pleroma.Web.Streamer.Supervisor do + use Supervisor + + def start_link(opts) do + Supervisor.start_link(__MODULE__, opts, name: __MODULE__) + end + + def init(args) do + children = [ + {Pleroma.Web.Streamer.State, args}, + {Pleroma.Web.Streamer.Ping, args}, + :poolboy.child_spec(:streamer_worker, poolboy_config()) + ] + + opts = [strategy: :one_for_one, name: Pleroma.Web.Streamer.Supervisor] + Supervisor.init(children, opts) + end + + defp poolboy_config do + opts = + Pleroma.Config.get(:streamer, + workers: 3, + overflow_workers: 2 + ) + + [ + {:name, {:local, :streamer_worker}}, + {:worker_module, Pleroma.Web.Streamer.Worker}, + {:size, opts[:workers]}, + {:max_overflow, opts[:overflow_workers]} + ] + end +end diff --git a/lib/pleroma/web/streamer/worker.ex b/lib/pleroma/web/streamer/worker.ex new file mode 100644 index 000000000..5804508eb --- /dev/null +++ b/lib/pleroma/web/streamer/worker.ex @@ -0,0 +1,220 @@ +defmodule Pleroma.Web.Streamer.Worker do + use GenServer + + require Logger + + alias Pleroma.Activity + alias Pleroma.Config + alias Pleroma.Conversation.Participation + alias Pleroma.Notification + alias Pleroma.Object + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Visibility + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.Streamer.State + alias Pleroma.Web.Streamer.StreamerSocket + alias Pleroma.Web.StreamerView + + def start_link(_) do + GenServer.start_link(__MODULE__, %{}, []) + end + + def init(init_arg) do + {:ok, init_arg} + end + + def stream(pid, topics, items) do + GenServer.call(pid, {:stream, topics, items}) + end + + def handle_call({:stream, topics, item}, _from, state) when is_list(topics) do + Enum.each(topics, fn t -> + do_stream(%{topic: t, item: item}) + end) + + {:reply, state, state} + end + + def handle_call({:stream, topic, items}, _from, state) when is_list(items) do + Enum.each(items, fn i -> + do_stream(%{topic: topic, item: i}) + end) + + {:reply, state, state} + end + + def handle_call({:stream, topic, item}, _from, state) do + do_stream(%{topic: topic, item: item}) + + {:reply, state, state} + end + + defp do_stream(%{topic: "direct", item: item}) do + recipient_topics = + User.get_recipients_from_activity(item) + |> Enum.map(fn %{id: id} -> "direct:#{id}" end) + + Enum.each(recipient_topics, fn user_topic -> + Logger.debug("Trying to push direct message to #{user_topic}\n\n") + push_to_socket(State.get_sockets(), user_topic, item) + end) + end + + defp do_stream(%{topic: "participation", item: participation}) do + user_topic = "direct:#{participation.user_id}" + Logger.debug("Trying to push a conversation participation to #{user_topic}\n\n") + + push_to_socket(State.get_sockets(), user_topic, participation) + end + + defp do_stream(%{topic: "list", item: item}) do + # filter the recipient list if the activity is not public, see #270. + recipient_lists = + case Visibility.is_public?(item) do + true -> + Pleroma.List.get_lists_from_activity(item) + + _ -> + Pleroma.List.get_lists_from_activity(item) + |> Enum.filter(fn list -> + owner = User.get_cached_by_id(list.user_id) + + Visibility.visible_for_user?(item, owner) + end) + end + + recipient_topics = + recipient_lists + |> Enum.map(fn %{id: id} -> "list:#{id}" end) + + Enum.each(recipient_topics, fn list_topic -> + Logger.debug("Trying to push message to #{list_topic}\n\n") + push_to_socket(State.get_sockets(), list_topic, item) + end) + end + + defp do_stream(%{topic: topic, item: %Notification{} = item}) + when topic in ["user", "user:notification"] do + State.get_sockets() + |> Map.get("#{topic}:#{item.user_id}", []) + |> Enum.each(fn %StreamerSocket{transport_pid: transport_pid, user: socket_user} -> + with %User{} = user <- User.get_cached_by_ap_id(socket_user.ap_id), + true <- should_send?(user, item) do + send(transport_pid, {:text, StreamerView.render("notification.json", socket_user, item)}) + end + end) + end + + defp do_stream(%{topic: "user", item: item}) do + Logger.debug("Trying to push to users") + + recipient_topics = + User.get_recipients_from_activity(item) + |> Enum.map(fn %{id: id} -> "user:#{id}" end) + + Enum.each(recipient_topics, fn topic -> + push_to_socket(State.get_sockets(), topic, item) + end) + end + + defp do_stream(%{topic: topic, item: item}) do + Logger.debug("Trying to push to #{topic}") + Logger.debug("Pushing item to #{topic}") + push_to_socket(State.get_sockets(), topic, item) + end + + defp should_send?(%User{} = user, %Activity{} = item) do + blocks = user.info.blocks || [] + mutes = user.info.mutes || [] + reblog_mutes = user.info.muted_reblogs || [] + domain_blocks = Pleroma.Web.ActivityPub.MRF.subdomains_regex(user.info.domain_blocks) + + with parent when not is_nil(parent) <- Object.normalize(item), + true <- Enum.all?([blocks, mutes, reblog_mutes], &(item.actor not in &1)), + true <- Enum.all?([blocks, mutes], &(parent.data["actor"] not in &1)), + %{host: item_host} <- URI.parse(item.actor), + %{host: parent_host} <- URI.parse(parent.data["actor"]), + false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, item_host), + false <- Pleroma.Web.ActivityPub.MRF.subdomain_match?(domain_blocks, parent_host), + true <- thread_containment(item, user), + false <- CommonAPI.thread_muted?(user, item) do + true + else + _ -> false + end + end + + defp should_send?(%User{} = user, %Notification{activity: activity}) do + should_send?(user, activity) + end + + def push_to_socket(topics, topic, %Activity{data: %{"type" => "Announce"}} = item) do + Enum.each(topics[topic] || [], fn %StreamerSocket{ + transport_pid: transport_pid, + user: socket_user + } -> + # Get the current user so we have up-to-date blocks etc. + if socket_user do + user = User.get_cached_by_ap_id(socket_user.ap_id) + + if should_send?(user, item) do + send(transport_pid, {:text, StreamerView.render("update.json", item, user)}) + end + else + send(transport_pid, {:text, StreamerView.render("update.json", item)}) + end + end) + end + + def push_to_socket(topics, topic, %Participation{} = participation) do + Enum.each(topics[topic] || [], fn %StreamerSocket{transport_pid: transport_pid} -> + send(transport_pid, {:text, StreamerView.render("conversation.json", participation)}) + end) + end + + def push_to_socket(topics, topic, %Activity{ + data: %{"type" => "Delete", "deleted_activity_id" => deleted_activity_id} + }) do + Enum.each(topics[topic] || [], fn %StreamerSocket{transport_pid: transport_pid} -> + send( + transport_pid, + {:text, %{event: "delete", payload: to_string(deleted_activity_id)} |> Jason.encode!()} + ) + end) + end + + def push_to_socket(_topics, _topic, %Activity{data: %{"type" => "Delete"}}), do: :noop + + def push_to_socket(topics, topic, item) do + Enum.each(topics[topic] || [], fn %StreamerSocket{ + transport_pid: transport_pid, + user: socket_user + } -> + # Get the current user so we have up-to-date blocks etc. + if socket_user do + user = User.get_cached_by_ap_id(socket_user.ap_id) + blocks = user.info.blocks || [] + mutes = user.info.mutes || [] + + with true <- Enum.all?([blocks, mutes], &(item.actor not in &1)), + true <- thread_containment(item, user) do + send(transport_pid, {:text, StreamerView.render("update.json", item, user)}) + end + else + send(transport_pid, {:text, StreamerView.render("update.json", item)}) + end + end) + end + + @spec thread_containment(Activity.t(), User.t()) :: boolean() + defp thread_containment(_activity, %User{info: %{skip_thread_containment: true}}), do: true + + defp thread_containment(activity, user) do + if Config.get([:instance, :skip_thread_containment]) do + true + else + ActivityPub.contain_activity(activity, user) + end + end +end diff --git a/lib/pleroma/web/views/streamer_view.ex b/lib/pleroma/web/views/streamer_view.ex new file mode 100644 index 000000000..b13030fa0 --- /dev/null +++ b/lib/pleroma/web/views/streamer_view.ex @@ -0,0 +1,66 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.StreamerView do + use Pleroma.Web, :view + + alias Pleroma.Activity + alias Pleroma.Conversation.Participation + alias Pleroma.Notification + alias Pleroma.User + alias Pleroma.Web.MastodonAPI.NotificationView + + def render("update.json", %Activity{} = activity, %User{} = user) do + %{ + event: "update", + payload: + Pleroma.Web.MastodonAPI.StatusView.render( + "status.json", + activity: activity, + for: user + ) + |> Jason.encode!() + } + |> Jason.encode!() + end + + def render("notification.json", %User{} = user, %Notification{} = notify) do + %{ + event: "notification", + payload: + NotificationView.render( + "show.json", + %{notification: notify, for: user} + ) + |> Jason.encode!() + } + |> Jason.encode!() + end + + def render("update.json", %Activity{} = activity) do + %{ + event: "update", + payload: + Pleroma.Web.MastodonAPI.StatusView.render( + "status.json", + activity: activity + ) + |> Jason.encode!() + } + |> Jason.encode!() + end + + def render("conversation.json", %Participation{} = participation) do + %{ + event: "conversation", + payload: + Pleroma.Web.MastodonAPI.ConversationView.render("participation.json", %{ + participation: participation, + for: participation.user + }) + |> Jason.encode!() + } + |> Jason.encode!() + end +end diff --git a/mix.exs b/mix.exs index f1e98585b..911ebad1d 100644 --- a/mix.exs +++ b/mix.exs @@ -144,6 +144,7 @@ defp deps do git: "https://git.pleroma.social/pleroma/http_signatures.git", ref: "293d77bb6f4a67ac8bde1428735c3b42f22cbb30"}, {:telemetry, "~> 0.3"}, + {:poolboy, "~> 1.5"}, {:prometheus_ex, "~> 3.0"}, {:prometheus_plugs, "~> 1.1"}, {:prometheus_phoenix, "~> 1.3"}, diff --git a/mix.lock b/mix.lock index 41697dd5c..0bf6a811e 100644 --- a/mix.lock +++ b/mix.lock @@ -73,6 +73,7 @@ "plug_crypto": {:hex, :plug_crypto, "1.0.0", "18e49317d3fa343f24620ed22795ec29d4a5e602d52d1513ccea0b07d8ea7d4d", [:mix], [], "hexpm"}, "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"}, + "poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm"}, "postgrex": {:hex, :postgrex, "0.14.3", "5754dee2fdf6e9e508cbf49ab138df964278700b764177e8f3871e658b345a1e", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, "prometheus": {:hex, :prometheus, "4.4.1", "1e96073b3ed7788053768fea779cbc896ddc3bdd9ba60687f2ad50b252ac87d6", [:mix, :rebar3], [], "hexpm"}, "prometheus_ecto": {:hex, :prometheus_ecto, "1.4.1", "6c768ea9654de871e5b32fab2eac348467b3021604ebebbcbd8bcbe806a65ed5", [:mix], [{:ecto, "~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.1 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}], "hexpm"}, diff --git a/test/activity/ir/topics_test.exs b/test/activity/ir/topics_test.exs new file mode 100644 index 000000000..e75f83586 --- /dev/null +++ b/test/activity/ir/topics_test.exs @@ -0,0 +1,141 @@ +defmodule Pleroma.Activity.Ir.TopicsTest do + use Pleroma.DataCase + + alias Pleroma.Activity + alias Pleroma.Activity.Ir.Topics + alias Pleroma.Object + + require Pleroma.Constants + + describe "poll answer" do + test "produce no topics" do + activity = %Activity{object: %Object{data: %{"type" => "Answer"}}} + + assert [] == Topics.get_activity_topics(activity) + end + end + + describe "non poll answer" do + test "always add user and list topics" do + activity = %Activity{object: %Object{data: %{"type" => "FooBar"}}} + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "user") + assert Enum.member?(topics, "list") + end + end + + describe "public visibility" do + setup do + activity = %Activity{ + object: %Object{data: %{"type" => "Note"}}, + data: %{"to" => [Pleroma.Constants.as_public()]} + } + + {:ok, activity: activity} + end + + test "produces public topic", %{activity: activity} do + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "public") + end + + test "local action produces public:local topic", %{activity: activity} do + activity = %{activity | local: true} + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "public:local") + end + + test "non-local action does not produce public:local topic", %{activity: activity} do + activity = %{activity | local: false} + topics = Topics.get_activity_topics(activity) + + refute Enum.member?(topics, "public:local") + end + end + + describe "public visibility create events" do + setup do + activity = %Activity{ + object: %Object{data: %{"type" => "Create", "attachment" => []}}, + data: %{"to" => [Pleroma.Constants.as_public()]} + } + + {:ok, activity: activity} + end + + test "with no attachments doesn't produce public:media topics", %{activity: activity} do + topics = Topics.get_activity_topics(activity) + + refute Enum.member?(topics, "public:media") + refute Enum.member?(topics, "public:local:media") + end + + test "converts tags to hash tags", %{activity: %{object: %{data: data} = object} = activity} do + tagged_data = Map.put(data, "tag", ["foo", "bar"]) + activity = %{activity | object: %{object | data: tagged_data}} + + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "hashtag:foo") + assert Enum.member?(topics, "hashtag:bar") + end + + test "only converts strinngs to hash tags", %{ + activity: %{object: %{data: data} = object} = activity + } do + tagged_data = Map.put(data, "tag", [2]) + activity = %{activity | object: %{object | data: tagged_data}} + + topics = Topics.get_activity_topics(activity) + + refute Enum.member?(topics, "hashtag:2") + end + end + + describe "public visibility create events with attachments" do + setup do + activity = %Activity{ + object: %Object{data: %{"type" => "Create", "attachment" => ["foo"]}}, + data: %{"to" => [Pleroma.Constants.as_public()]} + } + + {:ok, activity: activity} + end + + test "produce public:media topics", %{activity: activity} do + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "public:media") + end + + test "local produces public:local:media topics", %{activity: activity} do + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "public:local:media") + end + + test "non-local doesn't produce public:local:media topics", %{activity: activity} do + activity = %{activity | local: false} + + topics = Topics.get_activity_topics(activity) + + refute Enum.member?(topics, "public:local:media") + end + end + + describe "non-public visibility" do + test "produces direct topic" do + activity = %Activity{object: %Object{data: %{"type" => "Note"}}, data: %{"to" => []}} + topics = Topics.get_activity_topics(activity) + + assert Enum.member?(topics, "direct") + refute Enum.member?(topics, "public") + refute Enum.member?(topics, "public:local") + refute Enum.member?(topics, "public:media") + refute Enum.member?(topics, "public:local:media") + end + end +end diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs index 63bf73412..c04262808 100644 --- a/test/integration/mastodon_websocket_test.exs +++ b/test/integration/mastodon_websocket_test.exs @@ -11,7 +11,6 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do alias Pleroma.Integration.WebsocketClient alias Pleroma.Web.CommonAPI alias Pleroma.Web.OAuth - alias Pleroma.Web.Streamer @path Pleroma.Web.Endpoint.url() |> URI.parse() @@ -19,16 +18,6 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do |> Map.put(:path, "/api/v1/streaming") |> URI.to_string() - setup do - GenServer.start(Streamer, %{}, name: Streamer) - - on_exit(fn -> - if pid = Process.whereis(Streamer) do - Process.exit(pid, :kill) - end - end) - end - def start_socket(qs \\ nil, headers \\ []) do path = case qs do @@ -53,12 +42,14 @@ test "requires authentication and a valid token for protected streams" do end) end + @tag needs_streamer: true test "allows public streams without authentication" do assert {:ok, _} = start_socket("?stream=public") assert {:ok, _} = start_socket("?stream=public:local") assert {:ok, _} = start_socket("?stream=hashtag&tag=lain") end + @tag needs_streamer: true test "receives well formatted events" do user = insert(:user) {:ok, _} = start_socket("?stream=public") @@ -103,6 +94,7 @@ test "accepts valid tokens", state do assert {:ok, _} = start_socket("?stream=user&access_token=#{state.token.token}") end + @tag needs_streamer: true test "accepts the 'user' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user&access_token=#{token.token}") @@ -111,6 +103,7 @@ test "accepts the 'user' stream", %{token: token} = _state do end) =~ ":badarg" end + @tag needs_streamer: true test "accepts the 'user:notification' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user:notification&access_token=#{token.token}") @@ -119,6 +112,7 @@ test "accepts the 'user:notification' stream", %{token: token} = _state do end) =~ ":badarg" end + @tag needs_streamer: true test "accepts valid token on Sec-WebSocket-Protocol header", %{token: token} do assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}]) diff --git a/test/notification_test.exs b/test/notification_test.exs index 3be9db09b..3d2f9a8fc 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -69,16 +69,7 @@ test "does not create a notification for subscribed users if status is a reply" end describe "create_notification" do - setup do - GenServer.start(Streamer, %{}, name: Streamer) - - on_exit(fn -> - if pid = Process.whereis(Streamer) do - Process.exit(pid, :kill) - end - end) - end - + @tag needs_streamer: true test "it creates a notification for user and send to the 'user' and the 'user:notification' stream" do user = insert(:user) task = Task.async(fn -> assert_receive {:text, _}, 4_000 end) diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index ec5892ff5..b39c70677 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -40,6 +40,10 @@ defmodule Pleroma.Web.ConnCase do Ecto.Adapters.SQL.Sandbox.mode(Pleroma.Repo, {:shared, self()}) end + if tags[:needs_streamer] do + start_supervised(Pleroma.Web.Streamer.supervisor()) + end + {:ok, conn: Phoenix.ConnTest.build_conn()} end end diff --git a/test/support/data_case.ex b/test/support/data_case.ex index f3d98e7e3..17fa15214 100644 --- a/test/support/data_case.ex +++ b/test/support/data_case.ex @@ -39,6 +39,10 @@ defmodule Pleroma.DataCase do Ecto.Adapters.SQL.Sandbox.mode(Pleroma.Repo, {:shared, self()}) end + if tags[:needs_streamer] do + start_supervised(Pleroma.Web.Streamer.supervisor()) + end + :ok end diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index d0118fefa..4100108a5 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -38,9 +38,7 @@ test "it streams them out" do stream: fn _, _ -> nil end do ActivityPub.stream_out_participations(conversation.participations) - Enum.each(participations, fn participation -> - assert called(Pleroma.Web.Streamer.stream("participation", participation)) - end) + assert called(Pleroma.Web.Streamer.stream("participation", participations)) end end end diff --git a/test/web/streamer/ping_test.exs b/test/web/streamer/ping_test.exs new file mode 100644 index 000000000..3d52c00e4 --- /dev/null +++ b/test/web/streamer/ping_test.exs @@ -0,0 +1,36 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PingTest do + use Pleroma.DataCase + + import Pleroma.Factory + alias Pleroma.Web.Streamer + + setup do + start_supervised({Streamer.supervisor(), [ping_interval: 30]}) + + :ok + end + + describe "sockets" do + setup do + user = insert(:user) + {:ok, %{user: user}} + end + + test "it sends pings", %{user: user} do + task = + Task.async(fn -> + assert_receive {:text, received_event}, 40 + assert_receive {:text, received_event}, 40 + assert_receive {:text, received_event}, 40 + end) + + Streamer.add_socket("public", %{transport_pid: task.pid, assigns: %{user: user}}) + + Task.await(task) + end + end +end diff --git a/test/web/streamer/state_test.exs b/test/web/streamer/state_test.exs new file mode 100644 index 000000000..d1aeac541 --- /dev/null +++ b/test/web/streamer/state_test.exs @@ -0,0 +1,54 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.StateTest do + use Pleroma.DataCase + + import Pleroma.Factory + alias Pleroma.Web.Streamer + alias Pleroma.Web.Streamer.StreamerSocket + + @moduletag needs_streamer: true + + describe "sockets" do + setup do + user = insert(:user) + user2 = insert(:user) + {:ok, %{user: user, user2: user2}} + end + + test "it can add a socket", %{user: user} do + Streamer.add_socket("public", %{transport_pid: 1, assigns: %{user: user}}) + + assert(%{"public" => [%StreamerSocket{transport_pid: 1}]} = Streamer.get_sockets()) + end + + test "it can add multiple sockets per user", %{user: user} do + Streamer.add_socket("public", %{transport_pid: 1, assigns: %{user: user}}) + Streamer.add_socket("public", %{transport_pid: 2, assigns: %{user: user}}) + + assert( + %{ + "public" => [ + %StreamerSocket{transport_pid: 2}, + %StreamerSocket{transport_pid: 1} + ] + } = Streamer.get_sockets() + ) + end + + test "it will not add a duplicate socket", %{user: user} do + Streamer.add_socket("activity", %{transport_pid: 1, assigns: %{user: user}}) + Streamer.add_socket("activity", %{transport_pid: 1, assigns: %{user: user}}) + + assert( + %{ + "activity" => [ + %StreamerSocket{transport_pid: 1} + ] + } = Streamer.get_sockets() + ) + end + end +end diff --git a/test/web/streamer_test.exs b/test/web/streamer/streamer_test.exs similarity index 86% rename from test/web/streamer_test.exs rename to test/web/streamer/streamer_test.exs index 96fa7645f..88847e20f 100644 --- a/test/web/streamer_test.exs +++ b/test/web/streamer/streamer_test.exs @@ -5,24 +5,20 @@ defmodule Pleroma.Web.StreamerTest do use Pleroma.DataCase + import Pleroma.Factory + alias Pleroma.List alias Pleroma.User alias Pleroma.Web.CommonAPI alias Pleroma.Web.Streamer - import Pleroma.Factory + alias Pleroma.Web.Streamer.StreamerSocket + alias Pleroma.Web.Streamer.Worker + @moduletag needs_streamer: true clear_config_all([:instance, :skip_thread_containment]) describe "user streams" do setup do - GenServer.start(Streamer, %{}, name: Streamer) - - on_exit(fn -> - if pid = Process.whereis(Streamer) do - Process.exit(pid, :kill) - end - end) - user = insert(:user) notify = insert(:notification, user: user, activity: build(:note_activity)) {:ok, %{user: user, notify: notify}} @@ -125,11 +121,9 @@ test "it sends to public" do assert_receive {:text, _}, 4_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user - } + user: user } {:ok, activity} = CommonAPI.post(other_user, %{"status" => "Test"}) @@ -138,7 +132,7 @@ test "it sends to public" do "public" => [fake_socket] } - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) @@ -155,11 +149,9 @@ test "it sends to public" do assert received_event == expected_event end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user - } + user: user } {:ok, activity} = CommonAPI.delete(activity.id, other_user) @@ -168,7 +160,7 @@ test "it sends to public" do "public" => [fake_socket] } - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) end @@ -189,9 +181,9 @@ test "it doesn't send to user if recipients invalid and thread containment is en ) task = Task.async(fn -> refute_receive {:text, _}, 1_000 end) - fake_socket = %{transport_pid: task.pid, assigns: %{user: user}} + fake_socket = %StreamerSocket{transport_pid: task.pid, user: user} topics = %{"public" => [fake_socket]} - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) end @@ -211,9 +203,9 @@ test "it sends message if recipients invalid and thread containment is disabled" ) task = Task.async(fn -> assert_receive {:text, _}, 1_000 end) - fake_socket = %{transport_pid: task.pid, assigns: %{user: user}} + fake_socket = %StreamerSocket{transport_pid: task.pid, user: user} topics = %{"public" => [fake_socket]} - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) end @@ -233,9 +225,9 @@ test "it sends message if recipients invalid and thread containment is enabled b ) task = Task.async(fn -> assert_receive {:text, _}, 1_000 end) - fake_socket = %{transport_pid: task.pid, assigns: %{user: user}} + fake_socket = %StreamerSocket{transport_pid: task.pid, user: user} topics = %{"public" => [fake_socket]} - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) end @@ -251,11 +243,9 @@ test "it doesn't send to blocked users" do refute_receive {:text, _}, 1_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user - } + user: user } {:ok, activity} = CommonAPI.post(blocked_user, %{"status" => "Test"}) @@ -264,7 +254,7 @@ test "it doesn't send to blocked users" do "public" => [fake_socket] } - Streamer.push_to_socket(topics, "public", activity) + Worker.push_to_socket(topics, "public", activity) Task.await(task) end @@ -284,11 +274,9 @@ test "it doesn't send unwanted DMs to list" do refute_receive {:text, _}, 1_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user_a - } + user: user_a } {:ok, activity} = @@ -301,7 +289,7 @@ test "it doesn't send unwanted DMs to list" do "list:#{list.id}" => [fake_socket] } - Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics) + Worker.handle_call({:stream, "list", activity}, self(), topics) Task.await(task) end @@ -318,11 +306,9 @@ test "it doesn't send unwanted private posts to list" do refute_receive {:text, _}, 1_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user_a - } + user: user_a } {:ok, activity} = @@ -335,12 +321,12 @@ test "it doesn't send unwanted private posts to list" do "list:#{list.id}" => [fake_socket] } - Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics) + Worker.handle_call({:stream, "list", activity}, self(), topics) Task.await(task) end - test "it send wanted private posts to list" do + test "it sends wanted private posts to list" do user_a = insert(:user) user_b = insert(:user) @@ -354,11 +340,9 @@ test "it send wanted private posts to list" do assert_receive {:text, _}, 1_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user_a - } + user: user_a } {:ok, activity} = @@ -367,11 +351,12 @@ test "it send wanted private posts to list" do "visibility" => "private" }) - topics = %{ - "list:#{list.id}" => [fake_socket] - } + Streamer.add_socket( + "list:#{list.id}", + fake_socket + ) - Streamer.handle_cast(%{action: :stream, topic: "list", item: activity}, topics) + Worker.handle_call({:stream, "list", activity}, self(), %{}) Task.await(task) end @@ -387,11 +372,9 @@ test "it doesn't send muted reblogs" do refute_receive {:text, _}, 1_000 end) - fake_socket = %{ + fake_socket = %StreamerSocket{ transport_pid: task.pid, - assigns: %{ - user: user1 - } + user: user1 } {:ok, create_activity} = CommonAPI.post(user3, %{"status" => "I'm kawen"}) @@ -401,7 +384,7 @@ test "it doesn't send muted reblogs" do "public" => [fake_socket] } - Streamer.push_to_socket(topics, "public", announce_activity) + Worker.push_to_socket(topics, "public", announce_activity) Task.await(task) end @@ -417,6 +400,8 @@ test "it doesn't send posts from muted threads" do task = Task.async(fn -> refute_receive {:text, _}, 4_000 end) + Process.sleep(4000) + Streamer.add_socket( "user", %{transport_pid: task.pid, assigns: %{user: user2}} @@ -428,14 +413,6 @@ test "it doesn't send posts from muted threads" do describe "direct streams" do setup do - GenServer.start(Streamer, %{}, name: Streamer) - - on_exit(fn -> - if pid = Process.whereis(Streamer) do - Process.exit(pid, :kill) - end - end) - :ok end @@ -480,6 +457,8 @@ test "it doesn't send conversation update to the 'direct' streamj when the last refute_receive {:text, _}, 4_000 end) + Process.sleep(1000) + Streamer.add_socket( "direct", %{transport_pid: task.pid, assigns: %{user: user}} @@ -521,6 +500,8 @@ test "it sends conversation update to the 'direct' stream when a message is dele assert last_status["id"] == to_string(create_activity.id) end) + Process.sleep(1000) + Streamer.add_socket( "direct", %{transport_pid: task.pid, assigns: %{user: user}} From 085d014f0859b3b3e5023c423ae0361ec6ed6c67 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Mon, 16 Sep 2019 19:26:00 +0700 Subject: [PATCH 082/272] Fix `Transmogrifier.upgrade_user_from_ap_id/1` --- lib/pleroma/web/activity_pub/transmogrifier.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index acb3087d0..8461b666e 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -1050,7 +1050,7 @@ def upgrade_user_from_ap_id(ap_id) do with %User{local: false} = user <- User.get_cached_by_ap_id(ap_id), {:ok, data} <- ActivityPub.fetch_and_prepare_user_from_ap_id(ap_id), already_ap <- User.ap_enabled?(user), - {:ok, user} <- user |> User.upgrade_changeset(data) |> User.update_and_set_cache() do + {:ok, user} <- user |> User.upgrade_changeset(data, true) |> User.update_and_set_cache() do unless already_ap do TransmogrifierWorker.enqueue("user_upgrade", %{"user_id" => user.id}) end From d6ab78e610f16e97246ec9e83b3db72f04cf41e7 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Mon, 16 Sep 2019 21:48:01 +0700 Subject: [PATCH 083/272] Set `account_field_value_length` limit to 2048 by default --- config/config.exs | 2 +- config/description.exs | 4 ++-- docs/config.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/config.exs b/config/config.exs index b1b98af93..c7e0cf09f 100644 --- a/config/config.exs +++ b/config/config.exs @@ -276,7 +276,7 @@ max_account_fields: 10, max_remote_account_fields: 20, account_field_name_length: 512, - account_field_value_length: 512, + account_field_value_length: 2048, external_user_synchronization: true config :pleroma, :markup, diff --git a/config/description.exs b/config/description.exs index be5eb0cc3..32d36d6d6 100644 --- a/config/description.exs +++ b/config/description.exs @@ -878,9 +878,9 @@ %{ key: :account_field_value_length, type: :integer, - description: "An account field value maximum length (default: 512)", + description: "An account field value maximum length (default: 2048)", suggestions: [ - 512 + 2048 ] }, %{ diff --git a/docs/config.md b/docs/config.md index 270d7fcea..3f37fa561 100644 --- a/docs/config.md +++ b/docs/config.md @@ -135,7 +135,7 @@ config :pleroma, Pleroma.Emails.Mailer, * `max_account_fields`: The maximum number of custom fields in the user profile (default: `10`) * `max_remote_account_fields`: The maximum number of custom fields in the remote user profile (default: `20`) * `account_field_name_length`: An account field name maximum length (default: `512`) -* `account_field_value_length`: An account field value maximum length (default: `512`) +* `account_field_value_length`: An account field value maximum length (default: `2048`) * `external_user_synchronization`: Enabling following/followers counters synchronization for external users. From 56b60798c2282055089424f5dc6770a10876626b Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Mon, 16 Sep 2019 20:50:14 +0300 Subject: [PATCH 084/272] Code style fixes --- lib/pleroma/subscription_notification.ex | 72 +++++++++---------- .../views/subscription_notification_view.ex | 1 - 2 files changed, 33 insertions(+), 40 deletions(-) diff --git a/lib/pleroma/subscription_notification.ex b/lib/pleroma/subscription_notification.ex index 7ae25a7b1..9ce0c6598 100644 --- a/lib/pleroma/subscription_notification.ex +++ b/lib/pleroma/subscription_notification.ex @@ -56,7 +56,8 @@ def for_user_query(user, opts \\ []) do if opts[:with_muted] do query else - where(query, [n, a], a.actor not in ^user.info.muted_notifications) + query + |> where([n, a], a.actor not in ^user.info.muted_notifications) |> where([n, a], a.actor not in ^user.info.blocks) |> where( [n, a], @@ -88,9 +89,9 @@ def for_user(user, opts \\ %{}) do """ @spec for_user_since(Pleroma.User.t(), NaiveDateTime.t()) :: [t()] def for_user_since(user, date) do - from(n in for_user_query(user), - where: n.updated_at > ^date - ) + user + |> for_user_query() + |> where([n], n.updated_at > ^date) |> Repo.all() end @@ -112,10 +113,8 @@ def get(%{id: user_id} = _user, id) do preload: [activity: activity] ) - notification = Repo.one(query) - - case notification do - %{user_id: ^user_id} -> + case Repo.one(query) do + %{user_id: ^user_id} = notification -> {:ok, notification} _ -> @@ -137,10 +136,8 @@ def destroy_multiple(%{id: user_id} = _user, ids) do end def dismiss(%{id: user_id} = _user, id) do - notification = Repo.get(SubscriptionNotification, id) - - case notification do - %{user_id: ^user_id} -> + case Repo.get(SubscriptionNotification, id) do + %{user_id: ^user_id} = notification -> Repo.delete(notification) _ -> @@ -149,21 +146,24 @@ def dismiss(%{id: user_id} = _user, id) do end def create_notifications(%Activity{data: %{"to" => _, "type" => "Create"}} = activity) do - object = Object.normalize(activity) + case Object.normalize(activity) do + %{data: %{"type" => "Answer"}} -> + {:ok, []} - unless object && object.data["type"] == "Answer" do - users = get_notified_from_activity(activity) - notifications = Enum.map(users, fn user -> create_notification(activity, user) end) - {:ok, notifications} - else - {:ok, []} + _ -> + users = get_notified_from_activity(activity) + notifications = Enum.map(users, fn user -> create_notification(activity, user) end) + {:ok, notifications} end end def create_notifications(%Activity{data: %{"to" => _, "type" => type}} = activity) when type in ["Like", "Announce", "Follow"] do - users = get_notified_from_activity(activity) - notifications = Enum.map(users, fn user -> create_notification(activity, user) end) + notifications = + activity + |> get_notified_from_activity() + |> Enum.map(&create_notification(activity, &1)) + {:ok, notifications} end @@ -188,12 +188,10 @@ def get_notified_from_activity( local_only ) when type in ["Create", "Like", "Announce", "Follow"] do - recipients = - [] - |> Utils.maybe_notify_subscribers(activity) - |> Enum.uniq() - - User.get_users_from_set(recipients, local_only) + [] + |> Utils.maybe_notify_subscribers(activity) + |> Enum.uniq() + |> User.get_users_from_set(local_only) end def get_notified_from_activity(_, _local_only), do: [] @@ -218,12 +216,12 @@ def skip?(:self, activity, user) do def skip?( :followers, - activity, + %{data: %{"actor" => actor}}, %{info: %{notification_settings: %{"followers" => false}}} = user ) do - actor = activity.data["actor"] - follower = User.get_cached_by_ap_id(actor) - User.following?(follower, user) + actor + |> User.get_cached_by_ap_id() + |> User.following?(user) end def skip?( @@ -252,14 +250,10 @@ def skip?( !User.following?(user, followed) end - def skip?(:recently_followed, %{data: %{"type" => "Follow"}} = activity, user) do - actor = activity.data["actor"] - - SubscriptionNotification.for_user(user) - |> Enum.any?(fn - %{activity: %{data: %{"type" => "Follow", "actor" => ^actor}}} -> true - _ -> false - end) + def skip?(:recently_followed, %{data: %{"type" => "Follow", "actor" => actor}}, user) do + user + |> SubscriptionNotification.for_user() + |> Enum.any?(&match?(%{activity: %{data: %{"type" => "Follow", "actor" => ^actor}}}, &1)) end def skip?(_, _, _), do: false diff --git a/lib/pleroma/web/mastodon_api/views/subscription_notification_view.ex b/lib/pleroma/web/mastodon_api/views/subscription_notification_view.ex index c6f0b5064..83d2b647f 100644 --- a/lib/pleroma/web/mastodon_api/views/subscription_notification_view.ex +++ b/lib/pleroma/web/mastodon_api/views/subscription_notification_view.ex @@ -6,7 +6,6 @@ defmodule Pleroma.Web.MastodonAPI.SubscriptionNotificationView do use Pleroma.Web, :view alias Pleroma.Activity - # alias Pleroma.SubscriptionNotification alias Pleroma.User alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.AccountView From 6042e21b25885f9c3214d3296d9d2fdf35ad58ea Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Mon, 16 Sep 2019 21:59:49 +0300 Subject: [PATCH 085/272] Move subscription notifications to a separate controller --- .../controllers/mastodon_api_controller.ex | 48 ---- lib/pleroma/web/mastodon_api/mastodon_api.ex | 10 - lib/pleroma/web/pleroma_api/pleroma_api.ex | 40 +++ .../subscription_notification_controller.ex | 59 +++++ .../views/subscription_notification_view.ex | 4 +- lib/pleroma/web/router.ex | 33 +-- .../mastodon_api_controller_test.exs | 192 -------------- ...scription_notification_controller_test.exs | 234 ++++++++++++++++++ 8 files changed, 343 insertions(+), 277 deletions(-) create mode 100644 lib/pleroma/web/pleroma_api/pleroma_api.ex create mode 100644 lib/pleroma/web/pleroma_api/subscription_notification_controller.ex rename lib/pleroma/web/{mastodon_api => pleroma_api}/views/subscription_notification_view.ex (93%) create mode 100644 test/web/pleroma_api/subscription_notification_controller_test.exs diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index eefdb8c06..060137b80 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -23,7 +23,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do alias Pleroma.Repo alias Pleroma.ScheduledActivity alias Pleroma.Stats - alias Pleroma.SubscriptionNotification alias Pleroma.User alias Pleroma.Web alias Pleroma.Web.ActivityPub.ActivityPub @@ -40,7 +39,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do alias Pleroma.Web.MastodonAPI.ReportView alias Pleroma.Web.MastodonAPI.ScheduledActivityView alias Pleroma.Web.MastodonAPI.StatusView - alias Pleroma.Web.MastodonAPI.SubscriptionNotificationView alias Pleroma.Web.MediaProxy alias Pleroma.Web.OAuth.App alias Pleroma.Web.OAuth.Authorization @@ -727,28 +725,6 @@ def notifications(%{assigns: %{user: user}} = conn, params) do |> render("index.json", %{notifications: notifications, for: user}) end - def subscription_notifications(%{assigns: %{user: user}} = conn, params) do - notifications = MastodonAPI.get_subscription_notifications(user, params) - - conn - |> add_link_headers(:subscription_notifications, notifications) - |> put_view(SubscriptionNotificationView) - |> render("index.json", %{notifications: notifications, for: user}) - end - - def get_subscription_notification(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do - with {:ok, notification} <- SubscriptionNotification.get(user, id) do - conn - |> put_view(SubscriptionNotificationView) - |> render("show.json", %{subscription_notification: notification, for: user}) - else - {:error, reason} -> - conn - |> put_status(:forbidden) - |> json(%{"error" => reason}) - end - end - def get_notification(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do with {:ok, notification} <- Notification.get(user, id) do conn @@ -767,11 +743,6 @@ def clear_notifications(%{assigns: %{user: user}} = conn, _params) do json(conn, %{}) end - def clear_subscription_notifications(%{assigns: %{user: user}} = conn, _params) do - SubscriptionNotification.clear(user) - json(conn, %{}) - end - def dismiss_notification(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do with {:ok, _notif} <- Notification.dismiss(user, id) do json(conn, %{}) @@ -783,30 +754,11 @@ def dismiss_notification(%{assigns: %{user: user}} = conn, %{"id" => id} = _para end end - def dismiss_subscription_notification(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do - with {:ok, _notif} <- SubscriptionNotification.dismiss(user, id) do - json(conn, %{}) - else - {:error, reason} -> - conn - |> put_status(:forbidden) - |> json(%{"error" => reason}) - end - end - def destroy_multiple(%{assigns: %{user: user}} = conn, %{"ids" => ids} = _params) do Notification.destroy_multiple(user, ids) json(conn, %{}) end - def destroy_multiple_subscription_notifications( - %{assigns: %{user: user}} = conn, - %{"ids" => ids} = _params - ) do - SubscriptionNotification.destroy_multiple(user, ids) - json(conn, %{}) - end - def relationships(%{assigns: %{user: user}} = conn, %{"id" => id}) do id = List.wrap(id) q = from(u in User, where: u.id in ^id) diff --git a/lib/pleroma/web/mastodon_api/mastodon_api.ex b/lib/pleroma/web/mastodon_api/mastodon_api.ex index 6751e24d8..ac01d1ff3 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api.ex @@ -10,7 +10,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPI do alias Pleroma.Notification alias Pleroma.Pagination alias Pleroma.ScheduledActivity - alias Pleroma.SubscriptionNotification alias Pleroma.User alias Pleroma.Web.CommonAPI @@ -63,15 +62,6 @@ def get_notifications(user, params \\ %{}) do |> Pagination.fetch_paginated(params) end - def get_subscription_notifications(user, params \\ %{}) do - options = cast_params(params) - - user - |> SubscriptionNotification.for_user_query(options) - |> restrict(:exclude_types, options) - |> Pagination.fetch_paginated(params) - end - def get_scheduled_activities(user, params \\ %{}) do user |> ScheduledActivity.for_user_query() diff --git a/lib/pleroma/web/pleroma_api/pleroma_api.ex b/lib/pleroma/web/pleroma_api/pleroma_api.ex new file mode 100644 index 000000000..480964845 --- /dev/null +++ b/lib/pleroma/web/pleroma_api/pleroma_api.ex @@ -0,0 +1,40 @@ +defmodule Pleroma.Web.PleromaAPI.PleromaAPI do + import Ecto.Query + import Ecto.Changeset + + alias Pleroma.Activity + alias Pleroma.Pagination + alias Pleroma.SubscriptionNotification + + def get_subscription_notifications(user, params \\ %{}) do + options = cast_params(params) + + user + |> SubscriptionNotification.for_user_query(options) + |> restrict(:exclude_types, options) + |> Pagination.fetch_paginated(params) + end + + defp cast_params(params) do + param_types = %{ + exclude_types: {:array, :string}, + reblogs: :boolean, + with_muted: :boolean + } + + changeset = cast({%{}, param_types}, params, Map.keys(param_types)) + changeset.changes + end + + defp restrict(query, :exclude_types, %{exclude_types: mastodon_types = [_ | _]}) do + ap_types = + mastodon_types + |> Enum.map(&Activity.from_mastodon_notification_type/1) + |> Enum.filter(& &1) + + query + |> where([q, a], not fragment("? @> ARRAY[?->>'type']::varchar[]", ^ap_types, a.data)) + end + + defp restrict(query, _, _), do: query +end diff --git a/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex b/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex new file mode 100644 index 000000000..bfc2631dd --- /dev/null +++ b/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex @@ -0,0 +1,59 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.SubscriptionNotificationController do + use Pleroma.Web, :controller + + import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2] + + alias Pleroma.SubscriptionNotification + alias Pleroma.Web.PleromaAPI.PleromaAPI + alias Pleroma.Web.PleromaAPI.SubscriptionNotificationView + + def list(%{assigns: %{user: user}} = conn, params) do + notifications = PleromaAPI.get_subscription_notifications(user, params) + + conn + |> add_link_headers(notifications) + |> put_view(SubscriptionNotificationView) + |> render("index.json", %{notifications: notifications, for: user}) + end + + def get(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do + with {:ok, notification} <- SubscriptionNotification.get(user, id) do + conn + |> put_view(SubscriptionNotificationView) + |> render("show.json", %{subscription_notification: notification, for: user}) + else + {:error, reason} -> + conn + |> put_status(:forbidden) + |> json(%{"error" => reason}) + end + end + + def clear(%{assigns: %{user: user}} = conn, _params) do + SubscriptionNotification.clear(user) + json(conn, %{}) + end + + def dismiss(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do + with {:ok, _notif} <- SubscriptionNotification.dismiss(user, id) do + json(conn, %{}) + else + {:error, reason} -> + conn + |> put_status(:forbidden) + |> json(%{"error" => reason}) + end + end + + def destroy_multiple( + %{assigns: %{user: user}} = conn, + %{"ids" => ids} = _params + ) do + SubscriptionNotification.destroy_multiple(user, ids) + json(conn, %{}) + end +end diff --git a/lib/pleroma/web/mastodon_api/views/subscription_notification_view.ex b/lib/pleroma/web/pleroma_api/views/subscription_notification_view.ex similarity index 93% rename from lib/pleroma/web/mastodon_api/views/subscription_notification_view.ex rename to lib/pleroma/web/pleroma_api/views/subscription_notification_view.ex index 83d2b647f..d7f7f4c5a 100644 --- a/lib/pleroma/web/mastodon_api/views/subscription_notification_view.ex +++ b/lib/pleroma/web/pleroma_api/views/subscription_notification_view.ex @@ -2,15 +2,15 @@ # Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.MastodonAPI.SubscriptionNotificationView do +defmodule Pleroma.Web.PleromaAPI.SubscriptionNotificationView do use Pleroma.Web, :view alias Pleroma.Activity alias Pleroma.User alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.AccountView - alias Pleroma.Web.MastodonAPI.SubscriptionNotificationView alias Pleroma.Web.MastodonAPI.StatusView + alias Pleroma.Web.PleromaAPI.SubscriptionNotificationView def render("index.json", %{notifications: notifications, for: user}) do safe_render_many(notifications, SubscriptionNotificationView, "show.json", %{for: user}) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 409fc9eca..05891b6c0 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -268,6 +268,14 @@ defmodule Pleroma.Web.Router do pipe_through(:oauth_read) get("/conversations/:id/statuses", PleromaAPIController, :conversation_statuses) get("/conversations/:id", PleromaAPIController, :conversation) + + scope "/subscription_notifications" do + post("/clear", SubscriptionNotificationController, :clear) + post("/dismiss", SubscriptionNotificationController, :dismiss) + delete("/destroy_multiple", SubscriptionNotificationController, :destroy_multiple) + get("/", SubscriptionNotificationController, :list) + get("/id", SubscriptionNotificationController, :get) + end end scope [] do @@ -302,38 +310,13 @@ defmodule Pleroma.Web.Router do post("/notifications/clear", MastodonAPIController, :clear_notifications) - post( - "/notifications/subscription/clear", - MastodonAPIController, - :clear_subscription_notifications - ) - post("/notifications/dismiss", MastodonAPIController, :dismiss_notification) - post( - "/notifications/subscription/dismiss", - MastodonAPIController, - :dismiss_subscription_notification - ) - get("/notifications", MastodonAPIController, :notifications) - get("/notifications/subscription", MastodonAPIController, :subscription_notifications) get("/notifications/:id", MastodonAPIController, :get_notification) - get( - "/notifications/subscription/:id", - MastodonAPIController, - :get_subscription_notification - ) - delete("/notifications/destroy_multiple", MastodonAPIController, :destroy_multiple) - delete( - "/notifications/subscription/destroy_multiple", - MastodonAPIController, - :destroy_multiple_subscription_notifications - ) - get("/scheduled_statuses", MastodonAPIController, :scheduled_statuses) get("/scheduled_statuses/:id", MastodonAPIController, :show_scheduled_status) diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 1d2d9e134..fb04748bb 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -13,7 +13,6 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do alias Pleroma.Object alias Pleroma.Repo alias Pleroma.ScheduledActivity - alias Pleroma.SubscriptionNotification alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub @@ -1275,197 +1274,6 @@ test "see notifications after muting user with notifications and with_muted para end end - describe "subscription_notifications" do - setup do - user = insert(:user) - subscriber = insert(:user) - - User.subscribe(subscriber, user) - - {:ok, %{user: user, subscriber: subscriber}} - end - - test "list of notifications", %{conn: conn, user: user, subscriber: subscriber} do - status_text = "Hello" - {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) - - conn = - conn - |> assign(:user, subscriber) - |> get("/api/v1/notifications/subscription") - - assert [%{"status" => %{"content" => response}} | _rest] = json_response(conn, 200) - assert response == status_text - end - - test "getting a single notification", %{conn: conn, user: user, subscriber: subscriber} do - status_text = "Hello" - - {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) - [notification] = Repo.all(SubscriptionNotification) - - conn = - conn - |> assign(:user, subscriber) - |> get("/api/v1/notifications/subscription/#{notification.id}") - - assert %{"status" => %{"content" => response}} = json_response(conn, 200) - assert response == status_text - end - - test "dismissing a single notification also deletes it", %{ - conn: conn, - user: user, - subscriber: subscriber - } do - status_text = "Hello" - {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) - - [notification] = Repo.all(SubscriptionNotification) - - conn = - conn - |> assign(:user, subscriber) - |> post("/api/v1/notifications/subscription/dismiss", %{"id" => notification.id}) - - assert %{} = json_response(conn, 200) - - assert Repo.all(SubscriptionNotification) == [] - end - - test "clearing all notifications also deletes them", %{ - conn: conn, - user: user, - subscriber: subscriber - } do - status_text1 = "Hello" - status_text2 = "Hello again" - {:ok, _activity1} = CommonAPI.post(user, %{"status" => status_text1}) - {:ok, _activity2} = CommonAPI.post(user, %{"status" => status_text2}) - - conn = - conn - |> assign(:user, subscriber) - |> post("/api/v1/notifications/subscription/clear") - - assert %{} = json_response(conn, 200) - - conn = - build_conn() - |> assign(:user, subscriber) - |> get("/api/v1/notifications/subscription") - - assert json_response(conn, 200) == [] - - assert Repo.all(SubscriptionNotification) == [] - end - - test "paginates notifications using min_id, since_id, max_id, and limit", %{ - conn: conn, - user: user, - subscriber: subscriber - } do - {:ok, activity1} = CommonAPI.post(user, %{"status" => "Hello 1"}) - {:ok, activity2} = CommonAPI.post(user, %{"status" => "Hello 2"}) - {:ok, activity3} = CommonAPI.post(user, %{"status" => "Hello 3"}) - {:ok, activity4} = CommonAPI.post(user, %{"status" => "Hello 4"}) - - notification1_id = - Repo.get_by(SubscriptionNotification, activity_id: activity1.id).id |> to_string() - - notification2_id = - Repo.get_by(SubscriptionNotification, activity_id: activity2.id).id |> to_string() - - notification3_id = - Repo.get_by(SubscriptionNotification, activity_id: activity3.id).id |> to_string() - - notification4_id = - Repo.get_by(SubscriptionNotification, activity_id: activity4.id).id |> to_string() - - conn = assign(conn, :user, subscriber) - - # min_id - conn_res = - get(conn, "/api/v1/notifications/subscription?limit=2&min_id=#{notification1_id}") - - result = json_response(conn_res, 200) - assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result - - # since_id - conn_res = - get(conn, "/api/v1/notifications/subscription?limit=2&since_id=#{notification1_id}") - - result = json_response(conn_res, 200) - assert [%{"id" => ^notification4_id}, %{"id" => ^notification3_id}] = result - - # max_id - conn_res = - get(conn, "/api/v1/notifications/subscription?limit=2&max_id=#{notification4_id}") - - result = json_response(conn_res, 200) - assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result - end - - test "destroy multiple", %{conn: conn, user: user1, subscriber: user2} do - # mutual subscription - User.subscribe(user1, user2) - - {:ok, activity1} = CommonAPI.post(user1, %{"status" => "Hello 1"}) - {:ok, activity2} = CommonAPI.post(user1, %{"status" => "World 1"}) - {:ok, activity3} = CommonAPI.post(user2, %{"status" => "Hello 2"}) - {:ok, activity4} = CommonAPI.post(user2, %{"status" => "World 2"}) - - notification1_id = - Repo.get_by(SubscriptionNotification, activity_id: activity1.id).id |> to_string() - - notification2_id = - Repo.get_by(SubscriptionNotification, activity_id: activity2.id).id |> to_string() - - notification3_id = - Repo.get_by(SubscriptionNotification, activity_id: activity3.id).id |> to_string() - - notification4_id = - Repo.get_by(SubscriptionNotification, activity_id: activity4.id).id |> to_string() - - conn = assign(conn, :user, user1) - - conn_res = get(conn, "/api/v1/notifications/subscription") - - result = json_response(conn_res, 200) - - Enum.each(result, fn %{"id" => id} -> - assert id in [notification3_id, notification4_id] - end) - - conn2 = assign(conn, :user, user2) - - conn_res = get(conn2, "/api/v1/notifications/subscription") - - result = json_response(conn_res, 200) - - Enum.each(result, fn %{"id" => id} -> - assert id in [notification1_id, notification2_id] - end) - - conn_destroy = - delete(conn, "/api/v1/notifications/subscription/destroy_multiple", %{ - "ids" => [notification3_id, notification4_id] - }) - - assert json_response(conn_destroy, 200) == %{} - - conn_res = get(conn2, "/api/v1/notifications/subscription") - - result = json_response(conn_res, 200) - - Enum.each(result, fn %{"id" => id} -> - assert id in [notification1_id, notification2_id] - end) - - assert length(Repo.all(SubscriptionNotification)) == 2 - end - end - describe "reblogging" do test "reblogs and returns the reblogged status", %{conn: conn} do activity = insert(:note_activity) diff --git a/test/web/pleroma_api/subscription_notification_controller_test.exs b/test/web/pleroma_api/subscription_notification_controller_test.exs new file mode 100644 index 000000000..ee495f112 --- /dev/null +++ b/test/web/pleroma_api/subscription_notification_controller_test.exs @@ -0,0 +1,234 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.SubscriptionNotificationControllerTest do + use Pleroma.Web.ConnCase + + alias Pleroma.Repo + alias Pleroma.SubscriptionNotification + alias Pleroma.User + alias Pleroma.Web.CommonAPI + import Pleroma.Factory + import Tesla.Mock + + setup do + mock(fn env -> apply(HttpRequestMock, :request, [env]) end) + :ok + end + + clear_config([:instance, :public]) + clear_config([:rich_media, :enabled]) + + describe "subscription_notifications" do + setup do + user = insert(:user) + subscriber = insert(:user) + + User.subscribe(subscriber, user) + + {:ok, %{user: user, subscriber: subscriber}} + end + + test "list of notifications", %{conn: conn, user: user, subscriber: subscriber} do + status_text = "Hello" + {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) + path = subscription_notification_path(conn, :list) + + conn = + conn + |> assign(:user, subscriber) + |> get(path) + + assert [%{"status" => %{"content" => response}} | _rest] = json_response(conn, 200) + assert response == status_text + end + + test "getting a single notification", %{conn: conn, user: user, subscriber: subscriber} do + status_text = "Hello" + + {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) + [notification] = Repo.all(SubscriptionNotification) + + path = subscription_notification_path(conn, :get, id: notification.id) + + conn = + conn + |> assign(:user, subscriber) + |> get(path) + + assert %{"status" => %{"content" => response}} = json_response(conn, 200) + assert response == status_text + end + + test "dismissing a single notification also deletes it", %{ + conn: conn, + user: user, + subscriber: subscriber + } do + status_text = "Hello" + {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) + + [notification] = Repo.all(SubscriptionNotification) + + conn = + conn + |> assign(:user, subscriber) + |> post(subscription_notification_path(conn, :dismiss), %{"id" => notification.id}) + + assert %{} = json_response(conn, 200) + + assert Repo.all(SubscriptionNotification) == [] + end + + test "clearing all notifications also deletes them", %{ + conn: conn, + user: user, + subscriber: subscriber + } do + status_text1 = "Hello" + status_text2 = "Hello again" + {:ok, _activity1} = CommonAPI.post(user, %{"status" => status_text1}) + {:ok, _activity2} = CommonAPI.post(user, %{"status" => status_text2}) + + conn = + conn + |> assign(:user, subscriber) + |> post(subscription_notification_path(conn, :clear)) + + assert %{} = json_response(conn, 200) + + conn = + build_conn() + |> assign(:user, subscriber) + |> get(subscription_notification_path(conn, :list)) + + assert json_response(conn, 200) == [] + + assert Repo.all(SubscriptionNotification) == [] + end + + test "paginates notifications using min_id, since_id, max_id, and limit", %{ + conn: conn, + user: user, + subscriber: subscriber + } do + {:ok, activity1} = CommonAPI.post(user, %{"status" => "Hello 1"}) + {:ok, activity2} = CommonAPI.post(user, %{"status" => "Hello 2"}) + {:ok, activity3} = CommonAPI.post(user, %{"status" => "Hello 3"}) + {:ok, activity4} = CommonAPI.post(user, %{"status" => "Hello 4"}) + + notification1_id = + Repo.get_by(SubscriptionNotification, activity_id: activity1.id).id |> to_string() + + notification2_id = + Repo.get_by(SubscriptionNotification, activity_id: activity2.id).id |> to_string() + + notification3_id = + Repo.get_by(SubscriptionNotification, activity_id: activity3.id).id |> to_string() + + notification4_id = + Repo.get_by(SubscriptionNotification, activity_id: activity4.id).id |> to_string() + + conn = assign(conn, :user, subscriber) + + # min_id + conn_res = + get( + conn, + subscription_notification_path(conn, :list, %{ + "limit" => 2, + "min_id" => notification1_id + }) + ) + + result = json_response(conn_res, 200) + assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result + + # since_id + conn_res = + get( + conn, + subscription_notification_path(conn, :list, %{ + "limit" => 2, + "since_id" => notification1_id + }) + ) + + result = json_response(conn_res, 200) + assert [%{"id" => ^notification4_id}, %{"id" => ^notification3_id}] = result + + # max_id + conn_res = + get( + conn, + subscription_notification_path(conn, :list, %{ + "limit" => 2, + "max_id" => notification4_id + }) + ) + + result = json_response(conn_res, 200) + assert [%{"id" => ^notification3_id}, %{"id" => ^notification2_id}] = result + end + + test "destroy multiple", %{conn: conn, user: user1, subscriber: user2} do + # mutual subscription + User.subscribe(user1, user2) + + {:ok, activity1} = CommonAPI.post(user1, %{"status" => "Hello 1"}) + {:ok, activity2} = CommonAPI.post(user1, %{"status" => "World 1"}) + {:ok, activity3} = CommonAPI.post(user2, %{"status" => "Hello 2"}) + {:ok, activity4} = CommonAPI.post(user2, %{"status" => "World 2"}) + + notification1_id = + Repo.get_by(SubscriptionNotification, activity_id: activity1.id).id |> to_string() + + notification2_id = + Repo.get_by(SubscriptionNotification, activity_id: activity2.id).id |> to_string() + + notification3_id = + Repo.get_by(SubscriptionNotification, activity_id: activity3.id).id |> to_string() + + notification4_id = + Repo.get_by(SubscriptionNotification, activity_id: activity4.id).id |> to_string() + + conn = assign(conn, :user, user1) + + conn_res = get(conn, subscription_notification_path(conn, :list)) + + result = json_response(conn_res, 200) + + Enum.each(result, fn %{"id" => id} -> + assert id in [notification3_id, notification4_id] + end) + + conn2 = assign(conn, :user, user2) + + conn_res = get(conn2, subscription_notification_path(conn, :list)) + + result = json_response(conn_res, 200) + + Enum.each(result, fn %{"id" => id} -> + assert id in [notification1_id, notification2_id] + end) + + conn_destroy = + delete(conn, subscription_notification_path(conn, :destroy_multiple), %{ + "ids" => [notification3_id, notification4_id] + }) + + assert json_response(conn_destroy, 200) == %{} + + conn_res = get(conn2, subscription_notification_path(conn, :list)) + + result = json_response(conn_res, 200) + + Enum.each(result, fn %{"id" => id} -> + assert id in [notification1_id, notification2_id] + end) + + assert length(Repo.all(SubscriptionNotification)) == 2 + end + end +end From a21584556f2c3edb90db3c58ba2a4829a7e220c1 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 17 Sep 2019 13:04:43 +0300 Subject: [PATCH 086/272] Update oban to 0.8.1 This version uses a different locking mechanism, which gets rid of `WARNING: you don't own a lock of type ShareLock` log spam --- lib/pleroma/flake_id.ex | 2 +- mix.exs | 2 +- mix.lock | 8 ++++---- priv/repo/migrations/20190917100019_update_oban.exs | 11 +++++++++++ 4 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 priv/repo/migrations/20190917100019_update_oban.exs diff --git a/lib/pleroma/flake_id.ex b/lib/pleroma/flake_id.ex index 47d61ca5f..042cf8659 100644 --- a/lib/pleroma/flake_id.ex +++ b/lib/pleroma/flake_id.ex @@ -14,7 +14,7 @@ defmodule Pleroma.FlakeId do @type t :: binary - @behaviour Ecto.Type + use Ecto.Type use GenServer require Logger alias __MODULE__ diff --git a/mix.exs b/mix.exs index 911ebad1d..230f90244 100644 --- a/mix.exs +++ b/mix.exs @@ -101,7 +101,7 @@ defp deps do {:phoenix_ecto, "~> 4.0"}, {:ecto_sql, "~> 3.1"}, {:postgrex, ">= 0.13.5"}, - {:oban, "~> 0.7"}, + {:oban, "~> 0.8.1"}, {:quantum, "~> 2.3"}, {:gettext, "~> 0.15"}, {:comeonin, "~> 4.1.1"}, diff --git a/mix.lock b/mix.lock index 0bf6a811e..547ff6be6 100644 --- a/mix.lock +++ b/mix.lock @@ -21,8 +21,8 @@ "decimal": {:hex, :decimal, "1.8.0", "ca462e0d885f09a1c5a342dbd7c1dcf27ea63548c65a65e67334f4b61803822e", [:mix], [], "hexpm"}, "deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm"}, "earmark": {:hex, :earmark, "1.3.6", "ce1d0675e10a5bb46b007549362bd3f5f08908843957687d8484fe7f37466b19", [:mix], [], "hexpm"}, - "ecto": {:hex, :ecto, "3.1.4", "69d852da7a9f04ede725855a35ede48d158ca11a404fe94f8b2fb3b2162cd3c9", [:mix], [{:decimal, "~> 1.6", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, - "ecto_sql": {:hex, :ecto_sql, "3.1.3", "2c536139190492d9de33c5fefac7323c5eaaa82e1b9bf93482a14649042f7cd9", [:mix], [{:db_connection, "~> 2.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.1.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:mariaex, "~> 0.9.1", [hex: :mariaex, repo: "hexpm", optional: true]}, {:myxql, "~> 0.2.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.14.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, + "ecto": {:hex, :ecto, "3.2.0", "940e2598813f205223d60c78d66e514afe1db5167ed8075510a59e496619cfb5", [:mix], [{:decimal, "~> 1.6", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, + "ecto_sql": {:hex, :ecto_sql, "3.2.0", "751cea597e8deb616084894dd75cbabfdbe7255ff01e8c058ca13f0353a3921b", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.2.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.2.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, "esshd": {:hex, :esshd, "0.1.0", "6f93a2062adb43637edad0ea7357db2702a4b80dd9683482fe00f5134e97f4c1", [:mix], [], "hexpm"}, "eternal": {:hex, :eternal, "1.2.0", "e2a6b6ce3b8c248f7dc31451aefca57e3bdf0e48d73ae5043229380a67614c41", [:mix], [], "hexpm"}, "ex2ms": {:hex, :ex2ms, "1.5.0", "19e27f9212be9a96093fed8cdfbef0a2b56c21237196d26760f11dfcfae58e97", [:mix], [], "hexpm"}, @@ -60,7 +60,7 @@ "mogrify": {:hex, :mogrify, "0.6.1", "de1b527514f2d95a7bbe9642eb556061afb337e220cf97adbf3a4e6438ed70af", [:mix], [], "hexpm"}, "mox": {:hex, :mox, "0.5.1", "f86bb36026aac1e6f924a4b6d024b05e9adbed5c63e8daa069bd66fb3292165b", [:mix], [], "hexpm"}, "nimble_parsec": {:hex, :nimble_parsec, "0.5.1", "c90796ecee0289dbb5ad16d3ad06f957b0cd1199769641c961cfe0b97db190e0", [:mix], [], "hexpm"}, - "oban": {:hex, :oban, "0.7.1", "171bdd1b69c1a4a839f8c768f5e962fc22d1de1513d459fb6b8e0cbd34817a9a", [:mix], [{:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, + "oban": {:hex, :oban, "0.8.1", "4bbf62eb1829f856d69aeb5069ac7036afe07db8221a17de2a9169cc7a58a318", [:mix], [{:ecto_sql, "~> 3.1", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.14", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm"}, "pbkdf2_elixir": {:hex, :pbkdf2_elixir, "0.12.3", "6706a148809a29c306062862c803406e88f048277f6e85b68faf73291e820b84", [:mix], [], "hexpm"}, "phoenix": {:hex, :phoenix, "1.4.9", "746d098e10741c334d88143d3c94cab1756435f94387a63441792e66ec0ee974", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.8.1 or ~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm"}, @@ -74,7 +74,7 @@ "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"}, "poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm"}, - "postgrex": {:hex, :postgrex, "0.14.3", "5754dee2fdf6e9e508cbf49ab138df964278700b764177e8f3871e658b345a1e", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, + "postgrex": {:hex, :postgrex, "0.15.1", "23ce3417de70f4c0e9e7419ad85bdabcc6860a6925fe2c6f3b1b5b1e8e47bf2f", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm"}, "prometheus": {:hex, :prometheus, "4.4.1", "1e96073b3ed7788053768fea779cbc896ddc3bdd9ba60687f2ad50b252ac87d6", [:mix, :rebar3], [], "hexpm"}, "prometheus_ecto": {:hex, :prometheus_ecto, "1.4.1", "6c768ea9654de871e5b32fab2eac348467b3021604ebebbcbd8bcbe806a65ed5", [:mix], [{:ecto, "~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.1 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}], "hexpm"}, "prometheus_ex": {:hex, :prometheus_ex, "3.0.5", "fa58cfd983487fc5ead331e9a3e0aa622c67232b3ec71710ced122c4c453a02f", [:mix], [{:prometheus, "~> 4.0", [hex: :prometheus, repo: "hexpm", optional: false]}], "hexpm"}, diff --git a/priv/repo/migrations/20190917100019_update_oban.exs b/priv/repo/migrations/20190917100019_update_oban.exs new file mode 100644 index 000000000..157dc54f9 --- /dev/null +++ b/priv/repo/migrations/20190917100019_update_oban.exs @@ -0,0 +1,11 @@ +defmodule Pleroma.Repo.Migrations.UpdateOban do + use Ecto.Migration + + def up do + Oban.Migrations.up(version: 4) + end + + def down do + Oban.Migrations.down(version: 2) + end +end From 450bf7a63c39c2301d5985448a867e77f1dfe3b3 Mon Sep 17 00:00:00 2001 From: eugenijm Date: Fri, 13 Sep 2019 17:37:30 +0300 Subject: [PATCH 087/272] Mastodon API: Add a setting to hide follow/follower count from the user view (`hide_follows_count` and `hide_followers_count`) --- CHANGELOG.md | 1 + docs/api/differences_in_mastoapi_responses.md | 4 +++ lib/pleroma/user/info.ex | 14 ++++++-- .../web/activity_pub/views/user_view.ex | 32 +++++++++++-------- .../controllers/mastodon_api_controller.ex | 2 ++ .../web/mastodon_api/views/account_view.ex | 14 ++++++-- .../web/activity_pub/views/user_view_test.exs | 24 ++++++++++++-- .../update_credentials_test.exs | 16 ++++++++++ .../mastodon_api/views/account_view_test.exs | 31 ++++++++++++++++-- 9 files changed, 117 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4eb72c002..7dfa477b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,6 +94,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: added `/auth/password` endpoint for password reset with rate limit. - Mastodon API: /api/v1/accounts/:id/statuses now supports nicknames or user id - Mastodon API: Improve support for the user profile custom fields +- Mastodon API: follower/following counters are nullified when `hide_follows`/`hide_followers` and `hide_follows_count`/`hide_followers_count` are set - Admin API: Return users' tags when querying reports - Admin API: Return avatar and display name when querying users - Admin API: Allow querying user by ID diff --git a/docs/api/differences_in_mastoapi_responses.md b/docs/api/differences_in_mastoapi_responses.md index 9b32baf3a..3c7f5dad7 100644 --- a/docs/api/differences_in_mastoapi_responses.md +++ b/docs/api/differences_in_mastoapi_responses.md @@ -50,6 +50,8 @@ Has these additional fields under the `pleroma` object: - `confirmation_pending`: boolean, true if a new user account is waiting on email confirmation to be activated - `hide_followers`: boolean, true when the user has follower hiding enabled - `hide_follows`: boolean, true when the user has follow hiding enabled +- `hide_followers_count`: boolean, true when the user has follower stat hiding enabled +- `hide_follows_count`: boolean, true when the user has follow stat hiding enabled - `settings_store`: A generic map of settings for frontends. Opaque to the backend. Only returned in `verify_credentials` and `update_credentials` - `chat_token`: The token needed for Pleroma chat. Only returned in `verify_credentials` - `deactivated`: boolean, true when the user is deactivated @@ -112,6 +114,8 @@ Additional parameters can be added to the JSON body/Form data: - `no_rich_text` - if true, html tags are stripped from all statuses requested from the API - `hide_followers` - if true, user's followers will be hidden - `hide_follows` - if true, user's follows will be hidden +- `hide_followers_count` - if true, user's follower count will be hidden +- `hide_follows_count` - if true, user's follow count will be hidden - `hide_favorites` - if true, user's favorites timeline will be hidden - `show_role` - if true, user's role (e.g admin, moderator) will be exposed to anyone in the API - `default_scope` - the scope returned under `privacy` key in Source subentity diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex index 151e025de..b150a57cd 100644 --- a/lib/pleroma/user/info.ex +++ b/lib/pleroma/user/info.ex @@ -41,6 +41,8 @@ defmodule Pleroma.User.Info do field(:topic, :string, default: nil) field(:hub, :string, default: nil) field(:salmon, :string, default: nil) + field(:hide_followers_count, :boolean, default: false) + field(:hide_follows_count, :boolean, default: false) field(:hide_followers, :boolean, default: false) field(:hide_follows, :boolean, default: false) field(:hide_favorites, :boolean, default: true) @@ -262,6 +264,8 @@ def remote_user_creation(info, params) do :salmon, :hide_followers, :hide_follows, + :hide_followers_count, + :hide_follows_count, :follower_count, :fields, :following_count @@ -281,7 +285,9 @@ def user_upgrade(info, params, remote? \\ false) do :following_count, :hide_follows, :fields, - :hide_followers + :hide_followers, + :hide_followers_count, + :hide_follows_count ]) |> validate_fields(remote?) end @@ -295,6 +301,8 @@ def profile_update(info, params) do :banner, :hide_follows, :hide_followers, + :hide_followers_count, + :hide_follows_count, :hide_favorites, :background, :show_role, @@ -458,7 +466,9 @@ def follow_information_update(info, params) do :hide_followers, :hide_follows, :follower_count, - :following_count + :following_count, + :hide_followers_count, + :hide_follows_count ]) end end diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index 7be734b26..164b973d0 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -118,30 +118,34 @@ def render("user.json", %{user: user}) do end def render("following.json", %{user: user, page: page} = opts) do - showing = (opts[:for] && opts[:for] == user) || !user.info.hide_follows + showing_items = (opts[:for] && opts[:for] == user) || !user.info.hide_follows + showing_count = showing_items || !user.info.hide_follows_count + query = User.get_friends_query(user) query = from(user in query, select: [:ap_id]) following = Repo.all(query) total = - if showing do + if showing_count do length(following) else 0 end - collection(following, "#{user.ap_id}/following", page, showing, total) + collection(following, "#{user.ap_id}/following", page, showing_items, total) |> Map.merge(Utils.make_json_ld_header()) end def render("following.json", %{user: user} = opts) do - showing = (opts[:for] && opts[:for] == user) || !user.info.hide_follows + showing_items = (opts[:for] && opts[:for] == user) || !user.info.hide_follows + showing_count = showing_items || !user.info.hide_follows_count + query = User.get_friends_query(user) query = from(user in query, select: [:ap_id]) following = Repo.all(query) total = - if showing do + if showing_count do length(following) else 0 @@ -152,7 +156,7 @@ def render("following.json", %{user: user} = opts) do "type" => "OrderedCollection", "totalItems" => total, "first" => - if showing do + if showing_items do collection(following, "#{user.ap_id}/following", 1, !user.info.hide_follows) else "#{user.ap_id}/following?page=1" @@ -162,32 +166,34 @@ def render("following.json", %{user: user} = opts) do end def render("followers.json", %{user: user, page: page} = opts) do - showing = (opts[:for] && opts[:for] == user) || !user.info.hide_followers + showing_items = (opts[:for] && opts[:for] == user) || !user.info.hide_followers + showing_count = showing_items || !user.info.hide_followers_count query = User.get_followers_query(user) query = from(user in query, select: [:ap_id]) followers = Repo.all(query) total = - if showing do + if showing_count do length(followers) else 0 end - collection(followers, "#{user.ap_id}/followers", page, showing, total) + collection(followers, "#{user.ap_id}/followers", page, showing_items, total) |> Map.merge(Utils.make_json_ld_header()) end def render("followers.json", %{user: user} = opts) do - showing = (opts[:for] && opts[:for] == user) || !user.info.hide_followers + showing_items = (opts[:for] && opts[:for] == user) || !user.info.hide_followers + showing_count = showing_items || !user.info.hide_followers_count query = User.get_followers_query(user) query = from(user in query, select: [:ap_id]) followers = Repo.all(query) total = - if showing do + if showing_count do length(followers) else 0 @@ -198,8 +204,8 @@ def render("followers.json", %{user: user} = opts) do "type" => "OrderedCollection", "totalItems" => total, "first" => - if showing do - collection(followers, "#{user.ap_id}/followers", 1, showing, total) + if showing_items do + collection(followers, "#{user.ap_id}/followers", 1, showing_items, total) else "#{user.ap_id}/followers?page=1" end diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index 060137b80..1beb4bcf2 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -147,6 +147,8 @@ def update_credentials(%{assigns: %{user: user}} = conn, params) do [ :no_rich_text, :locked, + :hide_followers_count, + :hide_follows_count, :hide_followers, :hide_follows, :hide_favorites, diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index 169116d0d..195dd124b 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -74,10 +74,18 @@ defp do_render("account.json", %{user: user} = opts) do user_info = User.get_cached_user_info(user) following_count = - ((!user.info.hide_follows or opts[:for] == user) && user_info.following_count) || 0 + if !user.info.hide_follows_count or !user.info.hide_follows or opts[:for] == user do + user_info.following_count + else + 0 + end followers_count = - ((!user.info.hide_followers or opts[:for] == user) && user_info.follower_count) || 0 + if !user.info.hide_followers_count or !user.info.hide_followers or opts[:for] == user do + user_info.follower_count + else + 0 + end bot = (user.info.source_data["type"] || "Person") in ["Application", "Service"] @@ -138,6 +146,8 @@ defp do_render("account.json", %{user: user} = opts) do pleroma: %{ confirmation_pending: user_info.confirmation_pending, tags: user.tags, + hide_followers_count: user.info.hide_followers_count, + hide_follows_count: user.info.hide_follows_count, hide_followers: user.info.hide_followers, hide_follows: user.info.hide_follows, hide_favorites: user.info.hide_favorites, diff --git a/test/web/activity_pub/views/user_view_test.exs b/test/web/activity_pub/views/user_view_test.exs index fb7fd9e79..2b4a04afd 100644 --- a/test/web/activity_pub/views/user_view_test.exs +++ b/test/web/activity_pub/views/user_view_test.exs @@ -105,10 +105,20 @@ test "sets totalItems to zero when followers are hidden" do other_user = insert(:user) {:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user) assert %{"totalItems" => 1} = UserView.render("followers.json", %{user: user}) - info = Map.put(user.info, :hide_followers, true) + info = Map.merge(user.info, %{hide_followers_count: true, hide_followers: true}) user = Map.put(user, :info, info) assert %{"totalItems" => 0} = UserView.render("followers.json", %{user: user}) end + + test "sets correct totalItems when followers are hidden but the follower counter is not" do + user = insert(:user) + other_user = insert(:user) + {:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user) + assert %{"totalItems" => 1} = UserView.render("followers.json", %{user: user}) + info = Map.merge(user.info, %{hide_followers_count: false, hide_followers: true}) + user = Map.put(user, :info, info) + assert %{"totalItems" => 1} = UserView.render("followers.json", %{user: user}) + end end describe "following" do @@ -117,9 +127,19 @@ test "sets totalItems to zero when follows are hidden" do other_user = insert(:user) {:ok, user, _other_user, _activity} = CommonAPI.follow(user, other_user) assert %{"totalItems" => 1} = UserView.render("following.json", %{user: user}) - info = Map.put(user.info, :hide_follows, true) + info = Map.merge(user.info, %{hide_follows_count: true, hide_follows: true}) user = Map.put(user, :info, info) assert %{"totalItems" => 0} = UserView.render("following.json", %{user: user}) end + + test "sets correct totalItems when follows are hidden but the follow counter is not" do + user = insert(:user) + other_user = insert(:user) + {:ok, user, _other_user, _activity} = CommonAPI.follow(user, other_user) + assert %{"totalItems" => 1} = UserView.render("following.json", %{user: user}) + info = Map.merge(user.info, %{hide_follows_count: false, hide_follows: true}) + user = Map.put(user, :info, info) + assert %{"totalItems" => 1} = UserView.render("following.json", %{user: user}) + end end end diff --git a/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs b/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs index 87ee82050..89d4ca37e 100644 --- a/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs +++ b/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs @@ -128,6 +128,22 @@ test "updates the user's hide_followers status", %{conn: conn} do assert user["pleroma"]["hide_followers"] == true end + test "updates the user's hide_followers_count and hide_follows_count", %{conn: conn} do + user = insert(:user) + + conn = + conn + |> assign(:user, user) + |> patch("/api/v1/accounts/update_credentials", %{ + hide_followers_count: "true", + hide_follows_count: "true" + }) + + assert user = json_response(conn, 200) + assert user["pleroma"]["hide_followers_count"] == true + assert user["pleroma"]["hide_follows_count"] == true + end + test "updates the user's skip_thread_containment option", %{conn: conn} do user = insert(:user) diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 1d8b28339..8ff6751d3 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -79,6 +79,8 @@ test "Represent a user account" do hide_favorites: true, hide_followers: false, hide_follows: false, + hide_followers_count: false, + hide_follows_count: false, relationship: %{}, skip_thread_containment: false } @@ -147,6 +149,8 @@ test "Represent a Service(bot) account" do hide_favorites: true, hide_followers: false, hide_follows: false, + hide_followers_count: false, + hide_follows_count: false, relationship: %{}, skip_thread_containment: false } @@ -318,6 +322,8 @@ test "represent an embedded relationship" do hide_favorites: true, hide_followers: false, hide_follows: false, + hide_followers_count: false, + hide_follows_count: false, relationship: %{ id: to_string(user.id), following: false, @@ -361,8 +367,16 @@ test "sanitizes display names" do end describe "hiding follows/following" do - test "shows when follows/following are hidden and sets follower/following count to 0" do - user = insert(:user, info: %{hide_followers: true, hide_follows: true}) + test "shows when follows/followers stats are hidden and sets follow/follower count to 0" do + info = %{ + hide_followers: true, + hide_followers_count: true, + hide_follows: true, + hide_follows_count: true + } + + user = insert(:user, info: info) + other_user = insert(:user) {:ok, user, other_user, _activity} = CommonAPI.follow(user, other_user) {:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user) @@ -370,6 +384,19 @@ test "shows when follows/following are hidden and sets follower/following count assert %{ followers_count: 0, following_count: 0, + pleroma: %{hide_follows_count: true, hide_followers_count: true} + } = AccountView.render("account.json", %{user: user}) + end + + test "shows when follows/followers are hidden" do + user = insert(:user, info: %{hide_followers: true, hide_follows: true}) + other_user = insert(:user) + {:ok, user, other_user, _activity} = CommonAPI.follow(user, other_user) + {:ok, _other_user, user, _activity} = CommonAPI.follow(other_user, user) + + assert %{ + followers_count: 1, + following_count: 1, pleroma: %{hide_follows: true, hide_followers: true} } = AccountView.render("account.json", %{user: user}) end From 2688b876abf5ebd48d18e460eee7db992f984f5a Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Tue, 17 Sep 2019 13:42:28 +0000 Subject: [PATCH 088/272] Apply suggestion to lib/pleroma/web/pleroma_api/subscription_notification_controller.ex --- .../web/pleroma_api/subscription_notification_controller.ex | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex b/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex index bfc2631dd..d5da92946 100644 --- a/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex +++ b/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex @@ -9,7 +9,6 @@ defmodule Pleroma.Web.PleromaAPI.SubscriptionNotificationController do alias Pleroma.SubscriptionNotification alias Pleroma.Web.PleromaAPI.PleromaAPI - alias Pleroma.Web.PleromaAPI.SubscriptionNotificationView def list(%{assigns: %{user: user}} = conn, params) do notifications = PleromaAPI.get_subscription_notifications(user, params) From c0f776faecfa91ed755760975da12b546ca89317 Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Tue, 17 Sep 2019 13:42:36 +0000 Subject: [PATCH 089/272] Apply suggestion to lib/pleroma/web/pleroma_api/subscription_notification_controller.ex --- .../web/pleroma_api/subscription_notification_controller.ex | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex b/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex index d5da92946..fff307b4e 100644 --- a/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex +++ b/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex @@ -15,7 +15,6 @@ def list(%{assigns: %{user: user}} = conn, params) do conn |> add_link_headers(notifications) - |> put_view(SubscriptionNotificationView) |> render("index.json", %{notifications: notifications, for: user}) end From f9be517c7f3e63cfaaca871a4458cbf7c8a6a3f4 Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Tue, 17 Sep 2019 13:42:40 +0000 Subject: [PATCH 090/272] Apply suggestion to lib/pleroma/web/pleroma_api/subscription_notification_controller.ex --- .../web/pleroma_api/subscription_notification_controller.ex | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex b/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex index fff307b4e..969ce0179 100644 --- a/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex +++ b/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex @@ -20,9 +20,7 @@ def list(%{assigns: %{user: user}} = conn, params) do def get(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do with {:ok, notification} <- SubscriptionNotification.get(user, id) do - conn - |> put_view(SubscriptionNotificationView) - |> render("show.json", %{subscription_notification: notification, for: user}) + render(conn, "show.json", %{subscription_notification: notification, for: user}) else {:error, reason} -> conn From a81f80233d63d98a0de7b57def76275182d5477e Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Tue, 17 Sep 2019 13:43:10 +0000 Subject: [PATCH 091/272] Apply suggestion to lib/pleroma/web/router.ex --- lib/pleroma/web/router.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 05891b6c0..1fff94b38 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -274,7 +274,7 @@ defmodule Pleroma.Web.Router do post("/dismiss", SubscriptionNotificationController, :dismiss) delete("/destroy_multiple", SubscriptionNotificationController, :destroy_multiple) get("/", SubscriptionNotificationController, :list) - get("/id", SubscriptionNotificationController, :get) + get("/:id", SubscriptionNotificationController, :get) end end From 015597c2abbd9a78df76903bb2c3d229bf11e958 Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Tue, 17 Sep 2019 13:43:15 +0000 Subject: [PATCH 092/272] Apply suggestion to test/web/pleroma_api/subscription_notification_controller_test.exs --- .../pleroma_api/subscription_notification_controller_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/pleroma_api/subscription_notification_controller_test.exs b/test/web/pleroma_api/subscription_notification_controller_test.exs index ee495f112..781d27ead 100644 --- a/test/web/pleroma_api/subscription_notification_controller_test.exs +++ b/test/web/pleroma_api/subscription_notification_controller_test.exs @@ -50,7 +50,7 @@ test "getting a single notification", %{conn: conn, user: user, subscriber: subs {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) [notification] = Repo.all(SubscriptionNotification) - path = subscription_notification_path(conn, :get, id: notification.id) + path = subscription_notification_path(conn, :get, notification) conn = conn From a76168e743c3dd193db6ebca029f287da9edd290 Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Tue, 17 Sep 2019 16:44:41 +0300 Subject: [PATCH 093/272] Cleanup PleromaAPIController --- .../web/pleroma_api/pleroma_api_controller.ex | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex b/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex index 246b351dc..d17ccf84d 100644 --- a/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex @@ -9,7 +9,6 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIController do alias Pleroma.Conversation.Participation alias Pleroma.Notification - alias Pleroma.SubscriptionNotification alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.MastodonAPI.ConversationView alias Pleroma.Web.MastodonAPI.NotificationView @@ -87,29 +86,4 @@ def read_notification(%{assigns: %{user: user}} = conn, %{"max_id" => max_id}) d |> render("index.json", %{notifications: notifications, for: user}) end end - - def delete_subscription_notification(%{assigns: %{user: user}} = conn, %{ - "id" => notification_id - }) do - with {:ok, notification} <- SubscriptionNotification.dismiss(user, notification_id) do - conn - |> put_view(NotificationView) - |> render("show.json", %{notification: notification, for: user}) - else - {:error, message} -> - conn - |> put_status(:bad_request) - |> json(%{"error" => message}) - end - end - - def read_subscription_notification(%{assigns: %{user: user}} = conn, %{"max_id" => max_id}) do - with notifications <- SubscriptionNotification.clear_up_to(user, max_id) do - notifications = Enum.take(notifications, 80) - - conn - |> put_view(NotificationView) - |> render("index.json", %{notifications: notifications, for: user}) - end - end end From 7d1773bc6b01caad8666ef07a9b2f2ac326fd0cd Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Tue, 17 Sep 2019 16:48:24 +0300 Subject: [PATCH 094/272] Rename SubscriptionNotificationController list and get actions to index and show --- .../subscription_notification_controller.ex | 4 ++-- lib/pleroma/web/router.ex | 4 ++-- ...bscription_notification_controller_test.exs | 18 +++++++++--------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex b/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex index 969ce0179..fa8307668 100644 --- a/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex +++ b/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex @@ -10,7 +10,7 @@ defmodule Pleroma.Web.PleromaAPI.SubscriptionNotificationController do alias Pleroma.SubscriptionNotification alias Pleroma.Web.PleromaAPI.PleromaAPI - def list(%{assigns: %{user: user}} = conn, params) do + def index(%{assigns: %{user: user}} = conn, params) do notifications = PleromaAPI.get_subscription_notifications(user, params) conn @@ -18,7 +18,7 @@ def list(%{assigns: %{user: user}} = conn, params) do |> render("index.json", %{notifications: notifications, for: user}) end - def get(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do + def show(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do with {:ok, notification} <- SubscriptionNotification.get(user, id) do render(conn, "show.json", %{subscription_notification: notification, for: user}) else diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 1fff94b38..502c67e74 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -273,8 +273,8 @@ defmodule Pleroma.Web.Router do post("/clear", SubscriptionNotificationController, :clear) post("/dismiss", SubscriptionNotificationController, :dismiss) delete("/destroy_multiple", SubscriptionNotificationController, :destroy_multiple) - get("/", SubscriptionNotificationController, :list) - get("/:id", SubscriptionNotificationController, :get) + get("/", SubscriptionNotificationController, :index) + get("/:id", SubscriptionNotificationController, :show) end end diff --git a/test/web/pleroma_api/subscription_notification_controller_test.exs b/test/web/pleroma_api/subscription_notification_controller_test.exs index 781d27ead..c6a71732d 100644 --- a/test/web/pleroma_api/subscription_notification_controller_test.exs +++ b/test/web/pleroma_api/subscription_notification_controller_test.exs @@ -33,7 +33,7 @@ defmodule Pleroma.Web.PleromaAPI.SubscriptionNotificationControllerTest do test "list of notifications", %{conn: conn, user: user, subscriber: subscriber} do status_text = "Hello" {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) - path = subscription_notification_path(conn, :list) + path = subscription_notification_path(conn, :index) conn = conn @@ -50,7 +50,7 @@ test "getting a single notification", %{conn: conn, user: user, subscriber: subs {:ok, _activity} = CommonAPI.post(user, %{"status" => status_text}) [notification] = Repo.all(SubscriptionNotification) - path = subscription_notification_path(conn, :get, notification) + path = subscription_notification_path(conn, :show, notification) conn = conn @@ -101,7 +101,7 @@ test "clearing all notifications also deletes them", %{ conn = build_conn() |> assign(:user, subscriber) - |> get(subscription_notification_path(conn, :list)) + |> get(subscription_notification_path(conn, :index)) assert json_response(conn, 200) == [] @@ -136,7 +136,7 @@ test "paginates notifications using min_id, since_id, max_id, and limit", %{ conn_res = get( conn, - subscription_notification_path(conn, :list, %{ + subscription_notification_path(conn, :index, %{ "limit" => 2, "min_id" => notification1_id }) @@ -149,7 +149,7 @@ test "paginates notifications using min_id, since_id, max_id, and limit", %{ conn_res = get( conn, - subscription_notification_path(conn, :list, %{ + subscription_notification_path(conn, :index, %{ "limit" => 2, "since_id" => notification1_id }) @@ -162,7 +162,7 @@ test "paginates notifications using min_id, since_id, max_id, and limit", %{ conn_res = get( conn, - subscription_notification_path(conn, :list, %{ + subscription_notification_path(conn, :index, %{ "limit" => 2, "max_id" => notification4_id }) @@ -195,7 +195,7 @@ test "destroy multiple", %{conn: conn, user: user1, subscriber: user2} do conn = assign(conn, :user, user1) - conn_res = get(conn, subscription_notification_path(conn, :list)) + conn_res = get(conn, subscription_notification_path(conn, :index)) result = json_response(conn_res, 200) @@ -205,7 +205,7 @@ test "destroy multiple", %{conn: conn, user: user1, subscriber: user2} do conn2 = assign(conn, :user, user2) - conn_res = get(conn2, subscription_notification_path(conn, :list)) + conn_res = get(conn2, subscription_notification_path(conn, :index)) result = json_response(conn_res, 200) @@ -220,7 +220,7 @@ test "destroy multiple", %{conn: conn, user: user1, subscriber: user2} do assert json_response(conn_destroy, 200) == %{} - conn_res = get(conn2, subscription_notification_path(conn, :list)) + conn_res = get(conn2, subscription_notification_path(conn, :index)) result = json_response(conn_res, 200) From e9f69a3eb7f17ae8c2890972851de1139983ce3d Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Tue, 17 Sep 2019 16:52:23 +0300 Subject: [PATCH 095/272] Move pleroma_api controllers into controllers sub-folders --- .../web/pleroma_api/{ => controllers}/pleroma_api_controller.ex | 0 .../{ => controllers}/subscription_notification_controller.ex | 0 .../pleroma_api/{ => controllers}/pleroma_api_controller_test.exs | 0 .../subscription_notification_controller_test.exs | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename lib/pleroma/web/pleroma_api/{ => controllers}/pleroma_api_controller.ex (100%) rename lib/pleroma/web/pleroma_api/{ => controllers}/subscription_notification_controller.ex (100%) rename test/web/pleroma_api/{ => controllers}/pleroma_api_controller_test.exs (100%) rename test/web/pleroma_api/{ => controllers}/subscription_notification_controller_test.exs (100%) diff --git a/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex similarity index 100% rename from lib/pleroma/web/pleroma_api/pleroma_api_controller.ex rename to lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex diff --git a/lib/pleroma/web/pleroma_api/subscription_notification_controller.ex b/lib/pleroma/web/pleroma_api/controllers/subscription_notification_controller.ex similarity index 100% rename from lib/pleroma/web/pleroma_api/subscription_notification_controller.ex rename to lib/pleroma/web/pleroma_api/controllers/subscription_notification_controller.ex diff --git a/test/web/pleroma_api/pleroma_api_controller_test.exs b/test/web/pleroma_api/controllers/pleroma_api_controller_test.exs similarity index 100% rename from test/web/pleroma_api/pleroma_api_controller_test.exs rename to test/web/pleroma_api/controllers/pleroma_api_controller_test.exs diff --git a/test/web/pleroma_api/subscription_notification_controller_test.exs b/test/web/pleroma_api/controllers/subscription_notification_controller_test.exs similarity index 100% rename from test/web/pleroma_api/subscription_notification_controller_test.exs rename to test/web/pleroma_api/controllers/subscription_notification_controller_test.exs From 9fa2586abd915342095574f05358642412db0f04 Mon Sep 17 00:00:00 2001 From: Roman Chvanikov Date: Tue, 17 Sep 2019 17:44:10 +0300 Subject: [PATCH 096/272] Refactor SubscriptionNotificationView --- .../subscription_notification_controller.ex | 20 +++++++++++++++++-- .../views/subscription_notification_view.ex | 9 +++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/pleroma_api/controllers/subscription_notification_controller.ex b/lib/pleroma/web/pleroma_api/controllers/subscription_notification_controller.ex index fa8307668..37c2222de 100644 --- a/lib/pleroma/web/pleroma_api/controllers/subscription_notification_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/subscription_notification_controller.ex @@ -7,11 +7,16 @@ defmodule Pleroma.Web.PleromaAPI.SubscriptionNotificationController do import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2] + alias Pleroma.Activity alias Pleroma.SubscriptionNotification + alias Pleroma.User alias Pleroma.Web.PleromaAPI.PleromaAPI def index(%{assigns: %{user: user}} = conn, params) do - notifications = PleromaAPI.get_subscription_notifications(user, params) + notifications = + user + |> PleromaAPI.get_subscription_notifications(params) + |> Enum.map(&build_notification_data/1) conn |> add_link_headers(notifications) @@ -20,7 +25,10 @@ def index(%{assigns: %{user: user}} = conn, params) do def show(%{assigns: %{user: user}} = conn, %{"id" => id} = _params) do with {:ok, notification} <- SubscriptionNotification.get(user, id) do - render(conn, "show.json", %{subscription_notification: notification, for: user}) + render(conn, "show.json", %{ + subscription_notification: build_notification_data(notification), + for: user + }) else {:error, reason} -> conn @@ -52,4 +60,12 @@ def destroy_multiple( SubscriptionNotification.destroy_multiple(user, ids) json(conn, %{}) end + + defp build_notification_data(%{activity: %{data: data}} = notification) do + %{ + notification: notification, + actor: User.get_cached_by_ap_id(data["actor"]), + parent_activity: Activity.get_create_by_object_ap_id(data["object"]) + } + end end diff --git a/lib/pleroma/web/pleroma_api/views/subscription_notification_view.ex b/lib/pleroma/web/pleroma_api/views/subscription_notification_view.ex index d7f7f4c5a..0eccbcbb9 100644 --- a/lib/pleroma/web/pleroma_api/views/subscription_notification_view.ex +++ b/lib/pleroma/web/pleroma_api/views/subscription_notification_view.ex @@ -6,7 +6,6 @@ defmodule Pleroma.Web.PleromaAPI.SubscriptionNotificationView do use Pleroma.Web, :view alias Pleroma.Activity - alias Pleroma.User alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.AccountView alias Pleroma.Web.MastodonAPI.StatusView @@ -17,11 +16,13 @@ def render("index.json", %{notifications: notifications, for: user}) do end def render("show.json", %{ - subscription_notification: %{activity: activity} = notification, + subscription_notification: %{ + notification: %{activity: activity} = notification, + actor: actor, + parent_activity: parent_activity + }, for: user }) do - actor = User.get_cached_by_ap_id(activity.data["actor"]) - parent_activity = Activity.get_create_by_object_ap_id(activity.data["object"]) mastodon_type = Activity.mastodon_notification_type(activity) response = %{ From 80c5c3495bdd7939e576c8746a959f3f89f44042 Mon Sep 17 00:00:00 2001 From: Steven Fuchs Date: Tue, 17 Sep 2019 14:44:52 +0000 Subject: [PATCH 097/272] remove remaining errors from tests --- lib/pleroma/application.ex | 53 ++++++++++++++------ lib/pleroma/web/streamer/state.ex | 18 +++++-- test/integration/mastodon_websocket_test.exs | 16 ++++-- 3 files changed, 62 insertions(+), 25 deletions(-) diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 3b37ce630..dabce771d 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -43,23 +43,9 @@ def start(_type, _args) do hackney_pool_children() ++ [ Pleroma.Stats, - {Oban, Pleroma.Config.get(Oban)}, - %{ - id: :web_push_init, - start: {Task, :start_link, [&Pleroma.Web.Push.init/0]}, - restart: :temporary - }, - %{ - id: :federator_init, - start: {Task, :start_link, [&Pleroma.Web.Federator.init/0]}, - restart: :temporary - }, - %{ - id: :internal_fetch_init, - start: {Task, :start_link, [&Pleroma.Web.ActivityPub.InternalFetchActor.init/0]}, - restart: :temporary - } + {Oban, Pleroma.Config.get(Oban)} ] ++ + task_children(@env) ++ oauth_cleanup_child(oauth_cleanup_enabled?()) ++ streamer_child(@env) ++ chat_child(@env, chat_enabled?()) ++ @@ -163,4 +149,39 @@ defp hackney_pool_children do :hackney_pool.child_spec(pool, options) end end + + defp task_children(:test) do + [ + %{ + id: :web_push_init, + start: {Task, :start_link, [&Pleroma.Web.Push.init/0]}, + restart: :temporary + }, + %{ + id: :federator_init, + start: {Task, :start_link, [&Pleroma.Web.Federator.init/0]}, + restart: :temporary + } + ] + end + + defp task_children(_) do + [ + %{ + id: :web_push_init, + start: {Task, :start_link, [&Pleroma.Web.Push.init/0]}, + restart: :temporary + }, + %{ + id: :federator_init, + start: {Task, :start_link, [&Pleroma.Web.Federator.init/0]}, + restart: :temporary + }, + %{ + id: :internal_fetch_init, + start: {Task, :start_link, [&Pleroma.Web.ActivityPub.InternalFetchActor.init/0]}, + restart: :temporary + } + ] + end end diff --git a/lib/pleroma/web/streamer/state.ex b/lib/pleroma/web/streamer/state.ex index 7b5199068..c48752d95 100644 --- a/lib/pleroma/web/streamer/state.ex +++ b/lib/pleroma/web/streamer/state.ex @@ -4,16 +4,18 @@ defmodule Pleroma.Web.Streamer.State do alias Pleroma.Web.Streamer.StreamerSocket + @env Mix.env() + def start_link(_) do GenServer.start_link(__MODULE__, %{sockets: %{}}, name: __MODULE__) end def add_socket(topic, socket) do - GenServer.call(__MODULE__, {:add, socket, topic}) + GenServer.call(__MODULE__, {:add, topic, socket}) end def remove_socket(topic, socket) do - GenServer.call(__MODULE__, {:remove, socket, topic}) + do_remove_socket(@env, topic, socket) end def get_sockets do @@ -29,7 +31,7 @@ def handle_call(:get_state, _from, state) do {:reply, state, state} end - def handle_call({:add, socket, topic}, _from, %{sockets: sockets} = state) do + def handle_call({:add, topic, socket}, _from, %{sockets: sockets} = state) do internal_topic = internal_topic(topic, socket) stream_socket = StreamerSocket.from_socket(socket) @@ -44,7 +46,7 @@ def handle_call({:add, socket, topic}, _from, %{sockets: sockets} = state) do {:reply, state, state} end - def handle_call({:remove, socket, topic}, _from, %{sockets: sockets} = state) do + def handle_call({:remove, topic, socket}, _from, %{sockets: sockets} = state) do internal_topic = internal_topic(topic, socket) stream_socket = StreamerSocket.from_socket(socket) @@ -57,6 +59,14 @@ def handle_call({:remove, socket, topic}, _from, %{sockets: sockets} = state) do {:reply, state, state} end + defp do_remove_socket(:test, _, _) do + :ok + end + + defp do_remove_socket(_env, topic, socket) do + GenServer.call(__MODULE__, {:remove, topic, socket}) + end + defp internal_topic(topic, socket) when topic in ~w[user user:notification direct] do "#{topic}:#{socket.assigns[:user].id}" diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs index c04262808..d02a3cc4d 100644 --- a/test/integration/mastodon_websocket_test.exs +++ b/test/integration/mastodon_websocket_test.exs @@ -18,6 +18,11 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do |> Map.put(:path, "/api/v1/streaming") |> URI.to_string() + setup_all do + start_supervised(Pleroma.Web.Streamer.supervisor()) + :ok + end + def start_socket(qs \\ nil, headers \\ []) do path = case qs do @@ -32,6 +37,7 @@ test "refuses invalid requests" do capture_log(fn -> assert {:error, {400, _}} = start_socket() assert {:error, {404, _}} = start_socket("?stream=ncjdk") + Process.sleep(30) end) end @@ -39,17 +45,16 @@ test "requires authentication and a valid token for protected streams" do capture_log(fn -> assert {:error, {403, _}} = start_socket("?stream=user&access_token=aaaaaaaaaaaa") assert {:error, {403, _}} = start_socket("?stream=user") + Process.sleep(30) end) end - @tag needs_streamer: true test "allows public streams without authentication" do assert {:ok, _} = start_socket("?stream=public") assert {:ok, _} = start_socket("?stream=public:local") assert {:ok, _} = start_socket("?stream=hashtag&tag=lain") end - @tag needs_streamer: true test "receives well formatted events" do user = insert(:user) {:ok, _} = start_socket("?stream=public") @@ -94,31 +99,32 @@ test "accepts valid tokens", state do assert {:ok, _} = start_socket("?stream=user&access_token=#{state.token.token}") end - @tag needs_streamer: true test "accepts the 'user' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user&access_token=#{token.token}") assert capture_log(fn -> assert {:error, {403, "Forbidden"}} = start_socket("?stream=user") + Process.sleep(30) end) =~ ":badarg" end - @tag needs_streamer: true test "accepts the 'user:notification' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user:notification&access_token=#{token.token}") assert capture_log(fn -> assert {:error, {403, "Forbidden"}} = start_socket("?stream=user:notification") + Process.sleep(30) end) =~ ":badarg" end - @tag needs_streamer: true test "accepts valid token on Sec-WebSocket-Protocol header", %{token: token} do assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}]) assert capture_log(fn -> assert {:error, {403, "Forbidden"}} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}]) + + Process.sleep(30) end) =~ ":badarg" end end From 6193157f1998b10ac6cb9f4d36dd863eced81b37 Mon Sep 17 00:00:00 2001 From: Steven Fuchs Date: Tue, 17 Sep 2019 18:12:27 +0000 Subject: [PATCH 098/272] Fix notification warnings --- lib/pleroma/workers/web_pusher_worker.ex | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/workers/web_pusher_worker.ex b/lib/pleroma/workers/web_pusher_worker.ex index bea2baffb..61b451e3e 100644 --- a/lib/pleroma/workers/web_pusher_worker.ex +++ b/lib/pleroma/workers/web_pusher_worker.ex @@ -10,7 +10,11 @@ defmodule Pleroma.Workers.WebPusherWorker do @impl Oban.Worker def perform(%{"op" => "web_push", "notification_id" => notification_id}, _job) do - notification = Repo.get(Notification, notification_id) + notification = + Notification + |> Repo.get(notification_id) + |> Repo.preload([:activity]) + Pleroma.Web.Push.Impl.perform(notification) end end From 8d812c28a70ae174985000e98b9618dad746b22e Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 17 Sep 2019 21:51:50 +0300 Subject: [PATCH 099/272] Update Tesla to 1.3 This version includes a couple of fixes, adds Gun and Mint adapters and removes 0.x -> 1.0 config migrator, which for some reason fails under certain conditions. I had to set `override: true` because Quack pins Tesla to `1.2.0`, but I have looked through the source code and verified that updating Tesla doesn't break anything there. --- mix.exs | 2 +- mix.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.exs b/mix.exs index 230f90244..d8d3f802d 100644 --- a/mix.exs +++ b/mix.exs @@ -113,7 +113,7 @@ defp deps do {:calendar, "~> 0.17.4"}, {:cachex, "~> 3.0.2"}, {:poison, "~> 3.0", override: true}, - {:tesla, "~> 1.2"}, + {:tesla, "~> 1.3", override: true}, {:jason, "~> 1.0"}, {:mogrify, "~> 0.6.1"}, {:ex_aws, "~> 2.1"}, diff --git a/mix.lock b/mix.lock index 547ff6be6..24b34c09c 100644 --- a/mix.lock +++ b/mix.lock @@ -90,7 +90,7 @@ "swoosh": {:hex, :swoosh, "0.23.2", "7dda95ff0bf54a2298328d6899c74dae1223777b43563ccebebb4b5d2b61df38", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm"}, "syslog": {:git, "https://github.com/Vagabond/erlang-syslog.git", "4a6c6f2c996483e86c1320e9553f91d337bcb6aa", [tag: "1.0.5"]}, "telemetry": {:hex, :telemetry, "0.4.0", "8339bee3fa8b91cb84d14c2935f8ecf399ccd87301ad6da6b71c09553834b2ab", [:rebar3], [], "hexpm"}, - "tesla": {:hex, :tesla, "1.2.1", "864783cc27f71dd8c8969163704752476cec0f3a51eb3b06393b3971dc9733ff", [:mix], [{:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "~> 4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}], "hexpm"}, + "tesla": {:hex, :tesla, "1.3.0", "f35d72f029e608f9cdc6f6d6fcc7c66cf6d6512a70cfef9206b21b8bd0203a30", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, "~> 1.3", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "~> 4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 0.4", [hex: :mint, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.3", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm"}, "timex": {:hex, :timex, "3.6.1", "efdf56d0e67a6b956cc57774353b0329c8ab7726766a11547e529357ffdc1d56", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"}, "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "tzdata": {:hex, :tzdata, "0.5.21", "8cbf3607fcce69636c672d5be2bbb08687fe26639a62bdcc283d267277db7cf0", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"}, From d201eec45cc5eb8c7b0c912c14be4704dbb4c1b1 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Tue, 17 Sep 2019 22:02:37 +0300 Subject: [PATCH 100/272] fixed ecto version --- mix.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mix.exs b/mix.exs index 230f90244..58d1606d3 100644 --- a/mix.exs +++ b/mix.exs @@ -99,7 +99,7 @@ defp deps do {:plug_cowboy, "~> 2.0"}, {:phoenix_pubsub, "~> 1.1"}, {:phoenix_ecto, "~> 4.0"}, - {:ecto_sql, "~> 3.1"}, + {:ecto_sql, "~> 3.2"}, {:postgrex, ">= 0.13.5"}, {:oban, "~> 0.8.1"}, {:quantum, "~> 2.3"}, From 228bfd8a70cefadb8673ed6d11485944ef7c5666 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Tue, 17 Sep 2019 22:36:42 +0300 Subject: [PATCH 101/272] Bump elixir version to ~> 1.8 --- CHANGELOG.md | 1 + mix.exs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4eb72c002..f2d149304 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Remove `Reply-To` header from report emails for admins. ### Changed +- **Breaking:** Now pleroma requires Elixir ~> 1.8 (it was ~> 1.7) - **Breaking:** Configuration: A setting to explicitly disable the mailer was added, defaulting to true, if you are using a mailer add `config :pleroma, Pleroma.Emails.Mailer, enabled: true` to your config - **Breaking:** Configuration: `/media/` is now removed when `base_url` is configured, append `/media/` to your `base_url` config to keep the old behaviour if desired - **Breaking:** `/api/pleroma/notifications/read` is moved to `/api/v1/pleroma/notifications/read` and now supports `max_id` and responds with Mastodon API entities. diff --git a/mix.exs b/mix.exs index 230f90244..7d262a60f 100644 --- a/mix.exs +++ b/mix.exs @@ -5,7 +5,7 @@ def project do [ app: :pleroma, version: version("1.0.0"), - elixir: "~> 1.7", + elixir: "~> 1.8", elixirc_paths: elixirc_paths(Mix.env()), compilers: [:phoenix, :gettext] ++ Mix.compilers(), elixirc_options: [warnings_as_errors: true], From 35dcea3e13673b8a1a078a1f6fbc44f1e2098c22 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 13 Sep 2019 17:05:19 +0200 Subject: [PATCH 102/272] Remove [true,false] for booleans, it is implicit --- config/description.exs | 262 +++++++++++------------------------------ 1 file changed, 68 insertions(+), 194 deletions(-) diff --git a/config/description.exs b/config/description.exs index 32d36d6d6..5ae32d0f2 100644 --- a/config/description.exs +++ b/config/description.exs @@ -39,11 +39,7 @@ 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`", - suggestions: [ - true, - false - ] + "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, @@ -57,11 +53,7 @@ key: :proxy_remote, type: :boolean, description: - "If enabled, requests to media stored using a remote uploader will be proxied instead of being redirected.", - suggestions: [ - true, - false - ] + "If enabled, requests to media stored using a remote uploader will be proxied instead of being redirected." }, %{ key: :proxy_opts, @@ -190,11 +182,7 @@ %{ key: :enabled, type: :boolean, - description: "Allow/disallow send emails", - suggestions: [ - true, - false - ] + description: "Allow/disallow send emails" }, %{ group: {:subgroup, Swoosh.Adapters.SMTP}, @@ -221,8 +209,7 @@ group: {:subgroup, Swoosh.Adapters.SMTP}, key: :ssl, type: :boolean, - description: "`Swoosh.Adapters.SMTP` adapter specific setting", - suggestions: [true, false] + description: "`Swoosh.Adapters.SMTP` adapter specific setting" }, %{ group: {:subgroup, Swoosh.Adapters.SMTP}, @@ -256,8 +243,7 @@ group: {:subgroup, Swoosh.Adapters.SMTP}, key: :no_mx_lookups, type: :boolean, - description: "`Swoosh.Adapters.SMTP` adapter specific setting", - suggestions: [true, false] + description: "`Swoosh.Adapters.SMTP` adapter specific setting" }, %{ group: {:subgroup, Swoosh.Adapters.Sendgrid}, @@ -284,8 +270,7 @@ group: {:subgroup, Swoosh.Adapters.Sendmail}, key: :qmail, type: :boolean, - description: "`Swoosh.Adapters.Sendmail` adapter specific setting", - suggestions: [true, false] + description: "`Swoosh.Adapters.Sendmail` adapter specific setting" }, %{ group: {:subgroup, Swoosh.Adapters.Mandrill}, @@ -553,38 +538,22 @@ %{ key: :registrations_open, type: :boolean, - description: "Enable registrations for anyone, invitations can be enabled when false", - suggestions: [ - true, - false - ] + description: "Enable registrations for anyone, invitations can be enabled when false" }, %{ key: :invites_enabled, type: :boolean, - description: "Enable user invitations for admins (depends on registrations_open: false)", - suggestions: [ - true, - false - ] + description: "Enable user invitations for admins (depends on registrations_open: false)" }, %{ key: :account_activation_required, type: :boolean, - description: "Require users to confirm their emails before signing in", - suggestions: [ - true, - false - ] + description: "Require users to confirm their emails before signing in" }, %{ key: :federating, type: :boolean, - description: "Enable federation with other instances", - suggestions: [ - true, - false - ] + description: "Enable federation with other instances" }, %{ key: :federation_incoming_replies_max_depth, @@ -618,11 +587,7 @@ %{ key: :allow_relay, type: :boolean, - description: "Enable Pleroma's Relay, which makes it possible to follow a whole instance", - suggestions: [ - true, - false - ] + description: "Enable Pleroma's Relay, which makes it possible to follow a whole instance" }, %{ key: :rewrite_policy, @@ -638,11 +603,7 @@ type: :boolean, description: "Makes the client API in authentificated mode-only except for user-profiles." <> - " Useful for disabling the Local Timeline and The Whole Known Network", - suggestions: [ - true, - false - ] + " Useful for disabling the Local Timeline and The Whole Known Network" }, %{ key: :quarantined_instances, @@ -658,11 +619,7 @@ key: :managed_config, type: :boolean, description: - "Whenether the config for pleroma-fe is configured in this config or in static/config.json", - suggestions: [ - true, - false - ] + "Whenether the config for pleroma-fe is configured in this config or in static/config.json" }, %{ key: :static_dir, @@ -689,11 +646,7 @@ key: :mrf_transparency, type: :boolean, description: - "Make the content of your Message Rewrite Facility settings public (via nodeinfo)", - suggestions: [ - true, - false - ] + "Make the content of your Message Rewrite Facility settings public (via nodeinfo)" }, %{ key: :mrf_transparency_exclusions, @@ -709,11 +662,7 @@ type: :boolean, description: "Set to true to use extended local nicknames format (allows underscores/dashes)." <> - " This will break federation with older software for theses nicknames", - suggestions: [ - true, - false - ] + " This will break federation with older software for theses nicknames" }, %{ key: :max_pinned_statuses, @@ -741,11 +690,7 @@ key: :no_attachment_links, type: :boolean, description: - "Set to true to disable automatically adding attachment link text to statuses", - suggestions: [ - true, - false - ] + "Set to true to disable automatically adding attachment link text to statuses" }, %{ key: :welcome_message, @@ -780,20 +725,12 @@ description: "If set to true, only mentions at the beginning of a post will be used to address people in direct messages." <> " This is to prevent accidental mentioning of people when talking about them (e.g. \"@friend hey i really don't like @enemy\")." <> - " Default: false", - suggestions: [ - true, - false - ] + " Default: false" }, %{ key: :healthcheck, type: :boolean, - description: "If set to true, system data will be shown on /api/pleroma/healthcheck", - suggestions: [ - true, - false - ] + description: "If set to true, system data will be shown on /api/pleroma/healthcheck" }, %{ key: :remote_post_retention_days, @@ -823,11 +760,7 @@ %{ key: :skip_thread_containment, type: :boolean, - description: "Skip filter out broken threads. The default is true", - suggestions: [ - true, - false - ] + description: "Skip filter out broken threads. The default is true" }, %{ key: :limit_to_local_content, @@ -844,11 +777,7 @@ key: :dynamic_configuration, type: :boolean, description: - "Allow transferring configuration to DB with the subsequent customization from Admin api. Defaults to `false`", - suggestions: [ - true, - false - ] + "Allow transferring configuration to DB with the subsequent customization from Admin api. Defaults to `false`" }, %{ key: :max_account_fields, @@ -886,11 +815,7 @@ %{ key: :external_user_synchronization, type: :boolean, - description: "Enabling following/followers counters synchronization for external users", - suggestions: [ - true, - false - ] + description: "Enabling following/followers counters synchronization for external users" } ] }, @@ -1069,48 +994,40 @@ %{ key: :showInstanceSpecificPanel, type: :boolean, - description: "Whenether to show the instance's specific panel", - suggestions: [true, false] + description: "Whenether to show the instance's specific panel" }, %{ key: :scopeOptionsEnabled, type: :boolean, - description: "Enable setting an notice visibility and subject/CW when posting", - suggestions: [true, false] + description: "Enable setting an notice visibility and subject/CW when posting" }, %{ key: :formattingOptionsEnabled, type: :boolean, description: - "Enable setting a formatting different than plain-text (ie. HTML, Markdown) when posting, relates to :instance, allowed_post_formats", - suggestions: [true, false] + "Enable setting a formatting different than plain-text (ie. HTML, Markdown) when posting, relates to :instance, allowed_post_formats" }, %{ key: :collapseMessageWithSubject, type: :boolean, description: - "When a message has a subject(aka Content Warning), collapse it by default", - suggestions: [true, false] + "When a message has a subject(aka Content Warning), collapse it by default" }, %{ key: :hidePostStats, type: :boolean, - description: "Hide notices statistics(repeats, favorites, ...)", - suggestions: [true, false] + description: "Hide notices statistics(repeats, favorites, ...)" }, %{ key: :hideUserStats, type: :boolean, description: - "Hide profile statistics(posts, posts per day, followers, followings, ...)", - suggestions: [true, false] + "Hide profile statistics(posts, posts per day, followers, followings, ...)" }, %{ key: :scopeCopy, type: :boolean, - description: - "Copy the scope (private/unlisted/public) in replies to posts by default", - suggestions: [true, false] + description: "Copy the scope (private/unlisted/public) in replies to posts by default" }, %{ key: :subjectLineBehavior, @@ -1124,8 +1041,7 @@ %{ key: :alwaysShowSubjectInput, type: :boolean, - description: "When set to false, auto-hide the subject field when it's empty", - suggestions: [true, false] + description: "When set to false, auto-hide the subject field when it's empty" } ] }, @@ -1142,8 +1058,7 @@ %{ key: :showInstanceSpecificPanel, type: :boolean, - description: "Whenether to show the instance's specific panel", - suggestions: [true, false] + description: "Whenether to show the instance's specific panel" } ] } @@ -1271,14 +1186,12 @@ %{ key: :allow_followersonly, type: :boolean, - description: "whether to allow followers-only posts", - suggestions: [true, false] + description: "whether to allow followers-only posts" }, %{ key: :allow_direct, type: :boolean, - description: "whether to allow direct messages", - suggestions: [true, false] + description: "whether to allow direct messages" } ] }, @@ -1393,8 +1306,7 @@ %{ key: :enabled, type: :boolean, - description: "Enables proxying of remote media to the instance's proxy", - suggestions: [true, false] + description: "Enables proxying of remote media to the instance's proxy" }, %{ key: :base_url, @@ -1426,8 +1338,7 @@ %{ key: :enabled, type: :boolean, - description: "Enables the gopher interface", - suggestions: [true, false] + description: "Enables the gopher interface" }, %{ key: :ip, @@ -1601,8 +1512,7 @@ %{ key: :secure_cookie_flag, type: :boolean, - description: "", - suggestions: [true, false] + description: "" }, %{ key: :extra_cookie_attrs, @@ -1621,20 +1531,17 @@ %{ key: :unfollow_blocked, type: :boolean, - description: "Whether blocks result in people getting unfollowed", - suggestions: [true, false] + description: "Whether blocks result in people getting unfollowed" }, %{ key: :outgoing_blocks, type: :boolean, - description: "Whether to federate blocks to other instances", - suggestions: [true, false] + description: "Whether to federate blocks to other instances" }, %{ key: :sign_object_fetches, type: :boolean, - description: "Sign object fetches with HTTP signatures", - suggestions: [true, false] + description: "Sign object fetches with HTTP signatures" }, %{ key: :follow_handshake_timeout, @@ -1653,14 +1560,12 @@ %{ key: :enabled, type: :boolean, - description: "Whether the managed content security policy is enabled", - suggestions: [true, false] + description: "Whether the managed content security policy is enabled" }, %{ key: :sts, type: :boolean, - description: "Whether to additionally send a Strict-Transport-Security header", - suggestions: [true, false] + description: "Whether to additionally send a Strict-Transport-Security header" }, %{ key: :sts_max_age, @@ -1727,8 +1632,7 @@ %{ key: :enabled, type: :boolean, - description: "Whether the captcha should be shown on registration", - suggestions: [true, false] + description: "Whether the captcha should be shown on registration" }, %{ key: :method, @@ -1817,8 +1721,7 @@ %{ key: :verbose, type: :boolean, - description: "Logs verbose mode", - suggestions: [false, true] + description: "Logs verbose mode" }, %{ key: :prune, @@ -1937,11 +1840,7 @@ %{ key: :unfurl_nsfw, type: :boolean, - description: "If set to true nsfw attachments will be shown in previews", - suggestions: [ - true, - false - ] + description: "If set to true nsfw attachments will be shown in previews" } ] }, @@ -1955,8 +1854,7 @@ key: :enabled, type: :boolean, description: - "if enabled the instance will parse metadata from attached links to generate link previews", - suggestions: [true, false] + "if enabled the instance will parse metadata from attached links to generate link previews" }, %{ key: :ignore_hosts, @@ -1998,8 +1896,7 @@ key: :enabled, type: :boolean, description: - "if enabled, when a new user is federated with, fetch some of their latest posts", - suggestions: [true, false] + "if enabled, when a new user is federated with, fetch some of their latest posts" }, %{ key: :pages, @@ -2030,14 +1927,12 @@ %{ key: :new_window, type: :boolean, - description: "set to false to remove target='_blank' attribute", - suggestions: [true, false] + description: "set to false to remove target='_blank' attribute" }, %{ key: :scheme, type: :boolean, - description: "Set to true to link urls with schema http://google.com", - suggestions: [true, false] + description: "Set to true to link urls with schema http://google.com" }, %{ key: :truncate, @@ -2049,14 +1944,12 @@ %{ key: :strip_prefix, type: :boolean, - description: "Strip the scheme prefix", - suggestions: [true, false] + description: "Strip the scheme prefix" }, %{ key: :extra, type: :boolean, - description: "link urls with rarely used schemes (magnet, ipfs, irc, etc.)", - suggestions: [true, false] + description: "link urls with rarely used schemes (magnet, ipfs, irc, etc.)" } ] }, @@ -2083,8 +1976,7 @@ %{ key: :enabled, type: :boolean, - description: "whether scheduled activities are sent to the job queue to be executed", - suggestions: [true, false] + description: "whether scheduled activities are sent to the job queue to be executed" } ] }, @@ -2097,8 +1989,7 @@ %{ key: :enabled, type: :boolean, - description: "whether expired activities will be sent to the job queue to be deleted", - suggestions: [true, false] + description: "whether expired activities will be sent to the job queue to be deleted" } ] }, @@ -2128,8 +2019,7 @@ %{ key: :enabled, type: :boolean, - description: "enables LDAP authentication", - suggestions: [true, false] + description: "enables LDAP authentication" }, %{ key: :host, @@ -2146,8 +2036,7 @@ %{ key: :ssl, type: :boolean, - description: "true to use SSL, usually implies the port 636", - suggestions: [true, false] + description: "true to use SSL, usually implies the port 636" }, %{ key: :sslopts, @@ -2158,8 +2047,7 @@ %{ key: :tls, type: :boolean, - description: "true to start TLS, usually implies the port 389", - suggestions: [true, false] + description: "true to start TLS, usually implies the port 389" }, %{ key: :tlsopts, @@ -2237,8 +2125,7 @@ %{ key: :active, type: :boolean, - description: "globally enable or disable digest emails", - suggestions: [true, false] + description: "globally enable or disable digest emails" }, %{ key: :schedule, @@ -2346,14 +2233,12 @@ key: :issue_new_refresh_token, type: :boolean, description: - "Keeps old refresh token or generate new refresh token when to obtain an access token", - suggestions: [true, false] + "Keeps old refresh token or generate new refresh token when to obtain an access token" }, %{ key: :clean_expired_tokens, type: :boolean, - description: "Enable a background job to clean expired oauth tokens. Defaults to false", - suggestions: [true, false] + description: "Enable a background job to clean expired oauth tokens. Defaults to false" }, %{ key: :clean_expired_tokens_interval, @@ -2415,8 +2300,7 @@ %{ key: :rum_enabled, type: :boolean, - description: "If RUM indexes should be used. Defaults to false", - suggestions: [true, false] + description: "If RUM indexes should be used. Defaults to false" } ] }, @@ -2475,8 +2359,7 @@ %{ key: :enabled, type: :boolean, - description: "Enables ssh", - suggestions: [true, false] + description: "Enables ssh" }, %{ key: :priv_dir, @@ -2579,8 +2462,7 @@ %{ key: :enabled, type: :boolean, - description: "", - suggestions: [true, false] + description: "" } ] }, @@ -2593,8 +2475,7 @@ %{ key: :enabled, type: :boolean, - description: "Enables suggestions", - suggestions: [] + description: "Enables suggestions" }, %{ key: :third_party_engine, @@ -2686,8 +2567,7 @@ %{ key: :send_user_agent, type: :boolean, - description: "", - suggestions: [true, false] + description: "" }, %{ key: :adapter, @@ -2715,26 +2595,22 @@ %{ key: :allow_inline_images, type: :boolean, - description: "", - suggestions: [true, false] + description: "" }, %{ key: :allow_headings, type: :boolean, - description: "", - suggestions: [true, false] + description: "" }, %{ key: :allow_tables, type: :boolean, - description: "", - suggestions: [true, false] + description: "" }, %{ key: :allow_fonts, type: :boolean, - description: "", - suggestions: [true, false] + description: "" }, %{ key: :scrub_policy, @@ -2753,8 +2629,7 @@ %{ key: :deny_follow_blocked, type: :boolean, - description: "", - suggestions: [true, false] + description: "" } ] }, @@ -2854,8 +2729,7 @@ %{ key: :credentials, type: :boolean, - description: "", - suggestions: [true, false] + description: "" }, %{ key: :headers, From 7f211a48e0c443cbff90f028c5c92c496f66c62e Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 17 Sep 2019 21:43:27 +0200 Subject: [PATCH 103/272] docs/markdown.ex: child header as "- key (type): description" --- lib/pleroma/docs/markdown.ex | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index 8386dc2fb..58a42b323 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -44,6 +44,13 @@ def process(descriptions) do {:ok, config_path} end + defp print_child_header(file, child) do + IO.write( + file, + "- `#{inspect(child[:key])}` (`#{inspect(child[:type])}`): #{child[:description]}\n" + ) + end + defp print_suggestion(file, suggestion) when is_list(suggestion) do IO.write(file, " `#{inspect(suggestion)}`\n") end @@ -70,9 +77,4 @@ defp print_suggestions(file, suggestions) do print_suggestion(file, List.first(suggestions)) end end - - defp print_child_header(file, child) do - IO.write(file, "- `#{inspect(child[:key])}` -`#{inspect(child[:type])}` \n") - IO.write(file, "#{child[:description]} \n") - end end From e686f9be818ebddfba1aedcd9ae328d26147dca8 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Tue, 17 Sep 2019 20:04:57 +0000 Subject: [PATCH 104/272] Apply suggestion to CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2d149304..58618b7f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Remove `Reply-To` header from report emails for admins. ### Changed -- **Breaking:** Now pleroma requires Elixir ~> 1.8 (it was ~> 1.7) +- **Breaking:** Elixir >=1.8 is now required (was >= 1.7) - **Breaking:** Configuration: A setting to explicitly disable the mailer was added, defaulting to true, if you are using a mailer add `config :pleroma, Pleroma.Emails.Mailer, enabled: true` to your config - **Breaking:** Configuration: `/media/` is now removed when `base_url` is configured, append `/media/` to your `base_url` config to keep the old behaviour if desired - **Breaking:** `/api/pleroma/notifications/read` is moved to `/api/v1/pleroma/notifications/read` and now supports `max_id` and responds with Mastodon API entities. From f9dd121ad3f7e1de465f81c7a5fe4e4173d88e28 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Tue, 17 Sep 2019 23:09:08 +0300 Subject: [PATCH 105/272] Admin API: Return link alongside with token on password reset --- CHANGELOG.md | 1 + lib/pleroma/web/admin_api/admin_api_controller.ex | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4eb72c002..0f4a171c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). – Pagination: (optional) return `total` alongside with `items` when paginating - Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings) - Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler +- Admin API: Return link alongside with token on password reset ### Fixed - Following from Osada diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 544b9d7d8..03a73053b 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -432,9 +432,14 @@ def revoke_invite(conn, %{"token" => token}) do def get_password_reset(conn, %{"nickname" => nickname}) do (%User{local: true} = user) = User.get_cached_by_nickname(nickname) {:ok, token} = Pleroma.PasswordResetToken.create_token(user) + host = Pleroma.Config.get([Pleroma.Web.Endpoint, :url, :host]) + protocol = Pleroma.Config.get([Pleroma.Web.Endpoint, :protocol]) conn - |> json(token.token) + |> json(%{ + token: token.token, + link: "#{protocol}://#{host}/api/pleroma/password_reset/#{token}" + }) end def list_reports(conn, params) do From bf8567996c6149e5a7857ccf74697184adb42be9 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 17 Sep 2019 23:48:26 +0300 Subject: [PATCH 106/272] Sync develop changelog with master and create a new section for post-1.1 changes --- CHANGELOG.md | 92 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 62 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4426e3f70..1f0d55e9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,24 +4,25 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] +### Changed +- **Breaking:** Elixir >=1.8 is now required (was >= 1.7) +- Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings) +- Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler +- Admin API: Return `total` when querying for reports + +## [1.1.0] - 2019-??-?? ### Security -- OStatus: eliminate the possibility of a protocol downgrade attack. -- OStatus: prevent following locked accounts, bypassing the approval process. - Mastodon API: respect post privacy in `/api/v1/statuses/:id/{favourited,reblogged}_by` ### Removed - **Breaking:** GNU Social API with Qvitter extensions support -- **Breaking:** ActivityPub: The `accept_blocks` configuration setting. - Emoji: Remove longfox emojis. - Remove `Reply-To` header from report emails for admins. ### Changed -- **Breaking:** Elixir >=1.8 is now required (was >= 1.7) - **Breaking:** Configuration: A setting to explicitly disable the mailer was added, defaulting to true, if you are using a mailer add `config :pleroma, Pleroma.Emails.Mailer, enabled: true` to your config - **Breaking:** Configuration: `/media/` is now removed when `base_url` is configured, append `/media/` to your `base_url` config to keep the old behaviour if desired - **Breaking:** `/api/pleroma/notifications/read` is moved to `/api/v1/pleroma/notifications/read` and now supports `max_id` and responds with Mastodon API entities. -- Configuration: OpenGraph and TwitterCard providers enabled by default -- Configuration: Filter.AnonymizeFilename added ability to retain file extension with custom text - Configuration: added `config/description.exs`, from which `docs/config.md` is generated - Federation: Return 403 errors when trying to request pages from a user's follower/following collections if they have `hide_followers`/`hide_follows` set - NodeInfo: Return `skipThreadContainment` in `metadata` for the `skip_thread_containment` option @@ -31,24 +32,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - AdminAPI: Add "godmode" while fetching user statuses (i.e. admin can see private statuses) - Improve digest email template – Pagination: (optional) return `total` alongside with `items` when paginating -- Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings) -- Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler -- Admin API: Return `total` when querying for reports ### Fixed - Following from Osada -- Not being able to pin unlisted posts -- Objects being re-embedded to activities after being updated (e.g faved/reposted). Running 'mix pleroma.database prune_objects' again is advised. - Favorites timeline doing database-intensive queries - Metadata rendering errors resulting in the entire page being inaccessible - `federation_incoming_replies_max_depth` option being ignored in certain cases -- Federation/MediaProxy not working with instances that have wrong certificate order - Mastodon API: Handling of search timeouts (`/api/v1/search` and `/api/v2/search`) - Mastodon API: Misskey's endless polls being unable to render - Mastodon API: Embedded relationships not being properly rendered in the Account entity of Status entity - Mastodon API: Notifications endpoint crashing if one notification failed to render -- Mastodon API: follower/following counters not being nullified, when `hide_follows`/`hide_followers` is set -- Mastodon API: `muted` in the Status entity, using author's account to determine if the tread was muted - Mastodon API: Add `account_id`, `type`, `offset`, and `limit` to search API (`/api/v1/search` and `/api/v2/search`) - Mastodon API, streaming: Fix filtering of notifications based on blocks/mutes/thread mutes - ActivityPub C2S: follower/following collection pages being inaccessible even when authentifucated if `hide_followers`/ `hide_follows` was set @@ -56,15 +49,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Rich Media: Parser failing when no TTL can be found by image TTL setters - Rich Media: The crawled URL is now spliced into the rich media data. - ActivityPub S2S: sharedInbox usage has been mostly aligned with the rules in the AP specification. -- ActivityPub S2S: remote user deletions now work the same as local user deletions. -- ActivityPub S2S: POST requests are now signed with `(request-target)` pseudo-header. -- Not being able to access the Mastodon FE login page on private instances -- Invalid SemVer version generation, when the current branch does not have commits ahead of tag/checked out on a tag - Pleroma.Upload base_url was not automatically whitelisted by MediaProxy. Now your custom CDN or file hosting will be accessed directly as expected. - Report email not being sent to admins when the reporter is a remote user -- MRF: ensure that subdomain_match calls are case-insensitive - Reverse Proxy limiting `max_body_length` was incorrectly defined and only checked `Content-Length` headers which may not be sufficient in some circumstances -- MRF: fix use of unserializable keyword lists in describe() implementations - ActivityPub: Deactivated user deletion - ActivityPub: Fix `/users/:nickname/inbox` crashing without an authenticated user - MRF: fix ability to follow a relay when AntiFollowbotPolicy was enabled @@ -75,16 +62,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: all status JSON responses contain a `pleroma.expires_at` item which states when an activity will expire. The value is only shown to the user who created the activity. To everyone else it's empty. - Configuration: `ActivityExpiration.enabled` controls whether expired activites will get deleted at the appropriate time. Enabled by default. - Conversations: Add Pleroma-specific conversation endpoints and status posting extensions. Run the `bump_all_conversations` task again to create the necessary data. -- **Breaking:** MRF describe API, which adds support for exposing configuration information about MRF policies to NodeInfo. - Custom modules will need to be updated by adding, at the very least, `def describe, do: {:ok, %{}}` to the MRF policy modules. - MRF: Support for priming the mediaproxy cache (`Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy`) - MRF: Support for excluding specific domains from Transparency. - MRF: Support for filtering posts based on who they mention (`Pleroma.Web.ActivityPub.MRF.MentionPolicy`) -- MRF: Support for filtering posts based on ActivityStreams vocabulary (`Pleroma.Web.ActivityPub.MRF.VocabularyPolicy`) -- MRF (Simple Policy): Support for wildcard domains. -- Support for wildcard domains in user domain blocks setting. -- Configuration: `quarantined_instances` support wildcard domains. -- Configuration: `federation_incoming_replies_max_depth` option - Mastodon API: Support for the [`tagged` filter](https://github.com/tootsuite/mastodon/pull/9755) in [`GET /api/v1/accounts/:id/statuses`](https://docs.joinmastodon.org/api/rest/accounts/#get-api-v1-accounts-id-statuses) - Mastodon API, streaming: Add support for passing the token in the `Sec-WebSocket-Protocol` header - Mastodon API, extension: Ability to reset avatar, profile banner, and background @@ -112,9 +92,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Admin API: Endpoint for fetching latest user's statuses - Pleroma API: Add `/api/v1/pleroma/accounts/confirmation_resend?email=` for resending account confirmation. - Pleroma API: Email change endpoint. -- Relays: Added a task to list relay subscriptions. -- Mix Tasks: `mix pleroma.database fix_likes_collections` -- Federation: Remove `likes` from objects. - Admin API: Added moderation log - Web response cache (currently, enabled for ActivityPub) - Mastodon API: Added an endpoint to get multiple statuses by IDs (`GET /api/v1/statuses/?ids[]=1&ids[]=2`) @@ -125,6 +102,61 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - RichMedia: parsers and their order are configured in `rich_media` config. - RichMedia: add the rich media ttl based on image expiration time. +## [1.0.6] - 2019-08-14 +### Fixed +- MRF: fix use of unserializable keyword lists in describe() implementations +- ActivityPub S2S: POST requests are now signed with `(request-target)` pseudo-header. + +## [1.0.5] - 2019-08-13 +### Fixed +- Mastodon API: follower/following counters not being nullified, when `hide_follows`/`hide_followers` is set +- Mastodon API: `muted` in the Status entity, using author's account to determine if the thread was muted +- Mastodon API: return the actual profile URL in the Account entity's `url` property when appropriate +- Templates: properly style anchor tags +- Objects being re-embedded to activities after being updated (e.g faved/reposted). Running 'mix pleroma.database prune_objects' again is advised. +- Not being able to access the Mastodon FE login page on private instances +- MRF: ensure that subdomain_match calls are case-insensitive +- Fix internal server error when using the healthcheck API. + +### Added +- **Breaking:** MRF describe API, which adds support for exposing configuration information about MRF policies to NodeInfo. + Custom modules will need to be updated by adding, at the very least, `def describe, do: {:ok, %{}}` to the MRF policy modules. +- Relays: Added a task to list relay subscriptions. +- MRF: Support for filtering posts based on ActivityStreams vocabulary (`Pleroma.Web.ActivityPub.MRF.VocabularyPolicy`) +- MRF (Simple Policy): Support for wildcard domains. +- Support for wildcard domains in user domain blocks setting. +- Configuration: `quarantined_instances` support wildcard domains. +- Mix Tasks: `mix pleroma.database fix_likes_collections` +- Configuration: `federation_incoming_replies_max_depth` option + +### Removed +- Federation: Remove `likes` from objects. +- ActivityPub: The `accept_blocks` configuration setting. + +## [1.0.4] - 2019-08-01 +### Fixed +- Invalid SemVer version generation, when the current branch does not have commits ahead of tag/checked out on a tag + +## [1.0.3] - 2019-07-31 +### Security +- OStatus: eliminate the possibility of a protocol downgrade attack. +- OStatus: prevent following locked accounts, bypassing the approval process. +- TwitterAPI: use CommonAPI to handle remote follows instead of OStatus. + +## [1.0.2] - 2019-07-28 +### Fixed +- Not being able to pin unlisted posts +- Mastodon API: represent poll IDs as strings +- MediaProxy: fix matching filenames +- MediaProxy: fix filename encoding +- Migrations: fix a sporadic migration failure +- Metadata rendering errors resulting in the entire page being inaccessible +- Federation/MediaProxy not working with instances that have wrong certificate order +- ActivityPub S2S: remote user deletions now work the same as local user deletions. + +### Changed +- Configuration: OpenGraph and TwitterCard providers enabled by default +- Configuration: Filter.AnonymizeFilename added ability to retain file extension with custom text ## [1.0.1] - 2019-07-14 ### Security From 50ec445b2c1e45b0d3b3a2016650f3262ed00e75 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 17 Sep 2019 21:57:13 +0200 Subject: [PATCH 107/272] description.exs: remove empty strings and arrays --- config/description.exs | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/config/description.exs b/config/description.exs index 5ae32d0f2..959d839bc 100644 --- a/config/description.exs +++ b/config/description.exs @@ -109,8 +109,7 @@ type: :string, description: "If you use S3 compatible service such as Digital Ocean Spaces or CDN, set folder name or \"\" etc." <> - " For example, when using CDN to S3 virtual host format, set \"\". At this time, write CNAME to CDN in public_endpoint.", - suggestions: [""] + " For example, when using CDN to S3 virtual host format, set \"\". At this time, write CNAME to CDN in public_endpoint." } ] }, @@ -360,22 +359,19 @@ group: {:subgroup, Swoosh.Adapters.SocketLabs}, key: :server_id, type: :string, - description: "`Swoosh.Adapters.SocketLabs` adapter specific setting", - suggestions: [""] + description: "`Swoosh.Adapters.SocketLabs` adapter specific setting" }, %{ group: {:subgroup, Swoosh.Adapters.SocketLabs}, key: :api_key, type: :string, - description: "`Swoosh.Adapters.SocketLabs` adapter specific setting", - suggestions: [""] + description: "`Swoosh.Adapters.SocketLabs` adapter specific setting" }, %{ group: {:subgroup, Swoosh.Adapters.Gmail}, key: :access_token, type: :string, - description: "`Swoosh.Adapters.Gmail` adapter specific setting", - suggestions: [""] + description: "`Swoosh.Adapters.Gmail` adapter specific setting" } ] }, @@ -1682,8 +1678,7 @@ group: :pleroma_job_queue, key: :queues, type: :group, - description: "[Deprecated] Replaced with `Oban`/`:queues` (keeping the same format)", - children: [] + description: "[Deprecated] Replaced with `Oban`/`:queues` (keeping the same format)" }, %{ group: :pleroma, @@ -1694,8 +1689,7 @@ %{ key: :max_retries, type: :integer, - description: "[Deprecated] Replaced as `Oban`/`:queues`/`:outgoing_federation` value", - suggestions: [] + description: "[Deprecated] Replaced as `Oban`/`:queues`/`:outgoing_federation` value" } ] }, @@ -2041,8 +2035,7 @@ %{ key: :sslopts, type: :keyword, - description: "additional SSL options", - suggestions: [] + description: "additional SSL options" }, %{ key: :tls, @@ -2052,8 +2045,7 @@ %{ key: :tlsopts, type: :keyword, - description: "additional TLS options", - suggestions: [] + description: "additional TLS options" }, %{ key: :base, From e0d8c8897e46d20039b4c0a383bca0192c5eb2ec Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 17 Sep 2019 22:00:02 +0200 Subject: [PATCH 108/272] docs/markdown.ex: do no print empty suggestions --- lib/pleroma/docs/markdown.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index 58a42b323..d7ca97957 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -66,6 +66,8 @@ defp print_suggestion(file, suggestion, as_list \\ false) do defp print_suggestions(_file, nil), do: nil + defp print_suggestions(_file, ""), do: nil + defp print_suggestions(file, suggestions) do IO.write(file, "Suggestions:\n") From 106afaed58da3a25d1c4593e13192ad2145643e4 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 17 Sep 2019 22:04:21 +0200 Subject: [PATCH 109/272] markdown.ex: do not fail if there is no children --- lib/pleroma/docs/markdown.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index d7ca97957..20bd1c896 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -23,7 +23,7 @@ def process(descriptions) do IO.write(file, "#{group[:description]}\n") - for child <- group[:children] do + for child <- group[:children] || [] do print_child_header(file, child) print_suggestions(file, child[:suggestions]) From c0c56282007aff88a923bba4769af894cb6235af Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 17 Sep 2019 22:14:56 +0200 Subject: [PATCH 110/272] description.exs: remove empty strings on descriptions --- config/description.exs | 76 +++++------------------------------- lib/pleroma/docs/markdown.ex | 8 +++- 2 files changed, 15 insertions(+), 69 deletions(-) diff --git a/config/description.exs b/config/description.exs index 959d839bc..821b76972 100644 --- a/config/description.exs +++ b/config/description.exs @@ -857,7 +857,6 @@ %{ key: :metadata, type: {:list, :atom}, - description: "", suggestions: [[:request_id]] } ] @@ -883,7 +882,6 @@ %{ key: :metadata, type: {:list, :atom}, - description: "", suggestions: [[:request_id]] } ] @@ -1177,7 +1175,6 @@ group: :pleroma, key: :mrf_rejectnonpublic, type: :group, - description: "", children: [ %{ key: :allow_followersonly, @@ -1444,43 +1441,36 @@ %{ key: :instrumenters, type: {:list, :module}, - description: "", suggestions: [Pleroma.Web.Endpoint.Instrumenter] }, %{ key: :protocol, type: :string, - description: "", suggestions: ["https"] }, %{ key: :secret_key_base, type: :string, - description: "", suggestions: ["aK4Abxf29xU9TTDKre9coZPUgevcVCFQJe/5xP/7Lt4BEif6idBIbjupVbOrbKxl"] }, %{ key: :signing_salt, type: :string, - description: "", suggestions: ["CqaoopA2"] }, %{ key: :render_errors, type: :keyword, - description: "", suggestions: [[view: Pleroma.Web.ErrorView, accepts: ~w(json)]], children: [ %{ key: :view, type: :module, - description: "", suggestions: [Pleroma.Web.ErrorView] }, %{ key: :accepts, type: {:list, :string}, - description: "", suggestions: ["json"] } ] @@ -1488,32 +1478,27 @@ %{ key: :pubsub, type: :keyword, - description: "", suggestions: [[name: Pleroma.PubSub, adapter: Phoenix.PubSub.PG2]], children: [ %{ key: :name, type: :module, - description: "", suggestions: [Pleroma.PubSub] }, %{ key: :adapter, type: :module, - description: "", suggestions: [Phoenix.PubSub.PG2] } ] }, %{ key: :secure_cookie_flag, - type: :boolean, - description: "" + type: :boolean }, %{ key: :extra_cookie_attrs, type: {:list, :string}, - description: "", suggestions: ["SameSite=Lax"] } ] @@ -1842,7 +1827,6 @@ group: :pleroma, key: :rich_media, type: :group, - description: "", children: [ %{ key: :enabled, @@ -1995,7 +1979,6 @@ %{ key: Pleroma.Web.Auth.Authenticator, type: :module, - description: "", suggestions: [Pleroma.Web.Auth.PleromaAuthenticator, Pleroma.Web.Auth.LDAPAuthenticator] } ] @@ -2172,37 +2155,31 @@ %{ key: :link_color, type: :string, - description: "", suggestions: ["#d8a070"] }, %{ key: :background_color, type: :string, - description: "", suggestions: ["#2C3645"] }, %{ key: :content_background_color, type: :string, - description: "", suggestions: ["#1B2635"] }, %{ key: :header_color, type: :string, - description: "", suggestions: ["#d8a070"] }, %{ key: :text_color, type: :string, - description: "", suggestions: ["#b9b9ba"] }, %{ key: :text_muted_color, type: :string, - description: "", suggestions: ["#b9b9ba"] } ] @@ -2245,7 +2222,6 @@ group: :pleroma, key: :emoji, type: :group, - description: "", children: [ %{ key: :shortcode_globs, @@ -2387,7 +2363,6 @@ %{ key: :types, type: :map, - description: "", suggestions: [ %{ "application/xml" => ["xml"], @@ -2401,31 +2376,26 @@ %{ key: "application/xml", type: {:list, :string}, - description: "", suggestions: [["xml"]] }, %{ key: "application/xrd+xml", type: {:list, :string}, - description: "", suggestions: [["xrd+xml"]] }, %{ key: "application/jrd+json", type: {:list, :string}, - description: "", suggestions: [["jrd+json"]] }, %{ key: "application/activity+json", type: {:list, :string}, - description: "", suggestions: [["activity+json"]] }, %{ key: "application/ld+json", type: {:list, :string}, - description: "", suggestions: [["activity+json"]] } ] @@ -2453,8 +2423,7 @@ children: [ %{ key: :enabled, - type: :boolean, - description: "" + type: :boolean } ] }, @@ -2462,7 +2431,6 @@ group: :pleroma, key: :suggestions, type: :group, - description: "", children: [ %{ key: :enabled, @@ -2492,7 +2460,6 @@ %{ key: :web, type: :string, - description: "", suggestions: ["https://vinayaka.distsn.org"] } ] @@ -2519,7 +2486,6 @@ %{ key: :adapter, type: :module, - description: "", suggestions: [Pleroma.Signature] } ] @@ -2528,18 +2494,15 @@ group: :pleroma, key: Pleroma.Uploaders.MDII, type: :group, - description: "", children: [ %{ key: :cgi, type: :string, - description: "", suggestions: ["https://mdii.sakura.ne.jp/mdii-post.cgi"] }, %{ key: :files, type: :string, - description: "", suggestions: ["https://mdii.sakura.ne.jp"] } ] @@ -2553,18 +2516,15 @@ %{ key: :proxy_url, type: [:string, :atom, nil], - description: "", suggestions: ["localhost:9020", {:socks5, :localhost, 3090}, nil] }, %{ key: :send_user_agent, - type: :boolean, - description: "" + type: :boolean }, %{ key: :adapter, type: :keyword, - description: "", suggestions: [ [ ssl_options: [ @@ -2582,32 +2542,26 @@ group: :pleroma, key: :markup, type: :group, - description: "", children: [ %{ key: :allow_inline_images, - type: :boolean, - description: "" + type: :boolean }, %{ key: :allow_headings, - type: :boolean, - description: "" + type: :boolean }, %{ key: :allow_tables, - type: :boolean, - description: "" + type: :boolean }, %{ key: :allow_fonts, - type: :boolean, - description: "" + type: :boolean }, %{ key: :scrub_policy, type: {:list, :module}, - description: "", suggestions: [[Pleroma.HTML.Transform.MediaProxy, Pleroma.HTML.Scrubber.Default]] } ] @@ -2616,12 +2570,10 @@ group: :pleroma, key: :user, type: :group, - description: "", children: [ %{ key: :deny_follow_blocked, - type: :boolean, - description: "" + type: :boolean } ] }, @@ -2629,12 +2581,10 @@ group: :pleroma, key: :mrf_normalize_markup, type: :group, - description: "", children: [ %{ key: :scrub_policy, type: :module, - description: "", suggestions: [Pleroma.HTML.Scrubber.Default] } ] @@ -2643,12 +2593,10 @@ group: :pleroma, key: Pleroma.User, type: :group, - description: "", children: [ %{ key: :restricted_nicknames, type: {:list, :string}, - description: "", suggestions: [ [ ".well-known", @@ -2689,24 +2637,20 @@ %{ group: :cors_plug, type: :group, - description: "", children: [ %{ key: :max_age, type: :integer, - description: "", suggestions: [86_400] }, %{ key: :methods, type: {:list, :string}, - description: "", suggestions: [["POST", "PUT", "DELETE", "GET", "PATCH", "OPTIONS"]] }, %{ key: :expose, type: :string, - description: "", suggestions: [ [ "Link", @@ -2720,13 +2664,11 @@ }, %{ key: :credentials, - type: :boolean, - description: "" + type: :boolean }, %{ key: :headers, type: {:list, :string}, - description: "", suggestions: [["Authorization", "Content-Type", "Idempotency-Key"]] } ] diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index 20bd1c896..739e4fce3 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -44,13 +44,17 @@ def process(descriptions) do {:ok, config_path} end - defp print_child_header(file, child) do + defp print_child_header(file, %{key: key, type: type, description: description} = _child) do IO.write( file, - "- `#{inspect(child[:key])}` (`#{inspect(child[:type])}`): #{child[:description]}\n" + "- `#{inspect(key)}` (`#{inspect(type)}`): #{description}\n" ) end + defp print_child_header(file, %{key: key, type: type} = _child) do + IO.write(file, "- `#{inspect(key)}` (`#{inspect(type)}`)\n") + end + defp print_suggestion(file, suggestion) when is_list(suggestion) do IO.write(file, " `#{inspect(suggestion)}`\n") end From 32d64102cb2f8cf3b0f825f2ac0770563cfb457f Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 17 Sep 2019 22:19:30 +0200 Subject: [PATCH 111/272] description.exs: uncomment type for email logo --- config/description.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/description.exs b/config/description.exs index 821b76972..65ea6bf01 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2133,7 +2133,7 @@ children: [ %{ key: :logo, - # type: [:string, nil], + type: [:string, nil], description: "a path to a custom logo. Set it to nil to use the default Pleroma logo", suggestions: ["some/path/logo.png", nil] }, From d6182a3c8fef6377c20bb827a8e86bdac5bfb125 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 17 Sep 2019 22:22:54 +0200 Subject: [PATCH 112/272] markdown.ex: Make suggestion(s) plural only if on >1 --- lib/pleroma/docs/markdown.ex | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index 739e4fce3..fc6389064 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -73,13 +73,15 @@ defp print_suggestions(_file, nil), do: nil defp print_suggestions(_file, ""), do: nil defp print_suggestions(file, suggestions) do - IO.write(file, "Suggestions:\n") - if length(suggestions) > 1 do + IO.write(file, "Suggestions:\n") + for suggestion <- suggestions do print_suggestion(file, suggestion, true) end else + IO.write(file, "Suggestion:\n") + print_suggestion(file, List.first(suggestions)) end end From d2097fd0f5d5d6750de09243cb5720b161305790 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 17 Sep 2019 22:33:32 +0200 Subject: [PATCH 113/272] markdown.ex: \n\n on >1 suggestions, 2-spaces on one --- lib/pleroma/docs/markdown.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index fc6389064..280fe0309 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -74,13 +74,13 @@ defp print_suggestions(_file, ""), do: nil defp print_suggestions(file, suggestions) do if length(suggestions) > 1 do - IO.write(file, "Suggestions:\n") + IO.write(file, "\n\nSuggestions:\n") for suggestion <- suggestions do print_suggestion(file, suggestion, true) end else - IO.write(file, "Suggestion:\n") + IO.write(file, " Suggestion: ") print_suggestion(file, List.first(suggestions)) end From 4785596a2cf638570b35afc91babbb0ac8309981 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 17 Sep 2019 22:55:29 +0200 Subject: [PATCH 114/272] markdown.ex: end suggestions list with a newline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Otherwise we end up with suggestion on the same level as the childs Markdown is a fuck… --- lib/pleroma/docs/markdown.ex | 2 ++ mix.exs | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index 280fe0309..27be1b095 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -79,6 +79,8 @@ defp print_suggestions(file, suggestions) do for suggestion <- suggestions do print_suggestion(file, suggestion, true) end + + IO.write(file, "\n") else IO.write(file, " Suggestion: ") diff --git a/mix.exs b/mix.exs index 58d1606d3..e4fe5adf4 100644 --- a/mix.exs +++ b/mix.exs @@ -174,7 +174,8 @@ defp aliases do "ecto.rollback": ["pleroma.ecto.rollback"], "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"], "ecto.reset": ["ecto.drop", "ecto.setup"], - test: ["ecto.create --quiet", "ecto.migrate", "test"] + test: ["ecto.create --quiet", "ecto.migrate", "test"], + docs: ["pleroma.docs", "docs"] ] end From e501c822c98edb675b71b25d165fdf8df8447c27 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 17 Sep 2019 23:02:24 +0200 Subject: [PATCH 115/272] markdown.ex: put two-spaces before the description-newline --- lib/pleroma/docs/markdown.ex | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index 27be1b095..68b106499 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -47,12 +47,12 @@ def process(descriptions) do defp print_child_header(file, %{key: key, type: type, description: description} = _child) do IO.write( file, - "- `#{inspect(key)}` (`#{inspect(type)}`): #{description}\n" + "- `#{inspect(key)}` (`#{inspect(type)}`): #{description} \n" ) end defp print_child_header(file, %{key: key, type: type} = _child) do - IO.write(file, "- `#{inspect(key)}` (`#{inspect(type)}`)\n") + IO.write(file, "- `#{inspect(key)}` (`#{inspect(type)}`) \n") end defp print_suggestion(file, suggestion) when is_list(suggestion) do @@ -74,13 +74,11 @@ defp print_suggestions(_file, ""), do: nil defp print_suggestions(file, suggestions) do if length(suggestions) > 1 do - IO.write(file, "\n\nSuggestions:\n") + IO.write(file, "Suggestions:\n") for suggestion <- suggestions do print_suggestion(file, suggestion, true) end - - IO.write(file, "\n") else IO.write(file, " Suggestion: ") From ea6d4137dac60ae23e15ab29901a84d8468baf3e Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 17 Sep 2019 21:24:21 +0000 Subject: [PATCH 116/272] Apply suggestion to CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f0d55e9b..f3f38b817 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -131,7 +131,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Removed - Federation: Remove `likes` from objects. -- ActivityPub: The `accept_blocks` configuration setting. +- **Breaking:** ActivityPub: The `accept_blocks` configuration setting. ## [1.0.4] - 2019-08-01 ### Fixed From 4faf2b1555f004664005e0efddb9815ebca4c5c7 Mon Sep 17 00:00:00 2001 From: Alex S Date: Fri, 6 Sep 2019 17:14:31 +0300 Subject: [PATCH 117/272] post for creating invite tokens in admin api --- CHANGELOG.md | 4 ++ docs/api/admin_api.md | 16 ++++++- .../web/admin_api/admin_api_controller.ex | 18 ++++++-- lib/pleroma/web/router.ex | 2 +- .../admin_api/admin_api_controller_test.exs | 46 +++++++------------ 5 files changed, 49 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3f38b817..a8342b16c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** Configuration: A setting to explicitly disable the mailer was added, defaulting to true, if you are using a mailer add `config :pleroma, Pleroma.Emails.Mailer, enabled: true` to your config - **Breaking:** Configuration: `/media/` is now removed when `base_url` is configured, append `/media/` to your `base_url` config to keep the old behaviour if desired - **Breaking:** `/api/pleroma/notifications/read` is moved to `/api/v1/pleroma/notifications/read` and now supports `max_id` and responds with Mastodon API entities. +- **Breaking:** `/api/pleroma/admin/users/invite_token` now uses `POST`, changed accepted params and returns full invite in json instead of only token string. - Configuration: added `config/description.exs`, from which `docs/config.md` is generated +- Configuration: OpenGraph and TwitterCard providers enabled by default +- Configuration: Filter.AnonymizeFilename added ability to retain file extension with custom text +- Mastodon API: `pleroma.thread_muted` key in the Status entity - Federation: Return 403 errors when trying to request pages from a user's follower/following collections if they have `hide_followers`/`hide_follows` set - NodeInfo: Return `skipThreadContainment` in `metadata` for the `skip_thread_containment` option - NodeInfo: Return `mailerEnabled` in `metadata` diff --git a/docs/api/admin_api.md b/docs/api/admin_api.md index 9362e3d78..a8c75d93f 100644 --- a/docs/api/admin_api.md +++ b/docs/api/admin_api.md @@ -226,13 +226,25 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret ### Get an account registration invite token -- Methods: `GET` +- Methods: `POST` - Params: - *optional* `invite` => [ - *optional* `max_use` (integer) - *optional* `expires_at` (date string e.g. "2019-04-07") ] -- Response: invite token (base64 string) +- Response: + +```json +{ + "id": integer, + "token": string, + "used": boolean, + "expires_at": date, + "uses": integer, + "max_use": integer, + "invite_type": string (possible values: `one_time`, `reusable`, `date_limited`, `reusable_date_limited`) +} +``` ## `/api/pleroma/admin/users/invites` diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 2a1cc59e5..41ded7343 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -402,11 +402,21 @@ def email_invite(%{assigns: %{user: user}} = conn, %{"email" => email} = params) @doc "Get a account registeration invite token (base64 string)" def get_invite_token(conn, params) do - options = params["invite"] || %{} - {:ok, invite} = UserInviteToken.create_invite(options) + opts = %{} - conn - |> json(invite.token) + opts = + if params["max_use"], + do: Map.put(opts, :max_use, params["max_use"]), + else: opts + + opts = + if params["expires_at"], + do: Map.put(opts, :expires_at, params["expires_at"]), + else: opts + + {:ok, invite} = UserInviteToken.create_invite(opts) + + json(conn, AccountView.render("invite.json", %{invite: invite})) end @doc "Get list of created invites" diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 401133bf3..5779d27d2 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -180,7 +180,7 @@ defmodule Pleroma.Web.Router do post("/relay", AdminAPIController, :relay_follow) delete("/relay", AdminAPIController, :relay_unfollow) - get("/users/invite_token", AdminAPIController, :get_invite_token) + post("/users/invite_token", AdminAPIController, :get_invite_token) get("/users/invites", AdminAPIController, :invites) post("/users/revoke_invite", AdminAPIController, :revoke_invite) post("/users/email_invite", AdminAPIController, :email_invite) diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index c497ea098..5f36d42e4 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -574,18 +574,6 @@ test "it returns 500 if `registrations_open` is enabled", %{conn: conn, user: us end end - test "/api/pleroma/admin/users/invite_token" do - admin = insert(:user, info: %{is_admin: true}) - - conn = - build_conn() - |> assign(:user, admin) - |> put_req_header("accept", "application/json") - |> get("/api/pleroma/admin/users/invite_token") - - assert conn.status == 200 - end - test "/api/pleroma/admin/users/:nickname/password_reset" do admin = insert(:user, info: %{is_admin: true}) user = insert(:user) @@ -1064,7 +1052,7 @@ test "PATCH /api/pleroma/admin/users/:nickname/toggle_activation" do "@#{admin.nickname} deactivated user @#{user.nickname}" end - describe "GET /api/pleroma/admin/users/invite_token" do + describe "POST /api/pleroma/admin/users/invite_token" do setup do admin = insert(:user, info: %{is_admin: true}) @@ -1076,10 +1064,10 @@ test "PATCH /api/pleroma/admin/users/:nickname/toggle_activation" do end test "without options", %{conn: conn} do - conn = get(conn, "/api/pleroma/admin/users/invite_token") + conn = post(conn, "/api/pleroma/admin/users/invite_token") - token = json_response(conn, 200) - invite = UserInviteToken.find_by_token!(token) + invite_json = json_response(conn, 200) + invite = UserInviteToken.find_by_token!(invite_json["token"]) refute invite.used refute invite.expires_at refute invite.max_use @@ -1088,12 +1076,12 @@ test "without options", %{conn: conn} do test "with expires_at", %{conn: conn} do conn = - get(conn, "/api/pleroma/admin/users/invite_token", %{ - "invite" => %{"expires_at" => Date.to_string(Date.utc_today())} + post(conn, "/api/pleroma/admin/users/invite_token", %{ + "expires_at" => Date.to_string(Date.utc_today()) }) - token = json_response(conn, 200) - invite = UserInviteToken.find_by_token!(token) + invite_json = json_response(conn, 200) + invite = UserInviteToken.find_by_token!(invite_json["token"]) refute invite.used assert invite.expires_at == Date.utc_today() @@ -1102,13 +1090,10 @@ test "with expires_at", %{conn: conn} do end test "with max_use", %{conn: conn} do - conn = - get(conn, "/api/pleroma/admin/users/invite_token", %{ - "invite" => %{"max_use" => 150} - }) + conn = post(conn, "/api/pleroma/admin/users/invite_token", %{"max_use" => 150}) - token = json_response(conn, 200) - invite = UserInviteToken.find_by_token!(token) + invite_json = json_response(conn, 200) + invite = UserInviteToken.find_by_token!(invite_json["token"]) refute invite.used refute invite.expires_at assert invite.max_use == 150 @@ -1117,12 +1102,13 @@ test "with max_use", %{conn: conn} do test "with max use and expires_at", %{conn: conn} do conn = - get(conn, "/api/pleroma/admin/users/invite_token", %{ - "invite" => %{"max_use" => 150, "expires_at" => Date.to_string(Date.utc_today())} + post(conn, "/api/pleroma/admin/users/invite_token", %{ + "max_use" => 150, + "expires_at" => Date.to_string(Date.utc_today()) }) - token = json_response(conn, 200) - invite = UserInviteToken.find_by_token!(token) + invite_json = json_response(conn, 200) + invite = UserInviteToken.find_by_token!(invite_json["token"]) refute invite.used assert invite.expires_at == Date.utc_today() assert invite.max_use == 150 From 2263c8b6b9260bee7dedeaff3d2ce955df12f08b Mon Sep 17 00:00:00 2001 From: Alex S Date: Fri, 6 Sep 2019 17:20:44 +0300 Subject: [PATCH 118/272] little fixes --- lib/pleroma/web/admin_api/admin_api_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 41ded7343..d25c21e33 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -400,7 +400,7 @@ def email_invite(%{assigns: %{user: user}} = conn, %{"email" => email} = params) end end - @doc "Get a account registeration invite token (base64 string)" + @doc "Get an account registration invite token" def get_invite_token(conn, params) do opts = %{} From 17ff63b3c34e6e70580be98e71b353d1f0684222 Mon Sep 17 00:00:00 2001 From: Alex S Date: Sat, 7 Sep 2019 08:56:22 +0300 Subject: [PATCH 119/272] docs fix --- docs/api/admin_api.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/api/admin_api.md b/docs/api/admin_api.md index a8c75d93f..577f802ac 100644 --- a/docs/api/admin_api.md +++ b/docs/api/admin_api.md @@ -228,10 +228,8 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret - Methods: `POST` - Params: - - *optional* `invite` => [ - - *optional* `max_use` (integer) - - *optional* `expires_at` (date string e.g. "2019-04-07") - ] + - *optional* `max_use` (integer) + - *optional* `expires_at` (date string e.g. "2019-04-07") - Response: ```json From a18f1e7cd7addf8aee9c56643f4f0531e1c5b5a0 Mon Sep 17 00:00:00 2001 From: Alex S Date: Fri, 13 Sep 2019 08:07:29 +0300 Subject: [PATCH 120/272] namings --- docs/api/admin_api.md | 2 +- lib/pleroma/web/admin_api/admin_api_controller.ex | 4 ++-- lib/pleroma/web/router.ex | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/api/admin_api.md b/docs/api/admin_api.md index 577f802ac..7637fa0d4 100644 --- a/docs/api/admin_api.md +++ b/docs/api/admin_api.md @@ -224,7 +224,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret ## `/api/pleroma/admin/users/invite_token` -### Get an account registration invite token +### Create an account registration invite token - Methods: `POST` - Params: diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index d25c21e33..8a8091daa 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -400,8 +400,8 @@ def email_invite(%{assigns: %{user: user}} = conn, %{"email" => email} = params) end end - @doc "Get an account registration invite token" - def get_invite_token(conn, params) do + @doc "Create an account registration invite token" + def create_invite_token(conn, params) do opts = %{} opts = diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 5779d27d2..b9b85fd67 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -180,7 +180,7 @@ defmodule Pleroma.Web.Router do post("/relay", AdminAPIController, :relay_follow) delete("/relay", AdminAPIController, :relay_unfollow) - post("/users/invite_token", AdminAPIController, :get_invite_token) + post("/users/invite_token", AdminAPIController, :create_invite_token) get("/users/invites", AdminAPIController, :invites) post("/users/revoke_invite", AdminAPIController, :revoke_invite) post("/users/email_invite", AdminAPIController, :email_invite) From 384b7dd40dd484146d267ba4e12f750184365bfc Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Wed, 18 Sep 2019 18:06:49 +0300 Subject: [PATCH 121/272] Fix response --- lib/pleroma/web/admin_api/admin_api_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 4421b30c8..54ab6e032 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -438,7 +438,7 @@ def get_password_reset(conn, %{"nickname" => nickname}) do conn |> json(%{ token: token.token, - link: "#{protocol}://#{host}/api/pleroma/password_reset/#{token}" + link: "#{protocol}://#{host}/api/pleroma/password_reset/#{token.token}" }) end From 7ef575d11e46247d1f64dd09d992e532cb8c5c37 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 18 Sep 2019 18:13:21 +0300 Subject: [PATCH 122/272] Initial poll refresh support Implement refreshing the object with an interval and call the function when getting the poll. --- lib/pleroma/object.ex | 18 ++++ lib/pleroma/object/fetcher.ex | 17 +++- .../controllers/mastodon_api_controller.ex | 2 +- test/fixtures/tesla_mock/poll_modified.json | 1 + test/fixtures/tesla_mock/poll_original.json | 1 + test/fixtures/tesla_mock/rin.json | 1 + test/object_test.exs | 86 +++++++++++++++++++ test/support/http_request_mock.ex | 4 + 8 files changed, 126 insertions(+), 4 deletions(-) create mode 100644 test/fixtures/tesla_mock/poll_modified.json create mode 100644 test/fixtures/tesla_mock/poll_original.json create mode 100644 test/fixtures/tesla_mock/rin.json diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index 5033798ae..640e068e5 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -38,6 +38,24 @@ def change(struct, params \\ %{}) do def get_by_id(nil), do: nil def get_by_id(id), do: Repo.get(Object, id) + def get_by_id_and_maybe_refetch(id, opts \\ []) do + %{updated_at: updated_at} = object = get_by_id(id) + + if opts[:interval] && + NaiveDateTime.diff(updated_at, NaiveDateTime.utc_now()) > opts[:interval] do + case Fetcher.refetch_object(object) do + {:ok, %Object{} = object} -> + object + + e -> + Logger.error("Couldn't refresh #{object.data["id"]}:\n#{inspect(e)}") + object + end + else + object + end + end + def get_by_ap_id(nil), do: nil def get_by_ap_id(ap_id) do diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index c1795ae0f..da1ebd8b3 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -7,17 +7,19 @@ defmodule Pleroma.Object.Fetcher do alias Pleroma.Object alias Pleroma.Object.Containment alias Pleroma.Signature + alias Pleroma.Repo alias Pleroma.Web.ActivityPub.InternalFetchActor alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.OStatus require Logger - defp reinject_object(data) do + defp reinject_object(struct, data) do Logger.debug("Reinjecting object #{data["id"]}") with data <- Transmogrifier.fix_object(data), - {:ok, object} <- Object.create(data) do + changeset <- Object.change(struct, %{data: data}), + {:ok, object} <- Repo.insert_or_update(changeset) do {:ok, object} else e -> @@ -26,6 +28,15 @@ defp reinject_object(data) do end end + def refetch_object(%Object{data: %{"id" => id}} = object) do + with {:ok, data} <- fetch_and_contain_remote_object_from_id(id), + {:ok, object} <- reinject_object(object, data) do + {:ok, object} + else + e -> {:error, e} + end + end + # TODO: # This will create a Create activity, which we need internally at the moment. def fetch_object_from_id(id, options \\ []) do @@ -57,7 +68,7 @@ def fetch_object_from_id(id, options \\ []) do {:reject, nil} {:object, data, nil} -> - reinject_object(data) + reinject_object(%Object{}, data) {:normalize, object = %Object{}} -> {:ok, object} diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index 060137b80..970cfd8db 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -485,7 +485,7 @@ def get_context(%{assigns: %{user: user}} = conn, %{"id" => id}) do end def get_poll(%{assigns: %{user: user}} = conn, %{"id" => id}) do - with %Object{} = object <- Object.get_by_id(id), + with %Object{} = object <- Object.get_by_id_and_maybe_refetch(id, interval: 60), %Activity{} = activity <- Activity.get_create_by_object_ap_id(object.data["id"]), true <- Visibility.visible_for_user?(activity, user) do conn diff --git a/test/fixtures/tesla_mock/poll_modified.json b/test/fixtures/tesla_mock/poll_modified.json new file mode 100644 index 000000000..1d026b592 --- /dev/null +++ b/test/fixtures/tesla_mock/poll_modified.json @@ -0,0 +1 @@ +{"@context":["https://www.w3.org/ns/activitystreams","https://patch.cx/schemas/litepub-0.1.jsonld",{"@language":"und"}],"actor":"https://patch.cx/users/rin","attachment":[],"attributedTo":"https://patch.cx/users/rin","cc":["https://patch.cx/users/rin/followers"],"closed":"2019-09-19T00:32:36.785333","content":"can you vote on this poll?","context":"https://patch.cx/contexts/626ecafd-3377-46c4-b908-3721a4d4373c","conversation":"https://patch.cx/contexts/626ecafd-3377-46c4-b908-3721a4d4373c","id":"https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d","oneOf":[{"name":"yes","replies":{"totalItems":8,"type":"Collection"},"type":"Note"},{"name":"no","replies":{"totalItems":3,"type":"Collection"},"type":"Note"}],"published":"2019-09-18T14:32:36.802152Z","sensitive":false,"summary":"","tag":[],"to":["https://www.w3.org/ns/activitystreams#Public"],"type":"Question"} \ No newline at end of file diff --git a/test/fixtures/tesla_mock/poll_original.json b/test/fixtures/tesla_mock/poll_original.json new file mode 100644 index 000000000..267876b3c --- /dev/null +++ b/test/fixtures/tesla_mock/poll_original.json @@ -0,0 +1 @@ +{"@context":["https://www.w3.org/ns/activitystreams","https://patch.cx/schemas/litepub-0.1.jsonld",{"@language":"und"}],"actor":"https://patch.cx/users/rin","attachment":[],"attributedTo":"https://patch.cx/users/rin","cc":["https://patch.cx/users/rin/followers"],"closed":"2019-09-19T00:32:36.785333","content":"can you vote on this poll?","context":"https://patch.cx/contexts/626ecafd-3377-46c4-b908-3721a4d4373c","conversation":"https://patch.cx/contexts/626ecafd-3377-46c4-b908-3721a4d4373c","id":"https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d","oneOf":[{"name":"yes","replies":{"totalItems":4,"type":"Collection"},"type":"Note"},{"name":"no","replies":{"totalItems":0,"type":"Collection"},"type":"Note"}],"published":"2019-09-18T14:32:36.802152Z","sensitive":false,"summary":"","tag":[],"to":["https://www.w3.org/ns/activitystreams#Public"],"type":"Question"} \ No newline at end of file diff --git a/test/fixtures/tesla_mock/rin.json b/test/fixtures/tesla_mock/rin.json new file mode 100644 index 000000000..2cf623764 --- /dev/null +++ b/test/fixtures/tesla_mock/rin.json @@ -0,0 +1 @@ +{"@context":["https://www.w3.org/ns/activitystreams","https://patch.cx/schemas/litepub-0.1.jsonld",{"@language":"und"}],"attachment":[],"endpoints":{"oauthAuthorizationEndpoint":"https://patch.cx/oauth/authorize","oauthRegistrationEndpoint":"https://patch.cx/api/v1/apps","oauthTokenEndpoint":"https://patch.cx/oauth/token","sharedInbox":"https://patch.cx/inbox"},"followers":"https://patch.cx/users/rin/followers","following":"https://patch.cx/users/rin/following","icon":{"type":"Image","url":"https://patch.cx/media/4e914f5b84e4a259a3f6c2d2edc9ab642f2ab05f3e3d9c52c81fc2d984b3d51e.jpg"},"id":"https://patch.cx/users/rin","image":{"type":"Image","url":"https://patch.cx/media/f739efddefeee49c6e67e947c4811fdc911785c16ae43da4c3684051fbf8da6a.jpg?name=f739efddefeee49c6e67e947c4811fdc911785c16ae43da4c3684051fbf8da6a.jpg"},"inbox":"https://patch.cx/users/rin/inbox","manuallyApprovesFollowers":false,"name":"rinpatch","outbox":"https://patch.cx/users/rin/outbox","preferredUsername":"rin","publicKey":{"id":"https://patch.cx/users/rin#main-key","owner":"https://patch.cx/users/rin","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5DLtwGXNZElJyxFGfcVc\nXANhaMadj/iYYQwZjOJTV9QsbtiNBeIK54PJrYuU0/0YIdrvS1iqheX5IwXRhcwa\nhm3ZyLz7XeN9st7FBni4BmZMBtMpxAuYuu5p/jbWy13qAiYOhPreCx0wrWgm/lBD\n9mkgaxIxPooBE0S4ZWEJIDIV1Vft3AWcRUyWW1vIBK0uZzs6GYshbQZB952S0yo4\nFzI1hABGHncH8UvuFauh4EZ8tY7/X5I0pGRnDOcRN1dAht5w5yTA+6r5kebiFQjP\nIzN/eCO/a9Flrj9YGW7HDNtjSOH0A31PLRGlJtJO3yK57dnf5ppyCZGfL4emShQo\ncQIDAQAB\n-----END PUBLIC KEY-----\n\n"},"summary":"your friendly neighborhood pleroma developer
I like cute things and distributed systems, and really hate delete and redrafts","tag":[],"type":"Person","url":"https://patch.cx/users/rin"} \ No newline at end of file diff --git a/test/object_test.exs b/test/object_test.exs index ba96aeea4..72e36316c 100644 --- a/test/object_test.exs +++ b/test/object_test.exs @@ -89,4 +89,90 @@ test "does not fetch unknown objects when fetch_remote is false" do ) end end + + describe "get_by_id_and_maybe_refetch" do + test "refetches if the time since the last refetch is greater than the interval" do + mock(fn + %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/poll_original.json")} + + env -> + apply(HttpRequestMock, :request, [env]) + end) + + %Object{} = + object = Object.normalize("https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d") + + assert Enum.at(object.data["oneOf"], 0)["replies"]["totalItems"] == 4 + assert Enum.at(object.data["oneOf"], 1)["replies"]["totalItems"] == 0 + + mock(fn + %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/poll_modified.json")} + + env -> + apply(HttpRequestMock, :request, [env]) + end) + + updated_object = Object.get_by_id_and_maybe_refetch(object.id, interval: -1) + assert Enum.at(updated_object.data["oneOf"], 0)["replies"]["totalItems"] == 8 + assert Enum.at(updated_object.data["oneOf"], 1)["replies"]["totalItems"] == 3 + end + + test "returns the old object if refetch fails" do + mock(fn + %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/poll_original.json")} + + env -> + apply(HttpRequestMock, :request, [env]) + end) + + %Object{} = + object = Object.normalize("https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d") + + assert Enum.at(object.data["oneOf"], 0)["replies"]["totalItems"] == 4 + assert Enum.at(object.data["oneOf"], 1)["replies"]["totalItems"] == 0 + + mock(fn + %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> + %Tesla.Env{status: 404, body: ""} + + env -> + apply(HttpRequestMock, :request, [env]) + end) + + updated_object = Object.get_by_id_and_maybe_refetch(object.id, interval: -1) + assert Enum.at(updated_object.data["oneOf"], 0)["replies"]["totalItems"] == 4 + assert Enum.at(updated_object.data["oneOf"], 1)["replies"]["totalItems"] == 0 + end + + test "does not refetch if the time since the last refetch is greater than the interval" do + mock(fn + %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/poll_original.json")} + + env -> + apply(HttpRequestMock, :request, [env]) + end) + + %Object{} = + object = Object.normalize("https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d") + + assert Enum.at(object.data["oneOf"], 0)["replies"]["totalItems"] == 4 + assert Enum.at(object.data["oneOf"], 1)["replies"]["totalItems"] == 0 + + mock(fn + %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/poll_modified.json")} + + env -> + apply(HttpRequestMock, :request, [env]) + end) + + updated_object = Object.get_by_id_and_maybe_refetch(object.id, interval: 100) + assert Enum.at(updated_object.data["oneOf"], 0)["replies"]["totalItems"] == 4 + assert Enum.at(updated_object.data["oneOf"], 1)["replies"]["totalItems"] == 0 + end + end end diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index 231e7c498..833162a61 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -1004,6 +1004,10 @@ def get("https://skippers-bin.com/users/7v1w1r8ce6", _, _, _) do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/sjw.json")}} end + def get("https://patch.cx/users/rin", _, _, _) do + {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/rin.json")}} + end + def get(url, query, body, headers) do {:error, "Mock response not implemented for GET #{inspect(url)}, #{query}, #{inspect(body)}, #{ From 84a40f6f266ea651578b3d641c000a3b762fc9f3 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 18 Sep 2019 18:31:24 +0300 Subject: [PATCH 123/272] Capture log in object refetch tests --- test/object_test.exs | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/test/object_test.exs b/test/object_test.exs index 72e36316c..25e8d45d4 100644 --- a/test/object_test.exs +++ b/test/object_test.exs @@ -4,6 +4,7 @@ defmodule Pleroma.ObjectTest do use Pleroma.DataCase + import ExUnit.CaptureLog import Pleroma.Factory import Tesla.Mock alias Pleroma.Object @@ -134,17 +135,23 @@ test "returns the old object if refetch fails" do assert Enum.at(object.data["oneOf"], 0)["replies"]["totalItems"] == 4 assert Enum.at(object.data["oneOf"], 1)["replies"]["totalItems"] == 0 - mock(fn - %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> - %Tesla.Env{status: 404, body: ""} + assert capture_log(fn -> + mock(fn + %{ + method: :get, + url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d" + } -> + %Tesla.Env{status: 404, body: ""} - env -> - apply(HttpRequestMock, :request, [env]) - end) + env -> + apply(HttpRequestMock, :request, [env]) + end) - updated_object = Object.get_by_id_and_maybe_refetch(object.id, interval: -1) - assert Enum.at(updated_object.data["oneOf"], 0)["replies"]["totalItems"] == 4 - assert Enum.at(updated_object.data["oneOf"], 1)["replies"]["totalItems"] == 0 + updated_object = Object.get_by_id_and_maybe_refetch(object.id, interval: -1) + assert Enum.at(updated_object.data["oneOf"], 0)["replies"]["totalItems"] == 4 + assert Enum.at(updated_object.data["oneOf"], 1)["replies"]["totalItems"] == 0 + end) =~ + "[error] Couldn't refresh https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d" end test "does not refetch if the time since the last refetch is greater than the interval" do From a9c700ff1594bbd3c280dd6ac3a8dffa6ea7060b Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 18 Sep 2019 18:52:33 +0300 Subject: [PATCH 124/272] Fix wrong argument order when calling NaiveDateTime.diff --- lib/pleroma/object.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index 640e068e5..3fa407931 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -42,7 +42,7 @@ def get_by_id_and_maybe_refetch(id, opts \\ []) do %{updated_at: updated_at} = object = get_by_id(id) if opts[:interval] && - NaiveDateTime.diff(updated_at, NaiveDateTime.utc_now()) > opts[:interval] do + NaiveDateTime.diff(NaiveDateTime.utc_now(), updated_at) > opts[:interval] do case Fetcher.refetch_object(object) do {:ok, %Object{} = object} -> object From e3f902b3a1330f942ddaf6ff7b108bba8fc3120a Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 18 Sep 2019 19:07:25 +0300 Subject: [PATCH 125/272] Set updated_at even if the object stayed the same --- lib/pleroma/object/fetcher.ex | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index da1ebd8b3..786e31cce 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -14,11 +14,20 @@ defmodule Pleroma.Object.Fetcher do require Logger + defp touch_changeset(changeset) do + updated_at = + NaiveDateTime.utc_now() + |> NaiveDateTime.truncate(:second) + + Ecto.Changeset.put_change(changeset, :updated_at, updated_at) + end + defp reinject_object(struct, data) do Logger.debug("Reinjecting object #{data["id"]}") with data <- Transmogrifier.fix_object(data), changeset <- Object.change(struct, %{data: data}), + changeset <- touch_changeset(changeset), {:ok, object} <- Repo.insert_or_update(changeset) do {:ok, object} else From d32894ae512c1f4cff4d967b89a0772e105d456b Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 18 Sep 2019 19:24:20 +0300 Subject: [PATCH 126/272] Move object internal fields to a constant --- lib/pleroma/constants.ex | 12 ++++++++++++ lib/pleroma/web/activity_pub/transmogrifier.ex | 10 +--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/pleroma/constants.ex b/lib/pleroma/constants.ex index ef1418543..0bf20cdd0 100644 --- a/lib/pleroma/constants.ex +++ b/lib/pleroma/constants.ex @@ -6,4 +6,16 @@ defmodule Pleroma.Constants do use Const const(as_public, do: "https://www.w3.org/ns/activitystreams#Public") + + const(object_internal_fields, + do: [ + "likes", + "like_count", + "announcements", + "announcement_count", + "emoji", + "context_id", + "deleted_activity_id" + ] + ) end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 8461b666e..9d2ddc1cd 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -979,15 +979,7 @@ def prepare_attachments(object) do defp strip_internal_fields(object) do object - |> Map.drop([ - "likes", - "like_count", - "announcements", - "announcement_count", - "emoji", - "context_id", - "deleted_activity_id" - ]) + |> Map.drop(Pleroma.Constants.object_internal_fields()) end defp strip_internal_tags(%{"tag" => tags} = object) do From eb87a86b5b3999f3e7ee119e839da3bd6d2ed4cf Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 18 Sep 2019 19:53:51 +0300 Subject: [PATCH 127/272] Preserve internal fields when reinjecting --- lib/pleroma/object/fetcher.ex | 10 ++++ test/object_test.exs | 102 ++++++++++++++++++++-------------- 2 files changed, 69 insertions(+), 43 deletions(-) diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index 786e31cce..fecc97c5e 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -13,6 +13,7 @@ defmodule Pleroma.Object.Fetcher do alias Pleroma.Web.OStatus require Logger + require Pleroma.Constants defp touch_changeset(changeset) do updated_at = @@ -22,10 +23,19 @@ defp touch_changeset(changeset) do Ecto.Changeset.put_change(changeset, :updated_at, updated_at) end + defp maybe_reinject_internal_fields(data, %{data: %{} = old_data}) do + internal_fields = Map.take(old_data, Pleroma.Constants.object_internal_fields()) + + Map.merge(data, internal_fields) + end + + defp maybe_reinject_internal_fields(data, _), do: data + defp reinject_object(struct, data) do Logger.debug("Reinjecting object #{data["id"]}") with data <- Transmogrifier.fix_object(data), + data <- maybe_reinject_internal_fields(data, struct), changeset <- Object.change(struct, %{data: data}), changeset <- touch_changeset(changeset), {:ok, object} <- Repo.insert_or_update(changeset) do diff --git a/test/object_test.exs b/test/object_test.exs index 25e8d45d4..3d64fdb49 100644 --- a/test/object_test.exs +++ b/test/object_test.exs @@ -7,8 +7,10 @@ defmodule Pleroma.ObjectTest do import ExUnit.CaptureLog import Pleroma.Factory import Tesla.Mock + alias Pleroma.Activity alias Pleroma.Object alias Pleroma.Repo + alias Pleroma.Web.CommonAPI setup do mock(fn env -> apply(HttpRequestMock, :request, [env]) end) @@ -92,7 +94,7 @@ test "does not fetch unknown objects when fetch_remote is false" do end describe "get_by_id_and_maybe_refetch" do - test "refetches if the time since the last refetch is greater than the interval" do + setup do mock(fn %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/poll_original.json")} @@ -101,34 +103,41 @@ test "refetches if the time since the last refetch is greater than the interval" apply(HttpRequestMock, :request, [env]) end) + mock_modified = fn resp -> + mock(fn + %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> + resp + + env -> + apply(HttpRequestMock, :request, [env]) + end) + end + + on_exit(fn -> mock(fn env -> apply(HttpRequestMock, :request, [env]) end) end) + + [mock_modified: mock_modified] + end + + test "refetches if the time since the last refetch is greater than the interval", %{ + mock_modified: mock_modified + } do %Object{} = object = Object.normalize("https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d") assert Enum.at(object.data["oneOf"], 0)["replies"]["totalItems"] == 4 assert Enum.at(object.data["oneOf"], 1)["replies"]["totalItems"] == 0 - mock(fn - %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/poll_modified.json")} - - env -> - apply(HttpRequestMock, :request, [env]) - end) + mock_modified.(%Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/poll_modified.json") + }) updated_object = Object.get_by_id_and_maybe_refetch(object.id, interval: -1) assert Enum.at(updated_object.data["oneOf"], 0)["replies"]["totalItems"] == 8 assert Enum.at(updated_object.data["oneOf"], 1)["replies"]["totalItems"] == 3 end - test "returns the old object if refetch fails" do - mock(fn - %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/poll_original.json")} - - env -> - apply(HttpRequestMock, :request, [env]) - end) - + test "returns the old object if refetch fails", %{mock_modified: mock_modified} do %Object{} = object = Object.normalize("https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d") @@ -136,16 +145,7 @@ test "returns the old object if refetch fails" do assert Enum.at(object.data["oneOf"], 1)["replies"]["totalItems"] == 0 assert capture_log(fn -> - mock(fn - %{ - method: :get, - url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d" - } -> - %Tesla.Env{status: 404, body: ""} - - env -> - apply(HttpRequestMock, :request, [env]) - end) + mock_modified.(%Tesla.Env{status: 404, body: ""}) updated_object = Object.get_by_id_and_maybe_refetch(object.id, interval: -1) assert Enum.at(updated_object.data["oneOf"], 0)["replies"]["totalItems"] == 4 @@ -154,32 +154,48 @@ test "returns the old object if refetch fails" do "[error] Couldn't refresh https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d" end - test "does not refetch if the time since the last refetch is greater than the interval" do - mock(fn - %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/poll_original.json")} - - env -> - apply(HttpRequestMock, :request, [env]) - end) - + test "does not refetch if the time since the last refetch is greater than the interval", %{ + mock_modified: mock_modified + } do %Object{} = object = Object.normalize("https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d") assert Enum.at(object.data["oneOf"], 0)["replies"]["totalItems"] == 4 assert Enum.at(object.data["oneOf"], 1)["replies"]["totalItems"] == 0 - mock(fn - %{method: :get, url: "https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d"} -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/poll_modified.json")} - - env -> - apply(HttpRequestMock, :request, [env]) - end) + mock_modified.(%Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/poll_modified.json") + }) updated_object = Object.get_by_id_and_maybe_refetch(object.id, interval: 100) assert Enum.at(updated_object.data["oneOf"], 0)["replies"]["totalItems"] == 4 assert Enum.at(updated_object.data["oneOf"], 1)["replies"]["totalItems"] == 0 end + + test "preserves internal fields on refetch", %{mock_modified: mock_modified} do + %Object{} = + object = Object.normalize("https://patch.cx/objects/9a172665-2bc5-452d-8428-2361d4c33b1d") + + assert Enum.at(object.data["oneOf"], 0)["replies"]["totalItems"] == 4 + assert Enum.at(object.data["oneOf"], 1)["replies"]["totalItems"] == 0 + + user = insert(:user) + activity = Activity.get_create_by_object_ap_id(object.data["id"]) + {:ok, _activity, object} = CommonAPI.favorite(activity.id, user) + + assert object.data["like_count"] == 1 + + mock_modified.(%Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/poll_modified.json") + }) + + updated_object = Object.get_by_id_and_maybe_refetch(object.id, interval: -1) + assert Enum.at(updated_object.data["oneOf"], 0)["replies"]["totalItems"] == 8 + assert Enum.at(updated_object.data["oneOf"], 1)["replies"]["totalItems"] == 3 + + assert updated_object.data["like_count"] == 1 + end end end From c096dd86e5e4e3bdb9aa35c2c4f499efc17ddd16 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 18 Sep 2019 19:59:23 +0300 Subject: [PATCH 128/272] Do not refetch local objects --- lib/pleroma/object/fetcher.ex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index fecc97c5e..91e6b6dca 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -48,10 +48,12 @@ defp reinject_object(struct, data) do end def refetch_object(%Object{data: %{"id" => id}} = object) do - with {:ok, data} <- fetch_and_contain_remote_object_from_id(id), + with {:local, false} <- {:local, String.starts_with?(id, Pleroma.Web.base_url() <> "/")}, + {:ok, data} <- fetch_and_contain_remote_object_from_id(id), {:ok, object} <- reinject_object(object, data) do {:ok, object} else + {:local, true} -> object e -> {:error, e} end end From 5028b7b5780fbfd0904b2e48c05a05eeab0e623d Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 18 Sep 2019 22:09:03 +0300 Subject: [PATCH 129/272] Fix credo issues --- lib/pleroma/object/fetcher.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index 91e6b6dca..cea33b5af 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -6,8 +6,8 @@ defmodule Pleroma.Object.Fetcher do alias Pleroma.HTTP alias Pleroma.Object alias Pleroma.Object.Containment - alias Pleroma.Signature alias Pleroma.Repo + alias Pleroma.Signature alias Pleroma.Web.ActivityPub.InternalFetchActor alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.OStatus From a12aeb09c42f1c120b78d517cfbad2fe29c88006 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 18 Sep 2019 23:34:13 +0300 Subject: [PATCH 130/272] Cleanup uploads after the tests are finished --- test/test_helper.exs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/test_helper.exs b/test/test_helper.exs index a927b2c3d..6a389365f 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -7,3 +7,8 @@ Ecto.Adapters.SQL.Sandbox.mode(Pleroma.Repo, :manual) Mox.defmock(Pleroma.ReverseProxy.ClientMock, for: Pleroma.ReverseProxy.Client) {:ok, _} = Application.ensure_all_started(:ex_machina) + +ExUnit.after_suite(fn _results -> + uploads = Pleroma.Config.get([Pleroma.Uploaders.Local, :uploads], "test/uploads") + File.rm_rf!(uploads) +end) From a22b87b30c8bf5a28465c732ac77c70631ddc4d9 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 19 Sep 2019 00:00:05 +0300 Subject: [PATCH 131/272] Add a changelog entry for poll refetching --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3f38b817..6a49bc4dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] +### Added +- Refreshing poll results for remote polls ### Changed - **Breaking:** Elixir >=1.8 is now required (was >= 1.7) - Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings) From 6a42641b8d806f40f697303995fb12af39a93bd8 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sat, 10 Aug 2019 21:46:36 +0300 Subject: [PATCH 132/272] Add pack.toml loading --- lib/pleroma/emoji.ex | 41 ++++++++++++++++++++++++++++------------- mix.exs | 1 + mix.lock | 1 + 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index 66e20f0e4..ede734a53 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -143,23 +143,38 @@ defp load do defp load_pack(pack_dir, emoji_groups) do pack_name = Path.basename(pack_dir) - emoji_txt = Path.join(pack_dir, "emoji.txt") + pack_toml = Path.join(pack_dir, "pack.toml") - if File.exists?(emoji_txt) do - load_from_file(emoji_txt, emoji_groups) - else - extensions = Pleroma.Config.get([:emoji, :pack_extensions]) + if File.exists?(pack_toml) do + toml = Toml.decode_file!(pack_toml) - Logger.info( - "No emoji.txt found for pack \"#{pack_name}\", assuming all #{Enum.join(extensions, ", ")} files are emoji" - ) - - make_shortcode_to_file_map(pack_dir, extensions) - |> Enum.map(fn {shortcode, rel_file} -> + toml["files"] + |> Enum.map(fn {name, rel_file} -> filename = Path.join("/emoji/#{pack_name}", rel_file) - - {shortcode, filename, [to_string(match_extra(emoji_groups, filename))]} + {name, filename, pack_name} end) + else + # Load from emoji.txt / all files + emoji_txt = Path.join(pack_dir, "emoji.txt") + + if File.exists?(emoji_txt) do + load_from_file(emoji_txt, emoji_groups) + else + extensions = Pleroma.Config.get([:emoji, :pack_extensions]) + + Logger.info( + "No emoji.txt found for pack \"#{pack_name}\", assuming all #{ + Enum.join(extensions, ", ") + } files are emoji" + ) + + make_shortcode_to_file_map(pack_dir, extensions) + |> Enum.map(fn {shortcode, rel_file} -> + filename = Path.join("/emoji/#{pack_name}", rel_file) + + {shortcode, filename, [to_string(match_extra(emoji_groups, filename))]} + end) + end end end diff --git a/mix.exs b/mix.exs index f2635da24..172f3a940 100644 --- a/mix.exs +++ b/mix.exs @@ -157,6 +157,7 @@ defp deps do {:ex_rated, "~> 1.3"}, {:ex_const, "~> 0.2"}, {:plug_static_index_html, "~> 1.0.0"}, + {:toml, "~> 0.5"}, {:excoveralls, "~> 0.11.1", only: :test}, {:mox, "~> 0.5", only: :test} ] ++ oauth_deps() diff --git a/mix.lock b/mix.lock index 24b34c09c..39b9fa930 100644 --- a/mix.lock +++ b/mix.lock @@ -92,6 +92,7 @@ "telemetry": {:hex, :telemetry, "0.4.0", "8339bee3fa8b91cb84d14c2935f8ecf399ccd87301ad6da6b71c09553834b2ab", [:rebar3], [], "hexpm"}, "tesla": {:hex, :tesla, "1.3.0", "f35d72f029e608f9cdc6f6d6fcc7c66cf6d6512a70cfef9206b21b8bd0203a30", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, "~> 1.3", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "~> 4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 0.4", [hex: :mint, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.3", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm"}, "timex": {:hex, :timex, "3.6.1", "efdf56d0e67a6b956cc57774353b0329c8ab7726766a11547e529357ffdc1d56", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"}, + "toml": {:hex, :toml, "0.5.2", "e471388a8726d1ce51a6b32f864b8228a1eb8edc907a0edf2bb50eab9321b526", [:mix], [], "hexpm"}, "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "tzdata": {:hex, :tzdata, "0.5.21", "8cbf3607fcce69636c672d5be2bbb08687fe26639a62bdcc283d267277db7cf0", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"}, "ueberauth": {:hex, :ueberauth, "0.6.1", "9e90d3337dddf38b1ca2753aca9b1e53d8a52b890191cdc55240247c89230412", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, From b791a0865641eb8210380e22e04a9fb680a79dcb Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 11 Aug 2019 00:39:21 +0300 Subject: [PATCH 133/272] Implement API actions on packs That incldues listing them and downloading them from other instances or from the remote url --- .../web/emoji_api/emoji_api_controller.ex | 171 ++++++++++++++++++ lib/pleroma/web/router.ex | 22 +++ 2 files changed, 193 insertions(+) create mode 100644 lib/pleroma/web/emoji_api/emoji_api_controller.ex diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex new file mode 100644 index 000000000..49d671518 --- /dev/null +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -0,0 +1,171 @@ +defmodule Pleroma.Web.EmojiAPI.EmojiAPIController do + use Pleroma.Web, :controller + + def reload(conn, _params) do + Pleroma.Emoji.reload() + + conn |> json("ok") + end + + @emoji_dir_path Path.join( + Pleroma.Config.get!([:instance, :static_dir]), + "emoji" + ) + + def list_packs(conn, _params) do + pack_infos = + case File.ls(@emoji_dir_path) do + {:error, _} -> + %{} + + {:ok, results} -> + results + |> Enum.filter(fn file -> + dir_path = Path.join(@emoji_dir_path, file) + # Filter to only use the pack.toml packs + File.dir?(dir_path) and File.exists?(Path.join(dir_path, "pack.toml")) + end) + |> Enum.map(fn pack_name -> + pack_path = Path.join(@emoji_dir_path, pack_name) + pack_file = Path.join(pack_path, "pack.toml") + + {pack_name, Toml.decode_file!(pack_file)} + end) + # Transform into a map of pack-name => pack-data + # Check if all the files are in place and can be sent + |> Enum.map(fn {name, pack} -> + pack_path = Path.join(@emoji_dir_path, name) + + archive_for_sha = make_archive(name, pack, pack_path) + archive_sha = :crypto.hash(:sha256, archive_for_sha) |> Base.encode16() + + {name, + pack + |> put_in(["pack", "can-download"], can_download?(pack, pack_path)) + |> put_in(["pack", "download-sha256"], archive_sha)} + end) + |> Enum.into(%{}) + end + + conn |> json(pack_infos) + end + + defp can_download?(pack, pack_path) do + # If the pack is set as shared, check if it can be downloaded + # That means that when asked, the pack can be packed and sent to the remote + # Otherwise, they'd have to download it from external-src + pack["pack"]["share-files"] and + Enum.all?(pack["files"], fn {_, path} -> + File.exists?(Path.join(pack_path, path)) + end) + end + + defp make_archive(name, pack, pack_dir) do + files = + ['pack.toml'] ++ + (pack["files"] |> Enum.map(fn {_, path} -> to_charlist(path) end)) + + {:ok, {_, zip_result}} = :zip.zip('#{name}.zip', files, [:memory, cwd: to_charlist(pack_dir)]) + + zip_result + end + + def download_shared(conn, %{"name" => name}) do + pack_dir = Path.join(@emoji_dir_path, name) + pack_toml = Path.join(pack_dir, "pack.toml") + + if File.exists?(pack_toml) do + pack = Toml.decode_file!(pack_toml) + + if can_download?(pack, pack_dir) do + zip_result = make_archive(name, pack, pack_dir) + + conn + |> send_download({:binary, zip_result}, filename: "#{name}.zip") + else + {:error, + conn + |> put_status(:forbidden) + |> json("Pack #{name} cannot be downloaded from this instance, either pack sharing\ + was disabled for this pack or some files are missing")} + end + else + {:error, + conn + |> put_status(:not_found) + |> json("Pack #{name} does not exist")} + end + end + + def download_from(conn, %{"instance_address" => address, "pack_name" => name} = data) do + list_uri = "#{address}/api/pleroma/emoji/packs/list" + + list = Tesla.get!(list_uri).body |> Jason.decode!() + full_pack = list[name] + pfiles = full_pack["files"] + pack = full_pack["pack"] + + pack_info_res = + cond do + pack["share-files"] && pack["can-download"] -> + {:ok, + %{ + sha: pack["download-sha256"], + uri: "#{address}/api/pleroma/emoji/packs/download_shared/#{name}" + }} + + pack["fallback-src"] -> + {:ok, + %{ + sha: pack["fallback-src-sha256"], + uri: pack["fallback-src"], + fallback: true + }} + + true -> + {:error, "The pack was not set as shared and the is no fallback url to download from"} + end + + case pack_info_res do + {:ok, %{sha: sha, uri: uri} = pinfo} -> + sha = Base.decode16!(sha) + emoji_archive = Tesla.get!(uri).body + + got_sha = :crypto.hash(:sha256, emoji_archive) + + if got_sha == sha do + local_name = data["as"] || name + pack_dir = Path.join(@emoji_dir_path, local_name) + File.mkdir_p!(pack_dir) + + files = + ['pack.toml'] ++ + (pfiles |> Enum.map(fn {_, path} -> to_charlist(path) end)) + + {:ok, _} = :zip.unzip(emoji_archive, cwd: to_charlist(pack_dir), file_list: files) + + # Fallback URL might not contain a pack.toml file, if that happens - fail (for now) + # FIXME: there seems to be a lack of any kind of encoders besides JSON. + erres = + if pinfo[:fallback] do + toml_path = Path.join(pack_dir, "pack.toml") + + unless File.exists?(toml_path) do + conn + |> put_status(:internal_server_error) + |> text("No pack.toml in falblack source") + end + end + + if not is_nil(erres), do: erres, else: conn |> text("ok") + else + conn + |> put_status(:internal_server_error) + |> text("SHA256 for the pack doesn't match the one sent by the server") + end + + {:error, e} -> + conn |> put_status(:internal_server_error) |> text(e) + end + end +end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index b9b85fd67..514446fb3 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -207,6 +207,28 @@ defmodule Pleroma.Web.Router do get("/moderation_log", AdminAPIController, :list_log) end + scope "/api/pleroma/emoji", Pleroma.Web.EmojiAPI do + scope [] do + pipe_through([:admin_api, :oauth_write]) + + post("/reload", EmojiAPIController, :reload) + end + + scope "/packs" do + # Modifying packs + pipe_through([:admin_api, :oauth_write]) + + post("/download_from", EmojiAPIController, :download_from) + end + + scope "/packs" do + # Pack info / downloading + get("/list", EmojiAPIController, :list_packs) + get("/download_shared/:name", EmojiAPIController, :download_shared) + get("/sha_of_shared/:name", EmojiAPIController, :sha_of_shared) + end + end + scope "/", Pleroma.Web.TwitterAPI do pipe_through(:pleroma_html) From 54b8e683bce13cf67f2674ea9f56b30604b28358 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 11 Aug 2019 22:32:15 +0300 Subject: [PATCH 134/272] Swap TOML for YAML to get YAML generation for packs from fallbacks If fallback url doesn't have a pack.yml file, one from the source will be used --- lib/pleroma/emoji.ex | 8 ++--- .../web/emoji_api/emoji_api_controller.ex | 36 +++++++++---------- lib/pleroma/web/router.ex | 1 - mix.exs | 2 +- mix.lock | 3 +- 5 files changed, 23 insertions(+), 27 deletions(-) diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index ede734a53..2a9f5f804 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -143,12 +143,12 @@ defp load do defp load_pack(pack_dir, emoji_groups) do pack_name = Path.basename(pack_dir) - pack_toml = Path.join(pack_dir, "pack.toml") + pack_yaml = Path.join(pack_dir, "pack.yml") - if File.exists?(pack_toml) do - toml = Toml.decode_file!(pack_toml) + if File.exists?(pack_yaml) do + yaml = RelaxYaml.Decoder.read_from_file(pack_yaml) - toml["files"] + yaml["files"] |> Enum.map(fn {name, rel_file} -> filename = Path.join("/emoji/#{pack_name}", rel_file) {name, filename, pack_name} diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 49d671518..7ef9b543d 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -22,14 +22,14 @@ def list_packs(conn, _params) do results |> Enum.filter(fn file -> dir_path = Path.join(@emoji_dir_path, file) - # Filter to only use the pack.toml packs - File.dir?(dir_path) and File.exists?(Path.join(dir_path, "pack.toml")) + # Filter to only use the pack.yml packs + File.dir?(dir_path) and File.exists?(Path.join(dir_path, "pack.yml")) end) |> Enum.map(fn pack_name -> pack_path = Path.join(@emoji_dir_path, pack_name) - pack_file = Path.join(pack_path, "pack.toml") + pack_file = Path.join(pack_path, "pack.yml") - {pack_name, Toml.decode_file!(pack_file)} + {pack_name, RelaxYaml.Decoder.read_from_file(pack_file)} end) # Transform into a map of pack-name => pack-data # Check if all the files are in place and can be sent @@ -62,7 +62,7 @@ defp can_download?(pack, pack_path) do defp make_archive(name, pack, pack_dir) do files = - ['pack.toml'] ++ + ['pack.yml'] ++ (pack["files"] |> Enum.map(fn {_, path} -> to_charlist(path) end)) {:ok, {_, zip_result}} = :zip.zip('#{name}.zip', files, [:memory, cwd: to_charlist(pack_dir)]) @@ -72,10 +72,10 @@ defp make_archive(name, pack, pack_dir) do def download_shared(conn, %{"name" => name}) do pack_dir = Path.join(@emoji_dir_path, name) - pack_toml = Path.join(pack_dir, "pack.toml") + pack_yaml = Path.join(pack_dir, "pack.yml") - if File.exists?(pack_toml) do - pack = Toml.decode_file!(pack_toml) + if File.exists?(pack_yaml) do + pack = RelaxYaml.Decoder.read_from_file(pack_yaml) if can_download?(pack, pack_dir) do zip_result = make_archive(name, pack, pack_dir) @@ -139,25 +139,21 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = File.mkdir_p!(pack_dir) files = - ['pack.toml'] ++ + ['pack.yml'] ++ (pfiles |> Enum.map(fn {_, path} -> to_charlist(path) end)) {:ok, _} = :zip.unzip(emoji_archive, cwd: to_charlist(pack_dir), file_list: files) - # Fallback URL might not contain a pack.toml file, if that happens - fail (for now) - # FIXME: there seems to be a lack of any kind of encoders besides JSON. - erres = - if pinfo[:fallback] do - toml_path = Path.join(pack_dir, "pack.toml") + # Fallback URL might not contain a pack.yml file. Put on we have if there's none + if pinfo[:fallback] do + yaml_path = Path.join(pack_dir, "pack.yml") - unless File.exists?(toml_path) do - conn - |> put_status(:internal_server_error) - |> text("No pack.toml in falblack source") - end + unless File.exists?(yaml_path) do + File.write!(yaml_path, RelaxYaml.Encoder.encode(full_pack, [])) end + end - if not is_nil(erres), do: erres, else: conn |> text("ok") + conn |> text("ok") else conn |> put_status(:internal_server_error) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 514446fb3..1c781d750 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -225,7 +225,6 @@ defmodule Pleroma.Web.Router do # Pack info / downloading get("/list", EmojiAPIController, :list_packs) get("/download_shared/:name", EmojiAPIController, :download_shared) - get("/sha_of_shared/:name", EmojiAPIController, :sha_of_shared) end end diff --git a/mix.exs b/mix.exs index 172f3a940..e8356d564 100644 --- a/mix.exs +++ b/mix.exs @@ -157,7 +157,7 @@ defp deps do {:ex_rated, "~> 1.3"}, {:ex_const, "~> 0.2"}, {:plug_static_index_html, "~> 1.0.0"}, - {:toml, "~> 0.5"}, + {:relax_yaml, "~> 0.1"}, {:excoveralls, "~> 0.11.1", only: :test}, {:mox, "~> 0.5", only: :test} ] ++ oauth_deps() diff --git a/mix.lock b/mix.lock index 39b9fa930..8852b5f65 100644 --- a/mix.lock +++ b/mix.lock @@ -84,6 +84,7 @@ "quantum": {:hex, :quantum, "2.3.4", "72a0e8855e2adc101459eac8454787cb74ab4169de6ca50f670e72142d4960e9", [:mix], [{:calendar, "~> 0.17", [hex: :calendar, repo: "hexpm", optional: true]}, {:crontab, "~> 1.1", [hex: :crontab, repo: "hexpm", optional: false]}, {:gen_stage, "~> 0.12", [hex: :gen_stage, repo: "hexpm", optional: false]}, {:swarm, "~> 3.3", [hex: :swarm, repo: "hexpm", optional: false]}, {:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: true]}], "hexpm"}, "ranch": {:hex, :ranch, "1.7.1", "6b1fab51b49196860b733a49c07604465a47bdb78aa10c1c16a3d199f7f8c881", [:rebar3], [], "hexpm"}, "recon": {:git, "https://github.com/ferd/recon.git", "75d70c7c08926d2f24f1ee6de14ee50fe8a52763", [tag: "2.4.0"]}, + "relax_yaml": {:hex, :relax_yaml, "0.1.4", "99e55ae80b3bd1135f4288e1ba77b816ad7de05bcb4618a1a9f983ce7c89ff32", [:mix], [{:yamerl, "~> 0.4.0", [hex: :yamerl, repo: "hexpm", optional: false]}], "hexpm"}, "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.4", "f0eafff810d2041e93f915ef59899c923f4568f4585904d010387ed74988e77b", [:make, :mix, :rebar3], [], "hexpm"}, "swarm": {:hex, :swarm, "3.4.0", "64f8b30055d74640d2186c66354b33b999438692a91be275bb89cdc7e401f448", [:mix], [{:gen_state_machine, "~> 2.0", [hex: :gen_state_machine, repo: "hexpm", optional: false]}, {:libring, "~> 1.0", [hex: :libring, repo: "hexpm", optional: false]}], "hexpm"}, "sweet_xml": {:hex, :sweet_xml, "0.6.6", "fc3e91ec5dd7c787b6195757fbcf0abc670cee1e4172687b45183032221b66b8", [:mix], [], "hexpm"}, @@ -92,7 +93,6 @@ "telemetry": {:hex, :telemetry, "0.4.0", "8339bee3fa8b91cb84d14c2935f8ecf399ccd87301ad6da6b71c09553834b2ab", [:rebar3], [], "hexpm"}, "tesla": {:hex, :tesla, "1.3.0", "f35d72f029e608f9cdc6f6d6fcc7c66cf6d6512a70cfef9206b21b8bd0203a30", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, "~> 1.3", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "~> 4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 0.4", [hex: :mint, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.3", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm"}, "timex": {:hex, :timex, "3.6.1", "efdf56d0e67a6b956cc57774353b0329c8ab7726766a11547e529357ffdc1d56", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"}, - "toml": {:hex, :toml, "0.5.2", "e471388a8726d1ce51a6b32f864b8228a1eb8edc907a0edf2bb50eab9321b526", [:mix], [], "hexpm"}, "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "tzdata": {:hex, :tzdata, "0.5.21", "8cbf3607fcce69636c672d5be2bbb08687fe26639a62bdcc283d267277db7cf0", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"}, "ueberauth": {:hex, :ueberauth, "0.6.1", "9e90d3337dddf38b1ca2753aca9b1e53d8a52b890191cdc55240247c89230412", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, @@ -100,4 +100,5 @@ "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm"}, "web_push_encryption": {:hex, :web_push_encryption, "0.2.1", "d42cecf73420d9dc0053ba3299cc8c8d6ff2be2487d67ca2a57265868e4d9a98", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}, {:poison, "~> 3.0", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm"}, "websocket_client": {:git, "https://github.com/jeremyong/websocket_client.git", "9a6f65d05ebf2725d62fb19262b21f1805a59fbf", []}, + "yamerl": {:hex, :yamerl, "0.4.0", "ae215b1242810a9bc07716b88062f1bfe06f6bc7cf68372091f630baa536df79", [:rebar3], [], "hexpm"}, } From 7fb7dd9e0e0135af467477a66692990bdaecdbe9 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 11 Aug 2019 23:24:23 +0300 Subject: [PATCH 135/272] Only find SHA256 for packs that are shared --- .../web/emoji_api/emoji_api_controller.ex | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 7ef9b543d..915059783 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -36,13 +36,19 @@ def list_packs(conn, _params) do |> Enum.map(fn {name, pack} -> pack_path = Path.join(@emoji_dir_path, name) - archive_for_sha = make_archive(name, pack, pack_path) - archive_sha = :crypto.hash(:sha256, archive_for_sha) |> Base.encode16() + if can_download?(pack, pack_path) do + archive_for_sha = make_archive(name, pack, pack_path) + archive_sha = :crypto.hash(:sha256, archive_for_sha) |> Base.encode16() - {name, - pack - |> put_in(["pack", "can-download"], can_download?(pack, pack_path)) - |> put_in(["pack", "download-sha256"], archive_sha)} + {name, + pack + |> put_in(["pack", "can-download"], true) + |> put_in(["pack", "download-sha256"], archive_sha)} + else + {name, + pack + |> put_in(["pack", "can-download"], false)} + end end) |> Enum.into(%{}) end From 7e4c8b56eab0e92b98efbf27e373d68758de540f Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Mon, 12 Aug 2019 10:35:34 +0300 Subject: [PATCH 136/272] Add tests for emoji pack sharing --- config/test.exs | 3 +- .../instance_static/emoji/test_pack/blank.png | Bin 0 -> 95 bytes test/instance_static/emoji/test_pack/pack.yml | 13 +++ .../emoji/test_pack_nonshared/pack.yml | 13 +++ test/web/emoji_api_controller_test.exs | 98 ++++++++++++++++++ 5 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 test/instance_static/emoji/test_pack/blank.png create mode 100644 test/instance_static/emoji/test_pack/pack.yml create mode 100644 test/instance_static/emoji/test_pack_nonshared/pack.yml create mode 100644 test/web/emoji_api_controller_test.exs diff --git a/config/test.exs b/config/test.exs index df512b5d7..da2778aa7 100644 --- a/config/test.exs +++ b/config/test.exs @@ -30,7 +30,8 @@ notify_email: "noreply@example.com", skip_thread_containment: false, federating: false, - external_user_synchronization: false + external_user_synchronization: false, + static_dir: "test/instance_static/" config :pleroma, :activitypub, sign_object_fetches: false diff --git a/test/instance_static/emoji/test_pack/blank.png b/test/instance_static/emoji/test_pack/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..8f50fa02340e7e09e562f86e00b6e4bd6ad1d565 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^4Is=2Bp6=1#-sr$rjj7PU get(emoji_api_path(conn, :list_packs)) |> json_response(200) + + assert Map.has_key?(resp, "test_pack") + + pack = resp["test_pack"] + + assert Map.has_key?(pack["pack"], "download-sha256") + assert pack["pack"]["can-download"] + + assert pack["files"] == %{"blank" => "blank.png"} + + # Non-shared pack + + assert Map.has_key?(resp, "test_pack_nonshared") + + pack = resp["test_pack_nonshared"] + + refute pack["pack"]["shared"] + refute pack["pack"]["can-download"] + end + + test "downloading a shared pack from download_shared" do + conn = build_conn() + + resp = + conn + |> get(emoji_api_path(conn, :download_shared, "test_pack")) + |> response(200) + + {:ok, arch} = :zip.unzip(resp, [:memory]) + + assert Enum.find(arch, fn {n, _} -> n == 'pack.yml' end) + assert Enum.find(arch, fn {n, _} -> n == 'blank.png' end) + end + + test "downloading a shared pack from another instance via download_from" do + on_exit(fn -> + File.rm_rf!("test/instance_static/emoji/test_pack2") + end) + + mock(fn + %{ + method: :get, + url: "https://example.com/api/pleroma/emoji/packs/list" + } -> + conn = build_conn() + + conn + |> get(emoji_api_path(conn, :list_packs)) + |> json_response(200) + |> json() + + %{ + method: :get, + url: "https://example.com/api/pleroma/emoji/packs/download_shared/test_pack" + } -> + conn = build_conn() + + conn + |> get(emoji_api_path(conn, :download_shared, "test_pack")) + |> response(200) + |> text() + end) + + admin = insert(:user, info: %{is_admin: true}) + + conn = build_conn() + + assert conn + |> put_req_header("content-type", "application/json") + |> assign(:user, admin) + |> post( + emoji_api_path( + conn, + :download_from + ), + %{ + instance_address: "https://example.com", + pack_name: "test_pack", + as: "test_pack2" + } + |> Jason.encode!() + ) + |> text_response(200) == "ok" + + assert File.exists?("test/instance_static/emoji/test_pack2/pack.yml") + assert File.exists?("test/instance_static/emoji/test_pack2/blank.png") + end +end From ee620ecbf11398277551ef603355a56a53690461 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Mon, 12 Aug 2019 13:13:01 +0300 Subject: [PATCH 137/272] Add caching for emoji pack sharing --- config/config.exs | 3 +- docs/config.md | 2 + lib/pleroma/application.ex | 6 ++- .../web/emoji_api/emoji_api_controller.ex | 42 ++++++++++++++++++- 4 files changed, 50 insertions(+), 3 deletions(-) diff --git a/config/config.exs b/config/config.exs index c7e0cf09f..4c758d4a0 100644 --- a/config/config.exs +++ b/config/config.exs @@ -122,7 +122,8 @@ # Put groups that have higher priority than defaults here. Example in `docs/config/custom_emoji.md` Custom: ["/emoji/*.png", "/emoji/**/*.png"] ], - default_manifest: "https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json" + default_manifest: "https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json", + shared_pack_cache_seconds_per_file: 60 config :pleroma, :uri_schemes, valid_schemes: [ diff --git a/docs/config.md b/docs/config.md index 3f37fa561..1179def56 100644 --- a/docs/config.md +++ b/docs/config.md @@ -707,6 +707,8 @@ Configure OAuth 2 provider capabilities: * `pack_extensions`: A list of file extensions for emojis, when no emoji.txt for a pack is present. Example `[".png", ".gif"]` * `groups`: Emojis are ordered in groups (tags). This is an array of key-value pairs where the key is the groupname and the value the location or array of locations. `*` can be used as a wildcard. Example `[Custom: ["/emoji/*.png", "/emoji/custom/*.png"]]` * `default_manifest`: Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download. Currently only one manifest can be added (no arrays). +* `shared_pack_cache_seconds_per_file`: When an emoji pack is shared, the archive is created and cached in + memory for this amount of seconds multiplied by the number of files. ## Database options diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index dabce771d..a339e2c48 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -102,10 +102,14 @@ defp cachex_children do build_cachex("rich_media", default_ttl: :timer.minutes(120), limit: 5000), build_cachex("scrubber", limit: 2500), build_cachex("idempotency", expiration: idempotency_expiration(), limit: 2500), - build_cachex("web_resp", limit: 2500) + build_cachex("web_resp", limit: 2500), + build_cachex("emoji_packs", expiration: emoji_packs_expiration(), limit: 10) ] end + defp emoji_packs_expiration, + do: expiration(default: :timer.seconds(5 * 60), interval: :timer.seconds(60)) + defp idempotency_expiration, do: expiration(default: :timer.seconds(6 * 60 * 60), interval: :timer.seconds(60)) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 915059783..8219eaaa1 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -1,6 +1,8 @@ defmodule Pleroma.Web.EmojiAPI.EmojiAPIController do use Pleroma.Web, :controller + require Logger + def reload(conn, _params) do Pleroma.Emoji.reload() @@ -12,6 +14,8 @@ def reload(conn, _params) do "emoji" ) + @cache_seconds_per_file Pleroma.Config.get!([:emoji, :shared_pack_cache_seconds_per_file]) + def list_packs(conn, _params) do pack_infos = case File.ls(@emoji_dir_path) do @@ -66,13 +70,49 @@ defp can_download?(pack, pack_path) do end) end - defp make_archive(name, pack, pack_dir) do + defp create_archive_and_cache(name, pack, pack_dir, md5) do files = ['pack.yml'] ++ (pack["files"] |> Enum.map(fn {_, path} -> to_charlist(path) end)) {:ok, {_, zip_result}} = :zip.zip('#{name}.zip', files, [:memory, cwd: to_charlist(pack_dir)]) + cache_ms = :timer.seconds(@cache_seconds_per_file * Enum.count(files)) + + Cachex.put!( + :emoji_packs_cache, + name, + # if pack.yml MD5 changes, the cache is not valid anymore + %{pack_yml_md5: md5, pack_data: zip_result}, + # Add a minute to cache time for every file in the pack + ttl: cache_ms + ) + + Logger.debug("Create an archive for the '#{name}' shared emoji pack, \ +keeping it in cache for #{div(cache_ms, 1000)}s") + + zip_result + end + + defp make_archive(name, pack, pack_dir) do + # Having a different pack.yml md5 invalidates cache + pack_yml_md5 = :crypto.hash(:md5, File.read!(Path.join(pack_dir, "pack.yml"))) + + maybe_cached_pack = Cachex.get!(:emoji_packs_cache, name) + + zip_result = + if is_nil(maybe_cached_pack) do + create_archive_and_cache(name, pack, pack_dir, pack_yml_md5) + else + if maybe_cached_pack[:pack_yml_md5] == pack_yml_md5 do + Logger.debug("Using cache for the '#{name}' shared emoji pack") + + maybe_cached_pack[:pack_data] + else + create_archive_and_cache(name, pack, pack_dir, pack_yml_md5) + end + end + zip_result end From 7a0c755d0a69157868e245b35b48ed07a7dfd3c7 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Mon, 12 Aug 2019 16:43:28 +0300 Subject: [PATCH 138/272] Send ok for emoji reloading as text, not as json --- lib/pleroma/web/emoji_api/emoji_api_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 8219eaaa1..72daccc8c 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.EmojiAPI.EmojiAPIController do def reload(conn, _params) do Pleroma.Emoji.reload() - conn |> json("ok") + conn |> text("ok") end @emoji_dir_path Path.join( From 3a8669b48771ac4203b6abf2a372c6960d36345a Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Mon, 12 Aug 2019 17:35:25 +0300 Subject: [PATCH 139/272] Fix responses for emoji pack controlller --- lib/pleroma/web/emoji_api/emoji_api_controller.ex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 72daccc8c..f2b1e8a8d 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -88,7 +88,7 @@ defp create_archive_and_cache(name, pack, pack_dir, md5) do ttl: cache_ms ) - Logger.debug("Create an archive for the '#{name}' shared emoji pack, \ + Logger.debug("Create an archive for the '#{name}' emoji pack, \ keeping it in cache for #{div(cache_ms, 1000)}s") zip_result @@ -132,14 +132,14 @@ def download_shared(conn, %{"name" => name}) do {:error, conn |> put_status(:forbidden) - |> json("Pack #{name} cannot be downloaded from this instance, either pack sharing\ + |> text("Pack #{name} cannot be downloaded from this instance, either pack sharing\ was disabled for this pack or some files are missing")} end else {:error, conn |> put_status(:not_found) - |> json("Pack #{name} does not exist")} + |> text("Pack #{name} does not exist")} end end @@ -169,7 +169,7 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = }} true -> - {:error, "The pack was not set as shared and the is no fallback url to download from"} + {:error, "The pack was not set as shared and there is no fallback src to download from"} end case pack_info_res do From 2d4b8f3d20c4dbf60e52e95e77f2e77766974402 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Mon, 12 Aug 2019 18:03:59 +0300 Subject: [PATCH 140/272] Add an endpoint for deleting emoji packs --- lib/pleroma/web/emoji_api/emoji_api_controller.ex | 12 ++++++++++++ lib/pleroma/web/router.ex | 1 + test/web/emoji_api_controller_test.exs | 9 ++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index f2b1e8a8d..49d970277 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -210,4 +210,16 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = conn |> put_status(:internal_server_error) |> text(e) end end + + def delete(conn, %{"name" => name}) do + pack_dir = Path.join(@emoji_dir_path, name) + + case File.rm_rf(pack_dir) do + {:ok, _} -> + conn |> text("ok") + + {:error, _} -> + conn |> put_status(:internal_server_error) |> text("Couldn't delete the pack #{name}") + end + end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 1c781d750..4df0ca3c3 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -218,6 +218,7 @@ defmodule Pleroma.Web.Router do # Modifying packs pipe_through([:admin_api, :oauth_write]) + delete("/delete/:name", EmojiAPIController, :delete) post("/download_from", EmojiAPIController, :download_from) end diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index c037883ee..13a34d38d 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -42,7 +42,7 @@ test "downloading a shared pack from download_shared" do assert Enum.find(arch, fn {n, _} -> n == 'blank.png' end) end - test "downloading a shared pack from another instance via download_from" do + test "downloading a shared pack from another instance via download_from, deleting it" do on_exit(fn -> File.rm_rf!("test/instance_static/emoji/test_pack2") end) @@ -94,5 +94,12 @@ test "downloading a shared pack from another instance via download_from" do assert File.exists?("test/instance_static/emoji/test_pack2/pack.yml") assert File.exists?("test/instance_static/emoji/test_pack2/blank.png") + + assert conn + |> assign(:user, admin) + |> delete(emoji_api_path(conn, :delete, "test_pack2")) + |> response(200) == "ok" + + refute File.exists?("test/instance_static/emoji/test_pack2") end end From b0ecd412f5c499773cdc462c50d6c8104a819550 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Mon, 12 Aug 2019 18:28:05 +0300 Subject: [PATCH 141/272] Clean out old emojis on reload --- lib/pleroma/emoji.ex | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index 2a9f5f804..f56b26da2 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -122,6 +122,9 @@ defp load do fn pack -> load_pack(Path.join(emoji_dir_path, pack), emoji_groups) end ) + # Clear out old emojis + :ets.delete_all_objects(@ets) + true = :ets.insert(@ets, emojis) end From 2a94eca096f67a908410ffdd82f5bace8a3df88c Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 15 Aug 2019 11:39:39 +0300 Subject: [PATCH 142/272] Change YAML to JSON --- lib/pleroma/emoji.ex | 8 ++-- .../web/emoji_api/emoji_api_controller.ex | 40 +++++++++---------- mix.exs | 1 - mix.lock | 1 - .../instance_static/emoji/test_pack/pack.json | 16 ++++++++ test/instance_static/emoji/test_pack/pack.yml | 13 ------ .../emoji/test_pack_nonshared/pack.json | 16 ++++++++ .../emoji/test_pack_nonshared/pack.yml | 13 ------ test/web/emoji_api_controller_test.exs | 4 +- 9 files changed, 58 insertions(+), 54 deletions(-) create mode 100644 test/instance_static/emoji/test_pack/pack.json delete mode 100644 test/instance_static/emoji/test_pack/pack.yml create mode 100644 test/instance_static/emoji/test_pack_nonshared/pack.json delete mode 100644 test/instance_static/emoji/test_pack_nonshared/pack.yml diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex index f56b26da2..170a7d098 100644 --- a/lib/pleroma/emoji.ex +++ b/lib/pleroma/emoji.ex @@ -146,12 +146,12 @@ defp load do defp load_pack(pack_dir, emoji_groups) do pack_name = Path.basename(pack_dir) - pack_yaml = Path.join(pack_dir, "pack.yml") + pack_file = Path.join(pack_dir, "pack.json") - if File.exists?(pack_yaml) do - yaml = RelaxYaml.Decoder.read_from_file(pack_yaml) + if File.exists?(pack_file) do + contents = Jason.decode!(File.read!(pack_file)) - yaml["files"] + contents["files"] |> Enum.map(fn {name, rel_file} -> filename = Path.join("/emoji/#{pack_name}", rel_file) {name, filename, pack_name} diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 49d970277..aedc70372 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -26,14 +26,14 @@ def list_packs(conn, _params) do results |> Enum.filter(fn file -> dir_path = Path.join(@emoji_dir_path, file) - # Filter to only use the pack.yml packs - File.dir?(dir_path) and File.exists?(Path.join(dir_path, "pack.yml")) + # Filter to only use the pack.json packs + File.dir?(dir_path) and File.exists?(Path.join(dir_path, "pack.json")) end) |> Enum.map(fn pack_name -> pack_path = Path.join(@emoji_dir_path, pack_name) - pack_file = Path.join(pack_path, "pack.yml") + pack_file = Path.join(pack_path, "pack.json") - {pack_name, RelaxYaml.Decoder.read_from_file(pack_file)} + {pack_name, Jason.decode!(File.read!(pack_file))} end) # Transform into a map of pack-name => pack-data # Check if all the files are in place and can be sent @@ -72,7 +72,7 @@ defp can_download?(pack, pack_path) do defp create_archive_and_cache(name, pack, pack_dir, md5) do files = - ['pack.yml'] ++ + ['pack.json'] ++ (pack["files"] |> Enum.map(fn {_, path} -> to_charlist(path) end)) {:ok, {_, zip_result}} = :zip.zip('#{name}.zip', files, [:memory, cwd: to_charlist(pack_dir)]) @@ -82,8 +82,8 @@ defp create_archive_and_cache(name, pack, pack_dir, md5) do Cachex.put!( :emoji_packs_cache, name, - # if pack.yml MD5 changes, the cache is not valid anymore - %{pack_yml_md5: md5, pack_data: zip_result}, + # if pack.json MD5 changes, the cache is not valid anymore + %{pack_json_md5: md5, pack_data: zip_result}, # Add a minute to cache time for every file in the pack ttl: cache_ms ) @@ -95,21 +95,21 @@ defp create_archive_and_cache(name, pack, pack_dir, md5) do end defp make_archive(name, pack, pack_dir) do - # Having a different pack.yml md5 invalidates cache - pack_yml_md5 = :crypto.hash(:md5, File.read!(Path.join(pack_dir, "pack.yml"))) + # Having a different pack.json md5 invalidates cache + pack_file_md5 = :crypto.hash(:md5, File.read!(Path.join(pack_dir, "pack.json"))) maybe_cached_pack = Cachex.get!(:emoji_packs_cache, name) zip_result = if is_nil(maybe_cached_pack) do - create_archive_and_cache(name, pack, pack_dir, pack_yml_md5) + create_archive_and_cache(name, pack, pack_dir, pack_file_md5) else - if maybe_cached_pack[:pack_yml_md5] == pack_yml_md5 do + if maybe_cached_pack[:pack_file_md5] == pack_file_md5 do Logger.debug("Using cache for the '#{name}' shared emoji pack") maybe_cached_pack[:pack_data] else - create_archive_and_cache(name, pack, pack_dir, pack_yml_md5) + create_archive_and_cache(name, pack, pack_dir, pack_file_md5) end end @@ -118,10 +118,10 @@ defp make_archive(name, pack, pack_dir) do def download_shared(conn, %{"name" => name}) do pack_dir = Path.join(@emoji_dir_path, name) - pack_yaml = Path.join(pack_dir, "pack.yml") + pack_file = Path.join(pack_dir, "pack.json") - if File.exists?(pack_yaml) do - pack = RelaxYaml.Decoder.read_from_file(pack_yaml) + if File.exists?(pack_file) do + pack = Jason.decode!(File.read!(pack_file)) if can_download?(pack, pack_dir) do zip_result = make_archive(name, pack, pack_dir) @@ -185,17 +185,17 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = File.mkdir_p!(pack_dir) files = - ['pack.yml'] ++ + ['pack.json'] ++ (pfiles |> Enum.map(fn {_, path} -> to_charlist(path) end)) {:ok, _} = :zip.unzip(emoji_archive, cwd: to_charlist(pack_dir), file_list: files) - # Fallback URL might not contain a pack.yml file. Put on we have if there's none + # Fallback URL might not contain a pack.json file. Put on we have if there's none if pinfo[:fallback] do - yaml_path = Path.join(pack_dir, "pack.yml") + pack_file_path = Path.join(pack_dir, "pack.json") - unless File.exists?(yaml_path) do - File.write!(yaml_path, RelaxYaml.Encoder.encode(full_pack, [])) + unless File.exists?(pack_file_path) do + File.write!(pack_file_path, Jason.encode!(full_pack)) end end diff --git a/mix.exs b/mix.exs index e8356d564..f2635da24 100644 --- a/mix.exs +++ b/mix.exs @@ -157,7 +157,6 @@ defp deps do {:ex_rated, "~> 1.3"}, {:ex_const, "~> 0.2"}, {:plug_static_index_html, "~> 1.0.0"}, - {:relax_yaml, "~> 0.1"}, {:excoveralls, "~> 0.11.1", only: :test}, {:mox, "~> 0.5", only: :test} ] ++ oauth_deps() diff --git a/mix.lock b/mix.lock index 8852b5f65..d27041b96 100644 --- a/mix.lock +++ b/mix.lock @@ -84,7 +84,6 @@ "quantum": {:hex, :quantum, "2.3.4", "72a0e8855e2adc101459eac8454787cb74ab4169de6ca50f670e72142d4960e9", [:mix], [{:calendar, "~> 0.17", [hex: :calendar, repo: "hexpm", optional: true]}, {:crontab, "~> 1.1", [hex: :crontab, repo: "hexpm", optional: false]}, {:gen_stage, "~> 0.12", [hex: :gen_stage, repo: "hexpm", optional: false]}, {:swarm, "~> 3.3", [hex: :swarm, repo: "hexpm", optional: false]}, {:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: true]}], "hexpm"}, "ranch": {:hex, :ranch, "1.7.1", "6b1fab51b49196860b733a49c07604465a47bdb78aa10c1c16a3d199f7f8c881", [:rebar3], [], "hexpm"}, "recon": {:git, "https://github.com/ferd/recon.git", "75d70c7c08926d2f24f1ee6de14ee50fe8a52763", [tag: "2.4.0"]}, - "relax_yaml": {:hex, :relax_yaml, "0.1.4", "99e55ae80b3bd1135f4288e1ba77b816ad7de05bcb4618a1a9f983ce7c89ff32", [:mix], [{:yamerl, "~> 0.4.0", [hex: :yamerl, repo: "hexpm", optional: false]}], "hexpm"}, "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.4", "f0eafff810d2041e93f915ef59899c923f4568f4585904d010387ed74988e77b", [:make, :mix, :rebar3], [], "hexpm"}, "swarm": {:hex, :swarm, "3.4.0", "64f8b30055d74640d2186c66354b33b999438692a91be275bb89cdc7e401f448", [:mix], [{:gen_state_machine, "~> 2.0", [hex: :gen_state_machine, repo: "hexpm", optional: false]}, {:libring, "~> 1.0", [hex: :libring, repo: "hexpm", optional: false]}], "hexpm"}, "sweet_xml": {:hex, :sweet_xml, "0.6.6", "fc3e91ec5dd7c787b6195757fbcf0abc670cee1e4172687b45183032221b66b8", [:mix], [], "hexpm"}, diff --git a/test/instance_static/emoji/test_pack/pack.json b/test/instance_static/emoji/test_pack/pack.json new file mode 100644 index 000000000..1b260f0f7 --- /dev/null +++ b/test/instance_static/emoji/test_pack/pack.json @@ -0,0 +1,16 @@ +{ + "pack": { + "license": "Test license", + "homepage": "https://pleroma.social", + "description": "Test description", + + "fallblack-src": "https://example.com", + "fallback-src-sha256": "65CDCCBCA9388A68023519F997367783BE69ED42864398CAC568E56F65CE0E75", + + "share-files": true + }, + + "files": { + "blank": "blank.png" + } +} diff --git a/test/instance_static/emoji/test_pack/pack.yml b/test/instance_static/emoji/test_pack/pack.yml deleted file mode 100644 index 851b06d17..000000000 --- a/test/instance_static/emoji/test_pack/pack.yml +++ /dev/null @@ -1,13 +0,0 @@ -pack: - license: Test license - homepage: https://pleroma.social - description: Test description - - fallblack-src: https://example.com - # SHA256 of the fallback-src - fallback-src-sha256: 65CDCCBCA9388A68023519F997367783BE69ED42864398CAC568E56F65CE0E75 - - share-files: true - -files: - blank: blank.png diff --git a/test/instance_static/emoji/test_pack_nonshared/pack.json b/test/instance_static/emoji/test_pack_nonshared/pack.json new file mode 100644 index 000000000..b49b1efe7 --- /dev/null +++ b/test/instance_static/emoji/test_pack_nonshared/pack.json @@ -0,0 +1,16 @@ +{ + "pack": { + "license": "Test license", + "homepage": "https://pleroma.social", + "description": "Test description", + + "fallblack-src": "https://example.com", + "fallback-src-sha256": "65CDCCBCA9388A68023519F997367783BE69ED42864398CAC568E56F65CE0E75", + + "share-files": false + }, + + "files": { + "blank": "blank.png" + } +} diff --git a/test/instance_static/emoji/test_pack_nonshared/pack.yml b/test/instance_static/emoji/test_pack_nonshared/pack.yml deleted file mode 100644 index 45c340415..000000000 --- a/test/instance_static/emoji/test_pack_nonshared/pack.yml +++ /dev/null @@ -1,13 +0,0 @@ -pack: - license: Test license - homepage: https://pleroma.social - description: Test description - - fallblack-src: https://example.com - # SHA256 of the fallback-src - fallback-src-sha256: 65CDCCBCA9388A68023519F997367783BE69ED42864398CAC568E56F65CE0E75 - - share-files: false - -files: - blank: blank.png diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index 13a34d38d..bf56c1516 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -38,7 +38,7 @@ test "downloading a shared pack from download_shared" do {:ok, arch} = :zip.unzip(resp, [:memory]) - assert Enum.find(arch, fn {n, _} -> n == 'pack.yml' end) + assert Enum.find(arch, fn {n, _} -> n == 'pack.json' end) assert Enum.find(arch, fn {n, _} -> n == 'blank.png' end) end @@ -92,7 +92,7 @@ test "downloading a shared pack from another instance via download_from, deletin ) |> text_response(200) == "ok" - assert File.exists?("test/instance_static/emoji/test_pack2/pack.yml") + assert File.exists?("test/instance_static/emoji/test_pack2/pack.json") assert File.exists?("test/instance_static/emoji/test_pack2/blank.png") assert conn From b78973d27f0c9225104914c79cf93bf3589fe7cc Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 15 Aug 2019 11:46:03 +0300 Subject: [PATCH 143/272] fallback can't have pack.json, reflect that in code having pacj.json and sha256 in a fallback pack would cause a circular dependency of itself --- lib/pleroma/web/emoji_api/emoji_api_controller.ex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index aedc70372..3b9eab8b8 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -184,19 +184,19 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = pack_dir = Path.join(@emoji_dir_path, local_name) File.mkdir_p!(pack_dir) + # Fallback cannot contain a pack.json file files = - ['pack.json'] ++ + unless(pinfo[:fallback], do: ['pack.json'], else: []) ++ (pfiles |> Enum.map(fn {_, path} -> to_charlist(path) end)) {:ok, _} = :zip.unzip(emoji_archive, cwd: to_charlist(pack_dir), file_list: files) - # Fallback URL might not contain a pack.json file. Put on we have if there's none + # Fallback can't contain a pack.json file, since that would cause the fallback-src-sha256 + # in it to depend on itself if pinfo[:fallback] do pack_file_path = Path.join(pack_dir, "pack.json") - unless File.exists?(pack_file_path) do - File.write!(pack_file_path, Jason.encode!(full_pack)) - end + File.write!(pack_file_path, Jason.encode!(full_pack)) end conn |> text("ok") From adf31d596e77ef71e2ffe80d9dc41988f6c1cfb5 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 15 Aug 2019 12:07:51 +0300 Subject: [PATCH 144/272] Add tests for downloading from fallback url --- .../emoji/test_pack_nonshared/nonshared.zip | Bin 0 -> 256 bytes .../emoji/test_pack_nonshared/pack.json | 4 +- test/web/emoji_api_controller_test.exs | 40 +++++++++++++++++- 3 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 test/instance_static/emoji/test_pack_nonshared/nonshared.zip diff --git a/test/instance_static/emoji/test_pack_nonshared/nonshared.zip b/test/instance_static/emoji/test_pack_nonshared/nonshared.zip new file mode 100644 index 0000000000000000000000000000000000000000..148446c642ea24b494bc3e25ccd772faaf2f2a13 GIT binary patch literal 256 zcmWIWW@Zs#U|`^2I2p(9A0OT*8Uf_R12HFq3`0^*VqUghL0)=j2qy#cF4@r7Q$So= z!Og(P@`9Ox0ZhE+`B41)>7++V2?-CrektH&y2Pt+hC@XnZuhYzjGD_PDeO;RYuj`( zUAMu8(_j4f1g>LGSdR&<=@xdWn#IJs;|^bzfkATSK6P%elQ2Vo rHzSiAGcLzT0G$W{OBz8ml2chBPDOKOfHx}}NFgH-`UC0NAPxfnZrnv? literal 0 HcmV?d00001 diff --git a/test/instance_static/emoji/test_pack_nonshared/pack.json b/test/instance_static/emoji/test_pack_nonshared/pack.json index b49b1efe7..b96781f81 100644 --- a/test/instance_static/emoji/test_pack_nonshared/pack.json +++ b/test/instance_static/emoji/test_pack_nonshared/pack.json @@ -4,8 +4,8 @@ "homepage": "https://pleroma.social", "description": "Test description", - "fallblack-src": "https://example.com", - "fallback-src-sha256": "65CDCCBCA9388A68023519F997367783BE69ED42864398CAC568E56F65CE0E75", + "fallback-src": "https://nonshared-pack", + "fallback-src-sha256": "74409E2674DAA06C072729C6C8426C4CB3B7E0B85ED77792DB7A436E11D76DAF", "share-files": false }, diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index bf56c1516..aa30e3058 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -42,9 +42,10 @@ test "downloading a shared pack from download_shared" do assert Enum.find(arch, fn {n, _} -> n == 'blank.png' end) end - test "downloading a shared pack from another instance via download_from, deleting it" do + test "downloading shared & unshared packs from another instance via download_from, deleting them" do on_exit(fn -> File.rm_rf!("test/instance_static/emoji/test_pack2") + File.rm_rf!("test/instance_static/emoji/test_pack_nonshared2") end) mock(fn @@ -69,6 +70,12 @@ test "downloading a shared pack from another instance via download_from, deletin |> get(emoji_api_path(conn, :download_shared, "test_pack")) |> response(200) |> text() + + %{ + method: :get, + url: "https://nonshared-pack" + } -> + text(File.read!("test/instance_static/emoji/test_pack_nonshared/nonshared.zip")) end) admin = insert(:user, info: %{is_admin: true}) @@ -101,5 +108,36 @@ test "downloading a shared pack from another instance via download_from, deletin |> response(200) == "ok" refute File.exists?("test/instance_static/emoji/test_pack2") + + # non-shared, downloaded from the fallback URL + + conn = build_conn() + + assert conn + |> put_req_header("content-type", "application/json") + |> assign(:user, admin) + |> post( + emoji_api_path( + conn, + :download_from + ), + %{ + instance_address: "https://example.com", + pack_name: "test_pack_nonshared", + as: "test_pack_nonshared2" + } + |> Jason.encode!() + ) + |> text_response(200) == "ok" + + assert File.exists?("test/instance_static/emoji/test_pack_nonshared2/pack.json") + assert File.exists?("test/instance_static/emoji/test_pack_nonshared2/blank.png") + + assert conn + |> assign(:user, admin) + |> delete(emoji_api_path(conn, :delete, "test_pack_nonshared2")) + |> response(200) == "ok" + + refute File.exists?("test/instance_static/emoji/test_pack_nonshared2") end end From bcc0bfd0c54784fe6a7ccd88fc083bd09dca41af Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 15 Aug 2019 19:55:58 +0300 Subject: [PATCH 145/272] Add an endpoint for emoji pack metadata updating --- .../web/emoji_api/emoji_api_controller.ex | 49 ++++++++++++++++++- lib/pleroma/web/router.ex | 1 + 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 3b9eab8b8..4096ccbed 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -196,7 +196,7 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = if pinfo[:fallback] do pack_file_path = Path.join(pack_dir, "pack.json") - File.write!(pack_file_path, Jason.encode!(full_pack)) + File.write!(pack_file_path, Jason.encode!(full_pack, pretty: true)) end conn |> text("ok") @@ -222,4 +222,51 @@ def delete(conn, %{"name" => name}) do conn |> put_status(:internal_server_error) |> text("Couldn't delete the pack #{name}") end end + + def update_metadata(conn, %{"name" => name, "new_data" => new_data}) do + pack_dir = Path.join(@emoji_dir_path, name) + pack_file_p = Path.join(pack_dir, "pack.json") + + full_pack = Jason.decode!(File.read!(pack_file_p)) + + new_data = + if not is_nil(new_data["fallback-src"]) and is_nil(new_data["fallback-src-sha256"]) do + pack_arch = Tesla.get!(new_data["fallback-src"]).body + + {:ok, flist} = :zip.unzip(pack_arch, [:memory]) + + # Check if all files from the pack.json are in the archive + has_all_files = + Enum.all?(full_pack["files"], fn {_, from_manifest} -> + Enum.find(flist, fn {from_archive, _} -> + to_string(from_archive) == from_manifest + end) + end) + + unless has_all_files do + {:error, + conn + |> put_status(:bad_request) + |> text("The fallback archive does not have all files specified in pack.json")} + else + fallback_sha = :crypto.hash(:sha256, pack_arch) |> Base.encode16() + + {:ok, new_data |> Map.put("fallback-src-sha256", fallback_sha)} + end + else + {:ok, new_data} + end + + case new_data do + {:ok, new_data} -> + full_pack = Map.put(full_pack, "pack", new_data) + File.write!(pack_file_p, Jason.encode!(full_pack, pretty: true)) + + # Send new data back with fallback sha filled + conn |> json(new_data) + + {:error, e} -> + e + end + end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 4df0ca3c3..471d09c43 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -218,6 +218,7 @@ defmodule Pleroma.Web.Router do # Modifying packs pipe_through([:admin_api, :oauth_write]) + post("/update_metadata/:name", EmojiAPIController, :update_metadata) delete("/delete/:name", EmojiAPIController, :delete) post("/download_from", EmojiAPIController, :download_from) end From 9dc9689144a54f3e5513dd26de61ec43421d6d50 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Fri, 16 Aug 2019 13:22:14 +0300 Subject: [PATCH 146/272] Add tests for pack metadata updating --- .../instance_static/emoji/test_pack/pack.json | 3 - test/web/emoji_api_controller_test.exs | 118 ++++++++++++++++-- 2 files changed, 109 insertions(+), 12 deletions(-) diff --git a/test/instance_static/emoji/test_pack/pack.json b/test/instance_static/emoji/test_pack/pack.json index 1b260f0f7..5a8ee75f9 100644 --- a/test/instance_static/emoji/test_pack/pack.json +++ b/test/instance_static/emoji/test_pack/pack.json @@ -4,9 +4,6 @@ "homepage": "https://pleroma.social", "description": "Test description", - "fallblack-src": "https://example.com", - "fallback-src-sha256": "65CDCCBCA9388A68023519F997367783BE69ED42864398CAC568E56F65CE0E75", - "share-files": true }, diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index aa30e3058..759a4dc04 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -5,6 +5,11 @@ defmodule Pleroma.Web.EmojiAPI.EmojiAPIControllerTest do import Pleroma.Factory + @emoji_dir_path Path.join( + Pleroma.Config.get!([:instance, :static_dir]), + "emoji" + ) + test "shared & non-shared pack information in list_packs is ok" do conn = build_conn() resp = conn |> get(emoji_api_path(conn, :list_packs)) |> json_response(200) @@ -44,8 +49,8 @@ test "downloading a shared pack from download_shared" do test "downloading shared & unshared packs from another instance via download_from, deleting them" do on_exit(fn -> - File.rm_rf!("test/instance_static/emoji/test_pack2") - File.rm_rf!("test/instance_static/emoji/test_pack_nonshared2") + File.rm_rf!("#{@emoji_dir_path}/test_pack2") + File.rm_rf!("#{@emoji_dir_path}/test_pack_nonshared2") end) mock(fn @@ -75,7 +80,7 @@ test "downloading shared & unshared packs from another instance via download_fro method: :get, url: "https://nonshared-pack" } -> - text(File.read!("test/instance_static/emoji/test_pack_nonshared/nonshared.zip")) + text(File.read!("#{@emoji_dir_path}/test_pack_nonshared/nonshared.zip")) end) admin = insert(:user, info: %{is_admin: true}) @@ -99,15 +104,15 @@ test "downloading shared & unshared packs from another instance via download_fro ) |> text_response(200) == "ok" - assert File.exists?("test/instance_static/emoji/test_pack2/pack.json") - assert File.exists?("test/instance_static/emoji/test_pack2/blank.png") + assert File.exists?("#{@emoji_dir_path}/test_pack2/pack.json") + assert File.exists?("#{@emoji_dir_path}/test_pack2/blank.png") assert conn |> assign(:user, admin) |> delete(emoji_api_path(conn, :delete, "test_pack2")) |> response(200) == "ok" - refute File.exists?("test/instance_static/emoji/test_pack2") + refute File.exists?("#{@emoji_dir_path}/test_pack2") # non-shared, downloaded from the fallback URL @@ -130,14 +135,109 @@ test "downloading shared & unshared packs from another instance via download_fro ) |> text_response(200) == "ok" - assert File.exists?("test/instance_static/emoji/test_pack_nonshared2/pack.json") - assert File.exists?("test/instance_static/emoji/test_pack_nonshared2/blank.png") + assert File.exists?("#{@emoji_dir_path}/test_pack_nonshared2/pack.json") + assert File.exists?("#{@emoji_dir_path}/test_pack_nonshared2/blank.png") assert conn |> assign(:user, admin) |> delete(emoji_api_path(conn, :delete, "test_pack_nonshared2")) |> response(200) == "ok" - refute File.exists?("test/instance_static/emoji/test_pack_nonshared2") + refute File.exists?("#{@emoji_dir_path}/test_pack_nonshared2") + end + + describe "updating pack metadata" do + setup do + pack_file = "#{@emoji_dir_path}/test_pack/pack.json" + original_content = File.read!(pack_file) + + on_exit(fn -> + File.write!(pack_file, original_content) + end) + + {:ok, + admin: insert(:user, info: %{is_admin: true}), + pack_file: pack_file, + new_data: %{ + "license" => "Test license changed", + "homepage" => "https://pleroma.social", + "description" => "Test description", + "share-files" => false + }} + end + + test "for a pack without a fallback source", ctx do + conn = build_conn() + + assert conn + |> assign(:user, ctx[:admin]) + |> post( + emoji_api_path(conn, :update_metadata, "test_pack"), + %{ + "new_data" => ctx[:new_data] + } + ) + |> json_response(200) == ctx[:new_data] + + assert Jason.decode!(File.read!(ctx[:pack_file]))["pack"] == ctx[:new_data] + end + + test "for a pack with a fallback source", ctx do + mock(fn + %{ + method: :get, + url: "https://nonshared-pack" + } -> + text(File.read!("#{@emoji_dir_path}/test_pack_nonshared/nonshared.zip")) + end) + + new_data = Map.put(ctx[:new_data], "fallback-src", "https://nonshared-pack") + + new_data_with_sha = + Map.put( + new_data, + "fallback-src-sha256", + "74409E2674DAA06C072729C6C8426C4CB3B7E0B85ED77792DB7A436E11D76DAF" + ) + + conn = build_conn() + + assert conn + |> assign(:user, ctx[:admin]) + |> post( + emoji_api_path(conn, :update_metadata, "test_pack"), + %{ + "new_data" => new_data + } + ) + |> json_response(200) == new_data_with_sha + + assert Jason.decode!(File.read!(ctx[:pack_file]))["pack"] == new_data_with_sha + end + + test "when the fallback source doesn't have all the files", ctx do + mock(fn + %{ + method: :get, + url: "https://nonshared-pack" + } -> + {:ok, {'empty.zip', empty_arch}} = :zip.zip('empty.zip', [], [:memory]) + text(empty_arch) + end) + + new_data = Map.put(ctx[:new_data], "fallback-src", "https://nonshared-pack") + + conn = build_conn() + + assert conn + |> assign(:user, ctx[:admin]) + |> post( + emoji_api_path(conn, :update_metadata, "test_pack"), + %{ + "new_data" => new_data + } + ) + |> text_response(:bad_request) =~ "does not have all" + end end end From 261d92f9c2605c720e7fce8b05025e5ac452e5c9 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Fri, 16 Aug 2019 13:30:14 +0300 Subject: [PATCH 147/272] Update the pack fallback-src sha generation condition The old one would not regenerate sha when fallback src changed --- lib/pleroma/web/emoji_api/emoji_api_controller.ex | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 4096ccbed..4873129c4 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -229,8 +229,13 @@ def update_metadata(conn, %{"name" => name, "new_data" => new_data}) do full_pack = Jason.decode!(File.read!(pack_file_p)) + # The new fallback-src is in the new data and it's not the same as it was in the old data + should_update_fb_sha = + not is_nil(new_data["fallback-src"]) and + new_data["fallback-src"] != full_pack["pack"]["fallback-src"] + new_data = - if not is_nil(new_data["fallback-src"]) and is_nil(new_data["fallback-src-sha256"]) do + if should_update_fb_sha do pack_arch = Tesla.get!(new_data["fallback-src"]).body {:ok, flist} = :zip.unzip(pack_arch, [:memory]) From 9afe7258dd5ca1e5a6333a5a9f93d9ab43d4aaf4 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 18 Aug 2019 22:05:38 +0300 Subject: [PATCH 148/272] Implememt emoji pack file updating + write tests --- .../web/emoji_api/emoji_api_controller.ex | 132 +++++++++++++++++- lib/pleroma/web/router.ex | 3 +- test/web/emoji_api_controller_test.exs | 69 ++++++++- 3 files changed, 196 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 4873129c4..dc3dcf1ea 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -223,7 +223,7 @@ def delete(conn, %{"name" => name}) do end end - def update_metadata(conn, %{"name" => name, "new_data" => new_data}) do + def update_metadata(conn, %{"pack_name" => name, "new_data" => new_data}) do pack_dir = Path.join(@emoji_dir_path, name) pack_file_p = Path.join(pack_dir, "pack.json") @@ -274,4 +274,134 @@ def update_metadata(conn, %{"name" => name, "new_data" => new_data}) do e end end + + def update_file( + conn, + %{"pack_name" => pack_name, "action" => action, "shortcode" => shortcode} = params + ) do + pack_dir = Path.join(@emoji_dir_path, pack_name) + pack_file_p = Path.join(pack_dir, "pack.json") + + full_pack = Jason.decode!(File.read!(pack_file_p)) + + res = + case action do + "add" -> + unless Map.has_key?(full_pack["files"], shortcode) do + with %{"file" => %Plug.Upload{filename: filename, path: upload_path}} <- params do + # If there was a file name provided with the request, use it, otherwise just use the + # uploaded file name + filename = + if Map.has_key?(params, "filename") do + params["filename"] + else + filename + end + + file_path = Path.join(pack_dir, filename) + + # If the name contains directories, create them + if String.contains?(file_path, "/") do + File.mkdir_p!(Path.dirname(file_path)) + end + + # Copy the uploaded file from the temporary directory + File.copy!(upload_path, file_path) + + updated_full_pack = put_in(full_pack, ["files", shortcode], filename) + + {:ok, updated_full_pack} + else + _ -> {:error, conn |> put_status(:bad_request) |> text("\"file\" not provided")} + end + else + {:error, + conn + |> put_status(:conflict) + |> text("An emoji with the \"#{shortcode}\" shortcode already exists")} + end + + "remove" -> + if Map.has_key?(full_pack["files"], shortcode) do + {emoji_file_path, updated_full_pack} = pop_in(full_pack, ["files", shortcode]) + + emoji_file_path = Path.join(pack_dir, emoji_file_path) + + # Delete the emoji file + File.rm!(emoji_file_path) + + # If the old directory has no more files, remove it + if String.contains?(emoji_file_path, "/") do + dir = Path.dirname(emoji_file_path) + + if Enum.empty?(File.ls!(dir)) do + File.rmdir!(dir) + end + end + + {:ok, updated_full_pack} + else + {:error, + conn |> put_status(:bad_request) |> text("Emoji \"#{shortcode}\" does not exist")} + end + + "update" -> + if Map.has_key?(full_pack["files"], shortcode) do + with %{"new_shortcode" => new_shortcode, "new_filename" => new_filename} <- params do + # First, remove the old shortcode, saving the old path + {old_emoji_file_path, updated_full_pack} = pop_in(full_pack, ["files", shortcode]) + old_emoji_file_path = Path.join(pack_dir, old_emoji_file_path) + new_emoji_file_path = Path.join(pack_dir, new_filename) + + # If the name contains directories, create them + if String.contains?(new_emoji_file_path, "/") do + File.mkdir_p!(Path.dirname(new_emoji_file_path)) + end + + # Move/Rename the old filename to a new filename + # These are probably on the same filesystem, so just rename should work + :ok = File.rename(old_emoji_file_path, new_emoji_file_path) + + # If the old directory has no more files, remove it + if String.contains?(old_emoji_file_path, "/") do + dir = Path.dirname(old_emoji_file_path) + + if Enum.empty?(File.ls!(dir)) do + File.rmdir!(dir) + end + end + + # Then, put in the new shortcode with the new path + updated_full_pack = + put_in(updated_full_pack, ["files", new_shortcode], new_filename) + + {:ok, updated_full_pack} + else + _ -> + {:error, + conn + |> put_status(:bad_request) + |> text("new_shortcode or new_file were not specified")} + end + else + {:error, + conn |> put_status(:bad_request) |> text("Emoji \"#{shortcode}\" does not exist")} + end + + _ -> + {:error, conn |> put_status(:bad_request) |> text("Unknown action: #{action}")} + end + + case res do + {:ok, updated_full_pack} -> + # Write the emoji pack file + File.write!(pack_file_p, Jason.encode!(updated_full_pack, pretty: true)) + + # Return the modified file list + conn |> json(updated_full_pack["files"]) + + {:error, e} -> + e + end + end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 471d09c43..acd6f740b 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -218,7 +218,8 @@ defmodule Pleroma.Web.Router do # Modifying packs pipe_through([:admin_api, :oauth_write]) - post("/update_metadata/:name", EmojiAPIController, :update_metadata) + post("/update_file/:pack_name", EmojiAPIController, :update_file) + post("/update_metadata/:pack_name", EmojiAPIController, :update_metadata) delete("/delete/:name", EmojiAPIController, :delete) post("/download_from", EmojiAPIController, :download_from) end diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index 759a4dc04..6d3603da5 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -85,11 +85,10 @@ test "downloading shared & unshared packs from another instance via download_fro admin = insert(:user, info: %{is_admin: true}) - conn = build_conn() + conn = build_conn() |> assign(:user, admin) assert conn |> put_req_header("content-type", "application/json") - |> assign(:user, admin) |> post( emoji_api_path( conn, @@ -108,7 +107,6 @@ test "downloading shared & unshared packs from another instance via download_fro assert File.exists?("#{@emoji_dir_path}/test_pack2/blank.png") assert conn - |> assign(:user, admin) |> delete(emoji_api_path(conn, :delete, "test_pack2")) |> response(200) == "ok" @@ -116,11 +114,10 @@ test "downloading shared & unshared packs from another instance via download_fro # non-shared, downloaded from the fallback URL - conn = build_conn() + conn = build_conn() |> assign(:user, admin) assert conn |> put_req_header("content-type", "application/json") - |> assign(:user, admin) |> post( emoji_api_path( conn, @@ -139,7 +136,6 @@ test "downloading shared & unshared packs from another instance via download_fro assert File.exists?("#{@emoji_dir_path}/test_pack_nonshared2/blank.png") assert conn - |> assign(:user, admin) |> delete(emoji_api_path(conn, :delete, "test_pack_nonshared2")) |> response(200) == "ok" @@ -240,4 +236,65 @@ test "when the fallback source doesn't have all the files", ctx do |> text_response(:bad_request) =~ "does not have all" end end + + test "updating pack files" do + pack_file = "#{@emoji_dir_path}/test_pack/pack.json" + original_content = File.read!(pack_file) + + on_exit(fn -> + File.write!(pack_file, original_content) + + File.rm_rf!("#{@emoji_dir_path}/test_pack/dir") + File.rm_rf!("#{@emoji_dir_path}/test_pack/dir_2") + end) + + admin = insert(:user, info: %{is_admin: true}) + + conn = build_conn() + + same_name = %{ + "action" => "add", + "shortcode" => "blank", + "filename" => "dir/blank.png", + "file" => %Plug.Upload{ + filename: "blank.png", + path: "#{@emoji_dir_path}/test_pack/blank.png" + } + } + + different_name = %{same_name | "shortcode" => "blank_2"} + + conn = conn |> assign(:user, admin) + + assert conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), same_name) + |> text_response(:conflict) =~ "already exists" + + assert conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), different_name) + |> json_response(200) == %{"blank" => "blank.png", "blank_2" => "dir/blank.png"} + + assert File.exists?("#{@emoji_dir_path}/test_pack/dir/blank.png") + + assert conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ + "action" => "update", + "shortcode" => "blank_2", + "new_shortcode" => "blank_3", + "new_filename" => "dir_2/blank_3.png" + }) + |> json_response(200) == %{"blank" => "blank.png", "blank_3" => "dir_2/blank_3.png"} + + refute File.exists?("#{@emoji_dir_path}/test_pack/dir/") + assert File.exists?("#{@emoji_dir_path}/test_pack/dir_2/blank_3.png") + + assert conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ + "action" => "remove", + "shortcode" => "blank_3" + }) + |> json_response(200) == %{"blank" => "blank.png"} + + refute File.exists?("#{@emoji_dir_path}/test_pack/dir_2/") + end end From 16edfef12e6781971e2056a80a0ac38dcc254b1b Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Mon, 19 Aug 2019 19:26:15 +0300 Subject: [PATCH 149/272] Handle empty shortcode/filename/new_shortcode/new_filename --- .../web/emoji_api/emoji_api_controller.ex | 88 +++++++++++-------- 1 file changed, 52 insertions(+), 36 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index dc3dcf1ea..fdecbb700 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -298,19 +298,27 @@ def update_file( filename end - file_path = Path.join(pack_dir, filename) + unless String.trim(shortcode) |> String.length() == 0 or + String.trim(filename) |> String.length() == 0 do + file_path = Path.join(pack_dir, filename) - # If the name contains directories, create them - if String.contains?(file_path, "/") do - File.mkdir_p!(Path.dirname(file_path)) + # If the name contains directories, create them + if String.contains?(file_path, "/") do + File.mkdir_p!(Path.dirname(file_path)) + end + + # Copy the uploaded file from the temporary directory + File.copy!(upload_path, file_path) + + updated_full_pack = put_in(full_pack, ["files", shortcode], filename) + + {:ok, updated_full_pack} + else + {:error, + conn + |> put_status(:bad_request) + |> text("shortcode or filename cannot be empty")} end - - # Copy the uploaded file from the temporary directory - File.copy!(upload_path, file_path) - - updated_full_pack = put_in(full_pack, ["files", shortcode], filename) - - {:ok, updated_full_pack} else _ -> {:error, conn |> put_status(:bad_request) |> text("\"file\" not provided")} end @@ -348,34 +356,42 @@ def update_file( "update" -> if Map.has_key?(full_pack["files"], shortcode) do with %{"new_shortcode" => new_shortcode, "new_filename" => new_filename} <- params do - # First, remove the old shortcode, saving the old path - {old_emoji_file_path, updated_full_pack} = pop_in(full_pack, ["files", shortcode]) - old_emoji_file_path = Path.join(pack_dir, old_emoji_file_path) - new_emoji_file_path = Path.join(pack_dir, new_filename) + unless String.trim(new_shortcode) |> String.length() == 0 or + String.trim(new_filename) |> String.length() == 0 do + # First, remove the old shortcode, saving the old path + {old_emoji_file_path, updated_full_pack} = pop_in(full_pack, ["files", shortcode]) + old_emoji_file_path = Path.join(pack_dir, old_emoji_file_path) + new_emoji_file_path = Path.join(pack_dir, new_filename) - # If the name contains directories, create them - if String.contains?(new_emoji_file_path, "/") do - File.mkdir_p!(Path.dirname(new_emoji_file_path)) - end - - # Move/Rename the old filename to a new filename - # These are probably on the same filesystem, so just rename should work - :ok = File.rename(old_emoji_file_path, new_emoji_file_path) - - # If the old directory has no more files, remove it - if String.contains?(old_emoji_file_path, "/") do - dir = Path.dirname(old_emoji_file_path) - - if Enum.empty?(File.ls!(dir)) do - File.rmdir!(dir) + # If the name contains directories, create them + if String.contains?(new_emoji_file_path, "/") do + File.mkdir_p!(Path.dirname(new_emoji_file_path)) end + + # Move/Rename the old filename to a new filename + # These are probably on the same filesystem, so just rename should work + :ok = File.rename(old_emoji_file_path, new_emoji_file_path) + + # If the old directory has no more files, remove it + if String.contains?(old_emoji_file_path, "/") do + dir = Path.dirname(old_emoji_file_path) + + if Enum.empty?(File.ls!(dir)) do + File.rmdir!(dir) + end + end + + # Then, put in the new shortcode with the new path + updated_full_pack = + put_in(updated_full_pack, ["files", new_shortcode], new_filename) + + {:ok, updated_full_pack} + else + {:error, + conn + |> put_status(:bad_request) + |> text("new_shortcode or new_filename cannot be empty")} end - - # Then, put in the new shortcode with the new path - updated_full_pack = - put_in(updated_full_pack, ["files", new_shortcode], new_filename) - - {:ok, updated_full_pack} else _ -> {:error, From 8dbdd5c280d15fde4712989001d4ddee1cd37cff Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Tue, 20 Aug 2019 14:52:36 +0300 Subject: [PATCH 150/272] Allow uploading new emojis to packs from URLs --- .../web/emoji_api/emoji_api_controller.ex | 65 ++++++++++--------- test/web/emoji_api_controller_test.exs | 34 ++++++++++ 2 files changed, 69 insertions(+), 30 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index fdecbb700..87ae0e092 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -288,39 +288,44 @@ def update_file( case action do "add" -> unless Map.has_key?(full_pack["files"], shortcode) do - with %{"file" => %Plug.Upload{filename: filename, path: upload_path}} <- params do - # If there was a file name provided with the request, use it, otherwise just use the - # uploaded file name - filename = - if Map.has_key?(params, "filename") do - params["filename"] - else - filename - end - - unless String.trim(shortcode) |> String.length() == 0 or - String.trim(filename) |> String.length() == 0 do - file_path = Path.join(pack_dir, filename) - - # If the name contains directories, create them - if String.contains?(file_path, "/") do - File.mkdir_p!(Path.dirname(file_path)) - end - - # Copy the uploaded file from the temporary directory - File.copy!(upload_path, file_path) - - updated_full_pack = put_in(full_pack, ["files", shortcode], filename) - - {:ok, updated_full_pack} + filename = + if Map.has_key?(params, "filename") do + params["filename"] else - {:error, - conn - |> put_status(:bad_request) - |> text("shortcode or filename cannot be empty")} + case params["file"] do + %Plug.Upload{filename: filename} -> filename + url when is_binary(url) -> Path.basename(url) + end end + + unless String.trim(shortcode) |> String.length() == 0 or + String.trim(filename) |> String.length() == 0 do + file_path = Path.join(pack_dir, filename) + + # If the name contains directories, create them + if String.contains?(file_path, "/") do + File.mkdir_p!(Path.dirname(file_path)) + end + + case params["file"] do + %Plug.Upload{path: upload_path} -> + # Copy the uploaded file from the temporary directory + File.copy!(upload_path, file_path) + + url when is_binary(url) -> + # Download and write the file + file_contents = Tesla.get!(url).body + File.write!(file_path, file_contents) + end + + updated_full_pack = put_in(full_pack, ["files", shortcode], filename) + + {:ok, updated_full_pack} else - _ -> {:error, conn |> put_status(:bad_request) |> text("\"file\" not provided")} + {:error, + conn + |> put_status(:bad_request) + |> text("shortcode or filename cannot be empty")} end else {:error, diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index 6d3603da5..c1aece691 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -244,6 +244,7 @@ test "updating pack files" do on_exit(fn -> File.write!(pack_file, original_content) + File.rm_rf!("#{@emoji_dir_path}/test_pack/blank_url.png") File.rm_rf!("#{@emoji_dir_path}/test_pack/dir") File.rm_rf!("#{@emoji_dir_path}/test_pack/dir_2") end) @@ -296,5 +297,38 @@ test "updating pack files" do |> json_response(200) == %{"blank" => "blank.png"} refute File.exists?("#{@emoji_dir_path}/test_pack/dir_2/") + + mock(fn + %{ + method: :get, + url: "https://test-blank/blank_url.png" + } -> + text(File.read!("#{@emoji_dir_path}/test_pack/blank.png")) + end) + + # The name should be inferred from the URL ending + from_url = %{ + "action" => "add", + "shortcode" => "blank_url", + "file" => "https://test-blank/blank_url.png" + } + + assert conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), from_url) + |> json_response(200) == %{ + "blank" => "blank.png", + "blank_url" => "blank_url.png" + } + + assert File.exists?("#{@emoji_dir_path}/test_pack/blank_url.png") + + assert conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), %{ + "action" => "remove", + "shortcode" => "blank_url" + }) + |> json_response(200) == %{"blank" => "blank.png"} + + refute File.exists?("#{@emoji_dir_path}/test_pack/blank_url.png") end end From 6b4a144e4d9fa17db6fbda800511f7f41ae1c731 Mon Sep 17 00:00:00 2001 From: vaartis Date: Sat, 24 Aug 2019 21:58:21 +0000 Subject: [PATCH 151/272] Remove unused yaml dependency from mix.lock --- mix.lock | 1 - 1 file changed, 1 deletion(-) diff --git a/mix.lock b/mix.lock index d27041b96..24b34c09c 100644 --- a/mix.lock +++ b/mix.lock @@ -99,5 +99,4 @@ "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm"}, "web_push_encryption": {:hex, :web_push_encryption, "0.2.1", "d42cecf73420d9dc0053ba3299cc8c8d6ff2be2487d67ca2a57265868e4d9a98", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}, {:poison, "~> 3.0", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm"}, "websocket_client": {:git, "https://github.com/jeremyong/websocket_client.git", "9a6f65d05ebf2725d62fb19262b21f1805a59fbf", []}, - "yamerl": {:hex, :yamerl, "0.4.0", "ae215b1242810a9bc07716b88062f1bfe06f6bc7cf68372091f630baa536df79", [:rebar3], [], "hexpm"}, } From f5131540dc9bbf8038e6625f4524ca01b52abbbf Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 28 Aug 2019 19:29:01 +0300 Subject: [PATCH 152/272] Add a way to create emoji packs via an endpoint --- .../web/emoji_api/emoji_api_controller.ex | 21 ++++++++++++ lib/pleroma/web/router.ex | 1 + test/web/emoji_api_controller_test.exs | 34 +++++++++++++++++++ 3 files changed, 56 insertions(+) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 87ae0e092..0bd9cd207 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -211,6 +211,27 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = end end + def create(conn, %{"name" => name}) do + pack_dir = Path.join(@emoji_dir_path, name) + + unless File.exists?(pack_dir) do + File.mkdir_p!(pack_dir) + + pack_file_p = Path.join(pack_dir, "pack.json") + + File.write!( + pack_file_p, + Jason.encode!(%{pack: %{}, files: %{}}) + ) + + conn |> text("ok") + else + conn + |> put_status(:conflict) + |> text("A pack named \"#{name}\" already exists") + end + end + def delete(conn, %{"name" => name}) do pack_dir = Path.join(@emoji_dir_path, name) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index acd6f740b..a21fefc70 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -220,6 +220,7 @@ defmodule Pleroma.Web.Router do post("/update_file/:pack_name", EmojiAPIController, :update_file) post("/update_metadata/:pack_name", EmojiAPIController, :update_metadata) + post("/create/:name", EmojiAPIController, :create) delete("/delete/:name", EmojiAPIController, :delete) post("/download_from", EmojiAPIController, :download_from) end diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index c1aece691..fa194a26c 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -331,4 +331,38 @@ test "updating pack files" do refute File.exists?("#{@emoji_dir_path}/test_pack/blank_url.png") end + + test "creating and deleting a pack" do + on_exit(fn -> + File.rm_rf!("#{@emoji_dir_path}/test_created") + end) + + admin = insert(:user, info: %{is_admin: true}) + + conn = build_conn() |> assign(:user, admin) + + assert conn + |> put_req_header("content-type", "application/json") + |> post( + emoji_api_path( + conn, + :create, + "test_created" + ) + ) + |> text_response(200) == "ok" + + assert File.exists?("#{@emoji_dir_path}/test_created/pack.json") + + assert Jason.decode!(File.read!("#{@emoji_dir_path}/test_created/pack.json")) == %{ + "pack" => %{}, + "files" => %{} + } + + assert conn + |> delete(emoji_api_path(conn, :delete, "test_created")) + |> response(200) == "ok" + + refute File.exists?("#{@emoji_dir_path}/test_created/pack.json") + end end From 13cd93a0d314238427c217ec0ab8f59f329321f5 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 1 Sep 2019 15:38:45 +0300 Subject: [PATCH 153/272] Use && insted of "and" for checking shared-files for packs share-files can be nil and "and" does not like that --- lib/pleroma/web/emoji_api/emoji_api_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 0bd9cd207..f34a4e08c 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -64,7 +64,7 @@ defp can_download?(pack, pack_path) do # If the pack is set as shared, check if it can be downloaded # That means that when asked, the pack can be packed and sent to the remote # Otherwise, they'd have to download it from external-src - pack["pack"]["share-files"] and + pack["pack"]["share-files"] && Enum.all?(pack["files"], fn {_, path} -> File.exists?(Path.join(pack_path, path)) end) From 9eb2ee4df0478daec1172eec2289868105b72756 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Tue, 10 Sep 2019 21:16:30 +0300 Subject: [PATCH 154/272] Allow importing old (emoji.txt / plain) packs from the filesystem --- .../web/emoji_api/emoji_api_controller.ex | 66 ++++++++++++++++++ lib/pleroma/web/router.ex | 2 + .../emoji/test_pack_for_import/blank.png | Bin 0 -> 95 bytes test/web/emoji_api_controller_test.exs | 41 +++++++++++ 4 files changed, 109 insertions(+) create mode 100644 test/instance_static/emoji/test_pack_for_import/blank.png diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index f34a4e08c..dffb91b0f 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -446,4 +446,70 @@ def update_file( e end end + + def import_from_fs(conn, _params) do + case File.ls(@emoji_dir_path) do + {:error, _} -> + conn + |> put_status(:internal_server_error) + |> text("Error accessing emoji pack directory") + + {:ok, results} -> + imported_pack_names = + results + |> Enum.filter(fn file -> + dir_path = Path.join(@emoji_dir_path, file) + # Find the directories that do NOT have pack.json + File.dir?(dir_path) and not File.exists?(Path.join(dir_path, "pack.json")) + end) + |> Enum.map(fn dir -> + dir_path = Path.join(@emoji_dir_path, dir) + emoji_txt_path = Path.join(dir_path, "emoji.txt") + + files_for_pack = + if File.exists?(emoji_txt_path) do + # There's an emoji.txt file, it's likely from a pack installed by the pack manager. + # Make a pack.json file from the contents of that emoji.txt fileh + + # FIXME: Copy-pasted from Pleroma.Emoji/load_from_file_stream/2 + + # Create a map of shortcodes to filenames from emoji.txt + + File.read!(emoji_txt_path) + |> String.split("\n") + |> Enum.map(&String.trim/1) + |> Enum.map(fn line -> + case String.split(line, ~r/,\s*/) do + # This matches both strings with and without tags and we don't care about tags here + [name, file | _] -> + {name, file} + + _ -> + nil + end + end) + |> Enum.filter(fn x -> not is_nil(x) end) + |> Enum.into(%{}) + else + # If there's no emoji.txt, assume all files that are of certain extensions from the config + # are emojis and import them all + Pleroma.Emoji.make_shortcode_to_file_map( + dir_path, + Pleroma.Config.get!([:emoji, :pack_extensions]) + ) + end + + pack_json_contents = Jason.encode!(%{pack: %{}, files: files_for_pack}) + + File.write!( + Path.join(dir_path, "pack.json"), + pack_json_contents + ) + + dir + end) + + conn |> json(imported_pack_names) + end + end end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index a21fefc70..1252048f0 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -218,6 +218,8 @@ defmodule Pleroma.Web.Router do # Modifying packs pipe_through([:admin_api, :oauth_write]) + post("/import_from_fs", EmojiAPIController, :import_from_fs) + post("/update_file/:pack_name", EmojiAPIController, :update_file) post("/update_metadata/:pack_name", EmojiAPIController, :update_metadata) post("/create/:name", EmojiAPIController, :create) diff --git a/test/instance_static/emoji/test_pack_for_import/blank.png b/test/instance_static/emoji/test_pack_for_import/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..8f50fa02340e7e09e562f86e00b6e4bd6ad1d565 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^4Is=2Bp6=1#-sr$rjj7PU + File.rm!("#{@emoji_dir_path}/test_pack_for_import/emoji.txt") + File.rm!("#{@emoji_dir_path}/test_pack_for_import/pack.json") + end) + + conn = build_conn() + resp = conn |> get(emoji_api_path(conn, :list_packs)) |> json_response(200) + + refute Map.has_key?(resp, "test_pack_for_import") + + admin = insert(:user, info: %{is_admin: true}) + + assert conn + |> assign(:user, admin) + |> post(emoji_api_path(conn, :import_from_fs)) + |> json_response(200) == ["test_pack_for_import"] + + resp = conn |> get(emoji_api_path(conn, :list_packs)) |> json_response(200) + assert resp["test_pack_for_import"]["files"] == %{"blank" => "blank.png"} + + File.rm!("#{@emoji_dir_path}/test_pack_for_import/pack.json") + refute File.exists?("#{@emoji_dir_path}/test_pack_for_import/pack.json") + + emoji_txt_content = "blank, blank.png, Fun\n\nblank2, blank.png" + + File.write!("#{@emoji_dir_path}/test_pack_for_import/emoji.txt", emoji_txt_content) + + assert conn + |> assign(:user, admin) + |> post(emoji_api_path(conn, :import_from_fs)) + |> json_response(200) == ["test_pack_for_import"] + + resp = conn |> get(emoji_api_path(conn, :list_packs)) |> json_response(200) + + assert resp["test_pack_for_import"]["files"] == %{ + "blank" => "blank.png", + "blank2" => "blank.png" + } + end end From 87057101b0e14eb51ff9367dfe9c5522ea933161 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Tue, 10 Sep 2019 21:34:57 +0300 Subject: [PATCH 155/272] Add documentation for the emoji api endpoints --- .../web/emoji_api/emoji_api_controller.ex | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index dffb91b0f..dc676b00f 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -16,6 +16,12 @@ def reload(conn, _params) do @cache_seconds_per_file Pleroma.Config.get!([:emoji, :shared_pack_cache_seconds_per_file]) + @doc """ + Lists the packs available on the instance as JSON. + + The information is public and does not require authentification. The format is + a map of "pack directory name" to pack.json contents. + """ def list_packs(conn, _params) do pack_infos = case File.ls(@emoji_dir_path) do @@ -116,6 +122,10 @@ defp make_archive(name, pack, pack_dir) do zip_result end + @doc """ + An endpoint for other instances (via admin UI) or users (via browser) + to download packs that the instance shares. + """ def download_shared(conn, %{"name" => name}) do pack_dir = Path.join(@emoji_dir_path, name) pack_file = Path.join(pack_dir, "pack.json") @@ -143,6 +153,13 @@ def download_shared(conn, %{"name" => name}) do end end + @doc """ + An admin endpoint to request downloading a pack named `pack_name` from the instance + `instance_address`. + + If the requested instance's admin chose to share the pack, it will be downloaded + from that instance, otherwise it will be downloaded from the fallback source, if there is one. + """ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = data) do list_uri = "#{address}/api/pleroma/emoji/packs/list" @@ -211,6 +228,9 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = end end + @doc """ + Creates an empty pack named `name` which then can be updated via the admin UI. + """ def create(conn, %{"name" => name}) do pack_dir = Path.join(@emoji_dir_path, name) @@ -232,6 +252,9 @@ def create(conn, %{"name" => name}) do end end + @doc """ + Deletes the pack `name` and all it's files. + """ def delete(conn, %{"name" => name}) do pack_dir = Path.join(@emoji_dir_path, name) @@ -244,6 +267,11 @@ def delete(conn, %{"name" => name}) do end end + @doc """ + An endpoint to update `pack_names`'s metadata. + + `new_data` is the new metadata for the pack, that will replace the old metadata. + """ def update_metadata(conn, %{"pack_name" => name, "new_data" => new_data}) do pack_dir = Path.join(@emoji_dir_path, name) pack_file_p = Path.join(pack_dir, "pack.json") @@ -296,6 +324,20 @@ def update_metadata(conn, %{"pack_name" => name, "new_data" => new_data}) do end end + @doc """ + Updates a file in a pack. + + Updating can mean three things: + + - `add` adds an emoji named `shortcode` to the pack `pack_name`, + that means that the emoji file needs to be uploaded with the request + (thus requiring it to be a multipart request) and be named `file`. + There can also be an optional `filename` that will be the new emoji file name + (if it's not there, the name will be taken from the uploaded file). + - `update` changes emoji shortcode (from `shortcode` to `new_shortcode` or moves the file + (from the current filename to `new_filename`) + - `remove` removes the emoji named `shortcode` and it's associated file + """ def update_file( conn, %{"pack_name" => pack_name, "action" => action, "shortcode" => shortcode} = params @@ -447,6 +489,16 @@ def update_file( end end + @doc """ + Imports emoji from the filesystem. + + Importing means checking all the directories in the + `$instance_static/emoji/` for directories which do not have + `pack.json`. If one has an emoji.txt file, that file will be used + to create a `pack.json` file with it's contents. If the directory has + neither, all the files with specific configured extenstions will be + assumed to be emojis and stored in the new `pack.json` file. + """ def import_from_fs(conn, _params) do case File.ls(@emoji_dir_path) do {:error, _} -> From f6d4acc87181c94fa202ff5673f741ae9cb45b14 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Tue, 10 Sep 2019 22:09:20 +0300 Subject: [PATCH 156/272] Fix credo warnings --- lib/pleroma/web/emoji_api/emoji_api_controller.ex | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index dc676b00f..cbd237519 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -532,7 +532,8 @@ def import_from_fs(conn, _params) do |> Enum.map(&String.trim/1) |> Enum.map(fn line -> case String.split(line, ~r/,\s*/) do - # This matches both strings with and without tags and we don't care about tags here + # This matches both strings with and without tags + # and we don't care about tags here [name, file | _] -> {name, file} @@ -543,8 +544,8 @@ def import_from_fs(conn, _params) do |> Enum.filter(fn x -> not is_nil(x) end) |> Enum.into(%{}) else - # If there's no emoji.txt, assume all files that are of certain extensions from the config - # are emojis and import them all + # If there's no emoji.txt, assume all files + # that are of certain extensions from the config are emojis and import them all Pleroma.Emoji.make_shortcode_to_file_map( dir_path, Pleroma.Config.get!([:emoji, :pack_extensions]) From 163082de6f789044b4fcb0c69f5b4cfd89731903 Mon Sep 17 00:00:00 2001 From: vaartis Date: Wed, 11 Sep 2019 09:07:19 +0000 Subject: [PATCH 157/272] Apply suggestion to lib/pleroma/web/emoji_api/emoji_api_controller.ex --- .../web/emoji_api/emoji_api_controller.ex | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index cbd237519..499802fa5 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -104,22 +104,14 @@ defp make_archive(name, pack, pack_dir) do # Having a different pack.json md5 invalidates cache pack_file_md5 = :crypto.hash(:md5, File.read!(Path.join(pack_dir, "pack.json"))) - maybe_cached_pack = Cachex.get!(:emoji_packs_cache, name) + case Cachex.get!(:emoji_packs_cache, name) do + %{pack_file_md5: ^pack_file_md5, pack_data: zip_result} -> + Logger.debug("Using cache for the '#{name}' shared emoji pack") + zip_result - zip_result = - if is_nil(maybe_cached_pack) do + _ -> create_archive_and_cache(name, pack, pack_dir, pack_file_md5) - else - if maybe_cached_pack[:pack_file_md5] == pack_file_md5 do - Logger.debug("Using cache for the '#{name}' shared emoji pack") - - maybe_cached_pack[:pack_data] - else - create_archive_and_cache(name, pack, pack_dir, pack_file_md5) - end - end - - zip_result + end end @doc """ From c049c32270b8f70ae679e739730a3f63cdbd7d95 Mon Sep 17 00:00:00 2001 From: vaartis Date: Wed, 11 Sep 2019 09:12:22 +0000 Subject: [PATCH 158/272] Fixed a typo in create_archive_and_cache --- lib/pleroma/web/emoji_api/emoji_api_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 499802fa5..51620a3eb 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -94,7 +94,7 @@ defp create_archive_and_cache(name, pack, pack_dir, md5) do ttl: cache_ms ) - Logger.debug("Create an archive for the '#{name}' emoji pack, \ + Logger.debug("Created an archive for the '#{name}' emoji pack, \ keeping it in cache for #{div(cache_ms, 1000)}s") zip_result From f251225caeede08869b472886337afea0cd47d51 Mon Sep 17 00:00:00 2001 From: vaartis Date: Wed, 11 Sep 2019 15:32:54 +0000 Subject: [PATCH 159/272] Apply suggestions to emoji_api_controller.ex --- .../web/emoji_api/emoji_api_controller.ex | 201 +++++++++--------- 1 file changed, 95 insertions(+), 106 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 51620a3eb..0c3da6740 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -153,31 +153,32 @@ def download_shared(conn, %{"name" => name}) do from that instance, otherwise it will be downloaded from the fallback source, if there is one. """ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = data) do - list_uri = "#{address}/api/pleroma/emoji/packs/list" - - list = Tesla.get!(list_uri).body |> Jason.decode!() - full_pack = list[name] + full_pack = + "#{address}/api/pleroma/emoji/packs/list" + |> Tesla.get!() + |> Map.get(:body) + |> Jason.decode!() + |> Map.get(name) pfiles = full_pack["files"] - pack = full_pack["pack"] pack_info_res = - cond do - pack["share-files"] && pack["can-download"] -> + case full_pack["pack"] do + %{"share-files" => true, "can-download" => true, "download-sha256" => sha} -> {:ok, %{ - sha: pack["download-sha256"], + sha: sha, uri: "#{address}/api/pleroma/emoji/packs/download_shared/#{name}" }} - pack["fallback-src"] -> + %{"fallback-src" => src, "fallback-src-sha256" => sha} when is_binary(src) -> {:ok, %{ - sha: pack["fallback-src-sha256"], - uri: pack["fallback-src"], + sha: sha, + uri: src, fallback: true }} - true -> + _ -> {:error, "The pack was not set as shared and there is no fallback src to download from"} end @@ -194,9 +195,9 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = File.mkdir_p!(pack_dir) # Fallback cannot contain a pack.json file - files = - unless(pinfo[:fallback], do: ['pack.json'], else: []) ++ - (pfiles |> Enum.map(fn {_, path} -> to_charlist(path) end)) + files = Enum.map(full_pack["files"], fn {_, path} -> to_charlist(path) end) + # Fallback cannot contain a pack.json file + files = if pinfo[:fallback], do: files, else: ['pack.json'] ++ files {:ok, _} = :zip.unzip(emoji_archive, cwd: to_charlist(pack_dir), file_list: files) @@ -226,7 +227,7 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = def create(conn, %{"name" => name}) do pack_dir = Path.join(@emoji_dir_path, name) - unless File.exists?(pack_dir) do + if not File.exists?(pack_dir) do File.mkdir_p!(pack_dir) pack_file_p = Path.join(pack_dir, "pack.json") @@ -265,8 +266,7 @@ def delete(conn, %{"name" => name}) do `new_data` is the new metadata for the pack, that will replace the old metadata. """ def update_metadata(conn, %{"pack_name" => name, "new_data" => new_data}) do - pack_dir = Path.join(@emoji_dir_path, name) - pack_file_p = Path.join(pack_dir, "pack.json") + pack_file_p = Path.join([@emoji_dir_path, name, "pack.json"]) full_pack = Jason.decode!(File.read!(pack_file_p)) @@ -275,47 +275,42 @@ def update_metadata(conn, %{"pack_name" => name, "new_data" => new_data}) do not is_nil(new_data["fallback-src"]) and new_data["fallback-src"] != full_pack["pack"]["fallback-src"] - new_data = - if should_update_fb_sha do - pack_arch = Tesla.get!(new_data["fallback-src"]).body + with {_, true} <- {:should_update?, should_update_fb_sha}, + %{body: pack_arch} <- Tesla.get!(new_data["fallback-src"]), + {:ok, flist} <- :zip.unzip(pack_arch, [:memory]), + {_, true} <- {:has_all_files?, has_all_files?(full_pack, flist)} do + fallback_sha = :crypto.hash(:sha256, pack_arch) |> Base.encode16() - {:ok, flist} = :zip.unzip(pack_arch, [:memory]) + new_data = Map.put(new_data, "fallback-src-sha256", fallback_sha) + update_metadata_and_send(conn, full_pack, new_data, pack_file_p) + else + {:should_update?, _} -> + update_metadata_and_send(conn, full_pack, new_data, pack_file_p) - # Check if all files from the pack.json are in the archive - has_all_files = - Enum.all?(full_pack["files"], fn {_, from_manifest} -> - Enum.find(flist, fn {from_archive, _} -> - to_string(from_archive) == from_manifest - end) - end) - - unless has_all_files do - {:error, - conn - |> put_status(:bad_request) - |> text("The fallback archive does not have all files specified in pack.json")} - else - fallback_sha = :crypto.hash(:sha256, pack_arch) |> Base.encode16() - - {:ok, new_data |> Map.put("fallback-src-sha256", fallback_sha)} - end - else - {:ok, new_data} - end - - case new_data do - {:ok, new_data} -> - full_pack = Map.put(full_pack, "pack", new_data) - File.write!(pack_file_p, Jason.encode!(full_pack, pretty: true)) - - # Send new data back with fallback sha filled - conn |> json(new_data) - - {:error, e} -> - e + {:has_all_files?, _} -> + conn + |> put_status(:bad_request) + |> text("The fallback archive does not have all files specified in pack.json") end end + # Check if all files from the pack.json are in the archive + defp has_all_files?(%{"files" => files}, flist) do + Enum.all?(files, fn {_, from_manifest} -> + Enum.find(flist, fn {from_archive, _} -> + to_string(from_archive) == from_manifest + end) + end) + end + + defp update_metadata_and_send(conn, full_pack, new_data, pack_file_p) do + full_pack = Map.put(full_pack, "pack", new_data) + File.write!(pack_file_p, Jason.encode!(full_pack, pretty: true)) + + # Send new data back with fallback sha filled + json(conn, new_data) + end + @doc """ Updates a file in a pack. @@ -492,69 +487,63 @@ def update_file( assumed to be emojis and stored in the new `pack.json` file. """ def import_from_fs(conn, _params) do - case File.ls(@emoji_dir_path) do + with {:ok, results} <- File.ls(@emoji_dir_path) do + imported_pack_names = + results + |> Enum.filter(fn file -> + dir_path = Path.join(@emoji_dir_path, file) + # Find the directories that do NOT have pack.json + File.dir?(dir_path) and not File.exists?(Path.join(dir_path, "pack.json")) + end) + |> Enum.map(&write_pack_json_contents/1) + + json(conn, imported_pack_names) + else {:error, _} -> conn |> put_status(:internal_server_error) |> text("Error accessing emoji pack directory") + end + end - {:ok, results} -> - imported_pack_names = - results - |> Enum.filter(fn file -> - dir_path = Path.join(@emoji_dir_path, file) - # Find the directories that do NOT have pack.json - File.dir?(dir_path) and not File.exists?(Path.join(dir_path, "pack.json")) - end) - |> Enum.map(fn dir -> - dir_path = Path.join(@emoji_dir_path, dir) - emoji_txt_path = Path.join(dir_path, "emoji.txt") + defp write_pack_json_contents(dir) do + dir_path = Path.join(@emoji_dir_path, dir) + emoji_txt_path = Path.join(dir_path, "emoji.txt") - files_for_pack = - if File.exists?(emoji_txt_path) do - # There's an emoji.txt file, it's likely from a pack installed by the pack manager. - # Make a pack.json file from the contents of that emoji.txt fileh + files_for_pack = files_for_pack(emoji_txt_path, dir_path) + pack_json_contents = Jason.encode!(%{pack: %{}, files: files_for_pack}) - # FIXME: Copy-pasted from Pleroma.Emoji/load_from_file_stream/2 + File.write!(Path.join(dir_path, "pack.json"), pack_json_contents) - # Create a map of shortcodes to filenames from emoji.txt + dir + end - File.read!(emoji_txt_path) - |> String.split("\n") - |> Enum.map(&String.trim/1) - |> Enum.map(fn line -> - case String.split(line, ~r/,\s*/) do - # This matches both strings with and without tags - # and we don't care about tags here - [name, file | _] -> - {name, file} + defp files_for_pack(emoji_txt_path, dir_path) do + if File.exists?(emoji_txt_path) do + # There's an emoji.txt file, it's likely from a pack installed by the pack manager. + # Make a pack.json file from the contents of that emoji.txt fileh - _ -> - nil - end - end) - |> Enum.filter(fn x -> not is_nil(x) end) - |> Enum.into(%{}) - else - # If there's no emoji.txt, assume all files - # that are of certain extensions from the config are emojis and import them all - Pleroma.Emoji.make_shortcode_to_file_map( - dir_path, - Pleroma.Config.get!([:emoji, :pack_extensions]) - ) - end + # FIXME: Copy-pasted from Pleroma.Emoji/load_from_file_stream/2 - pack_json_contents = Jason.encode!(%{pack: %{}, files: files_for_pack}) - - File.write!( - Path.join(dir_path, "pack.json"), - pack_json_contents - ) - - dir - end) - - conn |> json(imported_pack_names) + # Create a map of shortcodes to filenames from emoji.txt + File.read!(emoji_txt_path) + |> String.split("\n") + |> Enum.map(&String.trim/1) + |> Enum.map(fn line -> + case String.split(line, ~r/,\s*/) do + # This matches both strings with and without tags + # and we don't care about tags here + [name, file | _] -> {name, file} + _ -> nil + end + end) + |> Enum.filter(fn x -> not is_nil(x) end) + |> Enum.into(%{}) + else + # If there's no emoji.txt, assume all files + # that are of certain extensions from the config are emojis and import them all + pack_extensions = Pleroma.Config.get!([:emoji, :pack_extensions]) + Pleroma.Emoji.make_shortcode_to_file_map(dir_path, pack_extensions) end end end From b8a214b0ab264a64ca287e40e99acd401810ef58 Mon Sep 17 00:00:00 2001 From: vaartis Date: Wed, 11 Sep 2019 15:48:51 +0000 Subject: [PATCH 160/272] Split list_packs --- .../web/emoji_api/emoji_api_controller.ex | 75 ++++++++++--------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 0c3da6740..22619f4d7 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -23,47 +23,49 @@ def reload(conn, _params) do a map of "pack directory name" to pack.json contents. """ def list_packs(conn, _params) do - pack_infos = - case File.ls(@emoji_dir_path) do - {:error, _} -> - %{} + with {:ok, results} <- File.ls(@emoji_dir_path) do + pack_infos = + results + |> Enum.filter(&has_pack_json?/1) + |> Enum.map(&load_pack/1) + # Check if all the files are in place and can be sent + |> Enum.map(&validate_pack/1) + # Transform into a map of pack-name => pack-data + |> Enum.into(%{}) - {:ok, results} -> - results - |> Enum.filter(fn file -> - dir_path = Path.join(@emoji_dir_path, file) - # Filter to only use the pack.json packs - File.dir?(dir_path) and File.exists?(Path.join(dir_path, "pack.json")) - end) - |> Enum.map(fn pack_name -> - pack_path = Path.join(@emoji_dir_path, pack_name) - pack_file = Path.join(pack_path, "pack.json") + json(conn, pack_infos) + end + end - {pack_name, Jason.decode!(File.read!(pack_file))} - end) - # Transform into a map of pack-name => pack-data - # Check if all the files are in place and can be sent - |> Enum.map(fn {name, pack} -> - pack_path = Path.join(@emoji_dir_path, name) + defp has_pack_json?(file) do + dir_path = Path.join(@emoji_dir_path, file) + # Filter to only use the pack.json packs + File.dir?(dir_path) and File.exists?(Path.join(dir_path, "pack.json")) + end - if can_download?(pack, pack_path) do - archive_for_sha = make_archive(name, pack, pack_path) - archive_sha = :crypto.hash(:sha256, archive_for_sha) |> Base.encode16() + defp load_pack(pack_name) do + pack_path = Path.join(@emoji_dir_path, pack_name) + pack_file = Path.join(pack_path, "pack.json") - {name, - pack - |> put_in(["pack", "can-download"], true) - |> put_in(["pack", "download-sha256"], archive_sha)} - else - {name, - pack - |> put_in(["pack", "can-download"], false)} - end - end) - |> Enum.into(%{}) - end + {pack_name, Jason.decode!(File.read!(pack_file))} + end - conn |> json(pack_infos) + defp validate_pack({name, pack}) do + pack_path = Path.join(@emoji_dir_path, name) + + if can_download?(pack, pack_path) do + archive_for_sha = make_archive(name, pack, pack_path) + archive_sha = :crypto.hash(:sha256, archive_for_sha) |> Base.encode16() + + pack = + pack + |> put_in(["pack", "can-download"], true) + |> put_in(["pack", "download-sha256"], archive_sha) + + {name, pack} + else + {name, put_in(pack, ["pack", "can-download"], false)} + end end defp can_download?(pack, pack_path) do @@ -159,6 +161,7 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = |> Map.get(:body) |> Jason.decode!() |> Map.get(name) + pfiles = full_pack["files"] pack_info_res = From 8790365fef9d5f76b7ac1c94933e2ee218e76285 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 11 Sep 2019 18:52:21 +0300 Subject: [PATCH 161/272] Remove unused variable --- lib/pleroma/web/emoji_api/emoji_api_controller.ex | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 22619f4d7..8ef6ae71f 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -162,8 +162,6 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = |> Jason.decode!() |> Map.get(name) - pfiles = full_pack["files"] - pack_info_res = case full_pack["pack"] do %{"share-files" => true, "can-download" => true, "download-sha256" => sha} -> From 8f509e6d1ee8955fc430d1f4ed7929ba0d91177c Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 11 Sep 2019 18:59:31 +0300 Subject: [PATCH 162/272] Use with w/ pack_info_res --- .../web/emoji_api/emoji_api_controller.ex | 52 ++++++++----------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 8ef6ae71f..9e0ff0b28 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -183,42 +183,36 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = {:error, "The pack was not set as shared and there is no fallback src to download from"} end - case pack_info_res do - {:ok, %{sha: sha, uri: uri} = pinfo} -> - sha = Base.decode16!(sha) - emoji_archive = Tesla.get!(uri).body + with {:ok, %{sha: sha, uri: uri} = pinfo} <- pack_info_res, + %{body: emoji_archive} <- Tesla.get!(uri), + {_, true} <- {:sha, Base.decode16!(sha) == :crypto.hash(:sha256, emoji_archive)} do + local_name = data["as"] || name + pack_dir = Path.join(@emoji_dir_path, local_name) + File.mkdir_p!(pack_dir) - got_sha = :crypto.hash(:sha256, emoji_archive) + files = Enum.map(full_pack["files"], fn {_, path} -> to_charlist(path) end) + # Fallback cannot contain a pack.json file + files = if pinfo[:fallback], do: files, else: ['pack.json'] ++ files - if got_sha == sha do - local_name = data["as"] || name - pack_dir = Path.join(@emoji_dir_path, local_name) - File.mkdir_p!(pack_dir) + {:ok, _} = :zip.unzip(emoji_archive, cwd: to_charlist(pack_dir), file_list: files) - # Fallback cannot contain a pack.json file - files = Enum.map(full_pack["files"], fn {_, path} -> to_charlist(path) end) - # Fallback cannot contain a pack.json file - files = if pinfo[:fallback], do: files, else: ['pack.json'] ++ files + # Fallback can't contain a pack.json file, since that would cause the fallback-src-sha256 + # in it to depend on itself + if pinfo[:fallback] do + pack_file_path = Path.join(pack_dir, "pack.json") - {:ok, _} = :zip.unzip(emoji_archive, cwd: to_charlist(pack_dir), file_list: files) - - # Fallback can't contain a pack.json file, since that would cause the fallback-src-sha256 - # in it to depend on itself - if pinfo[:fallback] do - pack_file_path = Path.join(pack_dir, "pack.json") - - File.write!(pack_file_path, Jason.encode!(full_pack, pretty: true)) - end - - conn |> text("ok") - else - conn - |> put_status(:internal_server_error) - |> text("SHA256 for the pack doesn't match the one sent by the server") - end + File.write!(pack_file_path, Jason.encode!(full_pack, pretty: true)) + end + text(conn, "ok") + else {:error, e} -> conn |> put_status(:internal_server_error) |> text(e) + + {:sha, _} -> + conn + |> put_status(:internal_server_error) + |> text("SHA256 for the pack doesn't match the one sent by the server") end end From cb125ffaf7f744e60fc134ef6b7b847d3838922a Mon Sep 17 00:00:00 2001 From: vaartis Date: Wed, 11 Sep 2019 16:00:48 +0000 Subject: [PATCH 163/272] Apply suggestion to lib/pleroma/web/emoji_api/emoji_api_controller.ex --- .../web/emoji_api/emoji_api_controller.ex | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 9e0ff0b28..28eaf5ae3 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -124,26 +124,22 @@ def download_shared(conn, %{"name" => name}) do pack_dir = Path.join(@emoji_dir_path, name) pack_file = Path.join(pack_dir, "pack.json") - if File.exists?(pack_file) do - pack = Jason.decode!(File.read!(pack_file)) - - if can_download?(pack, pack_dir) do - zip_result = make_archive(name, pack, pack_dir) - - conn - |> send_download({:binary, zip_result}, filename: "#{name}.zip") - else - {:error, - conn - |> put_status(:forbidden) - |> text("Pack #{name} cannot be downloaded from this instance, either pack sharing\ - was disabled for this pack or some files are missing")} - end + with {_, true} <- {:exists?, File.exists?(pack_file)}, + pack = Jason.decode!(File.read!(pack_file)), + {_, true} <- {:can_download?, can_download?(pack, pack_dir)} do + zip_result = make_archive(name, pack, pack_dir) + send_download(conn, {:binary, zip_result}, filename: "#{name}.zip") else - {:error, - conn - |> put_status(:not_found) - |> text("Pack #{name} does not exist")} + {:can_download?, _} -> + conn + |> put_status(:forbidden) + |> text("Pack #{name} cannot be downloaded from this instance, either pack sharing\ + was disabled for this pack or some files are missing") + + {:exists?, _} -> + conn + |> put_status(:not_found) + |> text("Pack #{name} does not exist") end end From f24731788ef9dcbeb29c9dc5db9270a5787caff6 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 11 Sep 2019 19:01:21 +0300 Subject: [PATCH 164/272] Move emoji pack list from /list to / --- lib/pleroma/web/router.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 1252048f0..17f7406fd 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -229,7 +229,7 @@ defmodule Pleroma.Web.Router do scope "/packs" do # Pack info / downloading - get("/list", EmojiAPIController, :list_packs) + get("/", EmojiAPIController, :list_packs) get("/download_shared/:name", EmojiAPIController, :download_shared) end end From 7c784128fd8016e133c59e9c5076fa2d77a9bdee Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 11 Sep 2019 19:39:47 +0300 Subject: [PATCH 165/272] Change emoji api responses to JSON --- .../web/emoji_api/emoji_api_controller.ex | 316 ++++++++++-------- test/web/emoji_api_controller_test.exs | 36 +- 2 files changed, 186 insertions(+), 166 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 28eaf5ae3..1c5b7c687 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.EmojiAPI.EmojiAPIController do def reload(conn, _params) do Pleroma.Emoji.reload() - conn |> text("ok") + conn |> json("ok") end @emoji_dir_path Path.join( @@ -133,13 +133,15 @@ def download_shared(conn, %{"name" => name}) do {:can_download?, _} -> conn |> put_status(:forbidden) - |> text("Pack #{name} cannot be downloaded from this instance, either pack sharing\ - was disabled for this pack or some files are missing") + |> json(%{ + error: "Pack #{name} cannot be downloaded from this instance, either pack sharing\ + was disabled for this pack or some files are missing" + }) {:exists?, _} -> conn |> put_status(:not_found) - |> text("Pack #{name} does not exist") + |> json(%{error: "Pack #{name} does not exist"}) end end @@ -200,15 +202,15 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = File.write!(pack_file_path, Jason.encode!(full_pack, pretty: true)) end - text(conn, "ok") + json(conn, "ok") else {:error, e} -> - conn |> put_status(:internal_server_error) |> text(e) + conn |> put_status(:internal_server_error) |> json(%{error: e}) {:sha, _} -> conn |> put_status(:internal_server_error) - |> text("SHA256 for the pack doesn't match the one sent by the server") + |> json(%{error: "SHA256 for the pack doesn't match the one sent by the server"}) end end @@ -228,11 +230,11 @@ def create(conn, %{"name" => name}) do Jason.encode!(%{pack: %{}, files: %{}}) ) - conn |> text("ok") + conn |> json("ok") else conn |> put_status(:conflict) - |> text("A pack named \"#{name}\" already exists") + |> json(%{error: "A pack named \"#{name}\" already exists"}) end end @@ -244,10 +246,12 @@ def delete(conn, %{"name" => name}) do case File.rm_rf(pack_dir) do {:ok, _} -> - conn |> text("ok") + conn |> json("ok") {:error, _} -> - conn |> put_status(:internal_server_error) |> text("Couldn't delete the pack #{name}") + conn + |> put_status(:internal_server_error) + |> json(%{error: "Couldn't delete the pack #{name}"}) end end @@ -281,7 +285,7 @@ def update_metadata(conn, %{"pack_name" => name, "new_data" => new_data}) do {:has_all_files?, _} -> conn |> put_status(:bad_request) - |> text("The fallback archive does not have all files specified in pack.json") + |> json(%{error: "The fallback archive does not have all files specified in pack.json"}) end end @@ -302,6 +306,25 @@ defp update_metadata_and_send(conn, full_pack, new_data, pack_file_p) do json(conn, new_data) end + defp get_filename(%{"filename" => filename}), do: filename + + defp get_filename(%{"file" => file}) do + case file do + %Plug.Upload{filename: filename} -> filename + url when is_binary(url) -> Path.basename(url) + end + end + + defp empty?(str), do: String.trim(str) == "" + + defp update_file_and_send(conn, updated_full_pack, pack_file_p) do + # Write the emoji pack file + File.write!(pack_file_p, Jason.encode!(updated_full_pack, pretty: true)) + + # Return the modified file list + json(conn, updated_full_pack["files"]) + end + @doc """ Updates a file in a pack. @@ -316,157 +339,154 @@ defp update_metadata_and_send(conn, full_pack, new_data, pack_file_p) do (from the current filename to `new_filename`) - `remove` removes the emoji named `shortcode` and it's associated file """ + + # Add def update_file( conn, - %{"pack_name" => pack_name, "action" => action, "shortcode" => shortcode} = params + %{"pack_name" => pack_name, "action" => "add", "shortcode" => shortcode} = params ) do pack_dir = Path.join(@emoji_dir_path, pack_name) pack_file_p = Path.join(pack_dir, "pack.json") full_pack = Jason.decode!(File.read!(pack_file_p)) - res = - case action do - "add" -> - unless Map.has_key?(full_pack["files"], shortcode) do - filename = - if Map.has_key?(params, "filename") do - params["filename"] - else - case params["file"] do - %Plug.Upload{filename: filename} -> filename - url when is_binary(url) -> Path.basename(url) - end - end + with {_, false} <- {:has_shortcode, Map.has_key?(full_pack["files"], shortcode)}, + filename <- get_filename(params), + false <- empty?(shortcode), + false <- empty?(filename) do + file_path = Path.join(pack_dir, filename) - unless String.trim(shortcode) |> String.length() == 0 or - String.trim(filename) |> String.length() == 0 do - file_path = Path.join(pack_dir, filename) - - # If the name contains directories, create them - if String.contains?(file_path, "/") do - File.mkdir_p!(Path.dirname(file_path)) - end - - case params["file"] do - %Plug.Upload{path: upload_path} -> - # Copy the uploaded file from the temporary directory - File.copy!(upload_path, file_path) - - url when is_binary(url) -> - # Download and write the file - file_contents = Tesla.get!(url).body - File.write!(file_path, file_contents) - end - - updated_full_pack = put_in(full_pack, ["files", shortcode], filename) - - {:ok, updated_full_pack} - else - {:error, - conn - |> put_status(:bad_request) - |> text("shortcode or filename cannot be empty")} - end - else - {:error, - conn - |> put_status(:conflict) - |> text("An emoji with the \"#{shortcode}\" shortcode already exists")} - end - - "remove" -> - if Map.has_key?(full_pack["files"], shortcode) do - {emoji_file_path, updated_full_pack} = pop_in(full_pack, ["files", shortcode]) - - emoji_file_path = Path.join(pack_dir, emoji_file_path) - - # Delete the emoji file - File.rm!(emoji_file_path) - - # If the old directory has no more files, remove it - if String.contains?(emoji_file_path, "/") do - dir = Path.dirname(emoji_file_path) - - if Enum.empty?(File.ls!(dir)) do - File.rmdir!(dir) - end - end - - {:ok, updated_full_pack} - else - {:error, - conn |> put_status(:bad_request) |> text("Emoji \"#{shortcode}\" does not exist")} - end - - "update" -> - if Map.has_key?(full_pack["files"], shortcode) do - with %{"new_shortcode" => new_shortcode, "new_filename" => new_filename} <- params do - unless String.trim(new_shortcode) |> String.length() == 0 or - String.trim(new_filename) |> String.length() == 0 do - # First, remove the old shortcode, saving the old path - {old_emoji_file_path, updated_full_pack} = pop_in(full_pack, ["files", shortcode]) - old_emoji_file_path = Path.join(pack_dir, old_emoji_file_path) - new_emoji_file_path = Path.join(pack_dir, new_filename) - - # If the name contains directories, create them - if String.contains?(new_emoji_file_path, "/") do - File.mkdir_p!(Path.dirname(new_emoji_file_path)) - end - - # Move/Rename the old filename to a new filename - # These are probably on the same filesystem, so just rename should work - :ok = File.rename(old_emoji_file_path, new_emoji_file_path) - - # If the old directory has no more files, remove it - if String.contains?(old_emoji_file_path, "/") do - dir = Path.dirname(old_emoji_file_path) - - if Enum.empty?(File.ls!(dir)) do - File.rmdir!(dir) - end - end - - # Then, put in the new shortcode with the new path - updated_full_pack = - put_in(updated_full_pack, ["files", new_shortcode], new_filename) - - {:ok, updated_full_pack} - else - {:error, - conn - |> put_status(:bad_request) - |> text("new_shortcode or new_filename cannot be empty")} - end - else - _ -> - {:error, - conn - |> put_status(:bad_request) - |> text("new_shortcode or new_file were not specified")} - end - else - {:error, - conn |> put_status(:bad_request) |> text("Emoji \"#{shortcode}\" does not exist")} - end - - _ -> - {:error, conn |> put_status(:bad_request) |> text("Unknown action: #{action}")} + # If the name contains directories, create them + if String.contains?(file_path, "/") do + File.mkdir_p!(Path.dirname(file_path)) end - case res do - {:ok, updated_full_pack} -> - # Write the emoji pack file - File.write!(pack_file_p, Jason.encode!(updated_full_pack, pretty: true)) + case params["file"] do + %Plug.Upload{path: upload_path} -> + # Copy the uploaded file from the temporary directory + File.copy!(upload_path, file_path) - # Return the modified file list - conn |> json(updated_full_pack["files"]) + url when is_binary(url) -> + # Download and write the file + file_contents = Tesla.get!(url).body + File.write!(file_path, file_contents) + end - {:error, e} -> - e + updated_full_pack = put_in(full_pack, ["files", shortcode], filename) + update_file_and_send(conn, updated_full_pack, pack_file_p) + else + {:has_shortcode, _} -> + conn + |> put_status(:conflict) + |> json(%{error: "An emoji with the \"#{shortcode}\" shortcode already exists"}) + + true -> + conn + |> put_status(:bad_request) + |> json(%{error: "shortcode or filename cannot be empty"}) end end + # Remove + def update_file(conn, %{ + "pack_name" => pack_name, + "action" => "remove", + "shortcode" => shortcode + }) do + pack_dir = Path.join(@emoji_dir_path, pack_name) + pack_file_p = Path.join(pack_dir, "pack.json") + + full_pack = Jason.decode!(File.read!(pack_file_p)) + + if Map.has_key?(full_pack["files"], shortcode) do + {emoji_file_path, updated_full_pack} = pop_in(full_pack, ["files", shortcode]) + + emoji_file_path = Path.join(pack_dir, emoji_file_path) + + # Delete the emoji file + File.rm!(emoji_file_path) + + # If the old directory has no more files, remove it + if String.contains?(emoji_file_path, "/") do + dir = Path.dirname(emoji_file_path) + + if Enum.empty?(File.ls!(dir)) do + File.rmdir!(dir) + end + end + + update_file_and_send(conn, updated_full_pack, pack_file_p) + else + conn + |> put_status(:bad_request) + |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) + end + end + + # Update + def update_file( + conn, + %{"pack_name" => pack_name, "action" => "update", "shortcode" => shortcode} = params + ) do + pack_dir = Path.join(@emoji_dir_path, pack_name) + pack_file_p = Path.join(pack_dir, "pack.json") + + full_pack = Jason.decode!(File.read!(pack_file_p)) + + with {_, true} <- {:has_shortcode, Map.has_key?(full_pack["files"], shortcode)}, + %{"new_shortcode" => new_shortcode, "new_filename" => new_filename} <- params, + false <- empty?(new_shortcode), + false <- empty?(new_filename) do + # First, remove the old shortcode, saving the old path + {old_emoji_file_path, updated_full_pack} = pop_in(full_pack, ["files", shortcode]) + old_emoji_file_path = Path.join(pack_dir, old_emoji_file_path) + new_emoji_file_path = Path.join(pack_dir, new_filename) + + # If the name contains directories, create them + if String.contains?(new_emoji_file_path, "/") do + File.mkdir_p!(Path.dirname(new_emoji_file_path)) + end + + # Move/Rename the old filename to a new filename + # These are probably on the same filesystem, so just rename should work + :ok = File.rename(old_emoji_file_path, new_emoji_file_path) + + # If the old directory has no more files, remove it + if String.contains?(old_emoji_file_path, "/") do + dir = Path.dirname(old_emoji_file_path) + + if Enum.empty?(File.ls!(dir)) do + File.rmdir!(dir) + end + end + + # Then, put in the new shortcode with the new path + updated_full_pack = put_in(updated_full_pack, ["files", new_shortcode], new_filename) + update_file_and_send(conn, updated_full_pack, pack_file_p) + else + {:has_shortcode, _} -> + conn + |> put_status(:bad_request) + |> json(%{error: "Emoji \"#{shortcode}\" does not exist"}) + + true -> + conn + |> put_status(:bad_request) + |> json(%{error: "new_shortcode or new_filename cannot be empty"}) + + _ -> + conn + |> put_status(:bad_request) + |> json(%{error: "new_shortcode or new_file were not specified"}) + end + end + + def update_file(conn, %{"action" => action}) do + conn + |> put_status(:bad_request) + |> json(%{error: "Unknown action: #{action}"}) + end + @doc """ Imports emoji from the filesystem. @@ -493,7 +513,7 @@ def import_from_fs(conn, _params) do {:error, _} -> conn |> put_status(:internal_server_error) - |> text("Error accessing emoji pack directory") + |> json(%{error: "Error accessing emoji pack directory"}) end end diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index 8b2a942ce..7942a7b01 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -101,14 +101,14 @@ test "downloading shared & unshared packs from another instance via download_fro } |> Jason.encode!() ) - |> text_response(200) == "ok" + |> json_response(200) == "ok" assert File.exists?("#{@emoji_dir_path}/test_pack2/pack.json") assert File.exists?("#{@emoji_dir_path}/test_pack2/blank.png") assert conn |> delete(emoji_api_path(conn, :delete, "test_pack2")) - |> response(200) == "ok" + |> json_response(200) == "ok" refute File.exists?("#{@emoji_dir_path}/test_pack2") @@ -130,14 +130,14 @@ test "downloading shared & unshared packs from another instance via download_fro } |> Jason.encode!() ) - |> text_response(200) == "ok" + |> json_response(200) == "ok" assert File.exists?("#{@emoji_dir_path}/test_pack_nonshared2/pack.json") assert File.exists?("#{@emoji_dir_path}/test_pack_nonshared2/blank.png") assert conn |> delete(emoji_api_path(conn, :delete, "test_pack_nonshared2")) - |> response(200) == "ok" + |> json_response(200) == "ok" refute File.exists?("#{@emoji_dir_path}/test_pack_nonshared2") end @@ -225,15 +225,15 @@ test "when the fallback source doesn't have all the files", ctx do conn = build_conn() - assert conn - |> assign(:user, ctx[:admin]) - |> post( - emoji_api_path(conn, :update_metadata, "test_pack"), - %{ - "new_data" => new_data - } - ) - |> text_response(:bad_request) =~ "does not have all" + assert (conn + |> assign(:user, ctx[:admin]) + |> post( + emoji_api_path(conn, :update_metadata, "test_pack"), + %{ + "new_data" => new_data + } + ) + |> json_response(:bad_request))["error"] =~ "does not have all" end end @@ -267,9 +267,9 @@ test "updating pack files" do conn = conn |> assign(:user, admin) - assert conn - |> post(emoji_api_path(conn, :update_file, "test_pack"), same_name) - |> text_response(:conflict) =~ "already exists" + assert (conn + |> post(emoji_api_path(conn, :update_file, "test_pack"), same_name) + |> json_response(:conflict))["error"] =~ "already exists" assert conn |> post(emoji_api_path(conn, :update_file, "test_pack"), different_name) @@ -350,7 +350,7 @@ test "creating and deleting a pack" do "test_created" ) ) - |> text_response(200) == "ok" + |> json_response(200) == "ok" assert File.exists?("#{@emoji_dir_path}/test_created/pack.json") @@ -361,7 +361,7 @@ test "creating and deleting a pack" do assert conn |> delete(emoji_api_path(conn, :delete, "test_created")) - |> response(200) == "ok" + |> json_response(200) == "ok" refute File.exists?("#{@emoji_dir_path}/test_created/pack.json") end From 3971bf9c5f00d12a0a2048eb3676069d58a9f243 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 11 Sep 2019 21:43:16 +0300 Subject: [PATCH 166/272] Change :sha to :checksum --- lib/pleroma/web/emoji_api/emoji_api_controller.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 1c5b7c687..0d4a17c61 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -183,7 +183,7 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = with {:ok, %{sha: sha, uri: uri} = pinfo} <- pack_info_res, %{body: emoji_archive} <- Tesla.get!(uri), - {_, true} <- {:sha, Base.decode16!(sha) == :crypto.hash(:sha256, emoji_archive)} do + {_, true} <- {:checksum, Base.decode16!(sha) == :crypto.hash(:sha256, emoji_archive)} do local_name = data["as"] || name pack_dir = Path.join(@emoji_dir_path, local_name) File.mkdir_p!(pack_dir) @@ -207,7 +207,7 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = {:error, e} -> conn |> put_status(:internal_server_error) |> json(%{error: e}) - {:sha, _} -> + {:checksum, _} -> conn |> put_status(:internal_server_error) |> json(%{error: "SHA256 for the pack doesn't match the one sent by the server"}) From 6cd651a38be898456c06d8fee7fd15f1b406848c Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 11 Sep 2019 21:50:55 +0300 Subject: [PATCH 167/272] Make the emoji controller api more RESTy --- lib/pleroma/web/router.ex | 10 +++++----- test/web/emoji_api_controller_test.exs | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 17f7406fd..bae25c60a 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -220,17 +220,17 @@ defmodule Pleroma.Web.Router do post("/import_from_fs", EmojiAPIController, :import_from_fs) - post("/update_file/:pack_name", EmojiAPIController, :update_file) - post("/update_metadata/:pack_name", EmojiAPIController, :update_metadata) - post("/create/:name", EmojiAPIController, :create) - delete("/delete/:name", EmojiAPIController, :delete) + post("/:pack_name/update_file", EmojiAPIController, :update_file) + post("/:pack_name/update_metadata", EmojiAPIController, :update_metadata) + put("/:name", EmojiAPIController, :create) + delete("/:name", EmojiAPIController, :delete) post("/download_from", EmojiAPIController, :download_from) end scope "/packs" do # Pack info / downloading get("/", EmojiAPIController, :list_packs) - get("/download_shared/:name", EmojiAPIController, :download_shared) + get("/:name/download_shared/", EmojiAPIController, :download_shared) end end diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index 7942a7b01..e92e92f74 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -343,7 +343,7 @@ test "creating and deleting a pack" do assert conn |> put_req_header("content-type", "application/json") - |> post( + |> put( emoji_api_path( conn, :create, From dd818bdd487149b75295abd351e3dee3e7378dd7 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 11 Sep 2019 22:39:26 +0300 Subject: [PATCH 168/272] Add documentation for the emoji endpoints --- docs/api/pleroma_api.md | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/docs/api/pleroma_api.md b/docs/api/pleroma_api.md index 30fac77da..a7e7fbe25 100644 --- a/docs/api/pleroma_api.md +++ b/docs/api/pleroma_api.md @@ -365,3 +365,69 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * Params: * `recipients`: A list of ids of users that should receive posts to this conversation. This will replace the current list of recipients, so submit the full list. The owner of owner of the conversation will always be part of the set of recipients, though. * Response: JSON, statuses (200 - healthy, 503 unhealthy) + + +## `POST /api/pleroma/emoji/reload` +### Reload the instance's custom emoji +* Method `POST` +* Authentication: required +* Params: None +* Response: JSON, "ok" and 200 status + +## `PUT /api/pleroma/emoji/packs/:name` +### Creates an empty custom emoji pack +* Method `PUT` +* Authentication: required +* Params: None +* Response: JSON, "ok" and 200 status or 409 if the pack with that name already exists + +## `DELETE /api/pleroma/emoji/packs/:name` +### Delete a custom emoji pack +* Method `DELETE` +* Authentication: required +* Params: None +* Response: JSON, "ok" and 200 status or 500 if there was an error deleting the pack + +## `POST /api/pleroma/emoji/packs/:name/update_file` +### Update a file in a custom emoji pack +* Method `POST` +* Authentication: required +* Params: + * if the `action` is `add`, adds an emoji named `shortcode` to the pack `pack_name`, + that means that the emoji file needs to be uploaded with the request + (thus requiring it to be a multipart request) and be named `file`. + There can also be an optional `filename` that will be the new emoji file name + (if it's not there, the name will be taken from the uploaded file). + * if the `action` is `update`, changes emoji shortcode + (from `shortcode` to `new_shortcode` or moves the file (from the current filename to `new_filename`) + * if the `action` is `remove`, removes the emoji named `shortcode` and it's associated file +* Response: JSON, updated "files" section of the pack and 200 status, 409 if the trying to use a shortcode + that is already taken, 400 if there was an error with the shortcode, filename or file (additional info + in the "error" part of the response JSON) + +## `POST /api/pleroma/emoji/packs/:name/update_metadata` +### Updates (replaces) pack metadata +* Method `POST` +* Authentication: required +* Params: + * `new_data`: new metadata to replace the old one +* Response: JSON, updated "metadata" section of the pack and 200 status or 400 if there was a + problem with the new metadata (the error is specified in the "error" part of the response JSON) + +## `POST /api/pleroma/emoji/packs/download_from` +### Requests the instance to download the pack from another instance +* Method `POST` +* Authentication: required +* Params: + * `instance_address`: the address of the instance to download from + * `pack_name`: the pack to download from that instance +* Response: JSON, "ok" and 200 status if the pack was downloaded, or 500 if there were + errors downloading the pack + +## `GET /api/pleroma/emoji/packs/:name/download_shared` +### Requests the instance to download the pack from another instance +* Method `GET` +* Authentication: not requires +* Params: None +* Response: the archive of the pack with a 200 status code, 403 if the pack is not set as shared, + 404 if the pack does not exist From 74fb6d864760ccaa18b9a20d148c590254779454 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 11 Sep 2019 22:43:00 +0300 Subject: [PATCH 169/272] Move EmojiAPIController from EmojiAPI to PleromaAPI --- lib/pleroma/web/emoji_api/emoji_api_controller.ex | 2 +- lib/pleroma/web/router.ex | 2 +- test/web/emoji_api_controller_test.exs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index 0d4a17c61..a83f8af57 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -1,4 +1,4 @@ -defmodule Pleroma.Web.EmojiAPI.EmojiAPIController do +defmodule Pleroma.Web.PleromaAPI.EmojiAPIController do use Pleroma.Web, :controller require Logger diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index bae25c60a..715e4ba68 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -207,7 +207,7 @@ defmodule Pleroma.Web.Router do get("/moderation_log", AdminAPIController, :list_log) end - scope "/api/pleroma/emoji", Pleroma.Web.EmojiAPI do + scope "/api/pleroma/emoji", Pleroma.Web.PleromaAPI do scope [] do pipe_through([:admin_api, :oauth_write]) diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index e92e92f74..38d11cdce 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -1,4 +1,4 @@ -defmodule Pleroma.Web.EmojiAPI.EmojiAPIControllerTest do +defmodule Pleroma.Web.PleromaAPI.EmojiAPIControllerTest do use Pleroma.Web.ConnCase import Tesla.Mock From 36f2275dc9f6c58163e4e07f8ace9d75e96033c7 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 11 Sep 2019 22:58:55 +0300 Subject: [PATCH 170/272] A feature for shareable emoji packs, use it in download_from & tests --- .../web/emoji_api/emoji_api_controller.ex | 115 ++++++++++-------- .../web/nodeinfo/nodeinfo_controller.ex | 1 + test/web/emoji_api_controller_test.exs | 22 ++++ 3 files changed, 88 insertions(+), 50 deletions(-) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/emoji_api/emoji_api_controller.ex index a83f8af57..36ca2c804 100644 --- a/lib/pleroma/web/emoji_api/emoji_api_controller.ex +++ b/lib/pleroma/web/emoji_api/emoji_api_controller.ex @@ -153,64 +153,79 @@ def download_shared(conn, %{"name" => name}) do from that instance, otherwise it will be downloaded from the fallback source, if there is one. """ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = data) do - full_pack = - "#{address}/api/pleroma/emoji/packs/list" + shareable_packs_available = + "#{address}/nodeinfo/2.1.json" |> Tesla.get!() |> Map.get(:body) |> Jason.decode!() - |> Map.get(name) + |> Map.get("features") + |> Enum.member?("shareable_emoji_packs") - pack_info_res = - case full_pack["pack"] do - %{"share-files" => true, "can-download" => true, "download-sha256" => sha} -> - {:ok, - %{ - sha: sha, - uri: "#{address}/api/pleroma/emoji/packs/download_shared/#{name}" - }} + if shareable_packs_available do + full_pack = + "#{address}/api/pleroma/emoji/packs/list" + |> Tesla.get!() + |> Map.get(:body) + |> Jason.decode!() + |> Map.get(name) - %{"fallback-src" => src, "fallback-src-sha256" => sha} when is_binary(src) -> - {:ok, - %{ - sha: sha, - uri: src, - fallback: true - }} + pack_info_res = + case full_pack["pack"] do + %{"share-files" => true, "can-download" => true, "download-sha256" => sha} -> + {:ok, + %{ + sha: sha, + uri: "#{address}/api/pleroma/emoji/packs/download_shared/#{name}" + }} - _ -> - {:error, "The pack was not set as shared and there is no fallback src to download from"} + %{"fallback-src" => src, "fallback-src-sha256" => sha} when is_binary(src) -> + {:ok, + %{ + sha: sha, + uri: src, + fallback: true + }} + + _ -> + {:error, + "The pack was not set as shared and there is no fallback src to download from"} + end + + with {:ok, %{sha: sha, uri: uri} = pinfo} <- pack_info_res, + %{body: emoji_archive} <- Tesla.get!(uri), + {_, true} <- {:checksum, Base.decode16!(sha) == :crypto.hash(:sha256, emoji_archive)} do + local_name = data["as"] || name + pack_dir = Path.join(@emoji_dir_path, local_name) + File.mkdir_p!(pack_dir) + + files = Enum.map(full_pack["files"], fn {_, path} -> to_charlist(path) end) + # Fallback cannot contain a pack.json file + files = if pinfo[:fallback], do: files, else: ['pack.json'] ++ files + + {:ok, _} = :zip.unzip(emoji_archive, cwd: to_charlist(pack_dir), file_list: files) + + # Fallback can't contain a pack.json file, since that would cause the fallback-src-sha256 + # in it to depend on itself + if pinfo[:fallback] do + pack_file_path = Path.join(pack_dir, "pack.json") + + File.write!(pack_file_path, Jason.encode!(full_pack, pretty: true)) + end + + json(conn, "ok") + else + {:error, e} -> + conn |> put_status(:internal_server_error) |> json(%{error: e}) + + {:checksum, _} -> + conn + |> put_status(:internal_server_error) + |> json(%{error: "SHA256 for the pack doesn't match the one sent by the server"}) end - - with {:ok, %{sha: sha, uri: uri} = pinfo} <- pack_info_res, - %{body: emoji_archive} <- Tesla.get!(uri), - {_, true} <- {:checksum, Base.decode16!(sha) == :crypto.hash(:sha256, emoji_archive)} do - local_name = data["as"] || name - pack_dir = Path.join(@emoji_dir_path, local_name) - File.mkdir_p!(pack_dir) - - files = Enum.map(full_pack["files"], fn {_, path} -> to_charlist(path) end) - # Fallback cannot contain a pack.json file - files = if pinfo[:fallback], do: files, else: ['pack.json'] ++ files - - {:ok, _} = :zip.unzip(emoji_archive, cwd: to_charlist(pack_dir), file_list: files) - - # Fallback can't contain a pack.json file, since that would cause the fallback-src-sha256 - # in it to depend on itself - if pinfo[:fallback] do - pack_file_path = Path.join(pack_dir, "pack.json") - - File.write!(pack_file_path, Jason.encode!(full_pack, pretty: true)) - end - - json(conn, "ok") else - {:error, e} -> - conn |> put_status(:internal_server_error) |> json(%{error: e}) - - {:checksum, _} -> - conn - |> put_status(:internal_server_error) - |> json(%{error: "SHA256 for the pack doesn't match the one sent by the server"}) + conn + |> put_status(:internal_server_error) + |> json(%{error: "The requested instance does not support sharing emoji packs"}) end end diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index ee14cfd6b..192984242 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -57,6 +57,7 @@ def raw_nodeinfo do "mastodon_api_streaming", "polls", "pleroma_explicit_addressing", + "shareable_emoji_packs", if Config.get([:media_proxy, :enabled]) do "media_proxy" end, diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index 38d11cdce..1af4d3720 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -54,6 +54,12 @@ test "downloading shared & unshared packs from another instance via download_fro end) mock(fn + %{method: :get, url: "https://old-instance/nodeinfo/2.1.json"} -> + json(%{features: []}) + + %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> + json(%{features: ["shareable_emoji_packs"]}) + %{ method: :get, url: "https://example.com/api/pleroma/emoji/packs/list" @@ -87,6 +93,22 @@ test "downloading shared & unshared packs from another instance via download_fro conn = build_conn() |> assign(:user, admin) + assert (conn + |> put_req_header("content-type", "application/json") + |> post( + emoji_api_path( + conn, + :download_from + ), + %{ + instance_address: "https://old-instance", + pack_name: "test_pack", + as: "test_pack2" + } + |> Jason.encode!() + ) + |> json_response(500))["error"] =~ "does not support" + assert conn |> put_req_header("content-type", "application/json") |> post( From 7680aec17d6690ccf7383354572456c2118a8750 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 12 Sep 2019 00:00:28 +0300 Subject: [PATCH 171/272] Move emoji api to pleroma api dir --- .../web/{emoji_api => pleroma_api}/emoji_api_controller.ex | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/pleroma/web/{emoji_api => pleroma_api}/emoji_api_controller.ex (100%) diff --git a/lib/pleroma/web/emoji_api/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/emoji_api_controller.ex similarity index 100% rename from lib/pleroma/web/emoji_api/emoji_api_controller.ex rename to lib/pleroma/web/pleroma_api/emoji_api_controller.ex From d51e5e447ee944e77646b15a7aabc0214e99c351 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 12 Sep 2019 20:38:57 +0300 Subject: [PATCH 172/272] Move emoji reloading to admin api --- docs/api/admin_api.md | 7 +++++++ docs/api/pleroma_api.md | 8 -------- lib/pleroma/web/admin_api/admin_api_controller.ex | 6 ++++++ lib/pleroma/web/pleroma_api/emoji_api_controller.ex | 6 ------ lib/pleroma/web/router.ex | 8 ++------ 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/docs/api/admin_api.md b/docs/api/admin_api.md index 7637fa0d4..0377ea655 100644 --- a/docs/api/admin_api.md +++ b/docs/api/admin_api.md @@ -733,3 +733,10 @@ Compile time settings (need instance reboot): } ] ``` + +## `POST /api/pleroma/admin/reload_emoji` +### Reload the instance's custom emoji +* Method `POST` +* Authentication: required +* Params: None +* Response: JSON, "ok" and 200 status diff --git a/docs/api/pleroma_api.md b/docs/api/pleroma_api.md index a7e7fbe25..05a4e6fcc 100644 --- a/docs/api/pleroma_api.md +++ b/docs/api/pleroma_api.md @@ -366,14 +366,6 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * `recipients`: A list of ids of users that should receive posts to this conversation. This will replace the current list of recipients, so submit the full list. The owner of owner of the conversation will always be part of the set of recipients, though. * Response: JSON, statuses (200 - healthy, 503 unhealthy) - -## `POST /api/pleroma/emoji/reload` -### Reload the instance's custom emoji -* Method `POST` -* Authentication: required -* Params: None -* Response: JSON, "ok" and 200 status - ## `PUT /api/pleroma/emoji/packs/:name` ### Creates an empty custom emoji pack * Method `PUT` diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 8a8091daa..4d4e862dd 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -599,6 +599,12 @@ def config_update(conn, %{"configs" => configs}) do |> render("index.json", %{configs: updated}) end + def reload_emoji(conn, _params) do + Pleroma.Emoji.reload() + + conn |> json("ok") + end + def errors(conn, {:error, :not_found}) do conn |> put_status(:not_found) diff --git a/lib/pleroma/web/pleroma_api/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/emoji_api_controller.ex index 36ca2c804..bc1639095 100644 --- a/lib/pleroma/web/pleroma_api/emoji_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/emoji_api_controller.ex @@ -3,12 +3,6 @@ defmodule Pleroma.Web.PleromaAPI.EmojiAPIController do require Logger - def reload(conn, _params) do - Pleroma.Emoji.reload() - - conn |> json("ok") - end - @emoji_dir_path Path.join( Pleroma.Config.get!([:instance, :static_dir]), "emoji" diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 715e4ba68..71ef382c5 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -205,15 +205,11 @@ defmodule Pleroma.Web.Router do get("/config/migrate_from_db", AdminAPIController, :migrate_from_db) get("/moderation_log", AdminAPIController, :list_log) + + post("/reload_emoji", AdminAPIController, :reload_emoji) end scope "/api/pleroma/emoji", Pleroma.Web.PleromaAPI do - scope [] do - pipe_through([:admin_api, :oauth_write]) - - post("/reload", EmojiAPIController, :reload) - end - scope "/packs" do # Modifying packs pipe_through([:admin_api, :oauth_write]) From 8aed05ac1518a10fb30532429984e02a05180ec3 Mon Sep 17 00:00:00 2001 From: vaartis Date: Fri, 13 Sep 2019 12:32:23 +0000 Subject: [PATCH 173/272] Apply suggestion to docs/api/pleroma_api.md --- docs/api/pleroma_api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/pleroma_api.md b/docs/api/pleroma_api.md index 05a4e6fcc..e76bf0caf 100644 --- a/docs/api/pleroma_api.md +++ b/docs/api/pleroma_api.md @@ -417,7 +417,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa errors downloading the pack ## `GET /api/pleroma/emoji/packs/:name/download_shared` -### Requests the instance to download the pack from another instance +### Requests a local pack from the instance * Method `GET` * Authentication: not requires * Params: None From 43022c347f9001d9cb8de976dd521a1e5f1c1318 Mon Sep 17 00:00:00 2001 From: vaartis Date: Fri, 13 Sep 2019 12:32:40 +0000 Subject: [PATCH 174/272] Apply suggestion to docs/api/pleroma_api.md --- docs/api/pleroma_api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/pleroma_api.md b/docs/api/pleroma_api.md index e76bf0caf..faf6e3acd 100644 --- a/docs/api/pleroma_api.md +++ b/docs/api/pleroma_api.md @@ -419,7 +419,7 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa ## `GET /api/pleroma/emoji/packs/:name/download_shared` ### Requests a local pack from the instance * Method `GET` -* Authentication: not requires +* Authentication: not required * Params: None * Response: the archive of the pack with a 200 status code, 403 if the pack is not set as shared, 404 if the pack does not exist From 86795d5ac2604e08654b872927678d3e05a68e85 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Fri, 13 Sep 2019 21:00:28 +0300 Subject: [PATCH 175/272] Document emoji pack listing in the api docs --- docs/api/pleroma_api.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/api/pleroma_api.md b/docs/api/pleroma_api.md index faf6e3acd..a469ddfbf 100644 --- a/docs/api/pleroma_api.md +++ b/docs/api/pleroma_api.md @@ -366,6 +366,13 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa * `recipients`: A list of ids of users that should receive posts to this conversation. This will replace the current list of recipients, so submit the full list. The owner of owner of the conversation will always be part of the set of recipients, though. * Response: JSON, statuses (200 - healthy, 503 unhealthy) +## `GET /api/pleroma/emoji/packs` +### Lists the custom emoji packs on the server +* Method `GET` +* Authentication: not required +* Params: None +* Response: JSON, "ok" and 200 status and the JSON hashmap of "pack name" to "pack contents" + ## `PUT /api/pleroma/emoji/packs/:name` ### Creates an empty custom emoji pack * Method `PUT` From a1325d5fd9b540017cbffbb73db85ee9fa9f12d0 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 18 Sep 2019 18:09:57 +0300 Subject: [PATCH 176/272] Change path from nodeinfo to metadata->features --- lib/pleroma/web/pleroma_api/emoji_api_controller.ex | 2 +- test/web/emoji_api_controller_test.exs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/pleroma_api/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/emoji_api_controller.ex index bc1639095..391c317e7 100644 --- a/lib/pleroma/web/pleroma_api/emoji_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/emoji_api_controller.ex @@ -152,7 +152,7 @@ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = |> Tesla.get!() |> Map.get(:body) |> Jason.decode!() - |> Map.get("features") + |> get_in(["metadata", "features"]) |> Enum.member?("shareable_emoji_packs") if shareable_packs_available do diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index 1af4d3720..297dc092f 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -55,10 +55,10 @@ test "downloading shared & unshared packs from another instance via download_fro mock(fn %{method: :get, url: "https://old-instance/nodeinfo/2.1.json"} -> - json(%{features: []}) + json(%{metadata: %{features: []}}) %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> - json(%{features: ["shareable_emoji_packs"]}) + json(%{metadata: %{features: ["shareable_emoji_packs"]}}) %{ method: :get, From b585134c9092b49e7b5c24e04d6d6315d45dd0a2 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Wed, 18 Sep 2019 19:48:25 +0300 Subject: [PATCH 177/272] Get the nodeinfo address from the well-known --- lib/pleroma/web/pleroma_api/emoji_api_controller.ex | 8 +++++++- test/web/emoji_api_controller_test.exs | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/pleroma_api/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/emoji_api_controller.ex index 391c317e7..6beca426a 100644 --- a/lib/pleroma/web/pleroma_api/emoji_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/emoji_api_controller.ex @@ -148,7 +148,13 @@ def download_shared(conn, %{"name" => name}) do """ def download_from(conn, %{"instance_address" => address, "pack_name" => name} = data) do shareable_packs_available = - "#{address}/nodeinfo/2.1.json" + "#{address}/.well-known/nodeinfo" + |> Tesla.get!() + |> Map.get(:body) + |> Jason.decode!() + |> List.last() + |> Map.get("href") + # Get the actual nodeinfo address and fetch it |> Tesla.get!() |> Map.get(:body) |> Jason.decode!() diff --git a/test/web/emoji_api_controller_test.exs b/test/web/emoji_api_controller_test.exs index 297dc092f..c5a553692 100644 --- a/test/web/emoji_api_controller_test.exs +++ b/test/web/emoji_api_controller_test.exs @@ -54,9 +54,15 @@ test "downloading shared & unshared packs from another instance via download_fro end) mock(fn + %{method: :get, url: "https://old-instance/.well-known/nodeinfo"} -> + json([%{href: "https://old-instance/nodeinfo/2.1.json"}]) + %{method: :get, url: "https://old-instance/nodeinfo/2.1.json"} -> json(%{metadata: %{features: []}}) + %{method: :get, url: "https://example.com/.well-known/nodeinfo"} -> + json([%{href: "https://example.com/nodeinfo/2.1.json"}]) + %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> json(%{metadata: %{features: ["shareable_emoji_packs"]}}) From c3856bed0c4c177c3e6716d06d615a928d95f69c Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 18 Sep 2019 23:17:15 +0200 Subject: [PATCH 178/272] docs/clients.md: Update source code urls --- docs/clients.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/clients.md b/docs/clients.md index 9029361f8..6c6180f7a 100644 --- a/docs/clients.md +++ b/docs/clients.md @@ -39,7 +39,7 @@ Feel free to contact us to be added to this list! ### Nekonium - Homepage: [F-Droid Repository](https://repo.gdgd.jp.net/), [Google Play](https://play.google.com/store/apps/details?id=com.apps.nekonium), [Amazon](https://www.amazon.co.jp/dp/B076FXPRBC/) -- Source: +- Source: - Contact: [@lin@pleroma.gdgd.jp.net](https://pleroma.gdgd.jp.net/users/lin) - Platforms: Android - Features: Streaming Ready @@ -67,7 +67,7 @@ Feel free to contact us to be added to this list! ## Alternative Web Interfaces ### Brutaldon - Homepage: -- Source Code: +- Source Code: - Contact: [@gcupc@glitch.social](https://glitch.social/users/gcupc) - Features: No Streaming From 447514dfa2759e3415399412e82bf772ff119e04 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 18 Sep 2019 23:20:54 +0200 Subject: [PATCH 179/272] Bump copyright years of files changed in 2019 Done via the following command: git diff 1e6c102bfcfe0e4835a48f2483f2376f9bf86a20 --stat --name-only | cat - | xargs sed -i 's/2017-2018 Pleroma Authors/2017-2019 Pleroma Authors/' --- lib/mix/pleroma.ex | 2 +- lib/mix/tasks/pleroma/database.ex | 2 +- lib/mix/tasks/pleroma/ecto/ecto.ex | 2 +- lib/mix/tasks/pleroma/ecto/migrate.ex | 2 +- lib/mix/tasks/pleroma/ecto/rollback.ex | 2 +- lib/mix/tasks/pleroma/emoji.ex | 2 +- lib/mix/tasks/pleroma/instance.ex | 2 +- lib/mix/tasks/pleroma/relay.ex | 2 +- lib/mix/tasks/pleroma/uploads.ex | 2 +- lib/mix/tasks/pleroma/user.ex | 2 +- lib/pleroma/activity/queries.ex | 2 +- lib/pleroma/user/query.ex | 2 +- lib/pleroma/web/oauth/token/clean_worker.ex | 2 +- lib/pleroma/web/oauth/token/query.ex | 2 +- test/activity_test.exs | 2 +- test/captcha_test.exs | 2 +- test/config_test.exs | 2 +- test/daemons/activity_expiration_daemon_test.exs | 2 +- test/daemons/scheduled_activity_daemon_test.exs | 2 +- test/emails/admin_email_test.exs | 2 +- test/emails/mailer_test.exs | 2 +- test/emails/user_email_test.exs | 2 +- test/formatter_test.exs | 2 +- test/html_test.exs | 2 +- test/integration/mastodon_websocket_test.exs | 2 +- test/list_test.exs | 2 +- test/notification_test.exs | 2 +- test/object_test.exs | 2 +- test/plugs/authentication_plug_test.exs | 2 +- test/plugs/cache_control_test.exs | 2 +- test/plugs/ensure_public_or_authenticated_plug_test.exs | 2 +- test/plugs/http_security_plug_test.exs | 2 +- test/plugs/http_signature_plug_test.exs | 2 +- test/plugs/instance_static_test.exs | 2 +- test/plugs/legacy_authentication_plug_test.exs | 2 +- test/plugs/mapped_identity_to_signature_plug_test.exs | 2 +- test/plugs/oauth_plug_test.exs | 2 +- test/plugs/oauth_scopes_plug_test.exs | 2 +- test/plugs/set_format_plug_test.exs | 2 +- test/plugs/set_locale_plug_test.exs | 2 +- test/plugs/uploaded_media_plug_test.exs | 2 +- test/scheduled_activity_test.exs | 2 +- test/support/captcha_mock.ex | 2 +- test/support/conn_case.ex | 2 +- test/support/data_case.ex | 2 +- test/support/helpers.ex | 2 +- test/support/http_request_mock.ex | 2 +- test/support/mrf_module_mock.ex | 2 +- test/support/oban_helpers.ex | 2 +- test/support/web_push_http_client_mock.ex | 2 +- test/tasks/ecto/migrate_test.exs | 2 +- test/tasks/relay_test.exs | 2 +- test/tasks/user_test.exs | 2 +- test/test_helper.exs | 2 +- test/upload_test.exs | 2 +- test/user_search_test.exs | 2 +- test/user_test.exs | 2 +- test/web/activity_pub/activity_pub_controller_test.exs | 2 +- test/web/activity_pub/relay_test.exs | 2 +- test/web/activity_pub/transmogrifier/follow_handling_test.exs | 2 +- test/web/activity_pub/transmogrifier_test.exs | 2 +- test/web/admin_api/admin_api_controller_test.exs | 2 +- test/web/admin_api/search_test.exs | 2 +- test/web/common_api/common_api_utils_test.exs | 2 +- test/web/federator_test.exs | 2 +- test/web/instances/instance_test.exs | 2 +- test/web/instances/instances_test.exs | 2 +- test/web/mastodon_api/views/account_view_test.exs | 2 +- test/web/mastodon_api/views/list_view_test.exs | 2 +- test/web/mastodon_api/views/notification_view_test.exs | 2 +- test/web/mastodon_api/views/push_subscription_view_test.exs | 2 +- test/web/mastodon_api/views/scheduled_activity_view_test.exs | 2 +- test/web/mastodon_api/views/status_view_test.exs | 2 +- test/web/media_proxy/media_proxy_controller_test.exs | 2 +- test/web/media_proxy/media_proxy_test.exs | 2 +- test/web/node_info_test.exs | 2 +- test/web/oauth/authorization_test.exs | 2 +- test/web/oauth/oauth_controller_test.exs | 2 +- test/web/oauth/token/utils_test.exs | 2 +- test/web/oauth/token_test.exs | 2 +- test/web/ostatus/activity_representer_test.exs | 2 +- test/web/ostatus/feed_representer_test.exs | 2 +- test/web/ostatus/ostatus_controller_test.exs | 2 +- test/web/ostatus/ostatus_test.exs | 2 +- test/web/plugs/federating_plug_test.exs | 2 +- test/web/push/impl_test.exs | 2 +- test/web/salmon/salmon_test.exs | 2 +- test/web/streamer/streamer_test.exs | 2 +- test/web/twitter_api/twitter_api_test.exs | 2 +- test/web/uploader_controller_test.exs | 2 +- test/web/views/error_view_test.exs | 2 +- test/web/web_finger/web_finger_controller_test.exs | 2 +- test/web/web_finger/web_finger_test.exs | 2 +- test/web/websub/websub_controller_test.exs | 2 +- test/web/websub/websub_test.exs | 2 +- 95 files changed, 95 insertions(+), 95 deletions(-) diff --git a/lib/mix/pleroma.ex b/lib/mix/pleroma.ex index 1b758ea33..faeb30e1d 100644 --- a/lib/mix/pleroma.ex +++ b/lib/mix/pleroma.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Pleroma do diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index bcc2052d6..890a383df 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.Database do diff --git a/lib/mix/tasks/pleroma/ecto/ecto.ex b/lib/mix/tasks/pleroma/ecto/ecto.ex index b66f63376..36808b93f 100644 --- a/lib/mix/tasks/pleroma/ecto/ecto.ex +++ b/lib/mix/tasks/pleroma/ecto/ecto.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-onl defmodule Mix.Tasks.Pleroma.Ecto do diff --git a/lib/mix/tasks/pleroma/ecto/migrate.ex b/lib/mix/tasks/pleroma/ecto/migrate.ex index 855c977f6..d87b6957d 100644 --- a/lib/mix/tasks/pleroma/ecto/migrate.ex +++ b/lib/mix/tasks/pleroma/ecto/migrate.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-onl defmodule Mix.Tasks.Pleroma.Ecto.Migrate do diff --git a/lib/mix/tasks/pleroma/ecto/rollback.ex b/lib/mix/tasks/pleroma/ecto/rollback.ex index 2ffb0901c..a1af73fa1 100644 --- a/lib/mix/tasks/pleroma/ecto/rollback.ex +++ b/lib/mix/tasks/pleroma/ecto/rollback.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-onl defmodule Mix.Tasks.Pleroma.Ecto.Rollback do diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index c2225af7d..238d8dcd9 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.Emoji do diff --git a/lib/mix/tasks/pleroma/instance.ex b/lib/mix/tasks/pleroma/instance.ex index b9b1991c2..1a1634fe9 100644 --- a/lib/mix/tasks/pleroma/instance.ex +++ b/lib/mix/tasks/pleroma/instance.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.Instance do diff --git a/lib/mix/tasks/pleroma/relay.ex b/lib/mix/tasks/pleroma/relay.ex index a738fae75..200721163 100644 --- a/lib/mix/tasks/pleroma/relay.ex +++ b/lib/mix/tasks/pleroma/relay.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.Relay do diff --git a/lib/mix/tasks/pleroma/uploads.ex b/lib/mix/tasks/pleroma/uploads.ex index be45383ee..95392d81b 100644 --- a/lib/mix/tasks/pleroma/uploads.ex +++ b/lib/mix/tasks/pleroma/uploads.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.Uploads do diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index a3f8bc945..eb0052144 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.User do diff --git a/lib/pleroma/activity/queries.ex b/lib/pleroma/activity/queries.ex index 13fa33831..949f010a8 100644 --- a/lib/pleroma/activity/queries.ex +++ b/lib/pleroma/activity/queries.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Activity.Queries do diff --git a/lib/pleroma/user/query.ex b/lib/pleroma/user/query.ex index f9bcc9e19..2baf016cf 100644 --- a/lib/pleroma/user/query.ex +++ b/lib/pleroma/user/query.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.User.Query do diff --git a/lib/pleroma/web/oauth/token/clean_worker.ex b/lib/pleroma/web/oauth/token/clean_worker.ex index eb94bf86f..f639f9c6f 100644 --- a/lib/pleroma/web/oauth/token/clean_worker.ex +++ b/lib/pleroma/web/oauth/token/clean_worker.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OAuth.Token.CleanWorker do diff --git a/lib/pleroma/web/oauth/token/query.ex b/lib/pleroma/web/oauth/token/query.ex index d92e1f071..9642103e6 100644 --- a/lib/pleroma/web/oauth/token/query.ex +++ b/lib/pleroma/web/oauth/token/query.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OAuth.Token.Query do diff --git a/test/activity_test.exs b/test/activity_test.exs index 6512d84ac..95d9341c4 100644 --- a/test/activity_test.exs +++ b/test/activity_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.ActivityTest do diff --git a/test/captcha_test.exs b/test/captcha_test.exs index 7ca9a4607..9f395d6b4 100644 --- a/test/captcha_test.exs +++ b/test/captcha_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.CaptchaTest do diff --git a/test/config_test.exs b/test/config_test.exs index 73f3fcb0a..438fe62ee 100644 --- a/test/config_test.exs +++ b/test/config_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.ConfigTest do diff --git a/test/daemons/activity_expiration_daemon_test.exs b/test/daemons/activity_expiration_daemon_test.exs index 31f4a70a6..b51132fb0 100644 --- a/test/daemons/activity_expiration_daemon_test.exs +++ b/test/daemons/activity_expiration_daemon_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.ActivityExpirationWorkerTest do diff --git a/test/daemons/scheduled_activity_daemon_test.exs b/test/daemons/scheduled_activity_daemon_test.exs index 32820b2b7..c8e464491 100644 --- a/test/daemons/scheduled_activity_daemon_test.exs +++ b/test/daemons/scheduled_activity_daemon_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.ScheduledActivityDaemonTest do diff --git a/test/emails/admin_email_test.exs b/test/emails/admin_email_test.exs index 9e83c73c6..31eac5f12 100644 --- a/test/emails/admin_email_test.exs +++ b/test/emails/admin_email_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Emails.AdminEmailTest do diff --git a/test/emails/mailer_test.exs b/test/emails/mailer_test.exs index ae5effb7a..2425c85dd 100644 --- a/test/emails/mailer_test.exs +++ b/test/emails/mailer_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Emails.MailerTest do diff --git a/test/emails/user_email_test.exs b/test/emails/user_email_test.exs index 7d8df6abc..963565f7c 100644 --- a/test/emails/user_email_test.exs +++ b/test/emails/user_email_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Emails.UserEmailTest do diff --git a/test/formatter_test.exs b/test/formatter_test.exs index bfa673049..c443dfe7c 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.FormatterTest do diff --git a/test/html_test.exs b/test/html_test.exs index b8906c46a..306ad3b3b 100644 --- a/test/html_test.exs +++ b/test/html_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.HTMLTest do diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs index d02a3cc4d..ed7ce8fe0 100644 --- a/test/integration/mastodon_websocket_test.exs +++ b/test/integration/mastodon_websocket_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Integration.MastodonWebsocketTest do diff --git a/test/list_test.exs b/test/list_test.exs index 8efba75ea..ba79251da 100644 --- a/test/list_test.exs +++ b/test/list_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.ListTest do diff --git a/test/notification_test.exs b/test/notification_test.exs index 3d2f9a8fc..54c0f9877 100644 --- a/test/notification_test.exs +++ b/test/notification_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.NotificationTest do diff --git a/test/object_test.exs b/test/object_test.exs index ba96aeea4..570213a61 100644 --- a/test/object_test.exs +++ b/test/object_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.ObjectTest do diff --git a/test/plugs/authentication_plug_test.exs b/test/plugs/authentication_plug_test.exs index f7f8fd9f3..9ae4c506f 100644 --- a/test/plugs/authentication_plug_test.exs +++ b/test/plugs/authentication_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.AuthenticationPlugTest do diff --git a/test/plugs/cache_control_test.exs b/test/plugs/cache_control_test.exs index 45151b289..69ce6cc7d 100644 --- a/test/plugs/cache_control_test.exs +++ b/test/plugs/cache_control_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.CacheControlTest do diff --git a/test/plugs/ensure_public_or_authenticated_plug_test.exs b/test/plugs/ensure_public_or_authenticated_plug_test.exs index d45662a2a..bae95e150 100644 --- a/test/plugs/ensure_public_or_authenticated_plug_test.exs +++ b/test/plugs/ensure_public_or_authenticated_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.EnsurePublicOrAuthenticatedPlugTest do diff --git a/test/plugs/http_security_plug_test.exs b/test/plugs/http_security_plug_test.exs index 7a2835e3d..9c1c20541 100644 --- a/test/plugs/http_security_plug_test.exs +++ b/test/plugs/http_security_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Plugs.HTTPSecurityPlugTest do diff --git a/test/plugs/http_signature_plug_test.exs b/test/plugs/http_signature_plug_test.exs index d6fd9ea81..d8ace36da 100644 --- a/test/plugs/http_signature_plug_test.exs +++ b/test/plugs/http_signature_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Plugs.HTTPSignaturePlugTest do diff --git a/test/plugs/instance_static_test.exs b/test/plugs/instance_static_test.exs index 6aabc45a4..9b27246fa 100644 --- a/test/plugs/instance_static_test.exs +++ b/test/plugs/instance_static_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.RuntimeStaticPlugTest do diff --git a/test/plugs/legacy_authentication_plug_test.exs b/test/plugs/legacy_authentication_plug_test.exs index 9804e073b..568ef5abd 100644 --- a/test/plugs/legacy_authentication_plug_test.exs +++ b/test/plugs/legacy_authentication_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.LegacyAuthenticationPlugTest do diff --git a/test/plugs/mapped_identity_to_signature_plug_test.exs b/test/plugs/mapped_identity_to_signature_plug_test.exs index bb45d9edf..6b9d3649d 100644 --- a/test/plugs/mapped_identity_to_signature_plug_test.exs +++ b/test/plugs/mapped_identity_to_signature_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Plugs.MappedSignatureToIdentityPlugTest do diff --git a/test/plugs/oauth_plug_test.exs b/test/plugs/oauth_plug_test.exs index 5a2ed11cc..dea11cdb0 100644 --- a/test/plugs/oauth_plug_test.exs +++ b/test/plugs/oauth_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.OAuthPlugTest do diff --git a/test/plugs/oauth_scopes_plug_test.exs b/test/plugs/oauth_scopes_plug_test.exs index f328026df..6a13ea811 100644 --- a/test/plugs/oauth_scopes_plug_test.exs +++ b/test/plugs/oauth_scopes_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.OAuthScopesPlugTest do diff --git a/test/plugs/set_format_plug_test.exs b/test/plugs/set_format_plug_test.exs index bb21956bb..27c026fdd 100644 --- a/test/plugs/set_format_plug_test.exs +++ b/test/plugs/set_format_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.SetFormatPlugTest do diff --git a/test/plugs/set_locale_plug_test.exs b/test/plugs/set_locale_plug_test.exs index b6c4c1cea..0aaeedc1e 100644 --- a/test/plugs/set_locale_plug_test.exs +++ b/test/plugs/set_locale_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.SetLocalePlugTest do diff --git a/test/plugs/uploaded_media_plug_test.exs b/test/plugs/uploaded_media_plug_test.exs index 49cf5396a..5ba963139 100644 --- a/test/plugs/uploaded_media_plug_test.exs +++ b/test/plugs/uploaded_media_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.UploadedMediaPlugTest do diff --git a/test/scheduled_activity_test.exs b/test/scheduled_activity_test.exs index edc7cc3f9..dcf12fb49 100644 --- a/test/scheduled_activity_test.exs +++ b/test/scheduled_activity_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.ScheduledActivityTest do diff --git a/test/support/captcha_mock.ex b/test/support/captcha_mock.ex index ef4e68bc5..65ca6b3bd 100644 --- a/test/support/captcha_mock.ex +++ b/test/support/captcha_mock.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Captcha.Mock do diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index b39c70677..9897f72ce 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ConnCase do diff --git a/test/support/data_case.ex b/test/support/data_case.ex index 17fa15214..4ffcbac9e 100644 --- a/test/support/data_case.ex +++ b/test/support/data_case.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.DataCase do diff --git a/test/support/helpers.ex b/test/support/helpers.ex index a601b3ec8..ce39dd9d8 100644 --- a/test/support/helpers.ex +++ b/test/support/helpers.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Tests.Helpers do diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index 231e7c498..6f9886836 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule HttpRequestMock do diff --git a/test/support/mrf_module_mock.ex b/test/support/mrf_module_mock.ex index 12c7e22bc..632c7ff1d 100644 --- a/test/support/mrf_module_mock.ex +++ b/test/support/mrf_module_mock.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule MRFModuleMock do diff --git a/test/support/oban_helpers.ex b/test/support/oban_helpers.ex index 989770926..72792c064 100644 --- a/test/support/oban_helpers.ex +++ b/test/support/oban_helpers.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Tests.ObanHelpers do diff --git a/test/support/web_push_http_client_mock.ex b/test/support/web_push_http_client_mock.ex index d8accd21c..1d6ccff7e 100644 --- a/test/support/web_push_http_client_mock.ex +++ b/test/support/web_push_http_client_mock.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.WebPushHttpClientMock do diff --git a/test/tasks/ecto/migrate_test.exs b/test/tasks/ecto/migrate_test.exs index 0538a7b40..42f6cbf47 100644 --- a/test/tasks/ecto/migrate_test.exs +++ b/test/tasks/ecto/migrate_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-onl defmodule Mix.Tasks.Pleroma.Ecto.MigrateTest do diff --git a/test/tasks/relay_test.exs b/test/tasks/relay_test.exs index 7bde56606..c866608ab 100644 --- a/test/tasks/relay_test.exs +++ b/test/tasks/relay_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.RelayTest do diff --git a/test/tasks/user_test.exs b/test/tasks/user_test.exs index 2b9453042..cf12d9ed6 100644 --- a/test/tasks/user_test.exs +++ b/test/tasks/user_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.UserTest do diff --git a/test/test_helper.exs b/test/test_helper.exs index a927b2c3d..fb33e0969 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only os_exclude = if :os.type() == {:unix, :darwin}, do: [skip_on_mac: true], else: [] diff --git a/test/upload_test.exs b/test/upload_test.exs index 6721fe82e..0ca5ebced 100644 --- a/test/upload_test.exs +++ b/test/upload_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.UploadTest do diff --git a/test/user_search_test.exs b/test/user_search_test.exs index 48ce973ad..f7ab31287 100644 --- a/test/user_search_test.exs +++ b/test/user_search_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.UserSearchTest do diff --git a/test/user_test.exs b/test/user_test.exs index b09e9311d..39ba69668 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.UserTest do diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index f83b14452..9e8e420ec 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do diff --git a/test/web/activity_pub/relay_test.exs b/test/web/activity_pub/relay_test.exs index 7315dce26..0f7556538 100644 --- a/test/web/activity_pub/relay_test.exs +++ b/test/web/activity_pub/relay_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.RelayTest do diff --git a/test/web/activity_pub/transmogrifier/follow_handling_test.exs b/test/web/activity_pub/transmogrifier/follow_handling_test.exs index fe89f7cb0..99ab573c5 100644 --- a/test/web/activity_pub/transmogrifier/follow_handling_test.exs +++ b/test/web/activity_pub/transmogrifier/follow_handling_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.Transmogrifier.FollowHandlingTest do diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 6c296eb0d..ebed65b7c 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index c497ea098..41b4364f2 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do diff --git a/test/web/admin_api/search_test.exs b/test/web/admin_api/search_test.exs index 501a8d007..9df4cd539 100644 --- a/test/web/admin_api/search_test.exs +++ b/test/web/admin_api/search_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.AdminAPI.SearchTest do diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index c281dd1f1..230146451 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.CommonAPI.UtilsTest do diff --git a/test/web/federator_test.exs b/test/web/federator_test.exs index 4096d4690..43a715706 100644 --- a/test/web/federator_test.exs +++ b/test/web/federator_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.FederatorTest do diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index 0b53bc6cd..e54d708ad 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Instances.InstanceTest do diff --git a/test/web/instances/instances_test.exs b/test/web/instances/instances_test.exs index dea8e2aea..65b03b155 100644 --- a/test/web/instances/instances_test.exs +++ b/test/web/instances/instances_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.InstancesTest do diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 1d8b28339..2ea87c5f0 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.AccountViewTest do diff --git a/test/web/mastodon_api/views/list_view_test.exs b/test/web/mastodon_api/views/list_view_test.exs index fb00310b9..59e896a7c 100644 --- a/test/web/mastodon_api/views/list_view_test.exs +++ b/test/web/mastodon_api/views/list_view_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.ListViewTest do diff --git a/test/web/mastodon_api/views/notification_view_test.exs b/test/web/mastodon_api/views/notification_view_test.exs index 977ea1e87..9231aaec8 100644 --- a/test/web/mastodon_api/views/notification_view_test.exs +++ b/test/web/mastodon_api/views/notification_view_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do diff --git a/test/web/mastodon_api/views/push_subscription_view_test.exs b/test/web/mastodon_api/views/push_subscription_view_test.exs index dc935fc82..4e4f5b7e6 100644 --- a/test/web/mastodon_api/views/push_subscription_view_test.exs +++ b/test/web/mastodon_api/views/push_subscription_view_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.PushSubscriptionViewTest do diff --git a/test/web/mastodon_api/views/scheduled_activity_view_test.exs b/test/web/mastodon_api/views/scheduled_activity_view_test.exs index ecbb855d4..6387e4555 100644 --- a/test/web/mastodon_api/views/scheduled_activity_view_test.exs +++ b/test/web/mastodon_api/views/scheduled_activity_view_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.ScheduledActivityViewTest do diff --git a/test/web/mastodon_api/views/status_view_test.exs b/test/web/mastodon_api/views/status_view_test.exs index fcdd7fbcb..51f8434fa 100644 --- a/test/web/mastodon_api/views/status_view_test.exs +++ b/test/web/mastodon_api/views/status_view_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.StatusViewTest do diff --git a/test/web/media_proxy/media_proxy_controller_test.exs b/test/web/media_proxy/media_proxy_controller_test.exs index 53b8f556b..fdfdb5ec6 100644 --- a/test/web/media_proxy/media_proxy_controller_test.exs +++ b/test/web/media_proxy/media_proxy_controller_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do diff --git a/test/web/media_proxy/media_proxy_test.exs b/test/web/media_proxy/media_proxy_test.exs index 79699cac5..96bdde219 100644 --- a/test/web/media_proxy/media_proxy_test.exs +++ b/test/web/media_proxy/media_proxy_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MediaProxyTest do diff --git a/test/web/node_info_test.exs b/test/web/node_info_test.exs index f6147c286..e15a0bfff 100644 --- a/test/web/node_info_test.exs +++ b/test/web/node_info_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.NodeInfoTest do diff --git a/test/web/oauth/authorization_test.exs b/test/web/oauth/authorization_test.exs index d8b008437..2e82a7b79 100644 --- a/test/web/oauth/authorization_test.exs +++ b/test/web/oauth/authorization_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OAuth.AuthorizationTest do diff --git a/test/web/oauth/oauth_controller_test.exs b/test/web/oauth/oauth_controller_test.exs index b492c7794..2780e1746 100644 --- a/test/web/oauth/oauth_controller_test.exs +++ b/test/web/oauth/oauth_controller_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OAuth.OAuthControllerTest do diff --git a/test/web/oauth/token/utils_test.exs b/test/web/oauth/token/utils_test.exs index 20e338cab..dc1f9a986 100644 --- a/test/web/oauth/token/utils_test.exs +++ b/test/web/oauth/token/utils_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OAuth.Token.UtilsTest do diff --git a/test/web/oauth/token_test.exs b/test/web/oauth/token_test.exs index 3c07309b7..5359940f8 100644 --- a/test/web/oauth/token_test.exs +++ b/test/web/oauth/token_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OAuth.TokenTest do diff --git a/test/web/ostatus/activity_representer_test.exs b/test/web/ostatus/activity_representer_test.exs index a3a92ce5b..a8d500890 100644 --- a/test/web/ostatus/activity_representer_test.exs +++ b/test/web/ostatus/activity_representer_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OStatus.ActivityRepresenterTest do diff --git a/test/web/ostatus/feed_representer_test.exs b/test/web/ostatus/feed_representer_test.exs index 3c7b126e7..d1cadf1e4 100644 --- a/test/web/ostatus/feed_representer_test.exs +++ b/test/web/ostatus/feed_representer_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OStatus.FeedRepresenterTest do diff --git a/test/web/ostatus/ostatus_controller_test.exs b/test/web/ostatus/ostatus_controller_test.exs index 095ae7041..ec96f0012 100644 --- a/test/web/ostatus/ostatus_controller_test.exs +++ b/test/web/ostatus/ostatus_controller_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OStatus.OStatusControllerTest do diff --git a/test/web/ostatus/ostatus_test.exs b/test/web/ostatus/ostatus_test.exs index 803a97695..f04a5cfc5 100644 --- a/test/web/ostatus/ostatus_test.exs +++ b/test/web/ostatus/ostatus_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.OStatusTest do diff --git a/test/web/plugs/federating_plug_test.exs b/test/web/plugs/federating_plug_test.exs index bb2e1687a..9dcab93da 100644 --- a/test/web/plugs/federating_plug_test.exs +++ b/test/web/plugs/federating_plug_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.FederatingPlugTest do diff --git a/test/web/push/impl_test.exs b/test/web/push/impl_test.exs index e2f89f40a..2f6ce4bd2 100644 --- a/test/web/push/impl_test.exs +++ b/test/web/push/impl_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Push.ImplTest do diff --git a/test/web/salmon/salmon_test.exs b/test/web/salmon/salmon_test.exs index 0186f3fef..153ec41ac 100644 --- a/test/web/salmon/salmon_test.exs +++ b/test/web/salmon/salmon_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Salmon.SalmonTest do diff --git a/test/web/streamer/streamer_test.exs b/test/web/streamer/streamer_test.exs index 88847e20f..b8fcd41fa 100644 --- a/test/web/streamer/streamer_test.exs +++ b/test/web/streamer/streamer_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.StreamerTest do diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index 3c0528776..08f264431 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do diff --git a/test/web/uploader_controller_test.exs b/test/web/uploader_controller_test.exs index 70028df1c..7c7f9a6ea 100644 --- a/test/web/uploader_controller_test.exs +++ b/test/web/uploader_controller_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.UploaderControllerTest do diff --git a/test/web/views/error_view_test.exs b/test/web/views/error_view_test.exs index 3857d585f..4e5398c83 100644 --- a/test/web/views/error_view_test.exs +++ b/test/web/views/error_view_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ErrorViewTest do diff --git a/test/web/web_finger/web_finger_controller_test.exs b/test/web/web_finger/web_finger_controller_test.exs index bd3ccaaf7..49cd1460b 100644 --- a/test/web/web_finger/web_finger_controller_test.exs +++ b/test/web/web_finger/web_finger_controller_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do diff --git a/test/web/web_finger/web_finger_test.exs b/test/web/web_finger/web_finger_test.exs index 8fdb9adea..696c1bd70 100644 --- a/test/web/web_finger/web_finger_test.exs +++ b/test/web/web_finger/web_finger_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.WebFingerTest do diff --git a/test/web/websub/websub_controller_test.exs b/test/web/websub/websub_controller_test.exs index 59cacbe68..f6d002b3b 100644 --- a/test/web/websub/websub_controller_test.exs +++ b/test/web/websub/websub_controller_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Websub.WebsubControllerTest do diff --git a/test/web/websub/websub_test.exs b/test/web/websub/websub_test.exs index 929acf5a2..46ca545de 100644 --- a/test/web/websub/websub_test.exs +++ b/test/web/websub/websub_test.exs @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2018 Pleroma Authors +# Copyright © 2017-2019 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.WebsubTest do From 3e972c0456a6f556bd1ee9118116f347d774df61 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Thu, 19 Sep 2019 00:21:16 +0300 Subject: [PATCH 180/272] Add :shared_pack_cache_seconds_per_file to description.exs --- config/description.exs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/config/description.exs b/config/description.exs index 65ea6bf01..5dc8dc364 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2256,6 +2256,14 @@ "Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download." <> " Currently only one manifest can be added (no arrays)", suggestions: ["https://git.pleroma.social/pleroma/emoji-index/raw/master/index.json"] + }, + %{ + key: :shared_pack_cache_seconds_per_file, + type: :integer, + descpiption: + "When an emoji pack is shared, the archive is created and cached in memory" <> + " for this amount of seconds multiplied by the number of files.", + suggestions: [60] } ] }, From fe5e0b784604b1352e98e7915c3c67d59ac4f709 Mon Sep 17 00:00:00 2001 From: eugenijm Date: Thu, 19 Sep 2019 08:27:55 +0300 Subject: [PATCH 181/272] Mastodon API: Return `pleroma.direct_conversation_id` when creating direct messages (`POST /api/v1/statuses`) --- CHANGELOG.md | 1 + .../mastodon_api/controllers/mastodon_api_controller.ex | 7 ++++++- test/web/mastodon_api/mastodon_api_controller_test.exs | 4 +++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 906aa985e..84b64e2b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings) - Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler - Admin API: Return `total` when querying for reports +- Mastodon API: Return `pleroma.direct_conversation_id` when creating a direct message (`POST /api/v1/statuses`) ## [1.1.0] - 2019-??-?? ### Security diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index 37eeb2ac3..6704ee7e8 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -611,7 +611,12 @@ def post_status(%{assigns: %{user: user}} = conn, %{"status" => _} = params) do {:ok, activity} -> conn |> put_view(StatusView) - |> try_render("status.json", %{activity: activity, for: user, as: :activity}) + |> try_render("status.json", %{ + activity: activity, + for: user, + as: :activity, + with_direct_conversation_id: true + }) end end end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index fb04748bb..35a0d3fe1 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -296,7 +296,9 @@ test "posting a direct status", %{conn: conn} do conn |> post("api/v1/statuses", %{"status" => content, "visibility" => "direct"}) - assert %{"id" => id, "visibility" => "direct"} = json_response(conn, 200) + assert %{"id" => id} = response = json_response(conn, 200) + assert response["visibility"] == "direct" + assert response["pleroma"]["direct_conversation_id"] assert activity = Activity.get_by_id(id) assert activity.recipients == [user2.ap_id, conn.assigns[:user].ap_id] assert activity.data["to"] == [user2.ap_id] From cf3041220a7a14dc3fac24177fac1f4aecc77f5f Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Tue, 17 Sep 2019 15:22:46 +0700 Subject: [PATCH 182/272] Add support for `rel="ugc"` --- config/config.exs | 2 +- config/description.exs | 2 +- docs/config.md | 2 +- lib/pleroma/html.ex | 6 +++-- test/formatter_test.exs | 24 ++++++++++--------- test/web/common_api/common_api_utils_test.exs | 6 ++--- .../update_credentials_test.exs | 2 +- 7 files changed, 24 insertions(+), 20 deletions(-) diff --git a/config/config.exs b/config/config.exs index c7e0cf09f..26dc4d16d 100644 --- a/config/config.exs +++ b/config/config.exs @@ -507,7 +507,7 @@ class: false, strip_prefix: false, new_window: false, - rel: false + rel: "ugc" ] config :pleroma, :ldap, diff --git a/config/description.exs b/config/description.exs index 65ea6bf01..abfb6370f 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1900,7 +1900,7 @@ key: :rel, type: [:string, false], description: "override the rel attribute. false to clear", - suggestions: ["noopener noreferrer", false] + suggestions: ["ugc", false] }, %{ key: :new_window, diff --git a/docs/config.md b/docs/config.md index 3f37fa561..def462900 100644 --- a/docs/config.md +++ b/docs/config.md @@ -521,7 +521,7 @@ config :auto_linker, class: false, strip_prefix: false, new_window: false, - rel: false + rel: "ugc" ] ``` diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex index 3951f0f51..937bafed5 100644 --- a/lib/pleroma/html.ex +++ b/lib/pleroma/html.ex @@ -184,7 +184,8 @@ defmodule Pleroma.HTML.Scrubber.Default do "tag", "nofollow", "noopener", - "noreferrer" + "noreferrer", + "ugc" ]) Meta.allow_tag_with_these_attributes("a", ["name", "title"]) @@ -304,7 +305,8 @@ defmodule Pleroma.HTML.Scrubber.LinksOnly do "nofollow", "noopener", "noreferrer", - "me" + "me", + "ugc" ]) Meta.allow_tag_with_these_attributes("a", ["name", "title"]) diff --git a/test/formatter_test.exs b/test/formatter_test.exs index c443dfe7c..3674577d6 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -39,21 +39,21 @@ test "turning urls into links" do text = "Hey, check out https://www.youtube.com/watch?v=8Zg1-TufF%20zY?x=1&y=2#blabla ." expected = - "Hey, check out https://www.youtube.com/watch?v=8Zg1-TufF%20zY?x=1&y=2#blabla ." + ~S(Hey, check out https://www.youtube.com/watch?v=8Zg1-TufF%20zY?x=1&y=2#blabla .) assert {^expected, [], []} = Formatter.linkify(text) text = "https://mastodon.social/@lambadalambda" expected = - "https://mastodon.social/@lambadalambda" + ~S(https://mastodon.social/@lambadalambda) assert {^expected, [], []} = Formatter.linkify(text) text = "https://mastodon.social:4000/@lambadalambda" expected = - "https://mastodon.social:4000/@lambadalambda" + ~S(https://mastodon.social:4000/@lambadalambda) assert {^expected, [], []} = Formatter.linkify(text) @@ -63,55 +63,57 @@ test "turning urls into links" do assert {^expected, [], []} = Formatter.linkify(text) text = "http://www.cs.vu.nl/~ast/intel/" - expected = "http://www.cs.vu.nl/~ast/intel/" + + expected = + ~S(http://www.cs.vu.nl/~ast/intel/) assert {^expected, [], []} = Formatter.linkify(text) text = "https://forum.zdoom.org/viewtopic.php?f=44&t=57087" expected = - "https://forum.zdoom.org/viewtopic.php?f=44&t=57087" + "https://forum.zdoom.org/viewtopic.php?f=44&t=57087" assert {^expected, [], []} = Formatter.linkify(text) text = "https://en.wikipedia.org/wiki/Sophia_(Gnosticism)#Mythos_of_the_soul" expected = - "https://en.wikipedia.org/wiki/Sophia_(Gnosticism)#Mythos_of_the_soul" + "https://en.wikipedia.org/wiki/Sophia_(Gnosticism)#Mythos_of_the_soul" assert {^expected, [], []} = Formatter.linkify(text) text = "https://www.google.co.jp/search?q=Nasim+Aghdam" expected = - "https://www.google.co.jp/search?q=Nasim+Aghdam" + "https://www.google.co.jp/search?q=Nasim+Aghdam" assert {^expected, [], []} = Formatter.linkify(text) text = "https://en.wikipedia.org/wiki/Duff's_device" expected = - "https://en.wikipedia.org/wiki/Duff's_device" + "https://en.wikipedia.org/wiki/Duff's_device" assert {^expected, [], []} = Formatter.linkify(text) text = "https://pleroma.com https://pleroma.com/sucks" expected = - "https://pleroma.com https://pleroma.com/sucks" + "https://pleroma.com https://pleroma.com/sucks" assert {^expected, [], []} = Formatter.linkify(text) text = "xmpp:contact@hacktivis.me" - expected = "xmpp:contact@hacktivis.me" + expected = "xmpp:contact@hacktivis.me" assert {^expected, [], []} = Formatter.linkify(text) text = "magnet:?xt=urn:btih:7ec9d298e91d6e4394d1379caf073c77ff3e3136&tr=udp%3A%2F%2Fopentor.org%3A2710&tr=udp%3A%2F%2Ftracker.blackunicorn.xyz%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=wss%3A%2F%2Ftracker.btorrent.xyz&tr=wss%3A%2F%2Ftracker.fastcast.nz&tr=wss%3A%2F%2Ftracker.openwebtorrent.com" - expected = "#{text}" + expected = "#{text}" assert {^expected, [], []} = Formatter.linkify(text) end diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index 230146451..78cfe3c5f 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -157,11 +157,11 @@ test "works for text/markdown with mentions" do text = "**hello world**\n\n*another @user__test and @user__test google.com paragraph*" expected = - "

hello world

\n

another hello world

\n

another @user__test and @user__test and @user__test google.com paragraph

\n" + }" class="u-url mention" href="http://foo.com/user__test">@user__test google.com paragraph

\n) {output, _, _} = Utils.format_input(text, "text/markdown") diff --git a/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs b/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs index 89d4ca37e..1e8d0d03b 100644 --- a/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs +++ b/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs @@ -334,7 +334,7 @@ test "update fields", %{conn: conn} do assert account["fields"] == [ %{"name" => "foo", "value" => "bar"}, - %{"name" => "link", "value" => "cofe.io"} + %{"name" => "link", "value" => ~S(cofe.io)} ] assert account["source"]["fields"] == [ From d639cdcecb1b9cd2326b98c926dff8b0f4c27e3c Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Thu, 19 Sep 2019 14:04:13 +0700 Subject: [PATCH 183/272] Update "config/description.exs" --- config/description.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/description.exs b/config/description.exs index abfb6370f..510e285df 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1900,7 +1900,7 @@ key: :rel, type: [:string, false], description: "override the rel attribute. false to clear", - suggestions: ["ugc", false] + suggestions: ["ugc", "noopener noreferrer", false] }, %{ key: :new_window, From 95c948110ca130559fd6a5302011aa58900274ac Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Thu, 19 Sep 2019 14:39:52 +0700 Subject: [PATCH 184/272] Add `rel="ugc"` to hashtags and mentions --- lib/pleroma/formatter.ex | 6 ++-- test/formatter_test.exs | 30 +++++++++++-------- test/user_test.exs | 4 +-- test/web/common_api/common_api_utils_test.exs | 4 +-- .../update_credentials_test.exs | 7 ++--- .../mastodon_api_controller_test.exs | 8 ++--- test/web/twitter_api/twitter_api_test.exs | 4 ++- 7 files changed, 35 insertions(+), 28 deletions(-) diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex index 607843a5b..23a5ac8fe 100644 --- a/lib/pleroma/formatter.ex +++ b/lib/pleroma/formatter.ex @@ -36,9 +36,9 @@ def mention_handler("@" <> nickname, buffer, opts, acc) do nickname_text = get_nickname_text(nickname, opts) link = - "@#{ + ~s(@#{ nickname_text - }" + }) {link, %{acc | mentions: MapSet.put(acc.mentions, {"@" <> nickname, user})}} @@ -50,7 +50,7 @@ def mention_handler("@" <> nickname, buffer, opts, acc) do def hashtag_handler("#" <> tag = tag_text, _buffer, _opts, acc) do tag = String.downcase(tag) url = "#{Pleroma.Web.base_url()}/tag/#{tag}" - link = "" + link = ~s(#{tag_text}) {link, %{acc | tags: MapSet.put(acc.tags, {tag_text, tag})}} end diff --git a/test/formatter_test.exs b/test/formatter_test.exs index 3674577d6..2e4280fc2 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -19,7 +19,7 @@ test "turns hashtags into links" do text = "I love #cofe and #2hu" expected_text = - "I love and " + ~s(I love #cofe and #2hu) assert {^expected_text, [], _tags} = Formatter.linkify(text) end @@ -28,7 +28,7 @@ test "does not turn html characters to tags" do text = "#fact_3: pleroma does what mastodon't" expected_text = - ": pleroma does what mastodon't" + ~s(#fact_3: pleroma does what mastodon't) assert {^expected_text, [], _tags} = Formatter.linkify(text) end @@ -137,13 +137,13 @@ test "gives a replacement for user links, using local nicknames in user links te assert length(mentions) == 3 expected_text = - "@gsimg According to @archa_eme_, that is @daggsy. Also hello @archaeme" + }" class="u-url mention" href="#{archaeme_remote.ap_id}" rel="ugc">@archaeme) assert expected_text == text end @@ -158,7 +158,9 @@ test "gives a replacement for user links when the user is using Osada" do assert length(mentions) == 1 expected_text = - "@mike test" + ~s(@mike test) assert expected_text == text end @@ -172,7 +174,7 @@ test "gives a replacement for single-character local nicknames" do assert length(mentions) == 1 expected_text = - "@o hi" + ~s(@o hi) assert expected_text == text end @@ -194,13 +196,17 @@ test "given the 'safe_mention' option, it will only mention people in the beginn assert mentions == [{"@#{user.nickname}", user}, {"@#{other_user.nickname}", other_user}] assert expected_text == - "@#{user.nickname} @#{other_user.nickname} hey dudes i hate @#{third_user.nickname}" + }" class="u-url mention" href="#{third_user.ap_id}" rel="ugc">@#{ + third_user.nickname + }) end test "given the 'safe_mention' option, it will still work without any mention" do diff --git a/test/user_test.exs b/test/user_test.exs index 39ba69668..6852fcd40 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1294,9 +1294,9 @@ test "preserves hosts in user links text" do bio = "A.k.a. @nick@domain.com" expected_text = - "A.k.a. @nick@domain.com" + }" rel="ugc">@nick@domain.com) assert expected_text == User.parse_bio(bio, user) end diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index 78cfe3c5f..2588898d0 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -159,9 +159,9 @@ test "works for text/markdown with mentions" do expected = ~s(

hello world

\n

another @user__test and @user__test and @user__test google.com paragraph

\n) + }" class="u-url mention" href="http://foo.com/user__test" rel="ugc">@user__test google.com paragraph

\n) {output, _, _} = Utils.format_input(text, "text/markdown") diff --git a/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs b/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs index 1e8d0d03b..560f55137 100644 --- a/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs +++ b/test/web/mastodon_api/controllers/mastodon_api_controller/update_credentials_test.exs @@ -86,10 +86,9 @@ test "updates the user's bio", %{conn: conn} do assert user = json_response(conn, 200) assert user["note"] == - ~s(I drink with @) <> user2.nickname <> ~s() + ~s(I drink #cofe with @#{user2.nickname}) end test "updates the user's locking status", %{conn: conn} do diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index fb04748bb..b85f3e758 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -996,9 +996,9 @@ test "list of notifications", %{conn: conn} do |> get("/api/v1/notifications") expected_response = - "hi @#{user.nickname}" + }" rel="ugc">@#{user.nickname}) assert [%{"status" => %{"content" => response}} | _rest] = json_response(conn, 200) assert response == expected_response @@ -1018,9 +1018,9 @@ test "getting a single notification", %{conn: conn} do |> get("/api/v1/notifications/#{notification.id}") expected_response = - "hi @#{user.nickname}" + }" rel="ugc">@#{user.nickname}) assert %{"status" => %{"content" => response}} = json_response(conn, 200) assert response == expected_response diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index 08f264431..bf1e233f5 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -109,7 +109,9 @@ test "it registers a new user and parses mentions in the bio" do {:ok, user2} = TwitterAPI.register_user(data2) expected_text = - "@john test" + ~s(@john test) assert user2.bio == expected_text end From ae1d371428e16b738b8ec638e411e5e8c1ac4937 Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Thu, 19 Sep 2019 14:53:34 +0700 Subject: [PATCH 185/272] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 906aa985e..f84b0ac68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - AdminAPI: Add "godmode" while fetching user statuses (i.e. admin can see private statuses) - Improve digest email template – Pagination: (optional) return `total` alongside with `items` when paginating +- Add `rel="ugc"` to all links in statuses, to prevent SEO spam ### Fixed - Following from Osada From 0e6085da106cb966c340fac2d307d9e8e26e91ed Mon Sep 17 00:00:00 2001 From: D Anzorge Date: Thu, 19 Sep 2019 16:09:07 +0200 Subject: [PATCH 186/272] Fix pagination in AP outbox.json --- lib/pleroma/web/activity_pub/views/user_view.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex index 164b973d0..a2f73e140 100644 --- a/lib/pleroma/web/activity_pub/views/user_view.ex +++ b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -227,11 +227,12 @@ def render("outbox.json", %{user: user, max_id: max_qid}) do activities = ActivityPub.fetch_user_activities(user, nil, params) + # this is sorted chronologically, so first activity is the newest (max) {max_id, min_id, collection} = if length(activities) > 0 do { - Enum.at(Enum.reverse(activities), 0).id, Enum.at(activities, 0).id, + Enum.at(Enum.reverse(activities), 0).id, Enum.map(activities, fn act -> {:ok, data} = Transmogrifier.prepare_outgoing(act.data) data From 9aca2cc95d0d8886d35be17e5cdd683004b425d9 Mon Sep 17 00:00:00 2001 From: D Anzorge Date: Thu, 19 Sep 2019 16:09:24 +0200 Subject: [PATCH 187/272] Add test for correct AP outbox pagination --- .../web/activity_pub/views/user_view_test.exs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/web/activity_pub/views/user_view_test.exs b/test/web/activity_pub/views/user_view_test.exs index 2b4a04afd..eda95e3ea 100644 --- a/test/web/activity_pub/views/user_view_test.exs +++ b/test/web/activity_pub/views/user_view_test.exs @@ -142,4 +142,27 @@ test "sets correct totalItems when follows are hidden but the follow counter is assert %{"totalItems" => 1} = UserView.render("following.json", %{user: user}) end end + + test "outbox paginates correctly" do + user = insert(:user) + + posts = + for i <- 0..25 do + {:ok, activity} = CommonAPI.post(user, %{"status" => "post #{i}"}) + activity + end + + # outbox sorts chronologically, newest first, with ten per page + posts = Enum.reverse(posts) + + %{"first" => %{"next" => next_url}} = + UserView.render("outbox.json", %{user: user, max_id: nil}) + + next_id = Enum.at(posts, 9).id + assert next_url =~ next_id + + %{"next" => next_url} = UserView.render("outbox.json", %{user: user, max_id: next_id}) + next_id = Enum.at(posts, 19).id + assert next_url =~ next_id + end end From fe4db3b94e71bafb913044de543472764671cd1a Mon Sep 17 00:00:00 2001 From: lain Date: Thu, 19 Sep 2019 21:01:05 +0200 Subject: [PATCH 188/272] API Docs: Document conversation ids. --- docs/api/differences_in_mastoapi_responses.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/api/differences_in_mastoapi_responses.md b/docs/api/differences_in_mastoapi_responses.md index 3c7f5dad7..d007a69c3 100644 --- a/docs/api/differences_in_mastoapi_responses.md +++ b/docs/api/differences_in_mastoapi_responses.md @@ -21,7 +21,8 @@ Adding the parameter `with_muted=true` to the timeline queries will also return Has these additional fields under the `pleroma` object: - `local`: true if the post was made on the local instance -- `conversation_id`: the ID of the conversation the status is associated with (if any) +- `conversation_id`: the ID of the AP context the status is associated with (if any) +- `direct_conversation_id`: the ID of the Mastodon direct message conversation the status is associated with (if any) - `in_reply_to_account_acct`: the `acct` property of User entity for replied user (if any) - `content`: a map consisting of alternate representations of the `content` property with the key being it's mimetype. Currently the only alternate representation supported is `text/plain` - `spoiler_text`: a map consisting of alternate representations of the `spoiler_text` property with the key being it's mimetype. Currently the only alternate representation supported is `text/plain` From df3feb9412f1a6b9962aa5ad4a45e73aabc486d7 Mon Sep 17 00:00:00 2001 From: feld Date: Fri, 20 Sep 2019 13:21:07 +0000 Subject: [PATCH 189/272] Make it obvious how to support dual stack for MongooseIM --- installation/pleroma-mongooseim.cfg | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/installation/pleroma-mongooseim.cfg b/installation/pleroma-mongooseim.cfg index d7567321f..576f83541 100755 --- a/installation/pleroma-mongooseim.cfg +++ b/installation/pleroma-mongooseim.cfg @@ -215,7 +215,9 @@ ]} ]}, - { 5222, ejabberd_c2s, [ + %% If you want dual stack, you have to clone this entire config stanza + %% and change the bind to "::" + { {5222, "0.0.0.0"}, ejabberd_c2s, [ %% %% If TLS is compiled in and you installed a SSL @@ -246,7 +248,9 @@ %% {max_stanza_size, 65536} %% ]}, - { 5269, ejabberd_s2s_in, [ + %% If you want dual stack, you have to clone this entire config stanza + %% and change the bind to "::" + { {5269, "0.0.0.0"}, ejabberd_s2s_in, [ {shaper, s2s_shaper}, {max_stanza_size, 131072}, {protocol_options, ["no_sslv3"]} From 7cf125245512eb49a118535eda52ddbdd0c4c6bf Mon Sep 17 00:00:00 2001 From: eugenijm Date: Fri, 20 Sep 2019 17:54:38 +0300 Subject: [PATCH 190/272] Mastodon API: Fix private and direct statuses not being filtered out from the public timeline for an authenticated user (`GET /api/v1/timelines/public`) --- CHANGELOG.md | 2 ++ lib/pleroma/web/activity_pub/activity_pub.ex | 5 +++-- .../controllers/mastodon_api_controller.ex | 1 - .../mastodon_api_controller_test.exs | 16 ++++++++++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84b64e2b9..93b7e2a10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler - Admin API: Return `total` when querying for reports - Mastodon API: Return `pleroma.direct_conversation_id` when creating a direct message (`POST /api/v1/statuses`) +### Fixed +- Mastodon API: Fix private and direct statuses not being filtered out from the public timeline for an authenticated user (`GET /api/v1/timelines/public`) ## [1.1.0] - 2019-??-?? ### Security diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index e1e90d667..1cf8b6151 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -520,9 +520,10 @@ def fetch_latest_activity_id_for_context(context, opts \\ %{}) do end def fetch_public_activities(opts \\ %{}) do - q = fetch_activities_query([Pleroma.Constants.as_public()], opts) + opts = Map.drop(opts, ["user"]) - q + [Pleroma.Constants.as_public()] + |> fetch_activities_query(opts) |> restrict_unlisted() |> Pagination.fetch_paginated(opts) |> Enum.reverse() diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index 6704ee7e8..6421c2c53 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -381,7 +381,6 @@ def public_timeline(%{assigns: %{user: user}} = conn, params) do |> Map.put("local_only", local_only) |> Map.put("blocking_user", user) |> Map.put("muting_user", user) - |> Map.put("user", user) |> ActivityPub.fetch_public_activities() |> Enum.reverse() diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 35a0d3fe1..51f5215c2 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -97,6 +97,22 @@ test "the public timeline when public is set to false", %{conn: conn} do |> json_response(403) == %{"error" => "This resource requires authentication."} end + test "the public timeline includes only public statuses for an authenticated user" do + user = insert(:user) + + conn = + build_conn() + |> assign(:user, user) + + {:ok, _activity} = CommonAPI.post(user, %{"status" => "test"}) + {:ok, _activity} = CommonAPI.post(user, %{"status" => "test", "visibility" => "private"}) + {:ok, _activity} = CommonAPI.post(user, %{"status" => "test", "visibility" => "unlisted"}) + {:ok, _activity} = CommonAPI.post(user, %{"status" => "test", "visibility" => "direct"}) + + res_conn = get(conn, "/api/v1/timelines/public") + assert length(json_response(res_conn, 200)) == 1 + end + describe "posting statuses" do setup do user = insert(:user) From 6f25668215f7f9fe20bfaf3dd72e2262a6d8915e Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sun, 22 Sep 2019 16:08:07 +0300 Subject: [PATCH 191/272] Admin API: Add ability to force user's password reset --- CHANGELOG.md | 2 ++ docs/api/admin_api.md | 8 ++++++ lib/pleroma/user.ex | 17 ++++++++++++ lib/pleroma/user/info.ex | 13 ++++++--- .../web/admin_api/admin_api_controller.ex | 9 +++++++ lib/pleroma/web/oauth/oauth_controller.ex | 5 ++++ lib/pleroma/web/router.ex | 1 + lib/pleroma/workers/background_worker.ex | 5 ++++ test/user_test.exs | 17 ++++++++++++ .../admin_api/admin_api_controller_test.exs | 26 ++++++++++++++++++ test/web/oauth/oauth_controller_test.exs | 27 +++++++++++++++++++ .../twitter_api/password_controller_test.exs | 21 +++++++++++++++ 12 files changed, 148 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84b64e2b9..e5a84f5ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] ### Added - Refreshing poll results for remote polls +- Admin API: Add ability to force user's password reset + ### Changed - **Breaking:** Elixir >=1.8 is now required (was >= 1.7) - Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings) diff --git a/docs/api/admin_api.md b/docs/api/admin_api.md index 7637fa0d4..c6b9dd2b6 100644 --- a/docs/api/admin_api.md +++ b/docs/api/admin_api.md @@ -310,6 +310,14 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret - Params: none - Response: password reset token (base64 string) +## `/api/pleroma/admin/users/:nickname/force_password_reset` + +### Force passord reset for a user with a given nickname + +- Methods: `PATCH` +- Params: none +- Response: none (code `204`) + ## `/api/pleroma/admin/reports` ### Get a list of reports - Method `GET` diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index fb1f24254..ab253a274 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -269,6 +269,7 @@ def password_update_changeset(struct, params) do |> validate_required([:password, :password_confirmation]) |> validate_confirmation(:password) |> put_password_hash + |> put_embed(:info, User.Info.set_password_reset_pending(struct.info, false)) end @spec reset_password(User.t(), map) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()} @@ -285,6 +286,20 @@ def reset_password(%User{id: user_id} = user, data) do end end + def force_password_reset_async(user) do + BackgroundWorker.enqueue("force_password_reset", %{"user_id" => user.id}) + end + + @spec force_password_reset(User.t()) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()} + def force_password_reset(user) do + info_cng = User.Info.set_password_reset_pending(user.info, true) + + user + |> change() + |> put_embed(:info, info_cng) + |> update_and_set_cache() + end + def register_changeset(struct, params \\ %{}, opts \\ []) do bio_limit = Pleroma.Config.get([:instance, :user_bio_length], 5000) name_limit = Pleroma.Config.get([:instance, :user_name_length], 100) @@ -1115,6 +1130,8 @@ def delete(%User{} = user) do BackgroundWorker.enqueue("delete_user", %{"user_id" => user.id}) end + def perform(:force_password_reset, user), do: force_password_reset(user) + @spec perform(atom(), User.t()) :: {:ok, User.t()} def perform(:delete, %User{} = user) do {:ok, _user} = ActivityPub.delete(user) diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex index b150a57cd..67abc3ecd 100644 --- a/lib/pleroma/user/info.ex +++ b/lib/pleroma/user/info.ex @@ -20,6 +20,7 @@ defmodule Pleroma.User.Info do field(:following_count, :integer, default: nil) field(:locked, :boolean, default: false) field(:confirmation_pending, :boolean, default: false) + field(:password_reset_pending, :boolean, default: false) field(:confirmation_token, :string, default: nil) field(:default_scope, :string, default: "public") field(:blocks, {:array, :string}, default: []) @@ -82,6 +83,14 @@ def set_activation_status(info, deactivated) do |> validate_required([:deactivated]) end + def set_password_reset_pending(info, pending) do + params = %{password_reset_pending: pending} + + info + |> cast(params, [:password_reset_pending]) + |> validate_required([:password_reset_pending]) + end + def update_notification_settings(info, settings) do settings = settings @@ -333,9 +342,7 @@ defp valid_field?(%{"name" => name, "value" => value}) do name_limit = Pleroma.Config.get([:instance, :account_field_name_length], 255) value_limit = Pleroma.Config.get([:instance, :account_field_value_length], 255) - is_binary(name) && - is_binary(value) && - String.length(name) <= name_limit && + is_binary(name) && is_binary(value) && String.length(name) <= name_limit && String.length(value) <= value_limit end diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 8a8091daa..711e4dfc2 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -447,6 +447,15 @@ def get_password_reset(conn, %{"nickname" => nickname}) do |> json(token.token) end + @doc "Force password reset for a given user" + def force_password_reset(conn, %{"nickname" => nickname}) do + (%User{local: true} = user) = User.get_cached_by_nickname(nickname) + + User.force_password_reset_async(user) + + json_response(conn, :no_content, "") + end + def list_reports(conn, params) do params = params diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/oauth/oauth_controller.ex index 81eae2c8b..a57670e02 100644 --- a/lib/pleroma/web/oauth/oauth_controller.ex +++ b/lib/pleroma/web/oauth/oauth_controller.ex @@ -202,6 +202,8 @@ def token_exchange( {:ok, app} <- Token.Utils.fetch_app(conn), {:auth_active, true} <- {:auth_active, User.auth_active?(user)}, {:user_active, true} <- {:user_active, !user.info.deactivated}, + {:password_reset_pending, false} <- + {:password_reset_pending, user.info.password_reset_pending}, {:ok, scopes} <- validate_scopes(app, params), {:ok, auth} <- Authorization.create_authorization(app, user, scopes), {:ok, token} <- Token.exchange_token(app, auth) do @@ -215,6 +217,9 @@ def token_exchange( {:user_active, false} -> render_error(conn, :forbidden, "Your account is currently disabled") + {:password_reset_pending, true} -> + render_error(conn, :forbidden, "Password reset is required") + _error -> render_invalid_credentials_error(conn) end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index b9b85fd67..a306c1b80 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -186,6 +186,7 @@ defmodule Pleroma.Web.Router do post("/users/email_invite", AdminAPIController, :email_invite) get("/users/:nickname/password_reset", AdminAPIController, :get_password_reset) + patch("/users/:nickname/force_password_reset", AdminAPIController, :force_password_reset) get("/users", AdminAPIController, :list_users) get("/users/:nickname", AdminAPIController, :user_show) diff --git a/lib/pleroma/workers/background_worker.ex b/lib/pleroma/workers/background_worker.ex index 082f20ab7..7ffc8eabe 100644 --- a/lib/pleroma/workers/background_worker.ex +++ b/lib/pleroma/workers/background_worker.ex @@ -26,6 +26,11 @@ def perform(%{"op" => "delete_user", "user_id" => user_id}, _job) do User.perform(:delete, user) end + def perform(%{"op" => "force_password_reset", "user_id" => user_id}, _job) do + user = User.get_cached_by_id(user_id) + User.perform(:force_password_reset, user) + end + def perform( %{ "op" => "blocks_import", diff --git a/test/user_test.exs b/test/user_test.exs index 39ba69668..164172405 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1690,4 +1690,21 @@ test "changes email", %{user: user} do assert {:ok, %User{email: "cofe@cofe.party"}} = User.change_email(user, "cofe@cofe.party") end end + + describe "set_password_reset_pending/2" do + setup do + [user: insert(:user)] + end + + test "sets password_reset_pending to true", %{user: user} do + %{password_reset_pending: password_reset_pending} = user.info + + refute password_reset_pending + + {:ok, %{info: %{password_reset_pending: password_reset_pending}}} = + User.force_password_reset(user) + + assert password_reset_pending + end + end end diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index 108143f6a..f00e02a7a 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -4,11 +4,13 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do use Pleroma.Web.ConnCase + use Oban.Testing, repo: Pleroma.Repo alias Pleroma.Activity alias Pleroma.HTML alias Pleroma.ModerationLog alias Pleroma.Repo + alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.UserInviteToken alias Pleroma.Web.CommonAPI @@ -2351,6 +2353,30 @@ test "returns the log with pagination", %{conn: conn, admin: admin} do "@#{admin.nickname} followed relay: https://example.org/relay" end end + + describe "PATCH /users/:nickname/force_password_reset" do + setup %{conn: conn} do + admin = insert(:user, info: %{is_admin: true}) + user = insert(:user) + + %{conn: assign(conn, :user, admin), admin: admin, user: user} + end + + test "sets password_reset_pending to true", %{admin: admin, user: user} do + assert user.info.password_reset_pending == false + + conn = + build_conn() + |> assign(:user, admin) + |> patch("/api/pleroma/admin/users/#{user.nickname}/force_password_reset") + + assert json_response(conn, 204) == "" + + ObanHelpers.perform_all() + + assert User.get_by_id(user.id).info.password_reset_pending == true + end + end end # Needed for testing diff --git a/test/web/oauth/oauth_controller_test.exs b/test/web/oauth/oauth_controller_test.exs index 2780e1746..8b88fd784 100644 --- a/test/web/oauth/oauth_controller_test.exs +++ b/test/web/oauth/oauth_controller_test.exs @@ -831,6 +831,33 @@ test "rejects token exchange for valid credentials belonging to deactivated user refute Map.has_key?(resp, "access_token") end + test "rejects token exchange for user with password_reset_pending set to true" do + password = "testpassword" + + user = + insert(:user, + password_hash: Comeonin.Pbkdf2.hashpwsalt(password), + info: %{password_reset_pending: true} + ) + + app = insert(:oauth_app, scopes: ["read", "write"]) + + conn = + build_conn() + |> post("/oauth/token", %{ + "grant_type" => "password", + "username" => user.nickname, + "password" => password, + "client_id" => app.client_id, + "client_secret" => app.client_secret + }) + + assert resp = json_response(conn, 403) + + assert resp["error"] == "Password reset is required" + refute Map.has_key?(resp, "access_token") + end + test "rejects an invalid authorization code" do app = insert(:oauth_app) diff --git a/test/web/twitter_api/password_controller_test.exs b/test/web/twitter_api/password_controller_test.exs index 3a7246ea8..dc6d4e3e3 100644 --- a/test/web/twitter_api/password_controller_test.exs +++ b/test/web/twitter_api/password_controller_test.exs @@ -6,6 +6,7 @@ defmodule Pleroma.Web.TwitterAPI.PasswordControllerTest do use Pleroma.Web.ConnCase alias Pleroma.PasswordResetToken + alias Pleroma.User alias Pleroma.Web.OAuth.Token import Pleroma.Factory @@ -56,5 +57,25 @@ test "it returns HTTP 200", %{conn: conn} do assert Comeonin.Pbkdf2.checkpw("test", user.password_hash) assert length(Token.get_user_tokens(user)) == 0 end + + test "it sets password_reset_pending to false", %{conn: conn} do + user = insert(:user, info: %{password_reset_pending: true}) + + {:ok, token} = PasswordResetToken.create_token(user) + {:ok, _access_token} = Token.create_token(insert(:oauth_app), user, %{}) + + params = %{ + "password" => "test", + password_confirmation: "test", + token: token.token + } + + conn + |> assign(:user, user) + |> post("/api/pleroma/password_reset", %{data: params}) + |> html_response(:ok) + + assert User.get_by_id(user.id).info.password_reset_pending == false + end end end From 72a01f1350239d286978007883a087f8f3985d1b Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sun, 22 Sep 2019 16:36:59 +0300 Subject: [PATCH 192/272] Use router helper to generate reset password link --- lib/pleroma/web/admin_api/admin_api_controller.ex | 6 +++--- test/web/admin_api/admin_api_controller_test.exs | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 54ab6e032..b2df1e5b8 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -17,7 +17,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do alias Pleroma.Web.AdminAPI.ReportView alias Pleroma.Web.AdminAPI.Search alias Pleroma.Web.CommonAPI + alias Pleroma.Web.Endpoint alias Pleroma.Web.MastodonAPI.StatusView + alias Pleroma.Web.Router import Pleroma.Web.ControllerHelper, only: [json_response: 3] @@ -432,13 +434,11 @@ def revoke_invite(conn, %{"token" => token}) do def get_password_reset(conn, %{"nickname" => nickname}) do (%User{local: true} = user) = User.get_cached_by_nickname(nickname) {:ok, token} = Pleroma.PasswordResetToken.create_token(user) - host = Pleroma.Config.get([Pleroma.Web.Endpoint, :url, :host]) - protocol = Pleroma.Config.get([Pleroma.Web.Endpoint, :protocol]) conn |> json(%{ token: token.token, - link: "#{protocol}://#{host}/api/pleroma/password_reset/#{token.token}" + link: Router.Helpers.reset_password_url(Endpoint, :reset, token.token) }) end diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs index c497ea098..77c67011d 100644 --- a/test/web/admin_api/admin_api_controller_test.exs +++ b/test/web/admin_api/admin_api_controller_test.exs @@ -596,7 +596,9 @@ test "/api/pleroma/admin/users/:nickname/password_reset" do |> put_req_header("accept", "application/json") |> get("/api/pleroma/admin/users/#{user.nickname}/password_reset") - assert conn.status == 200 + resp = json_response(conn, 200) + + assert Regex.match?(~r/(http:\/\/|https:\/\/)/, resp["link"]) end describe "GET /api/pleroma/admin/users" do From f89fe3ac06505cc07372fcdefdc3fde72d1f04a0 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sun, 22 Sep 2019 16:45:38 +0300 Subject: [PATCH 193/272] Update docs --- docs/api/admin_api.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/api/admin_api.md b/docs/api/admin_api.md index 9362e3d78..8bc6379aa 100644 --- a/docs/api/admin_api.md +++ b/docs/api/admin_api.md @@ -298,7 +298,15 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret - Methods: `GET` - Params: none -- Response: password reset token (base64 string) +- Response: + +```json +{ + "token": "U13DX6muOvpRsj35_ij9wLxUbkU-eFvfKttxs6gIajo=", // password reset token (base64 string) + "link": "https://pleroma.social/api/pleroma/password_reset/U13DX6muOvpRsj35_ij9wLxUbkU-eFvfKttxs6gIajo%3D" +} +``` + ## `/api/pleroma/admin/reports` ### Get a list of reports From c8fdf757c124ac053307b0b4e02a38fc40e2dc58 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sun, 22 Sep 2019 16:59:37 +0300 Subject: [PATCH 194/272] I did not put these lines in CHANGELOG --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9a05dadb..6c31c0075 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Refreshing poll results for remote polls ### Changed - **Breaking:** Elixir >=1.8 is now required (was >= 1.7) -- Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings) -- Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler - Admin API: Return `total` when querying for reports - Mastodon API: Return `pleroma.direct_conversation_id` when creating a direct message (`POST /api/v1/statuses`) From 79c3443b609663ab23a4353ebdb7e5e2f0e6a150 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sun, 22 Sep 2019 17:00:49 +0300 Subject: [PATCH 195/272] Update CHANGELOG --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c31c0075..e816e1394 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Refreshing poll results for remote polls ### Changed - **Breaking:** Elixir >=1.8 is now required (was >= 1.7) +- Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings) +- Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler - Admin API: Return `total` when querying for reports - Mastodon API: Return `pleroma.direct_conversation_id` when creating a direct message (`POST /api/v1/statuses`) +- Admin API: Return link alongside with token on password reset ## [1.1.0] - 2019-??-?? ### Security @@ -37,9 +40,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - AdminAPI: Add "godmode" while fetching user statuses (i.e. admin can see private statuses) - Improve digest email template – Pagination: (optional) return `total` alongside with `items` when paginating -- Replaced [pleroma_job_queue](https://git.pleroma.social/pleroma/pleroma_job_queue) and `Pleroma.Web.Federator.RetryQueue` with [Oban](https://github.com/sorentwo/oban) (see [`docs/config.md`](docs/config.md) on migrating customized worker / retry settings) -- Introduced [quantum](https://github.com/quantum-elixir/quantum-core) job scheduler -- Admin API: Return link alongside with token on password reset ### Fixed - Following from Osada From d72d4757a8e66c29d58e0a3b7fb36356ae419a54 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sun, 22 Sep 2019 23:13:48 +0300 Subject: [PATCH 196/272] Format --- lib/pleroma/user/info.ex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex index 67abc3ecd..99745f496 100644 --- a/lib/pleroma/user/info.ex +++ b/lib/pleroma/user/info.ex @@ -342,7 +342,9 @@ defp valid_field?(%{"name" => name, "value" => value}) do name_limit = Pleroma.Config.get([:instance, :account_field_name_length], 255) value_limit = Pleroma.Config.get([:instance, :account_field_value_length], 255) - is_binary(name) && is_binary(value) && String.length(name) <= name_limit && + is_binary(name) && + is_binary(value) && + String.length(name) <= name_limit && String.length(value) <= value_limit end From cf1960d5961a3a01a6d92c44ab4a6d0ce9570a09 Mon Sep 17 00:00:00 2001 From: Maxim Filippov Date: Sun, 22 Sep 2019 23:14:18 +0300 Subject: [PATCH 197/272] Better changelog wording --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5a84f5ae..f28299666 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] ### Added - Refreshing poll results for remote polls -- Admin API: Add ability to force user's password reset +- Admin API: Add ability to require password reset ### Changed - **Breaking:** Elixir >=1.8 is now required (was >= 1.7) From 6b3d5ed6db6a3c73eb1f8373ebd670427aa8849d Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 23 Sep 2019 21:14:51 +0300 Subject: [PATCH 198/272] Emoji API Controller: Follow phoenix directory structure --- .../web/pleroma_api/{ => controllers}/emoji_api_controller.ex | 0 .../web/pleroma_api/{ => controllers}/pleroma_api_controller.ex | 0 test/web/{ => pleroma_api}/emoji_api_controller_test.exs | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename lib/pleroma/web/pleroma_api/{ => controllers}/emoji_api_controller.ex (100%) rename lib/pleroma/web/pleroma_api/{ => controllers}/pleroma_api_controller.ex (100%) rename test/web/{ => pleroma_api}/emoji_api_controller_test.exs (100%) diff --git a/lib/pleroma/web/pleroma_api/emoji_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex similarity index 100% rename from lib/pleroma/web/pleroma_api/emoji_api_controller.ex rename to lib/pleroma/web/pleroma_api/controllers/emoji_api_controller.ex diff --git a/lib/pleroma/web/pleroma_api/pleroma_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex similarity index 100% rename from lib/pleroma/web/pleroma_api/pleroma_api_controller.ex rename to lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex diff --git a/test/web/emoji_api_controller_test.exs b/test/web/pleroma_api/emoji_api_controller_test.exs similarity index 100% rename from test/web/emoji_api_controller_test.exs rename to test/web/pleroma_api/emoji_api_controller_test.exs From 646bf0160893f01fe14d1d38f24420ac6c962804 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Mon, 23 Sep 2019 21:13:39 +0200 Subject: [PATCH 199/272] Update AdminFE bundle --- .../{app.34fc670f.css => app.40438ff5.css} | 2 +- priv/static/adminfe/chunk-06db.75709645.css | 1 + priv/static/adminfe/chunk-15fa.bcc01554.css | 1 + priv/static/adminfe/chunk-1a7d.38eb00cf.css | 1 + ...1.6aaab273.css => chunk-1f27.c0efd1fc.css} | 0 priv/static/adminfe/chunk-2325.0d22684d.css | 1 - ...8.e12401fb.css => chunk-3d1c.2880a519.css} | 0 priv/static/adminfe/chunk-5913.33f0e7ff.css | 1 + ...f.d7a1893c.css => chunk-598f.dc5869e7.css} | 0 ...7.ac97b15a.css => chunk-6292.d1c82a11.css} | 0 priv/static/adminfe/chunk-7c6b.4a8663a9.css | 1 + priv/static/adminfe/chunk-8b70.9ba0945c.css | 1 - priv/static/adminfe/chunk-e547.e4b6230b.css | 1 - ...d8da6.css => chunk-elementUI.f35d8ab1.css} | 0 ...s.4e8c4664.css => chunk-libs.00388c73.css} | 0 priv/static/adminfe/index.html | 2 +- .../static/adminfe/static/js/7zzA.e1ae1c94.js | 3 +- .../adminfe/static/js/7zzA.e1ae1c94.js.map | 1 + .../static/adminfe/static/js/JEtC.f9ba4594.js | 3 +- .../adminfe/static/js/JEtC.f9ba4594.js.map | 1 + priv/static/adminfe/static/js/app.8e186193.js | 1 - priv/static/adminfe/static/js/app.90c455c5.js | 2 + .../adminfe/static/js/app.90c455c5.js.map | 1 + .../adminfe/static/js/chunk-02a0.db6ec114.js | 1 - .../adminfe/static/js/chunk-0620.c765c190.js | 3 +- .../static/js/chunk-0620.c765c190.js.map | 1 + .../adminfe/static/js/chunk-06db.12facc20.js | 2 + .../static/js/chunk-06db.12facc20.js.map | 1 + .../adminfe/static/js/chunk-15fa.b0633695.js | 2 + .../static/js/chunk-15fa.b0633695.js.map | 1 + .../adminfe/static/js/chunk-16d0.6ce78978.js | 2 + .../static/js/chunk-16d0.6ce78978.js.map | 1 + .../adminfe/static/js/chunk-1a7d.8173d81f.js | 2 + .../static/js/chunk-1a7d.8173d81f.js.map | 1 + ...8e1.7f9c377c.js => chunk-1f27.d3c35fbc.js} | 3 +- .../static/js/chunk-1f27.d3c35fbc.js.map | 1 + .../adminfe/static/js/chunk-2325.154a537b.js | 1 - ...e18.208cd826.js => chunk-3d1c.20303ef7.js} | 3 +- .../static/js/chunk-3d1c.20303ef7.js.map | 1 + .../adminfe/static/js/chunk-5913.1d21a547.js | 2 + .../static/js/chunk-5913.1d21a547.js.map | 1 + ...fbf.616fb309.js => chunk-598f.dd8089ce.js} | 3 +- .../static/js/chunk-598f.dd8089ce.js.map | 1 + .../adminfe/static/js/chunk-5e57.7313703a.js | 1 - .../adminfe/static/js/chunk-6292.0e668979.js | 2 + .../static/js/chunk-6292.0e668979.js.map | 1 + .../adminfe/static/js/chunk-7c6b.c306c730.js | 2 + .../static/js/chunk-7c6b.c306c730.js.map | 1 + .../adminfe/static/js/chunk-7fe2.458f9da5.js | 3 +- .../static/js/chunk-7fe2.458f9da5.js.map | 1 + .../adminfe/static/js/chunk-8b70.46525646.js | 1 - .../adminfe/static/js/chunk-df62.6c5105a6.js | 2 + .../static/js/chunk-df62.6c5105a6.js.map | 1 + .../adminfe/static/js/chunk-e547.d57d1b91.js | 1 - ...911151b.js => chunk-elementUI.708d6b68.js} | 3 +- .../static/js/chunk-elementUI.708d6b68.js.map | 1 + .../adminfe/static/js/chunk-libs.14514767.js | 66 +++++++++++++++++++ .../static/js/chunk-libs.14514767.js.map | 1 + .../adminfe/static/js/chunk-libs.fb0b7f4a.js | 57 ---------------- .../static/adminfe/static/js/oAJy.840fb1c2.js | 2 + .../adminfe/static/js/oAJy.840fb1c2.js.map | 1 + .../adminfe/static/js/runtime.e85850af.js | 2 + .../adminfe/static/js/runtime.e85850af.js.map | 1 + .../adminfe/static/js/runtime.f40c8ec4.js | 1 - 64 files changed, 131 insertions(+), 77 deletions(-) rename priv/static/adminfe/{app.34fc670f.css => app.40438ff5.css} (92%) create mode 100644 priv/static/adminfe/chunk-06db.75709645.css create mode 100644 priv/static/adminfe/chunk-15fa.bcc01554.css create mode 100644 priv/static/adminfe/chunk-1a7d.38eb00cf.css rename priv/static/adminfe/{chunk-18e1.6aaab273.css => chunk-1f27.c0efd1fc.css} (100%) delete mode 100644 priv/static/adminfe/chunk-2325.0d22684d.css rename priv/static/adminfe/{chunk-0e18.e12401fb.css => chunk-3d1c.2880a519.css} (100%) create mode 100644 priv/static/adminfe/chunk-5913.33f0e7ff.css rename priv/static/adminfe/{chunk-1fbf.d7a1893c.css => chunk-598f.dc5869e7.css} (100%) rename priv/static/adminfe/{chunk-5e57.ac97b15a.css => chunk-6292.d1c82a11.css} (100%) create mode 100644 priv/static/adminfe/chunk-7c6b.4a8663a9.css delete mode 100644 priv/static/adminfe/chunk-8b70.9ba0945c.css delete mode 100644 priv/static/adminfe/chunk-e547.e4b6230b.css rename priv/static/adminfe/{chunk-elementUI.e5cd8da6.css => chunk-elementUI.f35d8ab1.css} (100%) rename priv/static/adminfe/{chunk-libs.4e8c4664.css => chunk-libs.00388c73.css} (100%) create mode 100644 priv/static/adminfe/static/js/7zzA.e1ae1c94.js.map create mode 100644 priv/static/adminfe/static/js/JEtC.f9ba4594.js.map delete mode 100644 priv/static/adminfe/static/js/app.8e186193.js create mode 100644 priv/static/adminfe/static/js/app.90c455c5.js create mode 100644 priv/static/adminfe/static/js/app.90c455c5.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-02a0.db6ec114.js create mode 100644 priv/static/adminfe/static/js/chunk-0620.c765c190.js.map create mode 100644 priv/static/adminfe/static/js/chunk-06db.12facc20.js create mode 100644 priv/static/adminfe/static/js/chunk-06db.12facc20.js.map create mode 100644 priv/static/adminfe/static/js/chunk-15fa.b0633695.js create mode 100644 priv/static/adminfe/static/js/chunk-15fa.b0633695.js.map create mode 100644 priv/static/adminfe/static/js/chunk-16d0.6ce78978.js create mode 100644 priv/static/adminfe/static/js/chunk-16d0.6ce78978.js.map create mode 100644 priv/static/adminfe/static/js/chunk-1a7d.8173d81f.js create mode 100644 priv/static/adminfe/static/js/chunk-1a7d.8173d81f.js.map rename priv/static/adminfe/static/js/{chunk-18e1.7f9c377c.js => chunk-1f27.d3c35fbc.js} (83%) create mode 100644 priv/static/adminfe/static/js/chunk-1f27.d3c35fbc.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-2325.154a537b.js rename priv/static/adminfe/static/js/{chunk-0e18.208cd826.js => chunk-3d1c.20303ef7.js} (96%) create mode 100644 priv/static/adminfe/static/js/chunk-3d1c.20303ef7.js.map create mode 100644 priv/static/adminfe/static/js/chunk-5913.1d21a547.js create mode 100644 priv/static/adminfe/static/js/chunk-5913.1d21a547.js.map rename priv/static/adminfe/static/js/{chunk-1fbf.616fb309.js => chunk-598f.dd8089ce.js} (99%) create mode 100644 priv/static/adminfe/static/js/chunk-598f.dd8089ce.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-5e57.7313703a.js create mode 100644 priv/static/adminfe/static/js/chunk-6292.0e668979.js create mode 100644 priv/static/adminfe/static/js/chunk-6292.0e668979.js.map create mode 100644 priv/static/adminfe/static/js/chunk-7c6b.c306c730.js create mode 100644 priv/static/adminfe/static/js/chunk-7c6b.c306c730.js.map create mode 100644 priv/static/adminfe/static/js/chunk-7fe2.458f9da5.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-8b70.46525646.js create mode 100644 priv/static/adminfe/static/js/chunk-df62.6c5105a6.js create mode 100644 priv/static/adminfe/static/js/chunk-df62.6c5105a6.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-e547.d57d1b91.js rename priv/static/adminfe/static/js/{chunk-elementUI.1911151b.js => chunk-elementUI.708d6b68.js} (99%) create mode 100644 priv/static/adminfe/static/js/chunk-elementUI.708d6b68.js.map create mode 100644 priv/static/adminfe/static/js/chunk-libs.14514767.js create mode 100644 priv/static/adminfe/static/js/chunk-libs.14514767.js.map delete mode 100644 priv/static/adminfe/static/js/chunk-libs.fb0b7f4a.js create mode 100644 priv/static/adminfe/static/js/oAJy.840fb1c2.js create mode 100644 priv/static/adminfe/static/js/oAJy.840fb1c2.js.map create mode 100644 priv/static/adminfe/static/js/runtime.e85850af.js create mode 100644 priv/static/adminfe/static/js/runtime.e85850af.js.map delete mode 100644 priv/static/adminfe/static/js/runtime.f40c8ec4.js diff --git a/priv/static/adminfe/app.34fc670f.css b/priv/static/adminfe/app.40438ff5.css similarity index 92% rename from priv/static/adminfe/app.34fc670f.css rename to priv/static/adminfe/app.40438ff5.css index 136aa8bb1..b82fcc39e 100644 --- a/priv/static/adminfe/app.34fc670f.css +++ b/priv/static/adminfe/app.40438ff5.css @@ -1 +1 @@ -.fade-enter-active,.fade-leave-active{-webkit-transition:opacity .28s;transition:opacity .28s}.fade-enter,.fade-leave-active{opacity:0}.fade-transform-enter-active,.fade-transform-leave-active{-webkit-transition:all .5s;transition:all .5s}.fade-transform-enter{opacity:0;-webkit-transform:translateX(-30px);transform:translateX(-30px)}.fade-transform-leave-to{opacity:0;-webkit-transform:translateX(30px);transform:translateX(30px)}.breadcrumb-enter-active,.breadcrumb-leave-active{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-enter,.breadcrumb-leave-active{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.breadcrumb-move{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-leave-active{position:absolute}.el-breadcrumb__inner,.el-breadcrumb__inner a{font-weight:400!important}.el-upload input[type=file]{display:none!important}.el-upload__input{display:none}.cell .el-tag{margin-right:0}.small-padding .cell{padding-left:5px;padding-right:5px}.fixed-width .el-button--mini{padding:7px 10px;width:60px}.status-col .cell{padding:0 10px;text-align:center}.status-col .cell .el-tag{margin-right:0}.el-dialog{-webkit-transform:none;transform:none;left:0;position:relative;margin:0 auto}.article-textarea textarea{padding-right:40px;resize:none;border-radius:0;border:none;border-bottom:1px solid #bfcbd9}.upload-container .el-upload{width:100%}.upload-container .el-upload .el-upload-dragger{width:100%;height:200px}.el-dropdown-menu a{display:block}#app .main-container{min-height:100%;-webkit-transition:margin-left .28s;transition:margin-left .28s;margin-left:180px;position:relative}#app .sidebar-container{-webkit-transition:width .28s;transition:width .28s;width:180px!important;height:100%;position:fixed;font-size:0;top:0;bottom:0;left:0;z-index:1001;overflow:hidden}#app .sidebar-container .horizontal-collapse-transition{-webkit-transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out;transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out}#app .sidebar-container .scrollbar-wrapper{overflow-x:hidden!important}#app .sidebar-container .scrollbar-wrapper .el-scrollbar__view{height:100%}#app .sidebar-container .el-scrollbar__bar.is-vertical{right:0}#app .sidebar-container .is-horizontal{display:none}#app .sidebar-container a{display:inline-block;width:100%;overflow:hidden}#app .sidebar-container .svg-icon{margin-right:16px}#app .sidebar-container .el-menu{border:none;height:100%;width:100%!important}#app .sidebar-container .el-submenu__title:hover,#app .sidebar-container .submenu-title-noDropdown:hover{background-color:#263445!important}#app .sidebar-container .is-active>.el-submenu__title{color:#f4f4f5!important}#app .sidebar-container .el-submenu .el-menu-item,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title{min-width:180px!important;background-color:#1f2d3d!important}#app .sidebar-container .el-submenu .el-menu-item:hover,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#001528!important}#app .hideSidebar .sidebar-container{width:36px!important}#app .hideSidebar .main-container{margin-left:36px}#app .hideSidebar .submenu-title-noDropdown{padding-left:10px!important;position:relative}#app .hideSidebar .submenu-title-noDropdown .el-tooltip{padding:0 10px!important}#app .hideSidebar .el-submenu{overflow:hidden}#app .hideSidebar .el-submenu>.el-submenu__title{padding-left:10px!important}#app .hideSidebar .el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}#app .hideSidebar .el-menu--collapse .el-submenu>.el-submenu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}#app .el-menu--collapse .el-menu .el-submenu{min-width:180px!important}#app .mobile .main-container{margin-left:0}#app .mobile .sidebar-container{-webkit-transition:-webkit-transform .28s;transition:-webkit-transform .28s;transition:transform .28s;transition:transform .28s,-webkit-transform .28s;width:180px!important}#app .mobile.hideSidebar .sidebar-container{pointer-events:none;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transform:translate3d(-180px,0,0);transform:translate3d(-180px,0,0)}#app .withoutAnimation .main-container,#app .withoutAnimation .sidebar-container{-webkit-transition:none;transition:none}.el-menu--vertical>.el-menu .svg-icon{margin-right:16px}.el-menu--vertical .el-menu-item:hover,.el-menu--vertical .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#263445!important}.blue-btn{background:#324157}.blue-btn:hover{color:#324157}.blue-btn:hover:after,.blue-btn:hover:before{background:#324157}.light-blue-btn{background:#3a71a8}.light-blue-btn:hover{color:#3a71a8}.light-blue-btn:hover:after,.light-blue-btn:hover:before{background:#3a71a8}.red-btn{background:#c03639}.red-btn:hover{color:#c03639}.red-btn:hover:after,.red-btn:hover:before{background:#c03639}.pink-btn{background:#e65d6e}.pink-btn:hover{color:#e65d6e}.pink-btn:hover:after,.pink-btn:hover:before{background:#e65d6e}.green-btn{background:#30b08f}.green-btn:hover{color:#30b08f}.green-btn:hover:after,.green-btn:hover:before{background:#30b08f}.tiffany-btn{background:#4ab7bd}.tiffany-btn:hover{color:#4ab7bd}.tiffany-btn:hover:after,.tiffany-btn:hover:before{background:#4ab7bd}.yellow-btn{background:#fec171}.yellow-btn:hover{color:#fec171}.yellow-btn:hover:after,.yellow-btn:hover:before{background:#fec171}.pan-btn{font-size:14px;color:#fff;padding:14px 36px;border-radius:8px;border:none;outline:none;-webkit-transition:all .6s ease;transition:all .6s ease;position:relative;display:inline-block}.pan-btn:hover{background:#fff}.pan-btn:hover:after,.pan-btn:hover:before{width:100%;-webkit-transition:all .6s ease;transition:all .6s ease}.pan-btn:after,.pan-btn:before{content:"";position:absolute;top:0;right:0;height:2px;width:0;-webkit-transition:all .4s ease;transition:all .4s ease}.pan-btn:after{right:inherit;top:inherit;left:0;bottom:0}.custom-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;color:#fff;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;padding:10px 15px;font-size:14px;border-radius:4px}body{height:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif}label{font-weight:700}html{-webkit-box-sizing:border-box;box-sizing:border-box}#app,html{height:100%}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}.no-padding{padding:0!important}.padding-content{padding:4px 0}a:active,a:focus{outline:none}a,a:focus,a:hover{cursor:pointer;color:inherit;text-decoration:none}div:focus{outline:none}.fr{float:right}.fl{float:left}.pr-5{padding-right:5px}.pl-5{padding-left:5px}.block{display:block}.pointer{cursor:pointer}.inlineBlock{display:block}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}code{background:#eef1f6;padding:15px 16px;margin-bottom:20px;display:block;line-height:36px;font-size:15px;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif}code a{color:#337ab7;cursor:pointer}code a:hover{color:#20a0ff}.warn-content{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem;line-height:1.6rem;word-spacing:.05rem}.warn-content a{color:#42b983;font-weight:600}.app-container{padding:20px}.components-container{margin:30px 50px;position:relative}.pagination-container{margin-top:30px}.text-center{text-align:center}.sub-navbar{height:50px;line-height:50px;position:relative;width:100%;text-align:right;padding-right:20px;-webkit-transition:position .6s ease;transition:position .6s ease;background:-webkit-gradient(linear,left top,right top,from(#20b6f9),color-stop(0,#20b6f9),color-stop(100%,#2178f1),to(#2178f1));background:linear-gradient(90deg,#20b6f9,#20b6f9 0,#2178f1 100%,#2178f1 0)}.sub-navbar .subtitle{font-size:20px;color:#fff}.sub-navbar.deleted,.sub-navbar.draft{background:#d0d0d0}.link-type,.link-type:focus{color:#337ab7;cursor:pointer}.link-type:focus:hover,.link-type:hover{color:#20a0ff}.filter-container{padding-bottom:10px}.filter-container .filter-item{display:inline-block;vertical-align:middle;margin-bottom:10px}.multiselect{line-height:16px}.multiselect--active{z-index:1000!important}.hamburger[data-v-3ee86d44]{display:inline-block;vertical-align:middle;width:20px;height:20px}.hamburger.is-active[data-v-3ee86d44]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.navbar[data-v-5e8599dc]{height:50px;overflow:hidden}.navbar .hamburger-container[data-v-5e8599dc]{line-height:46px;height:100%;float:left;cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.navbar .hamburger-container[data-v-5e8599dc]:hover{background:rgba(0,0,0,.025)}.navbar .breadcrumb-container[data-v-5e8599dc]{float:left}.navbar .errLog-container[data-v-5e8599dc]{display:inline-block;vertical-align:top}.navbar .right-menu[data-v-5e8599dc]{float:right;height:100%;line-height:50px}.navbar .right-menu[data-v-5e8599dc]:focus{outline:none}.navbar .right-menu .right-menu-item[data-v-5e8599dc]{display:inline-block;padding:0 8px;height:100%;font-size:18px;color:#5a5e66;vertical-align:text-bottom}.navbar .right-menu .right-menu-item.hover-effect[data-v-5e8599dc]{cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.navbar .right-menu .right-menu-item.hover-effect[data-v-5e8599dc]:hover{background:rgba(0,0,0,.025)}.navbar .right-menu .avatar-container .avatar-wrapper[data-v-5e8599dc]{margin-top:5px;position:relative}.navbar .right-menu .avatar-container .avatar-wrapper .user-avatar[data-v-5e8599dc]{cursor:pointer;width:40px;height:40px;border-radius:10px}.navbar .right-menu .avatar-container .avatar-wrapper .el-icon-caret-bottom[data-v-5e8599dc]{cursor:pointer;position:absolute;right:-20px;top:25px;font-size:12px}.scroll-container[data-v-547b5dea]{white-space:nowrap;position:relative;overflow:hidden;width:100%}.scroll-container[data-v-547b5dea] .el-scrollbar__bar{bottom:0}.scroll-container[data-v-547b5dea] .el-scrollbar__wrap{height:49px}.tags-view-container[data-v-67e96c42]{height:34px;width:100%;background:#fff;border-bottom:1px solid #d8dce5;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.12),0 0 3px 0 rgba(0,0,0,.04);box-shadow:0 1px 3px 0 rgba(0,0,0,.12),0 0 3px 0 rgba(0,0,0,.04)}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-67e96c42]{display:inline-block;position:relative;cursor:pointer;height:26px;line-height:26px;border:1px solid #d8dce5;color:#495060;background:#fff;padding:0 8px;font-size:12px;margin-left:5px;margin-top:4px}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-67e96c42]:first-of-type{margin-left:15px}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-67e96c42]:last-of-type{margin-right:15px}.tags-view-container .tags-view-wrapper .tags-view-item.active[data-v-67e96c42]{background-color:#42b983;color:#fff;border-color:#42b983}.tags-view-container .tags-view-wrapper .tags-view-item.active[data-v-67e96c42]:before{content:"";background:#fff;display:inline-block;width:8px;height:8px;border-radius:50%;position:relative;margin-right:2px}.tags-view-container .contextmenu[data-v-67e96c42]{margin:0;background:#fff;z-index:100;position:absolute;list-style-type:none;padding:5px 0;border-radius:4px;font-size:12px;font-weight:400;color:#333;-webkit-box-shadow:2px 2px 3px 0 rgba(0,0,0,.3);box-shadow:2px 2px 3px 0 rgba(0,0,0,.3)}.tags-view-container .contextmenu li[data-v-67e96c42]{margin:0;padding:7px 16px;cursor:pointer}.tags-view-container .contextmenu li[data-v-67e96c42]:hover{background:#eee}.tags-view-wrapper .tags-view-item .el-icon-close{width:16px;height:16px;vertical-align:2px;border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tags-view-wrapper .tags-view-item .el-icon-close:before{-webkit-transform:scale(.6);transform:scale(.6);display:inline-block;vertical-align:-3px}.tags-view-wrapper .tags-view-item .el-icon-close:hover{background-color:#b4bccc;color:#fff}.app-main[data-v-f852c4f2]{min-height:calc(100vh - 84px);width:100%;position:relative;overflow:hidden}.app-wrapper[data-v-767d264f]{position:relative;height:100%;width:100%}.app-wrapper[data-v-767d264f]:after{content:"";display:table;clear:both}.app-wrapper.mobile.openSidebar[data-v-767d264f]{position:fixed;top:0}.drawer-bg[data-v-767d264f]{background:#000;opacity:.3;width:100%;top:0;height:100%;position:absolute;z-index:999}.svg-icon[data-v-4e710b96]{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden} \ No newline at end of file +.fade-enter-active,.fade-leave-active{-webkit-transition:opacity .28s;transition:opacity .28s}.fade-enter,.fade-leave-active{opacity:0}.fade-transform-enter-active,.fade-transform-leave-active{-webkit-transition:all .5s;transition:all .5s}.fade-transform-enter{opacity:0;-webkit-transform:translateX(-30px);transform:translateX(-30px)}.fade-transform-leave-to{opacity:0;-webkit-transform:translateX(30px);transform:translateX(30px)}.breadcrumb-enter-active,.breadcrumb-leave-active{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-enter,.breadcrumb-leave-active{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.breadcrumb-move{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-leave-active{position:absolute}.el-breadcrumb__inner,.el-breadcrumb__inner a{font-weight:400!important}.el-upload input[type=file]{display:none!important}.el-upload__input{display:none}.cell .el-tag{margin-right:0}.small-padding .cell{padding-left:5px;padding-right:5px}.fixed-width .el-button--mini{padding:7px 10px;width:60px}.status-col .cell{padding:0 10px;text-align:center}.status-col .cell .el-tag{margin-right:0}.el-dialog{-webkit-transform:none;transform:none;left:0;position:relative;margin:0 auto}.article-textarea textarea{padding-right:40px;resize:none;border-radius:0;border:none;border-bottom:1px solid #bfcbd9}.upload-container .el-upload{width:100%}.upload-container .el-upload .el-upload-dragger{width:100%;height:200px}.el-dropdown-menu a{display:block}#app .main-container{min-height:100%;-webkit-transition:margin-left .28s;transition:margin-left .28s;margin-left:180px;position:relative}#app .sidebar-container{-webkit-transition:width .28s;transition:width .28s;width:180px!important;height:100%;position:fixed;font-size:0;top:0;bottom:0;left:0;z-index:1001;overflow:hidden}#app .sidebar-container .horizontal-collapse-transition{-webkit-transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out;transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out}#app .sidebar-container .scrollbar-wrapper{overflow-x:hidden!important}#app .sidebar-container .scrollbar-wrapper .el-scrollbar__view{height:100%}#app .sidebar-container .el-scrollbar__bar.is-vertical{right:0}#app .sidebar-container .is-horizontal{display:none}#app .sidebar-container a{display:inline-block;width:100%;overflow:hidden}#app .sidebar-container .svg-icon{margin-right:16px}#app .sidebar-container .el-menu{border:none;height:100%;width:100%!important}#app .sidebar-container .el-submenu__title:hover,#app .sidebar-container .submenu-title-noDropdown:hover{background-color:#263445!important}#app .sidebar-container .is-active>.el-submenu__title{color:#f4f4f5!important}#app .sidebar-container .el-submenu .el-menu-item,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title{min-width:180px!important;background-color:#1f2d3d!important}#app .sidebar-container .el-submenu .el-menu-item:hover,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#001528!important}#app .hideSidebar .sidebar-container{width:36px!important}#app .hideSidebar .main-container{margin-left:36px}#app .hideSidebar .submenu-title-noDropdown{padding-left:10px!important;position:relative}#app .hideSidebar .submenu-title-noDropdown .el-tooltip{padding:0 10px!important}#app .hideSidebar .el-submenu{overflow:hidden}#app .hideSidebar .el-submenu>.el-submenu__title{padding-left:10px!important}#app .hideSidebar .el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}#app .hideSidebar .el-menu--collapse .el-submenu>.el-submenu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}#app .el-menu--collapse .el-menu .el-submenu{min-width:180px!important}#app .mobile .main-container{margin-left:0}#app .mobile .sidebar-container{-webkit-transition:-webkit-transform .28s;transition:-webkit-transform .28s;transition:transform .28s;transition:transform .28s,-webkit-transform .28s;width:180px!important}#app .mobile.hideSidebar .sidebar-container{pointer-events:none;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transform:translate3d(-180px,0,0);transform:translate3d(-180px,0,0)}#app .withoutAnimation .main-container,#app .withoutAnimation .sidebar-container{-webkit-transition:none;transition:none}.el-menu--vertical>.el-menu .svg-icon{margin-right:16px}.el-menu--vertical .el-menu-item:hover,.el-menu--vertical .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#263445!important}.blue-btn{background:#324157}.blue-btn:hover{color:#324157}.blue-btn:hover:after,.blue-btn:hover:before{background:#324157}.light-blue-btn{background:#3a71a8}.light-blue-btn:hover{color:#3a71a8}.light-blue-btn:hover:after,.light-blue-btn:hover:before{background:#3a71a8}.red-btn{background:#c03639}.red-btn:hover{color:#c03639}.red-btn:hover:after,.red-btn:hover:before{background:#c03639}.pink-btn{background:#e65d6e}.pink-btn:hover{color:#e65d6e}.pink-btn:hover:after,.pink-btn:hover:before{background:#e65d6e}.green-btn{background:#30b08f}.green-btn:hover{color:#30b08f}.green-btn:hover:after,.green-btn:hover:before{background:#30b08f}.tiffany-btn{background:#4ab7bd}.tiffany-btn:hover{color:#4ab7bd}.tiffany-btn:hover:after,.tiffany-btn:hover:before{background:#4ab7bd}.yellow-btn{background:#fec171}.yellow-btn:hover{color:#fec171}.yellow-btn:hover:after,.yellow-btn:hover:before{background:#fec171}.pan-btn{font-size:14px;color:#fff;padding:14px 36px;border-radius:8px;border:none;outline:none;-webkit-transition:all .6s ease;transition:all .6s ease;position:relative;display:inline-block}.pan-btn:hover{background:#fff}.pan-btn:hover:after,.pan-btn:hover:before{width:100%;-webkit-transition:all .6s ease;transition:all .6s ease}.pan-btn:after,.pan-btn:before{content:"";position:absolute;top:0;right:0;height:2px;width:0;-webkit-transition:all .4s ease;transition:all .4s ease}.pan-btn:after{right:inherit;top:inherit;left:0;bottom:0}.custom-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;color:#fff;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;padding:10px 15px;font-size:14px;border-radius:4px}body{height:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif}label{font-weight:700}html{-webkit-box-sizing:border-box;box-sizing:border-box}#app,html{height:100%}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}.no-padding{padding:0!important}.padding-content{padding:4px 0}a:active,a:focus{outline:none}a,a:focus,a:hover{cursor:pointer;color:inherit;text-decoration:none}div:focus{outline:none}.fr{float:right}.fl{float:left}.pr-5{padding-right:5px}.pl-5{padding-left:5px}.block{display:block}.pointer{cursor:pointer}.inlineBlock{display:block}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}code{background:#eef1f6;padding:15px 16px;margin-bottom:20px;display:block;line-height:36px;font-size:15px;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif}code a{color:#337ab7;cursor:pointer}code a:hover{color:#20a0ff}.warn-content{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem;line-height:1.6rem;word-spacing:.05rem}.warn-content a{color:#42b983;font-weight:600}.app-container{padding:20px}.components-container{margin:30px 50px;position:relative}.pagination-container{margin-top:30px}.text-center{text-align:center}.sub-navbar{height:50px;line-height:50px;position:relative;width:100%;text-align:right;padding-right:20px;-webkit-transition:position .6s ease;transition:position .6s ease;background:-webkit-gradient(linear,left top,right top,from(#20b6f9),color-stop(0,#20b6f9),color-stop(100%,#2178f1),to(#2178f1));background:linear-gradient(90deg,#20b6f9,#20b6f9 0,#2178f1 100%,#2178f1 0)}.sub-navbar .subtitle{font-size:20px;color:#fff}.sub-navbar.deleted,.sub-navbar.draft{background:#d0d0d0}.link-type,.link-type:focus{color:#337ab7;cursor:pointer}.link-type:focus:hover,.link-type:hover{color:#20a0ff}.filter-container{padding-bottom:10px}.filter-container .filter-item{display:inline-block;vertical-align:middle;margin-bottom:10px}.multiselect{line-height:16px}.multiselect--active{z-index:1000!important}.hamburger[data-v-3ee86d44]{display:inline-block;vertical-align:middle;width:20px;height:20px}.hamburger.is-active[data-v-3ee86d44]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.navbar[data-v-b535c57a]{height:50px;overflow:hidden}.navbar .hamburger-container[data-v-b535c57a]{line-height:46px;height:100%;float:left;cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.navbar .hamburger-container[data-v-b535c57a]:hover{background:rgba(0,0,0,.025)}.navbar .breadcrumb-container[data-v-b535c57a]{float:left}.navbar .errLog-container[data-v-b535c57a]{display:inline-block;vertical-align:top}.navbar .right-menu[data-v-b535c57a]{float:right;height:100%;line-height:50px}.navbar .right-menu[data-v-b535c57a]:focus{outline:none}.navbar .right-menu .right-menu-item[data-v-b535c57a]{display:inline-block;padding:0 8px;height:100%;font-size:18px;color:#5a5e66;vertical-align:text-bottom}.navbar .right-menu .right-menu-item.hover-effect[data-v-b535c57a]{cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.navbar .right-menu .right-menu-item.hover-effect[data-v-b535c57a]:hover{background:rgba(0,0,0,.025)}.navbar .right-menu .avatar-container .avatar-wrapper[data-v-b535c57a]{margin-top:5px;position:relative}.navbar .right-menu .avatar-container .avatar-wrapper .user-avatar[data-v-b535c57a]{cursor:pointer;width:40px;height:40px;border-radius:10px}.navbar .right-menu .avatar-container .avatar-wrapper .el-icon-caret-bottom[data-v-b535c57a]{cursor:pointer;position:absolute;right:-20px;top:25px;font-size:12px}.scroll-container[data-v-547b5dea]{white-space:nowrap;position:relative;overflow:hidden;width:100%}.scroll-container[data-v-547b5dea] .el-scrollbar__bar{bottom:0}.scroll-container[data-v-547b5dea] .el-scrollbar__wrap{height:49px}.tags-view-container[data-v-67e96c42]{height:34px;width:100%;background:#fff;border-bottom:1px solid #d8dce5;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.12),0 0 3px 0 rgba(0,0,0,.04);box-shadow:0 1px 3px 0 rgba(0,0,0,.12),0 0 3px 0 rgba(0,0,0,.04)}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-67e96c42]{display:inline-block;position:relative;cursor:pointer;height:26px;line-height:26px;border:1px solid #d8dce5;color:#495060;background:#fff;padding:0 8px;font-size:12px;margin-left:5px;margin-top:4px}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-67e96c42]:first-of-type{margin-left:15px}.tags-view-container .tags-view-wrapper .tags-view-item[data-v-67e96c42]:last-of-type{margin-right:15px}.tags-view-container .tags-view-wrapper .tags-view-item.active[data-v-67e96c42]{background-color:#42b983;color:#fff;border-color:#42b983}.tags-view-container .tags-view-wrapper .tags-view-item.active[data-v-67e96c42]:before{content:"";background:#fff;display:inline-block;width:8px;height:8px;border-radius:50%;position:relative;margin-right:2px}.tags-view-container .contextmenu[data-v-67e96c42]{margin:0;background:#fff;z-index:100;position:absolute;list-style-type:none;padding:5px 0;border-radius:4px;font-size:12px;font-weight:400;color:#333;-webkit-box-shadow:2px 2px 3px 0 rgba(0,0,0,.3);box-shadow:2px 2px 3px 0 rgba(0,0,0,.3)}.tags-view-container .contextmenu li[data-v-67e96c42]{margin:0;padding:7px 16px;cursor:pointer}.tags-view-container .contextmenu li[data-v-67e96c42]:hover{background:#eee}.tags-view-wrapper .tags-view-item .el-icon-close{width:16px;height:16px;vertical-align:2px;border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tags-view-wrapper .tags-view-item .el-icon-close:before{-webkit-transform:scale(.6);transform:scale(.6);display:inline-block;vertical-align:-3px}.tags-view-wrapper .tags-view-item .el-icon-close:hover{background-color:#b4bccc;color:#fff}.app-main[data-v-f852c4f2]{min-height:calc(100vh - 84px);width:100%;position:relative;overflow:hidden}.app-wrapper[data-v-767d264f]{position:relative;height:100%;width:100%}.app-wrapper[data-v-767d264f]:after{content:"";display:table;clear:both}.app-wrapper.mobile.openSidebar[data-v-767d264f]{position:fixed;top:0}.drawer-bg[data-v-767d264f]{background:#000;opacity:.3;width:100%;top:0;height:100%;position:absolute;z-index:999}.svg-icon[data-v-4e710b96]{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-06db.75709645.css b/priv/static/adminfe/chunk-06db.75709645.css new file mode 100644 index 000000000..9e23d0fdb --- /dev/null +++ b/priv/static/adminfe/chunk-06db.75709645.css @@ -0,0 +1 @@ +@supports (-webkit-mask:none) and (not (cater-color:#fff)){.login-container .el-input input{color:#fff}.login-container .el-input input:first-line{color:#eee}}.login-container .el-input{display:inline-block;height:47px;width:85%}.login-container .el-input input{background:transparent;border:0;-webkit-appearance:none;border-radius:0;padding:12px 5px 12px 15px;color:#eee;height:47px;caret-color:#fff}.login-container .el-input input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #283443 inset!important;-webkit-text-fill-color:#fff!important}.login-container .el-form-item{border:1px solid hsla(0,0%,100%,.1);background:rgba(0,0,0,.1);border-radius:5px;color:#454545}.login-container .login-button{width:100%;margin:0 0 10px}.login-container .omit-host-note{color:#596f8c;font-size:.8em;font-style:italic;margin:-20px 0 15px;padding:3px 0 0 15px}.login-container[data-v-d027d802]{min-height:100%;width:100%;background-color:#2d3a4b;overflow:hidden}.login-container .login-form[data-v-d027d802]{position:relative;width:520px;max-width:100%;padding:160px 35px 0;margin:0 auto;overflow:hidden}.login-container .tips[data-v-d027d802]{font-size:14px;color:#fff;margin-bottom:10px}.login-container .tips span[data-v-d027d802]:first-of-type{margin-right:16px}.login-container .svg-container[data-v-d027d802]{padding:6px 5px 6px 15px;color:#889aa4;vertical-align:middle;width:30px;display:inline-block}.login-container .title-container[data-v-d027d802]{position:relative}.login-container .title-container .title[data-v-d027d802]{font-size:26px;color:#eee;margin:0 auto 40px;text-align:center;font-weight:700}.login-container .title-container .set-language[data-v-d027d802]{color:#fff;position:absolute;top:3px;font-size:18px;right:0;cursor:pointer}.login-container .show-pwd[data-v-d027d802]{position:absolute;right:10px;top:7px;font-size:16px;color:#889aa4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.login-container .thirdparty-button[data-v-d027d802]{position:absolute;right:0;bottom:6px} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-15fa.bcc01554.css b/priv/static/adminfe/chunk-15fa.bcc01554.css new file mode 100644 index 000000000..30bf7de23 --- /dev/null +++ b/priv/static/adminfe/chunk-15fa.bcc01554.css @@ -0,0 +1 @@ +.wscn-http404-container[data-v-1d6b2d2a]{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;top:40%;left:50%}.wscn-http404[data-v-1d6b2d2a]{position:relative;width:1200px;padding:0 50px;overflow:hidden}.wscn-http404 .pic-404[data-v-1d6b2d2a]{position:relative;float:left;width:600px;overflow:hidden}.wscn-http404 .pic-404__parent[data-v-1d6b2d2a]{width:100%}.wscn-http404 .pic-404__child[data-v-1d6b2d2a]{position:absolute}.wscn-http404 .pic-404__child.left[data-v-1d6b2d2a]{width:80px;top:17px;left:220px;opacity:0;-webkit-animation-name:cloudLeft-data-v-1d6b2d2a;animation-name:cloudLeft-data-v-1d6b2d2a;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1s;animation-delay:1s}.wscn-http404 .pic-404__child.mid[data-v-1d6b2d2a]{width:46px;top:10px;left:420px;opacity:0;-webkit-animation-name:cloudMid-data-v-1d6b2d2a;animation-name:cloudMid-data-v-1d6b2d2a;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1.2s;animation-delay:1.2s}.wscn-http404 .pic-404__child.right[data-v-1d6b2d2a]{width:62px;top:100px;left:500px;opacity:0;-webkit-animation-name:cloudRight-data-v-1d6b2d2a;animation-name:cloudRight-data-v-1d6b2d2a;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1s;animation-delay:1s}@-webkit-keyframes cloudLeft-data-v-1d6b2d2a{0%{top:17px;left:220px;opacity:0}20%{top:33px;left:188px;opacity:1}80%{top:81px;left:92px;opacity:1}to{top:97px;left:60px;opacity:0}}@keyframes cloudLeft-data-v-1d6b2d2a{0%{top:17px;left:220px;opacity:0}20%{top:33px;left:188px;opacity:1}80%{top:81px;left:92px;opacity:1}to{top:97px;left:60px;opacity:0}}@-webkit-keyframes cloudMid-data-v-1d6b2d2a{0%{top:10px;left:420px;opacity:0}20%{top:40px;left:360px;opacity:1}70%{top:130px;left:180px;opacity:1}to{top:160px;left:120px;opacity:0}}@keyframes cloudMid-data-v-1d6b2d2a{0%{top:10px;left:420px;opacity:0}20%{top:40px;left:360px;opacity:1}70%{top:130px;left:180px;opacity:1}to{top:160px;left:120px;opacity:0}}@-webkit-keyframes cloudRight-data-v-1d6b2d2a{0%{top:100px;left:500px;opacity:0}20%{top:120px;left:460px;opacity:1}80%{top:180px;left:340px;opacity:1}to{top:200px;left:300px;opacity:0}}@keyframes cloudRight-data-v-1d6b2d2a{0%{top:100px;left:500px;opacity:0}20%{top:120px;left:460px;opacity:1}80%{top:180px;left:340px;opacity:1}to{top:200px;left:300px;opacity:0}}.wscn-http404 .bullshit[data-v-1d6b2d2a]{position:relative;float:left;width:300px;padding:30px 0;overflow:hidden}.wscn-http404 .bullshit__oops[data-v-1d6b2d2a]{font-size:32px;line-height:40px;color:#1482f0;margin-bottom:20px;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__headline[data-v-1d6b2d2a],.wscn-http404 .bullshit__oops[data-v-1d6b2d2a]{font-weight:700;opacity:0;-webkit-animation-name:slideUp-data-v-1d6b2d2a;animation-name:slideUp-data-v-1d6b2d2a;-webkit-animation-duration:.5s;animation-duration:.5s}.wscn-http404 .bullshit__headline[data-v-1d6b2d2a]{font-size:20px;line-height:24px;color:#222;margin-bottom:10px;-webkit-animation-delay:.1s;animation-delay:.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__info[data-v-1d6b2d2a]{font-size:13px;line-height:21px;color:grey;margin-bottom:30px;-webkit-animation-delay:.2s;animation-delay:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__info[data-v-1d6b2d2a],.wscn-http404 .bullshit__return-home[data-v-1d6b2d2a]{opacity:0;-webkit-animation-name:slideUp-data-v-1d6b2d2a;animation-name:slideUp-data-v-1d6b2d2a;-webkit-animation-duration:.5s;animation-duration:.5s}.wscn-http404 .bullshit__return-home[data-v-1d6b2d2a]{display:block;float:left;width:165px;height:36px;background:#1482f0;border-radius:100px;text-align:center;color:#fff;font-size:14px;line-height:36px;cursor:pointer;-webkit-animation-delay:.3s;animation-delay:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes slideUp-data-v-1d6b2d2a{0%{-webkit-transform:translateY(60px);transform:translateY(60px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes slideUp-data-v-1d6b2d2a{0%{-webkit-transform:translateY(60px);transform:translateY(60px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-1a7d.38eb00cf.css b/priv/static/adminfe/chunk-1a7d.38eb00cf.css new file mode 100644 index 000000000..cbf59cfb5 --- /dev/null +++ b/priv/static/adminfe/chunk-1a7d.38eb00cf.css @@ -0,0 +1 @@ +.prop-row{margin-bottom:1em}.emoji-preview-img{max-width:5em}.copy-to-local-button{margin-top:2em;float:right}.new-emoji-col{margin-top:8em}.or,.shared-pack-dl-box{margin:1em}.dl-as-input{margin:1em;max-width:30%}.contents-collapse{margin:1em}.pack-actions{margin-top:1em}.new-emoji-uploader{margin-bottom:3em}.emoji-packs-container{margin:22px 0 0 15px}.local-packs-actions{margin-top:1em;margin-bottom:1em}.remote-instance-input{max-width:10%}.create-pack-button{margin-top:1em} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-18e1.6aaab273.css b/priv/static/adminfe/chunk-1f27.c0efd1fc.css similarity index 100% rename from priv/static/adminfe/chunk-18e1.6aaab273.css rename to priv/static/adminfe/chunk-1f27.c0efd1fc.css diff --git a/priv/static/adminfe/chunk-2325.0d22684d.css b/priv/static/adminfe/chunk-2325.0d22684d.css deleted file mode 100644 index bdb738700..000000000 --- a/priv/static/adminfe/chunk-2325.0d22684d.css +++ /dev/null @@ -1 +0,0 @@ -.wscn-http404-container[data-v-b8c8aa9a]{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;top:40%;left:50%}.wscn-http404[data-v-b8c8aa9a]{position:relative;width:1200px;padding:0 50px;overflow:hidden}.wscn-http404 .pic-404[data-v-b8c8aa9a]{position:relative;float:left;width:600px;overflow:hidden}.wscn-http404 .pic-404__parent[data-v-b8c8aa9a]{width:100%}.wscn-http404 .pic-404__child[data-v-b8c8aa9a]{position:absolute}.wscn-http404 .pic-404__child.left[data-v-b8c8aa9a]{width:80px;top:17px;left:220px;opacity:0;-webkit-animation-name:cloudLeft-data-v-b8c8aa9a;animation-name:cloudLeft-data-v-b8c8aa9a;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1s;animation-delay:1s}.wscn-http404 .pic-404__child.mid[data-v-b8c8aa9a]{width:46px;top:10px;left:420px;opacity:0;-webkit-animation-name:cloudMid-data-v-b8c8aa9a;animation-name:cloudMid-data-v-b8c8aa9a;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1.2s;animation-delay:1.2s}.wscn-http404 .pic-404__child.right[data-v-b8c8aa9a]{width:62px;top:100px;left:500px;opacity:0;-webkit-animation-name:cloudRight-data-v-b8c8aa9a;animation-name:cloudRight-data-v-b8c8aa9a;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:1s;animation-delay:1s}@-webkit-keyframes cloudLeft-data-v-b8c8aa9a{0%{top:17px;left:220px;opacity:0}20%{top:33px;left:188px;opacity:1}80%{top:81px;left:92px;opacity:1}to{top:97px;left:60px;opacity:0}}@keyframes cloudLeft-data-v-b8c8aa9a{0%{top:17px;left:220px;opacity:0}20%{top:33px;left:188px;opacity:1}80%{top:81px;left:92px;opacity:1}to{top:97px;left:60px;opacity:0}}@-webkit-keyframes cloudMid-data-v-b8c8aa9a{0%{top:10px;left:420px;opacity:0}20%{top:40px;left:360px;opacity:1}70%{top:130px;left:180px;opacity:1}to{top:160px;left:120px;opacity:0}}@keyframes cloudMid-data-v-b8c8aa9a{0%{top:10px;left:420px;opacity:0}20%{top:40px;left:360px;opacity:1}70%{top:130px;left:180px;opacity:1}to{top:160px;left:120px;opacity:0}}@-webkit-keyframes cloudRight-data-v-b8c8aa9a{0%{top:100px;left:500px;opacity:0}20%{top:120px;left:460px;opacity:1}80%{top:180px;left:340px;opacity:1}to{top:200px;left:300px;opacity:0}}@keyframes cloudRight-data-v-b8c8aa9a{0%{top:100px;left:500px;opacity:0}20%{top:120px;left:460px;opacity:1}80%{top:180px;left:340px;opacity:1}to{top:200px;left:300px;opacity:0}}.wscn-http404 .bullshit[data-v-b8c8aa9a]{position:relative;float:left;width:300px;padding:30px 0;overflow:hidden}.wscn-http404 .bullshit__oops[data-v-b8c8aa9a]{font-size:32px;line-height:40px;color:#1482f0;margin-bottom:20px;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__headline[data-v-b8c8aa9a],.wscn-http404 .bullshit__oops[data-v-b8c8aa9a]{font-weight:700;opacity:0;-webkit-animation-name:slideUp-data-v-b8c8aa9a;animation-name:slideUp-data-v-b8c8aa9a;-webkit-animation-duration:.5s;animation-duration:.5s}.wscn-http404 .bullshit__headline[data-v-b8c8aa9a]{font-size:20px;line-height:24px;color:#222;margin-bottom:10px;-webkit-animation-delay:.1s;animation-delay:.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__info[data-v-b8c8aa9a]{font-size:13px;line-height:21px;color:grey;margin-bottom:30px;-webkit-animation-delay:.2s;animation-delay:.2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.wscn-http404 .bullshit__info[data-v-b8c8aa9a],.wscn-http404 .bullshit__return-home[data-v-b8c8aa9a]{opacity:0;-webkit-animation-name:slideUp-data-v-b8c8aa9a;animation-name:slideUp-data-v-b8c8aa9a;-webkit-animation-duration:.5s;animation-duration:.5s}.wscn-http404 .bullshit__return-home[data-v-b8c8aa9a]{display:block;float:left;width:110px;height:36px;background:#1482f0;border-radius:100px;text-align:center;color:#fff;font-size:14px;line-height:36px;cursor:pointer;-webkit-animation-delay:.3s;animation-delay:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes slideUp-data-v-b8c8aa9a{0%{-webkit-transform:translateY(60px);transform:translateY(60px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes slideUp-data-v-b8c8aa9a{0%{-webkit-transform:translateY(60px);transform:translateY(60px);opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-0e18.e12401fb.css b/priv/static/adminfe/chunk-3d1c.2880a519.css similarity index 100% rename from priv/static/adminfe/chunk-0e18.e12401fb.css rename to priv/static/adminfe/chunk-3d1c.2880a519.css diff --git a/priv/static/adminfe/chunk-5913.33f0e7ff.css b/priv/static/adminfe/chunk-5913.33f0e7ff.css new file mode 100644 index 000000000..f98c967ee --- /dev/null +++ b/priv/static/adminfe/chunk-5913.33f0e7ff.css @@ -0,0 +1 @@ +.select-field[data-v-71bc6b38]{width:350px}@media (min-device-width:768px) and (max-device-width:1024px),only screen and (max-width:760px){.select-field[data-v-71bc6b38]{width:100%;margin-bottom:5px}}.actions-button[data-v-19afabea]{text-align:left;width:350px;padding:10px}.actions-button-container[data-v-19afabea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-dropdown[data-v-19afabea]{float:right}.el-icon-edit[data-v-19afabea]{margin-right:5px}.tag-container[data-v-19afabea]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tag-text[data-v-19afabea]{padding-right:20px}.no-hover[data-v-19afabea]:hover{color:#606266;background-color:#fff;cursor:auto}.el-dialog__body{padding:20px}.create-account-form-item{margin-bottom:20px}.create-account-form-item-without-margin{margin-bottom:0}@media (min-device-width:768px) and (max-device-width:1024px),only screen and (max-width:760px){.create-user-dialog{width:85%}.create-account-form-item{margin-bottom:20px}.el-dialog__body{padding:20px}}.actions-button{text-align:left;width:350px;padding:10px}.actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 15px 10px}.active-tag{color:#409eff;font-weight:700}.active-tag .el-icon-check{color:#409eff;float:right;margin:7px 0 0 15px}.el-dropdown-link:hover{cursor:pointer;color:#409eff}.el-icon-plus{margin-right:5px}.password-reset-token{margin:0 0 14px}.password-reset-token-dialog{width:50%}.reset-password-link{text-decoration:underline}.users-container h1{margin:22px 0 0 15px}.users-container .pagination{margin:25px 0;text-align:center}.users-container .search{width:350px;float:right}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:22px 15px 15px}.users-container .user-count{color:grey;font-size:28px}@media (min-device-width:768px) and (max-device-width:1024px),only screen and (max-width:760px){.password-reset-token-dialog{width:85%}.users-container h1{margin:7px 10px 15px}.users-container .actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px 7px}.users-container .create-account{width:100%}.users-container .el-icon-arrow-down{font-size:12px}.users-container .search{width:100%}.users-container .filter-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px}.users-container .el-tag{width:30px;display:inline-block;margin-bottom:4px;font-weight:700}.users-container .el-tag.el-tag--danger,.users-container .el-tag.el-tag--success{padding-left:8px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-1fbf.d7a1893c.css b/priv/static/adminfe/chunk-598f.dc5869e7.css similarity index 100% rename from priv/static/adminfe/chunk-1fbf.d7a1893c.css rename to priv/static/adminfe/chunk-598f.dc5869e7.css diff --git a/priv/static/adminfe/chunk-5e57.ac97b15a.css b/priv/static/adminfe/chunk-6292.d1c82a11.css similarity index 100% rename from priv/static/adminfe/chunk-5e57.ac97b15a.css rename to priv/static/adminfe/chunk-6292.d1c82a11.css diff --git a/priv/static/adminfe/chunk-7c6b.4a8663a9.css b/priv/static/adminfe/chunk-7c6b.4a8663a9.css new file mode 100644 index 000000000..48784b9d2 --- /dev/null +++ b/priv/static/adminfe/chunk-7c6b.4a8663a9.css @@ -0,0 +1 @@ +.invites-container .actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:20px 15px 15px}.invites-container .create-invite-token{text-align:left;width:350px;padding:10px}.invites-container .create-new-token-dialog{width:40%}.invites-container .el-dialog__body{padding:5px 20px 0}.invites-container h1{margin:22px 0 0 15px}.invites-container .icon{margin-right:5px}.invites-container .invite-token-table{width:100%;margin:0 15px}.invites-container .invite-via-email{text-align:left;width:350px;padding:10px}.invites-container .invite-via-email-dialog{width:50%}.invites-container .info{color:#666;font-size:13px;line-height:22px;margin:0 0 10px}@media (min-device-width:768px) and (max-device-width:1024px),only screen and (max-width:760px){.invites-container .actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:15px 10px 7px}.invites-container .create-invite-token{width:100%}.invites-container .create-new-token-dialog{width:85%}.invites-container .el-date-editor{width:150px}.invites-container .el-dialog__body{padding:5px 15px 0}.invites-container h1{margin:7px 10px 15px}.invites-container .invite-token-table{width:100%;margin:0}.invites-container .invite-via-email{width:100%;margin:10px 0 0}.invites-container .invite-via-email-dialog{width:85%}.invites-container .info{margin:0 0 10px 5px}.create-invite-token,.invite-via-email{width:100%}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-8b70.9ba0945c.css b/priv/static/adminfe/chunk-8b70.9ba0945c.css deleted file mode 100644 index 7fa43bf28..000000000 --- a/priv/static/adminfe/chunk-8b70.9ba0945c.css +++ /dev/null @@ -1 +0,0 @@ -@supports (-webkit-mask:none) and (not (cater-color:#fff)){.login-container .el-input input{color:#fff}.login-container .el-input input:first-line{color:#eee}}.login-container .el-input{display:inline-block;height:47px;width:85%}.login-container .el-input input{background:transparent;border:0;-webkit-appearance:none;border-radius:0;padding:12px 5px 12px 15px;color:#eee;height:47px;caret-color:#fff}.login-container .el-input input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #283443 inset!important;-webkit-text-fill-color:#fff!important}.login-container .el-form-item{border:1px solid hsla(0,0%,100%,.1);background:rgba(0,0,0,.1);border-radius:5px;color:#454545}.login-container[data-v-57350b8e]{min-height:100%;width:100%;background-color:#2d3a4b;overflow:hidden}.login-container .login-form[data-v-57350b8e]{position:relative;width:520px;max-width:100%;padding:160px 35px 0;margin:0 auto;overflow:hidden}.login-container .tips[data-v-57350b8e]{font-size:14px;color:#fff;margin-bottom:10px}.login-container .tips span[data-v-57350b8e]:first-of-type{margin-right:16px}.login-container .svg-container[data-v-57350b8e]{padding:6px 5px 6px 15px;color:#889aa4;vertical-align:middle;width:30px;display:inline-block}.login-container .title-container[data-v-57350b8e]{position:relative}.login-container .title-container .title[data-v-57350b8e]{font-size:26px;color:#eee;margin:0 auto 40px;text-align:center;font-weight:700}.login-container .title-container .set-language[data-v-57350b8e]{color:#fff;position:absolute;top:3px;font-size:18px;right:0;cursor:pointer}.login-container .show-pwd[data-v-57350b8e]{position:absolute;right:10px;top:7px;font-size:16px;color:#889aa4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.login-container .thirdparty-button[data-v-57350b8e]{position:absolute;right:0;bottom:6px} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-e547.e4b6230b.css b/priv/static/adminfe/chunk-e547.e4b6230b.css deleted file mode 100644 index f740543a0..000000000 --- a/priv/static/adminfe/chunk-e547.e4b6230b.css +++ /dev/null @@ -1 +0,0 @@ -.select-field[data-v-71bc6b38]{width:350px}@media (min-device-width:768px) and (max-device-width:1024px),only screen and (max-width:760px){.select-field[data-v-71bc6b38]{width:100%;margin-bottom:5px}}.actions-button[data-v-94227b1e]{text-align:left;width:350px;padding:10px}.actions-button-container[data-v-94227b1e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-dropdown[data-v-94227b1e]{float:right}.el-icon-edit[data-v-94227b1e]{margin-right:5px}.tag-container[data-v-94227b1e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.tag-text[data-v-94227b1e]{padding-right:20px}.no-hover[data-v-94227b1e]:hover{color:#606266;background-color:#fff;cursor:auto}@media (min-device-width:768px) and (max-device-width:1024px),only screen and (max-width:760px){.create-user-dialog{width:80%}.create-account-form-item{margin-bottom:30px}.el-dialog__body{padding:20px 20px 0}}.actions-button[data-v-c51cd8ee]{text-align:left;width:350px;padding:10px}.actions-container[data-v-c51cd8ee]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0 15px 10px}.active-tag[data-v-c51cd8ee]{color:#409eff;font-weight:700}.active-tag .el-icon-check[data-v-c51cd8ee]{color:#409eff;float:right;margin:7px 0 0 15px}.el-dropdown-link[data-v-c51cd8ee]:hover{cursor:pointer;color:#409eff}.el-icon-plus[data-v-c51cd8ee]{margin-right:5px}.users-container h1[data-v-c51cd8ee]{margin:22px 0 0 15px}.users-container .pagination[data-v-c51cd8ee]{margin:25px 0;text-align:center}.users-container .search[data-v-c51cd8ee]{width:350px;float:right}.users-container .filter-container[data-v-c51cd8ee]{display:-webkit-box;display:-ms-flexbox;display:flex;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:22px 15px 15px}.users-container .user-count[data-v-c51cd8ee]{color:grey;font-size:28px}@media (min-device-width:768px) and (max-device-width:1024px),only screen and (max-width:760px){.users-container h1[data-v-c51cd8ee]{margin:7px 10px 15px}.users-container .actions-container[data-v-c51cd8ee]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px 7px}.users-container .create-account[data-v-c51cd8ee]{width:100%}.users-container .el-icon-arrow-down[data-v-c51cd8ee]{font-size:12px}.users-container .search[data-v-c51cd8ee]{width:100%}.users-container .filter-container[data-v-c51cd8ee]{display:-webkit-box;display:-ms-flexbox;display:flex;height:82px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:0 10px}.users-container .el-tag[data-v-c51cd8ee]{width:30px;display:inline-block;margin-bottom:4px;font-weight:700}.users-container .el-tag.el-tag--danger[data-v-c51cd8ee],.users-container .el-tag.el-tag--success[data-v-c51cd8ee]{padding-left:8px}} \ No newline at end of file diff --git a/priv/static/adminfe/chunk-elementUI.e5cd8da6.css b/priv/static/adminfe/chunk-elementUI.f35d8ab1.css similarity index 100% rename from priv/static/adminfe/chunk-elementUI.e5cd8da6.css rename to priv/static/adminfe/chunk-elementUI.f35d8ab1.css diff --git a/priv/static/adminfe/chunk-libs.4e8c4664.css b/priv/static/adminfe/chunk-libs.00388c73.css similarity index 100% rename from priv/static/adminfe/chunk-libs.4e8c4664.css rename to priv/static/adminfe/chunk-libs.00388c73.css diff --git a/priv/static/adminfe/index.html b/priv/static/adminfe/index.html index c31247c03..ce53d8318 100644 --- a/priv/static/adminfe/index.html +++ b/priv/static/adminfe/index.html @@ -1 +1 @@ -Admin FE
\ No newline at end of file +Admin FE
\ No newline at end of file diff --git a/priv/static/adminfe/static/js/7zzA.e1ae1c94.js b/priv/static/adminfe/static/js/7zzA.e1ae1c94.js index 4387b8321..526e228f5 100644 --- a/priv/static/adminfe/static/js/7zzA.e1ae1c94.js +++ b/priv/static/adminfe/static/js/7zzA.e1ae1c94.js @@ -1 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["7zzA"],{"7zzA":function(e,r,n){"use strict";n.r(r);var t={beforeCreate:function(){var e=this.$route,r=e.params,n=e.query,t=r.path;this.$router.replace({path:"/"+t,query:n})},render:function(e){return e()}},o=n("KHd+"),u=Object(o.a)(t,void 0,void 0,!1,null,null,null);u.options.__file="index.vue";r.default=u.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["7zzA"],{"7zzA":function(e,r,n){"use strict";n.r(r);var t={beforeCreate:function(){var e=this.$route,r=e.params,n=e.query,t=r.path;this.$router.replace({path:"/"+t,query:n})},render:function(e){return e()}},o=n("KHd+"),u=Object(o.a)(t,void 0,void 0,!1,null,null,null);u.options.__file="index.vue";r.default=u.exports}}]); +//# sourceMappingURL=7zzA.e1ae1c94.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/7zzA.e1ae1c94.js.map b/priv/static/adminfe/static/js/7zzA.e1ae1c94.js.map new file mode 100644 index 000000000..840e8a26b --- /dev/null +++ b/priv/static/adminfe/static/js/7zzA.e1ae1c94.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///src/views/redirect/index.vue","webpack:///./src/views/redirect/index.vue?29eb","webpack:///./src/views/redirect/index.vue"],"names":["views_redirectvue_type_script_lang_js_","beforeCreate","_this$$route","this","$route","params","query","path","$router","replace","render","h","component","Object","componentNormalizer","staticRenderFns","options","__file","__webpack_exports__"],"mappings":"yGACA,ICD0MA,GDE1MC,aADA,WACA,IAAAC,EACAC,KAAAC,OAAAC,EADAH,EACAG,OAAAC,EADAJ,EACAI,MACAC,EAAAF,EAAAE,KACAJ,KAAAK,QAAAC,SAAAF,KAAA,IAAAA,EAAAD,WAEAI,OAAA,SAAAC,GACA,OAAAA,kBEDAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdb,OARFU,OAAAK,GAWA,EACA,KACA,KACA,MAIAH,EAAAI,QAAAC,OAAA,YACeC,EAAA,QAAAN","file":"static/js/7zzA.e1ae1c94.js","sourcesContent":["\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/JEtC.f9ba4594.js b/priv/static/adminfe/static/js/JEtC.f9ba4594.js index 504eaef1f..4d7adff7f 100644 --- a/priv/static/adminfe/static/js/JEtC.f9ba4594.js +++ b/priv/static/adminfe/static/js/JEtC.f9ba4594.js @@ -1 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["JEtC"],{JEtC:function(o,n,i){"use strict";i.r(n);var e={name:"AuthRedirect",created:function(){var o=window.location.search.slice(1);window.opener.location.href=window.location.origin+"/login#"+o,window.close()}},t=i("KHd+"),c=Object(t.a)(e,void 0,void 0,!1,null,null,null);c.options.__file="authredirect.vue";n.default=c.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["JEtC"],{JEtC:function(o,n,i){"use strict";i.r(n);var e={name:"AuthRedirect",created:function(){var o=window.location.search.slice(1);window.opener.location.href=window.location.origin+"/login#"+o,window.close()}},t=i("KHd+"),c=Object(t.a)(e,void 0,void 0,!1,null,null,null);c.options.__file="authredirect.vue";n.default=c.exports}}]); +//# sourceMappingURL=JEtC.f9ba4594.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/JEtC.f9ba4594.js.map b/priv/static/adminfe/static/js/JEtC.f9ba4594.js.map new file mode 100644 index 000000000..633bbc5d6 --- /dev/null +++ b/priv/static/adminfe/static/js/JEtC.f9ba4594.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///src/views/login/authredirect.vue","webpack:///./src/views/login/authredirect.vue?a9ea","webpack:///./src/views/login/authredirect.vue"],"names":["login_authredirectvue_type_script_lang_js_","name","created","hash","window","location","search","slice","opener","href","origin","close","component","Object","componentNormalizer","render","staticRenderFns","options","__file","__webpack_exports__"],"mappings":"uGACA,ICDiNA,GDEjNC,KAAA,eACAC,QAFA,WAGA,IAAAC,EAAAC,OAAAC,SAAAC,OAAAC,MAAA,GACAH,OAAAI,OAAAH,SAAAI,KAAAL,OAAAC,SAAAK,OAAA,UAAAP,EACAC,OAAAO,sBECAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdb,OARFe,OAAAC,GAWA,EACA,KACA,KACA,MAIAJ,EAAAK,QAAAC,OAAA,mBACeC,EAAA,QAAAP","file":"static/js/JEtC.f9ba4594.js","sourcesContent":["\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./authredirect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./authredirect.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./authredirect.vue?vue&type=script&lang=js&\"\nexport * from \"./authredirect.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"authredirect.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.8e186193.js b/priv/static/adminfe/static/js/app.8e186193.js deleted file mode 100644 index 207bbeaa6..000000000 --- a/priv/static/adminfe/static/js/app.8e186193.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["app"],{"+Bsb":function(e,t,n){"use strict";var a=n("7/2J");n.n(a).a},"+aF5":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-pdf",use:"icon-pdf-usage",viewBox:"0 0 1024 1024",content:''});o.a.add(s);t.default=s},"/H2a":function(e,t,n){"use strict";var a=n("COcF");n.n(a).a},"0Fbn":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-people",use:"icon-people-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"1+ww":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-eye-open",use:"icon-eye-open-usage",viewBox:"0 0 1024 1024",content:''});o.a.add(s);t.default=s},"28eg":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-exit-fullscreen",use:"icon-exit-fullscreen-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"3PhE":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-nested",use:"icon-nested-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"5TQQ":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-theme",use:"icon-theme-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"6xvN":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-form",use:"icon-form-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"7/2J":function(e,t,n){},"94Jb":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-dashboard",use:"icon-dashboard-usage",viewBox:"0 0 128 100",content:''});o.a.add(s);t.default=s},COcF:function(e,t,n){},EqXK:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-shopping",use:"icon-shopping-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},F3lI:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-bug",use:"icon-bug-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"F9+T":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-international",use:"icon-international-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},FDDl:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-qq",use:"icon-qq-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},GPBF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-link",use:"icon-link-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},ICep:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-guide 2",use:"icon-guide 2-usage",viewBox:"0 0 1000 1000",content:''});o.a.add(s);t.default=s},JYDz:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-language",use:"icon-language-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},Kcm3:function(e,t,n){},Kj24:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-password",use:"icon-password-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},LxGF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-peoples",use:"icon-peoples-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},MEYL:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-money",use:"icon-money-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},MMMJ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-example",use:"icon-example-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},MokB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-list",use:"icon-list-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},OeYi:function(e,t,n){"use strict";var a=n("yDdW");n.n(a).a},P8iQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-settings",use:"icon-settings-usage",viewBox:"0 0 490.2 490.2",content:'\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n'});o.a.add(s);t.default=s},"R/8a":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-message",use:"icon-message-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"R/Hx":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-table",use:"icon-table-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},RVVg:function(e,t,n){},SZWj:function(e,t,n){"use strict";var a=n("Xm3t");n.n(a).a},TfVu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-eye",use:"icon-eye-usage",viewBox:"0 0 128 64",content:''});o.a.add(s);t.default=s},"Uf/o":function(e,t,n){var a={"./404.svg":"oUrx","./bug.svg":"F3lI","./chart.svg":"yCkv","./clipboard.svg":"vDVG","./component.svg":"VtY+","./dashboard.svg":"94Jb","./documentation.svg":"kPu2","./drag.svg":"m7++","./edit.svg":"qkZ8","./email.svg":"y7eQ","./example.svg":"MMMJ","./excel.svg":"ZZmv","./exit-fullscreen.svg":"28eg","./eye-open.svg":"1+ww","./eye.svg":"TfVu","./form.svg":"6xvN","./fullscreen.svg":"mSHS","./guide 2.svg":"ICep","./guide.svg":"ZoO1","./icon.svg":"nZHn","./international.svg":"F9+T","./language.svg":"JYDz","./link.svg":"GPBF","./list.svg":"MokB","./lock.svg":"qwAt","./message.svg":"R/8a","./money.svg":"MEYL","./nested.svg":"3PhE","./password.svg":"Kj24","./pdf.svg":"+aF5","./people.svg":"0Fbn","./peoples.svg":"LxGF","./qq.svg":"FDDl","./search.svg":"jo2x","./settings.svg":"P8iQ","./shopping.svg":"EqXK","./size.svg":"hkRB","./star.svg":"cIpu","./tab.svg":"j7e1","./table.svg":"R/Hx","./theme.svg":"5TQQ","./tree.svg":"k80C","./user.svg":"s7Vf","./wechat.svg":"gNoN","./zip.svg":"iqZD"};function r(e){var t=i(e);return n(t)}function i(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=i,e.exports=r,r.id="Uf/o"},"VtY+":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-component",use:"icon-component-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},Vtdi:function(e,t,n){"use strict";n.r(t);var a={};n.r(a),n.d(a,"parseTime",function(){return z}),n.d(a,"formatTime",function(){return A}),n.d(a,"timeAgo",function(){return $t}),n.d(a,"numberFormatter",function(){return Yt}),n.d(a,"toThousandFilter",function(){return Gt});var r=n("Kw5r"),i=n("p46w"),o=n.n(i),s=(n("9d8Q"),n("XJYT")),c=n.n(s),u=(n("D66Q"),n("sg+I"),{name:"App"}),l=n("KHd+"),d=Object(l.a)(u,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},[],!1,null,null,null);d.options.__file="App.vue";var p=d.exports,h=n("L2JU"),m={state:{sidebar:{opened:!o.a.get("sidebarStatus")||!!+o.a.get("sidebarStatus"),withoutAnimation:!1},device:"desktop",language:o.a.get("language")||"en",size:o.a.get("size")||"medium"},mutations:{TOGGLE_SIDEBAR:function(e){e.sidebar.opened=!e.sidebar.opened,e.sidebar.withoutAnimation=!1,e.sidebar.opened?o.a.set("sidebarStatus",1):o.a.set("sidebarStatus",0)},CLOSE_SIDEBAR:function(e,t){o.a.set("sidebarStatus",0),e.sidebar.opened=!1,e.sidebar.withoutAnimation=t},TOGGLE_DEVICE:function(e,t){e.device=t},SET_LANGUAGE:function(e,t){e.language=t,o.a.set("language",t)},SET_SIZE:function(e,t){e.size=t,o.a.set("size",t)}},actions:{toggleSideBar:function(e){(0,e.commit)("TOGGLE_SIDEBAR")},closeSideBar:function(e,t){(0,e.commit)("CLOSE_SIDEBAR",t.withoutAnimation)},toggleDevice:function(e,t){(0,e.commit)("TOGGLE_DEVICE",t)},setLanguage:function(e,t){(0,e.commit)("SET_LANGUAGE",t)},setSize:function(e,t){(0,e.commit)("SET_SIZE",t)}}},f={state:{logs:[]},mutations:{ADD_ERROR_LOG:function(e,t){e.logs.push(t)}},actions:{addErrorLog:function(e,t){(0,e.commit)("ADD_ERROR_LOG",t)}}},g=n("MVZn"),v=n.n(g),w=n("jE9Z"),b={name:"Hamburger",props:{isActive:{type:Boolean,default:!1},toggleClick:{type:Function,default:null}}},y=(n("+Bsb"),Object(l.a)(b,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticStyle:{padding:"0 15px"},on:{click:this.toggleClick}},[t("svg",{staticClass:"hamburger",class:{"is-active":this.isActive},attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"64",height:"64"}},[t("path",{attrs:{d:"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z"}})])])},[],!1,null,"3ee86d44",null));y.options.__file="index.vue";var x={components:{Hamburger:y.exports},computed:v()({},Object(h.b)(["sidebar","name","avatar","device"])),methods:{toggleSideBar:function(){this.$store.dispatch("toggleSideBar")},logout:function(){this.$store.dispatch("LogOut").then(function(){location.reload()})}}},_=(n("krgV"),Object(l.a)(x,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"navbar"},[n("hamburger",{staticClass:"hamburger-container",attrs:{"toggle-click":e.toggleSideBar,"is-active":e.sidebar.opened}}),e._v(" "),n("div",{staticClass:"right-menu"},[n("el-dropdown",{staticClass:"avatar-container right-menu-item hover-effect",attrs:{trigger:"click"}},[n("div",{staticClass:"avatar-wrapper"},[n("img",{staticClass:"user-avatar",attrs:{src:e.avatar+"?imageView2/1/w/80/h/80"}})]),e._v(" "),n("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[n("router-link",{attrs:{to:"/"}},[n("el-dropdown-item",[e._v("\n "+e._s(e.$t("navbar.dashboard"))+"\n ")])],1),e._v(" "),n("el-dropdown-item",{attrs:{divided:""}},[n("span",{staticStyle:{display:"block"},on:{click:e.logout}},[e._v(e._s(e.$t("navbar.logOut")))])])],1)],1)],1)],1)},[],!1,null,"5e8599dc",null));_.options.__file="Navbar.vue";var T=_.exports,S=n("33yf"),E=n.n(S);function k(e){return this.$te("route."+e)?this.$t("route."+e):e}var C=n("cDf5"),V=n.n(C);function z(e,t){if(0===arguments.length)return null;var n,a=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"===V()(e)?n=e:("string"==typeof e&&/^[0-9]+$/.test(e)&&(e=parseInt(e)),"number"==typeof e&&10===e.toString().length&&(e*=1e3),n=new Date(e));var r={y:n.getFullYear(),m:n.getMonth()+1,d:n.getDate(),h:n.getHours(),i:n.getMinutes(),s:n.getSeconds(),a:n.getDay()};return a.replace(/{(y|m|d|h|i|s|a)+}/g,function(e,t){var n=r[t];return"a"===t?["日","一","二","三","四","五","六"][n]:(e.length>0&&n<10&&(n="0"+n),n||0)})}function A(e,t){e=1e3*+e;var n=new Date(e),a=(Date.now()-n)/1e3;return a<30?"刚刚":a<3600?Math.ceil(a/60)+"分钟前":a<86400?Math.ceil(a/3600)+"小时前":a<172800?"1天前":t?z(e,t):n.getMonth()+1+"月"+n.getDate()+"日"+n.getHours()+"时"+n.getMinutes()+"分"}function L(e){return/^(https?:|mailto:|tel:)/.test(e)}var M={name:"MenuItem",functional:!0,props:{icon:{type:String,default:""},title:{type:String,default:""}},render:function(e,t){var n=t.props,a=n.icon,r=n.title,i=[];return a&&i.push(e("svg-icon",{attrs:{"icon-class":a}})),r&&i.push(e("span",{slot:"title"},[r])),i}},I=Object(l.a)(M,void 0,void 0,!1,null,null,null);I.options.__file="Item.vue";var P=I.exports,H={props:{to:{type:String,required:!0}},methods:{linkProps:function(e){return L(e)?{is:"a",href:e,target:"_blank",rel:"noopener"}:{is:"router-link",to:e}}}},B=Object(l.a)(H,function(){var e=this.$createElement;return(this._self._c||e)("component",this._b({},"component",this.linkProps(this.to),!1),[this._t("default")],2)},[],!1,null,null,null);B.options.__file="Link.vue";var R={name:"SidebarItem",components:{Item:P,AppLink:B.exports},mixins:[{computed:{device:function(){return this.$store.state.app.device}},mounted:function(){this.fixBugIniOS()},methods:{fixBugIniOS:function(){var e=this,t=this.$refs.subMenu;if(t){var n=t.handleMouseleave;t.handleMouseleave=function(t){"mobile"!==e.device&&n(t)}}}}}],props:{item:{type:Object,required:!0},isNest:{type:Boolean,default:!1},basePath:{type:String,default:""}},data:function(){return{onlyOneChild:null}},methods:{hasOneShowingChild:function(e,t){var n=this,a=e.filter(function(e){return!e.hidden&&(n.onlyOneChild=e,!0)});return 1===a.length||0===a.length&&(this.onlyOneChild=v()({},t,{path:"",noShowingChildren:!0}),!0)},resolvePath:function(e){return this.isExternalLink(e)?e:E.a.resolve(this.basePath,e)},isExternalLink:function(e){return L(e)},generateTitle:k}},D=Object(l.a)(R,function(){var e=this,t=e.$createElement,n=e._self._c||t;return!e.item.hidden&&e.item.children?n("div",{staticClass:"menu-wrapper"},[!e.hasOneShowingChild(e.item.children,e.item)||e.onlyOneChild.children&&!e.onlyOneChild.noShowingChildren||e.item.alwaysShow?n("el-submenu",{ref:"subMenu",attrs:{index:e.resolvePath(e.item.path)}},[n("template",{slot:"title"},[e.item.meta?n("item",{attrs:{icon:e.item.meta.icon,title:e.generateTitle(e.item.meta.title)}}):e._e()],1),e._v(" "),e._l(e.item.children,function(t){return[t.hidden?e._e():[t.children&&t.children.length>0?n("sidebar-item",{key:t.path,staticClass:"nest-menu",attrs:{"is-nest":!0,item:t,"base-path":e.resolvePath(t.path)}}):n("app-link",{key:t.name,attrs:{to:e.resolvePath(t.path)}},[n("el-menu-item",{attrs:{index:e.resolvePath(t.path)}},[t.meta?n("item",{attrs:{icon:t.meta.icon,title:e.generateTitle(t.meta.title)}}):e._e()],1)],1)]]})],2):[n("app-link",{attrs:{to:e.resolvePath(e.onlyOneChild.path)}},[n("el-menu-item",{class:{"submenu-title-noDropdown":!e.isNest},attrs:{index:e.resolvePath(e.onlyOneChild.path)}},[e.onlyOneChild.meta?n("item",{attrs:{icon:e.onlyOneChild.meta.icon||e.item.meta.icon,title:e.generateTitle(e.onlyOneChild.meta.title)}}):e._e()],1)],1)]],2):e._e()},[],!1,null,null,null);D.options.__file="SidebarItem.vue";var O=D.exports,U=n("zx4i"),F=n.n(U),j={components:{SidebarItem:O},computed:v()({},Object(h.b)(["permission_routers","sidebar"]),{variables:function(){return F.a},isCollapse:function(){return!this.sidebar.opened}})},N=Object(l.a)(j,function(){var e=this.$createElement,t=this._self._c||e;return t("el-scrollbar",{attrs:{"wrap-class":"scrollbar-wrapper"}},[t("el-menu",{attrs:{"default-active":this.$route.path,collapse:this.isCollapse,"background-color":this.variables.menuBg,"text-color":this.variables.menuText,"active-text-color":this.variables.menuActiveText,mode:"vertical"}},this._l(this.permission_routers,function(e){return t("sidebar-item",{key:e.path,attrs:{item:e,"base-path":e.path}})}),1)],1)},[],!1,null,null,null);N.options.__file="index.vue";var $=N.exports,Y=n("RIqP"),G=n.n(Y),W={name:"ScrollPane",data:function(){return{left:0}},methods:{handleScroll:function(e){var t=e.wheelDelta||40*-e.deltaY,n=this.$refs.scrollContainer.$refs.wrap;n.scrollLeft=n.scrollLeft+t/4},moveToTarget:function(e){var t=this.$refs.scrollContainer.$el.offsetWidth,n=this.$refs.scrollContainer.$refs.wrap,a=this.$parent.$refs.tag,r=null,i=null;if(a.length>0&&(r=a[0],i=a[a.length-1]),r===e)n.scrollLeft=0;else if(i===e)n.scrollLeft=n.scrollWidth-t;else{var o=a.findIndex(function(t){return t===e}),s=a[o-1],c=a[o+1],u=c.$el.offsetLeft+c.$el.offsetWidth+4,l=s.$el.offsetLeft-4;u>n.scrollLeft+t?n.scrollLeft=u-t:l1&&void 0!==arguments[1]?arguments[1]:"/",a=[];return e.forEach(function(e){if(e.meta&&e.meta.affix&&a.push({path:E.a.resolve(n,e.path),name:e.name,meta:v()({},e.meta)}),e.children){var r=t.filterAffixTags(e.children,e.path);r.length>=1&&(a=[].concat(G()(a),G()(r)))}}),a},initTags:function(){var e=this.affixTags=this.filterAffixTags(this.routers),t=!0,n=!1,a=void 0;try{for(var r,i=e[Symbol.iterator]();!(t=(r=i.next()).done);t=!0){var o=r.value;o.name&&this.$store.dispatch("addVisitedView",o)}}catch(e){n=!0,a=e}finally{try{t||null==i.return||i.return()}finally{if(n)throw a}}},addTags:function(){return this.$route.name&&this.$store.dispatch("addView",this.$route),!1},moveToCurrentTag:function(){var e=this,t=this.$refs.tag;this.$nextTick(function(){var n=!0,a=!1,r=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(s.to.path===e.$route.path){e.$refs.scrollPane.moveToTarget(s),s.to.fullPath!==e.$route.fullPath&&e.$store.dispatch("updateVisitedView",e.$route);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}})},refreshSelectedTag:function(e){var t=this;this.$store.dispatch("delCachedView",e).then(function(){var n=e.fullPath;t.$nextTick(function(){t.$router.replace({path:"/redirect"+n})})})},closeSelectedTag:function(e){var t=this;this.$store.dispatch("delView",e).then(function(n){var a=n.visitedViews;t.isActive(e)&&t.toLastView(a)})},closeOthersTags:function(){var e=this;this.$router.push(this.selectedTag),this.$store.dispatch("delOthersViews",this.selectedTag).then(function(){e.moveToCurrentTag()})},closeAllTags:function(e){var t=this;this.$store.dispatch("delAllViews").then(function(n){var a=n.visitedViews;t.affixTags.some(function(t){return t.path===e.path})||t.toLastView(a)})},toLastView:function(e){var t=e.slice(-1)[0];t?this.$router.push(t):this.$router.push("/")},openMenu:function(e,t){var n=this.$el.getBoundingClientRect().left,a=this.$el.offsetWidth-105,r=t.clientX-n+15;this.left=r>a?a:r,this.top=t.clientY,this.visible=!0,this.selectedTag=e},closeMenu:function(){this.visible=!1}}},K=(n("/H2a"),n("Yymj"),Object(l.a)(Z,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"tags-view-container"},[n("scroll-pane",{ref:"scrollPane",staticClass:"tags-view-wrapper"},e._l(e.visitedViews,function(t){return n("router-link",{key:t.path,ref:"tag",refInFor:!0,staticClass:"tags-view-item",class:e.isActive(t)?"active":"",attrs:{to:{path:t.path,query:t.query,fullPath:t.fullPath},tag:"span"},nativeOn:{mouseup:function(n){return"button"in n&&1!==n.button?null:e.closeSelectedTag(t)},contextmenu:function(n){return n.preventDefault(),e.openMenu(t,n)}}},[e._v("\n "+e._s(e.generateTitle(t.title))+"\n "),t.meta.affix?e._e():n("span",{staticClass:"el-icon-close",on:{click:function(n){return n.preventDefault(),n.stopPropagation(),e.closeSelectedTag(t)}}})])}),1),e._v(" "),n("ul",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"contextmenu",style:{left:e.left+"px",top:e.top+"px"}},[n("li",{on:{click:function(t){return e.refreshSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.refresh")))]),e._v(" "),e.selectedTag.meta&&e.selectedTag.meta.affix?e._e():n("li",{on:{click:function(t){return e.closeSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.close")))]),e._v(" "),n("li",{on:{click:e.closeOthersTags}},[e._v(e._s(e.$t("tagsView.closeOthers")))]),e._v(" "),n("li",{on:{click:function(t){return e.closeAllTags(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.closeAll")))])])],1)},[],!1,null,"67e96c42",null));K.options.__file="TagsView.vue";var Q=K.exports,J={name:"AppMain",computed:{cachedViews:function(){return this.$store.state.tagsView.cachedViews},key:function(){return this.$route.fullPath}}},X=(n("Z+gY"),Object(l.a)(J,function(){var e=this.$createElement,t=this._self._c||e;return t("section",{staticClass:"app-main"},[t("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[t("keep-alive",{attrs:{include:this.cachedViews}},[t("router-view",{key:this.key})],1)],1)],1)},[],!1,null,"f852c4f2",null));X.options.__file="AppMain.vue";var ee=X.exports,te=document.body,ne={name:"Layout",components:{Navbar:T,Sidebar:$,AppMain:ee,TagsView:Q},mixins:[{watch:{$route:function(e){"mobile"===this.device&&this.sidebar.opened&&Rt.dispatch("closeSideBar",{withoutAnimation:!1})}},beforeMount:function(){window.addEventListener("resize",this.resizeHandler)},mounted:function(){this.isMobile()&&(Rt.dispatch("toggleDevice","mobile"),Rt.dispatch("closeSideBar",{withoutAnimation:!0}))},methods:{isMobile:function(){return te.getBoundingClientRect().width-3<1024},resizeHandler:function(){if(!document.hidden){var e=this.isMobile();Rt.dispatch("toggleDevice",e?"mobile":"desktop"),e&&Rt.dispatch("closeSideBar",{withoutAnimation:!0})}}}}],computed:{sidebar:function(){return this.$store.state.app.sidebar},device:function(){return this.$store.state.app.device},classObj:function(){return{hideSidebar:!this.sidebar.opened,openSidebar:this.sidebar.opened,withoutAnimation:this.sidebar.withoutAnimation,mobile:"mobile"===this.device}}},methods:{handleClickOutside:function(){this.$store.dispatch("closeSideBar",{withoutAnimation:!1})}}},ae=(n("SZWj"),Object(l.a)(ne,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"app-wrapper",class:e.classObj},["mobile"===e.device&&e.sidebar.opened?n("div",{staticClass:"drawer-bg",on:{click:e.handleClickOutside}}):e._e(),e._v(" "),n("sidebar",{staticClass:"sidebar-container"}),e._v(" "),n("div",{staticClass:"main-container"},[n("navbar"),e._v(" "),n("app-main")],1)],1)},[],!1,null,"767d264f",null));ae.options.__file="Layout.vue";var re=ae.exports;r.default.use(w.a);var ie=[{path:"/redirect",component:re,hidden:!0,children:[{path:"/redirect/:path*",component:function(){return n.e("7zzA").then(n.bind(null,"7zzA"))}}]},{path:"/login",component:function(){return n.e("chunk-8b70").then(n.bind(null,"ntYl"))},hidden:!0},{path:"/auth-redirect",component:function(){return n.e("JEtC").then(n.bind(null,"JEtC"))},hidden:!0},{path:"/404",component:function(){return n.e("chunk-2325").then(n.bind(null,"/eX4"))},hidden:!0},{path:"/401",component:function(){return n.e("chunk-18e1").then(n.bind(null,"UUO+"))},hidden:!0},{path:"",component:re,redirect:"/users/index"}],oe=new w.a({scrollBehavior:function(){return{y:0}},routes:ie}),se=[{path:"/users",component:re,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-0620"),n.e("chunk-e547")]).then(n.bind(null,"RGjw"))},name:"Users",meta:{title:"users",icon:"peoples",noCache:!0}}]},{path:"/reports",component:re,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-02a0"),n.e("chunk-1fbf")]).then(n.bind(null,"cEOe"))},name:"Reports",meta:{title:"reports",icon:"documentation",noCache:!0}}]},{path:"/settings",component:re,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-7fe2"),n.e("chunk-5e57")]).then(n.bind(null,"YcIK"))},name:"Settings",meta:{title:"settings",icon:"settings",noCache:!0}}]},{path:"/users/:id",component:re,children:[{path:"",name:"UsersShow",component:function(){return n.e("chunk-0e18").then(n.bind(null,"4bFr"))}}],hidden:!0},{path:"*",redirect:"/404",hidden:!0}];var ce={state:{routers:[],addRouters:[]},mutations:{SET_ROUTERS:function(e,t){e.addRouters=t,e.routers=ie.concat(t)}},actions:{GenerateRoutes:function(e,t){var n=e.commit;return new Promise(function(e){var a,r=t.roles;a=r.includes("admin")?se:function e(t,n){var a=[];return t.forEach(function(t){var r=v()({},t);(function(e,t){return!t.meta||!t.meta.roles||e.some(function(e){return t.meta.roles.includes(e)})})(n,r)&&(r.children&&(r.children=e(r.children,n)),a.push(r))}),a}(se,r),n("SET_ROUTERS",a),e()})}}},ue=n("o0o1"),le=n.n(ue),de=n("yXPU"),pe=n.n(de),he=n("vDqi"),me=n.n(he).a.create({timeout:5e3});me.interceptors.response.use(function(e){return e},function(e){return console.log("err"+e),Object(s.Message)({message:e.message,type:"error",duration:5e3}),Promise.reject(e)});var fe=me,ge="Admin-Token",ve="Auth-Host";function we(){return o.a.get(ge)}function be(){return o.a.remove(ge)}function ye(){return o.a.remove(ve)}var xe=function(e){return function(e){return e.startsWith("localhost:")||e.startsWith("127.0.0.1:")}(e)?"http://".concat(e):"https://".concat(e)};function _e(e,t,n,a){return Te.apply(this,arguments)}function Te(){return(Te=pe()(le.a.mark(function e(t,n,a,r){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(a),url:"/api/pleroma/admin/reports/".concat(n),method:"put",headers:Me(r),data:{state:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Se(e,t,n,a,r){return Ee.apply(this,arguments)}function Ee(){return(Ee=pe()(le.a.mark(function e(t,n,a,r,i){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(r),url:"/api/pleroma/admin/statuses/".concat(t),method:"put",headers:Me(i),data:{sensitive:n,visibility:a}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ke(e,t,n){return Ce.apply(this,arguments)}function Ce(){return(Ce=pe()(le.a.mark(function e(t,n,a){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(n),url:"/api/pleroma/admin/statuses/".concat(t),method:"delete",headers:Me(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ve(e,t,n,a){return ze.apply(this,arguments)}function ze(){return(ze=pe()(le.a.mark(function e(t,n,a,r){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(a),url:"/api/pleroma/admin/reports?limit=".concat(t,"&max_id=").concat(n),method:"get",headers:Me(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ae(e,t,n,a,r){return Le.apply(this,arguments)}function Le(){return(Le=pe()(le.a.mark(function e(t,n,a,r,i){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(r),url:"/api/pleroma/admin/reports?state=".concat(t,"&limit=").concat(n,"&max_id=").concat(a),method:"get",headers:Me(i)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Me=function(e){return e?{Authorization:"Bearer ".concat(we())}:{}},Ie={state:{fetchedReports:[],idOfLastReport:"",page_limit:5,stateFilter:"",loading:!0},mutations:{SET_LAST_REPORT_ID:function(e,t){e.idOfLastReport=t},SET_LOADING:function(e,t){e.loading=t},SET_REPORTS:function(e,t){e.fetchedReports=t},SET_REPORTS_FILTER:function(e,t){e.stateFilter=t}},actions:{ChangeReportState:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s,c,u,l;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=t.state,o=n.reportState,s=n.reportId,e.next=4,_e(o,s,r.authHost,r.token);case 4:c=e.sent,u=c.data,l=i.fetchedReports.map(function(e){return e.id===s?u:e}),a("SET_REPORTS",l);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ChangeStatusScope:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s,c,u,l,d,p;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=t.state,o=n.statusId,s=n.isSensitive,c=n.visibility,u=n.reportId,e.next=4,Se(o,s,c,r.authHost,r.token);case 4:l=e.sent,d=l.data,p=i.fetchedReports.map(function(e){if(e.id===u){var t=e.statuses.map(function(e){return e.id===o?d:e});return v()({},e,{statuses:t})}return e}),a("SET_REPORTS",p);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearFetchedReports:function(e){var t=e.commit;t("SET_REPORTS",[]),t("SET_LAST_REPORT_ID","")},DeleteStatus:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s,c;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.getters,i=t.state,o=n.statusId,s=n.reportId,ke(o,r.authHost,r.token),c=i.fetchedReports.map(function(e){if(e.id===s){var t=e.statuses.filter(function(e){return e.id!==o});return v()({},e,{statuses:t})}return e}),a("SET_REPORTS",c);case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchReports:function(){var e=pe()(le.a.mark(function e(t){var n,a,r,i,o,s;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.commit,a=t.getters,r=t.state,n("SET_LOADING",!0),0!==r.stateFilter.length){e.next=8;break}return e.next=5,Ve(r.page_limit,r.idOfLastReport,a.authHost,a.token);case 5:e.t0=e.sent,e.next=11;break;case 8:return e.next=10,Ae(r.stateFilter,r.page_limit,r.idOfLastReport,a.authHost,a.token);case 10:e.t0=e.sent;case 11:i=e.t0,o=r.fetchedReports.concat(i.data.reports),s=o.length>0?o[o.length-1].id:r.idOfLastReport,n("SET_REPORTS",o),n("SET_LAST_REPORT_ID",s),n("SET_LOADING",!1);case 17:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SetFilter:function(e,t){(0,e.commit)("SET_REPORTS_FILTER",t)}}},Pe=n("lSNA"),He=n.n(Pe);function Be(e,t){return Re.apply(this,arguments)}function Re(){return(Re=pe()(le.a.mark(function e(t,n){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(t),url:"/api/pleroma/admin/config",method:"get",headers:je(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function De(e,t,n){return Oe.apply(this,arguments)}function Oe(){return(Oe=pe()(le.a.mark(function e(t,n,a){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(n),url:"/api/pleroma/admin/config",method:"post",headers:je(a),data:{configs:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ue(e,t,n){return Fe.apply(this,arguments)}function Fe(){return(Fe=pe()(le.a.mark(function e(t,n,a){var r;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(r=new FormData).append("file",t),e.next=4,fe({baseURL:xe(n),url:"/api/v1/media",method:"post",headers:je(a),data:r});case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}var je=function(e){return e?{Authorization:"Bearer ".concat(we())}:{}},Ne=[{group:"pleroma",key:":instance",value:[{tuple:[":name","Pleroma"]},{tuple:[":email","example@example.com"]},{tuple:[":notify_email","noreply@example.com"]},{tuple:[":description","A Pleroma instance, an alternative fediverse server"]},{tuple:[":limit",5e3]},{tuple:[":remote_limit",1e5]},{tuple:[":upload_limit",16777216]},{tuple:[":avatar_upload_limit",2097152]},{tuple:[":background_upload_limit",4194304]},{tuple:[":banner_upload_limit",4194304]},{tuple:[":poll_limits",[{tuple:[":max_options",20]},{tuple:[":max_option_chars",200]},{tuple:[":min_expiration",0]},{tuple:[":max_expiration",31536e3]}]]},{tuple:[":registrations_open",!0]},{tuple:[":invites_enabled",!1]},{tuple:[":account_activation_required",!1]},{tuple:[":federating",!0]},{tuple:[":federation_reachability_timeout_days",7]},{tuple:[":federation_publisher_modules",["Pleroma.Web.ActivityPub.Publisher","Pleroma.Web.Websub","Pleroma.Web.Salmon"]]},{tuple:[":allow_relay",!0]},{tuple:[":rewrite_policy","Pleroma.Web.ActivityPub.MRF.NoOpPolicy"]},{tuple:[":public",!0]},{tuple:[":managed_config",!0]},{tuple:[":static_dir","instance/static/"]},{tuple:[":allowed_post_formats",["text/plain","text/html","text/markdown","text/bbcode"]]},{tuple:[":mrf_transparency",!0]},{tuple:[":extended_nickname_format",!1]},{tuple:[":max_pinned_statuses",1]},{tuple:[":no_attachment_links",!1]},{tuple:[":max_report_comment_size",1e3]},{tuple:[":safe_dm_mentions",!1]},{tuple:[":healthcheck",!1]},{tuple:[":remote_post_retention_days",90]},{tuple:[":skip_thread_containment",!0]},{tuple:[":limit_to_local_content",":unauthenticated"]},{tuple:[":dynamic_configuration",!0]}]},{group:"mime",key:":types",value:{"application/activity+json":["activity+json"],"application/jrd+json":["jrd+json"],"application/ld+json":["activity+json"],"application/xml":["xml"],"application/xrd+xml":["xrd+xml"]}},{group:"cors_plug",key:":max_age",value:86400},{group:"cors_plug",key:":methods",value:["POST","PUT","DELETE","GET","PATCH","OPTIONS"]},{group:"cors_plug",key:":expose",value:["Link","X-RateLimit-Reset","X-RateLimit-Limit","X-RateLimit-Remaining","X-Request-Id","Idempotency-Key"]},{group:"cors_plug",key:":credentials",value:!0},{group:"cors_plug",key:":headers",value:["Authorization","Content-Type","Idempotency-Key"]},{group:"tesla",key:":adapter",value:"Tesla.Adapter.Hackney"},{group:"pleroma",key:":markup",value:[{tuple:[":allow_inline_images",!0]},{tuple:[":allow_headings",!1]},{tuple:[":allow_tables",!1]},{tuple:[":allow_fonts",!1]},{tuple:[":scrub_policy",["Pleroma.HTML.Transform.MediaProxy","Pleroma.HTML.Scrubber.Default"]]}]}],$e=n("QILm"),Ye=n.n($e);function Ge(e){var t=function(e,t){if("object"!==V()(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,t||"default");if("object"!==V()(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===V()(t)?t:String(t)}var We=["replace","match_actor",":replace",":match_actor"],qe={cors_plug:["credentials","expose","headers","max_age","methods"],esshd:["enabled","handler","password_authenticator","port","priv_dir"],logger:["backends","console","ex_syslogger"],mime:["types"],phoenix:["format_encoders"],pleroma:["Pleroma.Captcha","Pleroma.Captcha.Kocaptcha","Pleroma.Emails.Mailer","Pleroma.Repo","Pleroma.ScheduledActivity","Pleroma.Upload","Pleroma.Upload.Filter.AnonymizeFilename","Pleroma.Upload.Filter.Mogrify","Pleroma.Uploaders.Local","Pleroma.Uploaders.MDII","Pleroma.Uploaders.S3","Pleroma.User","Pleroma.Web.Auth.Authenticator","Pleroma.Web.Endpoint","Pleroma.Web.Federator.RetryQueue","Pleroma.Web.Metadata","activitypub","admin_token","assets","auth","auto_linker","chat","database","ecto_repos","emoji","env","fetch_initial_posts","frontend_configurations","gopher","hackney_pools","http","http_security","instance","ldap","markup","media_proxy","mrf_hellthread","mrf_keyword","mrf_mention","mrf_normalize_markup","mrf_rejectnonpublic","mrf_simple","mrf_subchain","mrf_user_allowlist","oauth2","rate_limit","rich_media","suggestions","uri_schemes","user"],pleroma_job_queue:["queues"],quack:["level","meta","webhook_url"],tesla:["adapter"],ueberauth:["Ueberauth","Ueberauth.Strategy.Facebook.OAuth","Ueberauth.Strategy.Google.OAuth","Ueberauth.Strategy.Microsoft.OAuth","Ueberauth.Strategy.Twitter.OAuth"],web_push_encryption:["vapid_details"]},Ze=function(e,t){return!0===e.enabled.value?e:t.reduce(function(e,t){e[t];return Ye()(e,[t].map(Ge))},e)},Ke=function(e){return e.reduce(function(e,t){return e[t.tuple[0]]=t.tuple[1],e},{})},Qe=function(e){return Object.keys(e).map(function(t){var n=et(t),a=t.startsWith("Pleroma")||t.startsWith("Ueberauth")?t:":".concat(t),r=void 0!==e[t].value?e[t].value:Object.keys(e[t]).reduce(function(n,r){var i=e[t][r];if(""===i)return n;if(":rate_limit"===a)return[].concat(G()(n),[{tuple:[":".concat(r),i]}]);if("ip"===r){var o=i.split(".");return[].concat(G()(n),[{tuple:[":".concat(r),{tuple:o}]}])}return Array.isArray(i)||"object"!==V()(i)?[].concat(G()(n),":mrf_user_allowlist"===a?[{tuple:["".concat(r),e[t][r]]}]:[{tuple:[":".concat(r),e[t][r]]}]):We.includes(r)?[].concat(G()(n),[{tuple:[":".concat(r),Xe(i)]}]):[].concat(G()(n),[{tuple:[":".concat(r),Je(i)]}])},[]);return{group:n,key:a,value:r}})},Je=function e(t){return Object.keys(t).reduce(function(n,a){var r=t[a];if(""===r)return n;if("ip"===a){var i=r.split(".");return[].concat(G()(n),[{tuple:[":".concat(a),{tuple:i}]}])}return Array.isArray(r)||"object"!==V()(r)?[].concat(G()(n),[{tuple:[":".concat(a),t[a]]}]):[].concat(G()(n),[{tuple:[":".concat(a),e(r)]}])},[])},Xe=function(e){return Object.keys(e).reduce(function(t,n){return[].concat(G()(t),[{tuple:["".concat(n),e[n]]}])},[])},et=function(e){return Object.keys(qe).find(function(t){return qe[t].includes(e)})},tt={state:{settings:{activitypub:{},adapter:{},admin_token:{},assets:{mascots:{}},auth:{},auto_linker:{opts:{}},backends:{},chat:{},console:{colors:{}},credentials:{},database:{},ecto_repos:{},emoji:{groups:{}},enabled:{},ex_syslogger:{},expose:{},fetch_initial_posts:{},format_encoders:{},frontend_configurations:{pleroma_fe:{},masto_fe:{}},gopher:{},hackney_pools:{federation:{},media:{},upload:{}},handler:{},headers:{},http:{adapter:{}},http_security:{},instance:{poll_limits:{}},level:{},ldap:{},markup:{},max_age:{},media_proxy:{proxy_opts:{}},meta:{},methods:{},mrf_hellthread:{},mrf_keyword:{replace:{}},mrf_mention:{},mrf_normalize_markup:{},mrf_rejectnonpublic:{},mrf_simple:{},mrf_subchain:{match_actor:{}},mrf_user_allowlist:{},oauth2:{},password_authenticator:{},"Pleroma.Captcha":{},"Pleroma.Captcha.Kocaptcha":{},"Pleroma.Emails.Mailer":{},"Pleroma.Repo":{},"Pleroma.ScheduledActivity":{},"Pleroma.Upload":{proxy_opts:{}},"Pleroma.Upload.Filter.AnonymizeFilename":{},"Pleroma.Upload.Filter.Mogrify":{},"Pleroma.Uploaders.Local":{},"Pleroma.Uploaders.MDII":{},"Pleroma.Uploaders.S3":{},"Pleroma.User":{},"Pleroma.Web.Auth.Authenticator":{},"Pleroma.Web.Endpoint":{http:!1,url:{},render_errors:{},pubsub:{}},"Pleroma.Web.Federator.RetryQueue":{},"Pleroma.Web.Metadata":{},port:{},priv_dir:{},queues:{},rate_limit:{},rich_media:{},suggestions:{},types:{value:{}},Ueberauth:{},"Ueberauth.Strategy.Facebook.OAuth":{},"Ueberauth.Strategy.Google.OAuth":{},"Ueberauth.Strategy.Microsoft.OAuth":{},"Ueberauth.Strategy.Twitter.OAuth":{},user:{},uri_schemes:{},vapid_details:{},webhook_url:{}},ignoredIfNotEnabled:["enabled","handler","password_authenticator","port","priv_dir"],loading:!0},mutations:{REWRITE_CONFIG:function(e,t){var n=t.tab,a=t.data;e.settings[n]=a},SET_LOADING:function(e,t){e.loading=t},SET_SETTINGS:function(e,t){var n=t.reduce(function(e,t){var n=":"===t.key[0]?t.key.substr(1):t.key,a=function(e,t){var n=Array.isArray(t)&&t.length>0&&"object"!==V()(t[0]);return"meta"===e||"types"===e||"string"==typeof t||"number"==typeof t||"boolean"==typeof t||n}(n,t.value)?{value:t.value}:function e(t,n){return t.reduce(function(t,a){return"rate_limit"===n?t[a.tuple[0].substr(1)]=a.tuple[1]:Array.isArray(a.tuple[1])&&"object"===V()(a.tuple[1][0])&&!Array.isArray(a.tuple[1][0])&&a.tuple[1][0].tuple?We.includes(a.tuple[0])?t[a.tuple[0].substr(1)]=Ke(a.tuple[1]):t[a.tuple[0].substr(1)]=e(a.tuple[1]):a.tuple[1]&&"object"===V()(a.tuple[1])&&"tuple"in a.tuple[1]?t[a.tuple[0].substr(1)]=a.tuple[1].tuple.join("."):"mrf_user_allowlist"===n?t[a.tuple[0]]=a.tuple[1]:t[a.tuple[0].substr(1)]=a.tuple[1],t},{})}(t.value,n);return e[n]=v()({},e[n],a),e},e.settings);e.settings=n},UPDATE_SETTINGS:function(e,t){var n=t.tab,a=t.data;Object.keys(e.settings).map(function(t){t===n&&(e.settings[t]=v()({},e.settings[t],a))})}},actions:{FetchSettings:function(){var e=pe()(le.a.mark(function e(t){var n,a,r,i;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.dispatch,r=t.getters,n("SET_LOADING",!0),e.next=4,Be(r.authHost,r.token);case 4:0===(i=e.sent).data.configs.length?a("SubmitChanges",Ne):n("SET_SETTINGS",i.data.configs),n("SET_LOADING",!1);case 7:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),RewriteConfig:function(e,t){(0,e.commit)("REWRITE_CONFIG",{tab:t.tab,data:t.data})},SubmitChanges:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s,c;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=t.commit,i=t.state,o=Ze(i.settings,i.ignoredIfNotEnabled),s=n||Qe(o),e.next=5,De(s,a.authHost,a.token);case 5:c=e.sent,n&&r("SET_SETTINGS",c.data.configs);case 7:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),UpdateSettings:function(e,t){(0,e.commit)("UPDATE_SETTINGS",{tab:t.tab,data:t.data})},UploadMedia:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s,c,u,l,d;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,i=t.state,o=n.file,s=n.tab,c=n.inputName,u=n.childName,e.next=4,Ue(o,r.authHost,r.token);case 4:l=e.sent,d=v()({},i.settings[s][c],He()({},u,l.data.url)),a("UpdateSettings",{tab:s,data:He()({},c,d)});case 7:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},nt=n("J4zp"),at=n.n(nt),rt={state:{visitedViews:[],cachedViews:[]},mutations:{ADD_VISITED_VIEW:function(e,t){e.visitedViews.some(function(e){return e.path===t.path})||e.visitedViews.push(Object.assign({},t,{title:t.meta.title||"no-name"}))},ADD_CACHED_VIEW:function(e,t){e.cachedViews.includes(t.name)||t.meta.noCache||e.cachedViews.push(t.name)},DEL_VISITED_VIEW:function(e,t){var n=!0,a=!1,r=void 0;try{for(var i,o=e.visitedViews.entries()[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=at()(i.value,2),c=s[0];if(s[1].path===t.path){e.visitedViews.splice(c,1);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}},DEL_CACHED_VIEW:function(e,t){var n=!0,a=!1,r=void 0;try{for(var i,o=e.cachedViews[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(s===t.name){var c=e.cachedViews.indexOf(s);e.cachedViews.splice(c,1);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}},DEL_OTHERS_VISITED_VIEWS:function(e,t){e.visitedViews=e.visitedViews.filter(function(e){return e.meta.affix||e.path===t.path})},DEL_OTHERS_CACHED_VIEWS:function(e,t){var n=!0,a=!1,r=void 0;try{for(var i,o=e.cachedViews[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(s===t.name){var c=e.cachedViews.indexOf(s);e.cachedViews=e.cachedViews.slice(c,c+1);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}},DEL_ALL_VISITED_VIEWS:function(e){var t=e.visitedViews.filter(function(e){return e.meta.affix});e.visitedViews=t},DEL_ALL_CACHED_VIEWS:function(e){e.cachedViews=[]},UPDATE_VISITED_VIEW:function(e,t){var n=!0,a=!1,r=void 0;try{for(var i,o=e.visitedViews[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(s.path===t.path){s=Object.assign(s,t);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}}},actions:{addView:function(e,t){var n=e.dispatch;n("addVisitedView",t),n("addCachedView",t)},addVisitedView:function(e,t){(0,e.commit)("ADD_VISITED_VIEW",t)},addCachedView:function(e,t){(0,e.commit)("ADD_CACHED_VIEW",t)},delView:function(e,t){var n=e.dispatch,a=e.state;return new Promise(function(e){n("delVisitedView",t),n("delCachedView",t),e({visitedViews:G()(a.visitedViews),cachedViews:G()(a.cachedViews)})})},delVisitedView:function(e,t){var n=e.commit,a=e.state;return new Promise(function(e){n("DEL_VISITED_VIEW",t),e(G()(a.visitedViews))})},delCachedView:function(e,t){var n=e.commit,a=e.state;return new Promise(function(e){n("DEL_CACHED_VIEW",t),e(G()(a.cachedViews))})},delOthersViews:function(e,t){var n=e.dispatch,a=e.state;return new Promise(function(e){n("delOthersVisitedViews",t),n("delOthersCachedViews",t),e({visitedViews:G()(a.visitedViews),cachedViews:G()(a.cachedViews)})})},delOthersVisitedViews:function(e,t){var n=e.commit,a=e.state;return new Promise(function(e){n("DEL_OTHERS_VISITED_VIEWS",t),e(G()(a.visitedViews))})},delOthersCachedViews:function(e,t){var n=e.commit,a=e.state;return new Promise(function(e){n("DEL_OTHERS_CACHED_VIEWS",t),e(G()(a.cachedViews))})},delAllViews:function(e,t){var n=e.dispatch,a=e.state;return new Promise(function(e){n("delAllVisitedViews",t),n("delAllCachedViews",t),e({visitedViews:G()(a.visitedViews),cachedViews:G()(a.cachedViews)})})},delAllVisitedViews:function(e){var t=e.commit,n=e.state;return new Promise(function(e){t("DEL_ALL_VISITED_VIEWS"),e(G()(n.visitedViews))})},delAllCachedViews:function(e){var t=e.commit,n=e.state;return new Promise(function(e){t("DEL_ALL_CACHED_VIEWS"),e(G()(n.cachedViews))})},updateVisitedView:function(e,t){(0,e.commit)("UPDATE_VISITED_VIEW",t)}}};function it(e,t,n){return ot.apply(this,arguments)}function ot(){return(ot=pe()(le.a.mark(function e(t,n,a){var r,i;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(a),url:"/api/v1/apps",method:"post",data:{client_name:"AdminFE_".concat(Math.random()),redirect_uris:"".concat(window.location.origin,"/oauth-callback"),scopes:"read write follow"}});case 2:return r=e.sent,i=r.data,e.abrupt("return",fe({baseURL:xe(a),url:"/oauth/token",method:"post",data:{client_id:i.client_id,client_secret:i.client_secret,grant_type:"password",username:t,password:n}}));case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function st(e,t){return fe({baseURL:xe(t),url:"/api/v1/accounts/verify_credentials",method:"get",headers:e?{Authorization:"Bearer ".concat(e)}:{}})}var ct={state:{user:"",id:"",status:"",code:"",token:we(),authHost:o.a.get(ve),name:"",avatar:"",introduction:"",roles:[],setting:{articlePlatform:[]}},mutations:{SET_CODE:function(e,t){e.code=t},SET_TOKEN:function(e,t){e.token=t},SET_INTRODUCTION:function(e,t){e.introduction=t},SET_SETTING:function(e,t){e.setting=t},SET_STATUS:function(e,t){e.status=t},SET_NAME:function(e,t){e.name=t},SET_AVATAR:function(e,t){e.avatar=t},SET_ROLES:function(e,t){e.roles=t},SET_ID:function(e,t){e.id=t},SET_AUTH_HOST:function(e,t){e.authHost=t}},actions:{LoginByUsername:function(e,t){var n=e.commit,a=e.dispatch,r=t.username,i=t.authHost,s=t.password;return new Promise(function(e,t){it(r,s,i).then(function(t){var a=t.data;n("SET_TOKEN",a.access_token),n("SET_AUTH_HOST",i),function(e){o.a.set(ge,e)}(a.access_token),function(e){o.a.set(ve,e)}(i),e()}).catch(function(e){a("addErrorLog",{message:e.message}),t(e)})})},GetUserInfo:function(e){var t=e.commit,n=e.state;return new Promise(function(e,a){st(n.token,n.authHost).then(function(n){var r=n.data;r||a("Verification failed, please login again."),r.pleroma&&r.pleroma.is_admin?t("SET_ROLES",["admin"]):a("getInfo: roles must be a non-null array!"),t("SET_NAME",r.username),t("SET_ID",r.id),t("SET_AVATAR",r.avatar),t("SET_INTRODUCTION",""),e(n)}).catch(function(e){a(e)})})},LogOut:function(e){var t=e.commit;t("SET_TOKEN",""),t("SET_ROLES",[]),be(),ye()},FedLogOut:function(e){var t=e.commit;return new Promise(function(e){t("SET_TOKEN",""),be(),ye(),e()})}}};function ut(e,t,n,a){return lt.apply(this,arguments)}function lt(){return(lt=pe()(le.a.mark(function e(t,n,a,r){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(a),url:"/api/pleroma/admin/users/".concat(t,"/permission_group/").concat(n),method:"post",headers:Lt(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function dt(e,t,n,a,r){return pt.apply(this,arguments)}function pt(){return(pt=pe()(le.a.mark(function e(t,n,a,r,i){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(r),url:"/api/pleroma/admin/users",method:"post",headers:Lt(i),data:{nickname:t,email:n,password:a}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ht(e,t,n,a){return mt.apply(this,arguments)}function mt(){return(mt=pe()(le.a.mark(function e(t,n,a,r){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(a),url:"/api/pleroma/admin/users/".concat(t,"/permission_group/").concat(n),method:"delete",headers:Lt(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ft(e,t,n){return gt.apply(this,arguments)}function gt(){return(gt=pe()(le.a.mark(function e(t,n,a){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(n),url:"/api/pleroma/admin/users?nickname=".concat(t),method:"delete",headers:Lt(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function vt(e,t,n){return wt.apply(this,arguments)}function wt(){return(wt=pe()(le.a.mark(function e(t,n,a){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(n),url:"/api/pleroma/admin/users/".concat(t),method:"get",headers:Lt(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function bt(e,t,n){return yt.apply(this,arguments)}function yt(){return(yt=pe()(le.a.mark(function e(t,n,a){var r,i=arguments;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=i.length>3&&void 0!==i[3]?i[3]:1,e.next=3,fe({baseURL:xe(n),url:"/api/pleroma/admin/users?page=".concat(r,"&filters=").concat(t),method:"get",headers:Lt(a)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function xt(e,t,n,a){return _t.apply(this,arguments)}function _t(){return(_t=pe()(le.a.mark(function e(t,n,a,r){var i,o=arguments;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=o.length>4&&void 0!==o[4]?o[4]:1,e.next=3,fe({baseURL:xe(a),url:"/api/pleroma/admin/users?query=".concat(t,"&page=").concat(i,"&filters=").concat(n),method:"get",headers:Lt(r)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Tt(e,t,n,a){return St.apply(this,arguments)}function St(){return(St=pe()(le.a.mark(function e(t,n,a,r){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(a),url:"/api/pleroma/admin/users/tag",method:"put",headers:Lt(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Et(e,t,n){return kt.apply(this,arguments)}function kt(){return(kt=pe()(le.a.mark(function e(t,n,a){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(n),url:"/api/pleroma/admin/users/".concat(t,"/toggle_activation"),method:"patch",headers:Lt(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ct(e,t,n,a){return Vt.apply(this,arguments)}function Vt(){return(Vt=pe()(le.a.mark(function e(t,n,a,r){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(a),url:"/api/pleroma/admin/users/tag",method:"delete",headers:Lt(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function zt(e,t,n,a){return At.apply(this,arguments)}function At(){return(At=pe()(le.a.mark(function e(t,n,a,r){return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fe({baseURL:xe(n),url:"/api/pleroma/admin/users/".concat(t,"/statuses?godmode=").concat(a),method:"get",headers:Lt(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Lt=function(e){return e?{Authorization:"Bearer ".concat(we())}:{}},Mt={state:{user:{},loading:!0,statuses:[]},mutations:{SET_USER:function(e,t){e.user=t},SET_LOADING:function(e,t){e.loading=t},SET_STATUSES:function(e,t){e.statuses=t}},actions:{FetchData:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s,c,u,l;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=n.id,o=n.godmode,a("SET_LOADING",!0),e.next=5,Promise.all([vt(i,r.authHost,r.token),zt(i,r.authHost,o,r.token)]);case 5:s=e.sent,c=at()(s,2),u=c[0],l=c[1],a("SET_USER",u.data),a("SET_STATUSES",l.data),a("SET_LOADING",!1);case 12:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},It={state:{fetchedUsers:[],loading:!0,searchQuery:"",totalUsersCount:0,currentPage:1,filters:{local:!1,external:!1,active:!1,deactivated:!1}},mutations:{SET_USERS:function(e,t){e.fetchedUsers=t},SET_LOADING:function(e,t){e.loading=t},SWAP_USER:function(e,t){var n=e.fetchedUsers.map(function(e){return e.id===t.id?t:e});e.fetchedUsers=n.sort(function(e,t){return e.nickname.localeCompare(t.nickname)})},SWAP_USERS:function(e,t){var n=t.reduce(function(e,t){return e.filter(function(e){return e.id!==t.id})},e.fetchedUsers);e.fetchedUsers=[].concat(G()(n),G()(t)).sort(function(e,t){return e.nickname.localeCompare(t.nickname)})},SET_COUNT:function(e,t){e.totalUsersCount=t},SET_PAGE:function(e,t){e.currentPage=t},SET_PAGE_SIZE:function(e,t){e.pageSize=t},SET_SEARCH_QUERY:function(e,t){e.searchQuery=t},SET_USERS_FILTERS:function(e,t){e.filters=t},SET_USER_PROFILE:function(e,t){e.userProfile=t}},actions:{AddTag:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=n.users,o=n.tag,s=i.map(function(e){return e.nickname}),e.next=5,Tt(s,[o],r.authHost,r.token);case 5:a("SWAP_USERS",i.map(function(e){return v()({},e,{tags:[].concat(G()(e.tags),[o])})}));case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearFilters:function(){var e=pe()(le.a.mark(function e(t){var n,a,r;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=t.commit,a=t.dispatch,r=t.state,n("CLEAR_USERS_FILTERS"),a("SearchUsers",{query:r.searchQuery,page:1});case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),CreateNewAccount:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s,c;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,i=t.state,o=n.nickname,s=n.email,c=n.password,e.next=4,dt(o,s,c,r.authHost,r.token);case 4:a("FetchUsers",{page:i.currentPage});case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DeleteUser:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s,c;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=t.state,e.next=3,ft(n.nickname,r.authHost,r.token);case 3:o=e.sent,s=o.data,c=i.fetchedUsers.filter(function(e){return e.nickname!==s}),a("SET_USERS",c);case 7:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchUsers:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s,c;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.state,i=t.getters,o=n.page,a("SET_LOADING",!0),s=Object.keys(r.filters).filter(function(e){return r.filters[e]}).join(),e.next=6,bt(s,i.authHost,i.token,o);case 6:c=e.sent,Pt(a,o,c.data);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),RemoveTag:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=n.users,o=n.tag,s=i.map(function(e){return e.nickname}),e.next=5,Ct(s,[o],r.authHost,r.token);case 5:a("SWAP_USERS",i.map(function(e){return v()({},e,{tags:e.tags.filter(function(e){return e!==o})})}));case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SearchUsers:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s,c,u,l;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.commit,r=t.dispatch,i=t.state,o=t.getters,s=n.query,c=n.page,0!==s.length){e.next=7;break}a("SET_SEARCH_QUERY",s),r("FetchUsers",{page:c}),e.next=14;break;case 7:return a("SET_LOADING",!0),a("SET_SEARCH_QUERY",s),u=Object.keys(i.filters).filter(function(e){return i.filters[e]}).join(),e.next=12,xt(s,u,o.authHost,o.token,c);case 12:l=e.sent,Pt(a,c,l.data);case 14:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ToggleUserActivation:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,e.next=3,Et(n,r.authHost,r.token);case 3:i=e.sent,o=i.data,a("SWAP_USER",o);case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ToggleUsersFilter:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.dispatch,i=t.state,o={local:!1,external:!1,active:!1,deactivated:!1},s=v()({},o,n),a("SET_USERS_FILTERS",s),r("SearchUsers",{query:i.searchQuery,page:1});case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ToggleRight:function(){var e=pe()(le.a.mark(function e(t,n){var a,r,i,o,s;return le.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.commit,r=t.getters,i=n.user,o=n.right,!i.roles[o]){e.next=7;break}return e.next=5,ht(i.nickname,o,r.authHost,r.token);case 5:e.next=9;break;case 7:return e.next=9,ut(i.nickname,o,r.authHost,r.token);case 9:s=v()({},i,{roles:v()({},i.roles,He()({},o,!i.roles[o]))}),a("SWAP_USER",s);case 11:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},Pt=function(e,t,n){var a=n.users,r=n.count,i=n.page_size;e("SET_USERS",a),e("SET_COUNT",r),e("SET_PAGE",t),e("SET_PAGE_SIZE",i),e("SET_LOADING",!1)},Ht=It,Bt={sidebar:function(e){return e.app.sidebar},language:function(e){return e.app.language},size:function(e){return e.app.size},device:function(e){return e.app.device},visitedViews:function(e){return e.tagsView.visitedViews},cachedViews:function(e){return e.tagsView.cachedViews},token:function(e){return e.user.token},avatar:function(e){return e.user.avatar},name:function(e){return e.user.name},introduction:function(e){return e.user.introduction},status:function(e){return e.user.status},roles:function(e){return e.user.roles},setting:function(e){return e.user.setting},permission_routers:function(e){return e.permission.routers},addRouters:function(e){return e.permission.addRouters},errorLogs:function(e){return e.errorLog.logs},users:function(e){return e.users.fetchedUsers},authHost:function(e){return e.user.authHost},activityPubConfig:function(e){return e.settings.settings.activitypub},adminTokenConfig:function(e){return e.settings.settings.admin_token},assetsConfig:function(e){return e.settings.settings.assets},authConfig:function(e){return e.settings.settings.auth},autoLinkerConfig:function(e){return e.settings.settings.auto_linker},captchaConfig:function(e){return e.settings.settings["Pleroma.Captcha"]},chatConfig:function(e){return e.settings.settings.chat},consoleConfig:function(e){return e.settings.settings.console},corsPlugCredentials:function(e){return e.settings.settings.credentials},corsPlugExposeConfig:function(e){return e.settings.settings.expose},corsPlugHeaders:function(e){return e.settings.settings.headers},corsPlugMaxAge:function(e){return e.settings.settings.max_age},corsPlugMethods:function(e){return e.settings.settings.methods},databaseConfig:function(e){return e.settings.settings.database},ectoReposConfig:function(e){return e.settings.settings.ecto_repos},emojiConfig:function(e){return e.settings.settings.emoji},enabledConfig:function(e){return e.settings.settings.enabled},endpointConfig:function(e){return e.settings.settings["Pleroma.Web.Endpoint"]},exsysloggerConfig:function(e){return e.settings.settings.ex_syslogger},facebookConfig:function(e){return e.settings.settings["Ueberauth.Strategy.Facebook.OAuth"]},fetchInitialPostsConfig:function(e){return e.settings.settings.fetch_initial_posts},formatEncodersConfig:function(e){return e.settings.settings.format_encoders},frontendConfig:function(e){return e.settings.settings.frontend_configurations},googleConfig:function(e){return e.settings.settings["Ueberauth.Strategy.Google.OAuth"]},gopherConfig:function(e){return e.settings.settings.gopher},hackneyPoolsConfig:function(e){return e.settings.settings.hackney_pools},handlerConfig:function(e){return e.settings.settings.handler},httpConfig:function(e){return e.settings.settings.http},httpSecurityConfig:function(e){return e.settings.settings.http_security},instanceConfig:function(e){return e.settings.settings.instance},kocaptchaConfig:function(e){return e.settings.settings["Pleroma.Captcha.Kocaptcha"]},levelConfig:function(e){return e.settings.settings.level},ldapConfig:function(e){return e.settings.settings.ldap},loggerBackendsConfig:function(e){return e.settings.settings.backends},mailerConfig:function(e){return e.settings.settings["Pleroma.Emails.Mailer"]},markupConfig:function(e){return e.settings.settings.markup},mediaProxyConfig:function(e){return e.settings.settings.media_proxy},metaConfig:function(e){return e.settings.settings.meta},metadataConfig:function(e){return e.settings.settings["Pleroma.Web.Metadata"]},microsoftConfig:function(e){return e.settings.settings["Ueberauth.Strategy.Microsoft.OAuth"]},mimeTypesConfig:function(e){return e.settings.settings.types},mrfHellthreadConfig:function(e){return e.settings.settings.mrf_hellthread},mrfKeywordConfig:function(e){return e.settings.settings.mrf_keyword},mrfMentionConfig:function(e){return e.settings.settings.mrf_mention},mrfNormalizeMarkupConfig:function(e){return e.settings.settings.mrf_normalize_markup},mrfRejectnonpublicConfig:function(e){return e.settings.settings.mrf_rejectnonpublic},mrfSimpleConfig:function(e){return e.settings.settings.mrf_simple},mrfSubchainConfig:function(e){return e.settings.settings.mrf_subchain},mrfUserAllowlistConfig:function(e){return e.settings.settings.mrf_user_allowlist},oauth2Config:function(e){return e.settings.settings.oauth2},passwordAuthenticatorConfig:function(e){return e.settings.settings.password_authenticator},pleromaAuthenticatorConfig:function(e){return e.settings.settings["Pleroma.Web.Auth.Authenticator"]},pleromaRepoConfig:function(e){return e.settings.settings["Pleroma.Repo"]},pleromaUserConfig:function(e){return e.settings.settings["Pleroma.User"]},portConfig:function(e){return e.settings.settings.port},privDirConfig:function(e){return e.settings.settings.priv_dir},queuesConfig:function(e){return e.settings.settings.queues},rateLimitersConfig:function(e){return e.settings.settings.rate_limit},retryQueueConfig:function(e){return e.settings.settings["Pleroma.Web.Federator.RetryQueue"]},richMediaConfig:function(e){return e.settings.settings.rich_media},suggestionsConfig:function(e){return e.settings.settings.suggestions},scheduledActivityConfig:function(e){return e.settings.settings["Pleroma.ScheduledActivity"]},teslaAdapterConfig:function(e){return e.settings.settings.adapter},twitterConfig:function(e){return e.settings.settings["Ueberauth.Strategy.Twitter.OAuth"]},ueberauthConfig:function(e){return e.settings.settings.Ueberauth},uploadAnonymizeFilenameConfig:function(e){return e.settings.settings["Pleroma.Upload.Filter.AnonymizeFilename"]},uploadConfig:function(e){return e.settings.settings["Pleroma.Upload"]},uploadFilterMogrifyConfig:function(e){return e.settings.settings["Pleroma.Upload.Filter.Mogrify"]},uploadersLocalConfig:function(e){return e.settings.settings["Pleroma.Uploaders.Local"]},uploadMDIIConfig:function(e){return e.settings.settings["Pleroma.Uploaders.MDII"]},uploadS3Config:function(e){return e.settings.settings["Pleroma.Uploaders.S3"]},uriSchemesConfig:function(e){return e.settings.settings.uri_schemes},userConfig:function(e){return e.settings.settings.user},vapidDetailsConfig:function(e){return e.settings.settings.vapid_details},webhookUrlConfig:function(e){return e.settings.settings.webhook_url}};r.default.use(h.a);var Rt=new h.a.Store({modules:{app:m,errorLog:f,permission:ce,reports:Ie,settings:tt,tagsView:rt,user:ct,userProfile:Mt,users:Ht},getters:Bt}),Dt=n("mSNy"),Ot=n("wAo7");r.default.component("svg-icon",Ot.a);!function(e){e.keys().map(e)}(n("Uf/o")),r.default.config.errorHandler=function(e,t,n,a){r.default.nextTick(function(){Rt.dispatch("addErrorLog",{err:e,vm:t,info:n,url:window.location.href}),console.error(e,n)})};var Ut=n("Mj6V"),Ft=n.n(Ut);n("pdi6");Ft.a.configure({showSpinner:!1});var jt=["/login","/auth-redirect"];function Nt(e,t){return 1===e?e+t:e+t+"s"}function $t(e){var t=Date.now()/1e3-Number(e);return t<3600?Nt(~~(t/60)," minute"):t<86400?Nt(~~(t/3600)," hour"):Nt(~~(t/86400)," day")}function Yt(e,t){for(var n=[{value:1e18,symbol:"E"},{value:1e15,symbol:"P"},{value:1e12,symbol:"T"},{value:1e9,symbol:"G"},{value:1e6,symbol:"M"},{value:1e3,symbol:"k"}],a=0;a=n[a].value)return(e/n[a].value+.1).toFixed(t).replace(/\.0+$|(\.[0-9]*[1-9])0+$/,"$1")+n[a].symbol;return e.toString()}function Gt(e){return(+e||0).toString().replace(/^-?\d+/g,function(e){return e.replace(/(?=(?!\b)(\d{3})+$)/g,",")})}oe.beforeEach(function(e,t,n){Ft.a.start(),we()?"/login"===e.path?(n({path:"/"}),Ft.a.done()):0===Rt.getters.roles.length?Rt.dispatch("GetUserInfo").then(function(t){var a=t.data.pleroma.is_admin?["admin"]:[];Rt.dispatch("GenerateRoutes",{roles:a}).then(function(){oe.addRoutes(Rt.getters.addRouters),n(v()({},e,{replace:!0}))})}).catch(function(e){Rt.dispatch("FedLogOut").then(function(){s.Message.error(e),n({path:"/"})})}):function(e,t){return e.indexOf("admin")>=0||!t||e.some(function(e){return t.indexOf(e)>=0})}(Rt.getters.roles,e.meta.roles)?n():n({path:"/401",replace:!0,query:{noGoBack:!0}}):-1!==jt.indexOf(e.path)?n():(n("/login?redirect=".concat(e.path)),Ft.a.done())}),oe.afterEach(function(){Ft.a.done()}),r.default.use(c.a,{size:o.a.get("size")||"medium",i18n:function(e,t){return Dt.a.t(e,t)}}),Object.keys(a).forEach(function(e){r.default.filter(e,a[e])}),r.default.config.productionTip=!1,new r.default({el:"#app",router:oe,store:Rt,i18n:Dt.a,render:function(e){return e(p)}})},Xm3t:function(e,t,n){},Yymj:function(e,t,n){"use strict";var a=n("jf83");n.n(a).a},"Z+gY":function(e,t,n){"use strict";var a=n("Kcm3");n.n(a).a},ZZmv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-excel",use:"icon-excel-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},ZoO1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-guide",use:"icon-guide-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},bndD:function(e,t,n){"use strict";var a=n("y+Q6");n.n(a).a},cIpu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-star",use:"icon-star-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},gNoN:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-wechat",use:"icon-wechat-usage",viewBox:"0 0 128 110",content:''});o.a.add(s);t.default=s},hkRB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-size",use:"icon-size-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},iqZD:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-zip",use:"icon-zip-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},j7e1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-tab",use:"icon-tab-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},jf83:function(e,t,n){},jo2x:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-search",use:"icon-search-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},k80C:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-tree",use:"icon-tree-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},kPu2:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-documentation",use:"icon-documentation-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},krgV:function(e,t,n){"use strict";var a=n("RVVg");n.n(a).a},"m7++":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-drag",use:"icon-drag-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},mSHS:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-fullscreen",use:"icon-fullscreen-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},mSNy:function(e,t,n){"use strict";var a=n("MVZn"),r=n.n(a),i=n("Kw5r"),o=n("qSUR"),s=n("p46w"),c=n.n(s),u=n("stYL"),l=n.n(u),d=n("8NkQ"),p=n.n(d),h=n("PtZe"),m=n.n(h);i.default.use(o.a);var f={en:r()({},{route:{dashboard:"Dashboard",introduction:"Introduction",documentation:"Documentation",guide:"Guide",permission:"Permission",pagePermission:"Page Permission",directivePermission:"Directive Permission",icons:"Icons",components:"Components",componentIndex:"Introduction",tinymce:"Tinymce",markdown:"Markdown",jsonEditor:"JSON Editor",dndList:"Dnd List",splitPane:"SplitPane",avatarUpload:"Avatar Upload",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"BackToTop",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Charts",keyboardChart:"Keyboard Chart",lineChart:"Line Chart",mixChart:"Mix Chart",example:"Example",nested:"Nested Routes",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",Table:"Table",dynamicTable:"Dynamic Table",dragTable:"Drag Table",inlineEditTable:"Inline Edit",complexTable:"Complex Table",treeTable:"Tree Table",customTreeTable:"Custom TreeTable",tab:"Tab",form:"Form",createArticle:"Create Article",editArticle:"Edit Article",articleList:"Article List",errorPages:"Error Pages",page401:"401",page404:"404",errorLog:"Error Log",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"Theme",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"External Link",users:"Users",reports:"Reports",settings:"Settings"},navbar:{logOut:"Log Out",dashboard:"Dashboard",github:"Github",theme:"Theme",size:"Global Size"},login:{title:"Login Form",logIn:"Log in",username:"Username@Host",password:"Password",errorMessage:"Username must contain username and host, e.g. john@pleroma.social",any:"any",thirdparty:"Or connect with",thirdpartyTips:"Can not be simulated on local, so please combine you own business simulation! ! !"},documentation:{documentation:"Documentation",github:"Github Repository"},permission:{roles:"Your roles",switchRoles:"Switch roles",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if."},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Show Guide"},components:{documentation:"Documentation",tinymceTips:"Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"The default order",dragTips2:"The after dragging order",title:"Title",importance:"Imp",type:"Type",remark:"Remark",search:"Search",add:"Add",export:"Export",reviewer:"reviewer",id:"ID",date:"Date",author:"Author",readings:"Readings",status:"Status",actions:"Actions",edit:"Edit",publish:"Publish",draft:"Draft",delete:"Delete",cancel:"Cancel",confirm:"Confirm"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Document introduction"},excel:{export:"Export",selectedExport:"Export Selected Items",placeholder:"Please enter the file name(default excel-list)"},zip:{export:"Export",placeholder:"Please enter the file name(default file)"},pdf:{tips:"Here we use window.print() to implement the feature of downloading pdf."},theme:{change:"Change Theme",documentation:"Theme documentation",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Refresh",close:"Close",closeOthers:"Close Others",closeAll:"Close All"},users:{users:"Users",localUsersOnly:"Local users only",search:"Search",id:"ID",name:"Name",status:"Status",local:"local",external:"external",deactivated:"deactivated",active:"active",actions:"Actions",activate:"Activate",deactivate:"Deactivate",admin:"admin",moderator:"moderator",moderation:"Moderation",revokeAdmin:"Revoke Admin",grantAdmin:"Grant Admin",revokeModerator:"Revoke Moderator",grantModerator:"Grant Moderator",activateAccount:"Activate Account",activateAccounts:"Activate Accounts",deactivateAccount:"Deactivate Account",deactivateAccounts:"Deactivate Accounts",deleteAccount:"Delete Account",deleteAccounts:"Delete Accounts",forceNsfw:"Force posts to be NSFW",stripMedia:"Force posts not to have media",forceUnlisted:"Force posts to be unlisted",sandbox:"Force posts to be followers-only",disableRemoteSubscription:"Disallow following user from remote instances",disableRemoteSubscriptionForMultiple:"Disallow following users from remote instances",disableAnySubscription:"Disallow following user at all",disableAnySubscriptionForMultiple:"Disallow following users at all",selectUsers:"Select users to apply actions to multiple users",moderateUsers:"Moderate multiple users",createAccount:"Create new user account",apply:"apply",remove:"remove",grantRightConfirmation:"Are you sure you want to grant {right} rights to all selected users?",revokeRightConfirmation:"Are you sure you want to revoke {right} rights from all selected users?",activateMultipleUsersConfirmation:"Are you sure you want to activate accounts of all selected users?",deactivateMultipleUsersConfirmation:"Are you sure you want to deactivate accounts of all selected users?",deleteMultipleUsersConfirmation:"Are you sure you want to delete accounts of all selected users?",addTagForMultipleUsersConfirmation:"Are you sure you want to apply tag to all selected users?",removeTagFromMultipleUsersConfirmation:"Are you sure you want to remove tag from all selected users?",ok:"Okay",completed:"Completed",cancel:"Cancel",canceled:"Canceled",username:"Username",email:"E-mail",password:"Password",create:"Create",submitFormError:"There are errors on the form. Please fix them before continuing.",emptyEmailError:"Please input the e-mail",invalidEmailError:"Please input valid e-mail",emptyPasswordError:"Please input the password",emptyNicknameError:"Please input the username",invalidNicknameError:'Username can include "a-z", "A-Z" and "0-9" characters'},userProfile:{tags:"Tags",moderator:"Moderator",admin:"Admin",local:"Local",nickname:"Nickname",deactivated:"Deactivated",recentStatuses:"Recent Statues",showPrivateStatuses:"Show private statuses"},usersFilter:{inputPlaceholder:"Select filter",byUserType:"By user type",local:"Local",external:"External",byStatus:"By status",active:"Active",deactivated:"Deactivated"},reports:{reports:"Reports",reply:"Reply",from:"From",showNotes:"Show notes",newNote:"New note",submit:"Submit",confirmMsg:"Are you sure you want to delete this note?",delete:"Delete",cancel:"Cancel",deleteCompleted:"Delete comleted",deleteCanceled:"Delete canceled",noNotes:"No notes to display",changeState:"Change report state",changeScope:"Change scope",moderateUser:"Moderate user",resolve:"Resolve",reopen:"Reopen",close:"Close",addSensitive:"Add Sensitive flag",removeSensitive:"Remove Sensitive flag",public:"Make status public",private:"Make status private",unlisted:"Make status unlisted",sensitive:"Sensitive",deleteStatus:"Delete status"},reportsFilter:{inputPlaceholder:"Select filter",open:"Open",closed:"Closed",resolved:"Resolved"},settings:{settings:"Settings",instance:"Instance",upload:"Upload",mailer:"Mailer",logger:"Logger",activityPub:"ActivityPub",auth:"Authentication",autoLinker:"Auto Linker",captcha:"Captcha",frontend:"Frontend",http:"HTTP",mrf:"MRF",mediaProxy:"Media Proxy",metadata:"Metadata",gopher:"Gopher",endpoint:"Endpoint",jobQueue:"Job queue",webPush:"Web push encryption",esshd:"BBS / SSH access",rateLimiters:"Rate limiters",database:"Database",other:"Other",success:"Settings changed successfully!"}},l.a),zh:r()({},{route:{dashboard:"首页",introduction:"简述",documentation:"文档",guide:"引导页",permission:"权限测试页",pagePermission:"页面权限",directivePermission:"指令权限",icons:"图标",components:"组件",componentIndex:"介绍",tinymce:"富文本编辑器",markdown:"Markdown",jsonEditor:"JSON编辑器",dndList:"列表拖拽",splitPane:"Splitpane",avatarUpload:"头像上传",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"小组件",backToTop:"返回顶部",dragDialog:"拖拽 Dialog",dragSelect:"拖拽 Select",dragKanban:"可拖拽看板",charts:"图表",keyboardChart:"键盘图表",lineChart:"折线图",mixChart:"混合图表",example:"综合实例",nested:"路由嵌套",menu1:"菜单1","menu1-1":"菜单1-1","menu1-2":"菜单1-2","menu1-2-1":"菜单1-2-1","menu1-2-2":"菜单1-2-2","menu1-3":"菜单1-3",menu2:"菜单2",Table:"Table",dynamicTable:"动态Table",dragTable:"拖拽Table",inlineEditTable:"Table内编辑",complexTable:"综合Table",treeTable:"树形表格",customTreeTable:"自定义树表",tab:"Tab",form:"表单",createArticle:"创建文章",editArticle:"编辑文章",articleList:"文章列表",errorPages:"错误页面",page401:"401",page404:"404",errorLog:"错误日志",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"换肤",clipboardDemo:"Clipboard",i18n:"国际化",externalLink:"外链"},navbar:{logOut:"退出登录",dashboard:"首页",github:"项目地址",theme:"换肤",size:"布局大小"},login:{title:"系统登录",logIn:"登录",username:"账号",password:"密码",any:"随便填",thirdparty:"第三方登录",thirdpartyTips:"本地不能模拟,请结合自己业务进行模拟!!!"},documentation:{documentation:"文档",github:"Github 地址"},permission:{roles:"你的权限",switchRoles:"切换权限",tips:"在某些情况下,不适合使用 v-permission。例如:Element-UI 的 Tab 组件或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。"},guide:{description:"引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于",button:"打开引导"},components:{documentation:"文档",tinymceTips:"富文本是管理后台一个核心的功能,但同时又是一个有很多坑的地方。在选择富文本的过程中我也走了不少的弯路,市面上常见的富文本都基本用过了,最终权衡了一下选择了Tinymce。更详细的富文本比较和介绍见",dropzoneTips:"由于我司业务有特殊需求,而且要传七牛 所以没用第三方,选择了自己封装。代码非常的简单,具体代码你可以在这里看到 @/components/Dropzone",stickyTips:"当页面滚动到预设的位置会吸附在顶部",backToTopTips1:"页面滚动到指定位置会在右下角出现返回顶部按钮",backToTopTips2:"可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素",imageUploadTips:"由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。"},table:{dynamicTips1:"固定表头, 按照表头顺序排序",dynamicTips2:"不固定表头, 按照点击顺序排序",dragTips1:"默认顺序",dragTips2:"拖拽后顺序",title:"标题",importance:"重要性",type:"类型",remark:"点评",search:"搜索",add:"添加",export:"导出",reviewer:"审核人",id:"序号",date:"时间",author:"作者",readings:"阅读数",status:"状态",actions:"操作",edit:"编辑",publish:"发布",draft:"草稿",delete:"删除",cancel:"取 消",confirm:"确 定"},errorLog:{tips:"请点击右上角bug小图标",description:"现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。",documentation:"文档介绍"},excel:{export:"导出",selectedExport:"导出已选择项",placeholder:"请输入文件名(默认excel-list)"},zip:{export:"导出",placeholder:"请输入文件名(默认file)"},pdf:{tips:"这里使用 window.print() 来实现下载pdf的功能"},theme:{change:"换肤",documentation:"换肤文档",tips:"Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。"},tagsView:{refresh:"刷新",close:"关闭",closeOthers:"关闭其它",closeAll:"关闭所有"}},p.a),es:r()({},{route:{dashboard:"Panel de control",introduction:"Introducción",documentation:"Documentación",guide:"Guía",permission:"Permisos",pagePermission:"Permisos de la página",directivePermission:"Permisos de la directiva",icons:"Iconos",components:"Componentes",componentIndex:"Introducción",tinymce:"Tinymce",markdown:"Markdown",jsonEditor:"Editor JSON",dndList:"Lista Dnd",splitPane:"Panel dividido",avatarUpload:"Subir avatar",dropzone:"Subir ficheros",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"Ir arriba",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Gráficos",keyboardChart:"Keyboard Chart",lineChart:"Gráfico de líneas",mixChart:"Mix Chart",example:"Ejemplo",nested:"Rutas anidadass",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",Table:"Tabla",dynamicTable:"Tabla dinámica",dragTable:"Arrastrar tabla",inlineEditTable:"Editor",complexTable:"Complex Table",treeTable:"Tree Table",customTreeTable:"Custom TreeTable",tab:"Pestaña",form:"Formulario",createArticle:"Crear artículo",editArticle:"Editar artículo",articleList:"Listado de artículos",errorPages:"Páginas de error",page401:"401",page404:"404",errorLog:"Registro de errores",excel:"Excel",exportExcel:"Exportar a Excel",selectExcel:"Export seleccionado",uploadExcel:"Subir Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportar a Zip",theme:"Tema",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"Enlace externo"},navbar:{logOut:"Salir",dashboard:"Panel de control",github:"Github",theme:"Tema",size:"Tamaño global"},login:{title:"Formulario de acceso",logIn:"Acceso",username:"Usuario",password:"Contraseña",any:"nada",thirdparty:"Conectar con",thirdpartyTips:"No se puede simular en local, así que combine su propia simulación de negocios. ! !"},documentation:{documentation:"Documentación",github:"Repositorio Github"},permission:{roles:"Tus permisos",switchRoles:"Cambiar permisos",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if."},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Ver guía"},components:{documentation:"Documentación",tinymceTips:"Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"Orden por defecto",dragTips2:"The after dragging order",title:"Título",importance:"Importancia",type:"Tipo",remark:"Remark",search:"Buscar",add:"Añadir",export:"Exportar",reviewer:"reviewer",id:"ID",date:"Fecha",author:"Autor",readings:"Lector",status:"Estado",actions:"Acciones",edit:"Editar",publish:"Publicar",draft:"Draft",delete:"Eliminar",cancel:"Cancelar",confirm:"Confirmar"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Documento de introducción"},excel:{export:"Exportar",selectedExport:"Exportar seleccionados",placeholder:"Por favor escribe un nombre de fichero"},zip:{export:"Exportar",placeholder:"Por favor escribe un nombre de fichero"},pdf:{tips:"Here we use window.print() to implement the feature of downloading pdf."},theme:{change:"Cambiar tema",documentation:"Documentación del tema",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Actualizar",close:"Cerrar",closeOthers:"Cerrar otros",closeAll:"Cerrar todos"}},m.a)},g=new o.a({locale:c.a.get("language")||"en",messages:f});t.a=g},nZHn:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-icon",use:"icon-icon-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},oUrx:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-404",use:"icon-404-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},qkZ8:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-edit",use:"icon-edit-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},qwAt:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-lock",use:"icon-lock-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},s7Vf:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-user",use:"icon-user-usage",viewBox:"0 0 130 130",content:''});o.a.add(s);t.default=s},"sg+I":function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}},vDVG:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-clipboard",use:"icon-clipboard-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},wAo7:function(e,t,n){"use strict";var a={name:"SvgIcon",props:{iconClass:{type:String,required:!0},className:{type:String,default:""}},computed:{iconName:function(){return"#icon-".concat(this.iconClass)},svgClass:function(){return this.className?"svg-icon "+this.className:"svg-icon"}}},r=(n("bndD"),n("KHd+")),i=Object(r.a)(a,function(){var e=this.$createElement,t=this._self._c||e;return t("svg",this._g({class:this.svgClass,attrs:{"aria-hidden":"true"}},this.$listeners),[t("use",{attrs:{"xlink:href":this.iconName}})])},[],!1,null,"4e710b96",null);i.options.__file="index.vue";t.a=i.exports},"y+Q6":function(e,t,n){},y7eQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-email",use:"icon-email-usage",viewBox:"0 0 128 96",content:''});o.a.add(s);t.default=s},yCkv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-chart",use:"icon-chart-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},yDdW:function(e,t,n){},zx4i:function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}}},[["Vtdi","runtime","chunk-elementUI","chunk-libs"]]]); \ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.90c455c5.js b/priv/static/adminfe/static/js/app.90c455c5.js new file mode 100644 index 000000000..d4c607af8 --- /dev/null +++ b/priv/static/adminfe/static/js/app.90c455c5.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["app"],{"+Bsb":function(e,t,n){"use strict";var a=n("7/2J");n.n(a).a},"+aF5":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-pdf",use:"icon-pdf-usage",viewBox:"0 0 1024 1024",content:''});o.a.add(s);t.default=s},"/H2a":function(e,t,n){"use strict";var a=n("COcF");n.n(a).a},"0Fbn":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-people",use:"icon-people-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"1+ww":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-eye-open",use:"icon-eye-open-usage",viewBox:"0 0 1024 1024",content:''});o.a.add(s);t.default=s},"28eg":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-exit-fullscreen",use:"icon-exit-fullscreen-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"3PhE":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-nested",use:"icon-nested-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"5TQQ":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-theme",use:"icon-theme-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"6xvN":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-form",use:"icon-form-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"7/2J":function(e,t,n){},"86pr":function(e,t,n){},"94Jb":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-dashboard",use:"icon-dashboard-usage",viewBox:"0 0 128 100",content:''});o.a.add(s);t.default=s},"9i3r":function(e,t,n){"use strict";n.d(t,"a",function(){return a});var a=function(e){return function(e){return e.startsWith("localhost:")||e.startsWith("127.0.0.1:")}(e)?"http://".concat(e):"https://".concat(e)}},COcF:function(e,t,n){},EqXK:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-shopping",use:"icon-shopping-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},F3lI:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-bug",use:"icon-bug-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"F9+T":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-international",use:"icon-international-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},FDDl:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-qq",use:"icon-qq-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},GPBF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-link",use:"icon-link-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},ICep:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-guide 2",use:"icon-guide 2-usage",viewBox:"0 0 1000 1000",content:''});o.a.add(s);t.default=s},JYDz:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-language",use:"icon-language-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},Kcm3:function(e,t,n){},Kj24:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-password",use:"icon-password-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},LxGF:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-peoples",use:"icon-peoples-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},MEYL:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-money",use:"icon-money-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},MMMJ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-example",use:"icon-example-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},MokB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-list",use:"icon-list-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},OeYi:function(e,t,n){"use strict";var a=n("yDdW");n.n(a).a},P8iQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-settings",use:"icon-settings-usage",viewBox:"0 0 490.2 490.2",content:'\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n'});o.a.add(s);t.default=s},"R/8a":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-message",use:"icon-message-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"R/Hx":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-table",use:"icon-table-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},SZWj:function(e,t,n){"use strict";var a=n("Xm3t");n.n(a).a},TfVu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-eye",use:"icon-eye-usage",viewBox:"0 0 128 64",content:''});o.a.add(s);t.default=s},"Uf/o":function(e,t,n){var a={"./404.svg":"oUrx","./bug.svg":"F3lI","./chart.svg":"yCkv","./clipboard.svg":"vDVG","./component.svg":"VtY+","./dashboard.svg":"94Jb","./documentation.svg":"kPu2","./drag.svg":"m7++","./edit.svg":"qkZ8","./email.svg":"y7eQ","./example.svg":"MMMJ","./excel.svg":"ZZmv","./exit-fullscreen.svg":"28eg","./eye-open.svg":"1+ww","./eye.svg":"TfVu","./form.svg":"6xvN","./fullscreen.svg":"mSHS","./guide 2.svg":"ICep","./guide.svg":"ZoO1","./icon.svg":"nZHn","./international.svg":"F9+T","./language.svg":"JYDz","./link.svg":"GPBF","./list.svg":"MokB","./lock.svg":"qwAt","./message.svg":"R/8a","./money.svg":"MEYL","./nested.svg":"3PhE","./password.svg":"Kj24","./pdf.svg":"+aF5","./people.svg":"0Fbn","./peoples.svg":"LxGF","./qq.svg":"FDDl","./search.svg":"jo2x","./settings.svg":"P8iQ","./shopping.svg":"EqXK","./size.svg":"hkRB","./star.svg":"cIpu","./tab.svg":"j7e1","./table.svg":"R/Hx","./theme.svg":"5TQQ","./tree.svg":"k80C","./user.svg":"s7Vf","./wechat.svg":"gNoN","./zip.svg":"iqZD"};function r(e){var t=i(e);return n(t)}function i(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}r.keys=function(){return Object.keys(a)},r.resolve=i,e.exports=r,r.id="Uf/o"},"VtY+":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-component",use:"icon-component-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},Vtdi:function(e,t,n){"use strict";n.r(t);var a={};n.r(a),n.d(a,"parseTime",function(){return q}),n.d(a,"formatTime",function(){return K}),n.d(a,"timeAgo",function(){return gn}),n.d(a,"numberFormatter",function(){return vn}),n.d(a,"toThousandFilter",function(){return bn});var r=n("Kw5r"),i=n("p46w"),o=n.n(i),s=(n("9d8Q"),n("XJYT")),c=n.n(s),u=(n("D66Q"),n("sg+I"),{name:"App"}),l=n("KHd+"),d=Object(l.a)(u,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},[],!1,null,null,null);d.options.__file="App.vue";var p=d.exports,m=n("L2JU"),h={state:{sidebar:{opened:!o.a.get("sidebarStatus")||!!+o.a.get("sidebarStatus"),withoutAnimation:!1},device:"desktop",language:o.a.get("language")||"en",size:o.a.get("size")||"medium"},mutations:{TOGGLE_SIDEBAR:function(e){e.sidebar.opened=!e.sidebar.opened,e.sidebar.withoutAnimation=!1,e.sidebar.opened?o.a.set("sidebarStatus",1):o.a.set("sidebarStatus",0)},CLOSE_SIDEBAR:function(e,t){o.a.set("sidebarStatus",0),e.sidebar.opened=!1,e.sidebar.withoutAnimation=t},TOGGLE_DEVICE:function(e,t){e.device=t},SET_LANGUAGE:function(e,t){e.language=t,o.a.set("language",t)},SET_SIZE:function(e,t){e.size=t,o.a.set("size",t)}},actions:{toggleSideBar:function(e){(0,e.commit)("TOGGLE_SIDEBAR")},closeSideBar:function(e,t){(0,e.commit)("CLOSE_SIDEBAR",t.withoutAnimation)},toggleDevice:function(e,t){(0,e.commit)("TOGGLE_DEVICE",t)},setLanguage:function(e,t){(0,e.commit)("SET_LANGUAGE",t)},setSize:function(e,t){(0,e.commit)("SET_SIZE",t)}}},f={state:{logs:[]},mutations:{ADD_ERROR_LOG:function(e,t){e.logs.push(t)}},actions:{addErrorLog:function(e,t){(0,e.commit)("ADD_ERROR_LOG",t)}}},g=n("o0o1"),v=n.n(g),b=n("yXPU"),w=n.n(b),y=n("t3Un"),x=n("X4fA"),_=n("9i3r");function T(e,t,n,a){return k.apply(this,arguments)}function k(){return(k=w()(v.a.mark(function e(t,n,a,r){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(a),url:"/api/pleroma/admin/users/invite_token",method:"post",headers:C(r),data:n&&n.length>0?{max_use:t,expires_at:n}:{max_use:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function E(e,t,n,a){return S.apply(this,arguments)}function S(){return(S=w()(v.a.mark(function e(t,n,a,r){var i;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=n.length>0?"/api/pleroma/admin/users/email_invite?email=".concat(t,"&name=").concat(n):"/api/pleroma/admin/users/email_invite?email=".concat(t),e.next=3,Object(y.a)({baseURL:Object(_.a)(a),url:i,method:"post",headers:C(r)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function O(e,t){return A.apply(this,arguments)}function A(){return(A=w()(v.a.mark(function e(t,n){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(t),url:"/api/pleroma/admin/users/invites",method:"get",headers:C(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function L(e,t,n){return P.apply(this,arguments)}function P(){return(P=w()(v.a.mark(function e(t,n,a){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(n),url:"/api/pleroma/admin/users/revoke_invite",method:"post",headers:C(a),data:{token:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var C=function(e){return e?{Authorization:"Bearer ".concat(Object(x.b)())}:{}},V={state:{inviteTokens:[],loading:!1,newToken:{}},mutations:{SET_LOADING:function(e,t){e.loading=t},SET_NEW_TOKEN:function(e,t){e.newToken=t},SET_TOKENS:function(e,t){e.inviteTokens=t}},actions:{FetchInviteTokens:function(){var e=w()(v.a.mark(function e(t){var n,a,r;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,n("SET_LOADING",!0),e.next=4,O(a.authHost,a.token);case 4:r=e.sent,n("SET_TOKENS",r.data.invites.reverse()),n("SET_LOADING",!1);case 7:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),GenerateInviteToken:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s,c,u;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.dispatch,i=t.getters,o=n.maxUse,s=n.expiresAt,e.next=4,T(o,s,i.authHost,i.token);case 4:c=e.sent,u=c.data,a("SET_NEW_TOKEN",{token:u.token,maxUse:u.max_use,expiresAt:u.expires_at}),r("FetchInviteTokens");case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),InviteUserViaEmail:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,t.dispatch,a=t.getters,r=n.email,i=n.name,e.next=4,E(r,i,a.authHost,a.token);case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),RemoveNewToken:function(e){(0,e.commit)("SET_NEW_TOKEN",{})},RevokeToken:function(){var e=w()(v.a.mark(function e(t,n){var a,r;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,a=t.dispatch,r=t.getters,e.next=3,L(n,r.authHost,r.token);case 3:a("FetchInviteTokens");case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},z=n("MVZn"),I=n.n(z),M=n("RIqP"),R=n.n(M),D=n("jE9Z"),j={name:"Hamburger",props:{isActive:{type:Boolean,default:!1},toggleClick:{type:Function,default:null}}},U=(n("+Bsb"),Object(l.a)(j,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticStyle:{padding:"0 15px"},on:{click:this.toggleClick}},[t("svg",{staticClass:"hamburger",class:{"is-active":this.isActive},attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"64",height:"64"}},[t("path",{attrs:{d:"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z"}})])])},[],!1,null,"3ee86d44",null));U.options.__file="index.vue";var H={components:{Hamburger:U.exports},computed:I()({},Object(m.b)(["sidebar","name","avatar","device"])),methods:{toggleSideBar:function(){this.$store.dispatch("toggleSideBar")},logout:function(){this.$store.dispatch("LogOut").then(function(){location.reload()})}}},B=(n("Xb1Q"),Object(l.a)(H,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"navbar"},[n("hamburger",{staticClass:"hamburger-container",attrs:{"toggle-click":e.toggleSideBar,"is-active":e.sidebar.opened}}),e._v(" "),n("div",{staticClass:"right-menu"},[n("el-dropdown",{staticClass:"avatar-container right-menu-item hover-effect",attrs:{trigger:"click"}},[n("div",{staticClass:"avatar-wrapper"},[n("img",{staticClass:"user-avatar",attrs:{src:e.avatar+"?imageView2/1/w/80/h/80"}})]),e._v(" "),n("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[n("el-dropdown-item",[n("span",{staticStyle:{display:"block"},on:{click:e.logout}},[e._v(e._s(e.$t("navbar.logOut")))])])],1)],1)],1)],1)},[],!1,null,"b535c57a",null));B.options.__file="Navbar.vue";var F=B.exports,N=n("33yf"),G=n.n(N);function Y(e){return this.$te("route."+e)?this.$t("route."+e):e}var $=n("cDf5"),W=n.n($);function q(e,t){if(0===arguments.length)return null;var n,a=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"===W()(e)?n=e:("string"==typeof e&&/^[0-9]+$/.test(e)&&(e=parseInt(e)),"number"==typeof e&&10===e.toString().length&&(e*=1e3),n=new Date(e));var r={y:n.getFullYear(),m:n.getMonth()+1,d:n.getDate(),h:n.getHours(),i:n.getMinutes(),s:n.getSeconds(),a:n.getDay()};return a.replace(/{(y|m|d|h|i|s|a)+}/g,function(e,t){var n=r[t];return"a"===t?["日","一","二","三","四","五","六"][n]:(e.length>0&&n<10&&(n="0"+n),n||0)})}function K(e,t){e=1e3*+e;var n=new Date(e),a=(Date.now()-n)/1e3;return a<30?"刚刚":a<3600?Math.ceil(a/60)+"分钟前":a<86400?Math.ceil(a/3600)+"小时前":a<172800?"1天前":t?q(e,t):n.getMonth()+1+"月"+n.getDate()+"日"+n.getHours()+"时"+n.getMinutes()+"分"}function Z(e){return/^(https?:|mailto:|tel:)/.test(e)}var Q={name:"MenuItem",functional:!0,props:{icon:{type:String,default:""},title:{type:String,default:""}},render:function(e,t){var n=t.props,a=n.icon,r=n.title,i=[];return a&&i.push(e("svg-icon",{attrs:{"icon-class":a}})),r&&i.push(e("span",{slot:"title"},[r])),i}},J=Object(l.a)(Q,void 0,void 0,!1,null,null,null);J.options.__file="Item.vue";var X=J.exports,ee={props:{to:{type:String,required:!0}},methods:{linkProps:function(e){return Z(e)?{is:"a",href:e,target:"_blank",rel:"noopener"}:{is:"router-link",to:e}}}},te=Object(l.a)(ee,function(){var e=this.$createElement;return(this._self._c||e)("component",this._b({},"component",this.linkProps(this.to),!1),[this._t("default")],2)},[],!1,null,null,null);te.options.__file="Link.vue";var ne={name:"SidebarItem",components:{Item:X,AppLink:te.exports},mixins:[{computed:{device:function(){return this.$store.state.app.device}},mounted:function(){this.fixBugIniOS()},methods:{fixBugIniOS:function(){var e=this,t=this.$refs.subMenu;if(t){var n=t.handleMouseleave;t.handleMouseleave=function(t){"mobile"!==e.device&&n(t)}}}}}],props:{item:{type:Object,required:!0},isNest:{type:Boolean,default:!1},basePath:{type:String,default:""}},data:function(){return{onlyOneChild:null}},methods:{hasOneShowingChild:function(e,t){var n=this,a=e.filter(function(e){return!e.hidden&&(n.onlyOneChild=e,!0)});return 1===a.length||0===a.length&&(this.onlyOneChild=I()({},t,{path:"",noShowingChildren:!0}),!0)},resolvePath:function(e){return this.isExternalLink(e)?e:G.a.resolve(this.basePath,e)},isExternalLink:function(e){return Z(e)},generateTitle:Y}},ae=Object(l.a)(ne,function(){var e=this,t=e.$createElement,n=e._self._c||t;return!e.item.hidden&&e.item.children?n("div",{staticClass:"menu-wrapper"},[!e.hasOneShowingChild(e.item.children,e.item)||e.onlyOneChild.children&&!e.onlyOneChild.noShowingChildren||e.item.alwaysShow?n("el-submenu",{ref:"subMenu",attrs:{index:e.resolvePath(e.item.path)}},[n("template",{slot:"title"},[e.item.meta?n("item",{attrs:{icon:e.item.meta.icon,title:e.generateTitle(e.item.meta.title)}}):e._e()],1),e._v(" "),e._l(e.item.children,function(t){return[t.hidden?e._e():[t.children&&t.children.length>0?n("sidebar-item",{key:t.path,staticClass:"nest-menu",attrs:{"is-nest":!0,item:t,"base-path":e.resolvePath(t.path)}}):n("app-link",{key:t.name,attrs:{to:e.resolvePath(t.path)}},[n("el-menu-item",{attrs:{index:e.resolvePath(t.path)}},[t.meta?n("item",{attrs:{icon:t.meta.icon,title:e.generateTitle(t.meta.title)}}):e._e()],1)],1)]]})],2):[n("app-link",{attrs:{to:e.resolvePath(e.onlyOneChild.path)}},[n("el-menu-item",{class:{"submenu-title-noDropdown":!e.isNest},attrs:{index:e.resolvePath(e.onlyOneChild.path)}},[e.onlyOneChild.meta?n("item",{attrs:{icon:e.onlyOneChild.meta.icon||e.item.meta.icon,title:e.generateTitle(e.onlyOneChild.meta.title)}}):e._e()],1)],1)]],2):e._e()},[],!1,null,null,null);ae.options.__file="SidebarItem.vue";var re=ae.exports,ie=n("zx4i"),oe=n.n(ie),se={components:{SidebarItem:re},computed:I()({},Object(m.b)(["permission_routers","sidebar"]),{variables:function(){return oe.a},isCollapse:function(){return!this.sidebar.opened}})},ce=Object(l.a)(se,function(){var e=this.$createElement,t=this._self._c||e;return t("el-scrollbar",{attrs:{"wrap-class":"scrollbar-wrapper"}},[t("el-menu",{attrs:{"default-active":this.$route.path,collapse:this.isCollapse,"background-color":this.variables.menuBg,"text-color":this.variables.menuText,"active-text-color":this.variables.menuActiveText,mode:"vertical"}},this._l(this.permission_routers,function(e){return t("sidebar-item",{key:e.path,attrs:{item:e,"base-path":e.path}})}),1)],1)},[],!1,null,null,null);ce.options.__file="index.vue";var ue=ce.exports,le={name:"ScrollPane",data:function(){return{left:0}},methods:{handleScroll:function(e){var t=e.wheelDelta||40*-e.deltaY,n=this.$refs.scrollContainer.$refs.wrap;n.scrollLeft=n.scrollLeft+t/4},moveToTarget:function(e){var t=this.$refs.scrollContainer.$el.offsetWidth,n=this.$refs.scrollContainer.$refs.wrap,a=this.$parent.$refs.tag,r=null,i=null;if(a.length>0&&(r=a[0],i=a[a.length-1]),r===e)n.scrollLeft=0;else if(i===e)n.scrollLeft=n.scrollWidth-t;else{var o=a.findIndex(function(t){return t===e}),s=a[o-1],c=a[o+1],u=c.$el.offsetLeft+c.$el.offsetWidth+4,l=s.$el.offsetLeft-4;u>n.scrollLeft+t?n.scrollLeft=u-t:l1&&void 0!==arguments[1]?arguments[1]:"/",a=[];return e.forEach(function(e){if(e.meta&&e.meta.affix&&a.push({path:G.a.resolve(n,e.path),name:e.name,meta:I()({},e.meta)}),e.children){var r=t.filterAffixTags(e.children,e.path);r.length>=1&&(a=[].concat(R()(a),R()(r)))}}),a},initTags:function(){var e=this.affixTags=this.filterAffixTags(this.routers),t=!0,n=!1,a=void 0;try{for(var r,i=e[Symbol.iterator]();!(t=(r=i.next()).done);t=!0){var o=r.value;o.name&&this.$store.dispatch("addVisitedView",o)}}catch(e){n=!0,a=e}finally{try{t||null==i.return||i.return()}finally{if(n)throw a}}},addTags:function(){return this.$route.name&&this.$store.dispatch("addView",this.$route),!1},moveToCurrentTag:function(){var e=this,t=this.$refs.tag;this.$nextTick(function(){var n=!0,a=!1,r=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(s.to.path===e.$route.path){e.$refs.scrollPane.moveToTarget(s),s.to.fullPath!==e.$route.fullPath&&e.$store.dispatch("updateVisitedView",e.$route);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}})},refreshSelectedTag:function(e){var t=this;this.$store.dispatch("delCachedView",e).then(function(){var n=e.fullPath;t.$nextTick(function(){t.$router.replace({path:"/redirect"+n})})})},closeSelectedTag:function(e){var t=this;this.$store.dispatch("delView",e).then(function(n){var a=n.visitedViews;t.isActive(e)&&t.toLastView(a)})},closeOthersTags:function(){var e=this;this.$router.push(this.selectedTag),this.$store.dispatch("delOthersViews",this.selectedTag).then(function(){e.moveToCurrentTag()})},closeAllTags:function(e){var t=this;this.$store.dispatch("delAllViews").then(function(n){var a=n.visitedViews;t.affixTags.some(function(t){return t.path===e.path})||t.toLastView(a)})},toLastView:function(e){var t=e.slice(-1)[0];t?this.$router.push(t):this.$router.push("/")},openMenu:function(e,t){var n=this.$el.getBoundingClientRect().left,a=this.$el.offsetWidth-105,r=t.clientX-n+15;this.left=r>a?a:r,this.top=t.clientY,this.visible=!0,this.selectedTag=e},closeMenu:function(){this.visible=!1}}},me=(n("/H2a"),n("Yymj"),Object(l.a)(pe,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"tags-view-container"},[n("scroll-pane",{ref:"scrollPane",staticClass:"tags-view-wrapper"},e._l(e.visitedViews,function(t){return n("router-link",{key:t.path,ref:"tag",refInFor:!0,staticClass:"tags-view-item",class:e.isActive(t)?"active":"",attrs:{to:{path:t.path,query:t.query,fullPath:t.fullPath},tag:"span"},nativeOn:{mouseup:function(n){return"button"in n&&1!==n.button?null:e.closeSelectedTag(t)},contextmenu:function(n){return n.preventDefault(),e.openMenu(t,n)}}},[e._v("\n "+e._s(e.generateTitle(t.title))+"\n "),t.meta.affix?e._e():n("span",{staticClass:"el-icon-close",on:{click:function(n){return n.preventDefault(),n.stopPropagation(),e.closeSelectedTag(t)}}})])}),1),e._v(" "),n("ul",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"contextmenu",style:{left:e.left+"px",top:e.top+"px"}},[n("li",{on:{click:function(t){return e.refreshSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.refresh")))]),e._v(" "),e.selectedTag.meta&&e.selectedTag.meta.affix?e._e():n("li",{on:{click:function(t){return e.closeSelectedTag(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.close")))]),e._v(" "),n("li",{on:{click:e.closeOthersTags}},[e._v(e._s(e.$t("tagsView.closeOthers")))]),e._v(" "),n("li",{on:{click:function(t){return e.closeAllTags(e.selectedTag)}}},[e._v(e._s(e.$t("tagsView.closeAll")))])])],1)},[],!1,null,"67e96c42",null));me.options.__file="TagsView.vue";var he=me.exports,fe={name:"AppMain",computed:{cachedViews:function(){return this.$store.state.tagsView.cachedViews},key:function(){return this.$route.fullPath}}},ge=(n("Z+gY"),Object(l.a)(fe,function(){var e=this.$createElement,t=this._self._c||e;return t("section",{staticClass:"app-main"},[t("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[t("keep-alive",{attrs:{include:this.cachedViews}},[t("router-view",{key:this.key})],1)],1)],1)},[],!1,null,"f852c4f2",null));ge.options.__file="AppMain.vue";var ve=ge.exports,be=document.body,we={name:"Layout",components:{Navbar:F,Sidebar:ue,AppMain:ve,TagsView:he},mixins:[{watch:{$route:function(e){"mobile"===this.device&&this.sidebar.opened&&un.dispatch("closeSideBar",{withoutAnimation:!1})}},beforeMount:function(){window.addEventListener("resize",this.resizeHandler)},mounted:function(){this.isMobile()&&(un.dispatch("toggleDevice","mobile"),un.dispatch("closeSideBar",{withoutAnimation:!0}))},methods:{isMobile:function(){return be.getBoundingClientRect().width-3<1024},resizeHandler:function(){if(!document.hidden){var e=this.isMobile();un.dispatch("toggleDevice",e?"mobile":"desktop"),e&&un.dispatch("closeSideBar",{withoutAnimation:!0})}}}}],computed:{sidebar:function(){return this.$store.state.app.sidebar},device:function(){return this.$store.state.app.device},classObj:function(){return{hideSidebar:!this.sidebar.opened,openSidebar:this.sidebar.opened,withoutAnimation:this.sidebar.withoutAnimation,mobile:"mobile"===this.device}}},methods:{handleClickOutside:function(){this.$store.dispatch("closeSideBar",{withoutAnimation:!1})}}},ye=(n("SZWj"),Object(l.a)(we,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"app-wrapper",class:e.classObj},["mobile"===e.device&&e.sidebar.opened?n("div",{staticClass:"drawer-bg",on:{click:e.handleClickOutside}}):e._e(),e._v(" "),n("sidebar",{staticClass:"sidebar-container"}),e._v(" "),n("div",{staticClass:"main-container"},[n("navbar"),e._v(" "),n("app-main")],1)],1)},[],!1,null,"767d264f",null));ye.options.__file="Layout.vue";var xe=ye.exports;r.default.use(D.a);var _e=[""]||!1,Te=_e.includes("settings"),ke={path:"/settings",component:xe,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-7fe2"),n.e("chunk-6292")]).then(n.bind(null,"YcIK"))},name:"Settings",meta:{title:"Settings",icon:"settings",noCache:!0}}]},Ee=_e.includes("reports"),Se={path:"/reports",component:xe,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-df62"),n.e("chunk-598f")]).then(n.bind(null,"cEOe"))},name:"Reports",meta:{title:"Reports",icon:"documentation",noCache:!0}}]},Oe=_e.includes("invites"),Ae={path:"/invites",component:xe,children:[{path:"index",component:function(){return n.e("chunk-7c6b").then(n.bind(null,"HMof"))},name:"Invites",meta:{title:"Invites",icon:"guide",noCache:!0}}]},Le=_e.includes("emoji-packs"),Pe={path:"/emoji-packs",component:xe,children:[{path:"index",component:function(){return n.e("chunk-1a7d").then(n.bind(null,"rCuO"))},name:"Emoji packs",meta:{title:"emoji-packs",icon:"settings",noCache:!0}}]},Ce=[{path:"/redirect",component:xe,hidden:!0,children:[{path:"/redirect/:path*",component:function(){return n.e("7zzA").then(n.bind(null,"7zzA"))}}]},{path:"/login-pleroma",component:function(){return Promise.all([n.e("oAJy"),n.e("chunk-16d0")]).then(n.bind(null,"iRgq"))},hidden:!0},{path:"/login",component:function(){return Promise.all([n.e("oAJy"),n.e("chunk-06db")]).then(n.bind(null,"ntYl"))},hidden:!0},{path:"/auth-redirect",component:function(){return n.e("JEtC").then(n.bind(null,"JEtC"))},hidden:!0},{path:"/404",component:function(){return n.e("chunk-15fa").then(n.bind(null,"/eX4"))},hidden:!0},{path:"/401",component:function(){return n.e("chunk-1f27").then(n.bind(null,"UUO+"))},hidden:!0},{path:"",component:xe,redirect:"/users/index"}],Ve=new D.a({scrollBehavior:function(){return{y:0}},routes:Ce}),ze=[{path:"/users",component:xe,children:[{path:"index",component:function(){return Promise.all([n.e("chunk-0620"),n.e("chunk-5913")]).then(n.bind(null,"RGjw"))},name:"Users",meta:{title:"Users",icon:"peoples",noCache:!0}}]}].concat(R()(Te?[]:[ke]),R()(Ee?[]:[Se]),R()(Oe?[]:[Ae]),R()(Le?[]:[Pe]),[{path:"/users/:id",component:xe,children:[{path:"",name:"UsersShow",component:function(){return n.e("chunk-3d1c").then(n.bind(null,"4bFr"))}}],hidden:!0},{path:"*",redirect:"/404",hidden:!0}]);var Ie={state:{routers:[],addRouters:[]},mutations:{SET_ROUTERS:function(e,t){e.addRouters=t,e.routers=Ce.concat(t)}},actions:{GenerateRoutes:function(e,t){var n=e.commit;return new Promise(function(e){var a,r=t.roles;a=r.includes("admin")?ze:function e(t,n){var a=[];return t.forEach(function(t){var r=I()({},t);(function(e,t){return!t.meta||!t.meta.roles||e.some(function(e){return t.meta.roles.includes(e)})})(n,r)&&(r.children&&(r.children=e(r.children,n)),a.push(r))}),a}(ze,r),n("SET_ROUTERS",a),e()})}}};function Me(e,t,n,a){return Re.apply(this,arguments)}function Re(){return(Re=w()(v.a.mark(function e(t,n,a,r){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(a),url:"/api/pleroma/admin/reports/".concat(n),method:"put",headers:Ye(r),data:{state:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function De(e,t,n,a,r){return je.apply(this,arguments)}function je(){return(je=w()(v.a.mark(function e(t,n,a,r,i){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(r),url:"/api/pleroma/admin/statuses/".concat(t),method:"put",headers:Ye(i),data:{sensitive:n,visibility:a}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ue(e,t,n){return He.apply(this,arguments)}function He(){return(He=w()(v.a.mark(function e(t,n,a){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(n),url:"/api/pleroma/admin/statuses/".concat(t),method:"delete",headers:Ye(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Be(e,t,n,a){return Fe.apply(this,arguments)}function Fe(){return(Fe=w()(v.a.mark(function e(t,n,a,r){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(a),url:"/api/pleroma/admin/reports?limit=".concat(t,"&max_id=").concat(n),method:"get",headers:Ye(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ne(e,t,n,a,r){return Ge.apply(this,arguments)}function Ge(){return(Ge=w()(v.a.mark(function e(t,n,a,r,i){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(r),url:"/api/pleroma/admin/reports?state=".concat(t,"&limit=").concat(n,"&max_id=").concat(a),method:"get",headers:Ye(i)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var Ye=function(e){return e?{Authorization:"Bearer ".concat(Object(x.b)())}:{}},$e={state:{fetchedReports:[],idOfLastReport:"",page_limit:5,stateFilter:"",loading:!0},mutations:{SET_LAST_REPORT_ID:function(e,t){e.idOfLastReport=t},SET_LOADING:function(e,t){e.loading=t},SET_REPORTS:function(e,t){e.fetchedReports=t},SET_REPORTS_FILTER:function(e,t){e.stateFilter=t}},actions:{ChangeReportState:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s,c,u,l;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=t.state,o=n.reportState,s=n.reportId,e.next=4,Me(o,s,r.authHost,r.token);case 4:c=e.sent,u=c.data,l=i.fetchedReports.map(function(e){return e.id===s?u:e}),a("SET_REPORTS",l);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ChangeStatusScope:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s,c,u,l,d,p;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=t.state,o=n.statusId,s=n.isSensitive,c=n.visibility,u=n.reportId,e.next=4,De(o,s,c,r.authHost,r.token);case 4:l=e.sent,d=l.data,p=i.fetchedReports.map(function(e){if(e.id===u){var t=e.statuses.map(function(e){return e.id===o?d:e});return I()({},e,{statuses:t})}return e}),a("SET_REPORTS",p);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearFetchedReports:function(e){var t=e.commit;t("SET_REPORTS",[]),t("SET_LAST_REPORT_ID","")},DeleteStatus:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s,c;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.getters,i=t.state,o=n.statusId,s=n.reportId,Ue(o,r.authHost,r.token),c=i.fetchedReports.map(function(e){if(e.id===s){var t=e.statuses.filter(function(e){return e.id!==o});return I()({},e,{statuses:t})}return e}),a("SET_REPORTS",c);case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchReports:function(){var e=w()(v.a.mark(function e(t){var n,a,r,i,o,s;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.commit,a=t.getters,r=t.state,n("SET_LOADING",!0),0!==r.stateFilter.length){e.next=8;break}return e.next=5,Be(r.page_limit,r.idOfLastReport,a.authHost,a.token);case 5:e.t0=e.sent,e.next=11;break;case 8:return e.next=10,Ne(r.stateFilter,r.page_limit,r.idOfLastReport,a.authHost,a.token);case 10:e.t0=e.sent;case 11:i=e.t0,o=r.fetchedReports.concat(i.data.reports),s=o.length>0?o[o.length-1].id:r.idOfLastReport,n("SET_REPORTS",o),n("SET_LAST_REPORT_ID",s),n("SET_LOADING",!1);case 17:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SetFilter:function(e,t){(0,e.commit)("SET_REPORTS_FILTER",t)}}},We=n("lSNA"),qe=n.n(We);function Ke(e,t){return Ze.apply(this,arguments)}function Ze(){return(Ze=w()(v.a.mark(function e(t,n){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(t),url:"/api/pleroma/admin/config",method:"get",headers:tt(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Qe(e,t,n){return Je.apply(this,arguments)}function Je(){return(Je=w()(v.a.mark(function e(t,n,a){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(n),url:"/api/pleroma/admin/config",method:"post",headers:tt(a),data:{configs:t}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Xe(e,t,n){return et.apply(this,arguments)}function et(){return(et=w()(v.a.mark(function e(t,n,a){var r;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(r=new FormData).append("file",t),e.next=4,Object(y.a)({baseURL:Object(_.a)(n),url:"/api/v1/media",method:"post",headers:tt(a),data:r});case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}var tt=function(e){return e?{Authorization:"Bearer ".concat(Object(x.b)())}:{}},nt=[{group:"pleroma",key:":instance",value:[{tuple:[":name","Pleroma"]},{tuple:[":email","example@example.com"]},{tuple:[":notify_email","noreply@example.com"]},{tuple:[":description","A Pleroma instance, an alternative fediverse server"]},{tuple:[":limit",5e3]},{tuple:[":remote_limit",1e5]},{tuple:[":upload_limit",16777216]},{tuple:[":avatar_upload_limit",2097152]},{tuple:[":background_upload_limit",4194304]},{tuple:[":banner_upload_limit",4194304]},{tuple:[":poll_limits",[{tuple:[":max_options",20]},{tuple:[":max_option_chars",200]},{tuple:[":min_expiration",0]},{tuple:[":max_expiration",31536e3]}]]},{tuple:[":registrations_open",!0]},{tuple:[":invites_enabled",!1]},{tuple:[":account_activation_required",!1]},{tuple:[":federating",!0]},{tuple:[":federation_reachability_timeout_days",7]},{tuple:[":federation_publisher_modules",["Pleroma.Web.ActivityPub.Publisher","Pleroma.Web.Websub","Pleroma.Web.Salmon"]]},{tuple:[":allow_relay",!0]},{tuple:[":rewrite_policy","Pleroma.Web.ActivityPub.MRF.NoOpPolicy"]},{tuple:[":public",!0]},{tuple:[":managed_config",!0]},{tuple:[":static_dir","instance/static/"]},{tuple:[":allowed_post_formats",["text/plain","text/html","text/markdown","text/bbcode"]]},{tuple:[":mrf_transparency",!0]},{tuple:[":extended_nickname_format",!1]},{tuple:[":max_pinned_statuses",1]},{tuple:[":no_attachment_links",!1]},{tuple:[":max_report_comment_size",1e3]},{tuple:[":safe_dm_mentions",!1]},{tuple:[":healthcheck",!1]},{tuple:[":remote_post_retention_days",90]},{tuple:[":skip_thread_containment",!0]},{tuple:[":limit_to_local_content",":unauthenticated"]},{tuple:[":dynamic_configuration",!0]},{tuple:[":max_account_fields",10]},{tuple:[":max_remote_account_fields",20]},{tuple:[":account_field_name_length",255]},{tuple:[":account_field_value_length",255]},{tuple:[":external_user_synchronization",!0]},{tuple:[":user_bio_length",5e3]},{tuple:[":user_name_length",100]}]},{group:"mime",key:":types",value:{"application/activity+json":["activity+json"],"application/jrd+json":["jrd+json"],"application/ld+json":["activity+json"],"application/xml":["xml"],"application/xrd+xml":["xrd+xml"]}},{group:"cors_plug",key:":max_age",value:86400},{group:"cors_plug",key:":methods",value:["POST","PUT","DELETE","GET","PATCH","OPTIONS"]},{group:"cors_plug",key:":expose",value:["Link","X-RateLimit-Reset","X-RateLimit-Limit","X-RateLimit-Remaining","X-Request-Id","Idempotency-Key"]},{group:"cors_plug",key:":credentials",value:!0},{group:"cors_plug",key:":headers",value:["Authorization","Content-Type","Idempotency-Key"]},{group:"tesla",key:":adapter",value:"Tesla.Adapter.Hackney"},{group:"pleroma",key:":markup",value:[{tuple:[":allow_inline_images",!0]},{tuple:[":allow_headings",!1]},{tuple:[":allow_tables",!1]},{tuple:[":allow_fonts",!1]},{tuple:[":scrub_policy",["Pleroma.HTML.Transform.MediaProxy","Pleroma.HTML.Scrubber.Default"]]}]}],at=n("QILm"),rt=n.n(at);function it(e){var t=function(e,t){if("object"!==W()(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,t||"default");if("object"!==W()(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===W()(t)?t:String(t)}var ot=["replace",":replace"],st=["match_actor",":match_actor"],ct=["digest","pleroma_fe","masto_fe","poll_limits","styling"],ut=["mascots"],lt={cors_plug:["credentials","expose","headers","max_age","methods"],esshd:["enabled","handler","password_authenticator","port","priv_dir"],logger:["backends","console","ex_syslogger"],mime:["types"],phoenix:["format_encoders"],pleroma:["Pleroma.Captcha","Pleroma.Captcha.Kocaptcha","Pleroma.Emails.Mailer","Pleroma.Emails.UserEmail","Pleroma.Repo","Pleroma.ScheduledActivity","Pleroma.Upload","Pleroma.Upload.Filter.AnonymizeFilename","Pleroma.Upload.Filter.Mogrify","Pleroma.Uploaders.Local","Pleroma.Uploaders.MDII","Pleroma.Uploaders.S3","Pleroma.User","Pleroma.Web.Auth.Authenticator","Pleroma.Web.Endpoint","Pleroma.Web.Federator.RetryQueue","Pleroma.Web.Metadata","activitypub","admin_token","assets","auth","auto_linker","chat","database","ecto_repos","email_notifications","emoji","env","fetch_initial_posts","frontend_configurations","gopher","hackney_pools","http","http_security","instance","ldap","markup","media_proxy","mrf_hellthread","mrf_keyword","mrf_mention","mrf_normalize_markup","mrf_rejectnonpublic","mrf_simple","mrf_subchain","mrf_user_allowlist","mrf_vocabulary","oauth2","rate_limit","rich_media","suggestions","uri_schemes","user"],pleroma_job_queue:["queues"],quack:["level","meta","webhook_url"],tesla:["adapter"],ueberauth:["Ueberauth","Ueberauth.Strategy.Facebook.OAuth","Ueberauth.Strategy.Google.OAuth","Ueberauth.Strategy.Microsoft.OAuth","Ueberauth.Strategy.Twitter.OAuth"],web_push_encryption:["vapid_details"]},dt=function(e,t){return!0===e.enabled.value?e:t.reduce(function(e,t){e[t];return rt()(e,[t].map(it))},e)},pt=function(e){return e.reduce(function(e,t){return e[t.tuple[0]]=t.tuple[1],e},{})},mt=function(e){return Object.keys(e).reduce(function(t,n){return t[n]=e[n],t},{})},ht=function(e){return Object.keys(e).reduce(function(t,n){return t[n.substr(1)]=e[n],t},{})},ft=function(e){return Object.keys(e).map(function(t){var n=xt(t),a=t.startsWith("Pleroma")||t.startsWith("Ueberauth")?t:":".concat(t),r=void 0!==e[t].value?e[t].value:Object.keys(e[t]).reduce(function(n,r){var i=e[t][r];if(null===i||""===i)return n;if(":rate_limit"===a)return[].concat(R()(n),[{tuple:[":".concat(r),i]}]);if("ip"===r){var o=i.split(".").map(function(e){return parseInt(e,10)});return[].concat(R()(n),[{tuple:[":".concat(r),{tuple:o}]}])}return Array.isArray(i)||"object"!==W()(i)?[].concat(R()(n),":mrf_user_allowlist"===a?[{tuple:["".concat(r),i]}]:[{tuple:[":".concat(r),i]}]):st.includes(r)?[].concat(R()(n),[{tuple:[":".concat(r),wt(i)]}]):ut.includes(r)?[].concat(R()(n),[{tuple:[":".concat(r),bt(i)]}]):ct.includes(r)?[].concat(R()(n),[{tuple:[":".concat(r),yt(i)]}]):ot.includes(r)?[].concat(R()(n),[{tuple:[":".concat(r),vt(i)]}]):[].concat(R()(n),[{tuple:[":".concat(r),gt(i)]}])},[]);return{group:n,key:a,value:r}})},gt=function e(t){return Object.keys(t).reduce(function(n,a){var r=t[a];if(null===r||""===r)return n;if("ip"===a){var i=r.split(".").map(function(e){return parseInt(e,10)});return[].concat(R()(n),[{tuple:[":".concat(a),{tuple:i}]}])}return Array.isArray(r)||"object"!==W()(r)?[].concat(R()(n),[{tuple:[":".concat(a),r]}]):st.includes(a)?[].concat(R()(n),[{tuple:[":".concat(a),wt(r)]}]):ut.includes(a)?[].concat(R()(n),[{tuple:[":".concat(a),bt(r)]}]):ct.includes(a)?[].concat(R()(n),[{tuple:[":".concat(a),yt(r)]}]):ot.includes(a)?[].concat(R()(n),[{tuple:[":".concat(a),vt(r)]}]):[].concat(R()(n),[{tuple:[":".concat(a),e(r)]}])},[])},vt=function(e){return Object.keys(e).reduce(function(t,n){return[].concat(R()(t),[{tuple:["".concat(n),e[n]]}])},[])},bt=function(e){return Object.keys(e).reduce(function(t,n){return[].concat(R()(t),[{tuple:[":".concat(n),yt(e[n])]}])},[])},wt=function(e){return Object.keys(e).reduce(function(t,n){return I()({},t,qe()({},"".concat(n),e[n]))},{})},yt=function(e){return Object.keys(e).reduce(function(t,n){return I()({},t,qe()({},":".concat(n),e[n]))},{})},xt=function(e){return Object.keys(lt).find(function(t){return lt[t].includes(e)})},_t={state:{settings:{activitypub:{},adapter:{},admin_token:{},assets:{mascots:{}},auth:{},auto_linker:{opts:{}},backends:{},chat:{},console:{colors:{}},credentials:{},database:{},ecto_repos:{},email_notifications:{digest:{}},emoji:{groups:{}},enabled:{},ex_syslogger:{},expose:{},fetch_initial_posts:{},format_encoders:{},frontend_configurations:{pleroma_fe:{},masto_fe:{}},gopher:{},hackney_pools:{federation:{},media:{},upload:{}},handler:{},headers:{},http:{adapter:{}},http_security:{},instance:{poll_limits:{}},level:{},ldap:{},markup:{},max_age:{},media_proxy:{proxy_opts:{}},meta:{},methods:{},mrf_hellthread:{},mrf_keyword:{replace:{}},mrf_mention:{},mrf_normalize_markup:{},mrf_rejectnonpublic:{},mrf_simple:{},mrf_subchain:{match_actor:{}},mrf_user_allowlist:{},mrf_vocabulary:{},oauth2:{},password_authenticator:{},"Pleroma.Captcha":{},"Pleroma.Captcha.Kocaptcha":{},"Pleroma.Emails.Mailer":{},"Pleroma.Emails.UserEmail":{styling:{}},"Pleroma.Repo":{},"Pleroma.ScheduledActivity":{},"Pleroma.Upload":{proxy_opts:{}},"Pleroma.Upload.Filter.AnonymizeFilename":{},"Pleroma.Upload.Filter.Mogrify":{},"Pleroma.Uploaders.Local":{},"Pleroma.Uploaders.MDII":{},"Pleroma.Uploaders.S3":{},"Pleroma.User":{},"Pleroma.Web.Auth.Authenticator":{},"Pleroma.Web.Endpoint":{http:!1,url:{},render_errors:{},pubsub:{}},"Pleroma.Web.Federator.RetryQueue":{},"Pleroma.Web.Metadata":{},port:{},priv_dir:{},queues:{},rate_limit:{},rich_media:{},suggestions:{},types:{value:{}},Ueberauth:{},"Ueberauth.Strategy.Facebook.OAuth":{},"Ueberauth.Strategy.Google.OAuth":{},"Ueberauth.Strategy.Microsoft.OAuth":{},"Ueberauth.Strategy.Twitter.OAuth":{},user:{},uri_schemes:{},vapid_details:{},webhook_url:{}},ignoredIfNotEnabled:["enabled","handler","password_authenticator","port","priv_dir"],loading:!0},mutations:{REWRITE_CONFIG:function(e,t){var n=t.tab,a=t.data;e.settings[n]=a},SET_LOADING:function(e,t){e.loading=t},SET_SETTINGS:function(e,t){var n=t.reduce(function(e,t){var n=":"===t.key[0]?t.key.substr(1):t.key,a=function(e,t){var n=Array.isArray(t)&&t.length>0&&"object"!==W()(t[0]);return"meta"===e||"types"===e||"string"==typeof t||"number"==typeof t||"boolean"==typeof t||n}(n,t.value)?{value:t.value}:function e(t,n){return t.reduce(function(t,a){return"rate_limit"===n?t[a.tuple[0].substr(1)]=a.tuple[1]:Array.isArray(a.tuple[1])&&"object"===W()(a.tuple[1][0])&&!Array.isArray(a.tuple[1][0])&&a.tuple[1][0].tuple?ot.includes(a.tuple[0])?t[a.tuple[0].substr(1)]=pt(a.tuple[1]):t[a.tuple[0].substr(1)]=e(a.tuple[1]):Array.isArray(a.tuple[1])?t[a.tuple[0].substr(1)]=a.tuple[1]:a.tuple[1]&&"object"===W()(a.tuple[1])&&"tuple"in a.tuple[1]?t[a.tuple[0].substr(1)]=a.tuple[1].tuple.join("."):a.tuple[1]&&"object"===W()(a.tuple[1])?st.includes(a.tuple[0])?t[a.tuple[0].substr(1)]=mt(a.tuple[1]):t[a.tuple[0].substr(1)]=ht(a.tuple[1]):"mrf_user_allowlist"===n?t[a.tuple[0]]=a.tuple[1]:t[a.tuple[0].substr(1)]=a.tuple[1],t},{})}(t.value,n);return e[n]=I()({},e[n],a),e},e.settings);e.settings=n},UPDATE_SETTINGS:function(e,t){var n=t.tab,a=t.data;Object.keys(e.settings).map(function(t){t===n&&(e.settings[t]=I()({},e.settings[t],a))})}},actions:{FetchSettings:function(){var e=w()(v.a.mark(function e(t){var n,a,r,i;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.dispatch,r=t.getters,n("SET_LOADING",!0),e.next=4,Ke(r.authHost,r.token);case 4:0===(i=e.sent).data.configs.length?a("SubmitChanges",nt):n("SET_SETTINGS",i.data.configs),n("SET_LOADING",!1);case 7:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),RewriteConfig:function(e,t){(0,e.commit)("REWRITE_CONFIG",{tab:t.tab,data:t.data})},SubmitChanges:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s,c;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.getters,r=t.commit,i=t.state,o=dt(i.settings,i.ignoredIfNotEnabled),s=n||ft(o),e.next=5,Qe(s,a.authHost,a.token);case 5:c=e.sent,n&&r("SET_SETTINGS",c.data.configs);case 7:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),UpdateSettings:function(e,t){(0,e.commit)("UPDATE_SETTINGS",{tab:t.tab,data:t.data})},UploadMedia:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s,c,u,l,d;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,i=t.state,o=n.file,s=n.tab,c=n.inputName,u=n.childName,e.next=4,Xe(o,r.authHost,r.token);case 4:l=e.sent,d=u?I()({},i.settings[s][c],qe()({},u,l.data.url)):l.data.url,a("UpdateSettings",{tab:s,data:qe()({},c,d)});case 7:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},Tt=n("J4zp"),kt=n.n(Tt),Et={state:{visitedViews:[],cachedViews:[]},mutations:{ADD_VISITED_VIEW:function(e,t){e.visitedViews.some(function(e){return e.path===t.path})||e.visitedViews.push(Object.assign({},t,{title:t.meta.title||"no-name"}))},ADD_CACHED_VIEW:function(e,t){e.cachedViews.includes(t.name)||t.meta.noCache||e.cachedViews.push(t.name)},DEL_VISITED_VIEW:function(e,t){var n=!0,a=!1,r=void 0;try{for(var i,o=e.visitedViews.entries()[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=kt()(i.value,2),c=s[0];if(s[1].path===t.path){e.visitedViews.splice(c,1);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}},DEL_CACHED_VIEW:function(e,t){var n=!0,a=!1,r=void 0;try{for(var i,o=e.cachedViews[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(s===t.name){var c=e.cachedViews.indexOf(s);e.cachedViews.splice(c,1);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}},DEL_OTHERS_VISITED_VIEWS:function(e,t){e.visitedViews=e.visitedViews.filter(function(e){return e.meta.affix||e.path===t.path})},DEL_OTHERS_CACHED_VIEWS:function(e,t){var n=!0,a=!1,r=void 0;try{for(var i,o=e.cachedViews[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(s===t.name){var c=e.cachedViews.indexOf(s);e.cachedViews=e.cachedViews.slice(c,c+1);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}},DEL_ALL_VISITED_VIEWS:function(e){var t=e.visitedViews.filter(function(e){return e.meta.affix});e.visitedViews=t},DEL_ALL_CACHED_VIEWS:function(e){e.cachedViews=[]},UPDATE_VISITED_VIEW:function(e,t){var n=!0,a=!1,r=void 0;try{for(var i,o=e.visitedViews[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(s.path===t.path){s=Object.assign(s,t);break}}}catch(e){a=!0,r=e}finally{try{n||null==o.return||o.return()}finally{if(a)throw r}}}},actions:{addView:function(e,t){var n=e.dispatch;n("addVisitedView",t),n("addCachedView",t)},addVisitedView:function(e,t){(0,e.commit)("ADD_VISITED_VIEW",t)},addCachedView:function(e,t){(0,e.commit)("ADD_CACHED_VIEW",t)},delView:function(e,t){var n=e.dispatch,a=e.state;return new Promise(function(e){n("delVisitedView",t),n("delCachedView",t),e({visitedViews:R()(a.visitedViews),cachedViews:R()(a.cachedViews)})})},delVisitedView:function(e,t){var n=e.commit,a=e.state;return new Promise(function(e){n("DEL_VISITED_VIEW",t),e(R()(a.visitedViews))})},delCachedView:function(e,t){var n=e.commit,a=e.state;return new Promise(function(e){n("DEL_CACHED_VIEW",t),e(R()(a.cachedViews))})},delOthersViews:function(e,t){var n=e.dispatch,a=e.state;return new Promise(function(e){n("delOthersVisitedViews",t),n("delOthersCachedViews",t),e({visitedViews:R()(a.visitedViews),cachedViews:R()(a.cachedViews)})})},delOthersVisitedViews:function(e,t){var n=e.commit,a=e.state;return new Promise(function(e){n("DEL_OTHERS_VISITED_VIEWS",t),e(R()(a.visitedViews))})},delOthersCachedViews:function(e,t){var n=e.commit,a=e.state;return new Promise(function(e){n("DEL_OTHERS_CACHED_VIEWS",t),e(R()(a.cachedViews))})},delAllViews:function(e,t){var n=e.dispatch,a=e.state;return new Promise(function(e){n("delAllVisitedViews",t),n("delAllCachedViews",t),e({visitedViews:R()(a.visitedViews),cachedViews:R()(a.cachedViews)})})},delAllVisitedViews:function(e){var t=e.commit,n=e.state;return new Promise(function(e){t("DEL_ALL_VISITED_VIEWS"),e(R()(n.visitedViews))})},delAllCachedViews:function(e){var t=e.commit,n=e.state;return new Promise(function(e){t("DEL_ALL_CACHED_VIEWS"),e(R()(n.cachedViews))})},updateVisitedView:function(e,t){(0,e.commit)("UPDATE_VISITED_VIEW",t)}}};function St(e,t,n){return Ot.apply(this,arguments)}function Ot(){return(Ot=w()(v.a.mark(function e(t,n,a){var r,i;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(a),url:"/api/v1/apps",method:"post",data:{client_name:"AdminFE_".concat(Math.random()),redirect_uris:"".concat(window.location.origin,"/oauth-callback"),scopes:"read write follow"}});case 2:return r=e.sent,i=r.data,e.abrupt("return",Object(y.a)({baseURL:Object(_.a)(a),url:"/oauth/token",method:"post",data:{client_id:i.client_id,client_secret:i.client_secret,grant_type:"password",username:t,password:n}}));case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function At(e,t){return Object(y.a)({baseURL:Object(_.a)(t),url:"/api/v1/accounts/verify_credentials",method:"get",headers:e?{Authorization:"Bearer ".concat(e)}:{}})}var Lt={state:{user:"",id:"",status:"",code:"",token:Object(x.b)(),authHost:Object(x.a)(),name:"",avatar:"",introduction:"",roles:[],setting:{articlePlatform:[]}},mutations:{SET_CODE:function(e,t){e.code=t},SET_TOKEN:function(e,t){e.token=t},SET_INTRODUCTION:function(e,t){e.introduction=t},SET_SETTING:function(e,t){e.setting=t},SET_STATUS:function(e,t){e.status=t},SET_NAME:function(e,t){e.name=t},SET_AVATAR:function(e,t){e.avatar=t},SET_ROLES:function(e,t){e.roles=t},SET_ID:function(e,t){e.id=t},SET_AUTH_HOST:function(e,t){e.authHost=t}},actions:{LoginByUsername:function(e,t){var n=e.commit,a=e.dispatch,r=t.username,i=t.authHost,o=t.password;return new Promise(function(e,t){St(r,o,i).then(function(t){var a=t.data;n("SET_TOKEN",a.access_token),n("SET_AUTH_HOST",i),Object(x.f)(a.access_token),Object(x.e)(i),e()}).catch(function(e){a("addErrorLog",{message:e.message}),t(e)})})},GetUserInfo:function(e){var t=e.commit,n=e.state;return new Promise(function(e,a){At(n.token,n.authHost).then(function(n){var r=n.data;r||a("Verification failed, please login again."),r.pleroma&&r.pleroma.is_admin?t("SET_ROLES",["admin"]):a("getInfo: roles must be a non-null array!"),t("SET_NAME",r.username),t("SET_ID",r.id),t("SET_AVATAR",r.avatar),t("SET_INTRODUCTION",""),e(n)}).catch(function(e){a(e)})})},LogOut:function(e){var t=e.commit;t("SET_TOKEN",""),t("SET_ROLES",[]),Object(x.d)(),Object(x.c)()},FedLogOut:function(e){var t=e.commit;return new Promise(function(e){t("SET_TOKEN",""),Object(x.d)(),Object(x.c)(),e()})},LoginByPleromaFE:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.dispatch,i=n.token,a("SET_TOKEN",i),Object(x.f)(i),a("SET_AUTH_HOST",window.location.host),Object(x.e)(window.location.host),r("GetUserInfo");case 7:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}};function Pt(e,t,n,a){return Ct.apply(this,arguments)}function Ct(){return(Ct=w()(v.a.mark(function e(t,n,a,r){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(a),url:"/api/pleroma/admin/users/".concat(t,"/permission_group/").concat(n),method:"post",headers:en(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Vt(e,t,n,a,r){return zt.apply(this,arguments)}function zt(){return(zt=w()(v.a.mark(function e(t,n,a,r,i){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(r),url:"/api/pleroma/admin/users",method:"post",headers:en(i),data:{users:[{nickname:t,email:n,password:a}]}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function It(e,t,n,a){return Mt.apply(this,arguments)}function Mt(){return(Mt=w()(v.a.mark(function e(t,n,a,r){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(a),url:"/api/pleroma/admin/users/".concat(t,"/permission_group/").concat(n),method:"delete",headers:en(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Rt(e,t,n){return Dt.apply(this,arguments)}function Dt(){return(Dt=w()(v.a.mark(function e(t,n,a){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(n),url:"/api/pleroma/admin/users?nickname=".concat(t),method:"delete",headers:en(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function jt(e,t,n){return Ut.apply(this,arguments)}function Ut(){return(Ut=w()(v.a.mark(function e(t,n,a){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(n),url:"/api/pleroma/admin/users/".concat(t),method:"get",headers:en(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ht(e,t,n){return Bt.apply(this,arguments)}function Bt(){return(Bt=w()(v.a.mark(function e(t,n,a){var r,i=arguments;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=i.length>3&&void 0!==i[3]?i[3]:1,e.next=3,Object(y.a)({baseURL:Object(_.a)(n),url:"/api/pleroma/admin/users?page=".concat(r,"&filters=").concat(t),method:"get",headers:en(a)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Ft(e,t,n){return Nt.apply(this,arguments)}function Nt(){return(Nt=w()(v.a.mark(function e(t,n,a){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/password_reset"),method:"get",headers:en(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Gt(e,t,n,a){return Yt.apply(this,arguments)}function Yt(){return(Yt=w()(v.a.mark(function e(t,n,a,r){var i,o=arguments;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=o.length>4&&void 0!==o[4]?o[4]:1,e.next=3,Object(y.a)({baseURL:Object(_.a)(a),url:"/api/pleroma/admin/users?query=".concat(t,"&page=").concat(i,"&filters=").concat(n),method:"get",headers:en(r)});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function $t(e,t,n,a){return Wt.apply(this,arguments)}function Wt(){return(Wt=w()(v.a.mark(function e(t,n,a,r){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(a),url:"/api/pleroma/admin/users/tag",method:"put",headers:en(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function qt(e,t,n){return Kt.apply(this,arguments)}function Kt(){return(Kt=w()(v.a.mark(function e(t,n,a){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/toggle_activation"),method:"patch",headers:en(a)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Zt(e,t,n,a){return Qt.apply(this,arguments)}function Qt(){return(Qt=w()(v.a.mark(function e(t,n,a,r){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(a),url:"/api/pleroma/admin/users/tag",method:"delete",headers:en(r),data:{nicknames:t,tags:n}});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function Jt(e,t,n,a){return Xt.apply(this,arguments)}function Xt(){return(Xt=w()(v.a.mark(function e(t,n,a,r){return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(y.a)({baseURL:Object(_.a)(n),url:"/api/pleroma/admin/users/".concat(t,"/statuses?godmode=").concat(a),method:"get",headers:en(r)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}var en=function(e){return e?{Authorization:"Bearer ".concat(Object(x.b)())}:{}},tn={state:{user:{},loading:!0,statuses:[]},mutations:{SET_USER:function(e,t){e.user=t},SET_LOADING:function(e,t){e.loading=t},SET_STATUSES:function(e,t){e.statuses=t}},actions:{FetchData:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s,c,u,l;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=n.id,o=n.godmode,a("SET_LOADING",!0),e.next=5,Promise.all([jt(i,r.authHost,r.token),Jt(i,r.authHost,o,r.token)]);case 5:s=e.sent,c=kt()(s,2),u=c[0],l=c[1],a("SET_USER",u.data),a("SET_STATUSES",l.data),a("SET_LOADING",!1);case 12:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},nn={state:{fetchedUsers:[],loading:!0,searchQuery:"",totalUsersCount:0,currentPage:1,filters:{local:!1,external:!1,active:!1,deactivated:!1},passwordResetToken:{token:"",link:""}},mutations:{SET_USERS:function(e,t){e.fetchedUsers=t},SET_LOADING:function(e,t){e.loading=t},SWAP_USER:function(e,t){var n=e.fetchedUsers.map(function(e){return e.id===t.id?t:e});e.fetchedUsers=n.map(function(e){return e.nickname?e:I()({},e,{nickname:""})}).sort(function(e,t){return e.nickname.localeCompare(t.nickname)})},SWAP_USERS:function(e,t){var n=t.reduce(function(e,t){return e.filter(function(e){return e.id!==t.id})},e.fetchedUsers);e.fetchedUsers=[].concat(R()(n),R()(t)).sort(function(e,t){return e.nickname.localeCompare(t.nickname)})},SET_COUNT:function(e,t){e.totalUsersCount=t},SET_PAGE:function(e,t){e.currentPage=t},SET_PAGE_SIZE:function(e,t){e.pageSize=t},SET_PASSWORD_RESET_TOKEN:function(e,t){var n=t.token,a=t.link;e.passwordResetToken.token=n,e.passwordResetToken.link=a},SET_SEARCH_QUERY:function(e,t){e.searchQuery=t},SET_USERS_FILTERS:function(e,t){e.filters=t},SET_USER_PROFILE:function(e,t){e.userProfile=t}},actions:{AddTag:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=n.users,o=n.tag,s=i.map(function(e){return e.nickname}),e.next=5,$t(s,[o],r.authHost,r.token);case 5:a("SWAP_USERS",i.map(function(e){return I()({},e,{tags:[].concat(R()(e.tags),[o])})}));case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ClearFilters:function(){var e=w()(v.a.mark(function e(t){var n,a,r;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=t.commit,a=t.dispatch,r=t.state,n("CLEAR_USERS_FILTERS"),a("SearchUsers",{query:r.searchQuery,page:1});case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),CreateNewAccount:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s,c;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.dispatch,r=t.getters,i=t.state,o=n.nickname,s=n.email,c=n.password,e.next=4,Vt(o,s,c,r.authHost,r.token);case 4:a("FetchUsers",{page:i.currentPage});case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DeleteUser:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s,c;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=t.state,e.next=3,Rt(n.nickname,r.authHost,r.token);case 3:o=e.sent,s=o.data,c=i.fetchedUsers.filter(function(e){return e.nickname!==s}),a("SET_USERS",c);case 7:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),FetchUsers:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s,c;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.state,i=t.getters,o=n.page,a("SET_LOADING",!0),s=Object.keys(r.filters).filter(function(e){return r.filters[e]}).join(),e.next=6,Ht(s,i.authHost,i.token,o);case 6:c=e.sent,an(a,o,c.data);case 8:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),GetPasswordResetToken:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,t.state,r=t.getters,e.next=3,Ft(n,r.authHost,r.token);case 3:i=e.sent,o=i.data,a("SET_PASSWORD_RESET_TOKEN",o);case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),RemovePasswordToken:function(e){(0,e.commit)("SET_PASSWORD_RESET_TOKEN",{link:"",token:""})},RemoveTag:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=n.users,o=n.tag,s=i.map(function(e){return e.nickname}),e.next=5,Zt(s,[o],r.authHost,r.token);case 5:a("SWAP_USERS",i.map(function(e){return I()({},e,{tags:e.tags.filter(function(e){return e!==o})})}));case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SearchUsers:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s,c,u,l;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.commit,r=t.dispatch,i=t.state,o=t.getters,s=n.query,c=n.page,0!==s.length){e.next=7;break}a("SET_SEARCH_QUERY",s),r("FetchUsers",{page:c}),e.next=14;break;case 7:return a("SET_LOADING",!0),a("SET_SEARCH_QUERY",s),u=Object.keys(i.filters).filter(function(e){return i.filters[e]}).join(),e.next=12,Gt(s,u,o.authHost,o.token,c);case 12:l=e.sent,an(a,c,l.data);case 14:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ToggleUserActivation:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,e.next=3,qt(n,r.authHost,r.token);case 3:i=e.sent,o=i.data,a("SWAP_USER",o);case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ToggleUsersFilter:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,r=t.dispatch,i=t.state,o={local:!1,external:!1,active:!1,deactivated:!1},s=I()({},o,n),a("SET_USERS_FILTERS",s),r("SearchUsers",{query:i.searchQuery,page:1});case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ToggleRight:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,s;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.commit,r=t.getters,i=n.user,o=n.right,!i.roles[o]){e.next=7;break}return e.next=5,It(i.nickname,o,r.authHost,r.token);case 5:e.next=9;break;case 7:return e.next=9,Pt(i.nickname,o,r.authHost,r.token);case 9:s=I()({},i,{roles:I()({},i.roles,qe()({},o,!i.roles[o]))}),a("SWAP_USER",s);case 11:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}},an=function(e,t,n){var a=n.users,r=n.count,i=n.page_size;e("SET_USERS",a),e("SET_COUNT",r),e("SET_PAGE",t),e("SET_PAGE_SIZE",i),e("SET_LOADING",!1)},rn=nn,on={sidebar:function(e){return e.app.sidebar},language:function(e){return e.app.language},size:function(e){return e.app.size},device:function(e){return e.app.device},visitedViews:function(e){return e.tagsView.visitedViews},cachedViews:function(e){return e.tagsView.cachedViews},token:function(e){return e.user.token},avatar:function(e){return e.user.avatar},name:function(e){return e.user.name},introduction:function(e){return e.user.introduction},status:function(e){return e.user.status},roles:function(e){return e.user.roles},setting:function(e){return e.user.setting},permission_routers:function(e){return e.permission.routers},addRouters:function(e){return e.permission.addRouters},errorLogs:function(e){return e.errorLog.logs},users:function(e){return e.users.fetchedUsers},authHost:function(e){return e.user.authHost},activityPub:function(e){return e.settings.settings.activitypub},adminToken:function(e){return e.settings.settings.admin_token},assets:function(e){return e.settings.settings.assets},auth:function(e){return e.settings.settings.auth},autoLinker:function(e){return e.settings.settings.auto_linker},captcha:function(e){return e.settings.settings["Pleroma.Captcha"]},chat:function(e){return e.settings.settings.chat},consoleLogger:function(e){return e.settings.settings.console},corsPlugCredentials:function(e){return e.settings.settings.credentials},corsPlugExpose:function(e){return e.settings.settings.expose},corsPlugHeaders:function(e){return e.settings.settings.headers},corsPlugMaxAge:function(e){return e.settings.settings.max_age},corsPlugMethods:function(e){return e.settings.settings.methods},database:function(e){return e.settings.settings.database},ectoRepos:function(e){return e.settings.settings.ecto_repos},emailNotifications:function(e){return e.settings.settings.email_notifications},emoji:function(e){return e.settings.settings.emoji},enabled:function(e){return e.settings.settings.enabled},endpoint:function(e){return e.settings.settings["Pleroma.Web.Endpoint"]},exsyslogger:function(e){return e.settings.settings.ex_syslogger},facebook:function(e){return e.settings.settings["Ueberauth.Strategy.Facebook.OAuth"]},fetchInitialPosts:function(e){return e.settings.settings.fetch_initial_posts},formatEncoders:function(e){return e.settings.settings.format_encoders},frontend:function(e){return e.settings.settings.frontend_configurations},google:function(e){return e.settings.settings["Ueberauth.Strategy.Google.OAuth"]},gopher:function(e){return e.settings.settings.gopher},hackneyPools:function(e){return e.settings.settings.hackney_pools},handler:function(e){return e.settings.settings.handler},http:function(e){return e.settings.settings.http},httpSecurity:function(e){return e.settings.settings.http_security},instance:function(e){return e.settings.settings.instance},kocaptcha:function(e){return e.settings.settings["Pleroma.Captcha.Kocaptcha"]},level:function(e){return e.settings.settings.level},ldap:function(e){return e.settings.settings.ldap},loggerBackends:function(e){return e.settings.settings.backends},mailer:function(e){return e.settings.settings["Pleroma.Emails.Mailer"]},markup:function(e){return e.settings.settings.markup},mediaProxy:function(e){return e.settings.settings.media_proxy},meta:function(e){return e.settings.settings.meta},metadata:function(e){return e.settings.settings["Pleroma.Web.Metadata"]},microsoft:function(e){return e.settings.settings["Ueberauth.Strategy.Microsoft.OAuth"]},mimeTypesConfig:function(e){return e.settings.settings.types},mrfHellthread:function(e){return e.settings.settings.mrf_hellthread},mrfKeyword:function(e){return e.settings.settings.mrf_keyword},mrfMention:function(e){return e.settings.settings.mrf_mention},mrfNormalizeMarkup:function(e){return e.settings.settings.mrf_normalize_markup},mrfRejectnonpublic:function(e){return e.settings.settings.mrf_rejectnonpublic},mrfSimple:function(e){return e.settings.settings.mrf_simple},mrfSubchain:function(e){return e.settings.settings.mrf_subchain},mrfUserAllowlist:function(e){return e.settings.settings.mrf_user_allowlist},mrfVocabulary:function(e){return e.settings.settings.mrf_vocabulary},oauth2:function(e){return e.settings.settings.oauth2},passwordAuthenticator:function(e){return e.settings.settings.password_authenticator},pleromaAuthenticator:function(e){return e.settings.settings["Pleroma.Web.Auth.Authenticator"]},pleromaRepo:function(e){return e.settings.settings["Pleroma.Repo"]},pleromaUser:function(e){return e.settings.settings["Pleroma.User"]},port:function(e){return e.settings.settings.port},privDir:function(e){return e.settings.settings.priv_dir},queues:function(e){return e.settings.settings.queues},rateLimiters:function(e){return e.settings.settings.rate_limit},retryQueue:function(e){return e.settings.settings["Pleroma.Web.Federator.RetryQueue"]},richMedia:function(e){return e.settings.settings.rich_media},suggestions:function(e){return e.settings.settings.suggestions},scheduledActivity:function(e){return e.settings.settings["Pleroma.ScheduledActivity"]},teslaAdapter:function(e){return e.settings.settings.adapter},twitter:function(e){return e.settings.settings["Ueberauth.Strategy.Twitter.OAuth"]},ueberauth:function(e){return e.settings.settings.Ueberauth},uploadAnonymizeFilename:function(e){return e.settings.settings["Pleroma.Upload.Filter.AnonymizeFilename"]},upload:function(e){return e.settings.settings["Pleroma.Upload"]},uploadFilterMogrify:function(e){return e.settings.settings["Pleroma.Upload.Filter.Mogrify"]},uploadersLocal:function(e){return e.settings.settings["Pleroma.Uploaders.Local"]},uploadMDII:function(e){return e.settings.settings["Pleroma.Uploaders.MDII"]},uploadS3:function(e){return e.settings.settings["Pleroma.Uploaders.S3"]},uriSchemes:function(e){return e.settings.settings.uri_schemes},user:function(e){return e.settings.settings.user},userEmail:function(e){return e.settings.settings["Pleroma.Emails.UserEmail"]},vapidDetails:function(e){return e.settings.settings.vapid_details},webhookUrl:function(e){return e.settings.settings.webhook_url}},sn=n("qh4k"),cn={state:{localPacks:{},remotePacks:{}},mutations:{SET_LOCAL_PACKS:function(e,t){e.localPacks=t},SET_REMOTE_PACKS:function(e,t){e.remotePacks=t},UPDATE_LOCAL_PACK_VAL:function(e,t){var n=t.name,a=t.key,i=t.value;r.default.set(e.localPacks[n].pack,a,i)},UPDATE_LOCAL_PACK_PACK:function(e,t){var n=t.name,a=t.pack;e.localPacks[n].pack=a},UPDATE_LOCAL_PACK_FILES:function(e,t){var n=t.name,a=t.files;r.default.set(e.localPacks[n],"files",a)}},actions:{SetLocalEmojiPacks:function(){var e=w()(v.a.mark(function e(t){var n,a,r,i;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.commit,a=t.getters,t.state,e.next=3,Object(sn.f)(a.authHost);case 3:r=e.sent,i=r.data,n("SET_LOCAL_PACKS",i);case 6:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),SetRemoteEmojiPacks:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,t.getters,t.state,r=n.remoteInstance,e.next=4,Object(sn.f)(r);case 4:i=e.sent,o=i.data,a("SET_REMOTE_PACKS",o);case 7:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),DownloadFrom:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,a=t.getters,t.state,r=n.instanceAddress,i=n.packName,o=n.as,e.next=4,Object(sn.d)(a.authHost,r,i,o,a.token);case 4:"ok"===e.sent.data&&Object(s.Message)({message:"Successfully downloaded ".concat(i),type:"success",duration:5e3});case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),ReloadEmoji:function(){var e=w()(v.a.mark(function e(t){var n;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,n=t.getters,t.state,e.next=3,Object(sn.g)(n.authHost,n.token);case 3:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),ImportFromFS:function(){var e=w()(v.a.mark(function e(t){var n,a,r;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,n=t.getters,t.state,e.next=3,Object(sn.e)(n.authHost,n.token);case 3:200===(a=e.sent).status&&(r=a.data.length>0?"Successfully imported ".concat(a.data):"No new packs to import",Object(s.Message)({message:r,type:"success",duration:5e3}));case 5:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}(),DeletePack:function(){var e=w()(v.a.mark(function e(t,n){var a,r;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,a=t.getters,t.state,r=n.name,e.next=4,Object(sn.c)(a.authHost,a.token,r);case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),CreatePack:function(){var e=w()(v.a.mark(function e(t,n){var a,r;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.commit,a=t.getters,t.state,r=n.name,e.next=4,Object(sn.b)(a.authHost,a.token,r);case 4:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),UpdateLocalPackVal:function(){var e=w()(v.a.mark(function e(t,n){var a;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=t.commit,t.getters,t.state,a("UPDATE_LOCAL_PACK_VAL",n);case 2:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),SavePackMetadata:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o,c;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,i=t.state,o=n.packName,e.next=4,Object(sn.h)(r.authHost,r.token,o,i.localPacks[o].pack);case 4:200===(c=e.sent).status&&(Object(s.Message)({message:"Successfully updated ".concat(o," metadata"),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_PACK",{name:o,pack:c.data}));case 6:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}(),UpdateAndSavePackFile:function(){var e=w()(v.a.mark(function e(t,n){var a,r,i,o;return v.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.commit,r=t.getters,t.state,e.next=3,Object(sn.i)(r.authHost,r.token,n);case 3:200===(i=e.sent).status&&(o=n.packName,Object(s.Message)({message:"Successfully updated ".concat(o," files"),type:"success",duration:5e3}),a("UPDATE_LOCAL_PACK_FILES",{name:o,files:i.data}));case 5:case"end":return e.stop()}},e)}));return function(t,n){return e.apply(this,arguments)}}()}};r.default.use(m.a);var un=new m.a.Store({modules:{app:h,errorLog:f,invites:V,permission:Ie,reports:$e,settings:_t,tagsView:Et,user:Lt,userProfile:tn,users:rn,emoji_packs:cn},getters:on}),ln=n("mSNy"),dn=n("wAo7");r.default.component("svg-icon",dn.a);!function(e){e.keys().map(e)}(n("Uf/o")),r.default.config.errorHandler=function(e,t,n,a){r.default.nextTick(function(){un.dispatch("addErrorLog",{err:e,vm:t,info:n,url:window.location.href}),console.error(e,n)})};var pn=n("Mj6V"),mn=n.n(pn);n("pdi6");mn.a.configure({showSpinner:!1});var hn=["/login","/auth-redirect","/login-pleroma"];function fn(e,t){return 1===e?e+t:e+t+"s"}function gn(e){var t=Date.now()/1e3-Number(e);return t<3600?fn(~~(t/60)," minute"):t<86400?fn(~~(t/3600)," hour"):fn(~~(t/86400)," day")}function vn(e,t){for(var n=[{value:1e18,symbol:"E"},{value:1e15,symbol:"P"},{value:1e12,symbol:"T"},{value:1e9,symbol:"G"},{value:1e6,symbol:"M"},{value:1e3,symbol:"k"}],a=0;a=n[a].value)return(e/n[a].value+.1).toFixed(t).replace(/\.0+$|(\.[0-9]*[1-9])0+$/,"$1")+n[a].symbol;return e.toString()}function bn(e){return(+e||0).toString().replace(/^-?\d+/g,function(e){return e.replace(/(?=(?!\b)(\d{3})+$)/g,",")})}Ve.beforeEach(function(e,t,n){mn.a.start(),Object(x.b)()?"/login"===e.path?(n({path:"/"}),mn.a.done()):0===un.getters.roles.length?un.dispatch("GetUserInfo").then(function(t){var a=t.data.pleroma.is_admin?["admin"]:[];un.dispatch("GenerateRoutes",{roles:a}).then(function(){Ve.addRoutes(un.getters.addRouters),n(I()({},e,{replace:!0}))})}).catch(function(e){un.dispatch("FedLogOut").then(function(){s.Message.error(e),n({path:"/"})})}):function(e,t){return e.indexOf("admin")>=0||!t||e.some(function(e){return t.indexOf(e)>=0})}(un.getters.roles,e.meta.roles)?n():n({path:"/401",replace:!0,query:{noGoBack:!0}}):-1!==hn.indexOf(e.path)?n():(n("/login?redirect=".concat(e.path)),mn.a.done())}),Ve.afterEach(function(){mn.a.done()}),r.default.use(c.a,{size:o.a.get("size")||"medium",i18n:function(e,t){return ln.a.t(e,t)}}),Object.keys(a).forEach(function(e){r.default.filter(e,a[e])}),r.default.config.productionTip=!1,new r.default({el:"#app",router:Ve,store:un,i18n:ln.a,render:function(e){return e(p)}})},X4fA:function(e,t,n){"use strict";n.d(t,"b",function(){return s}),n.d(t,"f",function(){return c}),n.d(t,"d",function(){return u}),n.d(t,"a",function(){return l}),n.d(t,"e",function(){return d}),n.d(t,"c",function(){return p});var a=n("p46w"),r=n.n(a),i="Admin-Token",o="Auth-Host";function s(){return r.a.get(i)}function c(e){return r.a.set(i,e)}function u(){return r.a.remove(i)}function l(){return r.a.get(o)}function d(e){return r.a.set(o,e)}function p(){return r.a.remove(o)}},Xb1Q:function(e,t,n){"use strict";var a=n("86pr");n.n(a).a},Xm3t:function(e,t,n){},Yymj:function(e,t,n){"use strict";var a=n("jf83");n.n(a).a},"Z+gY":function(e,t,n){"use strict";var a=n("Kcm3");n.n(a).a},ZZmv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-excel",use:"icon-excel-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},ZoO1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-guide",use:"icon-guide-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},bndD:function(e,t,n){"use strict";var a=n("y+Q6");n.n(a).a},cIpu:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-star",use:"icon-star-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},gNoN:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-wechat",use:"icon-wechat-usage",viewBox:"0 0 128 110",content:''});o.a.add(s);t.default=s},hkRB:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-size",use:"icon-size-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},iqZD:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-zip",use:"icon-zip-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},j7e1:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-tab",use:"icon-tab-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},jf83:function(e,t,n){},jo2x:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-search",use:"icon-search-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},k80C:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-tree",use:"icon-tree-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},kPu2:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-documentation",use:"icon-documentation-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},"m7++":function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-drag",use:"icon-drag-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},mSHS:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-fullscreen",use:"icon-fullscreen-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},mSNy:function(e,t,n){"use strict";var a=n("MVZn"),r=n.n(a),i=n("Kw5r"),o=n("qSUR"),s=n("p46w"),c=n.n(s),u=n("stYL"),l=n.n(u),d=n("8NkQ"),p=n.n(d),m=n("PtZe"),h=n.n(m);i.default.use(o.a);var f={en:r()({},{route:{dashboard:"Dashboard",introduction:"Introduction",documentation:"Documentation",guide:"Guide",permission:"Permission",pagePermission:"Page Permission",directivePermission:"Directive Permission",icons:"Icons",components:"Components",componentIndex:"Introduction",tinymce:"Tinymce",markdown:"Markdown",jsonEditor:"JSON Editor",dndList:"Dnd List",splitPane:"SplitPane",avatarUpload:"Avatar Upload",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"BackToTop",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Charts",keyboardChart:"Keyboard Chart",lineChart:"Line Chart",mixChart:"Mix Chart",example:"Example",nested:"Nested Routes",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",Table:"Table",dynamicTable:"Dynamic Table",dragTable:"Drag Table",inlineEditTable:"Inline Edit",complexTable:"Complex Table",treeTable:"Tree Table",customTreeTable:"Custom TreeTable",tab:"Tab",form:"Form",createArticle:"Create Article",editArticle:"Edit Article",articleList:"Article List",errorPages:"Error Pages",page401:"401",page404:"404",errorLog:"Error Log",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"Theme",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"External Link",users:"Users",reports:"Reports",settings:"Settings","emoji-packs":"Emoji packs"},navbar:{logOut:"Log Out",dashboard:"Dashboard",github:"Github",theme:"Theme",size:"Global Size"},login:{title:"Login Form",logIn:"Log in",logInViaPleromaFE:"Log in via PleromaFE",username:"username@host",password:"password",omitHostname:"omit hostname if Pleroma is located on this domain",errorMessage:"Username must contain username and host, e.g. john@pleroma.social",any:"any",thirdparty:"Or connect with",pleromaFELoginFailed:"Failed to login via PleromaFE, please login with username/password",pleromaFELoginSucceed:"Logged in via PleromaFE"},documentation:{documentation:"Documentation",github:"Github Repository"},permission:{roles:"Your roles",switchRoles:"Switch roles",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if."},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Show Guide"},components:{documentation:"Documentation",tinymceTips:"Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"The default order",dragTips2:"The after dragging order",title:"Title",importance:"Imp",type:"Type",remark:"Remark",search:"Search",add:"Add",export:"Export",reviewer:"reviewer",id:"ID",date:"Date",author:"Author",readings:"Readings",status:"Status",actions:"Actions",edit:"Edit",publish:"Publish",draft:"Draft",delete:"Delete",cancel:"Cancel",confirm:"Confirm"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Document introduction"},excel:{export:"Export",selectedExport:"Export Selected Items",placeholder:"Please enter the file name(default excel-list)"},zip:{export:"Export",placeholder:"Please enter the file name(default file)"},pdf:{tips:"Here we use window.print() to implement the feature of downloading pdf."},theme:{change:"Change Theme",documentation:"Theme documentation",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Refresh",close:"Close",closeOthers:"Close Others",closeAll:"Close All"},users:{users:"Users",localUsersOnly:"Local users only",search:"Search",id:"ID",name:"Name",status:"Status",local:"local",external:"external",deactivated:"deactivated",active:"active",actions:"Actions",activate:"Activate",deactivate:"Deactivate",admin:"admin",moderator:"moderator",moderation:"Moderation",revokeAdmin:"Revoke Admin",grantAdmin:"Grant Admin",revokeModerator:"Revoke Moderator",grantModerator:"Grant Moderator",activateAccount:"Activate Account",activateAccounts:"Activate Accounts",deactivateAccount:"Deactivate Account",deactivateAccounts:"Deactivate Accounts",deleteAccount:"Delete Account",deleteAccounts:"Delete Accounts",forceNsfw:"Force posts to be NSFW",stripMedia:"Force posts not to have media",forceUnlisted:"Force posts to be unlisted",sandbox:"Force posts to be followers-only",disableRemoteSubscription:"Disallow following user from remote instances",disableRemoteSubscriptionForMultiple:"Disallow following users from remote instances",disableAnySubscription:"Disallow following user at all",disableAnySubscriptionForMultiple:"Disallow following users at all",selectUsers:"Select users to apply actions to multiple users",moderateUsers:"Moderate multiple users",createAccount:"Create new account",apply:"apply",remove:"remove",grantRightConfirmation:"Are you sure you want to grant {right} rights to all selected users?",revokeRightConfirmation:"Are you sure you want to revoke {right} rights from all selected users?",activateMultipleUsersConfirmation:"Are you sure you want to activate accounts of all selected users?",deactivateMultipleUsersConfirmation:"Are you sure you want to deactivate accounts of all selected users?",deleteMultipleUsersConfirmation:"Are you sure you want to delete accounts of all selected users?",addTagForMultipleUsersConfirmation:"Are you sure you want to apply tag to all selected users?",removeTagFromMultipleUsersConfirmation:"Are you sure you want to remove tag from all selected users?",ok:"Okay",completed:"Completed",cancel:"Cancel",canceled:"Canceled",username:"Username",email:"E-mail",password:"Password",create:"Create",submitFormError:"There are invalid values in the form. Please fix them before continuing.",emptyEmailError:"Please input the e-mail",invalidEmailError:"Please input valid e-mail",emptyPasswordError:"Please input the password",emptyNicknameError:"Please input the username",invalidNicknameError:'Username can include "a-z", "A-Z" and "0-9" characters',getPasswordResetToken:"Get password reset token",passwordResetTokenCreated:"Password reset token was created",accountCreated:"New account was created!"},userProfile:{tags:"Tags",moderator:"Moderator",admin:"Admin",local:"Local",nickname:"Nickname",deactivated:"Deactivated",recentStatuses:"Recent Statues",showPrivateStatuses:"Show private statuses"},usersFilter:{inputPlaceholder:"Select filter",byUserType:"By user type",local:"Local",external:"External",byStatus:"By status",active:"Active",deactivated:"Deactivated"},reports:{reports:"Reports",reply:"Reply",from:"From",showNotes:"Show notes",newNote:"New note",submit:"Submit",confirmMsg:"Are you sure you want to delete this note?",delete:"Delete",cancel:"Cancel",deleteCompleted:"Delete comleted",deleteCanceled:"Delete canceled",noNotes:"No notes to display",changeState:"Change report state",changeScope:"Change scope",moderateUser:"Moderate user",resolve:"Resolve",reopen:"Reopen",close:"Close",addSensitive:"Add Sensitive flag",removeSensitive:"Remove Sensitive flag",public:"Make status public",private:"Make status private",unlisted:"Make status unlisted",sensitive:"Sensitive",deleteStatus:"Delete status"},reportsFilter:{inputPlaceholder:"Select filter",open:"Open",closed:"Closed",resolved:"Resolved"},settings:{settings:"Settings",instance:"Instance",upload:"Upload",mailer:"Mailer",logger:"Logger",activityPub:"ActivityPub",auth:"Authentication",autoLinker:"Auto Linker",captcha:"Captcha",frontend:"Frontend",http:"HTTP",mrf:"MRF",mediaProxy:"Media Proxy",metadata:"Metadata",gopher:"Gopher",endpoint:"Endpoint",jobQueue:"Job queue",webPush:"Web push encryption",esshd:"BBS / SSH access",rateLimiters:"Rate limiters",database:"Database",other:"Other",success:"Settings changed successfully!"},invites:{inviteTokens:"Invite tokens",createInviteToken:"Generate invite token",pickDate:"Pick a date",maxUse:"Max use",expiresAt:"Expires at",tokenCreated:"Invite token was created",token:"Token",uses:"Uses",used:"Used",cancel:"Cancel",create:"Create",revoke:"Revoke",id:"ID",actions:"Actions",active:"Active",inviteUserViaEmail:"Invite user via email",sendRegistration:"Send registration invite via email",email:"Email",name:"Name",emptyEmailError:"Please input the e-mail",invalidEmailError:"Please input valid e-mail",emailSent:"Invite was sent",submitFormError:"There are invalid values in the form. Please fix them before continuing.",inviteViaEmailAlert:"To send invite via email make sure to enable `invites_enabled` and disable `registrations_open`"}},l.a),zh:r()({},{route:{dashboard:"首页",introduction:"简述",documentation:"文档",guide:"引导页",permission:"权限测试页",pagePermission:"页面权限",directivePermission:"指令权限",icons:"图标",components:"组件",componentIndex:"介绍",tinymce:"富文本编辑器",markdown:"Markdown",jsonEditor:"JSON编辑器",dndList:"列表拖拽",splitPane:"Splitpane",avatarUpload:"头像上传",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"小组件",backToTop:"返回顶部",dragDialog:"拖拽 Dialog",dragSelect:"拖拽 Select",dragKanban:"可拖拽看板",charts:"图表",keyboardChart:"键盘图表",lineChart:"折线图",mixChart:"混合图表",example:"综合实例",nested:"路由嵌套",menu1:"菜单1","menu1-1":"菜单1-1","menu1-2":"菜单1-2","menu1-2-1":"菜单1-2-1","menu1-2-2":"菜单1-2-2","menu1-3":"菜单1-3",menu2:"菜单2",Table:"Table",dynamicTable:"动态Table",dragTable:"拖拽Table",inlineEditTable:"Table内编辑",complexTable:"综合Table",treeTable:"树形表格",customTreeTable:"自定义树表",tab:"Tab",form:"表单",createArticle:"创建文章",editArticle:"编辑文章",articleList:"文章列表",errorPages:"错误页面",page401:"401",page404:"404",errorLog:"错误日志",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"换肤",clipboardDemo:"Clipboard",i18n:"国际化",externalLink:"外链"},navbar:{logOut:"退出登录",dashboard:"首页",github:"项目地址",theme:"换肤",size:"布局大小"},login:{title:"系统登录",logIn:"登录",username:"账号",password:"密码",any:"随便填",thirdparty:"第三方登录",thirdpartyTips:"本地不能模拟,请结合自己业务进行模拟!!!"},documentation:{documentation:"文档",github:"Github 地址"},permission:{roles:"你的权限",switchRoles:"切换权限",tips:"在某些情况下,不适合使用 v-permission。例如:Element-UI 的 Tab 组件或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。"},guide:{description:"引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于",button:"打开引导"},components:{documentation:"文档",tinymceTips:"富文本是管理后台一个核心的功能,但同时又是一个有很多坑的地方。在选择富文本的过程中我也走了不少的弯路,市面上常见的富文本都基本用过了,最终权衡了一下选择了Tinymce。更详细的富文本比较和介绍见",dropzoneTips:"由于我司业务有特殊需求,而且要传七牛 所以没用第三方,选择了自己封装。代码非常的简单,具体代码你可以在这里看到 @/components/Dropzone",stickyTips:"当页面滚动到预设的位置会吸附在顶部",backToTopTips1:"页面滚动到指定位置会在右下角出现返回顶部按钮",backToTopTips2:"可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素",imageUploadTips:"由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。"},table:{dynamicTips1:"固定表头, 按照表头顺序排序",dynamicTips2:"不固定表头, 按照点击顺序排序",dragTips1:"默认顺序",dragTips2:"拖拽后顺序",title:"标题",importance:"重要性",type:"类型",remark:"点评",search:"搜索",add:"添加",export:"导出",reviewer:"审核人",id:"序号",date:"时间",author:"作者",readings:"阅读数",status:"状态",actions:"操作",edit:"编辑",publish:"发布",draft:"草稿",delete:"删除",cancel:"取 消",confirm:"确 定"},errorLog:{tips:"请点击右上角bug小图标",description:"现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。",documentation:"文档介绍"},excel:{export:"导出",selectedExport:"导出已选择项",placeholder:"请输入文件名(默认excel-list)"},zip:{export:"导出",placeholder:"请输入文件名(默认file)"},pdf:{tips:"这里使用 window.print() 来实现下载pdf的功能"},theme:{change:"换肤",documentation:"换肤文档",tips:"Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。"},tagsView:{refresh:"刷新",close:"关闭",closeOthers:"关闭其它",closeAll:"关闭所有"}},p.a),es:r()({},{route:{dashboard:"Panel de control",introduction:"Introducción",documentation:"Documentación",guide:"Guía",permission:"Permisos",pagePermission:"Permisos de la página",directivePermission:"Permisos de la directiva",icons:"Iconos",components:"Componentes",componentIndex:"Introducción",tinymce:"Tinymce",markdown:"Markdown",jsonEditor:"Editor JSON",dndList:"Lista Dnd",splitPane:"Panel dividido",avatarUpload:"Subir avatar",dropzone:"Subir ficheros",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"Ir arriba",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Gráficos",keyboardChart:"Keyboard Chart",lineChart:"Gráfico de líneas",mixChart:"Mix Chart",example:"Ejemplo",nested:"Rutas anidadass",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",Table:"Tabla",dynamicTable:"Tabla dinámica",dragTable:"Arrastrar tabla",inlineEditTable:"Editor",complexTable:"Complex Table",treeTable:"Tree Table",customTreeTable:"Custom TreeTable",tab:"Pestaña",form:"Formulario",createArticle:"Crear artículo",editArticle:"Editar artículo",articleList:"Listado de artículos",errorPages:"Páginas de error",page401:"401",page404:"404",errorLog:"Registro de errores",excel:"Excel",exportExcel:"Exportar a Excel",selectExcel:"Export seleccionado",uploadExcel:"Subir Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportar a Zip",theme:"Tema",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"Enlace externo"},navbar:{logOut:"Salir",dashboard:"Panel de control",github:"Github",theme:"Tema",size:"Tamaño global"},login:{title:"Formulario de acceso",logIn:"Acceso",username:"Usuario",password:"Contraseña",any:"nada",thirdparty:"Conectar con",thirdpartyTips:"No se puede simular en local, así que combine su propia simulación de negocios. ! !"},documentation:{documentation:"Documentación",github:"Repositorio Github"},permission:{roles:"Tus permisos",switchRoles:"Cambiar permisos",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if."},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Ver guía"},components:{documentation:"Documentación",tinymceTips:"Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"Orden por defecto",dragTips2:"The after dragging order",title:"Título",importance:"Importancia",type:"Tipo",remark:"Remark",search:"Buscar",add:"Añadir",export:"Exportar",reviewer:"reviewer",id:"ID",date:"Fecha",author:"Autor",readings:"Lector",status:"Estado",actions:"Acciones",edit:"Editar",publish:"Publicar",draft:"Draft",delete:"Eliminar",cancel:"Cancelar",confirm:"Confirmar"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Documento de introducción"},excel:{export:"Exportar",selectedExport:"Exportar seleccionados",placeholder:"Por favor escribe un nombre de fichero"},zip:{export:"Exportar",placeholder:"Por favor escribe un nombre de fichero"},pdf:{tips:"Here we use window.print() to implement the feature of downloading pdf."},theme:{change:"Cambiar tema",documentation:"Documentación del tema",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Actualizar",close:"Cerrar",closeOthers:"Cerrar otros",closeAll:"Cerrar todos"}},h.a),oc:r()({},{route:{dashboard:"Tablèu de bòrd",introduction:"Introduccion",documentation:"Documentacion",guide:"Guida",permission:"Autorizacions",pagePermission:"Pagina d’autorizacion",directivePermission:"Politica d’autorizacion",icons:"Icònas",components:"Compausants",componentIndex:"Introduccion",tinymce:"Tinymce",markdown:"Markdown",jsonEditor:"JSON Editor",dndList:"Dnd List",splitPane:"SplitPane",avatarUpload:"Mandadís d’avatar",dropzone:"Dropzone",sticky:"Sticky",countTo:"CountTo",componentMixin:"Mixin",backToTop:"BackToTop",dragDialog:"Drag Dialog",dragSelect:"Drag Select",dragKanban:"Drag Kanban",charts:"Charts",keyboardChart:"Keyboard Chart",lineChart:"Line Chart",mixChart:"Mix Chart",example:"Exemple",nested:"Rotas imbricadas",menu1:"Menú 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menú 2",Table:"Tablèu",dynamicTable:"Tablèu dinamic",dragTable:"Drag Table",inlineEditTable:"Inline Edit",complexTable:"Tablèu complèx",treeTable:"Arborescéncia",customTreeTable:"Arborescéncia personalizada",tab:"Onglet",form:"Formulari",createArticle:"Crear un article",editArticle:"Modificar l’article",articleList:"Lista d’articles",errorPages:"Paginas d’error",page401:"401",page404:"404",errorLog:"Jornal d’error",excel:"Excel",exportExcel:"Exportacion Excel",selectExcel:"Exportar los seleccionats",uploadExcel:"Importacion Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportacion Zip",theme:"Tèma",clipboardDemo:"Clipboard",i18n:"I18n",externalLink:"Ligams extèrnes",users:"Utilizaires"},navbar:{logOut:"Desconnexion",dashboard:"Tablèu de bòrd",github:"Github",theme:"Tèma",size:"Talha totala"},login:{title:"Formulari de connexion",logIn:"Se connectar",username:"Nom d’’utilizaire",password:"Senhal",any:"qual que siá",thirdparty:"O se connectar amb",thirdpartyTips:"Pòt pas èsser simulat en local, doncas montatz vòstra pròpria simulacion ! ! !"},documentation:{documentation:"Documentacion",github:"Repertòri Github"},permission:{roles:"Vòstres ròtles",switchRoles:"Cambiar de ròtle",tips:"Dins qualques cases es pas de bon far d’utilizar v-permission, coma element d’onglet compausant, el-table-column o d’autres renduts dom asincròns que pòdon pas que foncionar amb un parametratge manual de v-if."},guide:{description:"La pagina de guida es utila pel monde que dintran dins lo projècte pel primièr còp. Podètz presentar en un mot las foncionalitats del projèctes. La demo es fondada sus ",button:"Mostrar la guida"},components:{documentation:"Documentacion",tinymceTips:"Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.",dropzoneTips:"Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/Dropzone.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version."},table:{dynamicTips1:"Bandièra fixa, triada per òrdre de bandièra",dynamicTips2:"Bandièra pas fixa, triada per òrdre de clic",dragTips1:"L’’òrdre per defaut",dragTips2:"L’’òrdre aprèp lisar-depausar",title:"Títol",importance:"Imp",type:"Tipe",remark:"Remarca",search:"Recercar",add:"Ajustar",export:"Exportar",reviewer:"examinator",id:"ID",date:"Data",author:"Autor",readings:"Lecturas",status:"Estatuts",actions:"Accions",edit:"Modificar",publish:"Publicar",draft:"Ensag",delete:"Suprimir",cancel:"Anullar",confirm:"Confirmar"},errorLog:{tips:"Mercés de clicar l’’icòna del babau amont a man drecha",description:"Ara que lo sistèma de gestion es coma un spa, melhora l’experiéncia dels utilizaire mas aumenta tanben lo risc de problèmas sus la pagina, una pichona negligéncia pòt menar a un blocatge complèt de la pagina. Urosament Vue fornís de manièras per gerir las excepcions, trobar las errors o senhalar las excepcions.",documentation:"Presentacion del document"},excel:{export:"Exportar",selectedExport:"Exportar los elements seleccionats",placeholder:"Mercés de picar lo nom de fichièr (per defaut excel-list)"},zip:{export:"Exportar",placeholder:"Mercés de picar lo nom de fichièr (per defaut file)"},pdf:{tips:"Aquí utilizam window.print() per prepausar lo telecargament de pdf."},theme:{change:"Cambiar lo tèma",documentation:"Documentacion dels tèmas",tips:"Astúcia : es diferent del theme-pick de la barra de navigacion, i a dos metòdes de personalizacion, caduna amb un biais de far diferent. Referiscam a la documentacion per mai de detalhs."},tagsView:{refresh:"Actualizar",close:"Tampar",closeOthers:"Tampar los autres",closeAll:"Los tampar totes"}})},g=new o.a({locale:c.a.get("language")||"en",messages:f});t.a=g},nZHn:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-icon",use:"icon-icon-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},oUrx:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-404",use:"icon-404-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},qh4k:function(e,t,n){"use strict";n.d(t,"c",function(){return p}),n.d(t,"g",function(){return h}),n.d(t,"e",function(){return g}),n.d(t,"b",function(){return b}),n.d(t,"f",function(){return y}),n.d(t,"d",function(){return _}),n.d(t,"h",function(){return k}),n.d(t,"i",function(){return O}),n.d(t,"a",function(){return L});var a=n("o0o1"),r=n.n(a),i=n("yXPU"),o=n.n(i),s=n("t3Un"),c=n("X4fA"),u=n("9i3r"),l=n("LvDl"),d=n.n(l);function p(e,t,n){return m.apply(this,arguments)}function m(){return(m=o()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(s.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a),method:"delete",headers:P(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function h(e,t){return f.apply(this,arguments)}function f(){return(f=o()(r.a.mark(function e(t,n){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(s.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/admin/reload_emoji",method:"post",headers:P(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function g(e,t){return v.apply(this,arguments)}function v(){return(v=o()(r.a.mark(function e(t,n){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(s.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/import_from_fs",method:"post",headers:P(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function b(e,t,n){return w.apply(this,arguments)}function w(){return(w=o()(r.a.mark(function e(t,n,a){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(s.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a),method:"put",headers:P(n)});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function y(e){return x.apply(this,arguments)}function x(){return(x=o()(r.a.mark(function e(t){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(s.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/",method:"get"});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function _(e,t,n,a,r){return T.apply(this,arguments)}function T(){return(T=o()(r.a.mark(function e(t,n,a,i,o){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return""===i.trim()&&(i=null),e.next=3,Object(s.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/download_from",method:"post",headers:P(o),data:{instance_address:n,pack_name:a,as:i},timeout:0});case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function k(e,t,n,a){return E.apply(this,arguments)}function E(){return(E=o()(r.a.mark(function e(t,n,a,i){return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Object(s.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(a,"/update_metadata"),method:"post",headers:P(n),data:{name:a,new_data:i},timeout:0});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function S(e){var t=new FormData;return d.a.each(e,function(e,n){t.set(n,e)}),t}function O(e,t,n){return A.apply(this,arguments)}function A(){return(A=o()(r.a.mark(function e(t,n,a){var i,o,c,l,d,p,m,h,f;return r.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:i=null,e.t0=a.action,e.next="add"===e.t0?4:"update"===e.t0?8:"remove"===e.t0?11:14;break;case 4:return o=a.shortcode,c=a.file,l=a.fileName,i=S({action:"add",shortcode:o,file:c}),""!==l.trim()&&i.set("filename",l),e.abrupt("break",14);case 8:return d=a.oldName,p=a.newName,m=a.newFilename,i=S({action:"update",shortcode:d,new_shortcode:p,new_filename:m}),e.abrupt("break",14);case 11:return h=a.name,i=S({action:"remove",shortcode:h}),e.abrupt("break",14);case 14:return f=a.packName,e.next=17,Object(s.a)({baseURL:Object(u.a)(t),url:"/api/pleroma/emoji/packs/".concat(f,"/update_file"),method:"post",headers:P(n),data:i,timeout:0});case 17:return e.abrupt("return",e.sent);case 18:case"end":return e.stop()}},e)}))).apply(this,arguments)}function L(e,t,n){return"http://".concat(Object(u.a)(e),"/emoji/").concat(t,"/").concat(n)}var P=function(e){return e?{Authorization:"Bearer ".concat(Object(c.b)())}:{}}},qkZ8:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-edit",use:"icon-edit-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},qwAt:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-lock",use:"icon-lock-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},s7Vf:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-user",use:"icon-user-usage",viewBox:"0 0 130 130",content:''});o.a.add(s);t.default=s},"sg+I":function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}},t3Un:function(e,t,n){"use strict";var a=n("vDqi"),r=n.n(a),i=n("XJYT"),o=r.a.create({timeout:6e4});o.interceptors.response.use(function(e){return e},function(e){return console.log("Error "+e),Object(i.Message)({message:"".concat(e.message," - ").concat(e.response.data),type:"error",duration:5e3}),Promise.reject(e)}),t.a=o},vDVG:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-clipboard",use:"icon-clipboard-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},wAo7:function(e,t,n){"use strict";var a={name:"SvgIcon",props:{iconClass:{type:String,required:!0},className:{type:String,default:""}},computed:{iconName:function(){return"#icon-".concat(this.iconClass)},svgClass:function(){return this.className?"svg-icon "+this.className:"svg-icon"}}},r=(n("bndD"),n("KHd+")),i=Object(r.a)(a,function(){var e=this.$createElement,t=this._self._c||e;return t("svg",this._g({class:this.svgClass,attrs:{"aria-hidden":"true"}},this.$listeners),[t("use",{attrs:{"xlink:href":this.iconName}})])},[],!1,null,"4e710b96",null);i.options.__file="index.vue";t.a=i.exports},"y+Q6":function(e,t,n){},y7eQ:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-email",use:"icon-email-usage",viewBox:"0 0 128 96",content:''});o.a.add(s);t.default=s},yCkv:function(e,t,n){"use strict";n.r(t);var a=n("4BeY"),r=n.n(a),i=n("IaFt"),o=n.n(i),s=new r.a({id:"icon-chart",use:"icon-chart-usage",viewBox:"0 0 128 128",content:''});o.a.add(s);t.default=s},yDdW:function(e,t,n){},zx4i:function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"180px"}}},[["Vtdi","runtime","chunk-elementUI","chunk-libs"]]]); +//# sourceMappingURL=app.90c455c5.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/app.90c455c5.js.map b/priv/static/adminfe/static/js/app.90c455c5.js.map new file mode 100644 index 000000000..242ad185b --- /dev/null +++ b/priv/static/adminfe/static/js/app.90c455c5.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/components/Hamburger/index.vue?5acb","webpack:///./src/icons/svg/pdf.svg","webpack:///./src/views/layout/components/TagsView.vue?3db2","webpack:///./src/icons/svg/people.svg","webpack:///./src/icons/svg/eye-open.svg","webpack:///./src/icons/svg/exit-fullscreen.svg","webpack:///./src/icons/svg/nested.svg","webpack:///./src/icons/svg/theme.svg","webpack:///./src/icons/svg/form.svg","webpack:///./src/icons/svg/dashboard.svg","webpack:///./src/api/utils.js","webpack:///./src/icons/svg/shopping.svg","webpack:///./src/icons/svg/bug.svg","webpack:///./src/icons/svg/international.svg","webpack:///./src/icons/svg/qq.svg","webpack:///./src/icons/svg/link.svg","webpack:///./src/icons/svg/guide 2.svg","webpack:///./src/icons/svg/language.svg","webpack:///./src/icons/svg/password.svg","webpack:///./src/icons/svg/peoples.svg","webpack:///./src/icons/svg/money.svg","webpack:///./src/icons/svg/example.svg","webpack:///./src/icons/svg/list.svg","webpack:///./src/components/ScrollPane/index.vue?7102","webpack:///./src/icons/svg/settings.svg","webpack:///./src/icons/svg/message.svg","webpack:///./src/icons/svg/table.svg","webpack:///./src/views/layout/Layout.vue?d1f6","webpack:///./src/icons/svg/eye.svg","webpack:///./src/icons/svg sync nonrecursive \\.svg$","webpack:///./src/icons/svg/component.svg","webpack:///./src/App.vue?9edb","webpack:///src/App.vue","webpack:///./src/App.vue","webpack:///./src/App.vue?1e50","webpack:///./src/store/modules/app.js","webpack:///./src/store/modules/errorLog.js","webpack:///./src/api/invites.js","webpack:///./src/store/modules/invites.js","webpack:///./src/components/Hamburger/index.vue?3b1d","webpack:///src/components/Hamburger/index.vue","webpack:///./src/components/Hamburger/index.vue","webpack:///./src/components/Hamburger/index.vue?4a26","webpack:///./src/views/layout/components/Navbar.vue?138b","webpack:///src/views/layout/components/Navbar.vue","webpack:///./src/views/layout/components/Navbar.vue","webpack:///./src/views/layout/components/Navbar.vue?f10c","webpack:///./src/utils/i18n.js","webpack:///./src/utils/index.js","webpack:///src/views/layout/components/Sidebar/Item.vue","webpack:///./src/views/layout/components/Sidebar/Item.vue?425b","webpack:///./src/views/layout/components/Sidebar/Item.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue?a99f","webpack:///src/views/layout/components/Sidebar/Link.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue","webpack:///./src/views/layout/components/Sidebar/Link.vue?d88c","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue?f0b2","webpack:///src/views/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/views/layout/components/Sidebar/FixiOSBug.js","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/views/layout/components/Sidebar/SidebarItem.vue?9711","webpack:///./src/views/layout/components/Sidebar/index.vue?3b50","webpack:///src/views/layout/components/Sidebar/index.vue","webpack:///./src/views/layout/components/Sidebar/index.vue","webpack:///./src/views/layout/components/Sidebar/index.vue?29d8","webpack:///./src/components/ScrollPane/index.vue?cb98","webpack:///src/components/ScrollPane/index.vue","webpack:///./src/components/ScrollPane/index.vue","webpack:///./src/components/ScrollPane/index.vue?67f9","webpack:///./src/views/layout/components/TagsView.vue?f016","webpack:///src/views/layout/components/TagsView.vue","webpack:///./src/views/layout/components/TagsView.vue","webpack:///./src/views/layout/components/TagsView.vue?184c","webpack:///./src/views/layout/components/AppMain.vue?4460","webpack:///src/views/layout/components/AppMain.vue","webpack:///./src/views/layout/components/AppMain.vue","webpack:///./src/views/layout/components/AppMain.vue?367b","webpack:///./src/views/layout/mixin/ResizeHandler.js","webpack:///./src/views/layout/Layout.vue?de6d","webpack:///src/views/layout/Layout.vue","webpack:///./src/views/layout/Layout.vue","webpack:///./src/views/layout/Layout.vue?9516","webpack:///./src/router/index.js","webpack:///./src/store/modules/permission.js","webpack:///./src/api/reports.js","webpack:///./src/store/modules/reports.js","webpack:///./src/api/settings.js","webpack:///./src/api/initialDataForConfig.js","webpack:///./src/store/modules/normalizers.js","webpack:///./src/store/modules/settings.js","webpack:///./src/store/modules/tagsView.js","webpack:///./src/api/login.js","webpack:///./src/store/modules/user.js","webpack:///./src/api/users.js","webpack:///./src/store/modules/userProfile.js","webpack:///./src/store/modules/users.js","webpack:///./src/store/getters.js","webpack:///./src/store/modules/emoji_packs.js","webpack:///./src/store/index.js","webpack:///./src/icons/index.js","webpack:///./src/errorLog.js","webpack:///./src/permission.js","webpack:///./src/filters/index.js","webpack:///./src/main.js","webpack:///./src/utils/auth.js","webpack:///./src/views/layout/components/Navbar.vue?23be","webpack:///./src/views/layout/components/TagsView.vue?da45","webpack:///./src/views/layout/components/AppMain.vue?2c3a","webpack:///./src/icons/svg/excel.svg","webpack:///./src/icons/svg/guide.svg","webpack:///./src/components/SvgIcon/index.vue?9ad5","webpack:///./src/icons/svg/star.svg","webpack:///./src/icons/svg/wechat.svg","webpack:///./src/icons/svg/size.svg","webpack:///./src/icons/svg/zip.svg","webpack:///./src/icons/svg/tab.svg","webpack:///./src/icons/svg/search.svg","webpack:///./src/icons/svg/tree.svg","webpack:///./src/icons/svg/documentation.svg","webpack:///./src/icons/svg/drag.svg","webpack:///./src/icons/svg/fullscreen.svg","webpack:///./src/lang/index.js","webpack:///./src/lang/en.js","webpack:///./src/lang/zh.js","webpack:///./src/lang/es.js","webpack:///./src/lang/oc.js","webpack:///./src/icons/svg/icon.svg","webpack:///./src/icons/svg/404.svg","webpack:///./src/api/emoji_packs.js","webpack:///./src/icons/svg/edit.svg","webpack:///./src/icons/svg/lock.svg","webpack:///./src/icons/svg/user.svg","webpack:///./src/styles/index.scss","webpack:///./src/utils/request.js","webpack:///./src/icons/svg/clipboard.svg","webpack:///./src/components/SvgIcon/index.vue?bff9","webpack:///./src/components/SvgIcon/index.vue?40ff","webpack:///src/components/SvgIcon/index.vue","webpack:///./src/components/SvgIcon/index.vue","webpack:///./src/icons/svg/email.svg","webpack:///./src/icons/svg/chart.svg","webpack:///./src/styles/variables.scss"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_3ee86d44_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","r","__webpack_exports__","svg_baker_runtime_browser_symbol__WEBPACK_IMPORTED_MODULE_0__","svg_baker_runtime_browser_symbol__WEBPACK_IMPORTED_MODULE_0___default","svg_sprite_loader_runtime_browser_sprite_build__WEBPACK_IMPORTED_MODULE_1__","svg_sprite_loader_runtime_browser_sprite_build__WEBPACK_IMPORTED_MODULE_1___default","symbol","a","id","use","viewBox","content","add","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_TagsView_vue_vue_type_style_index_0_id_67e96c42_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","d","baseName","instanceName","startsWith","isLocalhost","concat","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_547b5dea_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Layout_vue_vue_type_style_index_0_id_767d264f_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","map","./404.svg","./bug.svg","./chart.svg","./clipboard.svg","./component.svg","./dashboard.svg","./documentation.svg","./drag.svg","./edit.svg","./email.svg","./example.svg","./excel.svg","./exit-fullscreen.svg","./eye-open.svg","./eye.svg","./form.svg","./fullscreen.svg","./guide 2.svg","./guide.svg","./icon.svg","./international.svg","./language.svg","./link.svg","./list.svg","./lock.svg","./message.svg","./money.svg","./nested.svg","./password.svg","./pdf.svg","./people.svg","./peoples.svg","./qq.svg","./search.svg","./settings.svg","./shopping.svg","./size.svg","./star.svg","./tab.svg","./table.svg","./theme.svg","./tree.svg","./user.svg","./wechat.svg","./zip.svg","webpackContext","req","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","src_Appvue_type_script_lang_js_","name","component","componentNormalizer","_h","this","$createElement","_c","_self","attrs","options","__file","App","app","state","sidebar","opened","Cookies","get","withoutAnimation","device","language","size","mutations","TOGGLE_SIDEBAR","set","CLOSE_SIDEBAR","TOGGLE_DEVICE","SET_LANGUAGE","SET_SIZE","actions","toggleSideBar","_ref","commit","closeSideBar","_ref2","_ref3","toggleDevice","_ref4","setLanguage","_ref5","setSize","_ref6","errorLog","logs","ADD_ERROR_LOG","log","push","addErrorLog","generateInviteToken","_x","_x2","_x3","_x4","_generateInviteToken","apply","arguments","_callee","max_use","expires_at","authHost","token","regenerator_default","wrap","_context","prev","next","request","baseURL","url","method","headers","authHeaders","data","length","abrupt","sent","stop","inviteViaEmail","_x5","_x6","_x7","_x8","_inviteViaEmail","_callee2","email","_context2","listInviteTokens","_x9","_x10","_listInviteTokens","_callee3","_context3","revokeToken","_x11","_x12","_x13","_revokeToken","_callee4","tokenToRevoke","_context4","Authorization","getToken","invites","inviteTokens","loading","newToken","SET_LOADING","status","SET_NEW_TOKEN","SET_TOKENS","tokens","FetchInviteTokens","_FetchInviteTokens","asyncToGenerator_default","mark","getters","response","reverse","GenerateInviteToken","_GenerateInviteToken","dispatch","maxUse","expiresAt","InviteUserViaEmail","_InviteUserViaEmail","RemoveNewToken","_ref7","RevokeToken","_RevokeToken","_ref8","components_Hamburgervue_type_script_lang_js_","props","isActive","type","Boolean","default","toggleClick","Function","Hamburger_component","staticStyle","padding","on","click","staticClass","class","is-active","xmlns","width","height","components_Navbarvue_type_script_lang_js_","components","Hamburger","computed","objectSpread_default","vuex_esm","methods","$store","logout","then","location","reload","Navbar_component","_vm","toggle-click","_v","trigger","src","avatar","slot","display","_s","$t","Navbar","generateTitle","title","$te","parseTime","time","cFormat","date","format","typeof_default","test","parseInt","toString","Date","formatObj","y","getFullYear","m","getMonth","getDate","h","getHours","i","getMinutes","s","getSeconds","getDay","replace","result","key","value","formatTime","option","diff","now","Math","ceil","isExternal","path","Sidebar_Itemvue_type_script_lang_js_","functional","icon","String","render","context","_context$props","vnodes","icon-class","Item_component","Item_render","Item_staticRenderFns","Item","Sidebar_Linkvue_type_script_lang_js_","to","required","linkProps","is","href","target","rel","Link_component","_b","_t","Sidebar_SidebarItemvue_type_script_lang_js_","AppLink","mixins","mounted","fixBugIniOS","_this","$subMenu","$refs","subMenu","handleMouseleave","item","isNest","basePath","onlyOneChild","hasOneShowingChild","children","parent","showingChildren","filter","hidden","noShowingChildren","resolvePath","routePath","isExternalLink","path_browserify_default","SidebarItem_component","alwaysShow","ref","index","meta","_e","_l","child","is-nest","base-path","submenu-title-noDropdown","SidebarItem","components_Sidebarvue_type_script_lang_js_","variables","variables_default","isCollapse","Sidebar_component","wrap-class","default-active","$route","collapse","background-color","menuBg","text-color","menuText","active-text-color","menuActiveText","mode","route","Sidebar","components_ScrollPanevue_type_script_lang_js_","left","handleScroll","eventDelta","wheelDelta","deltaY","$scrollWrapper","scrollContainer","scrollLeft","moveToTarget","currentTag","$containerWidth","$el","offsetWidth","tagList","$parent","tag","firstTag","lastTag","scrollWidth","currentIndex","findIndex","prevTag","nextTag","afterNextTagOffsetLeft","offsetLeft","beforePrevTagOffsetLeft","ScrollPane_component","vertical","nativeOn","wheel","$event","preventDefault","components_TagsViewvue_type_script_lang_js_","ScrollPane","visible","top","selectedTag","affixTags","visitedViews","tagsView","routers","permission","watch","addTags","moveToCurrentTag","document","body","addEventListener","closeMenu","removeEventListener","initTags","filterAffixTags","routes","undefined","tags","forEach","affix","tempTags","toConsumableArray_default","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","Symbol","iterator","done","err","return","_this2","$nextTick","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","scrollPane","fullPath","refreshSelectedTag","view","_this3","$router","closeSelectedTag","_this4","toLastView","closeOthersTags","_this5","closeAllTags","_this6","some","latestView","slice","openMenu","getBoundingClientRect","maxLeft","clientX","clientY","TagsView_component","refInFor","query","mouseup","button","contextmenu","stopPropagation","directives","rawName","expression","style","TagsView","components_AppMainvue_type_script_lang_js_","cachedViews","AppMain_component","include","AppMain","layout_Layoutvue_type_script_lang_js_","store","beforeMount","window","resizeHandler","isMobile","classObj","hideSidebar","openSidebar","mobile","handleClickOutside","Layout_component","Layout","Vue","Router","disabledFeatures","process","settingsDisabled","includes","settings","Promise","all","bind","noCache","reportsDisabled","reports","invitesDisabled","emojiPacksDisabled","emojiPacks","constantRouterMap","redirect","router","scrollBehavior","asyncRouterMap","addRouters","SET_ROUTERS","GenerateRoutes","accessedRouters","roles","filterAsyncRouter","res","tmp","role","hasPermission","changeState","_changeState","changeStatusScope","_changeStatusScope","sensitive","visibility","deleteStatus","_deleteStatus","fetchReports","_x14","_x15","_x16","_fetchReports","limit","max_id","filterReports","_x17","_x18","_x19","_x20","_x21","_filterReports","_callee5","_context5","fetchedReports","idOfLastReport","page_limit","stateFilter","SET_LAST_REPORT_ID","SET_REPORTS","SET_REPORTS_FILTER","ChangeReportState","_ChangeReportState","reportState","reportId","updatedReports","report","ChangeStatusScope","_ChangeStatusScope","statusId","isSensitive","statuses","ClearFetchedReports","DeleteStatus","_DeleteStatus","_ref9","FetchReports","_FetchReports","_ref10","t0","SetFilter","_ref11","fetchSettings","_fetchSettings","updateSettings","_updateSettings","configs","uploadMedia","_uploadMedia","file","formData","FormData","append","initialSettings","group","tuple","application/activity+json","application/jrd+json","application/ld+json","application/xml","application/xrd+xml","nonAtomsTuples","nonAtomsObjects","objects","objectParents","groups","cors_plug","esshd","logger","mime","phoenix","pleroma","pleroma_job_queue","quack","tesla","ueberauth","web_push_encryption","filterIgnored","ignored","enabled","reduce","acc","objectWithoutProperties_default","_toPropertyKey","parseNonAtomTuples","tuples","parseNonAtomObject","object","parseObject","substr","wrapConfig","config","getGroup","settingName","ip","split","Array","isArray","wrapNonAtomsObjects","wrapNestedObjects","wrapObjects","wrapNonAtomsTuples","wrapNestedTuples","setting","defineProperty_default","find","activitypub","adapter","admin_token","assets","mascots","auth","auto_linker","opts","backends","chat","console","colors","credentials","database","ecto_repos","email_notifications","digest","emoji","ex_syslogger","expose","fetch_initial_posts","format_encoders","frontend_configurations","pleroma_fe","masto_fe","gopher","hackney_pools","federation","media","upload","handler","http","http_security","instance","poll_limits","level","ldap","markup","max_age","media_proxy","proxy_opts","mrf_hellthread","mrf_keyword","mrf_mention","mrf_normalize_markup","mrf_rejectnonpublic","mrf_simple","mrf_subchain","match_actor","mrf_user_allowlist","mrf_vocabulary","oauth2","password_authenticator","Pleroma.Captcha","Pleroma.Captcha.Kocaptcha","Pleroma.Emails.Mailer","Pleroma.Emails.UserEmail","styling","Pleroma.Repo","Pleroma.ScheduledActivity","Pleroma.Upload","Pleroma.Upload.Filter.AnonymizeFilename","Pleroma.Upload.Filter.Mogrify","Pleroma.Uploaders.Local","Pleroma.Uploaders.MDII","Pleroma.Uploaders.S3","Pleroma.User","Pleroma.Web.Auth.Authenticator","Pleroma.Web.Endpoint","render_errors","pubsub","Pleroma.Web.Federator.RetryQueue","Pleroma.Web.Metadata","port","priv_dir","queues","rate_limit","rich_media","suggestions","types","Ueberauth","Ueberauth.Strategy.Facebook.OAuth","Ueberauth.Strategy.Google.OAuth","Ueberauth.Strategy.Microsoft.OAuth","Ueberauth.Strategy.Twitter.OAuth","user","uri_schemes","vapid_details","webhook_url","ignoredIfNotEnabled","REWRITE_CONFIG","tab","SET_SETTINGS","newSettings","valueIsArrayOfNonObjects","valueHasTuples","parseTuples","accum","join","UPDATE_SETTINGS","configName","FetchSettings","_FetchSettings","RewriteConfig","SubmitChanges","_SubmitChanges","filteredSettings","UpdateSettings","UploadMedia","_UploadMedia","inputName","childName","updatedValue","ADD_VISITED_VIEW","v","assign","ADD_CACHED_VIEW","DEL_VISITED_VIEW","entries","_step$value","slicedToArray_default","splice","DEL_CACHED_VIEW","indexOf","DEL_OTHERS_VISITED_VIEWS","DEL_OTHERS_CACHED_VIEWS","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","DEL_ALL_VISITED_VIEWS","DEL_ALL_CACHED_VIEWS","UPDATE_VISITED_VIEW","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","addView","addVisitedView","addCachedView","delView","delVisitedView","delCachedView","delOthersViews","delOthersVisitedViews","delOthersCachedViews","delAllViews","delAllVisitedViews","delAllCachedViews","_ref12","updateVisitedView","_ref13","loginByUsername","_loginByUsername","username","password","appsRequest","client_name","random","redirect_uris","origin","scopes","client_id","client_secret","grant_type","getUserInfo","getAuthHost","introduction","articlePlatform","SET_CODE","SET_TOKEN","SET_INTRODUCTION","SET_SETTING","SET_STATUS","SET_NAME","SET_AVATAR","SET_ROLES","SET_ID","SET_AUTH_HOST","LoginByUsername","reject","access_token","setToken","setAuthHost","catch","error","message","GetUserInfo","is_admin","LogOut","removeToken","removeAuthHost","FedLogOut","LoginByPleromaFE","_LoginByPleromaFE","host","addRight","_addRight","nickname","right","createNewAccount","_createNewAccount","users","deleteRight","_deleteRight","deleteUser","_deleteUser","fetchUser","_fetchUser","fetchUsers","_x22","_fetchUsers","_callee6","filters","page","_args6","_context6","getPasswordResetToken","_x23","_x24","_x25","_getPasswordResetToken","_callee7","_context7","searchUsers","_x26","_x27","_x28","_x29","_searchUsers","_callee8","_args8","_context8","tagUser","_x30","_x31","_x32","_x33","_tagUser","_callee9","nicknames","_context9","toggleUserActivation","_x34","_x35","_x36","_toggleUserActivation","_callee10","_context10","untagUser","_x37","_x38","_x39","_x40","_untagUser","_callee11","_context11","fetchUserStatuses","_x41","_x42","_x43","_x44","_fetchUserStatuses","_callee12","godmode","_context12","userProfile","SET_USER","SET_STATUSES","FetchData","_FetchData","userResponse","statusesResponse","fetchedUsers","searchQuery","totalUsersCount","currentPage","local","external","active","deactivated","passwordResetToken","link","SET_USERS","SWAP_USER","updatedUser","updated","sort","b","localeCompare","SWAP_USERS","usersWithoutSwapped","u","SET_COUNT","count","SET_PAGE","SET_PAGE_SIZE","pageSize","SET_PASSWORD_RESET_TOKEN","SET_SEARCH_QUERY","SET_USERS_FILTERS","SET_USER_PROFILE","AddTag","_AddTag","ClearFilters","_ClearFilters","CreateNewAccount","_CreateNewAccount","DeleteUser","_DeleteUser","FetchUsers","_FetchUsers","loadUsers","GetPasswordResetToken","_GetPasswordResetToken","RemovePasswordToken","RemoveTag","_RemoveTag","_ref14","_ref15","userTag","SearchUsers","_SearchUsers","_ref16","_ref17","ToggleUserActivation","_ToggleUserActivation","_ref18","_ref19","ToggleUsersFilter","_ToggleUsersFilter","_ref20","defaultFilters","currentFilters","ToggleRight","_ToggleRight","_ref21","_ref22","_ref23","page_size","permission_routers","errorLogs","activityPub","adminToken","autoLinker","captcha","consoleLogger","corsPlugCredentials","corsPlugExpose","corsPlugHeaders","corsPlugMaxAge","corsPlugMethods","ectoRepos","emailNotifications","endpoint","exsyslogger","facebook","fetchInitialPosts","formatEncoders","frontend","google","hackneyPools","httpSecurity","kocaptcha","loggerBackends","mailer","mediaProxy","metadata","microsoft","mimeTypesConfig","mrfHellthread","mrfKeyword","mrfMention","mrfNormalizeMarkup","mrfRejectnonpublic","mrfSimple","mrfSubchain","mrfUserAllowlist","mrfVocabulary","passwordAuthenticator","pleromaAuthenticator","pleromaRepo","pleromaUser","privDir","rateLimiters","retryQueue","richMedia","scheduledActivity","teslaAdapter","twitter","uploadAnonymizeFilename","uploadFilterMogrify","uploadersLocal","uploadMDII","uploadS3","uriSchemes","userEmail","vapidDetails","webhookUrl","packs","localPacks","remotePacks","SET_LOCAL_PACKS","SET_REMOTE_PACKS","UPDATE_LOCAL_PACK_VAL","UPDATE_LOCAL_PACK_PACK","pack","UPDATE_LOCAL_PACK_FILES","files","SetLocalEmojiPacks","_SetLocalEmojiPacks","listPacks","SetRemoteEmojiPacks","_SetRemoteEmojiPacks","remoteInstance","DownloadFrom","_DownloadFrom","instanceAddress","packName","as","downloadFrom","Message","duration","ReloadEmoji","_ReloadEmoji","reloadEmoji","ImportFromFS","_ImportFromFS","importFromFS","DeletePack","_DeletePack","deletePack","CreatePack","_CreatePack","createPack","UpdateLocalPackVal","_UpdateLocalPackVal","args","SavePackMetadata","_SavePackMetadata","savePackMetadata","UpdateAndSavePackFile","_UpdateAndSavePackFile","updatePackFile","Vuex","Store","modules","emoji_packs","SvgIcon","requireContext","requireAll","require","errorHandler","vm","info","nextTick","NProgress","configure","showSpinner","whiteList","pluralize","label","timeAgo","between","Number","numberFormatter","num","digits","si","toFixed","toThousandFilter","beforeEach","from","start","addRoutes","permissionRoles","noGoBack","afterEach","Element","i18n","t","productionTip","el","js_cookie__WEBPACK_IMPORTED_MODULE_0__","js_cookie__WEBPACK_IMPORTED_MODULE_0___default","TokenKey","AuthHostKey","remove","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Navbar_vue_vue_type_style_index_0_id_b535c57a_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_TagsView_vue_vue_type_style_index_1_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_AppMain_vue_vue_type_style_index_0_id_f852c4f2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_4e710b96_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","VueI18n","messages","en","dashboard","documentation","guide","pagePermission","directivePermission","icons","componentIndex","tinymce","markdown","jsonEditor","dndList","splitPane","avatarUpload","dropzone","sticky","countTo","componentMixin","backToTop","dragDialog","dragSelect","dragKanban","charts","keyboardChart","lineChart","mixChart","example","nested","menu1","menu1-1","menu1-2","menu1-2-1","menu1-2-2","menu1-3","menu2","Table","dynamicTable","dragTable","inlineEditTable","complexTable","treeTable","customTreeTable","form","createArticle","editArticle","articleList","errorPages","page401","page404","excel","exportExcel","selectExcel","uploadExcel","zip","pdf","exportZip","theme","clipboardDemo","externalLink","emoji-packs","navbar","logOut","github","login","logIn","logInViaPleromaFE","omitHostname","errorMessage","any","thirdparty","pleromaFELoginFailed","pleromaFELoginSucceed","switchRoles","tips","description","tinymceTips","dropzoneTips","stickyTips","backToTopTips1","backToTopTips2","imageUploadTips","table","dynamicTips1","dynamicTips2","dragTips1","dragTips2","importance","remark","search","export","reviewer","author","readings","edit","publish","draft","delete","cancel","confirm","selectedExport","placeholder","change","refresh","close","closeOthers","closeAll","localUsersOnly","activate","deactivate","admin","moderator","moderation","revokeAdmin","grantAdmin","revokeModerator","grantModerator","activateAccount","activateAccounts","deactivateAccount","deactivateAccounts","deleteAccount","deleteAccounts","forceNsfw","stripMedia","forceUnlisted","sandbox","disableRemoteSubscription","disableRemoteSubscriptionForMultiple","disableAnySubscription","disableAnySubscriptionForMultiple","selectUsers","moderateUsers","createAccount","grantRightConfirmation","revokeRightConfirmation","activateMultipleUsersConfirmation","deactivateMultipleUsersConfirmation","deleteMultipleUsersConfirmation","addTagForMultipleUsersConfirmation","removeTagFromMultipleUsersConfirmation","ok","completed","canceled","create","submitFormError","emptyEmailError","invalidEmailError","emptyPasswordError","emptyNicknameError","invalidNicknameError","passwordResetTokenCreated","accountCreated","recentStatuses","showPrivateStatuses","usersFilter","inputPlaceholder","byUserType","byStatus","reply","showNotes","newNote","submit","confirmMsg","deleteCompleted","deleteCanceled","noNotes","changeScope","moderateUser","reopen","addSensitive","removeSensitive","public","private","unlisted","reportsFilter","open","closed","resolved","mrf","jobQueue","webPush","other","success","createInviteToken","pickDate","tokenCreated","uses","used","revoke","inviteUserViaEmail","sendRegistration","emailSent","inviteViaEmailAlert","elementEnLocale","zh","thirdpartyTips","elementZhLocale","es","elementEsLocale","oc","locale","_deletePack","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","_reloadEmoji","_importFromFS","_createPack","_listPacks","_downloadFrom","instance_address","pack_name","trim","timeout","_savePackMetadata","new_data","fileUpdateFormData","_","each","k","_updatePackFile","shortcode","fileName","oldName","newName","newFilename","action","new_shortcode","new_filename","addressOfEmojiInPack","subMenuActiveText","menuHover","subMenuBg","subMenuHover","sideBarWidth","axios__WEBPACK_IMPORTED_MODULE_0__","axios__WEBPACK_IMPORTED_MODULE_0___default","element_ui__WEBPACK_IMPORTED_MODULE_1__","service","axios","interceptors","components_SvgIconvue_type_script_lang_js_","iconClass","className","iconName","svgClass","_g","aria-hidden","$listeners","xlink:href"],"mappings":"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","file":"static/js/app.90c455c5.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--7-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=3ee86d44&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--7-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=3ee86d44&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-pdf\",\n \"use\": \"icon-pdf-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=0&id=67e96c42&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=0&id=67e96c42&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-people\",\n \"use\": \"icon-people-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-eye-open\",\n \"use\": \"icon-eye-open-usage\",\n \"viewBox\": \"0 0 1024 1024\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-exit-fullscreen\",\n \"use\": \"icon-exit-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-nested\",\n \"use\": \"icon-nested-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-theme\",\n \"use\": \"icon-theme-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-form\",\n \"use\": \"icon-form-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-dashboard\",\n \"use\": \"icon-dashboard-usage\",\n \"viewBox\": \"0 0 128 100\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","const isLocalhost = (instanceName) =>\n instanceName.startsWith('localhost:') || instanceName.startsWith('127.0.0.1:')\n\nexport const baseName = (instanceName) =>\n isLocalhost(instanceName) ? `http://${instanceName}` : `https://${instanceName}`\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-shopping\",\n \"use\": \"icon-shopping-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-bug\",\n \"use\": \"icon-bug-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-international\",\n \"use\": \"icon-international-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-qq\",\n \"use\": \"icon-qq-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-link\",\n \"use\": \"icon-link-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-guide 2\",\n \"use\": \"icon-guide 2-usage\",\n \"viewBox\": \"0 0 1000 1000\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-language\",\n \"use\": \"icon-language-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-password\",\n \"use\": \"icon-password-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-peoples\",\n \"use\": \"icon-peoples-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-money\",\n \"use\": \"icon-money-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-example\",\n \"use\": \"icon-example-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-list\",\n \"use\": \"icon-list-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=547b5dea&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=547b5dea&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-settings\",\n \"use\": \"icon-settings-usage\",\n \"viewBox\": \"0 0 490.2 490.2\",\n \"content\": \"\\r\\n\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\t\\r\\n\\t\\t\\r\\n\\t\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-message\",\n \"use\": \"icon-message-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-table\",\n \"use\": \"icon-table-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-eye\",\n \"use\": \"icon-eye-usage\",\n \"viewBox\": \"0 0 128 64\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","var map = {\n\t\"./404.svg\": \"oUrx\",\n\t\"./bug.svg\": \"F3lI\",\n\t\"./chart.svg\": \"yCkv\",\n\t\"./clipboard.svg\": \"vDVG\",\n\t\"./component.svg\": \"VtY+\",\n\t\"./dashboard.svg\": \"94Jb\",\n\t\"./documentation.svg\": \"kPu2\",\n\t\"./drag.svg\": \"m7++\",\n\t\"./edit.svg\": \"qkZ8\",\n\t\"./email.svg\": \"y7eQ\",\n\t\"./example.svg\": \"MMMJ\",\n\t\"./excel.svg\": \"ZZmv\",\n\t\"./exit-fullscreen.svg\": \"28eg\",\n\t\"./eye-open.svg\": \"1+ww\",\n\t\"./eye.svg\": \"TfVu\",\n\t\"./form.svg\": \"6xvN\",\n\t\"./fullscreen.svg\": \"mSHS\",\n\t\"./guide 2.svg\": \"ICep\",\n\t\"./guide.svg\": \"ZoO1\",\n\t\"./icon.svg\": \"nZHn\",\n\t\"./international.svg\": \"F9+T\",\n\t\"./language.svg\": \"JYDz\",\n\t\"./link.svg\": \"GPBF\",\n\t\"./list.svg\": \"MokB\",\n\t\"./lock.svg\": \"qwAt\",\n\t\"./message.svg\": \"R/8a\",\n\t\"./money.svg\": \"MEYL\",\n\t\"./nested.svg\": \"3PhE\",\n\t\"./password.svg\": \"Kj24\",\n\t\"./pdf.svg\": \"+aF5\",\n\t\"./people.svg\": \"0Fbn\",\n\t\"./peoples.svg\": \"LxGF\",\n\t\"./qq.svg\": \"FDDl\",\n\t\"./search.svg\": \"jo2x\",\n\t\"./settings.svg\": \"P8iQ\",\n\t\"./shopping.svg\": \"EqXK\",\n\t\"./size.svg\": \"hkRB\",\n\t\"./star.svg\": \"cIpu\",\n\t\"./tab.svg\": \"j7e1\",\n\t\"./table.svg\": \"R/Hx\",\n\t\"./theme.svg\": \"5TQQ\",\n\t\"./tree.svg\": \"k80C\",\n\t\"./user.svg\": \"s7Vf\",\n\t\"./wechat.svg\": \"gNoN\",\n\t\"./zip.svg\": \"iqZD\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"Uf/o\";","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-component\",\n \"use\": \"icon-component-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../node_modules/babel-loader/lib/index.js?cacheDirectory!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js?cacheDirectory!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=6b42edcf&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"App.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Cookies from 'js-cookie'\n\nconst app = {\n state: {\n sidebar: {\n opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,\n withoutAnimation: false\n },\n device: 'desktop',\n language: Cookies.get('language') || 'en',\n size: Cookies.get('size') || 'medium'\n },\n mutations: {\n TOGGLE_SIDEBAR: state => {\n state.sidebar.opened = !state.sidebar.opened\n state.sidebar.withoutAnimation = false\n if (state.sidebar.opened) {\n Cookies.set('sidebarStatus', 1)\n } else {\n Cookies.set('sidebarStatus', 0)\n }\n },\n CLOSE_SIDEBAR: (state, withoutAnimation) => {\n Cookies.set('sidebarStatus', 0)\n state.sidebar.opened = false\n state.sidebar.withoutAnimation = withoutAnimation\n },\n TOGGLE_DEVICE: (state, device) => {\n state.device = device\n },\n SET_LANGUAGE: (state, language) => {\n state.language = language\n Cookies.set('language', language)\n },\n SET_SIZE: (state, size) => {\n state.size = size\n Cookies.set('size', size)\n }\n },\n actions: {\n toggleSideBar({ commit }) {\n commit('TOGGLE_SIDEBAR')\n },\n closeSideBar({ commit }, { withoutAnimation }) {\n commit('CLOSE_SIDEBAR', withoutAnimation)\n },\n toggleDevice({ commit }, device) {\n commit('TOGGLE_DEVICE', device)\n },\n setLanguage({ commit }, language) {\n commit('SET_LANGUAGE', language)\n },\n setSize({ commit }, size) {\n commit('SET_SIZE', size)\n }\n }\n}\n\nexport default app\n","const errorLog = {\n state: {\n logs: []\n },\n mutations: {\n ADD_ERROR_LOG: (state, log) => {\n state.logs.push(log)\n }\n },\n actions: {\n addErrorLog({ commit }, log) {\n commit('ADD_ERROR_LOG', log)\n }\n }\n}\n\nexport default errorLog\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function generateInviteToken(max_use, expires_at, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/invite_token`,\n method: 'post',\n headers: authHeaders(token),\n data: expires_at && expires_at.length > 0 ? { max_use, expires_at } : { max_use }\n })\n}\n\nexport async function inviteViaEmail(email, name, authHost, token) {\n const url = name.length > 0\n ? `/api/pleroma/admin/users/email_invite?email=${email}&name=${name}`\n : `/api/pleroma/admin/users/email_invite?email=${email}`\n return await request({\n baseURL: baseName(authHost),\n url,\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function listInviteTokens(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/invites`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function revokeToken(tokenToRevoke, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/revoke_invite`,\n method: 'post',\n headers: authHeaders(token),\n data: { token: tokenToRevoke }\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { generateInviteToken, inviteViaEmail, listInviteTokens, revokeToken } from '@/api/invites'\n\nconst invites = {\n state: {\n inviteTokens: [],\n loading: false,\n newToken: {}\n },\n mutations: {\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_NEW_TOKEN: (state, token) => {\n state.newToken = token\n },\n SET_TOKENS: (state, tokens) => {\n state.inviteTokens = tokens\n }\n },\n actions: {\n async FetchInviteTokens({ commit, getters }) {\n commit('SET_LOADING', true)\n const response = await listInviteTokens(getters.authHost, getters.token)\n commit('SET_TOKENS', response.data.invites.reverse())\n commit('SET_LOADING', false)\n },\n async GenerateInviteToken({ commit, dispatch, getters }, { maxUse, expiresAt }) {\n const { data } = await generateInviteToken(maxUse, expiresAt, getters.authHost, getters.token)\n commit('SET_NEW_TOKEN', { token: data.token, maxUse: data.max_use, expiresAt: data.expires_at })\n dispatch('FetchInviteTokens')\n },\n async InviteUserViaEmail({ commit, dispatch, getters }, { email, name }) {\n await inviteViaEmail(email, name, getters.authHost, getters.token)\n },\n RemoveNewToken({ commit }) {\n commit('SET_NEW_TOKEN', {})\n },\n async RevokeToken({ commit, dispatch, getters }, token) {\n await revokeToken(token, getters.authHost, getters.token)\n dispatch('FetchInviteTokens')\n }\n }\n}\n\nexport default invites\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3ee86d44&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=3ee86d44&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ee86d44\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"padding\":\"0 15px\"},on:{\"click\":_vm.toggleClick}},[_c('svg',{staticClass:\"hamburger\",class:{'is-active':_vm.isActive},attrs:{\"viewBox\":\"0 0 1024 1024\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"64\",\"height\":\"64\"}},[_c('path',{attrs:{\"d\":\"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Navbar.vue?vue&type=template&id=b535c57a&scoped=true&\"\nimport script from \"./Navbar.vue?vue&type=script&lang=js&\"\nexport * from \"./Navbar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navbar.vue?vue&type=style&index=0&id=b535c57a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b535c57a\",\n null\n \n)\n\ncomponent.options.__file = \"Navbar.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"navbar\"},[_c('hamburger',{staticClass:\"hamburger-container\",attrs:{\"toggle-click\":_vm.toggleSideBar,\"is-active\":_vm.sidebar.opened}}),_vm._v(\" \"),_c('div',{staticClass:\"right-menu\"},[_c('el-dropdown',{staticClass:\"avatar-container right-menu-item hover-effect\",attrs:{\"trigger\":\"click\"}},[_c('div',{staticClass:\"avatar-wrapper\"},[_c('img',{staticClass:\"user-avatar\",attrs:{\"src\":_vm.avatar+'?imageView2/1/w/80/h/80'}})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',[_c('span',{staticStyle:{\"display\":\"block\"},on:{\"click\":_vm.logout}},[_vm._v(_vm._s(_vm.$t('navbar.logOut')))])])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// translate router.meta.title, be used in breadcrumb sidebar tagsview\nexport function generateTitle(title) {\n const hasKey = this.$te('route.' + title)\n\n if (hasKey) {\n // $t :this method from vue-i18n, inject in @/lang/index.js\n const translatedTitle = this.$t('route.' + title)\n\n return translatedTitle\n }\n return title\n}\n","/**\n * Created by jiachenpan on 16/11/18.\n */\n\nexport function parseTime(time, cFormat) {\n if (arguments.length === 0) {\n return null\n }\n const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n let date\n if (typeof time === 'object') {\n date = time\n } else {\n if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {\n time = parseInt(time)\n }\n if ((typeof time === 'number') && (time.toString().length === 10)) {\n time = time * 1000\n }\n date = new Date(time)\n }\n const formatObj = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n }\n const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n let value = formatObj[key]\n // Note: getDay() returns 0 on Sunday\n if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }\n if (result.length > 0 && value < 10) {\n value = '0' + value\n }\n return value || 0\n })\n return time_str\n}\n\nexport function formatTime(time, option) {\n time = +time * 1000\n const d = new Date(time)\n const now = Date.now()\n\n const diff = (now - d) / 1000\n\n if (diff < 30) {\n return '刚刚'\n } else if (diff < 3600) {\n // less 1 hour\n return Math.ceil(diff / 60) + '分钟前'\n } else if (diff < 3600 * 24) {\n return Math.ceil(diff / 3600) + '小时前'\n } else if (diff < 3600 * 24 * 2) {\n return '1天前'\n }\n if (option) {\n return parseTime(time, option)\n } else {\n return (\n d.getMonth() +\n 1 +\n '月' +\n d.getDate() +\n '日' +\n d.getHours() +\n '时' +\n d.getMinutes() +\n '分'\n )\n }\n}\n\n// 格式化时间\nexport function getQueryObject(url) {\n url = url == null ? window.location.href : url\n const search = url.substring(url.lastIndexOf('?') + 1)\n const obj = {}\n const reg = /([^?&=]+)=([^?&=]*)/g\n search.replace(reg, (rs, $1, $2) => {\n const name = decodeURIComponent($1)\n let val = decodeURIComponent($2)\n val = String(val)\n obj[name] = val\n return rs\n })\n return obj\n}\n\n/**\n *get getByteLen\n * @param {Sting} val input value\n * @returns {number} output value\n */\nexport function getByteLen(val) {\n let len = 0\n for (let i = 0; i < val.length; i++) {\n if (val[i].match(/[^\\x00-\\xff]/gi) != null) {\n len += 1\n } else {\n len += 0.5\n }\n }\n return Math.floor(len)\n}\n\nexport function cleanArray(actual) {\n const newArray = []\n for (let i = 0; i < actual.length; i++) {\n if (actual[i]) {\n newArray.push(actual[i])\n }\n }\n return newArray\n}\n\nexport function param(json) {\n if (!json) return ''\n return cleanArray(\n Object.keys(json).map(key => {\n if (json[key] === undefined) return ''\n return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])\n })\n ).join('&')\n}\n\nexport function param2Obj(url) {\n const search = url.split('?')[1]\n if (!search) {\n return {}\n }\n return JSON.parse(\n '{\"' +\n decodeURIComponent(search)\n .replace(/\"/g, '\\\\\"')\n .replace(/&/g, '\",\"')\n .replace(/=/g, '\":\"') +\n '\"}'\n )\n}\n\nexport function html2Text(val) {\n const div = document.createElement('div')\n div.innerHTML = val\n return div.textContent || div.innerText\n}\n\nexport function objectMerge(target, source) {\n /* Merges two objects,\n giving the last one precedence */\n\n if (typeof target !== 'object') {\n target = {}\n }\n if (Array.isArray(source)) {\n return source.slice()\n }\n Object.keys(source).forEach(property => {\n const sourceProperty = source[property]\n if (typeof sourceProperty === 'object') {\n target[property] = objectMerge(target[property], sourceProperty)\n } else {\n target[property] = sourceProperty\n }\n })\n return target\n}\n\nexport function toggleClass(element, className) {\n if (!element || !className) {\n return\n }\n let classString = element.className\n const nameIndex = classString.indexOf(className)\n if (nameIndex === -1) {\n classString += '' + className\n } else {\n classString =\n classString.substr(0, nameIndex) +\n classString.substr(nameIndex + className.length)\n }\n element.className = classString\n}\n\nexport const pickerOptions = [\n {\n text: '今天',\n onClick(picker) {\n const end = new Date()\n const start = new Date(new Date().toDateString())\n end.setTime(start.getTime())\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近一周',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(end.getTime() - 3600 * 1000 * 24 * 7)\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近一个月',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)\n picker.$emit('pick', [start, end])\n }\n },\n {\n text: '最近三个月',\n onClick(picker) {\n const end = new Date(new Date().toDateString())\n const start = new Date()\n start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)\n picker.$emit('pick', [start, end])\n }\n }\n]\n\nexport function getTime(type) {\n if (type === 'start') {\n return new Date().getTime() - 3600 * 1000 * 24 * 90\n } else {\n return new Date(new Date().toDateString())\n }\n}\n\nexport function debounce(func, wait, immediate) {\n let timeout, args, context, timestamp, result\n\n const later = function() {\n // 据上一次触发时间间隔\n const last = +new Date() - timestamp\n\n // 上次被包装函数被调用时间间隔last小于设定时间间隔wait\n if (last < wait && last > 0) {\n timeout = setTimeout(later, wait - last)\n } else {\n timeout = null\n // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用\n if (!immediate) {\n result = func.apply(context, args)\n if (!timeout) context = args = null\n }\n }\n }\n\n return function(...args) {\n context = this\n timestamp = +new Date()\n const callNow = immediate && !timeout\n // 如果延时不存在,重新设定延时\n if (!timeout) timeout = setTimeout(later, wait)\n if (callNow) {\n result = func.apply(context, args)\n context = args = null\n }\n\n return result\n }\n}\n\n/**\n * This is just a simple version of deep copy\n * Has a lot of edge cases bug\n * If you want to use a perfect deep copy, use lodash's _.cloneDeep\n */\nexport function deepClone(source) {\n if (!source && typeof source !== 'object') {\n throw new Error('error arguments', 'shallowClone')\n }\n const targetObj = source.constructor === Array ? [] : {}\n Object.keys(source).forEach(keys => {\n if (source[keys] && typeof source[keys] === 'object') {\n targetObj[keys] = deepClone(source[keys])\n } else {\n targetObj[keys] = source[keys]\n }\n })\n return targetObj\n}\n\nexport function uniqueArr(arr) {\n return Array.from(new Set(arr))\n}\n\nexport function isExternal(path) {\n return /^(https?:|mailto:|tel:)/.test(path)\n}\n","\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./Item.vue?vue&type=script&lang=js&\"\nexport * from \"./Item.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Item.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Link.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Link.vue?vue&type=script&lang=js&\"","\n\n\n\n","import { render, staticRenderFns } from \"./Link.vue?vue&type=template&id=4dde2217&\"\nimport script from \"./Link.vue?vue&type=script&lang=js&\"\nexport * from \"./Link.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Link.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('component',_vm._b({},'component',_vm.linkProps(_vm.to),false),[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=js&\"","\n\n\n","export default {\n computed: {\n device() {\n return this.$store.state.app.device\n }\n },\n mounted() {\n // In order to fix the click on menu on the ios device will trigger the mouseleave bug\n // https://github.com/PanJiaChen/vue-element-admin/issues/1135\n this.fixBugIniOS()\n },\n methods: {\n fixBugIniOS() {\n const $subMenu = this.$refs.subMenu\n if ($subMenu) {\n const handleMouseleave = $subMenu.handleMouseleave\n $subMenu.handleMouseleave = (e) => {\n if (this.device === 'mobile') {\n return\n }\n handleMouseleave(e)\n }\n }\n }\n }\n}\n","import { render, staticRenderFns } from \"./SidebarItem.vue?vue&type=template&id=79436b70&\"\nimport script from \"./SidebarItem.vue?vue&type=script&lang=js&\"\nexport * from \"./SidebarItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SidebarItem.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.item.hidden&&_vm.item.children)?_c('div',{staticClass:\"menu-wrapper\"},[(_vm.hasOneShowingChild(_vm.item.children,_vm.item) && (!_vm.onlyOneChild.children||_vm.onlyOneChild.noShowingChildren)&&!_vm.item.alwaysShow)?[_c('app-link',{attrs:{\"to\":_vm.resolvePath(_vm.onlyOneChild.path)}},[_c('el-menu-item',{class:{'submenu-title-noDropdown':!_vm.isNest},attrs:{\"index\":_vm.resolvePath(_vm.onlyOneChild.path)}},[(_vm.onlyOneChild.meta)?_c('item',{attrs:{\"icon\":_vm.onlyOneChild.meta.icon||_vm.item.meta.icon,\"title\":_vm.generateTitle(_vm.onlyOneChild.meta.title)}}):_vm._e()],1)],1)]:_c('el-submenu',{ref:\"subMenu\",attrs:{\"index\":_vm.resolvePath(_vm.item.path)}},[_c('template',{slot:\"title\"},[(_vm.item.meta)?_c('item',{attrs:{\"icon\":_vm.item.meta.icon,\"title\":_vm.generateTitle(_vm.item.meta.title)}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.item.children),function(child){return [(!child.hidden)?[(child.children&&child.children.length>0)?_c('sidebar-item',{key:child.path,staticClass:\"nest-menu\",attrs:{\"is-nest\":true,\"item\":child,\"base-path\":_vm.resolvePath(child.path)}}):_c('app-link',{key:child.name,attrs:{\"to\":_vm.resolvePath(child.path)}},[_c('el-menu-item',{attrs:{\"index\":_vm.resolvePath(child.path)}},[(child.meta)?_c('item',{attrs:{\"icon\":child.meta.icon,\"title\":_vm.generateTitle(child.meta.title)}}):_vm._e()],1)],1)]:_vm._e()]})],2)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=29a0fa94&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{attrs:{\"wrap-class\":\"scrollbar-wrapper\"}},[_c('el-menu',{attrs:{\"default-active\":_vm.$route.path,\"collapse\":_vm.isCollapse,\"background-color\":_vm.variables.menuBg,\"text-color\":_vm.variables.menuText,\"active-text-color\":_vm.variables.menuActiveText,\"mode\":\"vertical\"}},_vm._l((_vm.permission_routers),function(route){return _c('sidebar-item',{key:route.path,attrs:{\"item\":route,\"base-path\":route.path}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=547b5dea&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=547b5dea&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"547b5dea\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{ref:\"scrollContainer\",staticClass:\"scroll-container\",attrs:{\"vertical\":false},nativeOn:{\"wheel\":function($event){$event.preventDefault();return _vm.handleScroll($event)}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./TagsView.vue?vue&type=template&id=67e96c42&scoped=true&\"\nimport script from \"./TagsView.vue?vue&type=script&lang=js&\"\nexport * from \"./TagsView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TagsView.vue?vue&type=style&index=0&id=67e96c42&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\nimport style1 from \"./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"67e96c42\",\n null\n \n)\n\ncomponent.options.__file = \"TagsView.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tags-view-container\"},[_c('scroll-pane',{ref:\"scrollPane\",staticClass:\"tags-view-wrapper\"},_vm._l((_vm.visitedViews),function(tag){return _c('router-link',{key:tag.path,ref:\"tag\",refInFor:true,staticClass:\"tags-view-item\",class:_vm.isActive(tag)?'active':'',attrs:{\"to\":{ path: tag.path, query: tag.query, fullPath: tag.fullPath },\"tag\":\"span\"},nativeOn:{\"mouseup\":function($event){if('button' in $event && $event.button !== 1){ return null; }return _vm.closeSelectedTag(tag)},\"contextmenu\":function($event){$event.preventDefault();return _vm.openMenu(tag,$event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.generateTitle(tag.title))+\"\\n \"),(!tag.meta.affix)?_c('span',{staticClass:\"el-icon-close\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.closeSelectedTag(tag)}}}):_vm._e()])}),1),_vm._v(\" \"),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"contextmenu\",style:({left:_vm.left+'px',top:_vm.top+'px'})},[_c('li',{on:{\"click\":function($event){return _vm.refreshSelectedTag(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.refresh')))]),_vm._v(\" \"),(!(_vm.selectedTag.meta&&_vm.selectedTag.meta.affix))?_c('li',{on:{\"click\":function($event){return _vm.closeSelectedTag(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.close')))]):_vm._e(),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.closeOthersTags}},[_vm._v(_vm._s(_vm.$t('tagsView.closeOthers')))]),_vm._v(\" \"),_c('li',{on:{\"click\":function($event){return _vm.closeAllTags(_vm.selectedTag)}}},[_vm._v(_vm._s(_vm.$t('tagsView.closeAll')))])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n","import { render, staticRenderFns } from \"./AppMain.vue?vue&type=template&id=f852c4f2&scoped=true&\"\nimport script from \"./AppMain.vue?vue&type=script&lang=js&\"\nexport * from \"./AppMain.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f852c4f2\",\n null\n \n)\n\ncomponent.options.__file = \"AppMain.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"app-main\"},[_c('transition',{attrs:{\"name\":\"fade-transform\",\"mode\":\"out-in\"}},[_c('keep-alive',{attrs:{\"include\":_vm.cachedViews}},[_c('router-view',{key:_vm.key})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import store from '@/store'\n\nconst { body } = document\nconst WIDTH = 1024\nconst RATIO = 3\n\nexport default {\n watch: {\n $route(route) {\n if (this.device === 'mobile' && this.sidebar.opened) {\n store.dispatch('closeSideBar', { withoutAnimation: false })\n }\n }\n },\n beforeMount() {\n window.addEventListener('resize', this.resizeHandler)\n },\n mounted() {\n const isMobile = this.isMobile()\n if (isMobile) {\n store.dispatch('toggleDevice', 'mobile')\n store.dispatch('closeSideBar', { withoutAnimation: true })\n }\n },\n methods: {\n isMobile() {\n const rect = body.getBoundingClientRect()\n return rect.width - RATIO < WIDTH\n },\n resizeHandler() {\n if (!document.hidden) {\n const isMobile = this.isMobile()\n store.dispatch('toggleDevice', isMobile ? 'mobile' : 'desktop')\n\n if (isMobile) {\n store.dispatch('closeSideBar', { withoutAnimation: true })\n }\n }\n }\n }\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Layout.vue?vue&type=template&id=767d264f&scoped=true&\"\nimport script from \"./Layout.vue?vue&type=script&lang=js&\"\nexport * from \"./Layout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Layout.vue?vue&type=style&index=0&id=767d264f&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"767d264f\",\n null\n \n)\n\ncomponent.options.__file = \"Layout.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-wrapper\",class:_vm.classObj},[(_vm.device==='mobile'&&_vm.sidebar.opened)?_c('div',{staticClass:\"drawer-bg\",on:{\"click\":_vm.handleClickOutside}}):_vm._e(),_vm._v(\" \"),_c('sidebar',{staticClass:\"sidebar-container\"}),_vm._v(\" \"),_c('div',{staticClass:\"main-container\"},[_c('navbar'),_vm._v(\" \"),_c('app-main')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router)\n\n/* Layout */\nimport Layout from '@/views/layout/Layout'\n\nconst disabledFeatures = process.env.DISABLED_FEATURES || []\nconst settingsDisabled = disabledFeatures.includes('settings')\nconst settings = {\n path: '/settings',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/settings/index'),\n name: 'Settings',\n meta: { title: 'Settings', icon: 'settings', noCache: true }\n }\n ]\n}\n\nconst reportsDisabled = disabledFeatures.includes('reports')\nconst reports = {\n path: '/reports',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/reports/index'),\n name: 'Reports',\n meta: { title: 'Reports', icon: 'documentation', noCache: true }\n }\n ]\n}\n\nconst invitesDisabled = disabledFeatures.includes('invites')\nconst invites = {\n path: '/invites',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/invites/index'),\n name: 'Invites',\n meta: { title: 'Invites', icon: 'guide', noCache: true }\n }\n ]\n}\n\nconst emojiPacksDisabled = disabledFeatures.includes('emoji-packs')\nconst emojiPacks = {\n path: '/emoji-packs',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/emoji-packs/index'),\n name: 'Emoji packs',\n meta: { title: 'emoji-packs', icon: 'settings', noCache: true }\n }\n ]\n}\n\nexport const constantRouterMap = [\n {\n path: '/redirect',\n component: Layout,\n hidden: true,\n children: [\n {\n path: '/redirect/:path*',\n component: () => import('@/views/redirect/index')\n }\n ]\n },\n {\n path: '/login-pleroma',\n component: () => import('@/views/login/pleroma'),\n hidden: true\n },\n {\n path: '/login',\n component: () => import('@/views/login/index'),\n hidden: true\n },\n {\n path: '/auth-redirect',\n component: () => import('@/views/login/authredirect'),\n hidden: true\n },\n {\n path: '/404',\n component: () => import('@/views/errorPage/404'),\n hidden: true\n },\n {\n path: '/401',\n component: () => import('@/views/errorPage/401'),\n hidden: true\n },\n {\n path: '',\n component: Layout,\n redirect: '/users/index'\n }\n]\n\nexport default new Router({\n // mode: 'history', // require service support\n scrollBehavior: () => ({ y: 0 }),\n routes: constantRouterMap\n})\n\nexport const asyncRouterMap = [\n {\n path: '/users',\n component: Layout,\n children: [\n {\n path: 'index',\n component: () => import('@/views/users/index'),\n name: 'Users',\n meta: { title: 'Users', icon: 'peoples', noCache: true }\n }\n ]\n },\n ...(settingsDisabled ? [] : [settings]),\n ...(reportsDisabled ? [] : [reports]),\n ...(invitesDisabled ? [] : [invites]),\n ...(emojiPacksDisabled ? [] : [emojiPacks]),\n {\n path: '/users/:id',\n component: Layout,\n children: [\n {\n path: '',\n name: 'UsersShow',\n component: () => import('@/views/users/show')\n }\n ],\n hidden: true\n },\n { path: '*', redirect: '/404', hidden: true }\n]\n","import { asyncRouterMap, constantRouterMap } from '@/router'\n\n/**\n * 通过meta.role判断是否与当前用户权限匹配\n * @param roles\n * @param route\n */\nfunction hasPermission(roles, route) {\n if (route.meta && route.meta.roles) {\n return roles.some(role => route.meta.roles.includes(role))\n } else {\n return true\n }\n}\n\n/**\n * 递归过滤异步路由表,返回符合用户角色权限的路由表\n * @param routes asyncRouterMap\n * @param roles\n */\nfunction filterAsyncRouter(routes, roles) {\n const res = []\n\n routes.forEach(route => {\n const tmp = { ...route }\n if (hasPermission(roles, tmp)) {\n if (tmp.children) {\n tmp.children = filterAsyncRouter(tmp.children, roles)\n }\n res.push(tmp)\n }\n })\n\n return res\n}\n\nconst permission = {\n state: {\n routers: [],\n addRouters: []\n },\n mutations: {\n SET_ROUTERS: (state, routers) => {\n state.addRouters = routers\n state.routers = constantRouterMap.concat(routers)\n }\n },\n actions: {\n GenerateRoutes({ commit }, data) {\n return new Promise(resolve => {\n const { roles } = data\n let accessedRouters\n if (roles.includes('admin')) {\n accessedRouters = asyncRouterMap\n } else {\n accessedRouters = filterAsyncRouter(asyncRouterMap, roles)\n }\n commit('SET_ROUTERS', accessedRouters)\n resolve()\n })\n }\n }\n}\n\nexport default permission\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function changeState(state, id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports/${id}`,\n method: 'put',\n headers: authHeaders(token),\n data: { state }\n })\n}\n\nexport async function changeStatusScope(id, sensitive, visibility, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'put',\n headers: authHeaders(token),\n data: { sensitive, visibility }\n })\n}\n\nexport async function deleteStatus(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/statuses/${id}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchReports(limit, max_id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports?limit=${limit}&max_id=${max_id}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function filterReports(filter, limit, max_id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/reports?state=${filter}&limit=${limit}&max_id=${max_id}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { changeState, changeStatusScope, deleteStatus, fetchReports, filterReports } from '@/api/reports'\n\nconst reports = {\n state: {\n fetchedReports: [],\n idOfLastReport: '',\n page_limit: 5,\n stateFilter: '',\n loading: true\n },\n mutations: {\n SET_LAST_REPORT_ID: (state, id) => {\n state.idOfLastReport = id\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_REPORTS: (state, reports) => {\n state.fetchedReports = reports\n },\n SET_REPORTS_FILTER: (state, filter) => {\n state.stateFilter = filter\n }\n },\n actions: {\n async ChangeReportState({ commit, getters, state }, { reportState, reportId }) {\n const { data } = await changeState(reportState, reportId, getters.authHost, getters.token)\n const updatedReports = state.fetchedReports.map(report => report.id === reportId ? data : report)\n commit('SET_REPORTS', updatedReports)\n },\n async ChangeStatusScope({ commit, getters, state }, { statusId, isSensitive, visibility, reportId }) {\n const { data } = await changeStatusScope(statusId, isSensitive, visibility, getters.authHost, getters.token)\n const updatedReports = state.fetchedReports.map(report => {\n if (report.id === reportId) {\n const statuses = report.statuses.map(status => status.id === statusId ? data : status)\n return { ...report, statuses }\n } else {\n return report\n }\n })\n commit('SET_REPORTS', updatedReports)\n },\n ClearFetchedReports({ commit }) {\n commit('SET_REPORTS', [])\n commit('SET_LAST_REPORT_ID', '')\n },\n async DeleteStatus({ commit, getters, state }, { statusId, reportId }) {\n deleteStatus(statusId, getters.authHost, getters.token)\n const updatedReports = state.fetchedReports.map(report => {\n if (report.id === reportId) {\n const statuses = report.statuses.filter(status => status.id !== statusId)\n return { ...report, statuses }\n } else {\n return report\n }\n })\n commit('SET_REPORTS', updatedReports)\n },\n async FetchReports({ commit, getters, state }) {\n commit('SET_LOADING', true)\n\n const response = state.stateFilter.length === 0\n ? await fetchReports(state.page_limit, state.idOfLastReport, getters.authHost, getters.token)\n : await filterReports(state.stateFilter, state.page_limit, state.idOfLastReport, getters.authHost, getters.token)\n\n const reports = state.fetchedReports.concat(response.data.reports)\n const id = reports.length > 0 ? reports[reports.length - 1].id : state.idOfLastReport\n\n commit('SET_REPORTS', reports)\n commit('SET_LAST_REPORT_ID', id)\n commit('SET_LOADING', false)\n },\n SetFilter({ commit }, filter) {\n commit('SET_REPORTS_FILTER', filter)\n }\n }\n}\n\nexport default reports\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function fetchSettings(authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function updateSettings(configs, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/config`,\n method: 'post',\n headers: authHeaders(token),\n data: { configs }\n })\n}\n\nexport async function uploadMedia(file, authHost, token) {\n const formData = new FormData()\n formData.append('file', file)\n return await request({\n baseURL: baseName(authHost),\n url: `/api/v1/media`,\n method: 'post',\n headers: authHeaders(token),\n data: formData\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","export const initialSettings = [\n {\n group: 'pleroma',\n key: ':instance',\n value: [\n { 'tuple': [':name', 'Pleroma'] },\n { 'tuple': [':email', 'example@example.com'] },\n { 'tuple': [':notify_email', 'noreply@example.com'] },\n { 'tuple': [':description', 'A Pleroma instance, an alternative fediverse server'] },\n { 'tuple': [':limit', 5000] },\n { 'tuple': [':remote_limit', 100000] },\n { 'tuple': [':upload_limit', 16 * 1048576] },\n { 'tuple': [':avatar_upload_limit', 2 * 1048576] },\n { 'tuple': [':background_upload_limit', 4 * 1048576] },\n { 'tuple': [':banner_upload_limit', 4 * 1048576] },\n { 'tuple': [':poll_limits', [\n { 'tuple': [':max_options', 20] },\n { 'tuple': [':max_option_chars', 200] },\n { 'tuple': [':min_expiration', 0] },\n { 'tuple': [':max_expiration', 365 * 86400] }\n ]] },\n { 'tuple': [':registrations_open', true] },\n { 'tuple': [':invites_enabled', false] },\n { 'tuple': [':account_activation_required', false] },\n { 'tuple': [':federating', true] },\n { 'tuple': [':federation_reachability_timeout_days', 7] },\n { 'tuple':\n [':federation_publisher_modules', ['Pleroma.Web.ActivityPub.Publisher', 'Pleroma.Web.Websub', 'Pleroma.Web.Salmon']] },\n { 'tuple': [':allow_relay', true] },\n { 'tuple': [':rewrite_policy', 'Pleroma.Web.ActivityPub.MRF.NoOpPolicy'] },\n { 'tuple': [':public', true] },\n { 'tuple': [':managed_config', true] },\n { 'tuple': [':static_dir', 'instance/static/'] },\n { 'tuple': [':allowed_post_formats', ['text/plain', 'text/html', 'text/markdown', 'text/bbcode']] },\n { 'tuple': [':mrf_transparency', true] },\n { 'tuple': [':extended_nickname_format', false] },\n { 'tuple': [':max_pinned_statuses', 1] },\n { 'tuple': [':no_attachment_links', false] },\n { 'tuple': [':max_report_comment_size', 1000] },\n { 'tuple': [':safe_dm_mentions', false] },\n { 'tuple': [':healthcheck', false] },\n { 'tuple': [':remote_post_retention_days', 90] },\n { 'tuple': [':skip_thread_containment', true] },\n { 'tuple': [':limit_to_local_content', ':unauthenticated'] },\n { 'tuple': [':dynamic_configuration', true] },\n { 'tuple': [':max_account_fields', 10] },\n { 'tuple': [':max_remote_account_fields', 20] },\n { 'tuple': [':account_field_name_length', 255] },\n { 'tuple': [':account_field_value_length', 255] },\n { 'tuple': [':external_user_synchronization', true] },\n { 'tuple': [':user_bio_length', 5000] },\n { 'tuple': [':user_name_length', 100] }\n ]\n },\n {\n group: 'mime',\n key: ':types',\n value: {\n 'application/activity+json': ['activity+json'],\n 'application/jrd+json': ['jrd+json'],\n 'application/ld+json': ['activity+json'],\n 'application/xml': ['xml'],\n 'application/xrd+xml': ['xrd+xml']\n }\n },\n {\n group: 'cors_plug',\n key: ':max_age',\n value: 86400\n },\n {\n group: 'cors_plug',\n key: ':methods',\n value: ['POST', 'PUT', 'DELETE', 'GET', 'PATCH', 'OPTIONS']\n },\n {\n group: 'cors_plug',\n key: ':expose',\n value: [\n 'Link',\n 'X-RateLimit-Reset',\n 'X-RateLimit-Limit',\n 'X-RateLimit-Remaining',\n 'X-Request-Id',\n 'Idempotency-Key'\n ]\n },\n {\n group: 'cors_plug',\n key: ':credentials',\n value: true\n },\n {\n group: 'cors_plug',\n key: ':headers',\n value: ['Authorization', 'Content-Type', 'Idempotency-Key']\n },\n {\n group: 'tesla',\n key: ':adapter',\n value: 'Tesla.Adapter.Hackney'\n },\n {\n group: 'pleroma',\n key: ':markup',\n value: [\n { 'tuple': [':allow_inline_images', true] },\n { 'tuple': [':allow_headings', false] },\n { 'tuple': [':allow_tables', false] },\n { 'tuple': [':allow_fonts', false] },\n { 'tuple': [':scrub_policy', [\n 'Pleroma.HTML.Transform.MediaProxy',\n 'Pleroma.HTML.Scrubber.Default'\n ]] }\n ]\n }\n]\n","const nonAtomsTuples = ['replace', ':replace']\nconst nonAtomsObjects = ['match_actor', ':match_actor']\nconst objects = ['digest', 'pleroma_fe', 'masto_fe', 'poll_limits', 'styling']\nconst objectParents = ['mascots']\nconst groups = {\n 'cors_plug': [\n 'credentials',\n 'expose',\n 'headers',\n 'max_age',\n 'methods'\n ],\n 'esshd': [\n 'enabled',\n 'handler',\n 'password_authenticator',\n 'port',\n 'priv_dir'\n ],\n 'logger': ['backends', 'console', 'ex_syslogger'],\n 'mime': ['types'],\n 'phoenix': ['format_encoders'],\n 'pleroma': [\n 'Pleroma.Captcha',\n 'Pleroma.Captcha.Kocaptcha',\n 'Pleroma.Emails.Mailer',\n 'Pleroma.Emails.UserEmail',\n 'Pleroma.Repo',\n 'Pleroma.ScheduledActivity',\n 'Pleroma.Upload',\n 'Pleroma.Upload.Filter.AnonymizeFilename',\n 'Pleroma.Upload.Filter.Mogrify',\n 'Pleroma.Uploaders.Local',\n 'Pleroma.Uploaders.MDII',\n 'Pleroma.Uploaders.S3',\n 'Pleroma.User',\n 'Pleroma.Web.Auth.Authenticator',\n 'Pleroma.Web.Endpoint',\n 'Pleroma.Web.Federator.RetryQueue',\n 'Pleroma.Web.Metadata',\n 'activitypub',\n 'admin_token',\n 'assets',\n 'auth',\n 'auto_linker',\n 'chat',\n 'database',\n 'ecto_repos',\n 'email_notifications',\n 'emoji',\n 'env',\n 'fetch_initial_posts',\n 'frontend_configurations',\n 'gopher',\n 'hackney_pools',\n 'http',\n 'http_security',\n 'instance',\n 'ldap',\n 'markup',\n 'media_proxy',\n 'mrf_hellthread',\n 'mrf_keyword',\n 'mrf_mention',\n 'mrf_normalize_markup',\n 'mrf_rejectnonpublic',\n 'mrf_simple',\n 'mrf_subchain',\n 'mrf_user_allowlist',\n 'mrf_vocabulary',\n 'oauth2',\n 'rate_limit',\n 'rich_media',\n 'suggestions',\n 'uri_schemes',\n 'user'\n ],\n 'pleroma_job_queue': ['queues'],\n 'quack': ['level', 'meta', 'webhook_url'],\n 'tesla': ['adapter'],\n 'ueberauth': [\n 'Ueberauth',\n 'Ueberauth.Strategy.Facebook.OAuth',\n 'Ueberauth.Strategy.Google.OAuth',\n 'Ueberauth.Strategy.Microsoft.OAuth',\n 'Ueberauth.Strategy.Twitter.OAuth'\n ],\n 'web_push_encryption': ['vapid_details']\n}\n\nexport const filterIgnored = (settings, ignored) => {\n if (settings.enabled.value === true) {\n return settings\n }\n\n return ignored.reduce((acc, name) => {\n const { [name]: ignored, ...newAcc } = acc\n\n return newAcc\n }, settings)\n}\n\n// REFACTOR\nexport const parseTuples = (tuples, key) => {\n return tuples.reduce((accum, item) => {\n if (key === 'rate_limit') {\n accum[item.tuple[0].substr(1)] = item.tuple[1]\n } else if (Array.isArray(item.tuple[1]) &&\n (typeof item.tuple[1][0] === 'object' && !Array.isArray(item.tuple[1][0])) && item.tuple[1][0]['tuple']) {\n nonAtomsTuples.includes(item.tuple[0])\n ? accum[item.tuple[0].substr(1)] = parseNonAtomTuples(item.tuple[1])\n : accum[item.tuple[0].substr(1)] = parseTuples(item.tuple[1])\n } else if (Array.isArray(item.tuple[1])) {\n accum[item.tuple[0].substr(1)] = item.tuple[1]\n } else if (item.tuple[1] && typeof item.tuple[1] === 'object' && 'tuple' in item.tuple[1]) {\n accum[item.tuple[0].substr(1)] = item.tuple[1]['tuple'].join('.')\n } else if (item.tuple[1] && typeof item.tuple[1] === 'object') {\n nonAtomsObjects.includes(item.tuple[0])\n ? accum[item.tuple[0].substr(1)] = parseNonAtomObject(item.tuple[1])\n : accum[item.tuple[0].substr(1)] = parseObject(item.tuple[1])\n } else {\n key === 'mrf_user_allowlist'\n ? accum[item.tuple[0]] = item.tuple[1]\n : accum[item.tuple[0].substr(1)] = item.tuple[1]\n }\n return accum\n }, {})\n}\n\nconst parseNonAtomTuples = (tuples) => {\n return tuples.reduce((acc, item) => {\n acc[item.tuple[0]] = item.tuple[1]\n return acc\n }, {})\n}\n\nconst parseNonAtomObject = (object) => {\n return Object.keys(object).reduce((acc, item) => {\n acc[item] = object[item]\n return acc\n }, {})\n}\n\nconst parseObject = (object) => {\n return Object.keys(object).reduce((acc, item) => {\n acc[item.substr(1)] = object[item]\n return acc\n }, {})\n}\n\nexport const valueHasTuples = (key, value) => {\n const valueIsArrayOfNonObjects = Array.isArray(value) && value.length > 0 && typeof value[0] !== 'object'\n return key === 'meta' ||\n key === 'types' ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n valueIsArrayOfNonObjects\n}\n\n// REFACTOR\nexport const wrapConfig = settings => {\n return Object.keys(settings).map(config => {\n const group = getGroup(config)\n const key = config.startsWith('Pleroma') || config.startsWith('Ueberauth') ? config : `:${config}`\n const value = (settings[config]['value'] !== undefined)\n ? settings[config]['value']\n : Object.keys(settings[config]).reduce((acc, settingName) => {\n const data = settings[config][settingName]\n if (data === null || data === '') {\n return acc\n } else if (key === ':rate_limit') {\n return [...acc, { 'tuple': [`:${settingName}`, data] }]\n } else if (settingName === 'ip') {\n const ip = data.split('.').map(s => parseInt(s, 10))\n return [...acc, { 'tuple': [`:${settingName}`, { 'tuple': ip }] }]\n } else if (Array.isArray(data) || typeof data !== 'object') {\n return key === ':mrf_user_allowlist'\n ? [...acc, { 'tuple': [`${settingName}`, data] }]\n : [...acc, { 'tuple': [`:${settingName}`, data] }]\n } else if (nonAtomsObjects.includes(settingName)) {\n return [...acc, { 'tuple': [`:${settingName}`, wrapNonAtomsObjects(data)] }]\n } else if (objectParents.includes(settingName)) {\n return [...acc, { 'tuple': [`:${settingName}`, wrapNestedObjects(data)] }]\n } else if (objects.includes(settingName)) {\n return [...acc, { 'tuple': [`:${settingName}`, wrapObjects(data)] }]\n } else if (nonAtomsTuples.includes(settingName)) {\n return [...acc, { 'tuple': [`:${settingName}`, wrapNonAtomsTuples(data)] }]\n } else {\n return [...acc, { 'tuple': [`:${settingName}`, wrapNestedTuples(data)] }]\n }\n }, [])\n return { group, key, value }\n })\n}\n\nconst wrapNestedTuples = setting => {\n return Object.keys(setting).reduce((acc, settingName) => {\n const data = setting[settingName]\n if (data === null || data === '') {\n return acc\n } else if (settingName === 'ip') {\n const ip = data.split('.').map(s => parseInt(s, 10))\n return [...acc, { 'tuple': [`:${settingName}`, { 'tuple': ip }] }]\n } else if (Array.isArray(data) || typeof data !== 'object') {\n return [...acc, { 'tuple': [`:${settingName}`, data] }]\n } else if (nonAtomsObjects.includes(settingName)) {\n return [...acc, { 'tuple': [`:${settingName}`, wrapNonAtomsObjects(data)] }]\n } else if (objectParents.includes(settingName)) {\n return [...acc, { 'tuple': [`:${settingName}`, wrapNestedObjects(data)] }]\n } else if (objects.includes(settingName)) {\n return [...acc, { 'tuple': [`:${settingName}`, wrapObjects(data)] }]\n } else if (nonAtomsTuples.includes(settingName)) {\n return [...acc, { 'tuple': [`:${settingName}`, wrapNonAtomsTuples(data)] }]\n } else {\n return [...acc, { 'tuple': [`:${settingName}`, wrapNestedTuples(data)] }]\n }\n }, [])\n}\n\nconst wrapNonAtomsTuples = setting => {\n return Object.keys(setting).reduce((acc, settingName) => {\n return [...acc, { 'tuple': [`${settingName}`, setting[settingName]] }]\n }, [])\n}\n\nconst wrapNestedObjects = setting => {\n return Object.keys(setting).reduce((acc, settingName) => {\n return [...acc, { 'tuple': [`:${settingName}`, wrapObjects(setting[settingName])] }]\n }, [])\n}\n\nconst wrapNonAtomsObjects = setting => {\n return Object.keys(setting).reduce((acc, settingName) => {\n return { ...acc, [`${settingName}`]: setting[settingName] }\n }, {})\n}\n\nconst wrapObjects = setting => {\n return Object.keys(setting).reduce((acc, settingName) => {\n return { ...acc, [`:${settingName}`]: setting[settingName] }\n }, {})\n}\n\nconst getGroup = key => {\n return Object.keys(groups).find(i => groups[i].includes(key))\n}\n\n","import { fetchSettings, updateSettings, uploadMedia } from '@/api/settings'\nimport { initialSettings } from '@/api/initialDataForConfig'\nimport { filterIgnored, parseTuples, valueHasTuples, wrapConfig } from './normalizers'\n\nconst settings = {\n state: {\n settings: {\n 'activitypub': {},\n 'adapter': {},\n 'admin_token': {},\n 'assets': { mascots: {}},\n 'auth': {},\n 'auto_linker': { opts: {}},\n 'backends': {},\n 'chat': {},\n 'console': { colors: {}},\n 'credentials': {},\n 'database': {},\n 'ecto_repos': {},\n 'email_notifications': { digest: {}},\n 'emoji': { groups: {}},\n 'enabled': {},\n 'ex_syslogger': {},\n 'expose': {},\n 'fetch_initial_posts': {},\n 'format_encoders': {},\n 'frontend_configurations': { pleroma_fe: {}, masto_fe: {}},\n 'gopher': {},\n 'hackney_pools': { federation: {}, media: {}, upload: {}},\n 'handler': {},\n 'headers': {},\n 'http': { adapter: {}},\n 'http_security': {},\n 'instance': { poll_limits: {}},\n 'level': {},\n 'ldap': {},\n 'markup': {},\n 'max_age': {},\n 'media_proxy': { proxy_opts: {}},\n 'meta': {},\n 'methods': {},\n 'mrf_hellthread': {},\n 'mrf_keyword': { replace: {}},\n 'mrf_mention': {},\n 'mrf_normalize_markup': {},\n 'mrf_rejectnonpublic': {},\n 'mrf_simple': {},\n 'mrf_subchain': { match_actor: {}},\n 'mrf_user_allowlist': {},\n 'mrf_vocabulary': {},\n 'oauth2': {},\n 'password_authenticator': {},\n 'Pleroma.Captcha': {},\n 'Pleroma.Captcha.Kocaptcha': {},\n 'Pleroma.Emails.Mailer': {},\n 'Pleroma.Emails.UserEmail': { styling: {}},\n 'Pleroma.Repo': {},\n 'Pleroma.ScheduledActivity': {},\n 'Pleroma.Upload': { proxy_opts: {}},\n 'Pleroma.Upload.Filter.AnonymizeFilename': {},\n 'Pleroma.Upload.Filter.Mogrify': {},\n 'Pleroma.Uploaders.Local': {},\n 'Pleroma.Uploaders.MDII': {},\n 'Pleroma.Uploaders.S3': {},\n 'Pleroma.User': {},\n 'Pleroma.Web.Auth.Authenticator': {},\n 'Pleroma.Web.Endpoint':\n { http: false, url: {}, render_errors: {}, pubsub: {}},\n 'Pleroma.Web.Federator.RetryQueue': {},\n 'Pleroma.Web.Metadata': {},\n 'port': {},\n 'priv_dir': {},\n 'queues': {},\n 'rate_limit': {},\n 'rich_media': {},\n 'suggestions': {},\n 'types': { value: {}},\n 'Ueberauth': {},\n 'Ueberauth.Strategy.Facebook.OAuth': {},\n 'Ueberauth.Strategy.Google.OAuth': {},\n 'Ueberauth.Strategy.Microsoft.OAuth': {},\n 'Ueberauth.Strategy.Twitter.OAuth': {},\n 'user': {},\n 'uri_schemes': {},\n 'vapid_details': {},\n 'webhook_url': {}\n },\n ignoredIfNotEnabled: ['enabled', 'handler', 'password_authenticator', 'port', 'priv_dir'],\n loading: true\n },\n mutations: {\n REWRITE_CONFIG: (state, { tab, data }) => {\n state.settings[tab] = data\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_SETTINGS: (state, data) => {\n const newSettings = data.reduce((acc, config) => {\n const key = config.key[0] === ':' ? config.key.substr(1) : config.key\n const value = valueHasTuples(key, config.value) ? { value: config.value } : parseTuples(config.value, key)\n acc[key] = { ...acc[key], ...value }\n return acc\n }, state.settings)\n state.settings = newSettings\n },\n UPDATE_SETTINGS: (state, { tab, data }) => {\n Object.keys(state.settings).map(configName => {\n if (configName === tab) {\n state.settings[configName] = { ...state.settings[configName], ...data }\n }\n })\n }\n },\n actions: {\n async FetchSettings({ commit, dispatch, getters }) {\n commit('SET_LOADING', true)\n const response = await fetchSettings(getters.authHost, getters.token)\n if (response.data.configs.length === 0) {\n dispatch('SubmitChanges', initialSettings)\n } else {\n commit('SET_SETTINGS', response.data.configs)\n }\n commit('SET_LOADING', false)\n },\n RewriteConfig({ commit }, { tab, data }) {\n commit('REWRITE_CONFIG', { tab, data })\n },\n async SubmitChanges({ getters, commit, state }, data) {\n const filteredSettings = filterIgnored(state.settings, state.ignoredIfNotEnabled)\n const configs = data || wrapConfig(filteredSettings)\n const response = await updateSettings(configs, getters.authHost, getters.token)\n if (data) {\n commit('SET_SETTINGS', response.data.configs)\n }\n },\n UpdateSettings({ commit }, { tab, data }) {\n commit('UPDATE_SETTINGS', { tab, data })\n },\n async UploadMedia({ dispatch, getters, state }, { file, tab, inputName, childName }) {\n const response = await uploadMedia(file, getters.authHost, getters.token)\n const updatedValue = childName\n ? { ...state.settings[tab][inputName], ...{ [childName]: response.data.url }}\n : response.data.url\n dispatch('UpdateSettings', { tab, data: { [inputName]: updatedValue }})\n }\n }\n}\n\nexport default settings\n","const tagsView = {\n state: {\n visitedViews: [],\n cachedViews: []\n },\n mutations: {\n ADD_VISITED_VIEW: (state, view) => {\n if (state.visitedViews.some(v => v.path === view.path)) return\n state.visitedViews.push(\n Object.assign({}, view, {\n title: view.meta.title || 'no-name'\n })\n )\n },\n ADD_CACHED_VIEW: (state, view) => {\n if (state.cachedViews.includes(view.name)) return\n if (!view.meta.noCache) {\n state.cachedViews.push(view.name)\n }\n },\n\n DEL_VISITED_VIEW: (state, view) => {\n for (const [i, v] of state.visitedViews.entries()) {\n if (v.path === view.path) {\n state.visitedViews.splice(i, 1)\n break\n }\n }\n },\n DEL_CACHED_VIEW: (state, view) => {\n for (const i of state.cachedViews) {\n if (i === view.name) {\n const index = state.cachedViews.indexOf(i)\n state.cachedViews.splice(index, 1)\n break\n }\n }\n },\n\n DEL_OTHERS_VISITED_VIEWS: (state, view) => {\n state.visitedViews = state.visitedViews.filter(v => {\n return v.meta.affix || v.path === view.path\n })\n },\n DEL_OTHERS_CACHED_VIEWS: (state, view) => {\n for (const i of state.cachedViews) {\n if (i === view.name) {\n const index = state.cachedViews.indexOf(i)\n state.cachedViews = state.cachedViews.slice(index, index + 1)\n break\n }\n }\n },\n\n DEL_ALL_VISITED_VIEWS: state => {\n // keep affix tags\n const affixTags = state.visitedViews.filter(tag => tag.meta.affix)\n state.visitedViews = affixTags\n },\n DEL_ALL_CACHED_VIEWS: state => {\n state.cachedViews = []\n },\n\n UPDATE_VISITED_VIEW: (state, view) => {\n for (let v of state.visitedViews) {\n if (v.path === view.path) {\n v = Object.assign(v, view)\n break\n }\n }\n }\n\n },\n actions: {\n addView({ dispatch }, view) {\n dispatch('addVisitedView', view)\n dispatch('addCachedView', view)\n },\n addVisitedView({ commit }, view) {\n commit('ADD_VISITED_VIEW', view)\n },\n addCachedView({ commit }, view) {\n commit('ADD_CACHED_VIEW', view)\n },\n\n delView({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delVisitedView', view)\n dispatch('delCachedView', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delVisitedView({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_VISITED_VIEW', view)\n resolve([...state.visitedViews])\n })\n },\n delCachedView({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_CACHED_VIEW', view)\n resolve([...state.cachedViews])\n })\n },\n\n delOthersViews({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delOthersVisitedViews', view)\n dispatch('delOthersCachedViews', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delOthersVisitedViews({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_OTHERS_VISITED_VIEWS', view)\n resolve([...state.visitedViews])\n })\n },\n delOthersCachedViews({ commit, state }, view) {\n return new Promise(resolve => {\n commit('DEL_OTHERS_CACHED_VIEWS', view)\n resolve([...state.cachedViews])\n })\n },\n\n delAllViews({ dispatch, state }, view) {\n return new Promise(resolve => {\n dispatch('delAllVisitedViews', view)\n dispatch('delAllCachedViews', view)\n resolve({\n visitedViews: [...state.visitedViews],\n cachedViews: [...state.cachedViews]\n })\n })\n },\n delAllVisitedViews({ commit, state }) {\n return new Promise(resolve => {\n commit('DEL_ALL_VISITED_VIEWS')\n resolve([...state.visitedViews])\n })\n },\n delAllCachedViews({ commit, state }) {\n return new Promise(resolve => {\n commit('DEL_ALL_CACHED_VIEWS')\n resolve([...state.cachedViews])\n })\n },\n\n updateVisitedView({ commit }, view) {\n commit('UPDATE_VISITED_VIEW', view)\n }\n }\n}\n\nexport default tagsView\n","import request from '@/utils/request'\nimport { baseName } from './utils'\n\nexport async function loginByUsername(username, password, authHost) {\n const appsRequest = await request({\n baseURL: baseName(authHost),\n url: '/api/v1/apps',\n method: 'post',\n data: {\n client_name: `AdminFE_${Math.random()}`,\n redirect_uris: `${window.location.origin}/oauth-callback`,\n scopes: 'read write follow'\n }\n })\n\n const app = appsRequest.data\n\n return request({\n baseURL: baseName(authHost),\n url: '/oauth/token',\n method: 'post',\n data: {\n client_id: app.client_id,\n client_secret: app.client_secret,\n grant_type: 'password',\n username: username,\n password: password\n }\n })\n}\n\nexport function getUserInfo(token, authHost) {\n return request({\n baseURL: baseName(authHost),\n url: '/api/v1/accounts/verify_credentials',\n method: 'get',\n headers: token ? { 'Authorization': `Bearer ${token}` } : {}\n })\n}\n\nconst oauth = { loginByUsername, getUserInfo }\n\nexport default oauth\n","import { loginByUsername, getUserInfo } from '@/api/login'\nimport { getToken, setToken, removeToken, getAuthHost, setAuthHost, removeAuthHost } from '@/utils/auth'\n\nconst user = {\n state: {\n user: '',\n id: '',\n status: '',\n code: '',\n token: getToken(),\n authHost: getAuthHost(),\n name: '',\n avatar: '',\n introduction: '',\n roles: [],\n setting: {\n articlePlatform: []\n }\n },\n\n mutations: {\n SET_CODE: (state, code) => {\n state.code = code\n },\n SET_TOKEN: (state, token) => {\n state.token = token\n },\n SET_INTRODUCTION: (state, introduction) => {\n state.introduction = introduction\n },\n SET_SETTING: (state, setting) => {\n state.setting = setting\n },\n SET_STATUS: (state, status) => {\n state.status = status\n },\n SET_NAME: (state, name) => {\n state.name = name\n },\n SET_AVATAR: (state, avatar) => {\n state.avatar = avatar\n },\n SET_ROLES: (state, roles) => {\n state.roles = roles\n },\n SET_ID: (state, id) => {\n state.id = id\n },\n SET_AUTH_HOST: (state, authHost) => {\n state.authHost = authHost\n }\n },\n\n actions: {\n LoginByUsername({ commit, dispatch }, { username, authHost, password }) {\n return new Promise((resolve, reject) => {\n loginByUsername(username, password, authHost).then(response => {\n const data = response.data\n commit('SET_TOKEN', data.access_token)\n commit('SET_AUTH_HOST', authHost)\n setToken(data.access_token)\n setAuthHost(authHost)\n resolve()\n }).catch(error => {\n dispatch('addErrorLog', { message: error.message })\n reject(error)\n })\n })\n },\n\n GetUserInfo({ commit, state }) {\n return new Promise((resolve, reject) => {\n getUserInfo(state.token, state.authHost).then(response => {\n const data = response.data\n\n if (!data) {\n reject('Verification failed, please login again.')\n }\n\n if (data.pleroma && data.pleroma.is_admin) {\n commit('SET_ROLES', ['admin'])\n } else {\n reject('getInfo: roles must be a non-null array!')\n }\n\n commit('SET_NAME', data.username)\n commit('SET_ID', data.id)\n commit('SET_AVATAR', data.avatar)\n commit('SET_INTRODUCTION', '')\n resolve(response)\n }).catch(error => {\n reject(error)\n })\n })\n },\n LogOut({ commit }) {\n commit('SET_TOKEN', '')\n commit('SET_ROLES', [])\n removeToken()\n removeAuthHost()\n },\n FedLogOut({ commit }) {\n return new Promise(resolve => {\n commit('SET_TOKEN', '')\n removeToken()\n removeAuthHost()\n resolve()\n })\n },\n async LoginByPleromaFE({ commit, dispatch }, { token }) {\n commit('SET_TOKEN', token)\n setToken(token)\n commit('SET_AUTH_HOST', window.location.host)\n setAuthHost(window.location.host)\n\n dispatch('GetUserInfo')\n }\n }\n}\n\nexport default user\n","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nexport async function addRight(nickname, right, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/permission_group/${right}`,\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function createNewAccount(nickname, email, password, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users',\n method: 'post',\n headers: authHeaders(token),\n data: { users: [{ nickname, email, password }] }\n })\n}\n\nexport async function deleteRight(nickname, right, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/permission_group/${right}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function deleteUser(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?nickname=${nickname}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchUser(id, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${id}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function fetchUsers(filters, authHost, token, page = 1) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?page=${page}&filters=${filters}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function getPasswordResetToken(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/password_reset`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function searchUsers(query, filters, authHost, token, page = 1) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users?query=${query}&page=${page}&filters=${filters}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nexport async function tagUser(nicknames, tags, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/tag',\n method: 'put',\n headers: authHeaders(token),\n data: { nicknames, tags }\n })\n}\n\nexport async function toggleUserActivation(nickname, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${nickname}/toggle_activation`,\n method: 'patch',\n headers: authHeaders(token)\n })\n}\n\nexport async function untagUser(nicknames, tags, authHost, token) {\n return await request({\n baseURL: baseName(authHost),\n url: '/api/pleroma/admin/users/tag',\n method: 'delete',\n headers: authHeaders(token),\n data: { nicknames, tags }\n })\n}\n\nexport async function fetchUserStatuses(id, authHost, godmode, token) {\n return await request({\n baseURL: baseName(authHost),\n url: `/api/pleroma/admin/users/${id}/statuses?godmode=${godmode}`,\n method: 'get',\n headers: authHeaders(token)\n })\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import { fetchUser, fetchUserStatuses } from '@/api/users'\n\nconst userProfile = {\n state: {\n user: {},\n loading: true,\n statuses: []\n },\n mutations: {\n SET_USER: (state, user) => {\n state.user = user\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SET_STATUSES: (state, statuses) => {\n state.statuses = statuses\n }\n },\n actions: {\n async FetchData({ commit, getters }, { id, godmode }) {\n commit('SET_LOADING', true)\n\n const [userResponse, statusesResponse] = await Promise.all([\n fetchUser(id, getters.authHost, getters.token),\n fetchUserStatuses(id, getters.authHost, godmode, getters.token)\n ])\n\n commit('SET_USER', userResponse.data)\n commit('SET_STATUSES', statusesResponse.data)\n commit('SET_LOADING', false)\n }\n }\n}\n\nexport default userProfile\n","import { addRight, createNewAccount, deleteRight, deleteUser, fetchUsers, getPasswordResetToken, searchUsers, tagUser, toggleUserActivation, untagUser } from '@/api/users'\n\nconst users = {\n state: {\n fetchedUsers: [],\n loading: true,\n searchQuery: '',\n totalUsersCount: 0,\n currentPage: 1,\n filters: {\n local: false,\n external: false,\n active: false,\n deactivated: false\n },\n passwordResetToken: {\n token: '',\n link: ''\n }\n },\n mutations: {\n SET_USERS: (state, users) => {\n state.fetchedUsers = users\n },\n SET_LOADING: (state, status) => {\n state.loading = status\n },\n SWAP_USER: (state, updatedUser) => {\n const updated = state.fetchedUsers.map(user => user.id === updatedUser.id ? updatedUser : user)\n state.fetchedUsers = updated\n .map(user => user.nickname ? user : { ...user, nickname: '' })\n .sort((a, b) => a.nickname.localeCompare(b.nickname))\n },\n SWAP_USERS: (state, users) => {\n const usersWithoutSwapped = users.reduce((acc, user) => {\n return acc.filter(u => u.id !== user.id)\n }, state.fetchedUsers)\n\n state.fetchedUsers = [...usersWithoutSwapped, ...users].sort((a, b) =>\n a.nickname.localeCompare(b.nickname)\n )\n },\n SET_COUNT: (state, count) => {\n state.totalUsersCount = count\n },\n SET_PAGE: (state, page) => {\n state.currentPage = page\n },\n SET_PAGE_SIZE: (state, pageSize) => {\n state.pageSize = pageSize\n },\n SET_PASSWORD_RESET_TOKEN: (state, { token, link }) => {\n state.passwordResetToken.token = token\n state.passwordResetToken.link = link\n },\n SET_SEARCH_QUERY: (state, query) => {\n state.searchQuery = query\n },\n SET_USERS_FILTERS: (state, filters) => {\n state.filters = filters\n },\n SET_USER_PROFILE: (state, user) => {\n state.userProfile = user\n }\n },\n actions: {\n async AddTag({ commit, getters }, { users, tag }) {\n const nicknames = users.map(user => user.nickname)\n await tagUser(nicknames, [tag], getters.authHost, getters.token)\n\n commit('SWAP_USERS', users.map(user => ({ ...user, tags: [...user.tags, tag] })))\n },\n async ClearFilters({ commit, dispatch, state }) {\n commit('CLEAR_USERS_FILTERS')\n dispatch('SearchUsers', { query: state.searchQuery, page: 1 })\n },\n async CreateNewAccount({ dispatch, getters, state }, { nickname, email, password }) {\n await createNewAccount(nickname, email, password, getters.authHost, getters.token)\n dispatch('FetchUsers', { page: state.currentPage })\n },\n async DeleteUser({ commit, getters, state }, user) {\n const { data } = await deleteUser(user.nickname, getters.authHost, getters.token)\n const users = state.fetchedUsers.filter(user => user.nickname !== data)\n commit('SET_USERS', users)\n },\n async FetchUsers({ commit, state, getters }, { page }) {\n commit('SET_LOADING', true)\n const filters = Object.keys(state.filters).filter(filter => state.filters[filter]).join()\n const response = await fetchUsers(filters, getters.authHost, getters.token, page)\n loadUsers(commit, page, response.data)\n },\n async GetPasswordResetToken({ commit, state, getters }, nickname) {\n const { data } = await getPasswordResetToken(nickname, getters.authHost, getters.token)\n commit('SET_PASSWORD_RESET_TOKEN', data)\n },\n RemovePasswordToken({ commit }) {\n commit('SET_PASSWORD_RESET_TOKEN', { link: '', token: '' })\n },\n async RemoveTag({ commit, getters }, { users, tag }) {\n const nicknames = users.map(user => user.nickname)\n await untagUser(nicknames, [tag], getters.authHost, getters.token)\n\n commit('SWAP_USERS', users.map(user => ({ ...user, tags: user.tags.filter(userTag => userTag !== tag) })))\n },\n async SearchUsers({ commit, dispatch, state, getters }, { query, page }) {\n if (query.length === 0) {\n commit('SET_SEARCH_QUERY', query)\n dispatch('FetchUsers', { page })\n } else {\n commit('SET_LOADING', true)\n commit('SET_SEARCH_QUERY', query)\n\n const filters = Object.keys(state.filters).filter(filter => state.filters[filter]).join()\n const response = await searchUsers(query, filters, getters.authHost, getters.token, page)\n\n loadUsers(commit, page, response.data)\n }\n },\n async ToggleUserActivation({ commit, getters }, nickname) {\n const { data } = await toggleUserActivation(nickname, getters.authHost, getters.token)\n commit('SWAP_USER', data)\n },\n async ToggleUsersFilter({ commit, dispatch, state }, filters) {\n const defaultFilters = {\n local: false,\n external: false,\n active: false,\n deactivated: false\n }\n const currentFilters = { ...defaultFilters, ...filters }\n commit('SET_USERS_FILTERS', currentFilters)\n dispatch('SearchUsers', { query: state.searchQuery, page: 1 })\n },\n async ToggleRight({ commit, getters }, { user, right }) {\n user.roles[right]\n ? await deleteRight(user.nickname, right, getters.authHost, getters.token)\n : await addRight(user.nickname, right, getters.authHost, getters.token)\n\n const updatedUser = { ...user, roles: { ...user.roles, [right]: !user.roles[right] }}\n commit('SWAP_USER', updatedUser)\n }\n }\n}\n\nconst loadUsers = (commit, page, { users, count, page_size }) => {\n commit('SET_USERS', users)\n commit('SET_COUNT', count)\n commit('SET_PAGE', page)\n commit('SET_PAGE_SIZE', page_size)\n commit('SET_LOADING', false)\n}\n\nexport default users\n","const getters = {\n sidebar: state => state.app.sidebar,\n language: state => state.app.language,\n size: state => state.app.size,\n device: state => state.app.device,\n visitedViews: state => state.tagsView.visitedViews,\n cachedViews: state => state.tagsView.cachedViews,\n token: state => state.user.token,\n avatar: state => state.user.avatar,\n name: state => state.user.name,\n introduction: state => state.user.introduction,\n status: state => state.user.status,\n roles: state => state.user.roles,\n setting: state => state.user.setting,\n permission_routers: state => state.permission.routers,\n addRouters: state => state.permission.addRouters,\n errorLogs: state => state.errorLog.logs,\n users: state => state.users.fetchedUsers,\n authHost: state => state.user.authHost,\n\n activityPub: state => state.settings.settings['activitypub'],\n adminToken: state => state.settings.settings['admin_token'],\n assets: state => state.settings.settings['assets'],\n auth: state => state.settings.settings['auth'],\n autoLinker: state => state.settings.settings['auto_linker'],\n captcha: state => state.settings.settings['Pleroma.Captcha'],\n chat: state => state.settings.settings['chat'],\n consoleLogger: state => state.settings.settings['console'],\n corsPlugCredentials: state => state.settings.settings['credentials'],\n corsPlugExpose: state => state.settings.settings['expose'],\n corsPlugHeaders: state => state.settings.settings['headers'],\n corsPlugMaxAge: state => state.settings.settings['max_age'],\n corsPlugMethods: state => state.settings.settings['methods'],\n database: state => state.settings.settings['database'],\n ectoRepos: state => state.settings.settings['ecto_repos'],\n emailNotifications: state => state.settings.settings['email_notifications'],\n emoji: state => state.settings.settings['emoji'],\n enabled: state => state.settings.settings['enabled'],\n endpoint: state => state.settings.settings['Pleroma.Web.Endpoint'],\n exsyslogger: state => state.settings.settings['ex_syslogger'],\n facebook: state => state.settings.settings['Ueberauth.Strategy.Facebook.OAuth'],\n fetchInitialPosts: state => state.settings.settings['fetch_initial_posts'],\n formatEncoders: state => state.settings.settings['format_encoders'],\n frontend: state => state.settings.settings['frontend_configurations'],\n google: state => state.settings.settings['Ueberauth.Strategy.Google.OAuth'],\n gopher: state => state.settings.settings['gopher'],\n hackneyPools: state => state.settings.settings['hackney_pools'],\n handler: state => state.settings.settings['handler'],\n http: state => state.settings.settings['http'],\n httpSecurity: state => state.settings.settings['http_security'],\n instance: state => state.settings.settings['instance'],\n kocaptcha: state => state.settings.settings['Pleroma.Captcha.Kocaptcha'],\n level: state => state.settings.settings['level'],\n ldap: state => state.settings.settings['ldap'],\n loggerBackends: state => state.settings.settings['backends'],\n mailer: state => state.settings.settings['Pleroma.Emails.Mailer'],\n markup: state => state.settings.settings['markup'],\n mediaProxy: state => state.settings.settings['media_proxy'],\n meta: state => state.settings.settings['meta'],\n metadata: state => state.settings.settings['Pleroma.Web.Metadata'],\n microsoft: state => state.settings.settings['Ueberauth.Strategy.Microsoft.OAuth'],\n mimeTypesConfig: state => state.settings.settings['types'],\n mrfHellthread: state => state.settings.settings['mrf_hellthread'],\n mrfKeyword: state => state.settings.settings['mrf_keyword'],\n mrfMention: state => state.settings.settings['mrf_mention'],\n mrfNormalizeMarkup: state => state.settings.settings['mrf_normalize_markup'],\n mrfRejectnonpublic: state => state.settings.settings['mrf_rejectnonpublic'],\n mrfSimple: state => state.settings.settings['mrf_simple'],\n mrfSubchain: state => state.settings.settings['mrf_subchain'],\n mrfUserAllowlist: state => state.settings.settings['mrf_user_allowlist'],\n mrfVocabulary: state => state.settings.settings['mrf_vocabulary'],\n oauth2: state => state.settings.settings['oauth2'],\n passwordAuthenticator: state => state.settings.settings['password_authenticator'],\n pleromaAuthenticator: state => state.settings.settings['Pleroma.Web.Auth.Authenticator'],\n pleromaRepo: state => state.settings.settings['Pleroma.Repo'],\n pleromaUser: state => state.settings.settings['Pleroma.User'],\n port: state => state.settings.settings['port'],\n privDir: state => state.settings.settings['priv_dir'],\n queues: state => state.settings.settings['queues'],\n rateLimiters: state => state.settings.settings['rate_limit'],\n retryQueue: state => state.settings.settings['Pleroma.Web.Federator.RetryQueue'],\n richMedia: state => state.settings.settings['rich_media'],\n suggestions: state => state.settings.settings['suggestions'],\n scheduledActivity: state => state.settings.settings['Pleroma.ScheduledActivity'],\n teslaAdapter: state => state.settings.settings['adapter'],\n twitter: state => state.settings.settings['Ueberauth.Strategy.Twitter.OAuth'],\n ueberauth: state => state.settings.settings['Ueberauth'],\n uploadAnonymizeFilename: state => state.settings.settings['Pleroma.Upload.Filter.AnonymizeFilename'],\n upload: state => state.settings.settings['Pleroma.Upload'],\n uploadFilterMogrify: state => state.settings.settings['Pleroma.Upload.Filter.Mogrify'],\n uploadersLocal: state => state.settings.settings['Pleroma.Uploaders.Local'],\n uploadMDII: state => state.settings.settings['Pleroma.Uploaders.MDII'],\n uploadS3: state => state.settings.settings['Pleroma.Uploaders.S3'],\n uriSchemes: state => state.settings.settings['uri_schemes'],\n user: state => state.settings.settings['user'],\n userEmail: state => state.settings.settings['Pleroma.Emails.UserEmail'],\n vapidDetails: state => state.settings.settings['vapid_details'],\n webhookUrl: state => state.settings.settings['webhook_url']\n}\nexport default getters\n","import { listPacks,\n downloadFrom,\n reloadEmoji,\n createPack,\n deletePack,\n savePackMetadata,\n importFromFS,\n updatePackFile } from '@/api/emoji_packs'\n\nimport { Message } from 'element-ui'\n\nimport Vue from 'vue'\n\nconst packs = {\n state: {\n localPacks: {},\n remotePacks: {}\n },\n mutations: {\n SET_LOCAL_PACKS: (state, packs) => {\n state.localPacks = packs\n },\n SET_REMOTE_PACKS: (state, packs) => {\n state.remotePacks = packs\n },\n\n UPDATE_LOCAL_PACK_VAL: (state, { name, key, value }) => {\n Vue.set(state.localPacks[name]['pack'], key, value)\n },\n\n UPDATE_LOCAL_PACK_PACK: (state, { name, pack }) => {\n state.localPacks[name]['pack'] = pack\n },\n\n UPDATE_LOCAL_PACK_FILES: (state, { name, files }) => {\n // Use vue.set in case \"files\" was null\n Vue.set(\n state.localPacks[name],\n 'files',\n files\n )\n }\n },\n actions: {\n async SetLocalEmojiPacks({ commit, getters, state }) {\n const { data } = await listPacks(getters.authHost)\n commit('SET_LOCAL_PACKS', data)\n },\n async SetRemoteEmojiPacks({ commit, getters, state }, { remoteInstance }) {\n const { data } = await listPacks(remoteInstance)\n commit('SET_REMOTE_PACKS', data)\n },\n async DownloadFrom({ commit, getters, state }, { instanceAddress, packName, as }) {\n const result = await downloadFrom(getters.authHost, instanceAddress, packName, as, getters.token)\n\n if (result.data === 'ok') {\n Message({\n message: `Successfully downloaded ${packName}`,\n type: 'success',\n duration: 5 * 1000\n })\n }\n },\n async ReloadEmoji({ commit, getters, state }) {\n await reloadEmoji(getters.authHost, getters.token)\n },\n async ImportFromFS({ commit, getters, state }) {\n const result = await importFromFS(getters.authHost, getters.token)\n\n if (result.status === 200) {\n const message = result.data.length > 0 ? `Successfully imported ${result.data}` : 'No new packs to import'\n\n Message({\n message,\n type: 'success',\n duration: 5 * 1000\n })\n }\n },\n async DeletePack({ commit, getters, state }, { name }) {\n await deletePack(getters.authHost, getters.token, name)\n },\n async CreatePack({ commit, getters, state }, { name }) {\n await createPack(getters.authHost, getters.token, name)\n },\n\n async UpdateLocalPackVal({ commit, getters, state }, args) {\n commit('UPDATE_LOCAL_PACK_VAL', args)\n },\n\n async SavePackMetadata({ commit, getters, state }, { packName }) {\n const result =\n await savePackMetadata(\n getters.authHost,\n getters.token,\n packName,\n state.localPacks[packName]['pack']\n )\n\n if (result.status === 200) {\n Message({\n message: `Successfully updated ${packName} metadata`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_PACK', { name: packName, pack: result.data })\n }\n },\n\n async UpdateAndSavePackFile({ commit, getters, state }, args) {\n const result = await updatePackFile(getters.authHost, getters.token, args)\n\n if (result.status === 200) {\n const { packName } = args\n\n Message({\n message: `Successfully updated ${packName} files`,\n type: 'success',\n duration: 5 * 1000\n })\n\n commit('UPDATE_LOCAL_PACK_FILES', { name: packName, files: result.data })\n }\n }\n }\n}\n\nexport default packs\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport app from './modules/app'\nimport errorLog from './modules/errorLog'\nimport invites from './modules/invites'\nimport permission from './modules/permission'\nimport reports from './modules/reports'\nimport settings from './modules/settings'\nimport tagsView from './modules/tagsView'\nimport user from './modules/user'\nimport userProfile from './modules/userProfile'\nimport users from './modules/users'\nimport getters from './getters'\nimport emoji_packs from './modules/emoji_packs.js'\n\nVue.use(Vuex)\n\nconst store = new Vuex.Store({\n modules: {\n app,\n errorLog,\n invites,\n permission,\n reports,\n settings,\n tagsView,\n user,\n userProfile,\n users,\n emoji_packs\n },\n getters\n})\n\nexport default store\n","import Vue from 'vue'\nimport SvgIcon from '@/components/SvgIcon'// svg组件\n\n// register globally\nVue.component('svg-icon', SvgIcon)\n\nconst req = require.context('./svg', false, /\\.svg$/)\nconst requireAll = requireContext => requireContext.keys().map(requireContext)\nrequireAll(req)\n","import Vue from 'vue'\nimport store from './store'\n\n// you can set only in production env show the error-log\nif (process.env.NODE_ENV === 'production') {\n Vue.config.errorHandler = function(err, vm, info, a) {\n // Don't ask me why I use Vue.nextTick, it just a hack.\n // detail see https://forum.vuejs.org/t/dispatch-in-vue-config-errorhandler-has-some-problem/23500\n Vue.nextTick(() => {\n store.dispatch('addErrorLog', {\n err,\n vm,\n info,\n url: window.location.href\n })\n console.error(err, info)\n })\n }\n}\n","import router from './router'\nimport store from './store'\nimport { Message } from 'element-ui'\nimport NProgress from 'nprogress' // progress bar\nimport 'nprogress/nprogress.css'// progress bar style\nimport { getToken } from '@/utils/auth' // getToken from cookie\n\nNProgress.configure({ showSpinner: false })// NProgress Configuration\n\n// permission judge function\nfunction hasPermission(roles, permissionRoles) {\n if (roles.indexOf('admin') >= 0) return true // admin permission passed directly\n if (!permissionRoles) return true\n return roles.some(role => permissionRoles.indexOf(role) >= 0)\n}\n\nconst whiteList = ['/login', '/auth-redirect', '/login-pleroma']// no redirect whitelist\n\nexport const beforeEachRoute = (to, from, next) => {\n NProgress.start() // start progress bar\n if (getToken()) { // determine if there has token\n /* has token*/\n if (to.path === '/login') {\n next({ path: '/' })\n NProgress.done() // if current page is dashboard will not trigger\tafterEach hook, so manually handle it\n } else {\n if (store.getters.roles.length === 0) {\n store.dispatch('GetUserInfo').then(res => {\n const roles = res.data.pleroma.is_admin ? ['admin'] : []\n store.dispatch('GenerateRoutes', { roles }).then(() => {\n router.addRoutes(store.getters.addRouters)\n next({ ...to, replace: true })\n })\n }).catch((err) => {\n store.dispatch('FedLogOut').then(() => {\n Message.error(err)\n next({ path: '/' })\n })\n })\n } else {\n if (hasPermission(store.getters.roles, to.meta.roles)) {\n next()\n } else {\n next({ path: '/401', replace: true, query: { noGoBack: true }})\n }\n }\n }\n } else {\n /* has no token*/\n if (whiteList.indexOf(to.path) !== -1) {\n next()\n } else {\n next(`/login?redirect=${to.path}`)\n NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it\n }\n }\n}\nrouter.beforeEach(beforeEachRoute)\n\nrouter.afterEach(() => {\n NProgress.done() // finish progress bar\n})\n","// set function parseTime,formatTime to filter\nexport { parseTime, formatTime } from '@/utils'\n\nfunction pluralize(time, label) {\n if (time === 1) {\n return time + label\n }\n return time + label + 's'\n}\n\nexport function timeAgo(time) {\n const between = Date.now() / 1000 - Number(time)\n if (between < 3600) {\n return pluralize(~~(between / 60), ' minute')\n } else if (between < 86400) {\n return pluralize(~~(between / 3600), ' hour')\n } else {\n return pluralize(~~(between / 86400), ' day')\n }\n}\n\n/* 数字 格式化*/\nexport function numberFormatter(num, digits) {\n const si = [\n { value: 1E18, symbol: 'E' },\n { value: 1E15, symbol: 'P' },\n { value: 1E12, symbol: 'T' },\n { value: 1E9, symbol: 'G' },\n { value: 1E6, symbol: 'M' },\n { value: 1E3, symbol: 'k' }\n ]\n for (let i = 0; i < si.length; i++) {\n if (num >= si[i].value) {\n return (num / si[i].value + 0.1).toFixed(digits).replace(/\\.0+$|(\\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol\n }\n }\n return num.toString()\n}\n\nexport function toThousandFilter(num) {\n return (+num || 0).toString().replace(/^-?\\d+/g, m => m.replace(/(?=(?!\\b)(\\d{3})+$)/g, ','))\n}\n","import Vue from 'vue'\n\nimport Cookies from 'js-cookie'\n\nimport 'normalize.css/normalize.css' // A modern alternative to CSS resets\n\nimport Element from 'element-ui'\nimport 'element-ui/lib/theme-chalk/index.css'\n\nimport '@/styles/index.scss' // global css\n\nimport App from './App'\nimport store from './store'\nimport router from './router'\n\nimport i18n from './lang' // Internationalization\nimport './icons' // icon\nimport './errorLog' // error log\nimport './permission' // permission control\n\nimport * as filters from './filters' // global filters\n\nVue.use(Element, {\n size: Cookies.get('size') || 'medium', // set element-ui default size\n i18n: (key, value) => i18n.t(key, value)\n})\n\n// register global utility filters.\nObject.keys(filters).forEach(key => {\n Vue.filter(key, filters[key])\n})\n\nVue.config.productionTip = false\n\nnew Vue({\n el: '#app',\n router,\n store,\n i18n,\n render: h => h(App)\n})\n","import Cookies from 'js-cookie'\n\nconst TokenKey = 'Admin-Token'\nconst AuthHostKey = 'Auth-Host'\n\nexport function getToken() {\n return Cookies.get(TokenKey)\n}\n\nexport function setToken(token) {\n return Cookies.set(TokenKey, token)\n}\n\nexport function removeToken() {\n return Cookies.remove(TokenKey)\n}\n\nexport function getAuthHost() {\n return Cookies.get(AuthHostKey)\n}\n\nexport function setAuthHost(token) {\n return Cookies.set(AuthHostKey, token)\n}\n\nexport function removeAuthHost() {\n return Cookies.remove(AuthHostKey)\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=b535c57a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navbar.vue?vue&type=style&index=0&id=b535c57a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagsView.vue?vue&type=style&index=1&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=f852c4f2&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-excel\",\n \"use\": \"icon-excel-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-guide\",\n \"use\": \"icon-guide-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--7-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=4e710b96&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--7-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=4e710b96&scoped=true&lang=css&\"","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-star\",\n \"use\": \"icon-star-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-wechat\",\n \"use\": \"icon-wechat-usage\",\n \"viewBox\": \"0 0 128 110\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-size\",\n \"use\": \"icon-size-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-zip\",\n \"use\": \"icon-zip-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tab\",\n \"use\": \"icon-tab-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-search\",\n \"use\": \"icon-search-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-tree\",\n \"use\": \"icon-tree-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-documentation\",\n \"use\": \"icon-documentation-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-drag\",\n \"use\": \"icon-drag-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-fullscreen\",\n \"use\": \"icon-fullscreen-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\nimport Cookies from 'js-cookie'\nimport elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang\nimport elementZhLocale from 'element-ui/lib/locale/lang/zh-CN' // element-ui lang\nimport elementEsLocale from 'element-ui/lib/locale/lang/es' // element-ui lang\nimport enLocale from './en'\nimport zhLocale from './zh'\nimport esLocale from './es'\nimport ocLocale from './oc'\n\nVue.use(VueI18n)\n\nconst messages = {\n en: {\n ...enLocale,\n ...elementEnLocale\n },\n zh: {\n ...zhLocale,\n ...elementZhLocale\n },\n es: {\n ...esLocale,\n ...elementEsLocale\n },\n oc: {\n ...ocLocale\n }\n}\n\nconst i18n = new VueI18n({\n // set locale\n // options: en | zh | es | oc\n locale: Cookies.get('language') || 'en',\n // set locale messages\n messages\n})\n\nexport default i18n\n","export default {\n route: {\n dashboard: 'Dashboard',\n introduction: 'Introduction',\n documentation: 'Documentation',\n guide: 'Guide',\n permission: 'Permission',\n pagePermission: 'Page Permission',\n directivePermission: 'Directive Permission',\n icons: 'Icons',\n components: 'Components',\n componentIndex: 'Introduction',\n tinymce: 'Tinymce',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n dndList: 'Dnd List',\n splitPane: 'SplitPane',\n avatarUpload: 'Avatar Upload',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'BackToTop',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Charts',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Line Chart',\n mixChart: 'Mix Chart',\n example: 'Example',\n nested: 'Nested Routes',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n Table: 'Table',\n dynamicTable: 'Dynamic Table',\n dragTable: 'Drag Table',\n inlineEditTable: 'Inline Edit',\n complexTable: 'Complex Table',\n treeTable: 'Tree Table',\n customTreeTable: 'Custom TreeTable',\n tab: 'Tab',\n form: 'Form',\n createArticle: 'Create Article',\n editArticle: 'Edit Article',\n articleList: 'Article List',\n errorPages: 'Error Pages',\n page401: '401',\n page404: '404',\n errorLog: 'Error Log',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: 'Theme',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'External Link',\n users: 'Users',\n reports: 'Reports',\n settings: 'Settings',\n 'emoji-packs': 'Emoji packs'\n },\n navbar: {\n logOut: 'Log Out',\n dashboard: 'Dashboard',\n github: 'Github',\n theme: 'Theme',\n size: 'Global Size'\n },\n login: {\n title: 'Login Form',\n logIn: 'Log in',\n logInViaPleromaFE: 'Log in via PleromaFE',\n username: 'username@host',\n password: 'password',\n omitHostname: 'omit hostname if Pleroma is located on this domain',\n errorMessage: 'Username must contain username and host, e.g. john@pleroma.social',\n any: 'any',\n thirdparty: 'Or connect with',\n pleromaFELoginFailed: 'Failed to login via PleromaFE, please login with username/password',\n pleromaFELoginSucceed: 'Logged in via PleromaFE'\n },\n documentation: {\n documentation: 'Documentation',\n github: 'Github Repository'\n },\n permission: {\n roles: 'Your roles',\n switchRoles: 'Switch roles',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Show Guide'\n },\n components: {\n documentation: 'Documentation',\n tinymceTips: 'Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'The default order',\n dragTips2: 'The after dragging order',\n title: 'Title',\n importance: 'Imp',\n type: 'Type',\n remark: 'Remark',\n search: 'Search',\n add: 'Add',\n export: 'Export',\n reviewer: 'reviewer',\n id: 'ID',\n date: 'Date',\n author: 'Author',\n readings: 'Readings',\n status: 'Status',\n actions: 'Actions',\n edit: 'Edit',\n publish: 'Publish',\n draft: 'Draft',\n delete: 'Delete',\n cancel: 'Cancel',\n confirm: 'Confirm'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Document introduction'\n },\n excel: {\n export: 'Export',\n selectedExport: 'Export Selected Items',\n placeholder: 'Please enter the file name(default excel-list)'\n },\n zip: {\n export: 'Export',\n placeholder: 'Please enter the file name(default file)'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading pdf.'\n },\n theme: {\n change: 'Change Theme',\n documentation: 'Theme documentation',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Refresh',\n close: 'Close',\n closeOthers: 'Close Others',\n closeAll: 'Close All'\n },\n users: {\n users: 'Users',\n localUsersOnly: 'Local users only',\n search: 'Search',\n id: 'ID',\n name: 'Name',\n status: 'Status',\n local: 'local',\n external: 'external',\n deactivated: 'deactivated',\n active: 'active',\n actions: 'Actions',\n activate: 'Activate',\n deactivate: 'Deactivate',\n admin: 'admin',\n moderator: 'moderator',\n moderation: 'Moderation',\n revokeAdmin: 'Revoke Admin',\n grantAdmin: 'Grant Admin',\n revokeModerator: 'Revoke Moderator',\n grantModerator: 'Grant Moderator',\n activateAccount: 'Activate Account',\n activateAccounts: 'Activate Accounts',\n deactivateAccount: 'Deactivate Account',\n deactivateAccounts: 'Deactivate Accounts',\n deleteAccount: 'Delete Account',\n deleteAccounts: 'Delete Accounts',\n forceNsfw: 'Force posts to be NSFW',\n stripMedia: 'Force posts not to have media',\n forceUnlisted: 'Force posts to be unlisted',\n sandbox: 'Force posts to be followers-only',\n disableRemoteSubscription: 'Disallow following user from remote instances',\n disableRemoteSubscriptionForMultiple: 'Disallow following users from remote instances',\n disableAnySubscription: 'Disallow following user at all',\n disableAnySubscriptionForMultiple: 'Disallow following users at all',\n selectUsers: 'Select users to apply actions to multiple users',\n moderateUsers: 'Moderate multiple users',\n createAccount: 'Create new account',\n apply: 'apply',\n remove: 'remove',\n grantRightConfirmation: 'Are you sure you want to grant {right} rights to all selected users?',\n revokeRightConfirmation: 'Are you sure you want to revoke {right} rights from all selected users?',\n activateMultipleUsersConfirmation: 'Are you sure you want to activate accounts of all selected users?',\n deactivateMultipleUsersConfirmation: 'Are you sure you want to deactivate accounts of all selected users?',\n deleteMultipleUsersConfirmation: 'Are you sure you want to delete accounts of all selected users?',\n addTagForMultipleUsersConfirmation: 'Are you sure you want to apply tag to all selected users?',\n removeTagFromMultipleUsersConfirmation: 'Are you sure you want to remove tag from all selected users?',\n ok: 'Okay',\n completed: 'Completed',\n cancel: 'Cancel',\n canceled: 'Canceled',\n username: 'Username',\n email: 'E-mail',\n password: 'Password',\n create: 'Create',\n submitFormError: 'There are invalid values in the form. Please fix them before continuing.',\n emptyEmailError: 'Please input the e-mail',\n invalidEmailError: 'Please input valid e-mail',\n emptyPasswordError: 'Please input the password',\n emptyNicknameError: 'Please input the username',\n invalidNicknameError: 'Username can include \"a-z\", \"A-Z\" and \"0-9\" characters',\n getPasswordResetToken: 'Get password reset token',\n passwordResetTokenCreated: 'Password reset token was created',\n accountCreated: 'New account was created!'\n },\n userProfile: {\n tags: 'Tags',\n moderator: 'Moderator',\n admin: 'Admin',\n local: 'Local',\n nickname: 'Nickname',\n deactivated: 'Deactivated',\n recentStatuses: 'Recent Statues',\n showPrivateStatuses: 'Show private statuses'\n },\n usersFilter: {\n inputPlaceholder: 'Select filter',\n byUserType: 'By user type',\n local: 'Local',\n external: 'External',\n byStatus: 'By status',\n active: 'Active',\n deactivated: 'Deactivated'\n },\n reports: {\n reports: 'Reports',\n reply: 'Reply',\n from: 'From',\n showNotes: 'Show notes',\n newNote: 'New note',\n submit: 'Submit',\n confirmMsg: 'Are you sure you want to delete this note?',\n delete: 'Delete',\n cancel: 'Cancel',\n deleteCompleted: 'Delete comleted',\n deleteCanceled: 'Delete canceled',\n noNotes: 'No notes to display',\n changeState: 'Change report state',\n changeScope: 'Change scope',\n moderateUser: 'Moderate user',\n resolve: 'Resolve',\n reopen: 'Reopen',\n close: 'Close',\n addSensitive: 'Add Sensitive flag',\n removeSensitive: 'Remove Sensitive flag',\n public: 'Make status public',\n private: 'Make status private',\n unlisted: 'Make status unlisted',\n sensitive: 'Sensitive',\n deleteStatus: 'Delete status'\n },\n reportsFilter: {\n inputPlaceholder: 'Select filter',\n open: 'Open',\n closed: 'Closed',\n resolved: 'Resolved'\n },\n settings: {\n settings: 'Settings',\n instance: 'Instance',\n upload: 'Upload',\n mailer: 'Mailer',\n logger: 'Logger',\n activityPub: 'ActivityPub',\n auth: 'Authentication',\n autoLinker: 'Auto Linker',\n captcha: 'Captcha',\n frontend: 'Frontend',\n http: 'HTTP',\n mrf: 'MRF',\n mediaProxy: 'Media Proxy',\n metadata: 'Metadata',\n gopher: 'Gopher',\n endpoint: 'Endpoint',\n jobQueue: 'Job queue',\n webPush: 'Web push encryption',\n esshd: 'BBS / SSH access',\n rateLimiters: 'Rate limiters',\n database: 'Database',\n other: 'Other',\n success: 'Settings changed successfully!'\n },\n invites: {\n inviteTokens: 'Invite tokens',\n createInviteToken: 'Generate invite token',\n pickDate: 'Pick a date',\n maxUse: 'Max use',\n expiresAt: 'Expires at',\n tokenCreated: 'Invite token was created',\n token: 'Token',\n uses: 'Uses',\n used: 'Used',\n cancel: 'Cancel',\n create: 'Create',\n revoke: 'Revoke',\n id: 'ID',\n actions: 'Actions',\n active: 'Active',\n inviteUserViaEmail: 'Invite user via email',\n sendRegistration: 'Send registration invite via email',\n email: 'Email',\n name: 'Name',\n emptyEmailError: 'Please input the e-mail',\n invalidEmailError: 'Please input valid e-mail',\n emailSent: 'Invite was sent',\n submitFormError: 'There are invalid values in the form. Please fix them before continuing.',\n inviteViaEmailAlert: 'To send invite via email make sure to enable `invites_enabled` and disable `registrations_open`'\n }\n}\n","export default {\n route: {\n dashboard: '首页',\n introduction: '简述',\n documentation: '文档',\n guide: '引导页',\n permission: '权限测试页',\n pagePermission: '页面权限',\n directivePermission: '指令权限',\n icons: '图标',\n components: '组件',\n componentIndex: '介绍',\n tinymce: '富文本编辑器',\n markdown: 'Markdown',\n jsonEditor: 'JSON编辑器',\n dndList: '列表拖拽',\n splitPane: 'Splitpane',\n avatarUpload: '头像上传',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: '小组件',\n backToTop: '返回顶部',\n dragDialog: '拖拽 Dialog',\n dragSelect: '拖拽 Select',\n dragKanban: '可拖拽看板',\n charts: '图表',\n keyboardChart: '键盘图表',\n lineChart: '折线图',\n mixChart: '混合图表',\n example: '综合实例',\n nested: '路由嵌套',\n menu1: '菜单1',\n 'menu1-1': '菜单1-1',\n 'menu1-2': '菜单1-2',\n 'menu1-2-1': '菜单1-2-1',\n 'menu1-2-2': '菜单1-2-2',\n 'menu1-3': '菜单1-3',\n menu2: '菜单2',\n Table: 'Table',\n dynamicTable: '动态Table',\n dragTable: '拖拽Table',\n inlineEditTable: 'Table内编辑',\n complexTable: '综合Table',\n treeTable: '树形表格',\n customTreeTable: '自定义树表',\n tab: 'Tab',\n form: '表单',\n createArticle: '创建文章',\n editArticle: '编辑文章',\n articleList: '文章列表',\n errorPages: '错误页面',\n page401: '401',\n page404: '404',\n errorLog: '错误日志',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: '换肤',\n clipboardDemo: 'Clipboard',\n i18n: '国际化',\n externalLink: '外链'\n },\n navbar: {\n logOut: '退出登录',\n dashboard: '首页',\n github: '项目地址',\n theme: '换肤',\n size: '布局大小'\n },\n login: {\n title: '系统登录',\n logIn: '登录',\n username: '账号',\n password: '密码',\n any: '随便填',\n thirdparty: '第三方登录',\n thirdpartyTips: '本地不能模拟,请结合自己业务进行模拟!!!'\n },\n documentation: {\n documentation: '文档',\n github: 'Github 地址'\n },\n permission: {\n roles: '你的权限',\n switchRoles: '切换权限',\n tips: '在某些情况下,不适合使用 v-permission。例如:Element-UI 的 Tab 组件或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。'\n },\n guide: {\n description: '引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于',\n button: '打开引导'\n },\n components: {\n documentation: '文档',\n tinymceTips: '富文本是管理后台一个核心的功能,但同时又是一个有很多坑的地方。在选择富文本的过程中我也走了不少的弯路,市面上常见的富文本都基本用过了,最终权衡了一下选择了Tinymce。更详细的富文本比较和介绍见',\n dropzoneTips: '由于我司业务有特殊需求,而且要传七牛 所以没用第三方,选择了自己封装。代码非常的简单,具体代码你可以在这里看到 @/components/Dropzone',\n stickyTips: '当页面滚动到预设的位置会吸附在顶部',\n backToTopTips1: '页面滚动到指定位置会在右下角出现返回顶部按钮',\n backToTopTips2: '可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素',\n imageUploadTips: '由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。'\n },\n table: {\n dynamicTips1: '固定表头, 按照表头顺序排序',\n dynamicTips2: '不固定表头, 按照点击顺序排序',\n dragTips1: '默认顺序',\n dragTips2: '拖拽后顺序',\n title: '标题',\n importance: '重要性',\n type: '类型',\n remark: '点评',\n search: '搜索',\n add: '添加',\n export: '导出',\n reviewer: '审核人',\n id: '序号',\n date: '时间',\n author: '作者',\n readings: '阅读数',\n status: '状态',\n actions: '操作',\n edit: '编辑',\n publish: '发布',\n draft: '草稿',\n delete: '删除',\n cancel: '取 消',\n confirm: '确 定'\n },\n errorLog: {\n tips: '请点击右上角bug小图标',\n description: '现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。',\n documentation: '文档介绍'\n },\n excel: {\n export: '导出',\n selectedExport: '导出已选择项',\n placeholder: '请输入文件名(默认excel-list)'\n },\n zip: {\n export: '导出',\n placeholder: '请输入文件名(默认file)'\n },\n pdf: {\n tips: '这里使用 window.print() 来实现下载pdf的功能'\n },\n theme: {\n change: '换肤',\n documentation: '换肤文档',\n tips: 'Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。'\n },\n tagsView: {\n refresh: '刷新',\n close: '关闭',\n closeOthers: '关闭其它',\n closeAll: '关闭所有'\n }\n}\n","export default {\n route: {\n dashboard: 'Panel de control',\n introduction: 'Introducción',\n documentation: 'Documentación',\n guide: 'Guía',\n permission: 'Permisos',\n pagePermission: 'Permisos de la página',\n directivePermission: 'Permisos de la directiva',\n icons: 'Iconos',\n components: 'Componentes',\n componentIndex: 'Introducción',\n tinymce: 'Tinymce',\n markdown: 'Markdown',\n jsonEditor: 'Editor JSON',\n dndList: 'Lista Dnd',\n splitPane: 'Panel dividido',\n avatarUpload: 'Subir avatar',\n dropzone: 'Subir ficheros',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'Ir arriba',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Gráficos',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Gráfico de líneas',\n mixChart: 'Mix Chart',\n example: 'Ejemplo',\n nested: 'Rutas anidadass',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n Table: 'Tabla',\n dynamicTable: 'Tabla dinámica',\n dragTable: 'Arrastrar tabla',\n inlineEditTable: 'Editor',\n complexTable: 'Complex Table',\n treeTable: 'Tree Table',\n customTreeTable: 'Custom TreeTable',\n tab: 'Pestaña',\n form: 'Formulario',\n createArticle: 'Crear artículo',\n editArticle: 'Editar artículo',\n articleList: 'Listado de artículos',\n errorPages: 'Páginas de error',\n page401: '401',\n page404: '404',\n errorLog: 'Registro de errores',\n excel: 'Excel',\n exportExcel: 'Exportar a Excel',\n selectExcel: 'Export seleccionado',\n uploadExcel: 'Subir Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportar a Zip',\n theme: 'Tema',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Enlace externo'\n },\n navbar: {\n logOut: 'Salir',\n dashboard: 'Panel de control',\n github: 'Github',\n theme: 'Tema',\n size: 'Tamaño global'\n },\n login: {\n title: 'Formulario de acceso',\n logIn: 'Acceso',\n username: 'Usuario',\n password: 'Contraseña',\n any: 'nada',\n thirdparty: 'Conectar con',\n thirdpartyTips: 'No se puede simular en local, así que combine su propia simulación de negocios. ! !'\n },\n documentation: {\n documentation: 'Documentación',\n github: 'Repositorio Github'\n },\n permission: {\n roles: 'Tus permisos',\n switchRoles: 'Cambiar permisos',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Ver guía'\n },\n components: {\n documentation: 'Documentación',\n tinymceTips: 'Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'Orden por defecto',\n dragTips2: 'The after dragging order',\n title: 'Título',\n importance: 'Importancia',\n type: 'Tipo',\n remark: 'Remark',\n search: 'Buscar',\n add: 'Añadir',\n export: 'Exportar',\n reviewer: 'reviewer',\n id: 'ID',\n date: 'Fecha',\n author: 'Autor',\n readings: 'Lector',\n status: 'Estado',\n actions: 'Acciones',\n edit: 'Editar',\n publish: 'Publicar',\n draft: 'Draft',\n delete: 'Eliminar',\n cancel: 'Cancelar',\n confirm: 'Confirmar'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Documento de introducción'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar seleccionados',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading pdf.'\n },\n theme: {\n change: 'Cambiar tema',\n documentation: 'Documentación del tema',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Cerrar',\n closeOthers: 'Cerrar otros',\n closeAll: 'Cerrar todos'\n }\n}\n","export default {\n route: {\n dashboard: 'Tablèu de bòrd',\n introduction: 'Introduccion',\n documentation: 'Documentacion',\n guide: 'Guida',\n permission: 'Autorizacions',\n pagePermission: 'Pagina d’autorizacion',\n directivePermission: 'Politica d’autorizacion',\n icons: 'Icònas',\n components: 'Compausants',\n componentIndex: 'Introduccion',\n tinymce: 'Tinymce',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n dndList: 'Dnd List',\n splitPane: 'SplitPane',\n avatarUpload: 'Mandadís d’avatar',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'CountTo',\n componentMixin: 'Mixin',\n backToTop: 'BackToTop',\n dragDialog: 'Drag Dialog',\n dragSelect: 'Drag Select',\n dragKanban: 'Drag Kanban',\n charts: 'Charts',\n keyboardChart: 'Keyboard Chart',\n lineChart: 'Line Chart',\n mixChart: 'Mix Chart',\n example: 'Exemple',\n nested: 'Rotas imbricadas',\n menu1: 'Menú 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menú 2',\n Table: 'Tablèu',\n dynamicTable: 'Tablèu dinamic',\n dragTable: 'Drag Table',\n inlineEditTable: 'Inline Edit',\n complexTable: 'Tablèu complèx',\n treeTable: 'Arborescéncia',\n customTreeTable: 'Arborescéncia personalizada',\n tab: 'Onglet',\n form: 'Formulari',\n createArticle: 'Crear un article',\n editArticle: 'Modificar l’article',\n articleList: 'Lista d’articles',\n errorPages: 'Paginas d’error',\n page401: '401',\n page404: '404',\n errorLog: 'Jornal d’error',\n excel: 'Excel',\n exportExcel: 'Exportacion Excel',\n selectExcel: 'Exportar los seleccionats',\n uploadExcel: 'Importacion Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportacion Zip',\n theme: 'Tèma',\n clipboardDemo: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Ligams extèrnes',\n users: 'Utilizaires'\n },\n navbar: {\n logOut: 'Desconnexion',\n dashboard: 'Tablèu de bòrd',\n github: 'Github',\n theme: 'Tèma',\n size: 'Talha totala'\n },\n login: {\n title: 'Formulari de connexion',\n logIn: 'Se connectar',\n username: 'Nom d’’utilizaire',\n password: 'Senhal',\n any: 'qual que siá',\n thirdparty: 'O se connectar amb',\n thirdpartyTips: 'Pòt pas èsser simulat en local, doncas montatz vòstra pròpria simulacion ! ! !'\n },\n documentation: {\n documentation: 'Documentacion',\n github: 'Repertòri Github'\n },\n permission: {\n roles: 'Vòstres ròtles',\n switchRoles: 'Cambiar de ròtle',\n tips: 'Dins qualques cases es pas de bon far d’utilizar v-permission, coma element d’onglet compausant, el-table-column o d’autres renduts dom asincròns que pòdon pas que foncionar amb un parametratge manual de v-if.'\n },\n guide: {\n description: 'La pagina de guida es utila pel monde que dintran dins lo projècte pel primièr còp. Podètz presentar en un mot las foncionalitats del projèctes. La demo es fondada sus ',\n button: 'Mostrar la guida'\n },\n components: {\n documentation: 'Documentacion',\n tinymceTips: 'Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.',\n dropzoneTips: 'Because my business has special needs, and has to upload images to qiniu, so instead of a third party, I chose encapsulate it by myself. It is very simple, you can see the detail code in @/components/Dropzone.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.'\n },\n table: {\n dynamicTips1: 'Bandièra fixa, triada per òrdre de bandièra',\n dynamicTips2: 'Bandièra pas fixa, triada per òrdre de clic',\n dragTips1: 'L’’òrdre per defaut',\n dragTips2: 'L’’òrdre aprèp lisar-depausar',\n title: 'Títol',\n importance: 'Imp',\n type: 'Tipe',\n remark: 'Remarca',\n search: 'Recercar',\n add: 'Ajustar',\n export: 'Exportar',\n reviewer: 'examinator',\n id: 'ID',\n date: 'Data',\n author: 'Autor',\n readings: 'Lecturas',\n status: 'Estatuts',\n actions: 'Accions',\n edit: 'Modificar',\n publish: 'Publicar',\n draft: 'Ensag',\n delete: 'Suprimir',\n cancel: 'Anullar',\n confirm: 'Confirmar'\n },\n errorLog: {\n tips: 'Mercés de clicar l’’icòna del babau amont a man drecha',\n description: 'Ara que lo sistèma de gestion es coma un spa, melhora l’experiéncia dels utilizaire mas aumenta tanben lo risc de problèmas sus la pagina, una pichona negligéncia pòt menar a un blocatge complèt de la pagina. Urosament Vue fornís de manièras per gerir las excepcions, trobar las errors o senhalar las excepcions.',\n documentation: 'Presentacion del document'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar los elements seleccionats',\n placeholder: 'Mercés de picar lo nom de fichièr (per defaut excel-list)'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Mercés de picar lo nom de fichièr (per defaut file)'\n },\n pdf: {\n tips: 'Aquí utilizam window.print() per prepausar lo telecargament de pdf.'\n },\n theme: {\n change: 'Cambiar lo tèma',\n documentation: 'Documentacion dels tèmas',\n tips: 'Astúcia : es diferent del theme-pick de la barra de navigacion, i a dos metòdes de personalizacion, caduna amb un biais de far diferent. Referiscam a la documentacion per mai de detalhs.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Tampar',\n closeOthers: 'Tampar los autres',\n closeAll: 'Los tampar totes'\n }\n}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-icon\",\n \"use\": \"icon-icon-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-404\",\n \"use\": \"icon-404-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import request from '@/utils/request'\nimport { getToken } from '@/utils/auth'\nimport { baseName } from './utils'\n\nimport _ from 'lodash'\n\nexport async function deletePack(host, token, name) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${name}`,\n method: 'delete',\n headers: authHeaders(token)\n })\n}\n\nexport async function reloadEmoji(host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/admin/reload_emoji',\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function importFromFS(host, token) {\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/emoji/packs/import_from_fs',\n method: 'post',\n headers: authHeaders(token)\n })\n}\n\nexport async function createPack(host, token, name) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${name}`,\n method: 'put',\n headers: authHeaders(token)\n })\n}\n\nexport async function listPacks(host) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/`,\n method: 'get'\n })\n}\n\nexport async function downloadFrom(host, instance_address, pack_name, as, token) {\n if (as.trim() === '') {\n as = null\n }\n\n return await request({\n baseURL: baseName(host),\n url: '/api/pleroma/emoji/packs/download_from',\n method: 'post',\n headers: authHeaders(token),\n data: { instance_address, pack_name, as },\n timeout: 0\n })\n}\n\nexport async function savePackMetadata(host, token, name, new_data) {\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${name}/update_metadata`,\n method: 'post',\n headers: authHeaders(token),\n data: { name, new_data },\n timeout: 0 // This might take a long time\n })\n}\n\nfunction fileUpdateFormData(d) {\n const data = new FormData()\n\n _.each(d, (v, k) => {\n data.set(k, v)\n })\n\n return data\n}\n\nexport async function updatePackFile(host, token, args) {\n let data = null\n\n switch (args.action) {\n case 'add': {\n const { shortcode, file, fileName } = args\n\n data = fileUpdateFormData({\n action: 'add',\n shortcode: shortcode,\n file: file\n })\n if (fileName.trim() !== '') {\n data.set('filename', fileName)\n }\n\n break\n }\n\n case 'update': {\n const { oldName, newName, newFilename } = args\n\n data = fileUpdateFormData({\n action: 'update',\n shortcode: oldName,\n new_shortcode: newName,\n new_filename: newFilename\n })\n\n break\n }\n\n case 'remove': {\n const { name } = args\n data = fileUpdateFormData({\n action: 'remove',\n shortcode: name\n })\n\n break\n }\n }\n\n const { packName } = args\n\n return await request({\n baseURL: baseName(host),\n url: `/api/pleroma/emoji/packs/${packName}/update_file`,\n method: 'post',\n headers: authHeaders(token),\n data: data,\n timeout: 0\n })\n}\n\nexport function addressOfEmojiInPack(host, packName, name) {\n // This needs http because hackney on the BE does not understand URLs with just \"//\"\n return `http://${baseName(host)}/emoji/${packName}/${name}`\n}\n\nconst authHeaders = (token) => token ? { 'Authorization': `Bearer ${getToken()}` } : {}\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-edit\",\n \"use\": \"icon-edit-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-lock\",\n \"use\": \"icon-lock-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-user\",\n \"use\": \"icon-user-usage\",\n \"viewBox\": \"0 0 130 130\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409EFF\",\"subMenuActiveText\":\"#f4f4f5\",\"menuBg\":\"#304156\",\"menuHover\":\"#263445\",\"subMenuBg\":\"#1f2d3d\",\"subMenuHover\":\"#001528\",\"sideBarWidth\":\"180px\"};","import axios from 'axios'\nimport { Message } from 'element-ui'\n\n// create an axios instance\nconst service = axios.create({\n timeout: 60000 // request timeout\n})\n\n// response interceptor\nservice.interceptors.response.use(\n response => response,\n error => {\n console.log('Error ' + error)\n Message({\n message: `${error.message} - ${error.response.data}`,\n type: 'error',\n duration: 5 * 1000\n })\n return Promise.reject(error)\n }\n)\n\nexport default service\n","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-clipboard\",\n \"use\": \"icon-clipboard-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',_vm._g({class:_vm.svgClass,attrs:{\"aria-hidden\":\"true\"}},_vm.$listeners),[_c('use',{attrs:{\"xlink:href\":_vm.iconName}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=4e710b96&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=4e710b96&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4e710b96\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-email\",\n \"use\": \"icon-email-usage\",\n \"viewBox\": \"0 0 128 96\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","import SpriteSymbol from \"svg-baker-runtime/browser-symbol\";\nimport sprite from \"svg-sprite-loader/runtime/browser-sprite.build\";\nvar symbol = new SpriteSymbol({\n \"id\": \"icon-chart\",\n \"use\": \"icon-chart-usage\",\n \"viewBox\": \"0 0 128 128\",\n \"content\": \"\"\n});\nvar result = sprite.add(symbol);\nexport default symbol","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409EFF\",\"subMenuActiveText\":\"#f4f4f5\",\"menuBg\":\"#304156\",\"menuHover\":\"#263445\",\"subMenuBg\":\"#1f2d3d\",\"subMenuHover\":\"#001528\",\"sideBarWidth\":\"180px\"};"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-02a0.db6ec114.js b/priv/static/adminfe/static/js/chunk-02a0.db6ec114.js deleted file mode 100644 index 6f8dd4d13..000000000 --- a/priv/static/adminfe/static/js/chunk-02a0.db6ec114.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-02a0"],{"+s0g":function(e,t,a){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),s=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],n=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},"//9w":function(e,t,a){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},"/X5v":function(e,t,a){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},"0mo+":function(e,t,a){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},a={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,a){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(a("wd/R"))},"0tRk":function(e,t,a){!function(e){"use strict";e.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(a("wd/R"))},"1rYy":function(e,t,a){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(a("wd/R"))},"1xZ4":function(e,t,a){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var a=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(a="a"),e+a},week:{dow:1,doy:4}})}(a("wd/R"))},"2fjn":function(e,t,a){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(a("wd/R"))},"2ykv":function(e,t,a){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),s=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],n=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},"3E1r":function(e,t,a){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(a("wd/R"))},"4MV3":function(e,t,a){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},a={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(a("wd/R"))},"4dOw":function(e,t,a){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},"6+QB":function(e,t,a){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(a("wd/R"))},"6B0Y":function(e,t,a){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},a={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,a){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},week:{dow:1,doy:4}})}(a("wd/R"))},"7BjC":function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?n[a][2]?n[a][2]:n[a][1]:s?n[a][0]:n[a][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},"7aV9":function(e,t,a){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,a){return e>11?a?"ප.ව.":"පස් වරු":a?"පෙ.ව.":"පෙර වරු"}})}(a("wd/R"))},"8/+R":function(e,t,a){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},a={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(a("wd/R"))},"8mBD":function(e,t,a){!function(e){"use strict";e.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},"9rRi":function(e,t,a){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){var t=1===e?"d":e%10==2?"na":"mh";return e+t},week:{dow:1,doy:4}})}(a("wd/R"))},"A+xa":function(e,t,a){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){var t=/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран";return e+t},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(a("wd/R"))},AQ68:function(e,t,a){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(a("wd/R"))},AvvY:function(e,t,a){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,a){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(a("wd/R"))},B55N:function(e,t,a){!function(e){"use strict";e.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,a){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"rati":e<12?"sokalli":e<16?"donparam":e<20?"sanje":"rati"}})}(a("wd/R"))},Dkky:function(e,t,a){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(a("wd/R"))},Dmvi:function(e,t,a){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},DoHr:function(e,t,a){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var s=e%10,n=e%100-s,r=e>=100?100:null;return e+(t[s]||t[n]||t[r])}},week:{dow:1,doy:7}})}(a("wd/R"))},DxQv:function(e,t,a){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},Dzi0:function(e,t,a){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(a("wd/R"))},"E+lV":function(e,t,a){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,s){var n=t.words[s];return 1===s.length?a?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},EOgW:function(e,t,a){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,a){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(a("wd/R"))},G0Uy:function(e,t,a){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},H8ED:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===a?t?"хвіліна":"хвіліну":"h"===a?t?"гадзіна":"гадзіну":e+" "+function(e,t){var a=e.split("_");return t%10==1&&t%100!=11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}(s[a],+e)}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(a("wd/R"))},HP3h:function(e,t,a){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},a=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},s={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},n=function(e){return function(t,n,r,d){var i=a(t),_=s[e][a(t)];return 2===i&&(_=_[n?0:1]),_.replace(/%d/i,t)}},r=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:n("s"),ss:n("s"),m:n("m"),mm:n("m"),h:n("h"),hh:n("h"),d:n("d"),dd:n("d"),M:n("M"),MM:n("M"),y:n("y"),yy:n("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(a("wd/R"))},IBtZ:function(e,t,a){!function(e){"use strict";e.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,"ში"):e+"ში"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(a("wd/R"))},"Ivi+":function(e,t,a){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,a){return e<12?"오전":"오후"}})}(a("wd/R"))},"JCF/":function(e,t,a){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},s=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:s,monthsShort:s,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(e){return/ئێواره‌/.test(e)},meridiem:function(e,t,a){return e<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(a("wd/R"))},JVSJ:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s=e+" ";switch(a){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},JvlW:function(e,t,a){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function a(e,t,a,s){return t?n(a)[0]:s?n(a)[1]:n(a)[2]}function s(e){return e%10==0||e>10&&e<20}function n(e){return t[e].split("_")}function r(e,t,r,d){var i=e+" ";return 1===e?i+a(0,t,r[0],d):t?i+(s(e)?n(r)[1]:n(r)[0]):d?i+n(r)[1]:i+(s(e)?n(r)[1]:n(r)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,a,s){return t?"kelios sekundės":s?"kelių sekundžių":"kelias sekundes"},ss:r,m:a,mm:r,h:a,hh:r,d:a,dd:r,M:a,MM:r,y:a,yy:r},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(a("wd/R"))},"K/tc":function(e,t,a){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,a){return e<12?a?"vm":"VM":a?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},KSF8:function(e,t,a){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,a){return e<12?a?"sa":"SA":a?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(a("wd/R"))},KTz0:function(e,t,a){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,s){var n=t.words[s];return 1===s.length?a?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},Loxo:function(e,t,a){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(a("wd/R"))},OIYi:function(e,t,a){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}})}(a("wd/R"))},Oaa7:function(e,t,a){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},Ob0Z:function(e,t,a){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function s(e,t,a,s){var n="";if(t)switch(a){case"s":n="काही सेकंद";break;case"ss":n="%d सेकंद";break;case"m":n="एक मिनिट";break;case"mm":n="%d मिनिटे";break;case"h":n="एक तास";break;case"hh":n="%d तास";break;case"d":n="एक दिवस";break;case"dd":n="%d दिवस";break;case"M":n="एक महिना";break;case"MM":n="%d महिने";break;case"y":n="एक वर्ष";break;case"yy":n="%d वर्षे"}else switch(a){case"s":n="काही सेकंदां";break;case"ss":n="%d सेकंदां";break;case"m":n="एका मिनिटा";break;case"mm":n="%d मिनिटां";break;case"h":n="एका तासा";break;case"hh":n="%d तासां";break;case"d":n="एका दिवसा";break;case"dd":n="%d दिवसां";break;case"M":n="एका महिन्या";break;case"MM":n="%d महिन्यां";break;case"y":n="एका वर्षा";break;case"yy":n="%d वर्षां"}return n.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात्री"===t?e<4?e:e+12:"सकाळी"===t?e:"दुपारी"===t?e>=10?e:e+12:"सायंकाळी"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"रात्री":e<10?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(a("wd/R"))},OjkT:function(e,t,a){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,a){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(a("wd/R"))},Oxv6:function(e,t,a){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){var a=e%10,s=e>=100?100:null;return e+(t[e]||t[a]||t[s])},week:{dow:1,doy:7}})}(a("wd/R"))},PA2r:function(e,t,a){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),a="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),s=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],n=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function r(e){return e>1&&e<5&&1!=~~(e/10)}function d(e,t,a,s){var n=e+" ";switch(a){case"s":return t||s?"pár sekund":"pár sekundami";case"ss":return t||s?n+(r(e)?"sekundy":"sekund"):n+"sekundami";case"m":return t?"minuta":s?"minutu":"minutou";case"mm":return t||s?n+(r(e)?"minuty":"minut"):n+"minutami";case"h":return t?"hodina":s?"hodinu":"hodinou";case"hh":return t||s?n+(r(e)?"hodiny":"hodin"):n+"hodinami";case"d":return t||s?"den":"dnem";case"dd":return t||s?n+(r(e)?"dny":"dní"):n+"dny";case"M":return t||s?"měsíc":"měsícem";case"MM":return t||s?n+(r(e)?"měsíce":"měsíců"):n+"měsíci";case"y":return t||s?"rok":"rokem";case"yy":return t||s?n+(r(e)?"roky":"let"):n+"lety"}}e.defineLocale("cs",{months:t,monthsShort:a,monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:d,ss:d,m:d,mm:d,h:d,hh:d,d:d,dd:d,M:d,MM:d,y:d,yy:d},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},PeUW:function(e,t,a){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},a={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,a){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t?e:"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(a("wd/R"))},PpIw:function(e,t,a){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},a={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(a("wd/R"))},Qj4J:function(e,t,a){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(a("wd/R"))},RAwQ:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?n[a][0]:n[a][1]}function a(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10,s=e/10;return a(0===t?s:t)}if(e<1e4){for(;e>=10;)e/=10;return a(e)}return a(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return a(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return a(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},S6ln:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s=e+" ";switch(a){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},SFxW:function(e,t,a){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,a){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var a=e%10,s=e%100-a,n=e>=100?100:null;return e+(t[a]||t[s]||t[n])},week:{dow:1,doy:7}})}(a("wd/R"))},SatO:function(e,t,a){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,a){var s=100*e+t;return s<600?"凌晨":s<900?"早上":s<1130?"上午":s<1230?"中午":s<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(a("wd/R"))},UDhR:function(e,t,a){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(a("wd/R"))},USCx:function(e,t,a){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],monthsShort:["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],weekdaysShort:["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],weekdaysMin:["Do","Lu","Má","Ce","Dé","hA","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){var t=1===e?"d":e%10==2?"na":"mh";return e+t},week:{dow:1,doy:4}})}(a("wd/R"))},UpQW:function(e,t,a){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],a=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,a){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(a("wd/R"))},Ur1D:function(e,t,a){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,a){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(a("wd/R"))},V2x9:function(e,t,a){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},Vclq:function(e,t,a){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),a="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),s=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(a("wd/R"))},WYrj:function(e,t,a){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],a=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,a){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(a("wd/R"))},WxRl:function(e,t,a){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function a(e,t,a,s){var n=e;switch(a){case"s":return s||t?"néhány másodperc":"néhány másodperce";case"ss":return n+(s||t)?" másodperc":" másodperce";case"m":return"egy"+(s||t?" perc":" perce");case"mm":return n+(s||t?" perc":" perce");case"h":return"egy"+(s||t?" óra":" órája");case"hh":return n+(s||t?" óra":" órája");case"d":return"egy"+(s||t?" nap":" napja");case"dd":return n+(s||t?" nap":" napja");case"M":return"egy"+(s||t?" hónap":" hónapja");case"MM":return n+(s||t?" hónap":" hónapja");case"y":return"egy"+(s||t?" év":" éve");case"yy":return n+(s||t?" év":" éve")}return""}function s(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,a){return e<12?!0===a?"de":"DE":!0===a?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return s.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return s.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},X709:function(e,t,a){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"e":1===t?"a":2===t?"a":"e";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},XDpg:function(e,t,a){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,a){var s=100*e+t;return s<600?"凌晨":s<900?"早上":s<1130?"上午":s<1230?"中午":s<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(a("wd/R"))},XLvN:function(e,t,a){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(a("wd/R"))},YRex:function(e,t,a){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,a){var s=100*e+t;return s<600?"يېرىم كېچە":s<900?"سەھەر":s<1130?"چۈشتىن بۇرۇن":s<1230?"چۈش":s<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(a("wd/R"))},YuTi:function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},Z4QM:function(e,t,a){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],a=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,a){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(a("wd/R"))},ZAMP:function(e,t,a){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(a("wd/R"))},Zduo:function(e,t,a){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,a){return e>11?a?"p.t.m.":"P.T.M.":a?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(a("wd/R"))},aIdf:function(e,t,a){!function(e){"use strict";function t(e,t,a){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[a],e)}e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(function e(t){return t>9?e(t%10):t}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){var t=1===e?"añ":"vet";return e+t},week:{dow:1,doy:4}})}(a("wd/R"))},aIsn:function(e,t,a){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},aQkU:function(e,t,a){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-ев":0===a?e+"-ен":a>10&&a<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(a("wd/R"))},b1Dy:function(e,t,a){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},bOMt:function(e,t,a){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},bXm7:function(e,t,a){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var a=e%10,s=e>=100?100:null;return e+(t[e]||t[a]||t[s])},week:{dow:1,doy:7}})}(a("wd/R"))},bYM6:function(e,t,a){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(a("wd/R"))},bpih:function(e,t,a){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},bxKX:function(e,t,a){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},cRix:function(e,t,a){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),a="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},czMo:function(e,t,a){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}})}(a("wd/R"))},dNwA:function(e,t,a){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(a("wd/R"))},"e+ae":function(e,t,a){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),a="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function s(e){return e>1&&e<5}function n(e,t,a,n){var r=e+" ";switch(a){case"s":return t||n?"pár sekúnd":"pár sekundami";case"ss":return t||n?r+(s(e)?"sekundy":"sekúnd"):r+"sekundami";case"m":return t?"minúta":n?"minútu":"minútou";case"mm":return t||n?r+(s(e)?"minúty":"minút"):r+"minútami";case"h":return t?"hodina":n?"hodinu":"hodinou";case"hh":return t||n?r+(s(e)?"hodiny":"hodín"):r+"hodinami";case"d":return t||n?"deň":"dňom";case"dd":return t||n?r+(s(e)?"dni":"dní"):r+"dňami";case"M":return t||n?"mesiac":"mesiacom";case"MM":return t||n?r+(s(e)?"mesiace":"mesiacov"):r+"mesiacmi";case"y":return t||n?"rok":"rokom";case"yy":return t||n?r+(s(e)?"roky":"rokov"):r+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:a,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},fzPg:function(e,t,a){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(a("wd/R"))},gVVK:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n=e+" ";switch(a){case"s":return t||s?"nekaj sekund":"nekaj sekundami";case"ss":return n+=1===e?t?"sekundo":"sekundi":2===e?t||s?"sekundi":"sekundah":e<5?t||s?"sekunde":"sekundah":"sekund";case"m":return t?"ena minuta":"eno minuto";case"mm":return n+=1===e?t?"minuta":"minuto":2===e?t||s?"minuti":"minutama":e<5?t||s?"minute":"minutami":t||s?"minut":"minutami";case"h":return t?"ena ura":"eno uro";case"hh":return n+=1===e?t?"ura":"uro":2===e?t||s?"uri":"urama":e<5?t||s?"ure":"urami":t||s?"ur":"urami";case"d":return t||s?"en dan":"enim dnem";case"dd":return n+=1===e?t||s?"dan":"dnem":2===e?t||s?"dni":"dnevoma":t||s?"dni":"dnevi";case"M":return t||s?"en mesec":"enim mesecem";case"MM":return n+=1===e?t||s?"mesec":"mesecem":2===e?t||s?"meseca":"mesecema":e<5?t||s?"mesece":"meseci":t||s?"mesecev":"meseci";case"y":return t||s?"eno leto":"enim letom";case"yy":return n+=1===e?t||s?"leto":"letom":2===e?t||s?"leti":"letoma":e<5?t||s?"leta":"leti":t||s?"let":"leti"}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},gekB:function(e,t,a){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),a=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function s(e,s,n,r){var d="";switch(n){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"ss":return r?"sekunnin":"sekuntia";case"m":return r?"minuutin":"minuutti";case"mm":d=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":d=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":d=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":d=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":d=r?"vuoden":"vuotta"}return d=function(e,s){return e<10?s?a[e]:t[e]:e}(e,r)+" "+d}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},gjCT:function(e,t,a){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:0,doy:6}})}(a("wd/R"))},hKrs:function(e,t,a){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-ев":0===a?e+"-ен":a>10&&a<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(a("wd/R"))},honF:function(e,t,a){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},a={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},week:{dow:1,doy:4}})}(a("wd/R"))},iEDd:function(e,t,a){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},iYuL:function(e,t,a){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),a="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),s=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},jUeY:function(e,t,a){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,a){return e>11?a?"μμ":"ΜΜ":a?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var a=this._calendarEl[e],s=t&&t.hours();return function(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}(a)&&(a=a.apply(t)),a.replace("{}",s%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(a("wd/R"))},jVdC:function(e,t,a){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),a="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function s(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function n(e,t,a){var n=e+" ";switch(a){case"ss":return n+(s(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return n+(s(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return n+(s(e)?"godziny":"godzin");case"MM":return n+(s(e)?"miesiące":"miesięcy");case"yy":return n+(s(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,s){return e?""===s?"("+a[e.month()]+"|"+t[e.month()]+")":/D MMMM/.test(s)?a[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:n,m:n,mm:n,h:n,hh:n,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:n,y:"rok",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},jfSC:function(e,t,a){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},a={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,a){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(a("wd/R"))},jnO4:function(e,t,a){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},s=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,a,r,d){var i=s(t),_=n[e][s(t)];return 2===i&&(_=_[a?0:1]),_.replace(/%d/i,t)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(a("wd/R"))},kEOa:function(e,t,a){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},a={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,a){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(a("wd/R"))},kOpN:function(e,t,a){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,a){var s=100*e+t;return s<600?"凌晨":s<900?"早上":s<1130?"上午":s<1230?"中午":s<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(a("wd/R"))},l5ep:function(e,t,a){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t=e,a="";return t>20?a=40===t||50===t||60===t||80===t||100===t?"fed":"ain":t>0&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][t]),e+a},week:{dow:1,doy:4}})}(a("wd/R"))},lXzo:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===a?t?"минута":"минуту":e+" "+function(e,t){var a=e.split("_");return t%10==1&&t%100!=11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}(s[a],+e)}var a=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:a,longMonthsParse:a,shortMonthsParse:a,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(a("wd/R"))},lYtQ:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){switch(a){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,a){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(a("wd/R"))},lgnt:function(e,t,a){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){var a=e%10,s=e>=100?100:null;return e+(t[e]||t[a]||t[s])},week:{dow:1,doy:7}})}(a("wd/R"))},lyxo:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s=" ";return(e%100>=20||e>=100&&e%100==0)&&(s=" de "),e+s+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[a]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(a("wd/R"))},nyYc:function(e,t,a){!function(e){"use strict";e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(a("wd/R"))},o1bE:function(e,t,a){!function(e){"use strict";e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})}(a("wd/R"))},"p/rL":function(e,t,a){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(a("wd/R"))},raLr:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===a?t?"хвилина":"хвилину":"h"===a?t?"година":"годину":e+" "+function(e,t){var a=e.split("_");return t%10==1&&t%100!=11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}(s[a],+e)}function a(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var a={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};if(!0===e)return a.nominative.slice(1,7).concat(a.nominative.slice(0,1));if(!e)return a.nominative;var s=/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative";return a[s][e.day()]},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:a("[Сьогодні "),nextDay:a("[Завтра "),lastDay:a("[Вчора "),nextWeek:a("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return a("[Минулої] dddd [").call(this);case 1:case 2:case 4:return a("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(a("wd/R"))},"s+uk":function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},sp3z:function(e,t,a){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,a){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(a("wd/R"))},tGlX:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},tT3J:function(e,t,a){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(a("wd/R"))},tUCv:function(e,t,a){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(a("wd/R"))},u3GI:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},uEye:function(e,t,a){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},uXwI:function(e,t,a){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function a(e,t,a){return a?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function s(e,s,n){return e+" "+a(t[n],e,s)}function n(e,s,n){return a(t[n],e,s)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},wQk9:function(e,t,a){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(a("wd/R"))},"wd/R":function(e,t,a){(function(e){e.exports=function(){"use strict";var t,s;function n(){return t.apply(null,arguments)}function r(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function d(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function i(e){return void 0===e}function _(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function o(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function u(e,t){var a,s=[];for(a=0;a>>0,s=0;s0)for(a=0;a=0;return(r?a?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+s}var J=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,N=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,C={},I={};function U(e,t,a,s){var n=s;"string"==typeof s&&(n=function(){return this[s]()}),e&&(I[e]=n),t&&(I[t[0]]=function(){return z(n.apply(this,arguments),t[1],t[2])}),a&&(I[a]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function G(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function V(e,t){return e.isValid()?(t=K(t,e.localeData()),C[t]=C[t]||function(e){var t,a,s=e.match(J);for(t=0,a=s.length;t=0&&N.test(e);)e=e.replace(N,s),N.lastIndex=0,a-=1;return e}var Z=/\d/,B=/\d\d/,$=/\d{3}/,q=/\d{4}/,Q=/[+-]?\d{6}/,X=/\d\d?/,ee=/\d\d\d\d?/,te=/\d\d\d\d\d\d?/,ae=/\d{1,3}/,se=/\d{1,4}/,ne=/[+-]?\d{1,6}/,re=/\d+/,de=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,_e=/Z|[+-]\d\d(?::?\d\d)?/gi,oe=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ue={};function me(e,t,a){ue[e]=j(t)?t:function(e,s){return e&&a?a:t}}function le(e,t){return m(ue,e)?ue[e](t._strict,t._locale):new RegExp(function(e){return Me(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,a,s,n){return t||a||s||n}))}(e))}function Me(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var he={};function ce(e,t){var a,s=t;for("string"==typeof e&&(e=[e]),_(t)&&(s=function(e,a){a[t]=T(e)}),a=0;a68?1900:2e3)};var be,je=xe("FullYear",!0);function xe(e,t){return function(a){return null!=a?(Pe(this,e,a),n.updateOffset(this,t),this):Oe(this,e)}}function Oe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Pe(e,t,a){e.isValid()&&!isNaN(a)&&("FullYear"===t&&He(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](a,e.month(),We(a,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](a))}function We(e,t){if(isNaN(e)||isNaN(t))return NaN;var a=function(e,t){return(e%t+t)%t}(t,12);return e+=(t-a)/12,1===a?He(e)?29:28:31-a%7%2}be=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t=0){var a=Array.prototype.slice.call(arguments);a[0]=e+400,t=new Date(Date.UTC.apply(null,a)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Ue(e,t,a){var s=7+t-a,n=(7+Ie(e,0,s).getUTCDay()-t)%7;return-n+s-1}function Ge(e,t,a,s,n){var r,d,i=(7+a-s)%7,_=Ue(e,s,n),o=1+7*(t-1)+i+_;return o<=0?d=Se(r=e-1)+o:o>Se(e)?(r=e+1,d=o-Se(e)):(r=e,d=o),{year:r,dayOfYear:d}}function Ve(e,t,a){var s,n,r=Ue(e.year(),t,a),d=Math.floor((e.dayOfYear()-r-1)/7)+1;return d<1?(n=e.year()-1,s=d+Ke(n,t,a)):d>Ke(e.year(),t,a)?(s=d-Ke(e.year(),t,a),n=e.year()+1):(n=e.year(),s=d),{week:s,year:n}}function Ke(e,t,a){var s=Ue(e,t,a),n=Ue(e+1,t,a);return(Se(e)-s+n)/7}function Ze(e,t){return e.slice(t,7).concat(e.slice(0,t))}U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),W("week","w"),W("isoWeek","W"),R("week",5),R("isoWeek",5),me("w",X),me("ww",X,B),me("W",X),me("WW",X,B),Le(["w","ww","W","WW"],function(e,t,a,s){t[s.substr(0,1)]=T(e)}),U("d",0,"do","day"),U("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),U("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),U("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),W("day","d"),W("weekday","e"),W("isoWeekday","E"),R("day",11),R("weekday",11),R("isoWeekday",11),me("d",X),me("e",X),me("E",X),me("dd",function(e,t){return t.weekdaysMinRegex(e)}),me("ddd",function(e,t){return t.weekdaysShortRegex(e)}),me("dddd",function(e,t){return t.weekdaysRegex(e)}),Le(["dd","ddd","dddd"],function(e,t,a,s){var n=a._locale.weekdaysParse(e,s,a._strict);null!=n?t.d=n:h(a).invalidWeekday=e}),Le(["d","e","E"],function(e,t,a,s){t[s]=T(e)});var Be="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),$e="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),qe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Qe=oe,Xe=oe,et=oe;function tt(){function e(e,t){return t.length-e.length}var t,a,s,n,r,d=[],i=[],_=[],o=[];for(t=0;t<7;t++)a=M([2e3,1]).day(t),s=this.weekdaysMin(a,""),n=this.weekdaysShort(a,""),r=this.weekdays(a,""),d.push(s),i.push(n),_.push(r),o.push(s),o.push(n),o.push(r);for(d.sort(e),i.sort(e),_.sort(e),o.sort(e),t=0;t<7;t++)i[t]=Me(i[t]),_[t]=Me(_[t]),o[t]=Me(o[t]);this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+d.join("|")+")","i")}function at(){return this.hours()%12||12}function st(e,t){U(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function nt(e,t){return t._meridiemParse}U("H",["HH",2],0,"hour"),U("h",["hh",2],0,at),U("k",["kk",2],0,function(){return this.hours()||24}),U("hmm",0,0,function(){return""+at.apply(this)+z(this.minutes(),2)}),U("hmmss",0,0,function(){return""+at.apply(this)+z(this.minutes(),2)+z(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+z(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+z(this.minutes(),2)+z(this.seconds(),2)}),st("a",!0),st("A",!1),W("hour","h"),R("hour",13),me("a",nt),me("A",nt),me("H",X),me("h",X),me("k",X),me("HH",X,B),me("hh",X,B),me("kk",X,B),me("hmm",ee),me("hmmss",te),me("Hmm",ee),me("Hmmss",te),ce(["H","HH"],ke),ce(["k","kk"],function(e,t,a){var s=T(e);t[ke]=24===s?0:s}),ce(["a","A"],function(e,t,a){a._isPm=a._locale.isPM(e),a._meridiem=e}),ce(["h","hh"],function(e,t,a){t[ke]=T(e),h(a).bigHour=!0}),ce("hmm",function(e,t,a){var s=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s)),h(a).bigHour=!0}),ce("hmmss",function(e,t,a){var s=e.length-4,n=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s,2)),t[Te]=T(e.substr(n)),h(a).bigHour=!0}),ce("Hmm",function(e,t,a){var s=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s))}),ce("Hmmss",function(e,t,a){var s=e.length-4,n=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s,2)),t[Te]=T(e.substr(n))});var rt,dt=xe("Hours",!0),it={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ee,monthsShort:Fe,week:{dow:0,doy:6},weekdays:Be,weekdaysMin:qe,weekdaysShort:$e,meridiemParse:/[ap]\.?m?\.?/i},_t={},ot={};function ut(e){return e?e.toLowerCase().replace("_","-"):e}function mt(t){var s=null;if(!_t[t]&&void 0!==e&&e&&e.exports)try{s=rt._abbr,a("RnhZ")("./"+t),lt(s)}catch(e){}return _t[t]}function lt(e,t){var a;return e&&((a=i(t)?ht(e):Mt(e,t))?rt=a:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),rt._abbr}function Mt(e,t){if(null!==t){var a,s=it;if(t.abbr=e,null!=_t[e])b("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=_t[e]._config;else if(null!=t.parentLocale)if(null!=_t[t.parentLocale])s=_t[t.parentLocale]._config;else{if(null==(a=mt(t.parentLocale)))return ot[t.parentLocale]||(ot[t.parentLocale]=[]),ot[t.parentLocale].push({name:e,config:t}),null;s=a._config}return _t[e]=new O(x(s,t)),ot[e]&&ot[e].forEach(function(e){Mt(e.name,e.config)}),lt(e),_t[e]}return delete _t[e],null}function ht(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return rt;if(!r(e)){if(t=mt(e))return t;e=[e]}return function(e){for(var t,a,s,n,r=0;r0;){if(s=mt(n.slice(0,t).join("-")))return s;if(a&&a.length>=t&&w(n,a,!0)>=t-1)break;t--}r++}return rt}(e)}function ct(e){var t,a=e._a;return a&&-2===h(e).overflow&&(t=a[fe]<0||a[fe]>11?fe:a[pe]<1||a[pe]>We(a[ye],a[fe])?pe:a[ke]<0||a[ke]>24||24===a[ke]&&(0!==a[De]||0!==a[Te]||0!==a[we])?ke:a[De]<0||a[De]>59?De:a[Te]<0||a[Te]>59?Te:a[we]<0||a[we]>999?we:-1,h(e)._overflowDayOfYear&&(tpe)&&(t=pe),h(e)._overflowWeeks&&-1===t&&(t=ge),h(e)._overflowWeekday&&-1===t&&(t=ve),h(e).overflow=t),e}function Lt(e,t,a){return null!=e?e:null!=t?t:a}function Yt(e){var t,a,s,r,d,i=[];if(!e._d){for(s=function(e){var t=new Date(n.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[pe]&&null==e._a[fe]&&function(e){var t,a,s,n,r,d,i,_;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,d=4,a=Lt(t.GG,e._a[ye],Ve(Ot(),1,4).year),s=Lt(t.W,1),((n=Lt(t.E,1))<1||n>7)&&(_=!0);else{r=e._locale._week.dow,d=e._locale._week.doy;var o=Ve(Ot(),r,d);a=Lt(t.gg,e._a[ye],o.year),s=Lt(t.w,o.week),null!=t.d?((n=t.d)<0||n>6)&&(_=!0):null!=t.e?(n=t.e+r,(t.e<0||t.e>6)&&(_=!0)):n=r}s<1||s>Ke(a,r,d)?h(e)._overflowWeeks=!0:null!=_?h(e)._overflowWeekday=!0:(i=Ge(a,s,n,r,d),e._a[ye]=i.year,e._dayOfYear=i.dayOfYear)}(e),null!=e._dayOfYear&&(d=Lt(e._a[ye],s[ye]),(e._dayOfYear>Se(d)||0===e._dayOfYear)&&(h(e)._overflowDayOfYear=!0),a=Ie(d,0,e._dayOfYear),e._a[fe]=a.getUTCMonth(),e._a[pe]=a.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=i[t]=s[t];for(;t<7;t++)e._a[t]=i[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ke]&&0===e._a[De]&&0===e._a[Te]&&0===e._a[we]&&(e._nextDay=!0,e._a[ke]=0),e._d=(e._useUTC?Ie:function(e,t,a,s,n,r,d){var i;return e<100&&e>=0?(i=new Date(e+400,t,a,s,n,r,d),isFinite(i.getFullYear())&&i.setFullYear(e)):i=new Date(e,t,a,s,n,r,d),i}).apply(null,i),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ke]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(h(e).weekdayMismatch=!0)}}var yt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ft=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,pt=/Z|[+-]\d\d(?::?\d\d)?/,kt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Dt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Tt=/^\/?Date\((\-?\d+)/i;function wt(e){var t,a,s,n,r,d,i=e._i,_=yt.exec(i)||ft.exec(i);if(_){for(h(e).iso=!0,t=0,a=kt.length;t0&&h(e).unusedInput.push(d),i=i.slice(i.indexOf(a)+a.length),o+=a.length),I[r]?(a?h(e).empty=!1:h(e).unusedTokens.push(r),Ye(r,a,e)):e._strict&&!a&&h(e).unusedTokens.push(r);h(e).charsLeftOver=_-o,i.length>0&&h(e).unusedInput.push(i),e._a[ke]<=12&&!0===h(e).bigHour&&e._a[ke]>0&&(h(e).bigHour=void 0),h(e).parsedDateParts=e._a.slice(0),h(e).meridiem=e._meridiem,e._a[ke]=function(e,t,a){var s;return null==a?t:null!=e.meridiemHour?e.meridiemHour(t,a):null!=e.isPM?((s=e.isPM(a))&&t<12&&(t+=12),s||12!==t||(t=0),t):t}(e._locale,e._a[ke],e._meridiem),Yt(e),ct(e)}else Ht(e);else wt(e)}function jt(e){var t=e._i,a=e._f;return e._locale=e._locale||ht(e._l),null===t||void 0===a&&""===t?L({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),k(t)?new p(ct(t)):(o(t)?e._d=t:r(a)?function(e){var t,a,s,n,r;if(0===e._f.length)return h(e).invalidFormat=!0,void(e._d=new Date(NaN));for(n=0;nthis?this:e:L()});function At(e,t){var a,s;if(1===t.length&&r(t[0])&&(t=t[0]),!t.length)return Ot();for(a=t[0],s=1;s=0?new Date(e+400,t,a)-_a:new Date(e,t,a).valueOf()}function ma(e,t,a){return e<100&&e>=0?Date.UTC(e+400,t,a)-_a:Date.UTC(e,t,a)}function la(e,t){U(0,[e,e.length],0,t)}function Ma(e,t,a,s,n){var r;return null==e?Ve(this,s,n).year:(r=Ke(e,s,n),t>r&&(t=r),function(e,t,a,s,n){var r=Ge(e,t,a,s,n),d=Ie(r.year,0,r.dayOfYear);return this.year(d.getUTCFullYear()),this.month(d.getUTCMonth()),this.date(d.getUTCDate()),this}.call(this,e,t,a,s,n))}U(0,["gg",2],0,function(){return this.weekYear()%100}),U(0,["GG",2],0,function(){return this.isoWeekYear()%100}),la("gggg","weekYear"),la("ggggg","weekYear"),la("GGGG","isoWeekYear"),la("GGGGG","isoWeekYear"),W("weekYear","gg"),W("isoWeekYear","GG"),R("weekYear",1),R("isoWeekYear",1),me("G",de),me("g",de),me("GG",X,B),me("gg",X,B),me("GGGG",se,q),me("gggg",se,q),me("GGGGG",ne,Q),me("ggggg",ne,Q),Le(["gggg","ggggg","GGGG","GGGGG"],function(e,t,a,s){t[s.substr(0,2)]=T(e)}),Le(["gg","GG"],function(e,t,a,s){t[s]=n.parseTwoDigitYear(e)}),U("Q",0,"Qo","quarter"),W("quarter","Q"),R("quarter",7),me("Q",Z),ce("Q",function(e,t){t[fe]=3*(T(e)-1)}),U("D",["DD",2],"Do","date"),W("date","D"),R("date",9),me("D",X),me("DD",X,B),me("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],pe),ce("Do",function(e,t){t[pe]=T(e.match(X)[0])});var ha=xe("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),W("dayOfYear","DDD"),R("dayOfYear",4),me("DDD",ae),me("DDDD",$),ce(["DDD","DDDD"],function(e,t,a){a._dayOfYear=T(e)}),U("m",["mm",2],0,"minute"),W("minute","m"),R("minute",14),me("m",X),me("mm",X,B),ce(["m","mm"],De);var ca=xe("Minutes",!1);U("s",["ss",2],0,"second"),W("second","s"),R("second",15),me("s",X),me("ss",X,B),ce(["s","ss"],Te);var La,Ya=xe("Seconds",!1);for(U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return 10*this.millisecond()}),U(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),U(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),U(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),U(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),U(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),W("millisecond","ms"),R("millisecond",16),me("S",ae,Z),me("SS",ae,B),me("SSS",ae,$),La="SSSS";La.length<=9;La+="S")me(La,re);function ya(e,t){t[we]=T(1e3*("0."+e))}for(La="S";La.length<=9;La+="S")ce(La,ya);var fa=xe("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var pa=p.prototype;function ka(e){return e}pa.add=Xt,pa.calendar=function(e,t){var a=e||Ot(),s=It(a,this).startOf("day"),r=n.calendarFormat(this,s)||"sameElse",d=t&&(j(t[r])?t[r].call(this,a):t[r]);return this.format(d||this.localeData().calendar(r,this,Ot(a)))},pa.clone=function(){return new p(this)},pa.diff=function(e,t,a){var s,n,r;if(!this.isValid())return NaN;if(!(s=It(e,this)).isValid())return NaN;switch(n=6e4*(s.utcOffset()-this.utcOffset()),t=A(t)){case"year":r=ta(this,s)/12;break;case"month":r=ta(this,s);break;case"quarter":r=ta(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-n)/864e5;break;case"week":r=(this-s-n)/6048e5;break;default:r=this-s}return a?r:D(r)},pa.endOf=function(e){var t;if(void 0===(e=A(e))||"millisecond"===e||!this.isValid())return this;var a=this._isUTC?ma:ua;switch(e){case"year":t=a(this.year()+1,0,1)-1;break;case"quarter":t=a(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=a(this.year(),this.month()+1,1)-1;break;case"week":t=a(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=a(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=ia-oa(t+(this._isUTC?0:this.utcOffset()*da),ia)-1;break;case"minute":t=this._d.valueOf(),t+=da-oa(t,da)-1;break;case"second":t=this._d.valueOf(),t+=ra-oa(t,ra)-1}return this._d.setTime(t),n.updateOffset(this,!0),this},pa.format=function(e){e||(e=this.isUtc()?n.defaultFormatUtc:n.defaultFormat);var t=V(this,e);return this.localeData().postformat(t)},pa.from=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||Ot(e).isValid())?Zt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pa.fromNow=function(e){return this.from(Ot(),e)},pa.to=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||Ot(e).isValid())?Zt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pa.toNow=function(e){return this.to(Ot(),e)},pa.get=function(e){return j(this[e=A(e)])?this[e]():this},pa.invalidAt=function(){return h(this).overflow},pa.isAfter=function(e,t){var a=k(e)?e:Ot(e);return!(!this.isValid()||!a.isValid())&&("millisecond"===(t=A(t)||"millisecond")?this.valueOf()>a.valueOf():a.valueOf()9999?V(a,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):j(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",V(a,"Z")):V(a,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},pa.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var a="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=t+'[")]';return this.format(a+s+"-MM-DD[T]HH:mm:ss.SSS"+n)},pa.toJSON=function(){return this.isValid()?this.toISOString():null},pa.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},pa.unix=function(){return Math.floor(this.valueOf()/1e3)},pa.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},pa.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},pa.year=je,pa.isLeapYear=function(){return He(this.year())},pa.weekYear=function(e){return Ma.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},pa.isoWeekYear=function(e){return Ma.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},pa.quarter=pa.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},pa.month=ze,pa.daysInMonth=function(){return We(this.year(),this.month())},pa.week=pa.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},pa.isoWeek=pa.isoWeeks=function(e){var t=Ve(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},pa.weeksInYear=function(){var e=this.localeData()._week;return Ke(this.year(),e.dow,e.doy)},pa.isoWeeksInYear=function(){return Ke(this.year(),1,4)},pa.date=ha,pa.day=pa.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},pa.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},pa.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},pa.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},pa.hour=pa.hours=dt,pa.minute=pa.minutes=ca,pa.second=pa.seconds=Ya,pa.millisecond=pa.milliseconds=fa,pa.utcOffset=function(e,t,a){var s,r=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Ct(_e,e)))return this}else Math.abs(e)<16&&!a&&(e*=60);return!this._isUTC&&t&&(s=Ut(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),r!==e&&(!t||this._changeInProgress?Qt(this,Zt(e-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,n.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:Ut(this)},pa.utc=function(e){return this.utcOffset(0,e)},pa.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Ut(this),"m")),this},pa.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Ct(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},pa.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Ot(e).utcOffset():0,(this.utcOffset()-e)%60==0)},pa.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},pa.isLocal=function(){return!!this.isValid()&&!this._isUTC},pa.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},pa.isUtc=Gt,pa.isUTC=Gt,pa.zoneAbbr=function(){return this._isUTC?"UTC":""},pa.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},pa.dates=v("dates accessor is deprecated. Use date instead.",ha),pa.months=v("months accessor is deprecated. Use month instead",ze),pa.years=v("years accessor is deprecated. Use year instead",je),pa.zone=v("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),pa.isDSTShifted=v("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!i(this._isDSTShifted))return this._isDSTShifted;var e={};if(y(e,this),(e=jt(e))._a){var t=e._isUTC?M(e._a):Ot(e._a);this._isDSTShifted=this.isValid()&&w(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var Da=O.prototype;function Ta(e,t,a,s){var n=ht(),r=M().set(s,t);return n[a](r,e)}function wa(e,t,a){if(_(e)&&(t=e,e=void 0),e=e||"",null!=t)return Ta(e,t,a,"month");var s,n=[];for(s=0;s<12;s++)n[s]=Ta(e,s,a,"month");return n}function ga(e,t,a,s){"boolean"==typeof e?(_(t)&&(a=t,t=void 0),t=t||""):(a=t=e,e=!1,_(t)&&(a=t,t=void 0),t=t||"");var n,r=ht(),d=e?r._week.dow:0;if(null!=a)return Ta(t,(a+d)%7,s,"day");var i=[];for(n=0;n<7;n++)i[n]=Ta(t,(n+d)%7,s,"day");return i}Da.calendar=function(e,t,a){var s=this._calendar[e]||this._calendar.sameElse;return j(s)?s.call(t,a):s},Da.longDateFormat=function(e){var t=this._longDateFormat[e],a=this._longDateFormat[e.toUpperCase()];return t||!a?t:(this._longDateFormat[e]=a.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},Da.invalidDate=function(){return this._invalidDate},Da.ordinal=function(e){return this._ordinal.replace("%d",e)},Da.preparse=ka,Da.postformat=ka,Da.relativeTime=function(e,t,a,s){var n=this._relativeTime[a];return j(n)?n(e,t,a,s):n.replace(/%d/i,e)},Da.pastFuture=function(e,t){var a=this._relativeTime[e>0?"future":"past"];return j(a)?a(t):a.replace(/%s/i,t)},Da.set=function(e){var t,a;for(a in e)j(t=e[a])?this[a]=t:this["_"+a]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Da.months=function(e,t){return e?r(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Ae).test(t)?"format":"standalone"][e.month()]:r(this._months)?this._months:this._months.standalone},Da.monthsShort=function(e,t){return e?r(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Ae.test(t)?"format":"standalone"][e.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Da.monthsParse=function(e,t,a){var s,n,r;if(this._monthsParseExact)return function(e,t,a){var s,n,r,d=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=M([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return a?"MMM"===t?-1!==(n=be.call(this._shortMonthsParse,d))?n:null:-1!==(n=be.call(this._longMonthsParse,d))?n:null:"MMM"===t?-1!==(n=be.call(this._shortMonthsParse,d))?n:-1!==(n=be.call(this._longMonthsParse,d))?n:null:-1!==(n=be.call(this._longMonthsParse,d))?n:-1!==(n=be.call(this._shortMonthsParse,d))?n:null}.call(this,e,t,a);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(n=M([2e3,s]),a&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),a||this._monthsParse[s]||(r="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),a&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(a&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!a&&this._monthsParse[s].test(e))return s}},Da.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ce.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Ne),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Da.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ce.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Je),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Da.week=function(e){return Ve(e,this._week.dow,this._week.doy).week},Da.firstDayOfYear=function(){return this._week.doy},Da.firstDayOfWeek=function(){return this._week.dow},Da.weekdays=function(e,t){var a=r(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Ze(a,this._week.dow):e?a[e.day()]:a},Da.weekdaysMin=function(e){return!0===e?Ze(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Da.weekdaysShort=function(e){return!0===e?Ze(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Da.weekdaysParse=function(e,t,a){var s,n,r;if(this._weekdaysParseExact)return function(e,t,a){var s,n,r,d=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=M([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return a?"dddd"===t?-1!==(n=be.call(this._weekdaysParse,d))?n:null:"ddd"===t?-1!==(n=be.call(this._shortWeekdaysParse,d))?n:null:-1!==(n=be.call(this._minWeekdaysParse,d))?n:null:"dddd"===t?-1!==(n=be.call(this._weekdaysParse,d))?n:-1!==(n=be.call(this._shortWeekdaysParse,d))?n:-1!==(n=be.call(this._minWeekdaysParse,d))?n:null:"ddd"===t?-1!==(n=be.call(this._shortWeekdaysParse,d))?n:-1!==(n=be.call(this._weekdaysParse,d))?n:-1!==(n=be.call(this._minWeekdaysParse,d))?n:null:-1!==(n=be.call(this._minWeekdaysParse,d))?n:-1!==(n=be.call(this._weekdaysParse,d))?n:-1!==(n=be.call(this._shortWeekdaysParse,d))?n:null}.call(this,e,t,a);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(n=M([2e3,1]).day(s),a&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),a&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(a&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(a&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!a&&this._weekdaysParse[s].test(e))return s}},Da.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||tt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=Qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},Da.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||tt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Xe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Da.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||tt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=et),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Da.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Da.meridiem=function(e,t,a){return e>11?a?"pm":"PM":a?"am":"AM"},lt("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,a=1===T(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}}),n.lang=v("moment.lang is deprecated. Use moment.locale instead.",lt),n.langData=v("moment.langData is deprecated. Use moment.localeData instead.",ht);var va=Math.abs;function Sa(e,t,a,s){var n=Zt(t,a);return e._milliseconds+=s*n._milliseconds,e._days+=s*n._days,e._months+=s*n._months,e._bubble()}function Ha(e){return e<0?Math.floor(e):Math.ceil(e)}function ba(e){return 4800*e/146097}function ja(e){return 146097*e/4800}function xa(e){return function(){return this.as(e)}}var Oa=xa("ms"),Pa=xa("s"),Wa=xa("m"),Aa=xa("h"),Ea=xa("d"),Fa=xa("w"),Ra=xa("M"),za=xa("Q"),Ja=xa("y");function Na(e){return function(){return this.isValid()?this._data[e]:NaN}}var Ca=Na("milliseconds"),Ia=Na("seconds"),Ua=Na("minutes"),Ga=Na("hours"),Va=Na("days"),Ka=Na("months"),Za=Na("years"),Ba=Math.round,$a={ss:44,s:45,m:45,h:22,d:26,M:11},qa=Math.abs;function Qa(e){return(e>0)-(e<0)||+e}function Xa(){if(!this.isValid())return this.localeData().invalidDate();var e,t,a=qa(this._milliseconds)/1e3,s=qa(this._days),n=qa(this._months);e=D(a/60),t=D(e/60),a%=60,e%=60;var r=D(n/12),d=n%=12,i=s,_=t,o=e,u=a?a.toFixed(3).replace(/\.?0+$/,""):"",m=this.asSeconds();if(!m)return"P0D";var l=m<0?"-":"",M=Qa(this._months)!==Qa(m)?"-":"",h=Qa(this._days)!==Qa(m)?"-":"",c=Qa(this._milliseconds)!==Qa(m)?"-":"";return l+"P"+(r?M+r+"Y":"")+(d?M+d+"M":"")+(i?h+i+"D":"")+(_||o||u?"T":"")+(_?c+_+"H":"")+(o?c+o+"M":"")+(u?c+u+"S":"")}var es=Ft.prototype;return es.isValid=function(){return this._isValid},es.abs=function(){var e=this._data;return this._milliseconds=va(this._milliseconds),this._days=va(this._days),this._months=va(this._months),e.milliseconds=va(e.milliseconds),e.seconds=va(e.seconds),e.minutes=va(e.minutes),e.hours=va(e.hours),e.months=va(e.months),e.years=va(e.years),this},es.add=function(e,t){return Sa(this,e,t,1)},es.subtract=function(e,t){return Sa(this,e,t,-1)},es.as=function(e){if(!this.isValid())return NaN;var t,a,s=this._milliseconds;if("month"===(e=A(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,a=this._months+ba(t),e){case"month":return a;case"quarter":return a/3;case"year":return a/12}else switch(t=this._days+Math.round(ja(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},es.asMilliseconds=Oa,es.asSeconds=Pa,es.asMinutes=Wa,es.asHours=Aa,es.asDays=Ea,es.asWeeks=Fa,es.asMonths=Ra,es.asQuarters=za,es.asYears=Ja,es.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*T(this._months/12):NaN},es._bubble=function(){var e,t,a,s,n,r=this._milliseconds,d=this._days,i=this._months,_=this._data;return r>=0&&d>=0&&i>=0||r<=0&&d<=0&&i<=0||(r+=864e5*Ha(ja(i)+d),d=0,i=0),_.milliseconds=r%1e3,e=D(r/1e3),_.seconds=e%60,t=D(e/60),_.minutes=t%60,a=D(t/60),_.hours=a%24,d+=D(a/24),n=D(ba(d)),i+=n,d-=Ha(ja(n)),s=D(i/12),i%=12,_.days=d,_.months=i,_.years=s,this},es.clone=function(){return Zt(this)},es.get=function(e){return e=A(e),this.isValid()?this[e+"s"]():NaN},es.milliseconds=Ca,es.seconds=Ia,es.minutes=Ua,es.hours=Ga,es.days=Va,es.weeks=function(){return D(this.days()/7)},es.months=Ka,es.years=Za,es.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),a=function(e,t,a){var s=Zt(e).abs(),n=Ba(s.as("s")),r=Ba(s.as("m")),d=Ba(s.as("h")),i=Ba(s.as("d")),_=Ba(s.as("M")),o=Ba(s.as("y")),u=n<=$a.ss&&["s",n]||n<$a.s&&["ss",n]||r<=1&&["m"]||r<$a.m&&["mm",r]||d<=1&&["h"]||d<$a.h&&["hh",d]||i<=1&&["d"]||i<$a.d&&["dd",i]||_<=1&&["M"]||_<$a.M&&["MM",_]||o<=1&&["y"]||["yy",o];return u[2]=t,u[3]=+e>0,u[4]=a,function(e,t,a,s,n){return n.relativeTime(t||1,!!a,e,s)}.apply(null,u)}(this,!e,t);return e&&(a=t.pastFuture(+this,a)),t.postformat(a)},es.toISOString=Xa,es.toString=Xa,es.toJSON=Xa,es.locale=aa,es.localeData=na,es.toIsoString=v("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Xa),es.lang=sa,U("X",0,0,"unix"),U("x",0,0,"valueOf"),me("x",de),me("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,a){a._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,a){a._d=new Date(T(e))}),n.version="2.24.0",function(e){t=e}(Ot),n.fn=pa,n.min=function(){return At("isBefore",[].slice.call(arguments,0))},n.max=function(){return At("isAfter",[].slice.call(arguments,0))},n.now=function(){return Date.now?Date.now():+new Date},n.utc=M,n.unix=function(e){return Ot(1e3*e)},n.months=function(e,t){return wa(e,t,"months")},n.isDate=o,n.locale=lt,n.invalid=L,n.duration=Zt,n.isMoment=k,n.weekdays=function(e,t,a){return ga(e,t,a,"weekdays")},n.parseZone=function(){return Ot.apply(null,arguments).parseZone()},n.localeData=ht,n.isDuration=Rt,n.monthsShort=function(e,t){return wa(e,t,"monthsShort")},n.weekdaysMin=function(e,t,a){return ga(e,t,a,"weekdaysMin")},n.defineLocale=Mt,n.updateLocale=function(e,t){if(null!=t){var a,s,n=it;null!=(s=mt(e))&&(n=s._config),t=x(n,t),(a=new O(t)).parentLocale=_t[e],_t[e]=a,lt(e)}else null!=_t[e]&&(null!=_t[e].parentLocale?_t[e]=_t[e].parentLocale:null!=_t[e]&&delete _t[e]);return _t[e]},n.locales=function(){return S(_t)},n.weekdaysShort=function(e,t,a){return ga(e,t,a,"weekdaysShort")},n.normalizeUnits=A,n.relativeTimeRounding=function(e){return void 0===e?Ba:"function"==typeof e&&(Ba=e,!0)},n.relativeTimeThreshold=function(e,t){return void 0!==$a[e]&&(void 0===t?$a[e]:($a[e]=t,"s"===e&&($a.ss=t-1),!0))},n.calendarFormat=function(e,t){var a=e.diff(t,"days",!0);return a<-6?"sameElse":a<-1?"lastWeek":a<0?"lastDay":a<1?"sameDay":a<2?"nextDay":a<7?"nextWeek":"sameElse"},n.prototype=pa,n.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},n}()}).call(this,a("YuTi")(e))},x6pH:function(e,t,a){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,a){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?a?'לפנה"צ':"לפני הצהריים":e<18?a?'אחה"צ':"אחרי הצהריים":"בערב"}})}(a("wd/R"))},yPMs:function(e,t,a){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,a){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},z1FC:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s?n[a][0]:t?n[a][0]:n[a][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,a){return e>11?a?"d'o":"D'O":a?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},z3Vd:function(e,t,a){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function a(e,a,s,n){var r=function(e){var a=Math.floor(e%1e3/100),s=Math.floor(e%100/10),n=e%10,r="";return a>0&&(r+=t[a]+"vatlh"),s>0&&(r+=(""!==r?" ":"")+t[s]+"maH"),n>0&&(r+=(""!==r?" ":"")+t[n]),""===r?"pagh":r}(e);switch(s){case"ss":return r+" lup";case"mm":return r+" tup";case"hh":return r+" rep";case"dd":return r+" jaj";case"MM":return r+" jar";case"yy":return r+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:a,m:"wa’ tup",mm:a,h:"wa’ rep",hh:a,d:"wa’ jaj",dd:a,M:"wa’ jar",MM:a,y:"wa’ DIS",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},zavE:function(e,t,a){!function(e){"use strict";e.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},zx6S:function(e,t,a){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,s){var n=t.words[s];return 1===s.length?a?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))}}]); \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0620.c765c190.js b/priv/static/adminfe/static/js/chunk-0620.c765c190.js index aa8ddedce..72077a5ac 100644 --- a/priv/static/adminfe/static/js/chunk-0620.c765c190.js +++ b/priv/static/adminfe/static/js/chunk-0620.c765c190.js @@ -5,4 +5,5 @@ * author : Adam Draper * license : MIT * http://adamwdraper.github.com/Numeral-js/ - */void 0===(i="function"==typeof(n=function(){var e,t,r={},n={},i={currentLocale:"en",zeroFormat:null,nullFormat:null,defaultFormat:"0,0",scalePercentBy100:!0},o={currentLocale:i.currentLocale,zeroFormat:i.zeroFormat,nullFormat:i.nullFormat,defaultFormat:i.defaultFormat,scalePercentBy100:i.scalePercentBy100};function a(e,t){this._input=e,this._value=t}return(e=function(n){var i,u,l,c;if(e.isNumeral(n))i=n.value();else if(0===n||void 0===n)i=0;else if(null===n||t.isNaN(n))i=null;else if("string"==typeof n)if(o.zeroFormat&&n===o.zeroFormat)i=0;else if(o.nullFormat&&n===o.nullFormat||!n.replace(/[^0-9]+/g,"").length)i=null;else{for(u in r)if((c="function"==typeof r[u].regexps.unformat?r[u].regexps.unformat():r[u].regexps.unformat)&&n.match(c)){l=r[u].unformat;break}i=(l=l||e._.stringToNumber)(n)}else i=Number(n)||null;return new a(n,i)}).version="2.0.6",e.isNumeral=function(e){return e instanceof a},e._=t={numberToFormat:function(t,r,i){var o,a,u,l,c,s,f,m,h=n[e.options.currentLocale],b=!1,d=!1,p="",g="",v=!1;if(t=t||0,u=Math.abs(t),e._.includes(r,"(")?(b=!0,r=r.replace(/[\(|\)]/g,"")):(e._.includes(r,"+")||e._.includes(r,"-"))&&(s=e._.includes(r,"+")?r.indexOf("+"):t<0?r.indexOf("-"):-1,r=r.replace(/[\+|\-]/g,"")),e._.includes(r,"a")&&(a=!!(a=r.match(/a(k|m|b|t)?/))&&a[1],e._.includes(r," a")&&(p=" "),r=r.replace(new RegExp(p+"a[kmbt]?"),""),u>=1e12&&!a||"t"===a?(p+=h.abbreviations.trillion,t/=1e12):u<1e12&&u>=1e9&&!a||"b"===a?(p+=h.abbreviations.billion,t/=1e9):u<1e9&&u>=1e6&&!a||"m"===a?(p+=h.abbreviations.million,t/=1e6):(u<1e6&&u>=1e3&&!a||"k"===a)&&(p+=h.abbreviations.thousand,t/=1e3)),e._.includes(r,"[.]")&&(d=!0,r=r.replace("[.]",".")),l=t.toString().split(".")[0],c=r.split(".")[1],f=r.indexOf(","),o=(r.split(".")[0].split(",")[0].match(/0/g)||[]).length,c?(e._.includes(c,"[")?(c=(c=c.replace("]","")).split("["),g=e._.toFixed(t,c[0].length+c[1].length,i,c[1].length)):g=e._.toFixed(t,c.length,i),l=g.split(".")[0],g=e._.includes(g,".")?h.delimiters.decimal+g.split(".")[1]:"",d&&0===Number(g.slice(1))&&(g="")):l=e._.toFixed(t,0,i),p&&!a&&Number(l)>=1e3&&p!==h.abbreviations.trillion)switch(l=String(Number(l)/1e3),p){case h.abbreviations.thousand:p=h.abbreviations.million;break;case h.abbreviations.million:p=h.abbreviations.billion;break;case h.abbreviations.billion:p=h.abbreviations.trillion}if(e._.includes(l,"-")&&(l=l.slice(1),v=!0),l.length0;_--)l="0"+l;return f>-1&&(l=l.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+h.delimiters.thousands)),0===r.indexOf(".")&&(l=""),m=l+g+(p||""),b?m=(b&&v?"(":"")+m+(b&&v?")":""):s>=0?m=0===s?(v?"-":"+")+m:m+(v?"-":"+"):v&&(m="-"+m),m},stringToNumber:function(e){var t,r,i,a=n[o.currentLocale],u=e,l={thousand:3,million:6,billion:9,trillion:12};if(o.zeroFormat&&e===o.zeroFormat)r=0;else if(o.nullFormat&&e===o.nullFormat||!e.replace(/[^0-9]+/g,"").length)r=null;else{for(t in r=1,"."!==a.delimiters.decimal&&(e=e.replace(/\./g,"").replace(a.delimiters.decimal,".")),l)if(i=new RegExp("[^a-zA-Z]"+a.abbreviations[t]+"(?:\\)|(\\"+a.currency.symbol+")?(?:\\))?)?$"),u.match(i)){r*=Math.pow(10,l[t]);break}r*=(e.split("-").length+Math.min(e.split("(").length-1,e.split(")").length-1))%2?1:-1,e=e.replace(/[^0-9\.]+/g,""),r*=Number(e)}return r},isNaN:function(e){return"number"==typeof e&&isNaN(e)},includes:function(e,t){return-1!==e.indexOf(t)},insert:function(e,t,r){return e.slice(0,r)+t+e.slice(r)},reduce:function(e,t){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof t)throw new TypeError(t+" is not a function");var r,n=Object(e),i=n.length>>>0,o=0;if(3===arguments.length)r=arguments[2];else{for(;o=i)throw new TypeError("Reduce of empty array with no initial value");r=n[o++]}for(;on?e:n},1)},toFixed:function(e,t,r,n){var i,o,a,u,l=e.toString().split("."),c=t-(n||0);return i=2===l.length?Math.min(Math.max(l[1].length,c),t):c,a=Math.pow(10,i),u=(r(e+"e+"+i)/a).toFixed(i),n>t-i&&(o=new RegExp("\\.?0{1,"+(n-(t-i))+"}$"),u=u.replace(o,"")),u}},e.options=o,e.formats=r,e.locales=n,e.locale=function(e){return e&&(o.currentLocale=e.toLowerCase()),o.currentLocale},e.localeData=function(e){if(!e)return n[o.currentLocale];if(e=e.toLowerCase(),!n[e])throw new Error("Unknown locale : "+e);return n[e]},e.reset=function(){for(var e in i)o[e]=i[e]},e.zeroFormat=function(e){o.zeroFormat="string"==typeof e?e:null},e.nullFormat=function(e){o.nullFormat="string"==typeof e?e:null},e.defaultFormat=function(e){o.defaultFormat="string"==typeof e?e:"0.0"},e.register=function(e,t,r){if(t=t.toLowerCase(),this[e+"s"][t])throw new TypeError(t+" "+e+" already registered.");return this[e+"s"][t]=r,r},e.validate=function(t,r){var n,i,o,a,u,l,c,s;if("string"!=typeof t&&(t+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",t)),(t=t.trim()).match(/^\d+$/))return!0;if(""===t)return!1;try{c=e.localeData(r)}catch(t){c=e.localeData(e.locale())}return o=c.currency.symbol,u=c.abbreviations,n=c.delimiters.decimal,i="."===c.delimiters.thousands?"\\.":c.delimiters.thousands,!(null!==(s=t.match(/^[^\d]+/))&&(t=t.substr(1),s[0]!==o)||null!==(s=t.match(/[^\d]+$/))&&(t=t.slice(0,-1),s[0]!==u.thousand&&s[0]!==u.million&&s[0]!==u.billion&&s[0]!==u.trillion)||(l=new RegExp(i+"{2}"),t.match(/[^\d.,]/g)||(a=t.split(n)).length>2||(a.length<2?!a[0].match(/^\d+.*\d$/)||a[0].match(l):1===a[0].length?!a[0].match(/^\d+$/)||a[0].match(l)||!a[1].match(/^\d+$/):!a[0].match(/^\d+.*\d$/)||a[0].match(l)||!a[1].match(/^\d+$/))))},e.fn=a.prototype={clone:function(){return e(this)},format:function(t,n){var i,a,u,l=this._value,c=t||o.defaultFormat;if(n=n||Math.round,0===l&&null!==o.zeroFormat)a=o.zeroFormat;else if(null===l&&null!==o.nullFormat)a=o.nullFormat;else{for(i in r)if(c.match(r[i].regexps.format)){u=r[i].format;break}a=(u=u||e._.numberToFormat)(l,c,n)}return a},value:function(){return this._value},input:function(){return this._input},set:function(e){return this._value=Number(e),this},add:function(e){var r=t.correctionFactor.call(null,this._value,e);return this._value=t.reduce([this._value,e],function(e,t,n,i){return e+Math.round(r*t)},0)/r,this},subtract:function(e){var r=t.correctionFactor.call(null,this._value,e);return this._value=t.reduce([e],function(e,t,n,i){return e-Math.round(r*t)},Math.round(this._value*r))/r,this},multiply:function(e){return this._value=t.reduce([this._value,e],function(e,r,n,i){var o=t.correctionFactor(e,r);return Math.round(e*o)*Math.round(r*o)/Math.round(o*o)},1),this},divide:function(e){return this._value=t.reduce([this._value,e],function(e,r,n,i){var o=t.correctionFactor(e,r);return Math.round(e*o)/Math.round(r*o)}),this},difference:function(t){return Math.abs(e(this._value).subtract(t).value())}},e.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"$"}}),e.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(t,r,n){var i,o=e._.includes(r," BPS")?" ":"";return t*=1e4,r=r.replace(/\s?BPS/,""),i=e._.numberToFormat(t,r,n),e._.includes(i,")")?((i=i.split("")).splice(-1,0,o+"BPS"),i=i.join("")):i=i+o+"BPS",i},unformat:function(t){return+(1e-4*e._.stringToNumber(t)).toFixed(15)}}),function(){var t={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]},r={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},n=t.suffixes.concat(r.suffixes.filter(function(e){return t.suffixes.indexOf(e)<0})).join("|");n="("+n.replace("B","B(?!PS)")+")",e.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(n)},format:function(n,i,o){var a,u,l,c=e._.includes(i,"ib")?r:t,s=e._.includes(i," b")||e._.includes(i," ib")?" ":"";for(i=i.replace(/\s?i?b/,""),a=0;a<=c.suffixes.length;a++)if(u=Math.pow(c.base,a),l=Math.pow(c.base,a+1),null===n||0===n||n>=u&&n0&&(n/=u);break}return e._.numberToFormat(n,i,o)+s},unformat:function(n){var i,o,a=e._.stringToNumber(n);if(a){for(i=t.suffixes.length-1;i>=0;i--){if(e._.includes(n,t.suffixes[i])){o=Math.pow(t.base,i);break}if(e._.includes(n,r.suffixes[i])){o=Math.pow(r.base,i);break}}a*=o||1}return a}})}(),e.register("format","currency",{regexps:{format:/(\$)/},format:function(t,r,n){var i,o,a=e.locales[e.options.currentLocale],u={before:r.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:r.match(/([\+|\-|\)|\s|\$]*)$/)[0]};for(r=r.replace(/\s?\$\s?/,""),i=e._.numberToFormat(t,r,n),t>=0?(u.before=u.before.replace(/[\-\(]/,""),u.after=u.after.replace(/[\-\)]/,"")):t<0&&!e._.includes(u.before,"-")&&!e._.includes(u.before,"(")&&(u.before="-"+u.before),o=0;o=0;o--)switch(u.after[o]){case"$":i=o===u.after.length-1?i+a.currency.symbol:e._.insert(i,a.currency.symbol,-(u.after.length-(1+o)));break;case" ":i=o===u.after.length-1?i+" ":e._.insert(i," ",-(u.after.length-(1+o)+a.currency.symbol.length-1))}return i}}),e.register("format","exponential",{regexps:{format:/(e\+|e-)/,unformat:/(e\+|e-)/},format:function(t,r,n){var i=("number"!=typeof t||e._.isNaN(t)?"0e+0":t.toExponential()).split("e");return r=r.replace(/e[\+|\-]{1}0/,""),e._.numberToFormat(Number(i[0]),r,n)+"e"+i[1]},unformat:function(t){var r=e._.includes(t,"e+")?t.split("e+"):t.split("e-"),n=Number(r[0]),i=Number(r[1]);return i=e._.includes(t,"e-")?i*=-1:i,e._.reduce([n,Math.pow(10,i)],function(t,r,n,i){var o=e._.correctionFactor(t,r);return t*o*(r*o)/(o*o)},1)}}),e.register("format","ordinal",{regexps:{format:/(o)/},format:function(t,r,n){var i=e.locales[e.options.currentLocale],o=e._.includes(r," o")?" ":"";return r=r.replace(/\s?o/,""),o+=i.ordinal(t),e._.numberToFormat(t,r,n)+o}}),e.register("format","percentage",{regexps:{format:/(%)/,unformat:/(%)/},format:function(t,r,n){var i,o=e._.includes(r," %")?" ":"";return e.options.scalePercentBy100&&(t*=100),r=r.replace(/\s?\%/,""),i=e._.numberToFormat(t,r,n),e._.includes(i,")")?((i=i.split("")).splice(-1,0,o+"%"),i=i.join("")):i=i+o+"%",i},unformat:function(t){var r=e._.stringToNumber(t);return e.options.scalePercentBy100?.01*r:r}}),e.register("format","time",{regexps:{format:/(:)/,unformat:/(:)/},format:function(e,t,r){var n=Math.floor(e/60/60),i=Math.floor((e-60*n*60)/60),o=Math.round(e-60*n*60-60*i);return n+":"+(i<10?"0"+i:i)+":"+(o<10?"0"+o:o)},unformat:function(e){var t=e.split(":"),r=0;return 3===t.length?(r+=60*Number(t[0])*60,r+=60*Number(t[1]),r+=Number(t[2])):2===t.length&&(r+=60*Number(t[0]),r+=Number(t[1])),Number(r)}}),e})?n.call(t,r,t,e):n)||(e.exports=i)}}]); \ No newline at end of file + */void 0===(i="function"==typeof(n=function(){var e,t,r={},n={},i={currentLocale:"en",zeroFormat:null,nullFormat:null,defaultFormat:"0,0",scalePercentBy100:!0},o={currentLocale:i.currentLocale,zeroFormat:i.zeroFormat,nullFormat:i.nullFormat,defaultFormat:i.defaultFormat,scalePercentBy100:i.scalePercentBy100};function a(e,t){this._input=e,this._value=t}return(e=function(n){var i,u,l,c;if(e.isNumeral(n))i=n.value();else if(0===n||void 0===n)i=0;else if(null===n||t.isNaN(n))i=null;else if("string"==typeof n)if(o.zeroFormat&&n===o.zeroFormat)i=0;else if(o.nullFormat&&n===o.nullFormat||!n.replace(/[^0-9]+/g,"").length)i=null;else{for(u in r)if((c="function"==typeof r[u].regexps.unformat?r[u].regexps.unformat():r[u].regexps.unformat)&&n.match(c)){l=r[u].unformat;break}i=(l=l||e._.stringToNumber)(n)}else i=Number(n)||null;return new a(n,i)}).version="2.0.6",e.isNumeral=function(e){return e instanceof a},e._=t={numberToFormat:function(t,r,i){var o,a,u,l,c,s,f,m,h=n[e.options.currentLocale],b=!1,d=!1,p="",g="",v=!1;if(t=t||0,u=Math.abs(t),e._.includes(r,"(")?(b=!0,r=r.replace(/[\(|\)]/g,"")):(e._.includes(r,"+")||e._.includes(r,"-"))&&(s=e._.includes(r,"+")?r.indexOf("+"):t<0?r.indexOf("-"):-1,r=r.replace(/[\+|\-]/g,"")),e._.includes(r,"a")&&(a=!!(a=r.match(/a(k|m|b|t)?/))&&a[1],e._.includes(r," a")&&(p=" "),r=r.replace(new RegExp(p+"a[kmbt]?"),""),u>=1e12&&!a||"t"===a?(p+=h.abbreviations.trillion,t/=1e12):u<1e12&&u>=1e9&&!a||"b"===a?(p+=h.abbreviations.billion,t/=1e9):u<1e9&&u>=1e6&&!a||"m"===a?(p+=h.abbreviations.million,t/=1e6):(u<1e6&&u>=1e3&&!a||"k"===a)&&(p+=h.abbreviations.thousand,t/=1e3)),e._.includes(r,"[.]")&&(d=!0,r=r.replace("[.]",".")),l=t.toString().split(".")[0],c=r.split(".")[1],f=r.indexOf(","),o=(r.split(".")[0].split(",")[0].match(/0/g)||[]).length,c?(e._.includes(c,"[")?(c=(c=c.replace("]","")).split("["),g=e._.toFixed(t,c[0].length+c[1].length,i,c[1].length)):g=e._.toFixed(t,c.length,i),l=g.split(".")[0],g=e._.includes(g,".")?h.delimiters.decimal+g.split(".")[1]:"",d&&0===Number(g.slice(1))&&(g="")):l=e._.toFixed(t,0,i),p&&!a&&Number(l)>=1e3&&p!==h.abbreviations.trillion)switch(l=String(Number(l)/1e3),p){case h.abbreviations.thousand:p=h.abbreviations.million;break;case h.abbreviations.million:p=h.abbreviations.billion;break;case h.abbreviations.billion:p=h.abbreviations.trillion}if(e._.includes(l,"-")&&(l=l.slice(1),v=!0),l.length0;_--)l="0"+l;return f>-1&&(l=l.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+h.delimiters.thousands)),0===r.indexOf(".")&&(l=""),m=l+g+(p||""),b?m=(b&&v?"(":"")+m+(b&&v?")":""):s>=0?m=0===s?(v?"-":"+")+m:m+(v?"-":"+"):v&&(m="-"+m),m},stringToNumber:function(e){var t,r,i,a=n[o.currentLocale],u=e,l={thousand:3,million:6,billion:9,trillion:12};if(o.zeroFormat&&e===o.zeroFormat)r=0;else if(o.nullFormat&&e===o.nullFormat||!e.replace(/[^0-9]+/g,"").length)r=null;else{for(t in r=1,"."!==a.delimiters.decimal&&(e=e.replace(/\./g,"").replace(a.delimiters.decimal,".")),l)if(i=new RegExp("[^a-zA-Z]"+a.abbreviations[t]+"(?:\\)|(\\"+a.currency.symbol+")?(?:\\))?)?$"),u.match(i)){r*=Math.pow(10,l[t]);break}r*=(e.split("-").length+Math.min(e.split("(").length-1,e.split(")").length-1))%2?1:-1,e=e.replace(/[^0-9\.]+/g,""),r*=Number(e)}return r},isNaN:function(e){return"number"==typeof e&&isNaN(e)},includes:function(e,t){return-1!==e.indexOf(t)},insert:function(e,t,r){return e.slice(0,r)+t+e.slice(r)},reduce:function(e,t){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof t)throw new TypeError(t+" is not a function");var r,n=Object(e),i=n.length>>>0,o=0;if(3===arguments.length)r=arguments[2];else{for(;o=i)throw new TypeError("Reduce of empty array with no initial value");r=n[o++]}for(;on?e:n},1)},toFixed:function(e,t,r,n){var i,o,a,u,l=e.toString().split("."),c=t-(n||0);return i=2===l.length?Math.min(Math.max(l[1].length,c),t):c,a=Math.pow(10,i),u=(r(e+"e+"+i)/a).toFixed(i),n>t-i&&(o=new RegExp("\\.?0{1,"+(n-(t-i))+"}$"),u=u.replace(o,"")),u}},e.options=o,e.formats=r,e.locales=n,e.locale=function(e){return e&&(o.currentLocale=e.toLowerCase()),o.currentLocale},e.localeData=function(e){if(!e)return n[o.currentLocale];if(e=e.toLowerCase(),!n[e])throw new Error("Unknown locale : "+e);return n[e]},e.reset=function(){for(var e in i)o[e]=i[e]},e.zeroFormat=function(e){o.zeroFormat="string"==typeof e?e:null},e.nullFormat=function(e){o.nullFormat="string"==typeof e?e:null},e.defaultFormat=function(e){o.defaultFormat="string"==typeof e?e:"0.0"},e.register=function(e,t,r){if(t=t.toLowerCase(),this[e+"s"][t])throw new TypeError(t+" "+e+" already registered.");return this[e+"s"][t]=r,r},e.validate=function(t,r){var n,i,o,a,u,l,c,s;if("string"!=typeof t&&(t+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",t)),(t=t.trim()).match(/^\d+$/))return!0;if(""===t)return!1;try{c=e.localeData(r)}catch(t){c=e.localeData(e.locale())}return o=c.currency.symbol,u=c.abbreviations,n=c.delimiters.decimal,i="."===c.delimiters.thousands?"\\.":c.delimiters.thousands,!(null!==(s=t.match(/^[^\d]+/))&&(t=t.substr(1),s[0]!==o)||null!==(s=t.match(/[^\d]+$/))&&(t=t.slice(0,-1),s[0]!==u.thousand&&s[0]!==u.million&&s[0]!==u.billion&&s[0]!==u.trillion)||(l=new RegExp(i+"{2}"),t.match(/[^\d.,]/g)||(a=t.split(n)).length>2||(a.length<2?!a[0].match(/^\d+.*\d$/)||a[0].match(l):1===a[0].length?!a[0].match(/^\d+$/)||a[0].match(l)||!a[1].match(/^\d+$/):!a[0].match(/^\d+.*\d$/)||a[0].match(l)||!a[1].match(/^\d+$/))))},e.fn=a.prototype={clone:function(){return e(this)},format:function(t,n){var i,a,u,l=this._value,c=t||o.defaultFormat;if(n=n||Math.round,0===l&&null!==o.zeroFormat)a=o.zeroFormat;else if(null===l&&null!==o.nullFormat)a=o.nullFormat;else{for(i in r)if(c.match(r[i].regexps.format)){u=r[i].format;break}a=(u=u||e._.numberToFormat)(l,c,n)}return a},value:function(){return this._value},input:function(){return this._input},set:function(e){return this._value=Number(e),this},add:function(e){var r=t.correctionFactor.call(null,this._value,e);return this._value=t.reduce([this._value,e],function(e,t,n,i){return e+Math.round(r*t)},0)/r,this},subtract:function(e){var r=t.correctionFactor.call(null,this._value,e);return this._value=t.reduce([e],function(e,t,n,i){return e-Math.round(r*t)},Math.round(this._value*r))/r,this},multiply:function(e){return this._value=t.reduce([this._value,e],function(e,r,n,i){var o=t.correctionFactor(e,r);return Math.round(e*o)*Math.round(r*o)/Math.round(o*o)},1),this},divide:function(e){return this._value=t.reduce([this._value,e],function(e,r,n,i){var o=t.correctionFactor(e,r);return Math.round(e*o)/Math.round(r*o)}),this},difference:function(t){return Math.abs(e(this._value).subtract(t).value())}},e.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(e){var t=e%10;return 1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th"},currency:{symbol:"$"}}),e.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(t,r,n){var i,o=e._.includes(r," BPS")?" ":"";return t*=1e4,r=r.replace(/\s?BPS/,""),i=e._.numberToFormat(t,r,n),e._.includes(i,")")?((i=i.split("")).splice(-1,0,o+"BPS"),i=i.join("")):i=i+o+"BPS",i},unformat:function(t){return+(1e-4*e._.stringToNumber(t)).toFixed(15)}}),function(){var t={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]},r={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},n=t.suffixes.concat(r.suffixes.filter(function(e){return t.suffixes.indexOf(e)<0})).join("|");n="("+n.replace("B","B(?!PS)")+")",e.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(n)},format:function(n,i,o){var a,u,l,c=e._.includes(i,"ib")?r:t,s=e._.includes(i," b")||e._.includes(i," ib")?" ":"";for(i=i.replace(/\s?i?b/,""),a=0;a<=c.suffixes.length;a++)if(u=Math.pow(c.base,a),l=Math.pow(c.base,a+1),null===n||0===n||n>=u&&n0&&(n/=u);break}return e._.numberToFormat(n,i,o)+s},unformat:function(n){var i,o,a=e._.stringToNumber(n);if(a){for(i=t.suffixes.length-1;i>=0;i--){if(e._.includes(n,t.suffixes[i])){o=Math.pow(t.base,i);break}if(e._.includes(n,r.suffixes[i])){o=Math.pow(r.base,i);break}}a*=o||1}return a}})}(),e.register("format","currency",{regexps:{format:/(\$)/},format:function(t,r,n){var i,o,a=e.locales[e.options.currentLocale],u={before:r.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:r.match(/([\+|\-|\)|\s|\$]*)$/)[0]};for(r=r.replace(/\s?\$\s?/,""),i=e._.numberToFormat(t,r,n),t>=0?(u.before=u.before.replace(/[\-\(]/,""),u.after=u.after.replace(/[\-\)]/,"")):t<0&&!e._.includes(u.before,"-")&&!e._.includes(u.before,"(")&&(u.before="-"+u.before),o=0;o=0;o--)switch(u.after[o]){case"$":i=o===u.after.length-1?i+a.currency.symbol:e._.insert(i,a.currency.symbol,-(u.after.length-(1+o)));break;case" ":i=o===u.after.length-1?i+" ":e._.insert(i," ",-(u.after.length-(1+o)+a.currency.symbol.length-1))}return i}}),e.register("format","exponential",{regexps:{format:/(e\+|e-)/,unformat:/(e\+|e-)/},format:function(t,r,n){var i=("number"!=typeof t||e._.isNaN(t)?"0e+0":t.toExponential()).split("e");return r=r.replace(/e[\+|\-]{1}0/,""),e._.numberToFormat(Number(i[0]),r,n)+"e"+i[1]},unformat:function(t){var r=e._.includes(t,"e+")?t.split("e+"):t.split("e-"),n=Number(r[0]),i=Number(r[1]);return i=e._.includes(t,"e-")?i*=-1:i,e._.reduce([n,Math.pow(10,i)],function(t,r,n,i){var o=e._.correctionFactor(t,r);return t*o*(r*o)/(o*o)},1)}}),e.register("format","ordinal",{regexps:{format:/(o)/},format:function(t,r,n){var i=e.locales[e.options.currentLocale],o=e._.includes(r," o")?" ":"";return r=r.replace(/\s?o/,""),o+=i.ordinal(t),e._.numberToFormat(t,r,n)+o}}),e.register("format","percentage",{regexps:{format:/(%)/,unformat:/(%)/},format:function(t,r,n){var i,o=e._.includes(r," %")?" ":"";return e.options.scalePercentBy100&&(t*=100),r=r.replace(/\s?\%/,""),i=e._.numberToFormat(t,r,n),e._.includes(i,")")?((i=i.split("")).splice(-1,0,o+"%"),i=i.join("")):i=i+o+"%",i},unformat:function(t){var r=e._.stringToNumber(t);return e.options.scalePercentBy100?.01*r:r}}),e.register("format","time",{regexps:{format:/(:)/,unformat:/(:)/},format:function(e,t,r){var n=Math.floor(e/60/60),i=Math.floor((e-60*n*60)/60),o=Math.round(e-60*n*60-60*i);return n+":"+(i<10?"0"+i:i)+":"+(o<10?"0"+o:o)},unformat:function(e){var t=e.split(":"),r=0;return 3===t.length?(r+=60*Number(t[0])*60,r+=60*Number(t[1]),r+=Number(t[2])):2===t.length&&(r+=60*Number(t[0]),r+=Number(t[1])),Number(r)}}),e})?n.call(t,r,t,e):n)||(e.exports=i)}}]); +//# sourceMappingURL=chunk-0620.c765c190.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0620.c765c190.js.map b/priv/static/adminfe/static/js/chunk-0620.c765c190.js.map new file mode 100644 index 000000000..f39b8237f --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-0620.c765c190.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/lodash.debounce/index.js","webpack:///./node_modules/numeral/numeral.js"],"names":["global","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","numeral","_","formats","locales","defaults","currentLocale","zeroFormat","nullFormat","defaultFormat","scalePercentBy100","Numeral","input","number","_input","_value","kind","unformatFunction","regexp","isNumeral","isNaN","length","regexps","unformat","match","stringToNumber","Number","version","obj","numberToFormat","format","roundingFunction","leadingCount","abbrForce","abs","int","precision","signed","thousands","output","locale","negP","optDec","abbr","decimal","neg","includes","indexOf","RegExp","abbreviations","trillion","billion","million","thousand","split","toFixed","delimiters","String","i","string","abbreviation","stringOriginal","currency","symbol","pow","search","insert","subString","start","reduce","array","callback","t","len","k","multiplier","x","parts","correctionFactor","Array","accum","next","mn","maxDecimals","optionals","boundedPrecision","optionalsRegExp","power","splitValue","minDecimals","key","toLowerCase","localeData","Error","reset","property","register","name","validate","val","culture","_decimalSep","_thousandSep","_currSymbol","_valArray","_abbrObj","_thousandRegEx","temp","console","warn","trim","e","substr","fn","clone","inputString","formatFunction","round","set","add","corrFactor","curr","currI","O","subtract","multiply","divide","difference","ordinal","b","space","splice","join","base","suffixes","binary","unformatRegex","concat","filter","item","bytes","suffix","bytesMultiplier","symbols","before","after","toExponential","hours","floor","minutes","seconds","timeArray","__webpack_require__"],"mappings":"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","file":"static/js/chunk-0620.c765c190.js","sourcesContent":["/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/*! @preserve\n * numeral.js\n * version : 2.0.6\n * author : Adam Draper\n * license : MIT\n * http://adamwdraper.github.com/Numeral-js/\n */\n\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory();\n } else {\n global.numeral = factory();\n }\n}(this, function () {\n /************************************\n Variables\n ************************************/\n\n var numeral,\n _,\n VERSION = '2.0.6',\n formats = {},\n locales = {},\n defaults = {\n currentLocale: 'en',\n zeroFormat: null,\n nullFormat: null,\n defaultFormat: '0,0',\n scalePercentBy100: true\n },\n options = {\n currentLocale: defaults.currentLocale,\n zeroFormat: defaults.zeroFormat,\n nullFormat: defaults.nullFormat,\n defaultFormat: defaults.defaultFormat,\n scalePercentBy100: defaults.scalePercentBy100\n };\n\n\n /************************************\n Constructors\n ************************************/\n\n // Numeral prototype object\n function Numeral(input, number) {\n this._input = input;\n\n this._value = number;\n }\n\n numeral = function(input) {\n var value,\n kind,\n unformatFunction,\n regexp;\n\n if (numeral.isNumeral(input)) {\n value = input.value();\n } else if (input === 0 || typeof input === 'undefined') {\n value = 0;\n } else if (input === null || _.isNaN(input)) {\n value = null;\n } else if (typeof input === 'string') {\n if (options.zeroFormat && input === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && input === options.nullFormat || !input.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n for (kind in formats) {\n regexp = typeof formats[kind].regexps.unformat === 'function' ? formats[kind].regexps.unformat() : formats[kind].regexps.unformat;\n\n if (regexp && input.match(regexp)) {\n unformatFunction = formats[kind].unformat;\n\n break;\n }\n }\n\n unformatFunction = unformatFunction || numeral._.stringToNumber;\n\n value = unformatFunction(input);\n }\n } else {\n value = Number(input)|| null;\n }\n\n return new Numeral(input, value);\n };\n\n // version number\n numeral.version = VERSION;\n\n // compare numeral object\n numeral.isNumeral = function(obj) {\n return obj instanceof Numeral;\n };\n\n // helper functions\n numeral._ = _ = {\n // formats numbers separators, decimals places, signs, abbreviations\n numberToFormat: function(value, format, roundingFunction) {\n var locale = locales[numeral.options.currentLocale],\n negP = false,\n optDec = false,\n leadingCount = 0,\n abbr = '',\n trillion = 1000000000000,\n billion = 1000000000,\n million = 1000000,\n thousand = 1000,\n decimal = '',\n neg = false,\n abbrForce, // force abbreviation\n abs,\n min,\n max,\n power,\n int,\n precision,\n signed,\n thousands,\n output;\n\n // make sure we never format a null value\n value = value || 0;\n\n abs = Math.abs(value);\n\n // see if we should use parentheses for negative number or if we should prefix with a sign\n // if both are present we default to parentheses\n if (numeral._.includes(format, '(')) {\n negP = true;\n format = format.replace(/[\\(|\\)]/g, '');\n } else if (numeral._.includes(format, '+') || numeral._.includes(format, '-')) {\n signed = numeral._.includes(format, '+') ? format.indexOf('+') : value < 0 ? format.indexOf('-') : -1;\n format = format.replace(/[\\+|\\-]/g, '');\n }\n\n // see if abbreviation is wanted\n if (numeral._.includes(format, 'a')) {\n abbrForce = format.match(/a(k|m|b|t)?/);\n\n abbrForce = abbrForce ? abbrForce[1] : false;\n\n // check for space before abbreviation\n if (numeral._.includes(format, ' a')) {\n abbr = ' ';\n }\n\n format = format.replace(new RegExp(abbr + 'a[kmbt]?'), '');\n\n if (abs >= trillion && !abbrForce || abbrForce === 't') {\n // trillion\n abbr += locale.abbreviations.trillion;\n value = value / trillion;\n } else if (abs < trillion && abs >= billion && !abbrForce || abbrForce === 'b') {\n // billion\n abbr += locale.abbreviations.billion;\n value = value / billion;\n } else if (abs < billion && abs >= million && !abbrForce || abbrForce === 'm') {\n // million\n abbr += locale.abbreviations.million;\n value = value / million;\n } else if (abs < million && abs >= thousand && !abbrForce || abbrForce === 'k') {\n // thousand\n abbr += locale.abbreviations.thousand;\n value = value / thousand;\n }\n }\n\n // check for optional decimals\n if (numeral._.includes(format, '[.]')) {\n optDec = true;\n format = format.replace('[.]', '.');\n }\n\n // break number and format\n int = value.toString().split('.')[0];\n precision = format.split('.')[1];\n thousands = format.indexOf(',');\n leadingCount = (format.split('.')[0].split(',')[0].match(/0/g) || []).length;\n\n if (precision) {\n if (numeral._.includes(precision, '[')) {\n precision = precision.replace(']', '');\n precision = precision.split('[');\n decimal = numeral._.toFixed(value, (precision[0].length + precision[1].length), roundingFunction, precision[1].length);\n } else {\n decimal = numeral._.toFixed(value, precision.length, roundingFunction);\n }\n\n int = decimal.split('.')[0];\n\n if (numeral._.includes(decimal, '.')) {\n decimal = locale.delimiters.decimal + decimal.split('.')[1];\n } else {\n decimal = '';\n }\n\n if (optDec && Number(decimal.slice(1)) === 0) {\n decimal = '';\n }\n } else {\n int = numeral._.toFixed(value, 0, roundingFunction);\n }\n\n // check abbreviation again after rounding\n if (abbr && !abbrForce && Number(int) >= 1000 && abbr !== locale.abbreviations.trillion) {\n int = String(Number(int) / 1000);\n\n switch (abbr) {\n case locale.abbreviations.thousand:\n abbr = locale.abbreviations.million;\n break;\n case locale.abbreviations.million:\n abbr = locale.abbreviations.billion;\n break;\n case locale.abbreviations.billion:\n abbr = locale.abbreviations.trillion;\n break;\n }\n }\n\n\n // format number\n if (numeral._.includes(int, '-')) {\n int = int.slice(1);\n neg = true;\n }\n\n if (int.length < leadingCount) {\n for (var i = leadingCount - int.length; i > 0; i--) {\n int = '0' + int;\n }\n }\n\n if (thousands > -1) {\n int = int.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1' + locale.delimiters.thousands);\n }\n\n if (format.indexOf('.') === 0) {\n int = '';\n }\n\n output = int + decimal + (abbr ? abbr : '');\n\n if (negP) {\n output = (negP && neg ? '(' : '') + output + (negP && neg ? ')' : '');\n } else {\n if (signed >= 0) {\n output = signed === 0 ? (neg ? '-' : '+') + output : output + (neg ? '-' : '+');\n } else if (neg) {\n output = '-' + output;\n }\n }\n\n return output;\n },\n // unformats numbers separators, decimals places, signs, abbreviations\n stringToNumber: function(string) {\n var locale = locales[options.currentLocale],\n stringOriginal = string,\n abbreviations = {\n thousand: 3,\n million: 6,\n billion: 9,\n trillion: 12\n },\n abbreviation,\n value,\n i,\n regexp;\n\n if (options.zeroFormat && string === options.zeroFormat) {\n value = 0;\n } else if (options.nullFormat && string === options.nullFormat || !string.replace(/[^0-9]+/g, '').length) {\n value = null;\n } else {\n value = 1;\n\n if (locale.delimiters.decimal !== '.') {\n string = string.replace(/\\./g, '').replace(locale.delimiters.decimal, '.');\n }\n\n for (abbreviation in abbreviations) {\n regexp = new RegExp('[^a-zA-Z]' + locale.abbreviations[abbreviation] + '(?:\\\\)|(\\\\' + locale.currency.symbol + ')?(?:\\\\))?)?$');\n\n if (stringOriginal.match(regexp)) {\n value *= Math.pow(10, abbreviations[abbreviation]);\n break;\n }\n }\n\n // check for negative number\n value *= (string.split('-').length + Math.min(string.split('(').length - 1, string.split(')').length - 1)) % 2 ? 1 : -1;\n\n // remove non numbers\n string = string.replace(/[^0-9\\.]+/g, '');\n\n value *= Number(string);\n }\n\n return value;\n },\n isNaN: function(value) {\n return typeof value === 'number' && isNaN(value);\n },\n includes: function(string, search) {\n return string.indexOf(search) !== -1;\n },\n insert: function(string, subString, start) {\n return string.slice(0, start) + subString + string.slice(start);\n },\n reduce: function(array, callback /*, initialValue*/) {\n if (this === null) {\n throw new TypeError('Array.prototype.reduce called on null or undefined');\n }\n\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n var t = Object(array),\n len = t.length >>> 0,\n k = 0,\n value;\n\n if (arguments.length === 3) {\n value = arguments[2];\n } else {\n while (k < len && !(k in t)) {\n k++;\n }\n\n if (k >= len) {\n throw new TypeError('Reduce of empty array with no initial value');\n }\n\n value = t[k++];\n }\n for (; k < len; k++) {\n if (k in t) {\n value = callback(value, t[k], k, t);\n }\n }\n return value;\n },\n /**\n * Computes the multiplier necessary to make x >= 1,\n * effectively eliminating miscalculations caused by\n * finite precision.\n */\n multiplier: function (x) {\n var parts = x.toString().split('.');\n\n return parts.length < 2 ? 1 : Math.pow(10, parts[1].length);\n },\n /**\n * Given a variable number of arguments, returns the maximum\n * multiplier that must be used to normalize an operation involving\n * all of them.\n */\n correctionFactor: function () {\n var args = Array.prototype.slice.call(arguments);\n\n return args.reduce(function(accum, next) {\n var mn = _.multiplier(next);\n return accum > mn ? accum : mn;\n }, 1);\n },\n /**\n * Implementation of toFixed() that treats floats more like decimals\n *\n * Fixes binary rounding issues (eg. (0.615).toFixed(2) === '0.61') that present\n * problems for accounting- and finance-related software.\n */\n toFixed: function(value, maxDecimals, roundingFunction, optionals) {\n var splitValue = value.toString().split('.'),\n minDecimals = maxDecimals - (optionals || 0),\n boundedPrecision,\n optionalsRegExp,\n power,\n output;\n\n // Use the smallest precision value possible to avoid errors from floating point representation\n if (splitValue.length === 2) {\n boundedPrecision = Math.min(Math.max(splitValue[1].length, minDecimals), maxDecimals);\n } else {\n boundedPrecision = minDecimals;\n }\n\n power = Math.pow(10, boundedPrecision);\n\n // Multiply up by precision, round accurately, then divide and use native toFixed():\n output = (roundingFunction(value + 'e+' + boundedPrecision) / power).toFixed(boundedPrecision);\n\n if (optionals > maxDecimals - boundedPrecision) {\n optionalsRegExp = new RegExp('\\\\.?0{1,' + (optionals - (maxDecimals - boundedPrecision)) + '}$');\n output = output.replace(optionalsRegExp, '');\n }\n\n return output;\n }\n };\n\n // avaliable options\n numeral.options = options;\n\n // avaliable formats\n numeral.formats = formats;\n\n // avaliable formats\n numeral.locales = locales;\n\n // This function sets the current locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n numeral.locale = function(key) {\n if (key) {\n options.currentLocale = key.toLowerCase();\n }\n\n return options.currentLocale;\n };\n\n // This function provides access to the loaded locale data. If\n // no arguments are passed in, it will simply return the current\n // global locale object.\n numeral.localeData = function(key) {\n if (!key) {\n return locales[options.currentLocale];\n }\n\n key = key.toLowerCase();\n\n if (!locales[key]) {\n throw new Error('Unknown locale : ' + key);\n }\n\n return locales[key];\n };\n\n numeral.reset = function() {\n for (var property in defaults) {\n options[property] = defaults[property];\n }\n };\n\n numeral.zeroFormat = function(format) {\n options.zeroFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.nullFormat = function (format) {\n options.nullFormat = typeof(format) === 'string' ? format : null;\n };\n\n numeral.defaultFormat = function(format) {\n options.defaultFormat = typeof(format) === 'string' ? format : '0.0';\n };\n\n numeral.register = function(type, name, format) {\n name = name.toLowerCase();\n\n if (this[type + 's'][name]) {\n throw new TypeError(name + ' ' + type + ' already registered.');\n }\n\n this[type + 's'][name] = format;\n\n return format;\n };\n\n\n numeral.validate = function(val, culture) {\n var _decimalSep,\n _thousandSep,\n _currSymbol,\n _valArray,\n _abbrObj,\n _thousandRegEx,\n localeData,\n temp;\n\n //coerce val to string\n if (typeof val !== 'string') {\n val += '';\n\n if (console.warn) {\n console.warn('Numeral.js: Value is not string. It has been co-erced to: ', val);\n }\n }\n\n //trim whitespaces from either sides\n val = val.trim();\n\n //if val is just digits return true\n if (!!val.match(/^\\d+$/)) {\n return true;\n }\n\n //if val is empty return false\n if (val === '') {\n return false;\n }\n\n //get the decimal and thousands separator from numeral.localeData\n try {\n //check if the culture is understood by numeral. if not, default it to current locale\n localeData = numeral.localeData(culture);\n } catch (e) {\n localeData = numeral.localeData(numeral.locale());\n }\n\n //setup the delimiters and currency symbol based on culture/locale\n _currSymbol = localeData.currency.symbol;\n _abbrObj = localeData.abbreviations;\n _decimalSep = localeData.delimiters.decimal;\n if (localeData.delimiters.thousands === '.') {\n _thousandSep = '\\\\.';\n } else {\n _thousandSep = localeData.delimiters.thousands;\n }\n\n // validating currency symbol\n temp = val.match(/^[^\\d]+/);\n if (temp !== null) {\n val = val.substr(1);\n if (temp[0] !== _currSymbol) {\n return false;\n }\n }\n\n //validating abbreviation symbol\n temp = val.match(/[^\\d]+$/);\n if (temp !== null) {\n val = val.slice(0, -1);\n if (temp[0] !== _abbrObj.thousand && temp[0] !== _abbrObj.million && temp[0] !== _abbrObj.billion && temp[0] !== _abbrObj.trillion) {\n return false;\n }\n }\n\n _thousandRegEx = new RegExp(_thousandSep + '{2}');\n\n if (!val.match(/[^\\d.,]/g)) {\n _valArray = val.split(_decimalSep);\n if (_valArray.length > 2) {\n return false;\n } else {\n if (_valArray.length < 2) {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx));\n } else {\n if (_valArray[0].length === 1) {\n return ( !! _valArray[0].match(/^\\d+$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n } else {\n return ( !! _valArray[0].match(/^\\d+.*\\d$/) && !_valArray[0].match(_thousandRegEx) && !! _valArray[1].match(/^\\d+$/));\n }\n }\n }\n }\n\n return false;\n };\n\n\n /************************************\n Numeral Prototype\n ************************************/\n\n numeral.fn = Numeral.prototype = {\n clone: function() {\n return numeral(this);\n },\n format: function(inputString, roundingFunction) {\n var value = this._value,\n format = inputString || options.defaultFormat,\n kind,\n output,\n formatFunction;\n\n // make sure we have a roundingFunction\n roundingFunction = roundingFunction || Math.round;\n\n // format based on value\n if (value === 0 && options.zeroFormat !== null) {\n output = options.zeroFormat;\n } else if (value === null && options.nullFormat !== null) {\n output = options.nullFormat;\n } else {\n for (kind in formats) {\n if (format.match(formats[kind].regexps.format)) {\n formatFunction = formats[kind].format;\n\n break;\n }\n }\n\n formatFunction = formatFunction || numeral._.numberToFormat;\n\n output = formatFunction(value, format, roundingFunction);\n }\n\n return output;\n },\n value: function() {\n return this._value;\n },\n input: function() {\n return this._input;\n },\n set: function(value) {\n this._value = Number(value);\n\n return this;\n },\n add: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum + Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([this._value, value], cback, 0) / corrFactor;\n\n return this;\n },\n subtract: function(value) {\n var corrFactor = _.correctionFactor.call(null, this._value, value);\n\n function cback(accum, curr, currI, O) {\n return accum - Math.round(corrFactor * curr);\n }\n\n this._value = _.reduce([value], cback, Math.round(this._value * corrFactor)) / corrFactor;\n\n return this;\n },\n multiply: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) * Math.round(curr * corrFactor) / Math.round(corrFactor * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback, 1);\n\n return this;\n },\n divide: function(value) {\n function cback(accum, curr, currI, O) {\n var corrFactor = _.correctionFactor(accum, curr);\n return Math.round(accum * corrFactor) / Math.round(curr * corrFactor);\n }\n\n this._value = _.reduce([this._value, value], cback);\n\n return this;\n },\n difference: function(value) {\n return Math.abs(numeral(this._value).subtract(value).value());\n }\n };\n\n /************************************\n Default Locale && Format\n ************************************/\n\n numeral.register('locale', 'en', {\n delimiters: {\n thousands: ',',\n decimal: '.'\n },\n abbreviations: {\n thousand: 'k',\n million: 'm',\n billion: 'b',\n trillion: 't'\n },\n ordinal: function(number) {\n var b = number % 10;\n return (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n },\n currency: {\n symbol: '$'\n }\n });\n\n \n\n(function() {\n numeral.register('format', 'bps', {\n regexps: {\n format: /(BPS)/,\n unformat: /(BPS)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' BPS') ? ' ' : '',\n output;\n\n value = value * 10000;\n\n // check for space before BPS\n format = format.replace(/\\s?BPS/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + 'BPS');\n\n output = output.join('');\n } else {\n output = output + space + 'BPS';\n }\n\n return output;\n },\n unformat: function(string) {\n return +(numeral._.stringToNumber(string) * 0.0001).toFixed(15);\n }\n });\n})();\n\n\n(function() {\n var decimal = {\n base: 1000,\n suffixes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n },\n binary = {\n base: 1024,\n suffixes: ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n };\n\n var allSuffixes = decimal.suffixes.concat(binary.suffixes.filter(function (item) {\n return decimal.suffixes.indexOf(item) < 0;\n }));\n var unformatRegex = allSuffixes.join('|');\n // Allow support for BPS (http://www.investopedia.com/terms/b/basispoint.asp)\n unformatRegex = '(' + unformatRegex.replace('B', 'B(?!PS)') + ')';\n\n numeral.register('format', 'bytes', {\n regexps: {\n format: /([0\\s]i?b)/,\n unformat: new RegExp(unformatRegex)\n },\n format: function(value, format, roundingFunction) {\n var output,\n bytes = numeral._.includes(format, 'ib') ? binary : decimal,\n suffix = numeral._.includes(format, ' b') || numeral._.includes(format, ' ib') ? ' ' : '',\n power,\n min,\n max;\n\n // check for space before\n format = format.replace(/\\s?i?b/, '');\n\n for (power = 0; power <= bytes.suffixes.length; power++) {\n min = Math.pow(bytes.base, power);\n max = Math.pow(bytes.base, power + 1);\n\n if (value === null || value === 0 || value >= min && value < max) {\n suffix += bytes.suffixes[power];\n\n if (min > 0) {\n value = value / min;\n }\n\n break;\n }\n }\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + suffix;\n },\n unformat: function(string) {\n var value = numeral._.stringToNumber(string),\n power,\n bytesMultiplier;\n\n if (value) {\n for (power = decimal.suffixes.length - 1; power >= 0; power--) {\n if (numeral._.includes(string, decimal.suffixes[power])) {\n bytesMultiplier = Math.pow(decimal.base, power);\n\n break;\n }\n\n if (numeral._.includes(string, binary.suffixes[power])) {\n bytesMultiplier = Math.pow(binary.base, power);\n\n break;\n }\n }\n\n value *= (bytesMultiplier || 1);\n }\n\n return value;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'currency', {\n regexps: {\n format: /(\\$)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n symbols = {\n before: format.match(/^([\\+|\\-|\\(|\\s|\\$]*)/)[0],\n after: format.match(/([\\+|\\-|\\)|\\s|\\$]*)$/)[0]\n },\n output,\n symbol,\n i;\n\n // strip format of spaces and $\n format = format.replace(/\\s?\\$\\s?/, '');\n\n // format the number\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n // update the before and after based on value\n if (value >= 0) {\n symbols.before = symbols.before.replace(/[\\-\\(]/, '');\n symbols.after = symbols.after.replace(/[\\-\\)]/, '');\n } else if (value < 0 && (!numeral._.includes(symbols.before, '-') && !numeral._.includes(symbols.before, '('))) {\n symbols.before = '-' + symbols.before;\n }\n\n // loop through each before symbol\n for (i = 0; i < symbols.before.length; i++) {\n symbol = symbols.before[i];\n\n switch (symbol) {\n case '$':\n output = numeral._.insert(output, locale.currency.symbol, i);\n break;\n case ' ':\n output = numeral._.insert(output, ' ', i + locale.currency.symbol.length - 1);\n break;\n }\n }\n\n // loop through each after symbol\n for (i = symbols.after.length - 1; i >= 0; i--) {\n symbol = symbols.after[i];\n\n switch (symbol) {\n case '$':\n output = i === symbols.after.length - 1 ? output + locale.currency.symbol : numeral._.insert(output, locale.currency.symbol, -(symbols.after.length - (1 + i)));\n break;\n case ' ':\n output = i === symbols.after.length - 1 ? output + ' ' : numeral._.insert(output, ' ', -(symbols.after.length - (1 + i) + locale.currency.symbol.length - 1));\n break;\n }\n }\n\n\n return output;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'exponential', {\n regexps: {\n format: /(e\\+|e-)/,\n unformat: /(e\\+|e-)/\n },\n format: function(value, format, roundingFunction) {\n var output,\n exponential = typeof value === 'number' && !numeral._.isNaN(value) ? value.toExponential() : '0e+0',\n parts = exponential.split('e');\n\n format = format.replace(/e[\\+|\\-]{1}0/, '');\n\n output = numeral._.numberToFormat(Number(parts[0]), format, roundingFunction);\n\n return output + 'e' + parts[1];\n },\n unformat: function(string) {\n var parts = numeral._.includes(string, 'e+') ? string.split('e+') : string.split('e-'),\n value = Number(parts[0]),\n power = Number(parts[1]);\n\n power = numeral._.includes(string, 'e-') ? power *= -1 : power;\n\n function cback(accum, curr, currI, O) {\n var corrFactor = numeral._.correctionFactor(accum, curr),\n num = (accum * corrFactor) * (curr * corrFactor) / (corrFactor * corrFactor);\n return num;\n }\n\n return numeral._.reduce([value, Math.pow(10, power)], cback, 1);\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'ordinal', {\n regexps: {\n format: /(o)/\n },\n format: function(value, format, roundingFunction) {\n var locale = numeral.locales[numeral.options.currentLocale],\n output,\n ordinal = numeral._.includes(format, ' o') ? ' ' : '';\n\n // check for space before\n format = format.replace(/\\s?o/, '');\n\n ordinal += locale.ordinal(value);\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n return output + ordinal;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'percentage', {\n regexps: {\n format: /(%)/,\n unformat: /(%)/\n },\n format: function(value, format, roundingFunction) {\n var space = numeral._.includes(format, ' %') ? ' ' : '',\n output;\n\n if (numeral.options.scalePercentBy100) {\n value = value * 100;\n }\n\n // check for space before %\n format = format.replace(/\\s?\\%/, '');\n\n output = numeral._.numberToFormat(value, format, roundingFunction);\n\n if (numeral._.includes(output, ')')) {\n output = output.split('');\n\n output.splice(-1, 0, space + '%');\n\n output = output.join('');\n } else {\n output = output + space + '%';\n }\n\n return output;\n },\n unformat: function(string) {\n var number = numeral._.stringToNumber(string);\n if (numeral.options.scalePercentBy100) {\n return number * 0.01;\n }\n return number;\n }\n });\n})();\n\n\n(function() {\n numeral.register('format', 'time', {\n regexps: {\n format: /(:)/,\n unformat: /(:)/\n },\n format: function(value, format, roundingFunction) {\n var hours = Math.floor(value / 60 / 60),\n minutes = Math.floor((value - (hours * 60 * 60)) / 60),\n seconds = Math.round(value - (hours * 60 * 60) - (minutes * 60));\n\n return hours + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds);\n },\n unformat: function(string) {\n var timeArray = string.split(':'),\n seconds = 0;\n\n // turn hours and minutes into seconds and add them all up\n if (timeArray.length === 3) {\n // hours\n seconds = seconds + (Number(timeArray[0]) * 60 * 60);\n // minutes\n seconds = seconds + (Number(timeArray[1]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[2]);\n } else if (timeArray.length === 2) {\n // minutes\n seconds = seconds + (Number(timeArray[0]) * 60);\n // seconds\n seconds = seconds + Number(timeArray[1]);\n }\n return Number(seconds);\n }\n });\n})();\n\nreturn numeral;\n}));\n"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-06db.12facc20.js b/priv/static/adminfe/static/js/chunk-06db.12facc20.js new file mode 100644 index 000000000..c8b2a5ce9 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-06db.12facc20.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-06db"],{LFlD:function(t,e,n){"use strict";var o=n("pxV3");n.n(o).a},aSQl:function(t,e,n){"use strict";n.d(e,"a",function(){return p});var o=n("o0o1"),a=n.n(o),r=n("yXPU"),s=n.n(r),i=n("oAJy"),l=n.n(i),c=n("LvDl"),u=n.n(c),p=function(){var t=s()(a.a.mark(function t(e){var n,o;return a.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.a.getItem("vuex-lz");case 2:if(n=t.sent,void 0!==(o=u.a.get(n,"oauth.userToken"))){t.next=6;break}throw new Error("PleromaFE token not found");case 6:return t.next=8,e.dispatch("LoginByPleromaFE",{token:o});case 8:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}()},c11S:function(t,e,n){"use strict";var o=n("gTgX");n.n(o).a},gTgX:function(t,e,n){},ntYl:function(t,e,n){"use strict";n.r(e);var o=n("J4zp"),a=n.n(o),r=n("o0o1"),s=n.n(r),i=n("yXPU"),l=n.n(i),c=n("wAo7"),u=n("oAJy"),p=n.n(u),d=n("LvDl"),m=n.n(d),g=n("mSNy"),h=n("aSQl"),v={name:"Login",components:{"svg-icon":c.a},data:function(){return{loginForm:{username:"",password:""},passwordType:"password",loading:!1,loadingPleromaFE:!1,showDialog:!1,redirect:void 0,pleromaFEToken:!1,pleromaFEStateKey:"vuex-lz",pleromaFEState:{}}},watch:{$route:{handler:function(t){this.redirect=t.query&&t.query.redirect},immediate:!0}},mounted:function(){var t=l()(s.a.mark(function t(){var e;return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,p.a.getItem(this.pleromaFEStateKey);case 2:if(e=t.sent,this.pleromaFEState=e,void 0!==m.a.get(e,"oauth.userToken")){t.next=6;break}return t.abrupt("return");case 6:this.pleromaFEToken=!0;case 7:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),methods:{showPwd:function(){"password"===this.passwordType?this.passwordType="":this.passwordType="password"},handleLogin:function(){var t=this;this.loading=!0;var e=this.getLoginData();this.$store.dispatch("LoginByUsername",e).then(function(){t.loading=!1,t.$router.push({path:t.redirect||"/users/index"})}).catch(function(){t.loading=!1})},handlePleromaFELogin:function(){var t=l()(s.a.mark(function t(){return s.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return this.loadingPleromaFE=!0,t.prev=1,t.next=4,Object(h.a)(this.$store);case 4:t.next=10;break;case 6:t.prev=6,t.t0=t.catch(1),this.loadingPleromaFE=!1,this.$message.error(g.a.t("login.pleromaFELoginFailed"));case 10:this.loadingPleromaFE=!1,this.$message.success(g.a.t("login.pleromaFELoginSucceed")),this.$router.push({path:this.redirect||"/users/index"});case 13:case"end":return t.stop()}},t,this,[[1,6]])}));return function(){return t.apply(this,arguments)}}(),getLoginData:function(){var t=this.loginForm.username.split("@"),e=a()(t,2),n=e[0],o=e[1];return{username:n.trim(),authHost:o?o.trim():window.location.host,password:this.loginForm.password}}}},f=(n("c11S"),n("LFlD"),n("KHd+")),w=Object(f.a)(v,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"login-container"},[n("el-form",{ref:"loginForm",staticClass:"login-form",attrs:{model:t.loginForm,"auto-complete":"on","label-position":"left"}},[n("div",{staticClass:"title-container"},[n("h3",{staticClass:"title"},[t._v("\n "+t._s(t.$t("login.title"))+"\n ")])]),t._v(" "),n("el-form-item",{attrs:{prop:"username"}},[n("span",{staticClass:"svg-container"},[n("svg-icon",{attrs:{"icon-class":"user"}})],1),t._v(" "),n("el-input",{attrs:{placeholder:t.$t("login.username"),name:"username",type:"text","auto-complete":"on"},model:{value:t.loginForm.username,callback:function(e){t.$set(t.loginForm,"username",e)},expression:"loginForm.username"}})],1),t._v(" "),n("div",{staticClass:"omit-host-note"},[t._v(t._s(t.$t("login.omitHostname")))]),t._v(" "),n("el-form-item",{attrs:{prop:"password"}},[n("span",{staticClass:"svg-container"},[n("svg-icon",{attrs:{"icon-class":"password"}})],1),t._v(" "),n("el-input",{attrs:{type:t.passwordType,placeholder:t.$t("login.password"),name:"password","auto-complete":"on"},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.handleLogin(e)}},model:{value:t.loginForm.password,callback:function(e){t.$set(t.loginForm,"password",e)},expression:"loginForm.password"}}),t._v(" "),n("span",{staticClass:"show-pwd",on:{click:t.showPwd}},[n("svg-icon",{attrs:{"icon-class":"password"===t.passwordType?"eye":"eye-open"}})],1)],1),t._v(" "),n("el-button",{staticClass:"login-button",attrs:{loading:t.loading,type:"primary"},nativeOn:{click:function(e){return e.preventDefault(),t.handleLogin(e)}}},[t._v("\n "+t._s(t.$t("login.logIn"))+"\n ")]),t._v(" "),t.pleromaFEToken?n("el-button",{staticClass:"login-button",attrs:{loading:t.loadingPleromaFE,type:"primary"},nativeOn:{click:function(e){return e.preventDefault(),t.handlePleromaFELogin(e)}}},[t._v("\n "+t._s(t.$t("login.logInViaPleromaFE"))+"\n ")]):t._e()],1)],1)},[],!1,null,"d027d802",null);w.options.__file="index.vue";e.default=w.exports},pxV3:function(t,e,n){}}]); +//# sourceMappingURL=chunk-06db.12facc20.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-06db.12facc20.js.map b/priv/static/adminfe/static/js/chunk-06db.12facc20.js.map new file mode 100644 index 000000000..b07a40083 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-06db.12facc20.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/login/index.vue?8011","webpack:///./src/services/pleromaAuth.js","webpack:///./src/views/login/index.vue?0399","webpack:///./src/views/login/index.vue?b70d","webpack:///./src/views/login/index.vue?95e4","webpack:///src/views/login/index.vue","webpack:///./src/views/login/index.vue"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_1_id_d027d802_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","authenticateWithPleromaFE","_ref","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","a","mark","_callee","store","pleromaFEState","token","wrap","_context","prev","next","localforage","getItem","sent","undefined","_","get","Error","dispatch","stop","_x","apply","this","arguments","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","views_loginvue_type_script_lang_js_","name","components","svg-icon","SvgIcon","data","loginForm","username","password","passwordType","loading","loadingPleromaFE","showDialog","redirect","pleromaFEToken","pleromaFEStateKey","watch","$route","handler","route","query","immediate","mounted","_mounted","asyncToGenerator_default","regenerator_default","localforage_default","lodash_default","abrupt","methods","showPwd","handleLogin","_this","loginData","getLoginData","$store","then","$router","push","path","catch","handlePleromaFELogin","_handlePleromaFELogin","_callee2","_context2","Object","pleromaAuth","t0","$message","error","lang","t","success","_this$loginForm$usern","split","_this$loginForm$usern2","slicedToArray_default","authHost","trim","window","location","host","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","ref","attrs","model","auto-complete","label-position","_v","_s","$t","prop","icon-class","placeholder","type","value","callback","$$v","$set","expression","nativeOn","keyup","$event","indexOf","_k","keyCode","key","on","click","preventDefault","_e","options","__file","__webpack_exports__"],"mappings":"sGAAA,IAAAA,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAA+e,6JCKleG,EAAyB,eAAAC,EAAAC,IAAAC,EAAAC,EAAAC,KAAG,SAAAC,EAAMC,GAAN,IAAAC,EAAAC,EAAA,OAAAN,EAAAC,EAAAM,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACVC,IAAYC,QAHjB,WAEe,UACjCP,EADiCG,EAAAK,UAIzBC,KAFRR,EAAQS,IAAEC,IAAIX,EAAgB,oBAFG,CAAAG,EAAAE,KAAA,cAK/B,IAAIO,MAAM,6BALqB,cAAAT,EAAAE,KAAA,EAQjCN,EAAMc,SAAS,oBAAsBZ,UARJ,wBAAAE,EAAAW,SAAAhB,MAAH,gBAAAiB,GAAA,OAAAtB,EAAAuB,MAAAC,KAAAC,YAAA,sCCLtC,IAAAC,EAAA7B,EAAA,QAAAA,EAAAC,EAAA4B,GAAud,mECAvd,iJCA0MC,GC0D1MC,KAAA,QACAC,YAAAC,WAAAC,EAAA,GACAC,KAAA,WACA,OACAC,WACAC,SAAA,GACAC,SAAA,IAEAC,aAAA,WACAC,SAAA,EACAC,kBAAA,EACAC,YAAA,EACAC,cAAAxB,EACAyB,gBAAA,EACAC,kBAAA,UACAnC,oBAGAoC,OACAC,QACAC,QAAA,SAAAC,GACAtB,KAAAgB,SAAAM,EAAAC,OAAAD,EAAAC,MAAAP,UAEAQ,WAAA,IAGAC,QA3BA,eAAAC,EAAAC,IAAAC,EAAAjD,EAAAC,KAAA,SAAAC,IAAA,IAAAE,EAAA,OAAA6C,EAAAjD,EAAAM,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EA4BAyC,EAAAlD,EAAAW,QAAAU,KAAAkB,mBA5BA,UA4BAnC,EA5BAG,EAAAK,KA6BAS,KAAAjB,sBAEAS,IAAAsC,EAAAnD,EAAAe,IAAAX,EAAA,mBA/BA,CAAAG,EAAAE,KAAA,eAAAF,EAAA6C,OAAA,iBAmCA/B,KAAAiB,gBAAA,EAnCA,wBAAA/B,EAAAW,SAAAhB,EAAAmB,SAAA,yBAAA0B,EAAA3B,MAAAC,KAAAC,YAAA,GAqCA+B,SACAC,QADA,WAEA,aAAAjC,KAAAY,aACAZ,KAAAY,aAAA,GAEAZ,KAAAY,aAAA,YAGAsB,YARA,WAQA,IAAAC,EAAAnC,KACAA,KAAAa,SAAA,EACA,IAAAuB,EAAApC,KAAAqC,eACArC,KAAAsC,OAAA1C,SAAA,kBAAAwC,GAAAG,KAAA,WACAJ,EAAAtB,SAAA,EACAsB,EAAAK,QAAAC,MAAAC,KAAAP,EAAAnB,UAAA,mBACA2B,MAAA,WACAR,EAAAtB,SAAA,KAGA+B,qBAlBA,eAAAC,EAAAlB,IAAAC,EAAAjD,EAAAC,KAAA,SAAAkE,IAAA,OAAAlB,EAAAjD,EAAAM,KAAA,SAAA8D,GAAA,cAAAA,EAAA5D,KAAA4D,EAAA3D,MAAA,cAmBAY,KAAAc,kBAAA,EAnBAiC,EAAA5D,KAAA,EAAA4D,EAAA3D,KAAA,EAqBA4D,OAAAC,EAAA,EAAAD,CAAAhD,KAAAsC,QArBA,OAAAS,EAAA3D,KAAA,gBAAA2D,EAAA5D,KAAA,EAAA4D,EAAAG,GAAAH,EAAA,SAuBA/C,KAAAc,kBAAA,EACAd,KAAAmD,SAAAC,MAAAC,EAAA,EAAAC,EAAA,+BAxBA,QA2BAtD,KAAAc,kBAAA,EAEAd,KAAAmD,SAAAI,QAAAF,EAAA,EAAAC,EAAA,gCACAtD,KAAAwC,QAAAC,MAAAC,KAAA1C,KAAAgB,UAAA,iBA9BA,yBAAA+B,EAAAlD,SAAAiD,EAAA9C,OAAA,mCAAA6C,EAAA9C,MAAAC,KAAAC,YAAA,GAgCAoC,aAhCA,WAgCA,IAAAmB,EACAxD,KAAAS,UAAAC,SAAA+C,MAAA,KADAC,EAAAC,IAAAH,EAAA,GACA9C,EADAgD,EAAA,GACAE,EADAF,EAAA,GAGA,OACAhD,WAAAmD,OACAD,aAAAC,OAAAC,OAAAC,SAAAC,KACArD,SAAAX,KAAAS,UAAAE,+CC3HAsD,EAAgBjB,OAAAkB,EAAA,EAAAlB,CACd7C,EHVF,WAA0B,IAAAgE,EAAAnE,KAAaoE,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,oBAA8BF,EAAA,WAAgBG,IAAA,YAAAD,YAAA,aAAAE,OAAgDC,MAAAR,EAAA1D,UAAAmE,gBAAA,KAAAC,iBAAA,UAAoEP,EAAA,OAAYE,YAAA,oBAA8BF,EAAA,MAAWE,YAAA,UAAoBL,EAAAW,GAAA,aAAAX,EAAAY,GAAAZ,EAAAa,GAAA,gCAAAb,EAAAW,GAAA,KAAAR,EAAA,gBAAmGI,OAAOO,KAAA,cAAmBX,EAAA,QAAaE,YAAA,kBAA4BF,EAAA,YAAiBI,OAAOQ,aAAA,WAAqB,GAAAf,EAAAW,GAAA,KAAAR,EAAA,YAAiCI,OAAOS,YAAAhB,EAAAa,GAAA,kBAAA5E,KAAA,WAAAgF,KAAA,OAAAR,gBAAA,MAA4FD,OAAQU,MAAAlB,EAAA1D,UAAA,SAAA6E,SAAA,SAAAC,GAAwDpB,EAAAqB,KAAArB,EAAA1D,UAAA,WAAA8E,IAAyCE,WAAA,yBAAkC,GAAAtB,EAAAW,GAAA,KAAAR,EAAA,OAA4BE,YAAA,mBAA6BL,EAAAW,GAAAX,EAAAY,GAAAZ,EAAAa,GAAA,0BAAAb,EAAAW,GAAA,KAAAR,EAAA,gBAAgFI,OAAOO,KAAA,cAAmBX,EAAA,QAAaE,YAAA,kBAA4BF,EAAA,YAAiBI,OAAOQ,aAAA,eAAyB,GAAAf,EAAAW,GAAA,KAAAR,EAAA,YAAiCI,OAAOU,KAAAjB,EAAAvD,aAAAuE,YAAAhB,EAAAa,GAAA,kBAAA5E,KAAA,WAAAwE,gBAAA,MAAsGc,UAAWC,MAAA,SAAAC,GAAyB,OAAAA,EAAAR,KAAAS,QAAA,QAAA1B,EAAA2B,GAAAF,EAAAG,QAAA,WAAAH,EAAAI,IAAA,SAAsF,KAAe7B,EAAAjC,YAAA0D,KAAgCjB,OAAQU,MAAAlB,EAAA1D,UAAA,SAAA6E,SAAA,SAAAC,GAAwDpB,EAAAqB,KAAArB,EAAA1D,UAAA,WAAA8E,IAAyCE,WAAA,wBAAkCtB,EAAAW,GAAA,KAAAR,EAAA,QAAyBE,YAAA,WAAAyB,IAA2BC,MAAA/B,EAAAlC,WAAqBqC,EAAA,YAAiBI,OAAOQ,aAAA,aAAAf,EAAAvD,aAAA,qBAAmE,OAAAuD,EAAAW,GAAA,KAAAR,EAAA,aAAsCE,YAAA,eAAAE,OAAkC7D,QAAAsD,EAAAtD,QAAAuE,KAAA,WAAuCM,UAAWQ,MAAA,SAAAN,GAAiD,OAAxBA,EAAAO,iBAAwBhC,EAAAjC,YAAA0D,OAAiCzB,EAAAW,GAAA,WAAAX,EAAAY,GAAAZ,EAAAa,GAAA,4BAAAb,EAAAW,GAAA,KAAAX,EAAA,eAAAG,EAAA,aAA+GE,YAAA,eAAAE,OAAkC7D,QAAAsD,EAAArD,iBAAAsE,KAAA,WAAgDM,UAAWQ,MAAA,SAAAN,GAAiD,OAAxBA,EAAAO,iBAAwBhC,EAAAvB,qBAAAgD,OAA0CzB,EAAAW,GAAA,WAAAX,EAAAY,GAAAZ,EAAAa,GAAA,wCAAAb,EAAAiC,MAAA,YGa7oE,EACA,KACA,WACA,MAIAnC,EAAAoC,QAAAC,OAAA,YACeC,EAAA,QAAAtC","file":"static/js/chunk-06db.12facc20.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=d027d802&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=d027d802&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import localforage from 'localforage'\nimport _ from 'lodash'\n\nconst pleromaFEStateKey = 'vuex-lz'\n\nexport const authenticateWithPleromaFE = async(store) => {\n const pleromaFEState = await localforage.getItem(pleromaFEStateKey)\n const token = _.get(pleromaFEState, 'oauth.userToken')\n\n if (token === undefined) {\n throw new Error('PleromaFE token not found')\n }\n\n await store.dispatch('LoginByPleromaFE', { token })\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login-container\"},[_c('el-form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"model\":_vm.loginForm,\"auto-complete\":\"on\",\"label-position\":\"left\"}},[_c('div',{staticClass:\"title-container\"},[_c('h3',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.title'))+\"\\n \")])]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"prop\":\"username\"}},[_c('span',{staticClass:\"svg-container\"},[_c('svg-icon',{attrs:{\"icon-class\":\"user\"}})],1),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":_vm.$t('login.username'),\"name\":\"username\",\"type\":\"text\",\"auto-complete\":\"on\"},model:{value:(_vm.loginForm.username),callback:function ($$v) {_vm.$set(_vm.loginForm, \"username\", $$v)},expression:\"loginForm.username\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"omit-host-note\"},[_vm._v(_vm._s(_vm.$t('login.omitHostname')))]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"prop\":\"password\"}},[_c('span',{staticClass:\"svg-container\"},[_c('svg-icon',{attrs:{\"icon-class\":\"password\"}})],1),_vm._v(\" \"),_c('el-input',{attrs:{\"type\":_vm.passwordType,\"placeholder\":_vm.$t('login.password'),\"name\":\"password\",\"auto-complete\":\"on\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.handleLogin($event)}},model:{value:(_vm.loginForm.password),callback:function ($$v) {_vm.$set(_vm.loginForm, \"password\", $$v)},expression:\"loginForm.password\"}}),_vm._v(\" \"),_c('span',{staticClass:\"show-pwd\",on:{\"click\":_vm.showPwd}},[_c('svg-icon',{attrs:{\"icon-class\":_vm.passwordType === 'password' ? 'eye' : 'eye-open'}})],1)],1),_vm._v(\" \"),_c('el-button',{staticClass:\"login-button\",attrs:{\"loading\":_vm.loading,\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handleLogin($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.logIn'))+\"\\n \")]),_vm._v(\" \"),(_vm.pleromaFEToken)?_c('el-button',{staticClass:\"login-button\",attrs:{\"loading\":_vm.loadingPleromaFE,\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handlePleromaFELogin($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.logInViaPleromaFE'))+\"\\n \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=d027d802&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=d027d802&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d027d802\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-15fa.b0633695.js b/priv/static/adminfe/static/js/chunk-15fa.b0633695.js new file mode 100644 index 000000000..9cb053e4c --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-15fa.b0633695.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-15fa"],{"/eX4":function(s,t,i){"use strict";i.r(t);var n=[function(){var s=this.$createElement,t=this._self._c||s;return t("div",{staticClass:"pic-404"},[t("img",{staticClass:"pic-404__parent",attrs:{src:i("o2sD"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child left",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child mid",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child right",attrs:{src:i("Jvyq"),alt:"404"}})])}],e={name:"Page404",computed:{message:function(){return"There is nothing here"}}},r=(i("J67/"),i("KHd+")),l=Object(r.a)(e,function(){var s=this,t=s.$createElement,i=s._self._c||t;return i("div",{staticClass:"wscn-http404-container"},[i("div",{staticClass:"wscn-http404"},[s._m(0),s._v(" "),i("div",{staticClass:"bullshit"},[i("div",{staticClass:"bullshit__oops"},[s._v("OOPS!")]),s._v(" "),i("div",{staticClass:"bullshit__headline"},[s._v(s._s(s.message))]),s._v(" "),i("div",{staticClass:"bullshit__info"},[s._v("Please make sure you URL is correct")]),s._v(" "),i("router-link",{staticClass:"bullshit__return-home",attrs:{to:"/"}},[s._v("Go to the home page")])],1)])])},n,!1,null,"1d6b2d2a",null);l.options.__file="404.vue";t.default=l.exports},"J67/":function(s,t,i){"use strict";var n=i("QCkX");i.n(n).a},Jvyq:function(s,t){s.exports="data:image/png;base64,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"},QCkX:function(s,t,i){},o2sD:function(s,t,i){s.exports=i.p+"static/img/404.a57b6f3.png"}}]); +//# sourceMappingURL=chunk-15fa.b0633695.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-15fa.b0633695.js.map b/priv/static/adminfe/static/js/chunk-15fa.b0633695.js.map new file mode 100644 index 000000000..5caa78e07 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-15fa.b0633695.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/errorPage/404.vue?e9e9","webpack:///./src/views/errorPage/404.vue?e36b","webpack:///src/views/errorPage/404.vue","webpack:///./src/views/errorPage/404.vue","webpack:///./src/views/errorPage/404.vue?ce30","webpack:///./src/assets/404_images/404_cloud.png","webpack:///./src/assets/404_images/404.png"],"names":["staticRenderFns","_h","this","$createElement","_c","_self","staticClass","attrs","src","__webpack_require__","alt","_v","errorPage_404vue_type_script_lang_js_","name","computed","message","component","Object","componentNormalizer","_vm","_m","_s","to","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_404_vue_vue_type_style_index_0_id_1d6b2d2a_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","n","module","exports","p"],"mappings":"+GAAA,IACAA,GAAA,WAAoC,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,YAAsBF,EAAA,OAAYE,YAAA,kBAAAC,OAAqCC,IAAMC,EAAQ,QAA6BC,IAAA,SAAlMR,KAAiNS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,sBAAAC,OAAyCC,IAAMC,EAAQ,QAAmCC,IAAA,SAAnUR,KAAkVS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,qBAAAC,OAAwCC,IAAMC,EAAQ,QAAmCC,IAAA,SAAncR,KAAkdS,GAAA,KAAAP,EAAA,OAAwBE,YAAA,uBAAAC,OAA0CC,IAAMC,EAAQ,QAAmCC,IAAA,aCDjaE,GCsBxMC,KAAA,UACAC,UACAC,QADA,WAEA,yDCjBAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdL,EHTF,WAA0B,IAAAO,EAAAjB,KAAaD,EAAAkB,EAAAhB,eAA0BC,EAAAe,EAAAd,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,2BAAqCF,EAAA,OAAYE,YAAA,iBAA2Ba,EAAAC,GAAA,GAAAD,EAAAR,GAAA,KAAAP,EAAA,OAAkCE,YAAA,aAAuBF,EAAA,OAAYE,YAAA,mBAA6Ba,EAAAR,GAAA,WAAAQ,EAAAR,GAAA,KAAAP,EAAA,OAA0CE,YAAA,uBAAiCa,EAAAR,GAAAQ,EAAAE,GAAAF,EAAAJ,YAAAI,EAAAR,GAAA,KAAAP,EAAA,OAAsDE,YAAA,mBAA6Ba,EAAAR,GAAA,yCAAAQ,EAAAR,GAAA,KAAAP,EAAA,eAAgFE,YAAA,wBAAAC,OAA2Ce,GAAA,OAAUH,EAAAR,GAAA,kCGWzjBX,GACF,EACA,KACA,WACA,MAIAgB,EAAAO,QAAAC,OAAA,UACeC,EAAA,QAAAT,+CCpBf,IAAAU,EAAAjB,EAAA,QAAAA,EAAAkB,EAAAD,GAA6e,sBCA7eE,EAAAC,QAAA,0xMCAAD,EAAAC,QAAiBpB,EAAAqB,EAAuB","file":"static/js/chunk-15fa.b0633695.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"wscn-http404-container\"},[_c('div',{staticClass:\"wscn-http404\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"bullshit\"},[_c('div',{staticClass:\"bullshit__oops\"},[_vm._v(\"OOPS!\")]),_vm._v(\" \"),_c('div',{staticClass:\"bullshit__headline\"},[_vm._v(_vm._s(_vm.message))]),_vm._v(\" \"),_c('div',{staticClass:\"bullshit__info\"},[_vm._v(\"Please make sure you URL is correct\")]),_vm._v(\" \"),_c('router-link',{staticClass:\"bullshit__return-home\",attrs:{\"to\":\"/\"}},[_vm._v(\"Go to the home page\")])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pic-404\"},[_c('img',{staticClass:\"pic-404__parent\",attrs:{\"src\":require(\"@/assets/404_images/404.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child left\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child mid\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}}),_vm._v(\" \"),_c('img',{staticClass:\"pic-404__child right\",attrs:{\"src\":require(\"@/assets/404_images/404_cloud.png\"),\"alt\":\"404\"}})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./404.vue?vue&type=template&id=1d6b2d2a&scoped=true&\"\nimport script from \"./404.vue?vue&type=script&lang=js&\"\nexport * from \"./404.vue?vue&type=script&lang=js&\"\nimport style0 from \"./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d6b2d2a\",\n null\n \n)\n\ncomponent.options.__file = \"404.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./404.vue?vue&type=style&index=0&id=1d6b2d2a&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/img/404.a57b6f3.png\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js b/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js new file mode 100644 index 000000000..497bbcb88 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-16d0"],{aSQl:function(e,n,t){"use strict";t.d(n,"a",function(){return p});var r=t("o0o1"),a=t.n(r),o=t("yXPU"),s=t.n(o),u=t("oAJy"),c=t.n(u),i=t("LvDl"),l=t.n(i),p=function(){var e=s()(a.a.mark(function e(n){var t,r;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.a.getItem("vuex-lz");case 2:if(t=e.sent,void 0!==(r=l.a.get(t,"oauth.userToken"))){e.next=6;break}throw new Error("PleromaFE token not found");case 6:return e.next=8,n.dispatch("LoginByPleromaFE",{token:r});case 8:case"end":return e.stop()}},e)}));return function(n){return e.apply(this,arguments)}}()},iRgq:function(e,n,t){"use strict";t.r(n);var r=t("o0o1"),a=t.n(r),o=t("yXPU"),s=t.n(o),u=t("XJYT"),c=t("aSQl"),i=t("mSNy"),l={name:"LoginPleroma",mounted:function(){var e=s()(a.a.mark(function e(){var n;return a.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=u.Loading.service({fullscreen:!0}),e.prev=1,e.next=4,Object(c.a)(this.$store);case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),this.$message.error(i.a.t("login.pleromaFELoginFailed"));case 9:n.close(),this.$router.push({path:"/users/index"}),this.$message.success(i.a.t("login.pleromaFELoginSucceed"));case 12:case"end":return e.stop()}},e,this,[[1,6]])}));return function(){return e.apply(this,arguments)}}()},p=t("KHd+"),f=Object(p.a)(l,function(){var e=this.$createElement;return(this._self._c||e)("div")},[],!1,null,null,null);f.options.__file="pleroma.vue";n.default=f.exports}}]); +//# sourceMappingURL=chunk-16d0.6ce78978.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js.map b/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js.map new file mode 100644 index 000000000..17c3378e3 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-16d0.6ce78978.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/services/pleromaAuth.js","webpack:///./src/views/login/pleroma.vue?ed01","webpack:///./src/views/login/pleroma.vue?5ee7","webpack:///src/views/login/pleroma.vue","webpack:///./src/views/login/pleroma.vue"],"names":["authenticateWithPleromaFE","_ref","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","a","mark","_callee","store","pleromaFEState","token","wrap","_context","prev","next","localforage","getItem","sent","undefined","_","get","Error","dispatch","stop","_x","apply","this","arguments","login_pleromavue_type_script_lang_js_","name","mounted","_mounted","asyncToGenerator_default","regenerator_default","loadingInstance","element_ui_common","service","fullscreen","Object","pleromaAuth","$store","t0","$message","error","lang","t","close","$router","push","path","success","component","componentNormalizer","_h","$createElement","_self","_c","options","__file","__webpack_exports__"],"mappings":"8NAKaA,EAAyB,eAAAC,EAAAC,IAAAC,EAAAC,EAAAC,KAAG,SAAAC,EAAMC,GAAN,IAAAC,EAAAC,EAAA,OAAAN,EAAAC,EAAAM,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACVC,IAAYC,QAHjB,WAEe,UACjCP,EADiCG,EAAAK,UAIzBC,KAFRR,EAAQS,IAAEC,IAAIX,EAAgB,oBAFG,CAAAG,EAAAE,KAAA,cAK/B,IAAIO,MAAM,6BALqB,cAAAT,EAAAE,KAAA,EAQjCN,EAAMc,SAAS,oBAAsBZ,UARJ,wBAAAE,EAAAW,SAAAhB,MAAH,gBAAAiB,GAAA,OAAAtB,EAAAuB,MAAAC,KAAAC,YAAA,6CCLtC,kFCA4MC,GCU5MC,KAAA,eACAC,QAFA,eAAAC,EAAAC,IAAAC,EAAA5B,EAAAC,KAAA,SAAAC,IAAA,IAAA2B,EAAA,OAAAD,EAAA5B,EAAAM,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAGAoB,EAAAC,EAAA,QAAAC,SAAAC,YAAA,IAHAzB,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAMAwB,OAAAC,EAAA,EAAAD,CAAAZ,KAAAc,QANA,OAAA5B,EAAAE,KAAA,eAAAF,EAAAC,KAAA,EAAAD,EAAA6B,GAAA7B,EAAA,SAQAc,KAAAgB,SAAAC,MAAAC,EAAA,EAAAC,EAAA,+BARA,OAWAX,EAAAY,QACApB,KAAAqB,QAAAC,MAAAC,KAAA,iBACAvB,KAAAgB,SAAAQ,QAAAN,EAAA,EAAAC,EAAA,gCAbA,yBAAAjC,EAAAW,SAAAhB,EAAAmB,OAAA,mCAAAK,EAAAN,MAAAC,KAAAC,YAAA,gBCFAwB,EAAgBb,OAAAc,EAAA,EAAAd,CACdV,EHRF,WAA0B,IAAayB,EAAb3B,KAAa4B,eAAkD,OAA/D5B,KAAuC6B,MAAAC,IAAAH,GAAwB,YGWzF,EACA,KACA,KACA,MAIAF,EAAAM,QAAAC,OAAA,cACeC,EAAA,QAAAR","file":"static/js/chunk-16d0.6ce78978.js","sourcesContent":["import localforage from 'localforage'\nimport _ from 'lodash'\n\nconst pleromaFEStateKey = 'vuex-lz'\n\nexport const authenticateWithPleromaFE = async(store) => {\n const pleromaFEState = await localforage.getItem(pleromaFEStateKey)\n const token = _.get(pleromaFEState, 'oauth.userToken')\n\n if (token === undefined) {\n throw new Error('PleromaFE token not found')\n }\n\n await store.dispatch('LoginByPleromaFE', { token })\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pleroma.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pleroma.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./pleroma.vue?vue&type=template&id=e44cae32&\"\nimport script from \"./pleroma.vue?vue&type=script&lang=js&\"\nexport * from \"./pleroma.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"pleroma.vue\"\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-1a7d.8173d81f.js b/priv/static/adminfe/static/js/chunk-1a7d.8173d81f.js new file mode 100644 index 000000000..0054472bc --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-1a7d.8173d81f.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-1a7d"],{"3XKG":function(e,t,a){},"5BBj":function(e,t,a){"use strict";var o=a("mK29");a.n(o).a},"8YcG":function(e,t,a){"use strict";var o=a("H3Pu");a.n(o).a},BHDh:function(e,t,a){"use strict";var o=a("JR8x");a.n(o).a},D45k:function(e,t,a){},H3Pu:function(e,t,a){},JR8x:function(e,t,a){},eGqU:function(e,t,a){"use strict";var o=a("D45k");a.n(o).a},mK29:function(e,t,a){},rCuO:function(e,t,a){"use strict";a.r(t);var o={props:{name:{type:String,required:!0}}},i=(a("vB9w"),a("KHd+")),n=Object(i.a)(o,function(){var e=this.$createElement,t=this._self._c||e;return t("el-row",{staticClass:"prop-row",attrs:{gutter:20}},[t("el-col",{attrs:{span:4}},[t("b",[this._v(this._s(this.name))])]),this._v(" "),t("el-col",{attrs:{span:10}},[this._t("default")],2)],1)},[],!1,null,null,null);n.options.__file="PropertyEditingRow.vue";var c=n.exports,s=a("qh4k"),l={props:{host:{type:String,required:!0},packName:{type:String,required:!0},name:{type:String,required:!0},file:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{newName:null,newFile:null,copyToLocalPackName:null,copyToLocalVisible:!1,copyToShortcode:"",copyToFilename:""}},computed:{modifyingName:{get:function(){return null!==this.newName?this.newName:this.name},set:function(e){this.newName=e}},modifyingFile:{get:function(){return null!==this.newFile?this.newFile:this.file},set:function(e){this.newFile=e}}},methods:{update:function(){var e=this;this.$store.dispatch("UpdateAndSavePackFile",{action:"update",packName:this.packName,oldName:this.name,newName:this.modifyingName,newFilename:this.modifyingFile}).then(function(){e.newName=null,e.newFile=null,e.$store.dispatch("ReloadEmoji")})},remove:function(){var e=this;this.$confirm("This will delete the emoji, are you sure?","Warning",{confirmButtonText:"Yes, delete the emoji",cancelButtonText:"No, leave it be",type:"warning"}).then(function(){e.$store.dispatch("UpdateAndSavePackFile",{action:"remove",packName:e.packName,name:e.name}).then(function(){e.newName=null,e.newFile=null,e.$store.dispatch("ReloadEmoji")})})},copyToLocal:function(){var e=this;this.$store.dispatch("UpdateAndSavePackFile",{action:"add",packName:this.copyToLocalPackName,shortcode:""!==this.copyToShortcode.trim()?this.copyToShortcode.trim():this.name,fileName:""!==this.copyToFilename.trim()?this.copyToFilename.trim():this.file,file:this.addressOfEmojiInPack(this.host,this.packName,this.file)}).then(function(){e.copyToLocalPackName=null,e.copyToLocalVisible=!1,e.copyToShortcode="",e.copyToFilename="",e.$store.dispatch("ReloadEmoji")})},addressOfEmojiInPack:s.a}},r=(a("BHDh"),Object(i.a)(l,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:4}},[e.isLocal?a("el-input",{attrs:{placeholder:"Name/Shortcode"},model:{value:e.modifyingName,callback:function(t){e.modifyingName=t},expression:"modifyingName"}}):a("el-input",{attrs:{value:e.modifyingName,placeholder:"Name/Shortcode"}})],1),e._v(" "),a("el-col",{attrs:{span:6}},[e.isLocal?a("el-input",{attrs:{placeholder:"File"},model:{value:e.modifyingFile,callback:function(t){e.modifyingFile=t},expression:"modifyingFile"}}):a("el-input",{attrs:{value:e.modifyingFile,placeholder:"File"}})],1),e._v(" "),e.isLocal?a("el-col",{attrs:{span:2}},[a("el-button",{attrs:{type:"primary"},on:{click:e.update}},[e._v("Update")])],1):e._e(),e._v(" "),e.isLocal?a("el-col",{attrs:{span:2}},[a("el-button",{attrs:{type:"danger"},on:{click:e.remove}},[e._v("Remove")])],1):e._e(),e._v(" "),e.isLocal?e._e():a("el-col",{attrs:{span:4}},[a("el-popover",{attrs:{placement:"bottom"},model:{value:e.copyToLocalVisible,callback:function(t){e.copyToLocalVisible=t},expression:"copyToLocalVisible"}},[a("p",[e._v("Select the local pack to copy to")]),e._v(" "),a("el-select",{attrs:{placeholder:"Local pack"},model:{value:e.copyToLocalPackName,callback:function(t){e.copyToLocalPackName=t},expression:"copyToLocalPackName"}},e._l(e.$store.state.emoji_packs.localPacks,function(e,t){return a("el-option",{key:t,attrs:{label:t,value:t}})}),1),e._v(" "),a("p",[e._v("Specify a custom shortcode (leave empty to use the same shortcode)")]),e._v(" "),a("el-input",{attrs:{placeholder:"Shortcode (optional)"},model:{value:e.copyToShortcode,callback:function(t){e.copyToShortcode=t},expression:"copyToShortcode"}}),e._v(" "),a("p",[e._v("Specify a custom filename (leavy empty to use the same filename)")]),e._v(" "),a("el-input",{attrs:{placeholder:"Filename (optional)"},model:{value:e.copyToFilename,callback:function(t){e.copyToFilename=t},expression:"copyToFilename"}}),e._v(" "),a("el-button",{staticClass:"copy-to-local-button",attrs:{disabled:!e.copyToLocalPackName,type:"success"},on:{click:e.copyToLocal}},[e._v("Copy")]),e._v(" "),a("el-button",{attrs:{slot:"reference",type:"primary"},slot:"reference"},[e._v("Copy to local pack...")])],1)],1),e._v(" "),a("el-col",{attrs:{span:2}},[a("img",{staticClass:"emoji-preview-img",attrs:{src:e.addressOfEmojiInPack(e.host,e.packName,e.file)}})])],1)},[],!1,null,null,null));r.options.__file="SingleEmojiEditor.vue";var p=r.exports,m={props:{packName:{type:String,required:!0}},data:function(){return{shortcode:"",imageUploadURL:"",customFileName:""}},methods:{upload:function(){var e=this,t=null;this.$refs.fileUpload.files.length>0?t=this.$refs.fileUpload.files[0]:""!==this.imageUploadURL.trim()&&(t=this.imageUploadURL),null!==t&&this.$store.dispatch("UpdateAndSavePackFile",{action:"add",packName:this.packName,shortcode:this.shortcode,file:t,fileName:this.customFileName}).then(function(){e.shortcode="",e.imageUploadURL="",e.$store.dispatch("ReloadEmoji")})}}},d=(a("8YcG"),Object(i.a)(m,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("h4",[e._v("Add new emoji to the pack")]),e._v(" "),a("el-row",{attrs:{gutter:20}},[a("el-col",{staticClass:"new-emoji-col",attrs:{span:4}},[a("el-input",{attrs:{placeholder:"Shortcode"},model:{value:e.shortcode,callback:function(t){e.shortcode=t},expression:"shortcode"}})],1),e._v(" "),a("el-col",{attrs:{span:8}},[a("div",[a("h5",[e._v("Upload a file")])]),e._v("\n File name\n "),a("el-input",{attrs:{size:"mini",placeholder:"Custom file name (optional)"},model:{value:e.customFileName,callback:function(t){e.customFileName=t},expression:"customFileName"}}),e._v(" "),a("input",{ref:"fileUpload",attrs:{type:"file",accept:"image/*"}}),e._v(" "),a("div",{staticClass:"or"},[e._v("\n or\n ")]),e._v(" "),a("div",[a("h5",[e._v("Enter a URL")])]),e._v(" "),a("el-input",{attrs:{placeholder:"Image URL"},model:{value:e.imageUploadURL,callback:function(t){e.imageUploadURL=t},expression:"imageUploadURL"}}),e._v(" "),a("small",[e._v("\n (If both are filled, the file is used)\n ")])],1),e._v(" "),a("el-col",{staticClass:"new-emoji-col",attrs:{span:4}},[a("el-button",{attrs:{disabled:""==e.shortcode.trim()},on:{click:e.upload}},[e._v("Upload")])],1)],1)],1)},[],!1,null,null,null));d.options.__file="NewEmojiUploader.vue";var u={components:{PropEditingRow:c,SingleEmojiEditor:p,NewEmojiUploader:d.exports},props:{name:{type:String,required:!0},pack:{type:Object,required:!0},host:{type:String,required:!0},isLocal:{type:Boolean,required:!0}},data:function(){return{shownPackEmoji:[],downloadSharedAs:""}},computed:{share:{get:function(){return this.pack.pack["share-files"]},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"share-files",value:e})}},homepage:{get:function(){return this.pack.pack.homepage},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"homepage",value:e})}},description:{get:function(){return this.pack.pack.description},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"description",value:e})}},license:{get:function(){return this.pack.pack.license},set:function(e){this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"license",value:e})}},fallbackSrc:{get:function(){return this.pack.pack["fallback-src"]},set:function(e){""!==e.trim()?this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:e}):(this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src",value:null}),this.$store.dispatch("UpdateLocalPackVal",{name:this.name,key:"fallback-src-sha256",value:null}))}}},methods:{downloadFromInstance:function(){var e=this;this.$store.dispatch("DownloadFrom",{instanceAddress:this.host,packName:this.name,as:this.downloadSharedAs}).then(function(){return e.$store.dispatch("ReloadEmoji")}).then(function(){return e.$store.dispatch("SetLocalEmojiPacks")})},deletePack:function(){var e=this;this.$confirm("This will delete the pack, are you sure?","Warning",{confirmButtonText:"Yes, delete the pack",cancelButtonText:"No, leave it be",type:"warning"}).then(function(){e.$store.dispatch("DeletePack",{name:e.name}).then(function(){return e.$store.dispatch("ReloadEmoji")}).then(function(){return e.$store.dispatch("SetLocalEmojiPacks")})}).catch(function(){})},savePackMetadata:function(){this.$store.dispatch("SavePackMetadata",{packName:this.name})}}},h=(a("eGqU"),Object(i.a)(u,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("h2",[e._v(e._s(e.name))]),e._v(" "),a("prop-editing-row",{attrs:{name:"Share pack"}},[a("el-switch",{attrs:{disabled:!e.isLocal},model:{value:e.share,callback:function(t){e.share=t},expression:"share"}})],1),e._v(" "),a("prop-editing-row",{attrs:{name:"Homepage"}},[e.isLocal?a("el-input",{model:{value:e.homepage,callback:function(t){e.homepage=t},expression:"homepage"}}):a("el-input",{attrs:{value:e.homepage}})],1),e._v(" "),a("prop-editing-row",{attrs:{name:"Description"}},[e.isLocal?a("el-input",{attrs:{rows:2,type:"textarea"},model:{value:e.description,callback:function(t){e.description=t},expression:"description"}}):a("el-input",{attrs:{rows:2,value:e.description,type:"textarea"}})],1),e._v(" "),a("prop-editing-row",{attrs:{name:"License"}},[e.isLocal?a("el-input",{model:{value:e.license,callback:function(t){e.license=t},expression:"license"}}):a("el-input",{attrs:{value:e.license}})],1),e._v(" "),a("prop-editing-row",{attrs:{name:"Fallback source"}},[e.isLocal?a("el-input",{model:{value:e.fallbackSrc,callback:function(t){e.fallbackSrc=t},expression:"fallbackSrc"}}):a("el-input",{attrs:{value:e.fallbackSrc}})],1),e._v(" "),e.fallbackSrc&&""!==e.fallbackSrc.trim()?a("prop-editing-row",{attrs:{name:"Fallback source SHA"}},[e._v("\n "+e._s(e.pack.pack["fallback-src-sha256"])+"\n ")]):e._e(),e._v(" "),e.isLocal?a("el-button",{attrs:{type:"success"},on:{click:e.savePackMetadata}},[e._v("Save pack metadata")]):e._e(),e._v(" "),a("el-collapse",{staticClass:"contents-collapse",model:{value:e.shownPackEmoji,callback:function(t){e.shownPackEmoji=t},expression:"shownPackEmoji"}},[a("el-collapse-item",{attrs:{name:e.name,title:"Show pack contents"}},[e.isLocal?a("new-emoji-uploader",{staticClass:"new-emoji-uploader",attrs:{"pack-name":e.name}}):e._e(),e._v(" "),a("h4",[e._v("Manage existing emoji")]),e._v(" "),e._l(e.pack.files,function(t,o){return a("single-emoji-editor",{key:o,attrs:{host:e.host,"pack-name":e.name,name:o,file:t,"is-local":e.isLocal}})})],2)],1),e._v(" "),e.isLocal?e._e():a("div",{staticClass:"shared-pack-dl-box"},[a("div",[e._v('\n This will download the "'+e._s(e.name)+'" pack to the current instance under the name\n "'+e._s(""===e.downloadSharedAs.trim()?e.name:e.downloadSharedAs)+'" (can be changed below).\n It will then be usable and shareable from the current instance.\n ')]),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:e.downloadFromInstance}},[e._v("\n Download shared pack to current instance\n ")]),e._v(" "),a("el-input",{staticClass:"dl-as-input",attrs:{placeholder:"Download as (optional)"},model:{value:e.downloadSharedAs,callback:function(t){e.downloadSharedAs=t},expression:"downloadSharedAs"}})],1),e._v(" "),e.pack.pack["can-download"]?a("el-link",{attrs:{href:"//"+e.host+"/api/pleroma/emoji/packs/"+e.name+"/download_shared",type:"primary",target:"_blank"}},[e._v("\n Download pack archive\n ")]):e._e(),e._v(" "),e.isLocal?a("div",{staticClass:"pack-actions"},[a("el-button",{attrs:{type:"danger"},on:{click:e.deletePack}},[e._v("\n Delete the local pack\n ")])],1):e._e()],1)},[],!1,null,null,null));h.options.__file="EmojiPack.vue";var k={components:{EmojiPack:h.exports},data:function(){return{activeName:"local",remoteInstanceAddress:"",downloadFromState:null,newPackName:"",createNewPackVisible:!1}},mounted:function(){this.refreshLocalPacks()},methods:{createLocalPack:function(){var e=this;this.createNewPackVisible=!1,this.$store.dispatch("CreatePack",{name:this.newPackName}).then(function(){e.newPackName="",e.$store.dispatch("SetLocalEmojiPacks"),e.$store.dispatch("ReloadEmoji")})},refreshLocalPacks:function(){this.$store.dispatch("SetLocalEmojiPacks")},refreshRemotePacks:function(){this.$store.dispatch("SetRemoteEmojiPacks",{remoteInstance:this.remoteInstanceAddress})},reloadEmoji:function(){this.$store.dispatch("ReloadEmoji")},importFromFS:function(){var e=this;this.$store.dispatch("ImportFromFS").then(function(){e.$store.dispatch("SetLocalEmojiPacks"),e.$store.dispatch("ReloadEmoji")})}}},v=(a("5BBj"),Object(i.a)(k,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-container",{staticClass:"emoji-packs-container"},[a("el-header",[a("h1",[e._v("\n Emoji packs\n ")])]),e._v(" "),a("el-row",{staticClass:"local-packs-actions"},[a("el-button",{attrs:{type:"primary"},on:{click:e.reloadEmoji}},[e._v("\n Reload emoji\n ")]),e._v(" "),a("el-tooltip",{attrs:{effects:"dark",content:"Importing from the filesystem will scan the directories and import those without pack.json but with emoji.txt or without neither",placement:"bottom"}},[a("el-button",{attrs:{type:"success"},on:{click:e.importFromFS}},[e._v("\n Import packs from the server filesystem\n ")])],1)],1),e._v(" "),a("el-tabs",{model:{value:e.activeName,callback:function(t){e.activeName=t},expression:"activeName"}},[a("el-tab-pane",{attrs:{label:"Local packs",name:"local"}},[a("div",[e._v("\n Local packs can be viewed and downloaded for backup here.\n ")]),e._v(" "),a("div",{staticClass:"local-packs-actions"},[a("el-popover",{attrs:{placement:"bottom",trigger:"click"},model:{value:e.createNewPackVisible,callback:function(t){e.createNewPackVisible=t},expression:"createNewPackVisible"}},[a("el-input",{attrs:{placeholder:"Name"},model:{value:e.newPackName,callback:function(t){e.newPackName=t},expression:"newPackName"}}),e._v(" "),a("el-button",{staticClass:"create-pack-button",attrs:{disabled:""===e.newPackName.trim(),type:"success"},on:{click:e.createLocalPack}},[e._v("\n Create\n ")]),e._v(" "),a("el-button",{attrs:{slot:"reference",type:"success"},slot:"reference"},[e._v("\n Create a new local pack\n ")])],1),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:e.refreshLocalPacks}},[e._v("\n Refresh local packs\n ")])],1),e._v(" "),e._l(e.$store.state.emoji_packs.localPacks,function(t,o){return a("div",{key:o},[a("emoji-pack",{attrs:{name:o,pack:t,host:e.$store.getters.authHost,"is-local":!0}}),e._v(" "),a("el-divider")],1)})],2),e._v(" "),a("el-tab-pane",{attrs:{label:"Remote packs",name:"remote"}},[a("el-input",{staticClass:"remote-instance-input",attrs:{placeholder:"Remote instance address"},model:{value:e.remoteInstanceAddress,callback:function(t){e.remoteInstanceAddress=t},expression:"remoteInstanceAddress"}}),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:e.refreshRemotePacks}},[e._v("\n Refresh remote packs\n ")]),e._v(" "),e._l(e.$store.state.emoji_packs.remotePacks,function(t,o){return a("div",{key:o},[a("emoji-pack",{attrs:{name:o,pack:t,host:e.remoteInstanceAddress,"is-local":!1}}),e._v(" "),a("el-divider")],1)})],2)],1)],1)},[],!1,null,null,null));v.options.__file="index.vue";t.default=v.exports},vB9w:function(e,t,a){"use strict";var o=a("3XKG");a.n(o).a}}]); +//# sourceMappingURL=chunk-1a7d.8173d81f.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-1a7d.8173d81f.js.map b/priv/static/adminfe/static/js/chunk-1a7d.8173d81f.js.map new file mode 100644 index 000000000..d5a2b4a20 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-1a7d.8173d81f.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/emoji-packs/index.vue?39b9","webpack:///./src/views/emoji-packs/components/NewEmojiUploader.vue?30f8","webpack:///./src/views/emoji-packs/components/SingleEmojiEditor.vue?9a15","webpack:///./src/views/emoji-packs/components/EmojiPack.vue?96ec","webpack:///./src/views/emoji-packs/index.vue?d1c2","webpack:///./src/views/emoji-packs/components/PropertyEditingRow.vue?5e16","webpack:///src/views/emoji-packs/components/PropertyEditingRow.vue","webpack:///./src/views/emoji-packs/components/PropertyEditingRow.vue","webpack:///./src/views/emoji-packs/components/PropertyEditingRow.vue?b8c4","webpack:///./src/views/emoji-packs/components/SingleEmojiEditor.vue?7959","webpack:///src/views/emoji-packs/components/SingleEmojiEditor.vue","webpack:///./src/views/emoji-packs/components/SingleEmojiEditor.vue","webpack:///./src/views/emoji-packs/components/SingleEmojiEditor.vue?c51d","webpack:///./src/views/emoji-packs/components/NewEmojiUploader.vue?cec7","webpack:///src/views/emoji-packs/components/NewEmojiUploader.vue","webpack:///./src/views/emoji-packs/components/NewEmojiUploader.vue","webpack:///./src/views/emoji-packs/components/NewEmojiUploader.vue?d6ab","webpack:///./src/views/emoji-packs/components/EmojiPack.vue?0c2a","webpack:///src/views/emoji-packs/components/EmojiPack.vue","webpack:///./src/views/emoji-packs/components/EmojiPack.vue","webpack:///./src/views/emoji-packs/components/EmojiPack.vue?2677","webpack:///./src/views/emoji-packs/index.vue?0457","webpack:///src/views/emoji-packs/index.vue","webpack:///./src/views/emoji-packs/index.vue","webpack:///./src/views/emoji-packs/components/PropertyEditingRow.vue?2bb0"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_NewEmojiUploader_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_SingleEmojiEditor_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_EmojiPack_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","components_PropertyEditingRowvue_type_script_lang_js_","props","name","type","String","required","component","Object","componentNormalizer","_h","this","$createElement","_c","_self","staticClass","attrs","gutter","span","_v","_s","_t","options","__file","PropertyEditingRow","components_SingleEmojiEditorvue_type_script_lang_js_","host","packName","file","isLocal","Boolean","data","newName","newFile","copyToLocalPackName","copyToLocalVisible","copyToShortcode","copyToFilename","computed","modifyingName","get","set","val","modifyingFile","methods","update","_this","$store","dispatch","action","oldName","newFilename","then","remove","_this2","$confirm","confirmButtonText","cancelButtonText","copyToLocal","_this3","shortcode","trim","fileName","addressOfEmojiInPack","emoji_packs","SingleEmojiEditor_component","_vm","placeholder","model","value","callback","$$v","expression","on","click","_e","placement","_l","state","_pack","key","label","disabled","slot","src","SingleEmojiEditor","components_NewEmojiUploadervue_type_script_lang_js_","imageUploadURL","customFileName","upload","$refs","fileUpload","files","length","NewEmojiUploader_component","size","ref","accept","components_EmojiPackvue_type_script_lang_js_","components","PropEditingRow","NewEmojiUploader","pack","shownPackEmoji","downloadSharedAs","share","homepage","description","license","fallbackSrc","downloadFromInstance","instanceAddress","as","deletePack","catch","savePackMetadata","EmojiPack_component","rows","title","pack-name","ename","is-local","href","target","views_emoji_packsvue_type_script_lang_js_","EmojiPack","activeName","remoteInstanceAddress","downloadFromState","newPackName","createNewPackVisible","mounted","refreshLocalPacks","createLocalPack","refreshRemotePacks","remoteInstance","reloadEmoji","importFromFS","emoji_packs_component","effects","content","trigger","getters","authHost","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_7_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_7_2_node_modules_vue_loader_lib_index_js_vue_loader_options_PropertyEditingRow_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"iIAAA,IAAAA,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAAmY,uCCAnY,IAAAG,EAAAF,EAAA,QAAAA,EAAAC,EAAAC,GAA6Z,qCCA7Z,IAAAC,EAAAH,EAAA,QAAAA,EAAAC,EAAAE,GAA8Z,0GCA9Z,IAAAC,EAAAJ,EAAA,QAAAA,EAAAC,EAAAG,GAAsZ,mECAtZ,ICA6NC,GCmB7NC,OACAC,MACAC,KAAAC,OACAC,UAAA,6BCdAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdP,ECTQ,WAAgB,IAAaS,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,UAAoBE,YAAA,WAAAC,OAA8BC,OAAA,MAAaJ,EAAA,UAAeG,OAAOE,KAAA,KAAUL,EAAA,KAA9JF,KAA8JQ,GAA9JR,KAA8JS,GAA9JT,KAA8JR,WAA9JQ,KAA8JQ,GAAA,KAAAN,EAAA,UAAgEG,OAAOE,KAAA,MAArOP,KAAgPU,GAAA,wBDY1Q,EACA,KACA,KACA,MAIAd,EAAAe,QAAAC,OAAA,yBACe,IAAAC,EAAAjB,sBEpB6MkB,GCqE5NvB,OACAwB,MACAtB,KAAAC,OACAC,UAAA,GAEAqB,UACAvB,KAAAC,OACAC,UAAA,GAEAH,MACAC,KAAAC,OACAC,UAAA,GAEAsB,MACAxB,KAAAC,OACAC,UAAA,GAEAuB,SACAzB,KAAA0B,QACAxB,UAAA,IAIAyB,KAxBA,WAyBA,OACAC,QAAA,KACAC,QAAA,KAEAC,oBAAA,KACAC,oBAAA,EACAC,gBAAA,GACAC,eAAA,KAIAC,UACAC,eACAC,IADA,WAGA,cAAA7B,KAAAqB,QAAArB,KAAAqB,QAAArB,KAAAR,MAEAsC,IALA,SAKAC,GAAA/B,KAAAqB,QAAAU,IAEAC,eACAH,IADA,WAGA,cAAA7B,KAAAsB,QAAAtB,KAAAsB,QAAAtB,KAAAiB,MAEAa,IALA,SAKAC,GAAA/B,KAAAsB,QAAAS,KAGAE,SACAC,OADA,WACA,IAAAC,EAAAnC,KACAA,KAAAoC,OAAAC,SAAA,yBACAC,OAAA,SACAtB,SAAAhB,KAAAgB,SACAuB,QAAAvC,KAAAR,KACA6B,QAAArB,KAAA4B,cACAY,YAAAxC,KAAAgC,gBACAS,KAAA,WACAN,EAAAd,QAAA,KACAc,EAAAb,QAAA,KAEAa,EAAAC,OAAAC,SAAA,kBAGAK,OAfA,WAeA,IAAAC,EAAA3C,KACAA,KAAA4C,SAAA,uDACAC,kBAAA,wBACAC,iBAAA,kBACArD,KAAA,YACAgD,KAAA,WACAE,EAAAP,OAAAC,SAAA,yBACAC,OAAA,SACAtB,SAAA2B,EAAA3B,SACAxB,KAAAmD,EAAAnD,OACAiD,KAAA,WACAE,EAAAtB,QAAA,KACAsB,EAAArB,QAAA,KAEAqB,EAAAP,OAAAC,SAAA,oBAKAU,YAlCA,WAkCA,IAAAC,EAAAhD,KACAA,KAAAoC,OAAAC,SAAA,yBACAC,OAAA,MACAtB,SAAAhB,KAAAuB,oBACA0B,UAAA,KAAAjD,KAAAyB,gBAAAyB,OAAAlD,KAAAyB,gBAAAyB,OAAAlD,KAAAR,KACA2D,SAAA,KAAAnD,KAAA0B,eAAAwB,OAAAlD,KAAA0B,eAAAwB,OAAAlD,KAAAiB,KACAA,KAAAjB,KAAAoD,qBAAApD,KAAAe,KAAAf,KAAAgB,SAAAhB,KAAAiB,QACAwB,KAAA,WACAO,EAAAzB,oBAAA,KACAyB,EAAAxB,oBAAA,EACAwB,EAAAvB,gBAAA,GACAuB,EAAAtB,eAAA,GAEAsB,EAAAZ,OAAAC,SAAA,kBAIAe,qBAAAC,EAAA,ICnKIC,aAAYzD,OAAAC,EAAA,EAAAD,CACdiB,ECTQ,WAAgB,IAAAyC,EAAAvD,KAAaD,EAAAwD,EAAAtD,eAA0BC,EAAAqD,EAAApD,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,UAAoBG,OAAOC,OAAA,MAAaJ,EAAA,UAAeG,OAAOE,KAAA,KAAUgD,EAAA,QAAArD,EAAA,YAA+BG,OAAOmD,YAAA,kBAA+BC,OAAQC,MAAAH,EAAA,cAAAI,SAAA,SAAAC,GAAmDL,EAAA3B,cAAAgC,GAAsBC,WAAA,mBAA6B3D,EAAA,YAAiBG,OAAOqD,MAAAH,EAAA3B,cAAA4B,YAAA,qBAA0D,GAAAD,EAAA/C,GAAA,KAAAN,EAAA,UAA+BG,OAAOE,KAAA,KAAUgD,EAAA,QAAArD,EAAA,YAA+BG,OAAOmD,YAAA,QAAqBC,OAAQC,MAAAH,EAAA,cAAAI,SAAA,SAAAC,GAAmDL,EAAAvB,cAAA4B,GAAsBC,WAAA,mBAA6B3D,EAAA,YAAiBG,OAAOqD,MAAAH,EAAAvB,cAAAwB,YAAA,WAAgD,GAAAD,EAAA/C,GAAA,KAAA+C,EAAA,QAAArD,EAAA,UAA6CG,OAAOE,KAAA,KAAUL,EAAA,aAAkBG,OAAOZ,KAAA,WAAiBqE,IAAKC,MAAAR,EAAArB,UAAoBqB,EAAA/C,GAAA,gBAAA+C,EAAAS,KAAAT,EAAA/C,GAAA,KAAA+C,EAAA,QAAArD,EAAA,UAAyEG,OAAOE,KAAA,KAAUL,EAAA,aAAkBG,OAAOZ,KAAA,UAAgBqE,IAAKC,MAAAR,EAAAb,UAAoBa,EAAA/C,GAAA,gBAAA+C,EAAAS,KAAAT,EAAA/C,GAAA,KAAA+C,EAAArC,QAA28CqC,EAAAS,KAA38C9D,EAAA,UAA0EG,OAAOE,KAAA,KAAUL,EAAA,cAAmBG,OAAO4D,UAAA,UAAqBR,OAAQC,MAAAH,EAAA,mBAAAI,SAAA,SAAAC,GAAwDL,EAAA/B,mBAAAoC,GAA2BC,WAAA,wBAAkC3D,EAAA,KAAAqD,EAAA/C,GAAA,sCAAA+C,EAAA/C,GAAA,KAAAN,EAAA,aAAmFG,OAAOmD,YAAA,cAA2BC,OAAQC,MAAAH,EAAA,oBAAAI,SAAA,SAAAC,GAAyDL,EAAAhC,oBAAAqC,GAA4BC,WAAA,wBAAmCN,EAAAW,GAAAX,EAAAnB,OAAA+B,MAAAd,YAAA,oBAAAe,EAAA5E,GAAuE,OAAAU,EAAA,aAAuBmE,IAAA7E,EAAAa,OAAgBiE,MAAA9E,EAAAkE,MAAAlE,OAA6B,GAAA+D,EAAA/C,GAAA,KAAAN,EAAA,KAAAqD,EAAA/C,GAAA,wEAAA+C,EAAA/C,GAAA,KAAAN,EAAA,YAAmIG,OAAOmD,YAAA,wBAAqCC,OAAQC,MAAAH,EAAA,gBAAAI,SAAA,SAAAC,GAAqDL,EAAA9B,gBAAAmC,GAAwBC,WAAA,qBAA+BN,EAAA/C,GAAA,KAAAN,EAAA,KAAAqD,EAAA/C,GAAA,sEAAA+C,EAAA/C,GAAA,KAAAN,EAAA,YAA8HG,OAAOmD,YAAA,uBAAoCC,OAAQC,MAAAH,EAAA,eAAAI,SAAA,SAAAC,GAAoDL,EAAA7B,eAAAkC,GAAuBC,WAAA,oBAA8BN,EAAA/C,GAAA,KAAAN,EAAA,aAA8BE,YAAA,uBAAAC,OAA0CkE,UAAAhB,EAAAhC,oBAAA9B,KAAA,WAAqDqE,IAAKC,MAAAR,EAAAR,eAAyBQ,EAAA/C,GAAA,UAAA+C,EAAA/C,GAAA,KAAAN,EAAA,aAA+CG,OAAOmE,KAAA,YAAA/E,KAAA,WAAoC+E,KAAA,cAAkBjB,EAAA/C,GAAA,mCAAA+C,EAAA/C,GAAA,KAAAN,EAAA,UAA8EG,OAAOE,KAAA,KAAUL,EAAA,OAAYE,YAAA,oBAAAC,OAAuCoE,IAAAlB,EAAAH,qBAAAG,EAAAxC,KAAAwC,EAAAvC,SAAAuC,EAAAtC,YAAkE,QDYnoF,EACA,KACA,KACA,OAIAqC,EAAS3C,QAAAC,OAAA,wBACM,IAAA8D,EAAApB,UEpB4MqB,GCkD3NpF,OACAyB,UACAvB,KAAAC,OACAC,UAAA,IAIAyB,KARA,WASA,OACA6B,UAAA,GACA2B,eAAA,GACAC,eAAA,KAIA5C,SACA6C,OADA,WACA,IAAA3C,EAAAnC,KACAiB,EAAA,KAEAjB,KAAA+E,MAAAC,WAAAC,MAAAC,OAAA,EACAjE,EAAAjB,KAAA+E,MAAAC,WAAAC,MAAA,GACA,KAAAjF,KAAA4E,eAAA1B,SACAjC,EAAAjB,KAAA4E,gBAGA,OAAA3D,GACAjB,KAAAoC,OAAAC,SAAA,yBACAC,OAAA,MACAtB,SAAAhB,KAAAgB,SACAiC,UAAAjD,KAAAiD,UACAhC,OACAkC,SAAAnD,KAAA6E,iBACApC,KAAA,WACAN,EAAAc,UAAA,GACAd,EAAAyC,eAAA,GAEAzC,EAAAC,OAAAC,SAAA,oBC9EI8C,aAAYtF,OAAAC,EAAA,EAAAD,CACd8E,ECTQ,WAAgB,IAAApB,EAAAvD,KAAaD,EAAAwD,EAAAtD,eAA0BC,EAAAqD,EAAApD,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,MAAAqD,EAAA/C,GAAA,+BAAA+C,EAAA/C,GAAA,KAAAN,EAAA,UAAyFG,OAAOC,OAAA,MAAaJ,EAAA,UAAeE,YAAA,gBAAAC,OAAmCE,KAAA,KAAUL,EAAA,YAAiBG,OAAOmD,YAAA,aAA0BC,OAAQC,MAAAH,EAAA,UAAAI,SAAA,SAAAC,GAA+CL,EAAAN,UAAAW,GAAkBC,WAAA,gBAAyB,GAAAN,EAAA/C,GAAA,KAAAN,EAAA,UAA+BG,OAAOE,KAAA,KAAUL,EAAA,OAAAA,EAAA,MAAAqD,EAAA/C,GAAA,qBAAA+C,EAAA/C,GAAA,6BAAAN,EAAA,YAAoGG,OAAO+E,KAAA,OAAA5B,YAAA,+BAA0DC,OAAQC,MAAAH,EAAA,eAAAI,SAAA,SAAAC,GAAoDL,EAAAsB,eAAAjB,GAAuBC,WAAA,oBAA8BN,EAAA/C,GAAA,KAAAN,EAAA,SAA0BmF,IAAA,aAAAhF,OAAwBZ,KAAA,OAAA6F,OAAA,aAAkC/B,EAAA/C,GAAA,KAAAN,EAAA,OAAwBE,YAAA,OAAiBmD,EAAA/C,GAAA,0BAAA+C,EAAA/C,GAAA,KAAAN,EAAA,OAAAA,EAAA,MAAAqD,EAAA/C,GAAA,mBAAA+C,EAAA/C,GAAA,KAAAN,EAAA,YAAuHG,OAAOmD,YAAA,aAA0BC,OAAQC,MAAAH,EAAA,eAAAI,SAAA,SAAAC,GAAoDL,EAAAqB,eAAAhB,GAAuBC,WAAA,oBAA8BN,EAAA/C,GAAA,KAAAN,EAAA,SAAAqD,EAAA/C,GAAA,kEAAA+C,EAAA/C,GAAA,KAAAN,EAAA,UAA4HE,YAAA,gBAAAC,OAAmCE,KAAA,KAAUL,EAAA,aAAkBG,OAAOkE,SAAA,IAAAhB,EAAAN,UAAAC,QAAsCY,IAAKC,MAAAR,EAAAuB,UAAoBvB,EAAA/C,GAAA,6BDYn2C,EACA,KACA,KACA,OAIA2E,EAASxE,QAAAC,OAAA,uBACM,IEpBqM2E,GC2GpNC,YAAAC,eAAA5E,EAAA6D,oBAAAgB,iBHvFeP,WGwFf5F,OACAC,MACAC,KAAAC,OACAC,UAAA,GAEAgG,MACAlG,KAAAI,OACAF,UAAA,GAEAoB,MACAtB,KAAAC,OACAC,UAAA,GAEAuB,SACAzB,KAAA0B,QACAxB,UAAA,IAIAyB,KAtBA,WAuBA,OACAwE,kBACAC,iBAAA,KAGAlE,UACAmE,OACAjE,IADA,WACA,OAAA7B,KAAA2F,UAAA,gBACA7D,IAFA,SAEA4B,GACA1D,KAAAoC,OAAAC,SACA,sBACA7C,KAAAQ,KAAAR,KAAA6E,IAAA,cAAAX,YAIAqC,UACAlE,IADA,WACA,OAAA7B,KAAA2F,UAAA,UACA7D,IAFA,SAEA4B,GACA1D,KAAAoC,OAAAC,SACA,sBACA7C,KAAAQ,KAAAR,KAAA6E,IAAA,WAAAX,YAIAsC,aACAnE,IADA,WACA,OAAA7B,KAAA2F,UAAA,aACA7D,IAFA,SAEA4B,GACA1D,KAAAoC,OAAAC,SACA,sBACA7C,KAAAQ,KAAAR,KAAA6E,IAAA,cAAAX,YAIAuC,SACApE,IADA,WACA,OAAA7B,KAAA2F,UAAA,SACA7D,IAFA,SAEA4B,GACA1D,KAAAoC,OAAAC,SACA,sBACA7C,KAAAQ,KAAAR,KAAA6E,IAAA,UAAAX,YAIAwC,aACArE,IADA,WACA,OAAA7B,KAAA2F,UAAA,iBACA7D,IAFA,SAEA4B,GACA,KAAAA,EAAAR,OACAlD,KAAAoC,OAAAC,SACA,sBACA7C,KAAAQ,KAAAR,KAAA6E,IAAA,eAAAX,WAGA1D,KAAAoC,OAAAC,SACA,sBACA7C,KAAAQ,KAAAR,KAAA6E,IAAA,eAAAX,MAAA,OAEA1D,KAAAoC,OAAAC,SACA,sBACA7C,KAAAQ,KAAAR,KAAA6E,IAAA,sBAAAX,MAAA,WAMAzB,SACAkE,qBADA,WACA,IAAAhE,EAAAnC,KACAA,KAAAoC,OAAAC,SACA,gBACA+D,gBAAApG,KAAAe,KAAAC,SAAAhB,KAAAR,KAAA6G,GAAArG,KAAA6F,mBACApD,KAAA,kBAAAN,EAAAC,OAAAC,SAAA,iBACAI,KAAA,kBAAAN,EAAAC,OAAAC,SAAA,yBAGAiE,WATA,WASA,IAAA3D,EAAA3C,KACAA,KAAA4C,SAAA,sDACAC,kBAAA,uBACAC,iBAAA,kBACArD,KAAA,YACAgD,KAAA,WACAE,EAAAP,OAAAC,SAAA,cAAA7C,KAAAmD,EAAAnD,OACAiD,KAAA,kBAAAE,EAAAP,OAAAC,SAAA,iBACAI,KAAA,kBAAAE,EAAAP,OAAAC,SAAA,0BACAkE,MAAA,eAGAC,iBArBA,WAsBAxG,KAAAoC,OAAAC,SAAA,oBAAArB,SAAAhB,KAAAR,UC7MIiH,aAAY5G,OAAAC,EAAA,EAAAD,CACd0F,ECTQ,WAAgB,IAAAhC,EAAAvD,KAAaD,EAAAwD,EAAAtD,eAA0BC,EAAAqD,EAAApD,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,MAAAqD,EAAA/C,GAAA+C,EAAA9C,GAAA8C,EAAA/D,SAAA+D,EAAA/C,GAAA,KAAAN,EAAA,oBAAwFG,OAAOb,KAAA,gBAAqBU,EAAA,aAAkBG,OAAOkE,UAAAhB,EAAArC,SAAwBuC,OAAQC,MAAAH,EAAA,MAAAI,SAAA,SAAAC,GAA2CL,EAAAuC,MAAAlC,GAAcC,WAAA,YAAqB,GAAAN,EAAA/C,GAAA,KAAAN,EAAA,oBAAyCG,OAAOb,KAAA,cAAmB+D,EAAA,QAAArD,EAAA,YAA+BuD,OAAOC,MAAAH,EAAA,SAAAI,SAAA,SAAAC,GAA8CL,EAAAwC,SAAAnC,GAAiBC,WAAA,cAAwB3D,EAAA,YAAiBG,OAAOqD,MAAAH,EAAAwC,aAAsB,GAAAxC,EAAA/C,GAAA,KAAAN,EAAA,oBAAyCG,OAAOb,KAAA,iBAAsB+D,EAAA,QAAArD,EAAA,YAA+BG,OAAOqG,KAAA,EAAAjH,KAAA,YAA2BgE,OAAQC,MAAAH,EAAA,YAAAI,SAAA,SAAAC,GAAiDL,EAAAyC,YAAApC,GAAoBC,WAAA,iBAA2B3D,EAAA,YAAiBG,OAAOqG,KAAA,EAAAhD,MAAAH,EAAAyC,YAAAvG,KAAA,eAAoD,GAAA8D,EAAA/C,GAAA,KAAAN,EAAA,oBAAyCG,OAAOb,KAAA,aAAkB+D,EAAA,QAAArD,EAAA,YAA+BuD,OAAOC,MAAAH,EAAA,QAAAI,SAAA,SAAAC,GAA6CL,EAAA0C,QAAArC,GAAgBC,WAAA,aAAuB3D,EAAA,YAAiBG,OAAOqD,MAAAH,EAAA0C,YAAqB,GAAA1C,EAAA/C,GAAA,KAAAN,EAAA,oBAAyCG,OAAOb,KAAA,qBAA0B+D,EAAA,QAAArD,EAAA,YAA+BuD,OAAOC,MAAAH,EAAA,YAAAI,SAAA,SAAAC,GAAiDL,EAAA2C,YAAAtC,GAAoBC,WAAA,iBAA2B3D,EAAA,YAAiBG,OAAOqD,MAAAH,EAAA2C,gBAAyB,GAAA3C,EAAA/C,GAAA,KAAA+C,EAAA2C,aAAA,KAAA3C,EAAA2C,YAAAhD,OAAAhD,EAAA,oBAA4FG,OAAOb,KAAA,yBAA8B+D,EAAA/C,GAAA,SAAA+C,EAAA9C,GAAA8C,EAAAoC,UAAA,kCAAApC,EAAAS,KAAAT,EAAA/C,GAAA,KAAA+C,EAAA,QAAArD,EAAA,aAA4HG,OAAOZ,KAAA,WAAiBqE,IAAKC,MAAAR,EAAAiD,oBAA8BjD,EAAA/C,GAAA,wBAAA+C,EAAAS,KAAAT,EAAA/C,GAAA,KAAAN,EAAA,eAAwEE,YAAA,oBAAAqD,OAAuCC,MAAAH,EAAA,eAAAI,SAAA,SAAAC,GAAoDL,EAAAqC,eAAAhC,GAAuBC,WAAA,oBAA8B3D,EAAA,oBAAyBG,OAAOb,KAAA+D,EAAA/D,KAAAmH,MAAA,wBAA8CpD,EAAA,QAAArD,EAAA,sBAAyCE,YAAA,qBAAAC,OAAwCuG,YAAArD,EAAA/D,QAAsB+D,EAAAS,KAAAT,EAAA/C,GAAA,KAAAN,EAAA,MAAAqD,EAAA/C,GAAA,2BAAA+C,EAAA/C,GAAA,KAAA+C,EAAAW,GAAAX,EAAAoC,KAAA,eAAA1E,EAAA4F,GAA2H,OAAA3G,EAAA,uBAAiCmE,IAAAwC,EAAAxG,OAAiBU,KAAAwC,EAAAxC,KAAA6F,YAAArD,EAAA/D,UAAAqH,EAAA5F,OAAA6F,WAAAvD,EAAArC,cAAwF,OAAAqC,EAAA/C,GAAA,KAAA+C,EAAArC,QAAuwBqC,EAAAS,KAAvwB9D,EAAA,OAA+CE,YAAA,uBAAiCF,EAAA,OAAAqD,EAAA/C,GAAA,mCAAA+C,EAAA9C,GAAA8C,EAAA/D,MAAA,yDAAA+D,EAAA9C,GAAA,KAAA8C,EAAAsC,iBAAA3C,OAAAK,EAAA/D,KAAA+D,EAAAsC,kBAAA,4GAAAtC,EAAA/C,GAAA,KAAAN,EAAA,aAAyVG,OAAOZ,KAAA,WAAiBqE,IAAKC,MAAAR,EAAA4C,wBAAkC5C,EAAA/C,GAAA,4DAAA+C,EAAA/C,GAAA,KAAAN,EAAA,YAAgGE,YAAA,cAAAC,OAAiCmD,YAAA,0BAAuCC,OAAQC,MAAAH,EAAA,iBAAAI,SAAA,SAAAC,GAAsDL,EAAAsC,iBAAAjC,GAAyBC,WAAA,uBAAgC,GAAAN,EAAA/C,GAAA,KAAA+C,EAAAoC,UAAA,gBAAAzF,EAAA,WAAyEG,OAAO0G,KAAA,KAAAxD,EAAAxC,KAAA,4BAAAwC,EAAA/D,KAAA,mBAAAC,KAAA,UAAAuH,OAAA,YAA2HzD,EAAA/C,GAAA,qCAAA+C,EAAAS,KAAAT,EAAA/C,GAAA,KAAA+C,EAAA,QAAArD,EAAA,OAA2FE,YAAA,iBAA2BF,EAAA,aAAkBG,OAAOZ,KAAA,UAAgBqE,IAAKC,MAAAR,EAAA+C,cAAwB/C,EAAA/C,GAAA,6CAAA+C,EAAAS,MAAA,QDY/7G,EACA,KACA,KACA,OAIAyC,EAAS9F,QAAAC,OAAA,gBACM,IEpB2LqG,GCmG1MzB,YAAA0B,UH/EeT,WGiFfrF,KAHA,WAIA,OACA+F,WAAA,QACAC,sBAAA,GACAC,kBAAA,KAEAC,YAAA,GACAC,sBAAA,IAIAC,QAdA,WAeAxH,KAAAyH,qBAGAxF,SACAyF,gBADA,WACA,IAAAvF,EAAAnC,KACAA,KAAAuH,sBAAA,EAEAvH,KAAAoC,OAAAC,SAAA,cAAA7C,KAAAQ,KAAAsH,cACA7E,KAAA,WACAN,EAAAmF,YAAA,GAEAnF,EAAAC,OAAAC,SAAA,sBACAF,EAAAC,OAAAC,SAAA,kBAIAoF,kBAbA,WAcAzH,KAAAoC,OAAAC,SAAA,uBAGAsF,mBAjBA,WAkBA3H,KAAAoC,OAAAC,SAAA,uBAAAuF,eAAA5H,KAAAoH,yBAGAS,YArBA,WAsBA7H,KAAAoC,OAAAC,SAAA,gBAGAyF,aAzBA,WAyBA,IAAAnF,EAAA3C,KACAA,KAAAoC,OAAAC,SAAA,gBACAI,KAAA,WACAE,EAAAP,OAAAC,SAAA,sBACAM,EAAAP,OAAAC,SAAA,oBCzII0F,aAAYlI,OAAAC,EAAA,EAAAD,CACdoH,EnBTF,WAA0B,IAAA1D,EAAAvD,KAAaD,EAAAwD,EAAAtD,eAA0BC,EAAAqD,EAAApD,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,gBAA0BE,YAAA,0BAAoCF,EAAA,aAAAA,EAAA,MAAAqD,EAAA/C,GAAA,iCAAA+C,EAAA/C,GAAA,KAAAN,EAAA,UAA4FE,YAAA,wBAAkCF,EAAA,aAAkBG,OAAOZ,KAAA,WAAiBqE,IAAKC,MAAAR,EAAAsE,eAAyBtE,EAAA/C,GAAA,gCAAA+C,EAAA/C,GAAA,KAAAN,EAAA,cAAsEG,OAAO2H,QAAA,OAAAC,QAAA,mIAAAhE,UAAA,YAAoL/D,EAAA,aAAkBG,OAAOZ,KAAA,WAAiBqE,IAAKC,MAAAR,EAAAuE,gBAA0BvE,EAAA/C,GAAA,uEAAA+C,EAAA/C,GAAA,KAAAN,EAAA,WAA0GuD,OAAOC,MAAAH,EAAA,WAAAI,SAAA,SAAAC,GAAgDL,EAAA4D,WAAAvD,GAAmBC,WAAA,gBAA0B3D,EAAA,eAAoBG,OAAOiE,MAAA,cAAA9E,KAAA,WAAsCU,EAAA,OAAAqD,EAAA/C,GAAA,iFAAA+C,EAAA/C,GAAA,KAAAN,EAAA,OAA0HE,YAAA,wBAAkCF,EAAA,cAAmBG,OAAO4D,UAAA,SAAAiE,QAAA,SAAuCzE,OAAQC,MAAAH,EAAA,qBAAAI,SAAA,SAAAC,GAA0DL,EAAAgE,qBAAA3D,GAA6BC,WAAA,0BAAoC3D,EAAA,YAAiBG,OAAOmD,YAAA,QAAqBC,OAAQC,MAAAH,EAAA,YAAAI,SAAA,SAAAC,GAAiDL,EAAA+D,YAAA1D,GAAoBC,WAAA,iBAA2BN,EAAA/C,GAAA,KAAAN,EAAA,aAA8BE,YAAA,qBAAAC,OAAwCkE,SAAA,KAAAhB,EAAA+D,YAAApE,OAAAzD,KAAA,WAA0DqE,IAAKC,MAAAR,EAAAmE,mBAA6BnE,EAAA/C,GAAA,sCAAA+C,EAAA/C,GAAA,KAAAN,EAAA,aAA2EG,OAAOmE,KAAA,YAAA/E,KAAA,WAAoC+E,KAAA,cAAkBjB,EAAA/C,GAAA,2DAAA+C,EAAA/C,GAAA,KAAAN,EAAA,aAAgGG,OAAOZ,KAAA,WAAiBqE,IAAKC,MAAAR,EAAAkE,qBAA+BlE,EAAA/C,GAAA,mDAAA+C,EAAA/C,GAAA,KAAA+C,EAAAW,GAAAX,EAAAnB,OAAA+B,MAAAd,YAAA,oBAAAsC,EAAAnG,GAA6I,OAAAU,EAAA,OAAiBmE,IAAA7E,IAASU,EAAA,cAAmBG,OAAOb,OAAAmG,OAAA5E,KAAAwC,EAAAnB,OAAA+F,QAAAC,SAAAtB,YAAA,KAA4EvD,EAAA/C,GAAA,KAAAN,EAAA,qBAAmC,GAAAqD,EAAA/C,GAAA,KAAAN,EAAA,eAAoCG,OAAOiE,MAAA,eAAA9E,KAAA,YAAwCU,EAAA,YAAiBE,YAAA,wBAAAC,OAA2CmD,YAAA,2BAAwCC,OAAQC,MAAAH,EAAA,sBAAAI,SAAA,SAAAC,GAA2DL,EAAA6D,sBAAAxD,GAA8BC,WAAA,2BAAqCN,EAAA/C,GAAA,KAAAN,EAAA,aAA8BG,OAAOZ,KAAA,WAAiBqE,IAAKC,MAAAR,EAAAoE,sBAAgCpE,EAAA/C,GAAA,4CAAA+C,EAAA/C,GAAA,KAAA+C,EAAAW,GAAAX,EAAAnB,OAAA+B,MAAAd,YAAA,qBAAAsC,EAAAnG,GAAuI,OAAAU,EAAA,OAAiBmE,IAAA7E,IAASU,EAAA,cAAmBG,OAAOb,OAAAmG,OAAA5E,KAAAwC,EAAA6D,sBAAAN,YAAA,KAA2EvD,EAAA/C,GAAA,KAAAN,EAAA,qBAAmC,gBmBYl2F,EACA,KACA,KACA,OAIA6H,EAASpH,QAAAC,OAAA,YACMyH,EAAA,QAAAN,6CCpBf,IAAAO,EAAArJ,EAAA,QAAAA,EAAAC,EAAAoJ,GAA+Z","file":"static/js/chunk-1a7d.8173d81f.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--7-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--7-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmojiPack.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmojiPack.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',{staticClass:\"emoji-packs-container\"},[_c('el-header',[_c('h1',[_vm._v(\"\\n Emoji packs\\n \")])]),_vm._v(\" \"),_c('el-row',{staticClass:\"local-packs-actions\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.reloadEmoji}},[_vm._v(\"\\n Reload emoji\\n \")]),_vm._v(\" \"),_c('el-tooltip',{attrs:{\"effects\":\"dark\",\"content\":\"Importing from the filesystem will scan the directories and import those without pack.json but with emoji.txt or without neither\",\"placement\":\"bottom\"}},[_c('el-button',{attrs:{\"type\":\"success\"},on:{\"click\":_vm.importFromFS}},[_vm._v(\"\\n Import packs from the server filesystem\\n \")])],1)],1),_vm._v(\" \"),_c('el-tabs',{model:{value:(_vm.activeName),callback:function ($$v) {_vm.activeName=$$v},expression:\"activeName\"}},[_c('el-tab-pane',{attrs:{\"label\":\"Local packs\",\"name\":\"local\"}},[_c('div',[_vm._v(\"\\n Local packs can be viewed and downloaded for backup here.\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"local-packs-actions\"},[_c('el-popover',{attrs:{\"placement\":\"bottom\",\"trigger\":\"click\"},model:{value:(_vm.createNewPackVisible),callback:function ($$v) {_vm.createNewPackVisible=$$v},expression:\"createNewPackVisible\"}},[_c('el-input',{attrs:{\"placeholder\":\"Name\"},model:{value:(_vm.newPackName),callback:function ($$v) {_vm.newPackName=$$v},expression:\"newPackName\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"create-pack-button\",attrs:{\"disabled\":_vm.newPackName.trim() === '',\"type\":\"success\"},on:{\"click\":_vm.createLocalPack}},[_vm._v(\"\\n Create\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"slot\":\"reference\",\"type\":\"success\"},slot:\"reference\"},[_vm._v(\"\\n Create a new local pack\\n \")])],1),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.refreshLocalPacks}},[_vm._v(\"\\n Refresh local packs\\n \")])],1),_vm._v(\" \"),_vm._l((_vm.$store.state.emoji_packs.localPacks),function(pack,name){return _c('div',{key:name},[_c('emoji-pack',{attrs:{\"name\":name,\"pack\":pack,\"host\":_vm.$store.getters.authHost,\"is-local\":true}}),_vm._v(\" \"),_c('el-divider')],1)})],2),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":\"Remote packs\",\"name\":\"remote\"}},[_c('el-input',{staticClass:\"remote-instance-input\",attrs:{\"placeholder\":\"Remote instance address\"},model:{value:(_vm.remoteInstanceAddress),callback:function ($$v) {_vm.remoteInstanceAddress=$$v},expression:\"remoteInstanceAddress\"}}),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.refreshRemotePacks}},[_vm._v(\"\\n Refresh remote packs\\n \")]),_vm._v(\" \"),_vm._l((_vm.$store.state.emoji_packs.remotePacks),function(pack,name){return _c('div',{key:name},[_c('emoji-pack',{attrs:{\"name\":name,\"pack\":pack,\"host\":_vm.remoteInstanceAddress,\"is-local\":false}}),_vm._v(\" \"),_c('el-divider')],1)})],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyEditingRow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyEditingRow.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./PropertyEditingRow.vue?vue&type=template&id=57f3224b&\"\nimport script from \"./PropertyEditingRow.vue?vue&type=script&lang=js&\"\nexport * from \"./PropertyEditingRow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PropertyEditingRow.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"PropertyEditingRow.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-row',{staticClass:\"prop-row\",attrs:{\"gutter\":20}},[_c('el-col',{attrs:{\"span\":4}},[_c('b',[_vm._v(_vm._s(_vm.name))])]),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":10}},[_vm._t(\"default\")],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleEmojiEditor.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./SingleEmojiEditor.vue?vue&type=template&id=5bc267c6&\"\nimport script from \"./SingleEmojiEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SingleEmojiEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SingleEmojiEditor.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"SingleEmojiEditor.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-row',{attrs:{\"gutter\":20}},[_c('el-col',{attrs:{\"span\":4}},[(_vm.isLocal)?_c('el-input',{attrs:{\"placeholder\":\"Name/Shortcode\"},model:{value:(_vm.modifyingName),callback:function ($$v) {_vm.modifyingName=$$v},expression:\"modifyingName\"}}):_c('el-input',{attrs:{\"value\":_vm.modifyingName,\"placeholder\":\"Name/Shortcode\"}})],1),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":6}},[(_vm.isLocal)?_c('el-input',{attrs:{\"placeholder\":\"File\"},model:{value:(_vm.modifyingFile),callback:function ($$v) {_vm.modifyingFile=$$v},expression:\"modifyingFile\"}}):_c('el-input',{attrs:{\"value\":_vm.modifyingFile,\"placeholder\":\"File\"}})],1),_vm._v(\" \"),(_vm.isLocal)?_c('el-col',{attrs:{\"span\":2}},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.update}},[_vm._v(\"Update\")])],1):_vm._e(),_vm._v(\" \"),(_vm.isLocal)?_c('el-col',{attrs:{\"span\":2}},[_c('el-button',{attrs:{\"type\":\"danger\"},on:{\"click\":_vm.remove}},[_vm._v(\"Remove\")])],1):_vm._e(),_vm._v(\" \"),(!_vm.isLocal)?_c('el-col',{attrs:{\"span\":4}},[_c('el-popover',{attrs:{\"placement\":\"bottom\"},model:{value:(_vm.copyToLocalVisible),callback:function ($$v) {_vm.copyToLocalVisible=$$v},expression:\"copyToLocalVisible\"}},[_c('p',[_vm._v(\"Select the local pack to copy to\")]),_vm._v(\" \"),_c('el-select',{attrs:{\"placeholder\":\"Local pack\"},model:{value:(_vm.copyToLocalPackName),callback:function ($$v) {_vm.copyToLocalPackName=$$v},expression:\"copyToLocalPackName\"}},_vm._l((_vm.$store.state.emoji_packs.localPacks),function(_pack,name){return _c('el-option',{key:name,attrs:{\"label\":name,\"value\":name}})}),1),_vm._v(\" \"),_c('p',[_vm._v(\"Specify a custom shortcode (leave empty to use the same shortcode)\")]),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":\"Shortcode (optional)\"},model:{value:(_vm.copyToShortcode),callback:function ($$v) {_vm.copyToShortcode=$$v},expression:\"copyToShortcode\"}}),_vm._v(\" \"),_c('p',[_vm._v(\"Specify a custom filename (leavy empty to use the same filename)\")]),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":\"Filename (optional)\"},model:{value:(_vm.copyToFilename),callback:function ($$v) {_vm.copyToFilename=$$v},expression:\"copyToFilename\"}}),_vm._v(\" \"),_c('el-button',{staticClass:\"copy-to-local-button\",attrs:{\"disabled\":!_vm.copyToLocalPackName,\"type\":\"success\"},on:{\"click\":_vm.copyToLocal}},[_vm._v(\"Copy\")]),_vm._v(\" \"),_c('el-button',{attrs:{\"slot\":\"reference\",\"type\":\"primary\"},slot:\"reference\"},[_vm._v(\"Copy to local pack...\")])],1)],1):_vm._e(),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":2}},[_c('img',{staticClass:\"emoji-preview-img\",attrs:{\"src\":_vm.addressOfEmojiInPack(_vm.host, _vm.packName, _vm.file)}})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewEmojiUploader.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NewEmojiUploader.vue?vue&type=template&id=2b91be00&\"\nimport script from \"./NewEmojiUploader.vue?vue&type=script&lang=js&\"\nexport * from \"./NewEmojiUploader.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewEmojiUploader.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NewEmojiUploader.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h4',[_vm._v(\"Add new emoji to the pack\")]),_vm._v(\" \"),_c('el-row',{attrs:{\"gutter\":20}},[_c('el-col',{staticClass:\"new-emoji-col\",attrs:{\"span\":4}},[_c('el-input',{attrs:{\"placeholder\":\"Shortcode\"},model:{value:(_vm.shortcode),callback:function ($$v) {_vm.shortcode=$$v},expression:\"shortcode\"}})],1),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":8}},[_c('div',[_c('h5',[_vm._v(\"Upload a file\")])]),_vm._v(\"\\n File name\\n \"),_c('el-input',{attrs:{\"size\":\"mini\",\"placeholder\":\"Custom file name (optional)\"},model:{value:(_vm.customFileName),callback:function ($$v) {_vm.customFileName=$$v},expression:\"customFileName\"}}),_vm._v(\" \"),_c('input',{ref:\"fileUpload\",attrs:{\"type\":\"file\",\"accept\":\"image/*\"}}),_vm._v(\" \"),_c('div',{staticClass:\"or\"},[_vm._v(\"\\n or\\n \")]),_vm._v(\" \"),_c('div',[_c('h5',[_vm._v(\"Enter a URL\")])]),_vm._v(\" \"),_c('el-input',{attrs:{\"placeholder\":\"Image URL\"},model:{value:(_vm.imageUploadURL),callback:function ($$v) {_vm.imageUploadURL=$$v},expression:\"imageUploadURL\"}}),_vm._v(\" \"),_c('small',[_vm._v(\"\\n (If both are filled, the file is used)\\n \")])],1),_vm._v(\" \"),_c('el-col',{staticClass:\"new-emoji-col\",attrs:{\"span\":4}},[_c('el-button',{attrs:{\"disabled\":_vm.shortcode.trim() == ''},on:{\"click\":_vm.upload}},[_vm._v(\"Upload\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmojiPack.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmojiPack.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./EmojiPack.vue?vue&type=template&id=0fe4b898&\"\nimport script from \"./EmojiPack.vue?vue&type=script&lang=js&\"\nexport * from \"./EmojiPack.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmojiPack.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"EmojiPack.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h2',[_vm._v(_vm._s(_vm.name))]),_vm._v(\" \"),_c('prop-editing-row',{attrs:{\"name\":\"Share pack\"}},[_c('el-switch',{attrs:{\"disabled\":!_vm.isLocal},model:{value:(_vm.share),callback:function ($$v) {_vm.share=$$v},expression:\"share\"}})],1),_vm._v(\" \"),_c('prop-editing-row',{attrs:{\"name\":\"Homepage\"}},[(_vm.isLocal)?_c('el-input',{model:{value:(_vm.homepage),callback:function ($$v) {_vm.homepage=$$v},expression:\"homepage\"}}):_c('el-input',{attrs:{\"value\":_vm.homepage}})],1),_vm._v(\" \"),_c('prop-editing-row',{attrs:{\"name\":\"Description\"}},[(_vm.isLocal)?_c('el-input',{attrs:{\"rows\":2,\"type\":\"textarea\"},model:{value:(_vm.description),callback:function ($$v) {_vm.description=$$v},expression:\"description\"}}):_c('el-input',{attrs:{\"rows\":2,\"value\":_vm.description,\"type\":\"textarea\"}})],1),_vm._v(\" \"),_c('prop-editing-row',{attrs:{\"name\":\"License\"}},[(_vm.isLocal)?_c('el-input',{model:{value:(_vm.license),callback:function ($$v) {_vm.license=$$v},expression:\"license\"}}):_c('el-input',{attrs:{\"value\":_vm.license}})],1),_vm._v(\" \"),_c('prop-editing-row',{attrs:{\"name\":\"Fallback source\"}},[(_vm.isLocal)?_c('el-input',{model:{value:(_vm.fallbackSrc),callback:function ($$v) {_vm.fallbackSrc=$$v},expression:\"fallbackSrc\"}}):_c('el-input',{attrs:{\"value\":_vm.fallbackSrc}})],1),_vm._v(\" \"),(_vm.fallbackSrc && _vm.fallbackSrc.trim() !== '')?_c('prop-editing-row',{attrs:{\"name\":\"Fallback source SHA\"}},[_vm._v(\"\\n \"+_vm._s(_vm.pack.pack[\"fallback-src-sha256\"])+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isLocal)?_c('el-button',{attrs:{\"type\":\"success\"},on:{\"click\":_vm.savePackMetadata}},[_vm._v(\"Save pack metadata\")]):_vm._e(),_vm._v(\" \"),_c('el-collapse',{staticClass:\"contents-collapse\",model:{value:(_vm.shownPackEmoji),callback:function ($$v) {_vm.shownPackEmoji=$$v},expression:\"shownPackEmoji\"}},[_c('el-collapse-item',{attrs:{\"name\":_vm.name,\"title\":\"Show pack contents\"}},[(_vm.isLocal)?_c('new-emoji-uploader',{staticClass:\"new-emoji-uploader\",attrs:{\"pack-name\":_vm.name}}):_vm._e(),_vm._v(\" \"),_c('h4',[_vm._v(\"Manage existing emoji\")]),_vm._v(\" \"),_vm._l((_vm.pack.files),function(file,ename){return _c('single-emoji-editor',{key:ename,attrs:{\"host\":_vm.host,\"pack-name\":_vm.name,\"name\":ename,\"file\":file,\"is-local\":_vm.isLocal}})})],2)],1),_vm._v(\" \"),(!_vm.isLocal)?_c('div',{staticClass:\"shared-pack-dl-box\"},[_c('div',[_vm._v(\"\\n This will download the \\\"\"+_vm._s(_vm.name)+\"\\\" pack to the current instance under the name\\n \\\"\"+_vm._s(_vm.downloadSharedAs.trim() === '' ? _vm.name : _vm.downloadSharedAs)+\"\\\" (can be changed below).\\n It will then be usable and shareable from the current instance.\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.downloadFromInstance}},[_vm._v(\"\\n Download shared pack to current instance\\n \")]),_vm._v(\" \"),_c('el-input',{staticClass:\"dl-as-input\",attrs:{\"placeholder\":\"Download as (optional)\"},model:{value:(_vm.downloadSharedAs),callback:function ($$v) {_vm.downloadSharedAs=$$v},expression:\"downloadSharedAs\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.pack.pack['can-download'])?_c('el-link',{attrs:{\"href\":(\"//\" + _vm.host + \"/api/pleroma/emoji/packs/\" + _vm.name + \"/download_shared\"),\"type\":\"primary\",\"target\":\"_blank\"}},[_vm._v(\"\\n Download pack archive\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isLocal)?_c('div',{staticClass:\"pack-actions\"},[_c('el-button',{attrs:{\"type\":\"danger\"},on:{\"click\":_vm.deletePack}},[_vm._v(\"\\n Delete the local pack\\n \")])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=83da257e&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyEditingRow.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--7-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--7-2!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PropertyEditingRow.vue?vue&type=style&index=0&lang=css&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-18e1.7f9c377c.js b/priv/static/adminfe/static/js/chunk-1f27.d3c35fbc.js similarity index 83% rename from priv/static/adminfe/static/js/chunk-18e1.7f9c377c.js rename to priv/static/adminfe/static/js/chunk-1f27.d3c35fbc.js index 1921d0f64..14fa24f54 100644 --- a/priv/static/adminfe/static/js/chunk-18e1.7f9c377c.js +++ b/priv/static/adminfe/static/js/chunk-1f27.d3c35fbc.js @@ -1 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-18e1"],{BF41:function(t,a,i){},"UUO+":function(t,a,i){"use strict";i.r(a);var e=i("zGwZ"),s=i.n(e),r={name:"Page401",data:function(){return{errGif:s.a+"?"+ +new Date,ewizardClap:"https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646",dialogVisible:!1}},methods:{back:function(){this.$route.query.noGoBack?this.$router.push({path:"/dashboard"}):this.$router.go(-1)}}},n=(i("UrVv"),i("KHd+")),l=Object(n.a)(r,function(){var t=this,a=t.$createElement,i=t._self._c||a;return i("div",{staticClass:"errPage-container"},[i("el-button",{staticClass:"pan-back-btn",attrs:{icon:"arrow-left"},on:{click:t.back}},[t._v("返回")]),t._v(" "),i("el-row",[i("el-col",{attrs:{span:12}},[i("h1",{staticClass:"text-jumbo text-ginormous"},[t._v("Oops!")]),t._v("\n gif来源"),i("a",{attrs:{href:"https://zh.airbnb.com/",target:"_blank"}},[t._v("airbnb")]),t._v(" 页面\n "),i("h2",[t._v("你没有权限去该页面")]),t._v(" "),i("h6",[t._v("如有不满请联系你领导")]),t._v(" "),i("ul",{staticClass:"list-unstyled"},[i("li",[t._v("或者你可以去:")]),t._v(" "),i("li",{staticClass:"link-type"},[i("router-link",{attrs:{to:"/dashboard"}},[t._v("回首页")])],1),t._v(" "),i("li",{staticClass:"link-type"},[i("a",{attrs:{href:"https://www.taobao.com/"}},[t._v("随便看看")])]),t._v(" "),i("li",[i("a",{attrs:{href:"#"},on:{click:function(a){a.preventDefault(),t.dialogVisible=!0}}},[t._v("点我看图")])])])]),t._v(" "),i("el-col",{attrs:{span:12}},[i("img",{attrs:{src:t.errGif,width:"313",height:"428",alt:"Girl has dropped her ice cream."}})])],1),t._v(" "),i("el-dialog",{attrs:{visible:t.dialogVisible,title:"随便看"},on:{"update:visible":function(a){t.dialogVisible=a}}},[i("img",{staticClass:"pan-img",attrs:{src:t.ewizardClap}})])],1)},[],!1,null,"ab9be52c",null);l.options.__file="401.vue";a.default=l.exports},UrVv:function(t,a,i){"use strict";var e=i("BF41");i.n(e).a},zGwZ:function(t,a,i){t.exports=i.p+"static/img/401.089007e.gif"}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-1f27"],{BF41:function(t,a,i){},"UUO+":function(t,a,i){"use strict";i.r(a);var s=i("zGwZ"),e=i.n(s),r={name:"Page401",data:function(){return{errGif:e.a+"?"+ +new Date,ewizardClap:"https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646",dialogVisible:!1}},methods:{back:function(){this.$route.query.noGoBack?this.$router.push({path:"/dashboard"}):this.$router.go(-1)}}},n=(i("UrVv"),i("KHd+")),l=Object(n.a)(r,function(){var t=this,a=t.$createElement,i=t._self._c||a;return i("div",{staticClass:"errPage-container"},[i("el-button",{staticClass:"pan-back-btn",attrs:{icon:"arrow-left"},on:{click:t.back}},[t._v("返回")]),t._v(" "),i("el-row",[i("el-col",{attrs:{span:12}},[i("h1",{staticClass:"text-jumbo text-ginormous"},[t._v("Oops!")]),t._v("\n gif来源"),i("a",{attrs:{href:"https://zh.airbnb.com/",target:"_blank"}},[t._v("airbnb")]),t._v(" 页面\n "),i("h2",[t._v("你没有权限去该页面")]),t._v(" "),i("h6",[t._v("如有不满请联系你领导")]),t._v(" "),i("ul",{staticClass:"list-unstyled"},[i("li",[t._v("或者你可以去:")]),t._v(" "),i("li",{staticClass:"link-type"},[i("router-link",{attrs:{to:"/dashboard"}},[t._v("回首页")])],1),t._v(" "),i("li",{staticClass:"link-type"},[i("a",{attrs:{href:"https://www.taobao.com/"}},[t._v("随便看看")])]),t._v(" "),i("li",[i("a",{attrs:{href:"#"},on:{click:function(a){a.preventDefault(),t.dialogVisible=!0}}},[t._v("点我看图")])])])]),t._v(" "),i("el-col",{attrs:{span:12}},[i("img",{attrs:{src:t.errGif,width:"313",height:"428",alt:"Girl has dropped her ice cream."}})])],1),t._v(" "),i("el-dialog",{attrs:{visible:t.dialogVisible,title:"随便看"},on:{"update:visible":function(a){t.dialogVisible=a}}},[i("img",{staticClass:"pan-img",attrs:{src:t.ewizardClap}})])],1)},[],!1,null,"ab9be52c",null);l.options.__file="401.vue";a.default=l.exports},UrVv:function(t,a,i){"use strict";var s=i("BF41");i.n(s).a},zGwZ:function(t,a,i){t.exports=i.p+"static/img/401.089007e.gif"}}]); +//# sourceMappingURL=chunk-1f27.d3c35fbc.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-1f27.d3c35fbc.js.map b/priv/static/adminfe/static/js/chunk-1f27.d3c35fbc.js.map new file mode 100644 index 000000000..1ddd765a5 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-1f27.d3c35fbc.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/errorPage/401.vue?e7a2","webpack:///./src/views/errorPage/401.vue?6307","webpack:///src/views/errorPage/401.vue","webpack:///./src/views/errorPage/401.vue","webpack:///./src/views/errorPage/401.vue?2b76","webpack:///./src/assets/401_images/401.gif"],"names":["errorPage_401vue_type_script_lang_js_","name","data","errGif","_401_default","a","Date","ewizardClap","dialogVisible","methods","back","this","$route","query","noGoBack","$router","push","path","go","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","icon","on","click","_v","span","href","target","to","$event","preventDefault","src","width","height","alt","visible","title","update:visible","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_401_vue_vue_type_style_index_0_id_ab9be52c_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","module","exports","p"],"mappings":"sIAAA,yBCAwMA,GCgCxMC,KAAA,UACAC,KAAA,WACA,OACAC,OAAAC,EAAAC,EAAA,UAAAC,KACAC,YAAA,kEACAC,eAAA,IAGAC,SACAC,KADA,WAEAC,KAAAC,OAAAC,MAAAC,SACAH,KAAAI,QAAAC,MAAAC,KAAA,eAEAN,KAAAI,QAAAG,IAAA,8BCrCAC,EAAgBC,OAAAC,EAAA,EAAAD,CACdpB,EHTF,WAA0B,IAAAsB,EAAAX,KAAaY,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,sBAAgCF,EAAA,aAAkBE,YAAA,eAAAC,OAAkCC,KAAA,cAAoBC,IAAKC,MAAAT,EAAAZ,QAAkBY,EAAAU,GAAA,QAAAV,EAAAU,GAAA,KAAAP,EAAA,UAAAA,EAAA,UAAuDG,OAAOK,KAAA,MAAWR,EAAA,MAAWE,YAAA,8BAAwCL,EAAAU,GAAA,WAAAV,EAAAU,GAAA,iBAAAP,EAAA,KAAoDG,OAAOM,KAAA,yBAAAC,OAAA,YAAmDb,EAAAU,GAAA,YAAAV,EAAAU,GAAA,eAAAP,EAAA,MAAAH,EAAAU,GAAA,eAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAAH,EAAAU,GAAA,gBAAAV,EAAAU,GAAA,KAAAP,EAAA,MAA2IE,YAAA,kBAA4BF,EAAA,MAAAH,EAAAU,GAAA,aAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAoDE,YAAA,cAAwBF,EAAA,eAAoBG,OAAOQ,GAAA,gBAAmBd,EAAAU,GAAA,aAAAV,EAAAU,GAAA,KAAAP,EAAA,MAA2CE,YAAA,cAAwBF,EAAA,KAAUG,OAAOM,KAAA,6BAAkCZ,EAAAU,GAAA,YAAAV,EAAAU,GAAA,KAAAP,EAAA,MAAAA,EAAA,KAAkDG,OAAOM,KAAA,KAAWJ,IAAKC,MAAA,SAAAM,GAAyBA,EAAAC,iBAAwBhB,EAAAd,eAAA,MAAyBc,EAAAU,GAAA,gBAAAV,EAAAU,GAAA,KAAAP,EAAA,UAAkDG,OAAOK,KAAA,MAAWR,EAAA,OAAYG,OAAOW,IAAAjB,EAAAnB,OAAAqC,MAAA,MAAAC,OAAA,MAAAC,IAAA,wCAAuF,GAAApB,EAAAU,GAAA,KAAAP,EAAA,aAAoCG,OAAOe,QAAArB,EAAAd,cAAAoC,MAAA,OAA0Cd,IAAKe,iBAAA,SAAAR,GAAkCf,EAAAd,cAAA6B,MAA2BZ,EAAA,OAAYE,YAAA,UAAAC,OAA6BW,IAAAjB,EAAAf,kBAAuB,QGYl4C,EACA,KACA,WACA,MAIAY,EAAA2B,QAAAC,OAAA,UACeC,EAAA,QAAA7B,6CCpBf,IAAA8B,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAA6e,wBCA7eG,EAAAC,QAAiBH,EAAAI,EAAuB","file":"static/js/chunk-1f27.d3c35fbc.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"errPage-container\"},[_c('el-button',{staticClass:\"pan-back-btn\",attrs:{\"icon\":\"arrow-left\"},on:{\"click\":_vm.back}},[_vm._v(\"返回\")]),_vm._v(\" \"),_c('el-row',[_c('el-col',{attrs:{\"span\":12}},[_c('h1',{staticClass:\"text-jumbo text-ginormous\"},[_vm._v(\"Oops!\")]),_vm._v(\"\\n gif来源\"),_c('a',{attrs:{\"href\":\"https://zh.airbnb.com/\",\"target\":\"_blank\"}},[_vm._v(\"airbnb\")]),_vm._v(\" 页面\\n \"),_c('h2',[_vm._v(\"你没有权限去该页面\")]),_vm._v(\" \"),_c('h6',[_vm._v(\"如有不满请联系你领导\")]),_vm._v(\" \"),_c('ul',{staticClass:\"list-unstyled\"},[_c('li',[_vm._v(\"或者你可以去:\")]),_vm._v(\" \"),_c('li',{staticClass:\"link-type\"},[_c('router-link',{attrs:{\"to\":\"/dashboard\"}},[_vm._v(\"回首页\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"link-type\"},[_c('a',{attrs:{\"href\":\"https://www.taobao.com/\"}},[_vm._v(\"随便看看\")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.dialogVisible=true}}},[_vm._v(\"点我看图\")])])])]),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":12}},[_c('img',{attrs:{\"src\":_vm.errGif,\"width\":\"313\",\"height\":\"428\",\"alt\":\"Girl has dropped her ice cream.\"}})])],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.dialogVisible,\"title\":\"随便看\"},on:{\"update:visible\":function($event){_vm.dialogVisible=$event}}},[_c('img',{staticClass:\"pan-img\",attrs:{\"src\":_vm.ewizardClap}})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./401.vue?vue&type=template&id=ab9be52c&scoped=true&\"\nimport script from \"./401.vue?vue&type=script&lang=js&\"\nexport * from \"./401.vue?vue&type=script&lang=js&\"\nimport style0 from \"./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ab9be52c\",\n null\n \n)\n\ncomponent.options.__file = \"401.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./401.vue?vue&type=style&index=0&id=ab9be52c&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"static/img/401.089007e.gif\";"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-2325.154a537b.js b/priv/static/adminfe/static/js/chunk-2325.154a537b.js deleted file mode 100644 index 3fe9add82..000000000 --- a/priv/static/adminfe/static/js/chunk-2325.154a537b.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-2325"],{"/eX4":function(s,t,i){"use strict";i.r(t);var n=[function(){var s=this.$createElement,t=this._self._c||s;return t("div",{staticClass:"pic-404"},[t("img",{staticClass:"pic-404__parent",attrs:{src:i("o2sD"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child left",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child mid",attrs:{src:i("Jvyq"),alt:"404"}}),this._v(" "),t("img",{staticClass:"pic-404__child right",attrs:{src:i("Jvyq"),alt:"404"}})])},function(){var s=this.$createElement,t=this._self._c||s;return t("div",{staticClass:"bullshit__info"},[this._v("版权所有\n "),t("a",{staticClass:"link-type",attrs:{href:"https://wallstreetcn.com",target:"_blank"}},[this._v("华尔街见闻")])])}],r={name:"Page404",computed:{message:function(){return"网管说这个页面你不能进......"}}},l=(i("Y8Md"),i("KHd+")),e=Object(l.a)(r,function(){var s=this,t=s.$createElement,i=s._self._c||t;return i("div",{staticClass:"wscn-http404-container"},[i("div",{staticClass:"wscn-http404"},[s._m(0),s._v(" "),i("div",{staticClass:"bullshit"},[i("div",{staticClass:"bullshit__oops"},[s._v("OOPS!")]),s._v(" "),s._m(1),s._v(" "),i("div",{staticClass:"bullshit__headline"},[s._v(s._s(s.message))]),s._v(" "),i("div",{staticClass:"bullshit__info"},[s._v("请检查您输入的网址是否正确,请点击以下按钮返回主页或者发送错误报告")]),s._v(" "),i("router-link",{staticClass:"bullshit__return-home",attrs:{to:"/"}},[s._v("返回首页")])],1)])])},n,!1,null,"b8c8aa9a",null);e.options.__file="404.vue";t.default=e.exports},Jvyq:function(s,t){s.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAACKCAYAAABW3IOxAAAAAXNSR0IArs4c6QAAElhJREFUeAHtnXuQHMV9x7tndvdOQkgCWZKxkITEQ5YB87AVCT9iEqgyTsXlyA42QVRcScXYzvOPkKeJLSrOy8RVxMSVBNuVqrhIxS7KJk5BKlWpQKiKX4hgwOII6CzLAk6H0Pt0e/uY6Xx+p7vT3Gl2b2e3Z2d2t7vqdzuP7l//+tvf6+75dU+PVi5kioAxZl01UDtMEG43Wu/AmOuUUYeVVqNKmVGjvX2+HAdqX6mkfqS1Pp2pwQkz1wnju+gdIACZlpTr6npU7FChETIh5uJkKvWYPkO+fUp7oyZUowWt9hWLahTyHU2mK/3YjmApYjxlzGWmSuukQ4iktwP2NZCsmFqWWh9D96hWZp+nvb2lgvompNubWn4tKHYEawGkVqJAnBWVutpmZlono2mdjFnVSlqbcTytnynSpHlaXYPeV5F3QLIDNvNIossRLAlaM3Ehk1etqitDIZGidTKMnbTayvVM8IRAZQj1dNHXF9N9blhQpBc4f2dW3WcmgCwAIPenEGdNJVDbGYhDpOmB+DaunZ+14VrpV31fjxb96dZqeRN7vs29m4WITeKkcssRbAGsEKdUq6lrQ7o6M9M6GWU2LYiW6Snd4HO+p8sFX70dQ7wWjfkW8T4IyYIW41uJNvAEKxuzUQbiSocMwqdbp+sh2ZAVdC0qgRhVur8nS75+A79b2lT9AHo+3mbatpINHMEgz/JKqH7ZmPBtJtA3J3cTtIVz+4m0PsyYfS8D9ytRsrp9RXMpd0Oye+bOUj4YOIJNVsJvQKqdgitAh8aocQbIr/P0d4pLNbmMDOPsXKk9tSYMzUrOux6wbaTg6SN0g9vI3HaLeif6v9SNQg0UwSZr5ndVGP51EmCpiJPEH4OAxwFLBskyhilyvozBzyp+L5JxWxKdjeKSl+j+Xqmgl0D66xrFs3Bd8tlJfv9mQVdTFQNDMMj1Tm3M45Ch0BSRhDeppBqtnXjXZXrnlApV1TAKxwe2hHsreEBYw/015NsYazzwdIM/KBT0ZURa6GZIaFHL0eWf5SZs/E7LKdqI2LjQbSjLaxIqd3W5ap6ma1yXiY2MowB6nLyPQbZJ7dE1Kzz6Ri2hG6zMdINZuD2OYNO7IJn4ylIJfU8wyOVN1cx/8MuAPj+BSq0PFabnFddnbNUB8r8Be8bSsKNVH0oaeXdF51Q13J03cknB8WM9TUeaNbnElI3Iv4NRM0etxGsr9HULRsv1XoAT8HJVToZozw8V9VvaqrH0Ej2G6ltoyao2s+jbFmzSmPX4IB7MG7mowIlSUa+xWYmWdP0Mev7JNl59STBAKqqa+XoWqxkWq+yCr1+iOX3DYvEyuv8R8r3bZt59SbByDV+XmV7QZxOrjnUx7tpT8FL1b3VsIwq22lAyq6PvCDZZMbfy+P/bswXMz68ew4FqtfLyU7bGlvQVwVhBeoXW5iuNi5vNHcZdhkH9cXI/LxsLssu1bwjGuGuJqZmH+M3CYdm0Bnlp49tM/Qxc6yWgWJ02aYpyyjenauHfMXF9dcrZJFZP6/UiKyG2J07YJwn6ogVjGujXINdH81YnkGuKrlFWQvTNP3JSjHueYNWquZY5xvuTFrwb8Zln3INLQjzlAxt6n2BBeBdPjaxm0CZPtYg9e5jEfleebMrClp5vuk9Vwl1CLqZf9nuePljy1YTvqxKku4iB9eUM+m0v1lu8nrR+fbioB7rlmgWp5wkmBYFEOjBmcxCqzbX6bNFkaao+4fvmh3RVRwu+Z3iau5CLl5LggrOx7B/h7xpF68AO7KOI9gXBogWKHrPmakU9UG+rB/SetWD6Fq1dQEv3Eu8QjtHCVYueWso4aT1xraxsQPcTEPmno3YM8nFfEyyuYmnt/CAwlweBujx6n0WARwqe9+OCF55kOodDbzXE20z8lpdD02LuZ42X7D3hwgwCA0ewRjVvQrOqFgar5K2PMyGQl0JqdK//xxzi6wzYA1qmFazhugTSrZiNNfsrcSHXBOebZq+53wH2z7RS+RCpWAvMFnrXLdPvG80kohscLxW8l30dln3PG+ZR/E2QcATy3dSK3kGK41qwNmqbV9nWTlWDtWeSnhnbrT6/kNclOG2U0F6SnveD2YOiY03unzUGQkewGFDcJXsIOILZw9JpikHAESwGFHfJHgKOYPawdJpiEHAEiwHFXbKHgCOYPSydphgEHMFiQHGX7CHgCGYPS6cpBgFHsBhQ3CV7CDiC2cPSaYpBwE1vxIAy4Jd+gUn+V1rA4Ani3CHr65rFdQRrhs5g3ltCsUUWC7cRQbYX/XiziK6LbIaOu7cYAnfS2t3TLJIjWDN03L1WEPg0JPtko4iOYI2QcdeTIPC3kOxDcQkcweJQcdeSIiA8ks3+blyY0BFsISLuvF0E5P3ThyGZfEZwLjiCzUHhDiwgIC/DyJ64cy++OIJZQNWpmIfARZzJtvHT31VyBJuHjTuxhIC8c/ooJJPP7bjgEEgFAfmW5UOOYKlg65TOIHCTI5jjQqoIOIKlCq9T7gjmOJAqAo5gqcLrlDuCOQ6kikBPEww/yw2+7z3FvlynU0XJKW8bgZ5bcAipZDHcLyG/gVy/+owrr16tq2fLNXO0UgtWhopPtmSxN2vb1dC/CdnErzcCxLoUSz+B/Cpy4SJWlys1M1KuhyeqdcP3svWbSe8vkqaj22zfFPqe6ukeoSMA4hPXc00wSCEVdgsirdX7kLbsZYfWE3yc9AW+fltmQ7mLjNJXoLstXdgQGxzBYmHJJ8GofGmhfgX5dWRzrOkdXOSrIIf5OsiLtHB1NgneQH6bOlA3ndQRLBbBfBGMipYNdKW1kjFWKy8exJYq6cXQqJch3GilFupqIIQ2FyfV4QgWi1j2BINUsovzrchvIjtizezyRfbb38cDw0E+sFXgeAs2LvoJZEew2ErKjmBU2gZMkleePoZMrx2KNTH7i2EtVCO0cIdo4ZaGodrKnvorF5rlCLYQkenz7hMMYt1M1tINvh9J9cluuoj2/9T4msjeybo5DOFWmFBdCeHOcwSLBbo7BINUy8n+o4gQa0usKb17cbJSV4+VCurneCy1+mTau5DMWZ4uwSDWVWQlpLoDWTaXbf8cvERR5FPJ2/qnSFZLUrfuyYdUonMnIsR6j1Vz86PsJ5jyMnID4lqtJvViDRyIJYv975yRNzXJs5dvjWO8tFrytGv9n7OXgWlg+2sdEwxivRvl0lp9ECk2yKjXL0s3+CwiXWHX/HM9DNppbL8PubdtgkGsN/INn78s+upnUbS+h8FoZroAtQe5DpEHFReaI1Dl9j8gn2Vbp9ckatsEK1eDrzHl8mEUhSj5AR+D4qOf6gp0in+r14MA9T1kK+K+QbR4bcoeYV9FdsOHA9HobRFsqm7eFwbho1FFcoxymUF+Zubzd/Ju3MaFcXJ+HmLfd5FLkH4dR1I0q+EbaLubuh+J05qYYHSNS6eqZi/OxUviFM5emyHbs0I2vqF9KRk1jT+bLsPf75P3amRThjb0Utb/ibF/RD3LEKJhSEywqUpwL//mdzXUGHNDyMaSmef4uOdhutG8ke1pTF6K9JsDOKYmrFySoYMQ67FWtCUiWLVqrgmU2UMr1tEjOsb9kJZtHLJtwgDry3FaKThx9iIydnhri/EHPZrgJV3hw0mAaJlgkMpjhcF3WIr8U0kyWCwuBu+dIdslXSLbPmwSt4O82u7C4gjsJ8pnkAepKxmjJgotE4xx12+FJvxCIu0JI1OAEcg2Rsu2EcNkibTNcBBlryDbkZbLbdOAHtN1CHs/izxAvZz9lHnCQrQENK3XOpYcj/B7fkL9bUenUPIx9lch24YOySb+GPG+C7E66trbLkxvJZTW/XPI31AHk52a3hLBJishj6JG5hczCRT0Rcj2CmRbj8GXtWiEAPUcsg0ZbjHNIEcTMkkP9VfgLdhZCYsSrFI3HwiC8GEruVlQQuH3QbaDBQ+y6ViyCVBPIdciXWtxLRQtKxXS/T2AiPddukWroSnB6BKXMfZ6Hp9XLqeCeOF2lFfFDhZ8vQ6ybQQZ8WWJ932VVZT6U5kM2B9EPgOxZCCfSmhKsMlqcJ8y6ndSydmiUgAKhor6dQqz1qLaflb1rxTuU+AmrodUQ0OC4fN6Oz6v79KK5X5Zs+/rl0u+TvwmUKrI5lP5f2HWH0MscZZ2JcQSTEiFz+tJfF6yiiDXAbAmhou6H1fL2sT9SZQJsWR6p6sh9rG9XKdb7AFyCVJFv30fTVeRziYzmYAW77tMSGcSzmnByvI6WY2BvTHnZWJRgkw1c5vDBb06QZJBiXqAgu5Gvgq5ZDoss3BOC2aq5ov4vHJPLkGMcZds/O/CWQTEqfxnyN9DLFnTlnmYRzB8Xr+Iz+vnM7eqBQM8Tx/ytHpjC1EHIcoJCnkvch/EOp2nAs91kXSJK3h7mT57+uWNPNl4ji2AWMMtUZwz/pwYA3OhTEnvR8T7fjSPpZ5rwdiH4S8wUN4Myn3Ai38Kcl2Ye0PTM1C8719B/hRivZpeNp1rnm4E8HntwOf1P7RiXucq09UAoCdxSyxPN5fcajdY9i/In4DDaG6tjBhWgFQFVko80AvkErtxSwxF7B+kw/+msHdBrKZLlPMGiDdVV3dBrqvzZlicPbgljjD3OGgEE1/WByDWjb1GLqlDjy3+buR1oCNxFZqna4Brhnw9SJPYsrLhE8jVlP1beaqLJLboseM1tizV1VLB+9+SH0762mM1Qv6eJFkxcYzu8YIkhevRuOJm+DzyOYiVK5dDO3ieIVgkJYUKqcxn8JAfw890GWTbELmdySE2VRjY93vXKB73f0RkAG99XVYmFUem5xBsoSG4BEaGCvpQ0ffWsy4MwnU/FAteGTuWdD/nruX4CDn9PsR6vms5dimjRQkWtcMvePuHff0TXqRdw5uOsrAv9eBpfQqnar+uTH0KAOXJ8PHUgcwog0QEi9rIVM3YkqLH8mVzASR4S1pujqGiZ+iq+81p/2OwvBv5Z8glvq2+DW0TLIqI53tHadle4KWMpZDhKvGtRe+3e8za+xOlQl9NaB8Diz9H7odYlXZx6aV0VggWLTBPoRNF34yUitBOs0Fum98MogJCxn40jlHtPXssKxu+iMjUjpBsYIJ1gkWRgx7VkqefZ1lNnXHbVsjW8jIgnmQncUssjerrwWPp/r6OyF4O+3vQ/o5NTpVgUeukRYIwI7gbJmnZ5FtBDddyEXeKeMPR9D14LFM7v0dZnuxB262Z3DWCLbQYx+5LeOaPez6bnxgzz0PPvYApody/bLKwTDPnMrXzhxCrZ73vDcrV1uXMCBa1tljQB0u+GmfItR7CLWPs1XJXGtWT8bE4R+9BvgS5Ml2mnDEO87LPBcGiFp0/7KvzhnpqZD87tXMvxJqIlsUd53AzEGYLqJeeIFhfTu3Y/qew4q+ybVQP6OvbqR3b2DuCJUNUpnbkyfCxZMkGN3bul0jnpGoOYMcdyDZHrmQ14lqw5njJPlkytfMFiDUQUzvN4Uh+1xEsHrPZqR3ZMyuXr4PFm52/q45g8+tk4Kd25sPR+Zkj2FkMn+BQ1mYN9NTOWTjsHDmCKfUCUP4BxHJTO3Y4NU/LID9FjoPEJ5GrHLnmccLqySC2YG5qxyqFmisrsBp5gumZQdghcHZq59O0WGPNYXF3bSHgrV3hrwXwXcgjSNtfdLBlUEp6HkXvNZTvY4gjV0ogx6mdN6t88qRZVQ7DDxsd7mLC+R0sCpx3P06B7WvLhj3W61gbGrqpHdsVlFBfQwIdK5uNlUp4u1Lh7TiHrkqot+3olggmUzufQvr+rZ22ge5SwoYEi+Y/PmHequr1XaHSt6X9pneHBHNTO9GKy8FxSwSbtVO6zMMT6t2hCW7nC6O3stTZ+iZwbRLMTe3MVlLOfhMRLGo7ZCuOnwpuYX3gLsj2flo2K28AJSTY7NSO7AH/o6h97jgfCLRNsKj5r/FNI3My2MnHb3ah8GbI1/YLGwkIJlM7sjbr+1Fb3HG+ELBCsGiRDp0ya1QYfmT64cCoHdF7rRy3QDA3tdMKkDmJY51g0XKNHzebcXnwFIrbw6g3R+81Om5CMJna2Y18mVar3ii9u54vBFIlWLSoh0+b6+u1+u3MHNzGzMG66L3ocQzB5PuPn0dkQzb31k4UrB447hrBZrFgfOYdmqi/RwcaZ676EGRbOXtPfiMEc1M7UWDccXIEINvQ+Mn6zrHj9YfGTtTLsp3nqamAy+YR5MrkGl0Kh0ADBI4Ys/zUVPj4sdPBPQ2iuMsOAYeAQ2A+Av8Pby5Qwk3kUm8AAAAASUVORK5CYII="},SRIT:function(s,t,i){},Y8Md:function(s,t,i){"use strict";var n=i("SRIT");i.n(n).a},o2sD:function(s,t,i){s.exports=i.p+"static/img/404.a57b6f3.png"}}]); \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-0e18.208cd826.js b/priv/static/adminfe/static/js/chunk-3d1c.20303ef7.js similarity index 96% rename from priv/static/adminfe/static/js/chunk-0e18.208cd826.js rename to priv/static/adminfe/static/js/chunk-3d1c.20303ef7.js index eb7100ecd..2128c604d 100644 --- a/priv/static/adminfe/static/js/chunk-0e18.208cd826.js +++ b/priv/static/adminfe/static/js/chunk-3d1c.20303ef7.js @@ -1 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-0e18"],{"4bFr":function(t,e,s){"use strict";s.r(e);var a={name:"UsersShow",data:function(){return{showPrivate:!1}},computed:{loading:function(){return this.$store.state.userProfile.loading},user:function(){return this.$store.state.userProfile.user},statuses:function(){return this.$store.state.userProfile.statuses}},mounted:function(){this.$store.dispatch("FetchData",{id:this.$route.params.id,godmode:!1})},methods:{optionPercent:function(t,e){var s=t.options.reduce(function(t,e){return t+e.votes_count},0);return 0===s?0:+(e.votes_count/s*100).toFixed(1)},createdAtLocaleString:function(t){var e=new Date(t);return"".concat(e.toLocaleDateString()," ").concat(e.toLocaleTimeString())},onTogglePrivate:function(){console.log(this.showPrivate),this.$store.dispatch("FetchData",{id:this.$route.params.id,godmode:this.showPrivate})}}},r=(s("QG2t"),s("KHd+")),l=Object(r.a)(a,function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.loading?t._e():s("main",[s("header",[s("el-avatar",{attrs:{src:t.user.avatar,size:"large"}}),t._v(" "),s("h1",[t._v(t._s(t.user.display_name))])],1),t._v(" "),s("el-row",[s("el-col",{attrs:{span:6}},[s("div",{staticClass:"el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition el-table--medium"},[s("table",{staticClass:"el-table__body"},[s("tbody",[s("tr",{staticClass:"el-table__row"},[s("td",{staticClass:"name-col"},[t._v("ID")]),t._v(" "),s("td",{staticClass:"value-col"},[t._v("\n "+t._s(t.user.id)+"\n ")])]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.tags")))]),t._v(" "),s("td",[t._l(t.user.tags,function(e){return s("el-tag",{key:e},[t._v(t._s(e))])}),t._v(" "),0===t.user.tags.length?s("span",[t._v("None")]):t._e()],2)]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.moderator")))]),t._v(" "),s("td",[t.user.roles.moderator?s("el-tag",{attrs:{type:"success"}},[s("i",{staticClass:"el-icon-check"})]):t._e(),t._v(" "),t.user.roles.moderator?t._e():s("el-tag",{attrs:{type:"danger"}},[s("i",{staticClass:"el-icon-error"})])],1)]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.admin")))]),t._v(" "),s("td",[t.user.roles.admin?s("el-tag",{attrs:{type:"success"}},[s("i",{staticClass:"el-icon-check"})]):t._e(),t._v(" "),t.user.roles.admin?t._e():s("el-tag",{attrs:{type:"danger"}},[s("i",{staticClass:"el-icon-error"})])],1)]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.local")))]),t._v(" "),s("td",[t.user.local?s("el-tag",{attrs:{type:"success"}},[s("i",{staticClass:"el-icon-check"})]):t._e(),t._v(" "),t.user.local?t._e():s("el-tag",{attrs:{type:"danger"}},[s("i",{staticClass:"el-icon-error"})])],1)]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.deactivated")))]),t._v(" "),s("td",[t.user.deactivated?s("el-tag",{attrs:{type:"success"}},[s("i",{staticClass:"el-icon-check"})]):t._e(),t._v(" "),t.user.deactivated?t._e():s("el-tag",{attrs:{type:"danger"}},[s("i",{staticClass:"el-icon-error"})])],1)]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.nickname")))]),t._v(" "),s("td",[t._v("\n "+t._s(t.user.nickname)+"\n ")])])])])])]),t._v(" "),s("el-row",{staticClass:"row-bg",attrs:{type:"flex",justify:"space-between"}},[s("el-col",{attrs:{span:18}},[s("h2",[t._v(t._s(t.$t("userProfile.recentStatuses")))])]),t._v(" "),s("el-col",{staticClass:"show-private",attrs:{span:6}},[s("el-checkbox",{on:{change:t.onTogglePrivate},model:{value:t.showPrivate,callback:function(e){t.showPrivate=e},expression:"showPrivate"}},[t._v("\n "+t._s(t.$t("userProfile.showPrivateStatuses"))+"\n ")])],1)],1),t._v(" "),s("el-col",{attrs:{span:18}},[s("el-timeline",{staticClass:"statuses"},t._l(t.statuses,function(e){return s("el-timeline-item",{key:e.id,attrs:{timestamp:t.createdAtLocaleString(e.created_at)}},[s("el-card",[e.spoiler_text?s("strong",[t._v(t._s(e.spoiler_text))]):t._e(),t._v(" "),e.content?s("p",{domProps:{innerHTML:t._s(e.content)}}):t._e(),t._v(" "),e.poll?s("div",{staticClass:"poll"},[s("ul",t._l(e.poll.options,function(a,r){return s("li",{key:r},[t._v("\n "+t._s(a.title)+"\n "),s("el-progress",{attrs:{percentage:t.optionPercent(e.poll,a)}})],1)}),0)]):t._e(),t._v(" "),t._l(e.media_attachments,function(t,e){return s("div",{key:e,staticClass:"image"},[s("img",{attrs:{src:t.preview_url}})])})],2)],1)}),1)],1)],1)],1)},[],!1,null,"71c7ded0",null);l.options.__file="show.vue";e.default=l.exports},QG2t:function(t,e,s){"use strict";var a=s("R7Mx");s.n(a).a},R7Mx:function(t,e,s){}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-3d1c"],{"4bFr":function(t,e,s){"use strict";s.r(e);var a={name:"UsersShow",data:function(){return{showPrivate:!1}},computed:{loading:function(){return this.$store.state.userProfile.loading},user:function(){return this.$store.state.userProfile.user},statuses:function(){return this.$store.state.userProfile.statuses}},mounted:function(){this.$store.dispatch("FetchData",{id:this.$route.params.id,godmode:!1})},methods:{optionPercent:function(t,e){var s=t.options.reduce(function(t,e){return t+e.votes_count},0);return 0===s?0:+(e.votes_count/s*100).toFixed(1)},createdAtLocaleString:function(t){var e=new Date(t);return"".concat(e.toLocaleDateString()," ").concat(e.toLocaleTimeString())},onTogglePrivate:function(){console.log(this.showPrivate),this.$store.dispatch("FetchData",{id:this.$route.params.id,godmode:this.showPrivate})}}},r=(s("QG2t"),s("KHd+")),l=Object(r.a)(a,function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.loading?t._e():s("main",[s("header",[s("el-avatar",{attrs:{src:t.user.avatar,size:"large"}}),t._v(" "),s("h1",[t._v(t._s(t.user.display_name))])],1),t._v(" "),s("el-row",[s("el-col",{attrs:{span:6}},[s("div",{staticClass:"el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition el-table--medium"},[s("table",{staticClass:"el-table__body"},[s("tbody",[s("tr",{staticClass:"el-table__row"},[s("td",{staticClass:"name-col"},[t._v("ID")]),t._v(" "),s("td",{staticClass:"value-col"},[t._v("\n "+t._s(t.user.id)+"\n ")])]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.tags")))]),t._v(" "),s("td",[t._l(t.user.tags,function(e){return s("el-tag",{key:e},[t._v(t._s(e))])}),t._v(" "),0===t.user.tags.length?s("span",[t._v("None")]):t._e()],2)]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.moderator")))]),t._v(" "),s("td",[t.user.roles.moderator?s("el-tag",{attrs:{type:"success"}},[s("i",{staticClass:"el-icon-check"})]):t._e(),t._v(" "),t.user.roles.moderator?t._e():s("el-tag",{attrs:{type:"danger"}},[s("i",{staticClass:"el-icon-error"})])],1)]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.admin")))]),t._v(" "),s("td",[t.user.roles.admin?s("el-tag",{attrs:{type:"success"}},[s("i",{staticClass:"el-icon-check"})]):t._e(),t._v(" "),t.user.roles.admin?t._e():s("el-tag",{attrs:{type:"danger"}},[s("i",{staticClass:"el-icon-error"})])],1)]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.local")))]),t._v(" "),s("td",[t.user.local?s("el-tag",{attrs:{type:"success"}},[s("i",{staticClass:"el-icon-check"})]):t._e(),t._v(" "),t.user.local?t._e():s("el-tag",{attrs:{type:"danger"}},[s("i",{staticClass:"el-icon-error"})])],1)]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.deactivated")))]),t._v(" "),s("td",[t.user.deactivated?s("el-tag",{attrs:{type:"success"}},[s("i",{staticClass:"el-icon-check"})]):t._e(),t._v(" "),t.user.deactivated?t._e():s("el-tag",{attrs:{type:"danger"}},[s("i",{staticClass:"el-icon-error"})])],1)]),t._v(" "),s("tr",{staticClass:"el-table__row"},[s("td",[t._v(t._s(t.$t("userProfile.nickname")))]),t._v(" "),s("td",[t._v("\n "+t._s(t.user.nickname)+"\n ")])])])])])]),t._v(" "),s("el-row",{staticClass:"row-bg",attrs:{type:"flex",justify:"space-between"}},[s("el-col",{attrs:{span:18}},[s("h2",[t._v(t._s(t.$t("userProfile.recentStatuses")))])]),t._v(" "),s("el-col",{staticClass:"show-private",attrs:{span:6}},[s("el-checkbox",{on:{change:t.onTogglePrivate},model:{value:t.showPrivate,callback:function(e){t.showPrivate=e},expression:"showPrivate"}},[t._v("\n "+t._s(t.$t("userProfile.showPrivateStatuses"))+"\n ")])],1)],1),t._v(" "),s("el-col",{attrs:{span:18}},[s("el-timeline",{staticClass:"statuses"},t._l(t.statuses,function(e){return s("el-timeline-item",{key:e.id,attrs:{timestamp:t.createdAtLocaleString(e.created_at)}},[s("el-card",[e.spoiler_text?s("strong",[t._v(t._s(e.spoiler_text))]):t._e(),t._v(" "),e.content?s("p",{domProps:{innerHTML:t._s(e.content)}}):t._e(),t._v(" "),e.poll?s("div",{staticClass:"poll"},[s("ul",t._l(e.poll.options,function(a,r){return s("li",{key:r},[t._v("\n "+t._s(a.title)+"\n "),s("el-progress",{attrs:{percentage:t.optionPercent(e.poll,a)}})],1)}),0)]):t._e(),t._v(" "),t._l(e.media_attachments,function(t,e){return s("div",{key:e,staticClass:"image"},[s("img",{attrs:{src:t.preview_url}})])})],2)],1)}),1)],1)],1)],1)},[],!1,null,"71c7ded0",null);l.options.__file="show.vue";e.default=l.exports},QG2t:function(t,e,s){"use strict";var a=s("R7Mx");s.n(a).a},R7Mx:function(t,e,s){}}]); +//# sourceMappingURL=chunk-3d1c.20303ef7.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-3d1c.20303ef7.js.map b/priv/static/adminfe/static/js/chunk-3d1c.20303ef7.js.map new file mode 100644 index 000000000..b3d1eb3ae --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-3d1c.20303ef7.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/users/show.vue?d2ff","webpack:///./src/views/users/show.vue?ac8b","webpack:///src/views/users/show.vue","webpack:///./src/views/users/show.vue","webpack:///./src/views/users/show.vue?4a6e"],"names":["users_showvue_type_script_lang_js_","name","data","showPrivate","computed","loading","this","$store","state","userProfile","user","statuses","mounted","dispatch","id","$route","params","godmode","methods","optionPercent","poll","pollOption","allVotes","options","reduce","acc","option","votes_count","toFixed","createdAtLocaleString","createdAt","date","Date","concat","toLocaleDateString","toLocaleTimeString","onTogglePrivate","console","log","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","_e","attrs","src","avatar","size","_v","_s","display_name","span","staticClass","$t","_l","tag","key","tags","length","roles","type","moderator","admin","local","deactivated","nickname","justify","on","change","model","value","callback","$$v","expression","status","timestamp","created_at","spoiler_text","domProps","innerHTML","content","index","title","percentage","attachment","preview_url","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_show_vue_vue_type_style_index_0_id_71c7ded0_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n"],"mappings":"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","file":"static/js/chunk-3d1c.20303ef7.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('main',[_c('header',[_c('el-avatar',{attrs:{\"src\":_vm.user.avatar,\"size\":\"large\"}}),_vm._v(\" \"),_c('h1',[_vm._v(_vm._s(_vm.user.display_name))])],1),_vm._v(\" \"),_c('el-row',[_c('el-col',{attrs:{\"span\":6}},[_c('div',{staticClass:\"el-table el-table--fit el-table--enable-row-hover el-table--enable-row-transition el-table--medium\"},[_c('table',{staticClass:\"el-table__body\"},[_c('tbody',[_c('tr',{staticClass:\"el-table__row\"},[_c('td',{staticClass:\"name-col\"},[_vm._v(\"ID\")]),_vm._v(\" \"),_c('td',{staticClass:\"value-col\"},[_vm._v(\"\\n \"+_vm._s(_vm.user.id)+\"\\n \")])]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.tags')))]),_vm._v(\" \"),_c('td',[_vm._l((_vm.user.tags),function(tag){return _c('el-tag',{key:tag},[_vm._v(_vm._s(tag))])}),_vm._v(\" \"),(_vm.user.tags.length === 0)?_c('span',[_vm._v(\"None\")]):_vm._e()],2)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.moderator')))]),_vm._v(\" \"),_c('td',[(_vm.user.roles.moderator)?_c('el-tag',{attrs:{\"type\":\"success\"}},[_c('i',{staticClass:\"el-icon-check\"})]):_vm._e(),_vm._v(\" \"),(!_vm.user.roles.moderator)?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_c('i',{staticClass:\"el-icon-error\"})]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.admin')))]),_vm._v(\" \"),_c('td',[(_vm.user.roles.admin)?_c('el-tag',{attrs:{\"type\":\"success\"}},[_c('i',{staticClass:\"el-icon-check\"})]):_vm._e(),_vm._v(\" \"),(!_vm.user.roles.admin)?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_c('i',{staticClass:\"el-icon-error\"})]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.local')))]),_vm._v(\" \"),_c('td',[(_vm.user.local)?_c('el-tag',{attrs:{\"type\":\"success\"}},[_c('i',{staticClass:\"el-icon-check\"})]):_vm._e(),_vm._v(\" \"),(!_vm.user.local)?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_c('i',{staticClass:\"el-icon-error\"})]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.deactivated')))]),_vm._v(\" \"),_c('td',[(_vm.user.deactivated)?_c('el-tag',{attrs:{\"type\":\"success\"}},[_c('i',{staticClass:\"el-icon-check\"})]):_vm._e(),_vm._v(\" \"),(!_vm.user.deactivated)?_c('el-tag',{attrs:{\"type\":\"danger\"}},[_c('i',{staticClass:\"el-icon-error\"})]):_vm._e()],1)]),_vm._v(\" \"),_c('tr',{staticClass:\"el-table__row\"},[_c('td',[_vm._v(_vm._s(_vm.$t('userProfile.nickname')))]),_vm._v(\" \"),_c('td',[_vm._v(\"\\n \"+_vm._s(_vm.user.nickname)+\"\\n \")])])])])])]),_vm._v(\" \"),_c('el-row',{staticClass:\"row-bg\",attrs:{\"type\":\"flex\",\"justify\":\"space-between\"}},[_c('el-col',{attrs:{\"span\":18}},[_c('h2',[_vm._v(_vm._s(_vm.$t('userProfile.recentStatuses')))])]),_vm._v(\" \"),_c('el-col',{staticClass:\"show-private\",attrs:{\"span\":6}},[_c('el-checkbox',{on:{\"change\":_vm.onTogglePrivate},model:{value:(_vm.showPrivate),callback:function ($$v) {_vm.showPrivate=$$v},expression:\"showPrivate\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('userProfile.showPrivateStatuses'))+\"\\n \")])],1)],1),_vm._v(\" \"),_c('el-col',{attrs:{\"span\":18}},[_c('el-timeline',{staticClass:\"statuses\"},_vm._l((_vm.statuses),function(status){return _c('el-timeline-item',{key:status.id,attrs:{\"timestamp\":_vm.createdAtLocaleString(status.created_at)}},[_c('el-card',[(status.spoiler_text)?_c('strong',[_vm._v(_vm._s(status.spoiler_text))]):_vm._e(),_vm._v(\" \"),(status.content)?_c('p',{domProps:{\"innerHTML\":_vm._s(status.content)}}):_vm._e(),_vm._v(\" \"),(status.poll)?_c('div',{staticClass:\"poll\"},[_c('ul',_vm._l((status.poll.options),function(option,index){return _c('li',{key:index},[_vm._v(\"\\n \"+_vm._s(option.title)+\"\\n \"),_c('el-progress',{attrs:{\"percentage\":_vm.optionPercent(status.poll, option)}})],1)}),0)]):_vm._e(),_vm._v(\" \"),_vm._l((status.media_attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"image\"},[_c('img',{attrs:{\"src\":attachment.preview_url}})])})],2)],1)}),1)],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./show.vue?vue&type=template&id=71c7ded0&scoped=true&\"\nimport script from \"./show.vue?vue&type=script&lang=js&\"\nexport * from \"./show.vue?vue&type=script&lang=js&\"\nimport style0 from \"./show.vue?vue&type=style&index=0&id=71c7ded0&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71c7ded0\",\n null\n \n)\n\ncomponent.options.__file = \"show.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&id=71c7ded0&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show.vue?vue&type=style&index=0&id=71c7ded0&rel=stylesheet%2Fscss&lang=scss&scoped=true&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-5913.1d21a547.js b/priv/static/adminfe/static/js/chunk-5913.1d21a547.js new file mode 100644 index 000000000..873089963 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-5913.1d21a547.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-5913"],{"/Z02":function(e,t,s){},"6eCR":function(e,t,s){"use strict";var r=s("Jdpf");s.n(r).a},DPTh:function(e,t,s){"use strict";var r=s("vg5t");s.n(r).a},DVld:function(e,t,s){"use strict";var r=s("/Z02");s.n(r).a},Jdpf:function(e,t,s){},RGjw:function(e,t,s){"use strict";s.r(t);var r=s("o0o1"),n=s.n(r),i=s("yXPU"),a=s.n(i),o=s("9/5/"),c=s.n(o),l=s("ZhIB"),u=s.n(l),d=s("lSNA"),p=s.n(d),v=s("MVZn"),m=s.n(v),g={data:function(){return{value:[]}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{removeOppositeFilters:function(){var e=Object.keys(this.$store.state.users.filters).length,t=this.$data.value.slice(),s=t.indexOf("local"),r=t.indexOf("external"),n=t.indexOf("active"),i=t.indexOf("deactivated");if(t.length===e)return[];if(s>-1&&r>-1){var a=s>r?r:s;t.splice(a,1)}else if(n>-1&&i>-1){var o=n>i?i:n;t.splice(o,1)}return t},toggleFilters:function(){this.$data.value=this.removeOppositeFilters();var e=this.$data.value.reduce(function(e,t){return m()({},e,p()({},t,!0))},{});this.$store.dispatch("ToggleUsersFilter",e)}}},f=(s("DVld"),s("KHd+")),_=Object(f.a)(g,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-select",{staticClass:"select-field",attrs:{clearable:e.isDesktop,placeholder:e.$t("usersFilter.inputPlaceholder"),multiple:""},on:{change:e.toggleFilters},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[s("el-option-group",{attrs:{label:e.$t("usersFilter.byUserType")}},[s("el-option",{attrs:{value:"local"}},[e._v(e._s(e.$t("usersFilter.local")))]),e._v(" "),s("el-option",{attrs:{value:"external"}},[e._v(e._s(e.$t("usersFilter.external")))])],1),e._v(" "),s("el-option-group",{attrs:{label:e.$t("usersFilter.byStatus")}},[s("el-option",{attrs:{value:"active"}},[e._v(e._s(e.$t("usersFilter.active")))]),e._v(" "),s("el-option",{attrs:{value:"deactivated"}},[e._v(e._s(e.$t("usersFilter.deactivated")))])],1)],1)},[],!1,null,"71bc6b38",null);_.options.__file="UsersFilter.vue";var h=_.exports,w={props:{selectedUsers:{type:Array,default:function(){return[]}}},computed:{showDropdownForMultipleUsers:function(){return this.$props.selectedUsers.length>0},isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{mappers:function(){var e=this,t=function(t,s){return Promise.all(t.map(s)).then(function(){e.$message({type:"success",message:e.$t("users.completed")}),e.$emit("apply-action")}).catch(function(e){console.log(e)})};return{grantRight:function(s){return function(){var r=function(){var t=a()(n.a.mark(function t(r){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.$store.dispatch("ToggleRight",{user:r,right:s});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}(),i=e.selectedUsers.filter(function(t){return t.local&&!t.roles[s]&&e.$store.state.user.id!==t.id});t(i,r)}},revokeRight:function(s){return function(){var r=function(){var t=a()(n.a.mark(function t(r){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.$store.dispatch("ToggleRight",{user:r,right:s});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}(),i=e.selectedUsers.filter(function(t){return t.local&&t.roles[s]&&e.$store.state.user.id!==t.id});t(i,r)}},activate:function(){var s=e.selectedUsers.filter(function(t){return t.deactivated&&e.$store.state.user.id!==t.id});t(s,function(){var t=a()(n.a.mark(function t(s){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.$store.dispatch("ToggleUserActivation",s.nickname);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}())},deactivate:function(){var s=e.selectedUsers.filter(function(t){return!t.deactivated&&e.$store.state.user.id!==t.id});t(s,function(){var t=a()(n.a.mark(function t(s){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.$store.dispatch("ToggleUserActivation",s.nickname);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}())},remove:function(){var s=e.selectedUsers.filter(function(t){return e.$store.state.user.id!==t.id});t(s,function(){var t=a()(n.a.mark(function t(s){return n.a.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.$store.dispatch("DeleteUser",s);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}())},addTag:function(t){return a()(n.a.mark(function s(){var r,i;return n.a.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return r=function(e){return"disable_remote_subscription"===t||"disable_any_subscription"===t?e.local&&!e.tags.includes(t):!e.tags.includes(t)},i=e.selectedUsers.filter(r),s.prev=2,s.next=5,e.$store.dispatch("AddTag",{users:i,tag:t});case 5:s.next=11;break;case 7:return s.prev=7,s.t0=s.catch(2),console.log(s.t0),s.abrupt("return");case 11:e.$message({type:"success",message:e.$t("users.completed")}),e.$emit("apply-action");case 13:case"end":return s.stop()}},s,null,[[2,7]])}))},removeTag:function(t){return a()(n.a.mark(function s(){var r,i;return n.a.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return r=function(e){return"disable_remote_subscription"===t||"disable_any_subscription"===t?e.local&&e.tags.includes(t):e.tags.includes(t)},i=e.selectedUsers.filter(r),s.prev=2,s.next=5,e.$store.dispatch("RemoveTag",{users:i,tag:t});case 5:s.next=11;break;case 7:return s.prev=7,s.t0=s.catch(2),console.log(s.t0),s.abrupt("return");case 11:e.$message({type:"success",message:e.$t("users.completed")}),e.$emit("apply-action");case 13:case"end":return s.stop()}},s,null,[[2,7]])}))}}},grantRightToMultipleUsers:function(e){var t=this.mappers().grantRight;this.confirmMessage(this.$t("users.grantRightConfirmation",{right:e}),t(e))},revokeRightFromMultipleUsers:function(e){var t=this.mappers().revokeRight;this.confirmMessage(this.$t("users.revokeRightConfirmation",{right:e}),t(e))},activateMultipleUsers:function(){var e=this.mappers().activate;this.confirmMessage(this.$t("users.activateMultipleUsersConfirmation"),e)},deactivateMultipleUsers:function(){var e=this.mappers().deactivate;this.confirmMessage(this.$t("users.deactivateMultipleUsersConfirmation"),e)},deleteMultipleUsers:function(){var e=this.mappers().remove;this.confirmMessage(this.$t("users.deleteMultipleUsersConfirmation"),e)},addTagForMultipleUsers:function(e){var t=this.mappers().addTag;this.confirmMessage(this.$t("users.addTagForMultipleUsersConfirmation"),t(e))},removeTagFromMultipleUsers:function(e){var t=this.mappers().removeTag;this.confirmMessage(this.$t("users.removeTagFromMultipleUsersConfirmation"),t(e))},confirmMessage:function(e,t){var s=this;this.$confirm(e,{confirmButtonText:this.$t("users.ok"),cancelButtonText:this.$t("users.cancel"),type:"warning"}).then(function(){t()}).catch(function(){s.$message({type:"info",message:s.$t("users.canceled")})})}}},$=(s("ii01"),Object(f.a)(w,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dropdown",{attrs:{size:"small",trigger:"click",placement:"bottom-start"}},[e.isDesktop?s("el-button",{staticClass:"actions-button"},[s("span",{staticClass:"actions-button-container"},[s("span",[s("i",{staticClass:"el-icon-edit"}),e._v("\n "+e._s(e.$t("users.moderateUsers"))+"\n ")]),e._v(" "),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):e._e(),e._v(" "),e.showDropdownForMultipleUsers?s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[s("el-dropdown-item",{nativeOn:{click:function(t){return e.grantRightToMultipleUsers("admin")}}},[e._v("\n "+e._s(e.$t("users.grantAdmin"))+"\n ")]),e._v(" "),s("el-dropdown-item",{nativeOn:{click:function(t){return e.revokeRightFromMultipleUsers("admin")}}},[e._v("\n "+e._s(e.$t("users.revokeAdmin"))+"\n ")]),e._v(" "),s("el-dropdown-item",{nativeOn:{click:function(t){return e.grantRightToMultipleUsers("moderator")}}},[e._v("\n "+e._s(e.$t("users.grantModerator"))+"\n ")]),e._v(" "),s("el-dropdown-item",{nativeOn:{click:function(t){return e.revokeRightFromMultipleUsers("moderator")}}},[e._v("\n "+e._s(e.$t("users.revokeModerator"))+"\n ")]),e._v(" "),s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.activateMultipleUsers(t)}}},[e._v("\n "+e._s(e.$t("users.activateAccounts"))+"\n ")]),e._v(" "),s("el-dropdown-item",{nativeOn:{click:function(t){return e.deactivateMultipleUsers(t)}}},[e._v("\n "+e._s(e.$t("users.deactivateAccounts"))+"\n ")]),e._v(" "),s("el-dropdown-item",{nativeOn:{click:function(t){return e.deleteMultipleUsers(t)}}},[e._v("\n "+e._s(e.$t("users.deleteAccounts"))+"\n ")]),e._v(" "),s("el-dropdown-item",{staticClass:"no-hover",attrs:{divided:""}},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[e._v(e._s(e.$t("users.forceNsfw")))]),e._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.addTagForMultipleUsers("force_nsfw")}}},[e._v("\n "+e._s(e.$t("users.apply"))+"\n ")]),e._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.removeTagFromMultipleUsers("force_nsfw")}}},[e._v("\n "+e._s(e.$t("users.remove"))+"\n ")])],1)],1)]),e._v(" "),s("el-dropdown-item",{staticClass:"no-hover"},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[e._v(e._s(e.$t("users.stripMedia")))]),e._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.addTagForMultipleUsers("strip_media")}}},[e._v("\n "+e._s(e.$t("users.apply"))+"\n ")]),e._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.removeTagFromMultipleUsers("strip_media")}}},[e._v("\n "+e._s(e.$t("users.remove"))+"\n ")])],1)],1)]),e._v(" "),s("el-dropdown-item",{staticClass:"no-hover"},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[e._v(e._s(e.$t("users.forceUnlisted")))]),e._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.addTagForMultipleUsers("force_unlisted")}}},[e._v("\n "+e._s(e.$t("users.apply"))+"\n ")]),e._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.removeTagFromMultipleUsers("force_unlisted")}}},[e._v("\n "+e._s(e.$t("users.remove"))+"\n ")])],1)],1)]),e._v(" "),s("el-dropdown-item",{staticClass:"no-hover"},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[e._v(e._s(e.$t("users.sandbox")))]),e._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.addTagForMultipleUsers("sandbox")}}},[e._v("\n "+e._s(e.$t("users.apply"))+"\n ")]),e._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.removeTagFromMultipleUsers("sandbox")}}},[e._v("\n "+e._s(e.$t("users.remove"))+"\n ")])],1)],1)]),e._v(" "),s("el-dropdown-item",{staticClass:"no-hover"},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[e._v(e._s(e.$t("users.disableRemoteSubscriptionForMultiple")))]),e._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.addTagForMultipleUsers("disable_remote_subscription")}}},[e._v("\n "+e._s(e.$t("users.apply"))+"\n ")]),e._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.removeTagFromMultipleUsers("disable_remote_subscription")}}},[e._v("\n "+e._s(e.$t("users.remove"))+"\n ")])],1)],1)]),e._v(" "),s("el-dropdown-item",{staticClass:"no-hover"},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[e._v(e._s(e.$t("users.disableAnySubscriptionForMultiple")))]),e._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.addTagForMultipleUsers("disable_any_subscription")}}},[e._v("\n "+e._s(e.$t("users.apply"))+"\n ")]),e._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(t){return e.removeTagFromMultipleUsers("disable_any_subscription")}}},[e._v("\n "+e._s(e.$t("users.remove"))+"\n ")])],1)],1)])],1):s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[s("el-dropdown-item",[e._v("\n "+e._s(e.$t("users.selectUsers"))+"\n ")])],1)],1)},[],!1,null,"19afabea",null));$.options.__file="MultipleUsersMenu.vue";var b=$.exports,k={name:"NewAccountDialog",props:{dialogFormVisible:{type:Boolean,default:function(){return!1}}},data:function(){return{newUserForm:{nickname:"",email:"",password:""},rules:{nickname:[{validator:this.validateUsername,trigger:"blur"}],email:[{validator:this.validateEmail,trigger:"blur"}],password:[{validator:this.validatePassword,trigger:"blur"}]}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isVisible:{get:function(){return this.$props.dialogFormVisible},set:function(){this.closeDialogWindow()}},getLabelWidth:function(){return this.isDesktop?"120px":"85px"}},methods:{closeDialogWindow:function(){this.$emit("closeWindow")},resetForm:function(){var e=this;this.$nextTick(function(){e.$refs.newUserForm.resetFields()})},submitForm:function(e){var t=this;this.$refs[e].validate(function(e){if(!e)return t.$message({type:"error",message:t.$t("users.submitFormError")}),!1;t.$emit("createNewAccount",t.$data.newUserForm)})},validateEmail:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyEmailError"))):this.validEmail(t)?s():s(new Error(this.$t("users.invalidEmailError")))},validatePassword:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyPasswordError"))):s()},validateUsername:function(e,t,s){return""===t?s(new Error(this.$t("users.emptyNicknameError"))):this.validNickname(t)?s():s(new Error(this.$t("users.invalidNicknameError")))},validEmail:function(e){return/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)},validNickname:function(e){return/^[a-zA-Z\d]+$/.test(e)}}},U=(s("DPTh"),Object(f.a)(k,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("el-dialog",{attrs:{visible:e.isVisible,"show-close":!1,title:e.$t("users.createAccount"),"custom-class":"create-user-dialog"},on:{"update:visible":function(t){e.isVisible=t},open:e.resetForm}},[s("el-form",{ref:"newUserForm",attrs:{model:e.newUserForm,rules:e.rules,"label-width":e.getLabelWidth,"status-icon":""}},[s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:e.$t("users.username"),prop:"nickname"}},[s("el-input",{attrs:{name:"nickname",autofocus:""},model:{value:e.newUserForm.nickname,callback:function(t){e.$set(e.newUserForm,"nickname",t)},expression:"newUserForm.nickname"}})],1),e._v(" "),s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:e.$t("users.email"),prop:"email"}},[s("el-input",{attrs:{name:"email",type:"email"},model:{value:e.newUserForm.email,callback:function(t){e.$set(e.newUserForm,"email",t)},expression:"newUserForm.email"}})],1),e._v(" "),s("el-form-item",{staticClass:"create-account-form-item-without-margin",attrs:{label:e.$t("users.password"),prop:"password"}},[s("el-input",{attrs:{type:"password",name:"password",autocomplete:"off"},model:{value:e.newUserForm.password,callback:function(t){e.$set(e.newUserForm,"password",t)},expression:"newUserForm.password"}})],1)],1),e._v(" "),s("span",{attrs:{slot:"footer"},slot:"footer"},[s("el-button",{on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("users.cancel")))]),e._v(" "),s("el-button",{attrs:{type:"primary"},on:{click:function(t){return e.submitForm("newUserForm")}}},[e._v(e._s(e.$t("users.create")))])],1)],1)},[],!1,null,null,null));U.options.__file="NewAccountDialog.vue";var C={name:"Users",components:{UsersFilter:h,MultipleUsersMenu:b,NewAccountDialog:U.exports},data:function(){return{search:"",selectedUsers:[],createAccountDialogOpen:!1,resetPasswordDialogOpen:!1}},computed:{loading:function(){return this.$store.state.users.loading},normalizedUsersCount:function(){return u()(this.$store.state.users.totalUsersCount).format("0a")},users:function(){return this.$store.state.users.fetchedUsers},usersCount:function(){return this.$store.state.users.totalUsersCount},pageSize:function(){return this.$store.state.users.pageSize},passwordResetLink:function(){return this.$store.state.users.passwordResetToken.link},passwordResetToken:function(){return this.$store.state.users.passwordResetToken.token},currentPage:function(){return this.$store.state.users.currentPage},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},width:function(){return!!this.isMobile&&55}},created:function(){var e=this;this.handleDebounceSearchInput=c()(function(t){e.$store.dispatch("SearchUsers",{query:t,page:1})},500)},mounted:function(){this.$store.dispatch("FetchUsers",{page:1})},methods:{activationIcon:function(e){return e?"el-icon-error":"el-icon-success"},clearSelection:function(){this.$refs.usersTable.clearSelection()},createNewAccount:function(){var e=a()(n.a.mark(function e(t){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("CreateNewAccount",t);case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:return e.prev=8,this.createAccountDialogOpen=!1,e.finish(8);case 11:this.$message({type:"success",message:this.$t("users.accountCreated")});case 12:case"end":return e.stop()}},e,this,[[0,5,8,11]])}));return function(t){return e.apply(this,arguments)}}(),getFirstLetter:function(e){return e.charAt(0).toUpperCase()},getPasswordResetToken:function(e){this.resetPasswordDialogOpen=!0,this.$store.dispatch("GetPasswordResetToken",e)},handleDeactivation:function(e){var t=e.nickname;this.$store.dispatch("ToggleUserActivation",t)},handleDeletion:function(e){this.$store.dispatch("DeleteUser",e)},handlePageChange:function(e){var t=this.$store.state.users.searchQuery;""===t?this.$store.dispatch("FetchUsers",{page:e}):this.$store.dispatch("SearchUsers",{query:t,page:e})},handleSelectionChange:function(e){this.$data.selectedUsers=e},closeResetPasswordDialog:function(){this.resetPasswordDialogOpen=!1,this.$store.dispatch("RemovePasswordToken")},showAdminAction:function(e){var t=e.local,s=e.id;return t&&this.showDeactivatedButton(s)},showDeactivatedButton:function(e){return this.$store.state.user.id!==e},toggleTag:function(e,t){e.tags.includes(t)?this.$store.dispatch("RemoveTag",{users:[e],tag:t}):this.$store.dispatch("AddTag",{users:[e],tag:t})},toggleUserRight:function(e,t){this.$store.dispatch("ToggleRight",{user:e,right:t})}}},F=(s("6eCR"),Object(f.a)(C,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"users-container"},[s("h1",[e._v("\n "+e._s(e.$t("users.users"))+"\n "),s("span",{staticClass:"user-count"},[e._v("("+e._s(e.normalizedUsersCount)+")")])]),e._v(" "),s("div",{staticClass:"filter-container"},[s("users-filter"),e._v(" "),s("el-input",{staticClass:"search",attrs:{placeholder:e.$t("users.search")},on:{input:e.handleDebounceSearchInput},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}})],1),e._v(" "),s("div",{staticClass:"actions-container"},[s("el-button",{staticClass:"actions-button create-account",on:{click:function(t){e.createAccountDialogOpen=!0}}},[s("span",[s("i",{staticClass:"el-icon-plus"}),e._v("\n "+e._s(e.$t("users.createAccount"))+"\n ")])]),e._v(" "),s("multiple-users-menu",{attrs:{"selected-users":e.selectedUsers},on:{"apply-action":e.clearSelection}})],1),e._v(" "),s("new-account-dialog",{attrs:{"dialog-form-visible":e.createAccountDialogOpen},on:{createNewAccount:e.createNewAccount,closeWindow:function(t){e.createAccountDialogOpen=!1}}}),e._v(" "),s("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],ref:"usersTable",staticStyle:{width:"100%"},attrs:{data:e.users,"row-key":"id"},on:{"selection-change":e.handleSelectionChange}},[e.isDesktop?s("el-table-column",{attrs:{type:"selection","reserve-selection":"",width:"44",align:"center"}}):e._e(),e._v(" "),s("el-table-column",{attrs:{"min-width":e.width,label:e.$t("users.id"),prop:"id"}}),e._v(" "),s("el-table-column",{attrs:{label:e.$t("users.name"),prop:"nickname"},scopedSlots:e._u([{key:"default",fn:function(t){return[s("router-link",{attrs:{to:{name:"UsersShow",params:{id:t.row.id}}}},[e._v(e._s(t.row.nickname))]),e._v(" "),e.isDesktop?s("el-tag",{attrs:{type:"info",size:"mini"}},[s("span",[e._v(e._s(t.row.local?e.$t("users.local"):e.$t("users.external")))])]):e._e()]}}])}),e._v(" "),s("el-table-column",{attrs:{"min-width":e.width,label:e.$t("users.status")},scopedSlots:e._u([{key:"default",fn:function(t){return[s("el-tag",{attrs:{type:t.row.deactivated?"danger":"success"}},[e.isDesktop?s("span",[e._v(e._s(t.row.deactivated?e.$t("users.deactivated"):e.$t("users.active")))]):s("i",{class:e.activationIcon(t.row.deactivated)})]),e._v(" "),t.row.roles.admin?s("el-tag",[s("span",[e._v(e._s(e.isDesktop?e.$t("users.admin"):e.getFirstLetter(e.$t("users.admin"))))])]):e._e(),e._v(" "),t.row.roles.moderator?s("el-tag",[s("span",[e._v(e._s(e.isDesktop?e.$t("users.moderator"):e.getFirstLetter(e.$t("users.moderator"))))])]):e._e()]}}])}),e._v(" "),s("el-table-column",{attrs:{label:e.$t("users.actions"),fixed:"right"},scopedSlots:e._u([{key:"default",fn:function(t){return[s("el-dropdown",{attrs:{size:"small",trigger:"click"}},[s("span",{staticClass:"el-dropdown-link"},[e._v("\n "+e._s(e.$t("users.moderation"))+"\n "),e.isDesktop?s("i",{staticClass:"el-icon-arrow-down el-icon--right"}):e._e()]),e._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[e.showAdminAction(t.row)?s("el-dropdown-item",{nativeOn:{click:function(s){return e.toggleUserRight(t.row,"admin")}}},[e._v("\n "+e._s(t.row.roles.admin?e.$t("users.revokeAdmin"):e.$t("users.grantAdmin"))+"\n ")]):e._e(),e._v(" "),e.showAdminAction(t.row)?s("el-dropdown-item",{nativeOn:{click:function(s){return e.toggleUserRight(t.row,"moderator")}}},[e._v("\n "+e._s(t.row.roles.moderator?e.$t("users.revokeModerator"):e.$t("users.grantModerator"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(t.row.id)?s("el-dropdown-item",{attrs:{divided:e.showAdminAction(t.row)},nativeOn:{click:function(s){return e.handleDeactivation(t.row)}}},[e._v("\n "+e._s(t.row.deactivated?e.$t("users.activateAccount"):e.$t("users.deactivateAccount"))+"\n ")]):e._e(),e._v(" "),e.showDeactivatedButton(t.row.id)?s("el-dropdown-item",{nativeOn:{click:function(s){return e.handleDeletion(t.row)}}},[e._v("\n "+e._s(e.$t("users.deleteAccount"))+"\n ")]):e._e(),e._v(" "),s("el-dropdown-item",{class:{"active-tag":t.row.tags.includes("force_nsfw")},attrs:{divided:e.showAdminAction(t.row)},nativeOn:{click:function(s){return e.toggleTag(t.row,"force_nsfw")}}},[e._v("\n "+e._s(e.$t("users.forceNsfw"))+"\n "),t.row.tags.includes("force_nsfw")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":t.row.tags.includes("strip_media")},nativeOn:{click:function(s){return e.toggleTag(t.row,"strip_media")}}},[e._v("\n "+e._s(e.$t("users.stripMedia"))+"\n "),t.row.tags.includes("strip_media")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":t.row.tags.includes("force_unlisted")},nativeOn:{click:function(s){return e.toggleTag(t.row,"force_unlisted")}}},[e._v("\n "+e._s(e.$t("users.forceUnlisted"))+"\n "),t.row.tags.includes("force_unlisted")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),s("el-dropdown-item",{class:{"active-tag":t.row.tags.includes("sandbox")},nativeOn:{click:function(s){return e.toggleTag(t.row,"sandbox")}}},[e._v("\n "+e._s(e.$t("users.sandbox"))+"\n "),t.row.tags.includes("sandbox")?s("i",{staticClass:"el-icon-check"}):e._e()]),e._v(" "),t.row.local?s("el-dropdown-item",{class:{"active-tag":t.row.tags.includes("disable_remote_subscription")},nativeOn:{click:function(s){return e.toggleTag(t.row,"disable_remote_subscription")}}},[e._v("\n "+e._s(e.$t("users.disableRemoteSubscription"))+"\n "),t.row.tags.includes("disable_remote_subscription")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),t.row.local?s("el-dropdown-item",{class:{"active-tag":t.row.tags.includes("disable_any_subscription")},nativeOn:{click:function(s){return e.toggleTag(t.row,"disable_any_subscription")}}},[e._v("\n "+e._s(e.$t("users.disableAnySubscription"))+"\n "),t.row.tags.includes("disable_any_subscription")?s("i",{staticClass:"el-icon-check"}):e._e()]):e._e(),e._v(" "),t.row.local?s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(s){return e.getPasswordResetToken(t.row.nickname)}}},[e._v("\n "+e._s(e.$t("users.getPasswordResetToken"))+"\n ")]):e._e()],1)],1)]}}])})],1),e._v(" "),s("el-dialog",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],attrs:{visible:e.resetPasswordDialogOpen,title:e.$t("users.passwordResetTokenCreated"),"custom-class":"password-reset-token-dialog"},on:{"update:visible":function(t){e.resetPasswordDialogOpen=t},close:e.closeResetPasswordDialog}},[s("div",[s("p",{staticClass:"password-reset-token"},[e._v("Password reset token was generated: "+e._s(e.passwordResetToken))]),e._v(" "),s("p",[e._v("You can also use this link to reset password:\n "),s("a",{staticClass:"reset-password-link",attrs:{href:e.passwordResetLink,target:"_blank"}},[e._v(e._s(e.passwordResetLink))])])])]),e._v(" "),0===e.users.length?s("div",{staticClass:"no-users-message"},[s("p",[e._v("There are no users to display")])]):e._e(),e._v(" "),e.loading?e._e():s("div",{staticClass:"pagination"},[s("el-pagination",{attrs:{total:e.usersCount,"current-page":e.currentPage,"page-size":e.pageSize,background:"",layout:"prev, pager, next"},on:{"current-change":e.handlePageChange}})],1)],1)},[],!1,null,null,null));F.options.__file="index.vue";t.default=F.exports},"V7+4":function(e,t,s){},ii01:function(e,t,s){"use strict";var r=s("V7+4");s.n(r).a},vg5t:function(e,t,s){}}]); +//# sourceMappingURL=chunk-5913.1d21a547.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-5913.1d21a547.js.map b/priv/static/adminfe/static/js/chunk-5913.1d21a547.js.map new file mode 100644 index 000000000..3841396c4 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-5913.1d21a547.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/users/index.vue?1afe","webpack:///./src/views/users/components/NewAccountDialog.vue?d353","webpack:///./src/views/users/components/UsersFilter.vue?f835","webpack:///./src/views/users/index.vue?5b03","webpack:///./src/views/users/components/UsersFilter.vue?6a82","webpack:///src/views/users/components/UsersFilter.vue","webpack:///./src/views/users/components/UsersFilter.vue","webpack:///./src/views/users/components/UsersFilter.vue?3f06","webpack:///./src/views/users/components/MultipleUsersMenu.vue?56ef","webpack:///src/views/users/components/MultipleUsersMenu.vue","webpack:///./src/views/users/components/MultipleUsersMenu.vue","webpack:///./src/views/users/components/MultipleUsersMenu.vue?3621","webpack:///./src/views/users/components/NewAccountDialog.vue?9018","webpack:///src/views/users/components/NewAccountDialog.vue","webpack:///./src/views/users/components/NewAccountDialog.vue","webpack:///./src/views/users/components/NewAccountDialog.vue?0cce","webpack:///./src/views/users/index.vue?0a29","webpack:///src/views/users/index.vue","webpack:///./src/views/users/index.vue","webpack:///./src/views/users/components/MultipleUsersMenu.vue?9f11"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_NewAccountDialog_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_UsersFilter_vue_vue_type_style_index_0_id_71bc6b38_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","components_UsersFiltervue_type_script_lang_js_","data","value","computed","isDesktop","this","$store","state","app","device","methods","removeOppositeFilters","filtersQuantity","Object","keys","users","filters","length","currentFilters","$data","slice","indexOfLocal","indexOf","indexOfExternal","indexOfActive","indexOfDeactivated","filterToRemove","splice","_filterToRemove","toggleFilters","reduce","acc","filter","objectSpread_default","defineProperty_default","dispatch","component","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","attrs","clearable","placeholder","$t","multiple","on","change","model","callback","$$v","expression","label","_v","_s","options","__file","UsersFilter","components_MultipleUsersMenuvue_type_script_lang_js_","props","selectedUsers","type","Array","default","showDropdownForMultipleUsers","$props","mappers","_this","applyActionToAllUsers","filteredUsers","fn","Promise","all","map","then","$message","message","$emit","catch","err","console","log","grantRight","right","toggleRightFn","_ref","asyncToGenerator_default","regenerator_default","a","mark","_callee","user","wrap","_context","prev","next","abrupt","sent","stop","_x","apply","arguments","filtered","local","roles","id","revokeRight","_ref2","_callee2","_context2","_x2","activate","deactivated","_ref3","_callee3","_context3","nickname","_x3","deactivate","_ref4","_callee4","_context4","_x4","remove","_ref5","_callee5","_context5","_x5","addTag","tag","_callee6","filterUsersFn","_context6","tags","includes","t0","removeTag","_callee7","_context7","grantRightToMultipleUsers","confirmMessage","revokeRightFromMultipleUsers","activateMultipleUsers","deactivateMultipleUsers","deleteMultipleUsers","addTagForMultipleUsers","removeTagFromMultipleUsers","applyAction","_this2","$confirm","confirmButtonText","cancelButtonText","MultipleUsersMenu_component","size","trigger","placement","_e","slot","nativeOn","click","$event","divided","MultipleUsersMenu","components_NewAccountDialogvue_type_script_lang_js_","name","dialogFormVisible","Boolean","newUserForm","email","password","rules","validator","validateUsername","validateEmail","validatePassword","isVisible","get","set","closeDialogWindow","getLabelWidth","resetForm","$nextTick","$refs","resetFields","submitForm","formName","validate","valid","rule","Error","validEmail","validNickname","test","NewAccountDialog_component","visible","show-close","title","custom-class","update:visible","open","ref","label-width","status-icon","prop","autofocus","$set","autocomplete","views_usersvue_type_script_lang_js_","components","NewAccountDialog","search","createAccountDialogOpen","resetPasswordDialogOpen","loading","normalizedUsersCount","numeral_default","totalUsersCount","format","fetchedUsers","usersCount","pageSize","passwordResetLink","passwordResetToken","link","token","currentPage","isMobile","width","created","handleDebounceSearchInput","lodash_debounce_default","query","page","mounted","activationIcon","status","clearSelection","usersTable","createNewAccount","_createNewAccount","accountData","finish","getFirstLetter","str","charAt","toUpperCase","getPasswordResetToken","handleDeactivation","handleDeletion","handlePageChange","searchQuery","handleSelectionChange","closeResetPasswordDialog","showAdminAction","showDeactivatedButton","toggleTag","toggleUserRight","users_component","input","selected-users","apply-action","dialog-form-visible","closeWindow","directives","rawName","staticStyle","row-key","selection-change","reserve-selection","align","min-width","scopedSlots","_u","key","scope","to","params","row","class","fixed","admin","moderator","active-tag","close","href","target","total","current-page","page-size","background","layout","current-change","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MultipleUsersMenu_vue_vue_type_style_index_0_id_19afabea_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"static/js/chunk-5913.1d21a547.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=style&index=0&id=71bc6b38&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=style&index=0&id=71bc6b38&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"users-container\"},[_c('h1',[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.users'))+\"\\n \"),_c('span',{staticClass:\"user-count\"},[_vm._v(\"(\"+_vm._s(_vm.normalizedUsersCount)+\")\")])]),_vm._v(\" \"),_c('div',{staticClass:\"filter-container\"},[_c('users-filter'),_vm._v(\" \"),_c('el-input',{staticClass:\"search\",attrs:{\"placeholder\":_vm.$t('users.search')},on:{\"input\":_vm.handleDebounceSearchInput},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"actions-container\"},[_c('el-button',{staticClass:\"actions-button create-account\",on:{\"click\":function($event){_vm.createAccountDialogOpen = true}}},[_c('span',[_c('i',{staticClass:\"el-icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.createAccount'))+\"\\n \")])]),_vm._v(\" \"),_c('multiple-users-menu',{attrs:{\"selected-users\":_vm.selectedUsers},on:{\"apply-action\":_vm.clearSelection}})],1),_vm._v(\" \"),_c('new-account-dialog',{attrs:{\"dialog-form-visible\":_vm.createAccountDialogOpen},on:{\"createNewAccount\":_vm.createNewAccount,\"closeWindow\":function($event){_vm.createAccountDialogOpen = false}}}),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],ref:\"usersTable\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_vm.users,\"row-key\":\"id\"},on:{\"selection-change\":_vm.handleSelectionChange}},[(_vm.isDesktop)?_c('el-table-column',{attrs:{\"type\":\"selection\",\"reserve-selection\":\"\",\"width\":\"44\",\"align\":\"center\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.width,\"label\":_vm.$t('users.id'),\"prop\":\"id\"}}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('users.name'),\"prop\":\"nickname\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('router-link',{attrs:{\"to\":{ name: 'UsersShow', params: { id: scope.row.id }}}},[_vm._v(_vm._s(scope.row.nickname))]),_vm._v(\" \"),(_vm.isDesktop)?_c('el-tag',{attrs:{\"type\":\"info\",\"size\":\"mini\"}},[_c('span',[_vm._v(_vm._s(scope.row.local ? _vm.$t('users.local') : _vm.$t('users.external')))])]):_vm._e()]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"min-width\":_vm.width,\"label\":_vm.$t('users.status')},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.deactivated ? 'danger' : 'success'}},[(_vm.isDesktop)?_c('span',[_vm._v(_vm._s(scope.row.deactivated ? _vm.$t('users.deactivated') : _vm.$t('users.active')))]):_c('i',{class:_vm.activationIcon(scope.row.deactivated)})]),_vm._v(\" \"),(scope.row.roles.admin)?_c('el-tag',[_c('span',[_vm._v(_vm._s(_vm.isDesktop ? _vm.$t('users.admin') : _vm.getFirstLetter(_vm.$t('users.admin'))))])]):_vm._e(),_vm._v(\" \"),(scope.row.roles.moderator)?_c('el-tag',[_c('span',[_vm._v(_vm._s(_vm.isDesktop ? _vm.$t('users.moderator') : _vm.getFirstLetter(_vm.$t('users.moderator'))))])]):_vm._e()]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('users.actions'),\"fixed\":\"right\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-dropdown',{attrs:{\"size\":\"small\",\"trigger\":\"click\"}},[_c('span',{staticClass:\"el-dropdown-link\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderation'))+\"\\n \"),(_vm.isDesktop)?_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.showAdminAction(scope.row))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(scope.row, 'admin')}}},[_vm._v(\"\\n \"+_vm._s(scope.row.roles.admin ? _vm.$t('users.revokeAdmin') : _vm.$t('users.grantAdmin'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showAdminAction(scope.row))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.toggleUserRight(scope.row, 'moderator')}}},[_vm._v(\"\\n \"+_vm._s(scope.row.roles.moderator ? _vm.$t('users.revokeModerator') : _vm.$t('users.grantModerator'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(scope.row.id))?_c('el-dropdown-item',{attrs:{\"divided\":_vm.showAdminAction(scope.row)},nativeOn:{\"click\":function($event){return _vm.handleDeactivation(scope.row)}}},[_vm._v(\"\\n \"+_vm._s(scope.row.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(scope.row.id))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(scope.row)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': scope.row.tags.includes('force_nsfw') },attrs:{\"divided\":_vm.showAdminAction(scope.row)},nativeOn:{\"click\":function($event){return _vm.toggleTag(scope.row, 'force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(scope.row.tags.includes('force_nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': scope.row.tags.includes('strip_media') },nativeOn:{\"click\":function($event){return _vm.toggleTag(scope.row, 'strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(scope.row.tags.includes('strip_media'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': scope.row.tags.includes('force_unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(scope.row, 'force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(scope.row.tags.includes('force_unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': scope.row.tags.includes('sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(scope.row, 'sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(scope.row.tags.includes('sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(scope.row.local)?_c('el-dropdown-item',{class:{ 'active-tag': scope.row.tags.includes('disable_remote_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(scope.row, 'disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(scope.row.tags.includes('disable_remote_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(scope.row.local)?_c('el-dropdown-item',{class:{ 'active-tag': scope.row.tags.includes('disable_any_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(scope.row, 'disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(scope.row.tags.includes('disable_any_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(scope.row.local)?_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.getPasswordResetToken(scope.row.nickname)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.getPasswordResetToken'))+\"\\n \")]):_vm._e()],1)],1)]}}])})],1),_vm._v(\" \"),_c('el-dialog',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"visible\":_vm.resetPasswordDialogOpen,\"title\":_vm.$t('users.passwordResetTokenCreated'),\"custom-class\":\"password-reset-token-dialog\"},on:{\"update:visible\":function($event){_vm.resetPasswordDialogOpen=$event},\"close\":_vm.closeResetPasswordDialog}},[_c('div',[_c('p',{staticClass:\"password-reset-token\"},[_vm._v(\"Password reset token was generated: \"+_vm._s(_vm.passwordResetToken))]),_vm._v(\" \"),_c('p',[_vm._v(\"You can also use this link to reset password:\\n \"),_c('a',{staticClass:\"reset-password-link\",attrs:{\"href\":_vm.passwordResetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.passwordResetLink))])])])]),_vm._v(\" \"),(_vm.users.length === 0)?_c('div',{staticClass:\"no-users-message\"},[_c('p',[_vm._v(\"There are no users to display\")])]):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('div',{staticClass:\"pagination\"},[_c('el-pagination',{attrs:{\"total\":_vm.usersCount,\"current-page\":_vm.currentPage,\"page-size\":_vm.pageSize,\"background\":\"\",\"layout\":\"prev, pager, next\"},on:{\"current-change\":_vm.handlePageChange}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersFilter.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./UsersFilter.vue?vue&type=template&id=71bc6b38&scoped=true&\"\nimport script from \"./UsersFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./UsersFilter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UsersFilter.vue?vue&type=style&index=0&id=71bc6b38&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71bc6b38\",\n null\n \n)\n\ncomponent.options.__file = \"UsersFilter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-select',{staticClass:\"select-field\",attrs:{\"clearable\":_vm.isDesktop,\"placeholder\":_vm.$t('usersFilter.inputPlaceholder'),\"multiple\":\"\"},on:{\"change\":_vm.toggleFilters},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('el-option-group',{attrs:{\"label\":_vm.$t('usersFilter.byUserType')}},[_c('el-option',{attrs:{\"value\":\"local\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.local')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"external\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.external')))])],1),_vm._v(\" \"),_c('el-option-group',{attrs:{\"label\":_vm.$t('usersFilter.byStatus')}},[_c('el-option',{attrs:{\"value\":\"active\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.active')))]),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"deactivated\"}},[_vm._v(_vm._s(_vm.$t('usersFilter.deactivated')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MultipleUsersMenu.vue?vue&type=template&id=19afabea&scoped=true&\"\nimport script from \"./MultipleUsersMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./MultipleUsersMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MultipleUsersMenu.vue?vue&type=style&index=0&id=19afabea&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"19afabea\",\n null\n \n)\n\ncomponent.options.__file = \"MultipleUsersMenu.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"size\":\"small\",\"trigger\":\"click\",\"placement\":\"bottom-start\"}},[(_vm.isDesktop)?_c('el-button',{staticClass:\"actions-button\"},[_c('span',{staticClass:\"actions-button-container\"},[_c('span',[_c('i',{staticClass:\"el-icon-edit\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('users.moderateUsers'))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})])]):_vm._e(),_vm._v(\" \"),(_vm.showDropdownForMultipleUsers)?_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.grantRightToMultipleUsers('admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.grantAdmin'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.revokeRightFromMultipleUsers('admin')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.revokeAdmin'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.grantRightToMultipleUsers('moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.grantModerator'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.revokeRightFromMultipleUsers('moderator')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.revokeModerator'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.activateMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.activateAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deactivateMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deactivateAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deleteMultipleUsers($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccounts'))+\"\\n \")]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\",attrs:{\"divided\":\"\"}},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.forceNsfw')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.stripMedia')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.forceUnlisted')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.sandbox')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.disableRemoteSubscriptionForMultiple')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)]),_vm._v(\" \"),_c('el-dropdown-item',{staticClass:\"no-hover\"},[_c('div',{staticClass:\"tag-container\"},[_c('span',{staticClass:\"tag-text\"},[_vm._v(_vm._s(_vm.$t('users.disableAnySubscriptionForMultiple')))]),_vm._v(\" \"),_c('el-button-group',{staticClass:\"tag-button-group\"},[_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.addTagForMultipleUsers('disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.apply'))+\"\\n \")]),_vm._v(\" \"),_c('el-button',{attrs:{\"size\":\"mini\"},nativeOn:{\"click\":function($event){return _vm.removeTagFromMultipleUsers('disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.remove'))+\"\\n \")])],1)],1)])],1):_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.selectUsers'))+\"\\n \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewAccountDialog.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./NewAccountDialog.vue?vue&type=template&id=18b328aa&\"\nimport script from \"./NewAccountDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./NewAccountDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewAccountDialog.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"NewAccountDialog.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"visible\":_vm.isVisible,\"show-close\":false,\"title\":_vm.$t('users.createAccount'),\"custom-class\":\"create-user-dialog\"},on:{\"update:visible\":function($event){_vm.isVisible=$event},\"open\":_vm.resetForm}},[_c('el-form',{ref:\"newUserForm\",attrs:{\"model\":_vm.newUserForm,\"rules\":_vm.rules,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{staticClass:\"create-account-form-item\",attrs:{\"label\":_vm.$t('users.username'),\"prop\":\"nickname\"}},[_c('el-input',{attrs:{\"name\":\"nickname\",\"autofocus\":\"\"},model:{value:(_vm.newUserForm.nickname),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"nickname\", $$v)},expression:\"newUserForm.nickname\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"create-account-form-item\",attrs:{\"label\":_vm.$t('users.email'),\"prop\":\"email\"}},[_c('el-input',{attrs:{\"name\":\"email\",\"type\":\"email\"},model:{value:(_vm.newUserForm.email),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"email\", $$v)},expression:\"newUserForm.email\"}})],1),_vm._v(\" \"),_c('el-form-item',{staticClass:\"create-account-form-item-without-margin\",attrs:{\"label\":_vm.$t('users.password'),\"prop\":\"password\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"off\"},model:{value:(_vm.newUserForm.password),callback:function ($$v) {_vm.$set(_vm.newUserForm, \"password\", $$v)},expression:\"newUserForm.password\"}})],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('users.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){return _vm.submitForm('newUserForm')}}},[_vm._v(_vm._s(_vm.$t('users.create')))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3f4a0916&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=style&index=0&id=19afabea&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleUsersMenu.vue?vue&type=style&index=0&id=19afabea&rel=stylesheet%2Fscss&lang=scss&scoped=true&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-1fbf.616fb309.js b/priv/static/adminfe/static/js/chunk-598f.dd8089ce.js similarity index 99% rename from priv/static/adminfe/static/js/chunk-1fbf.616fb309.js rename to priv/static/adminfe/static/js/chunk-598f.dd8089ce.js index 5ad34d801..618a2ee9f 100644 --- a/priv/static/adminfe/static/js/chunk-1fbf.616fb309.js +++ b/priv/static/adminfe/static/js/chunk-598f.dd8089ce.js @@ -1 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-1fbf"],{"9rrl":function(t,e,s){"use strict";var r=s("nBu6");s.n(r).a},Hup8:function(t,e,s){"use strict";var r=s("tOKT");s.n(r).a},RnhZ:function(t,e,s){var r={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function a(t){var e=n(t);return s(e)}function n(t){if(!s.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return r[t]}a.keys=function(){return Object.keys(r)},a.resolve=n,t.exports=a,a.id="RnhZ"},WKah:function(t,e,s){},YqVV:function(t,e,s){"use strict";var r=s("hmQy");s.n(r).a},cEOe:function(t,e,s){"use strict";s.r(e);var r=s("wd/R"),a=s.n(r),n={name:"Statuses",props:{report:{type:Object,required:!0}},methods:{capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},changeStatus:function(t,e,s,r){this.$store.dispatch("ChangeStatusScope",{statusId:t,isSensitive:e,visibility:s,reportId:r})},deleteStatus:function(t,e){var s=this;this.$confirm("Are you sure you want to delete this status?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteStatus",{statusId:t,reportId:e}),s.$message({type:"success",message:"Delete completed"})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},getStatusesTitle:function(t){return"Reported statuses: ".concat(t.length," item(s)")},parseTimestamp:function(t){return a()(t).format("YYYY-MM-DD HH:mm")}}},i=(s("j5HQ"),s("KHd+")),o=Object(i.a)(n,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-collapse-item",{attrs:{title:t.getStatusesTitle(t.report.statuses)}},t._l(t.report.statuses,function(e){return s("el-card",{key:e.id,staticClass:"status-card"},[s("div",{attrs:{slot:"header"},slot:"header"},[s("div",{staticClass:"status-header"},[s("div",{staticClass:"status-account-container"},[s("div",{staticClass:"status-account"},[s("img",{staticClass:"status-avatar-img",attrs:{src:e.account.avatar}}),t._v(" "),s("h3",{staticClass:"status-account-name"},[t._v(t._s(e.account.display_name))])]),t._v(" "),s("a",{staticClass:"account",attrs:{href:e.account.url,target:"_blank"}},[t._v("\n @"+t._s(e.account.acct)+"\n ")])]),t._v(" "),s("div",{staticClass:"status-actions"},[e.sensitive?s("el-tag",{attrs:{type:"warning",size:"large"}},[t._v(t._s(t.$t("reports.sensitive")))]):t._e(),t._v(" "),s("el-tag",{attrs:{size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(e.visibility)))]),t._v(" "),s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{staticClass:"status-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v("\n "+t._s(t.$t("reports.changeScope"))),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[e.sensitive?t._e():s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(e.id,!0,e.visibility,t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.addSensitive"))+"\n ")]),t._v(" "),e.sensitive?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(e.id,!1,e.visibility,t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.removeSensitive"))+"\n ")]):t._e(),t._v(" "),"public"!==e.visibility?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(e.id,e.sensitive,"public",t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.public"))+"\n ")]):t._e(),t._v(" "),"private"!==e.visibility?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(e.id,e.sensitive,"private",t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.private"))+"\n ")]):t._e(),t._v(" "),"unlisted"!==e.visibility?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(e.id,e.sensitive,"unlisted",t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.unlisted"))+"\n ")]):t._e(),t._v(" "),s("el-dropdown-item",{nativeOn:{click:function(s){return t.deleteStatus(e.id,t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.deleteStatus"))+"\n ")])],1)],1)],1)])]),t._v(" "),s("div",{staticClass:"status-body"},[s("span",{staticClass:"status-content",domProps:{innerHTML:t._s(e.content)}}),t._v(" "),s("a",{staticClass:"account",attrs:{href:e.url,target:"_blank"}},[t._v("\n "+t._s(t.parseTimestamp(e.created_at))+"\n ")])])])}),1)},[],!1,null,null,null);o.options.__file="Statuses.vue";var c={name:"TimelineItem",components:{Statuses:o.exports},props:{report:{type:Object,required:!0}},methods:{changeReportState:function(t,e){this.$store.dispatch("ChangeReportState",{reportState:t,reportId:e})},capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},getStateType:function(t){switch(t){case"closed":return"info";case"resolved":return"success";default:return"primary"}},parseTimestamp:function(t){return a()(t).format("L HH:mm")},showDeactivatedButton:function(t){return this.$store.state.user.id!==t},handleDeactivation:function(t){var e=t.nickname;this.$store.dispatch("ToggleUserActivation",e)},handleDeletion:function(t){this.$store.dispatch("DeleteUser",t)},toggleTag:function(t,e){t.tags.includes(e)?this.$store.dispatch("RemoveTag",{users:[t],tag:e}):this.$store.dispatch("AddTag",{users:[t],tag:e})}}},l=(s("YqVV"),Object(i.a)(c,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-timeline-item",{staticClass:"timeline-item-container",attrs:{timestamp:t.parseTimestamp(t.report.created_at),placement:"top"}},[s("el-card",[s("div",{staticClass:"header-container"},[s("div",[s("h3",{staticClass:"report-title"},[t._v("Report on "+t._s(t.report.account.display_name))]),t._v(" "),s("h5",{staticClass:"id"},[t._v("ID: "+t._s(t.report.id))])]),t._v(" "),s("div",[s("el-tag",{attrs:{type:t.getStateType(t.report.state),size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(t.report.state)))]),t._v(" "),s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v(t._s(t.$t("reports.changeState"))),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},["resolved"!==t.report.state?s("el-dropdown-item",{nativeOn:{click:function(e){return t.changeReportState("resolved",t.report.id)}}},[t._v(t._s(t.$t("reports.resolve")))]):t._e(),t._v(" "),"open"!==t.report.state?s("el-dropdown-item",{nativeOn:{click:function(e){return t.changeReportState("open",t.report.id)}}},[t._v(t._s(t.$t("reports.reopen")))]):t._e(),t._v(" "),"closed"!==t.report.state?s("el-dropdown-item",{nativeOn:{click:function(e){return t.changeReportState("closed",t.report.id)}}},[t._v(t._s(t.$t("reports.close")))]):t._e()],1)],1),t._v(" "),s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{attrs:{plain:"",size:"small",icon:"el-icon-files"}},[t._v(t._s(t.$t("reports.moderateUser"))),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.showDeactivatedButton(t.report.account)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeactivation(t.report.account)}}},[t._v("\n "+t._s(t.report.account.deactivated?t.$t("users.activateAccount"):t.$t("users.deactivateAccount"))+"\n ")]):t._e(),t._v(" "),t.showDeactivatedButton(t.report.account.id)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeletion(t.report.account.id)}}},[t._v("\n "+t._s(t.$t("users.deleteAccount"))+"\n ")]):t._e(),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("force_nsfw")},attrs:{divided:!0},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.forceNsfw"))+"\n "),t.report.account.tags.includes("force_nsfw")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("strip_media")},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"strip_media")}}},[t._v("\n "+t._s(t.$t("users.stripMedia"))+"\n "),t.report.account.tags.includes("strip_media")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("force_unlisted")},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.forceUnlisted"))+"\n "),t.report.account.tags.includes("force_unlisted")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("sandbox")},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"sandbox")}}},[t._v("\n "+t._s(t.$t("users.sandbox"))+"\n "),t.report.account.tags.includes("sandbox")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),t.report.account.local?s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("disable_remote_subscription")},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableRemoteSubscription"))+"\n "),t.report.account.tags.includes("disable_remote_subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.report.account.local?s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("disable_any_subscription")},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableAnySubscription"))+"\n "),t.report.account.tags.includes("disable_any_subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e()],1)],1)],1)]),t._v(" "),s("div",[s("div",{staticClass:"line"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v("Account:")]),t._v(" "),s("img",{staticClass:"avatar-img",attrs:{src:t.report.account.avatar,alt:"avatar"}}),t._v(" "),s("a",{staticClass:"account",attrs:{href:t.report.account.url,target:"_blank"}},[s("span",{staticClass:"report-row-value"},[t._v(t._s(t.report.account.acct))])])]),t._v(" "),t.report.content.length>0?s("div",[s("div",{staticClass:"line"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v("Content:\n "),s("span",{staticClass:"report-row-value"},[t._v(t._s(t.report.content))])])]):t._e(),t._v(" "),s("div",[s("div",{staticClass:"line"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v("Actor:")]),t._v(" "),s("img",{staticClass:"avatar-img",attrs:{src:t.report.actor.avatar,alt:"avatar"}}),t._v(" "),s("a",{staticClass:"account",attrs:{href:t.report.actor.url,target:"_blank"}},[s("span",{staticClass:"report-row-value"},[t._v(t._s(t.report.actor.acct))])])]),t._v(" "),t.report.statuses.length>0?s("div",{staticClass:"statuses"},[s("el-collapse",[s("statuses",{attrs:{report:t.report}})],1)],1):t._e()])],1)},[],!1,null,null,null));l.options.__file="TimelineItem.vue";var u=l.exports,d=s("mSNy"),p={data:function(){return{filter:"open",options:[{value:"open",label:d.a.t("reportsFilter.open")},{value:"closed",label:d.a.t("reportsFilter.closed")},{value:"resolved",label:d.a.t("reportsFilter.resolved")}]}},created:function(){this.$store.dispatch("SetFilter",this.$data.filter)},methods:{toggleFilters:function(){this.$store.dispatch("SetFilter",this.$data.filter),this.$store.dispatch("ClearFetchedReports"),this.$store.dispatch("FetchReports")}}},v=(s("9rrl"),Object(i.a)(p,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-select",{staticClass:"select-field",attrs:{placeholder:t.$t("reportsFilter.inputPlaceholder"),clearable:"","value-key":"value"},on:{change:t.toggleFilters},model:{value:t.filter,callback:function(e){t.filter=e},expression:"filter"}},t._l(t.options,function(e){return s("el-option",{key:e.value,attrs:{label:e.label,value:e.value}},[t._v(t._s(e.label))])}),1)},[],!1,null,"07695bc4",null));v.options.__file="ReportsFilter.vue";var _={components:{TimelineItem:u,ReportsFilter:v.exports},computed:{loading:function(){return this.$store.state.users.loading},reports:function(){return this.$store.state.reports.fetchedReports}},mounted:function(){this.$store.dispatch("FetchReports")},created:function(){window.addEventListener("scroll",this.handleScroll)},destroyed:function(){window.removeEventListener("scroll",this.handleScroll)},methods:{handleScroll:function(t){document.documentElement.scrollHeight-document.documentElement.scrollTop===document.documentElement.clientHeight&&this.$store.dispatch("FetchReports")}}},j=(s("Hup8"),Object(i.a)(_,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"reports-container"},[s("h1",[t._v(t._s(t.$t("reports.reports")))]),t._v(" "),s("div",{staticClass:"filter-container"},[s("reports-filter")],1),t._v(" "),s("div",{staticClass:"block"},[s("el-timeline",{staticClass:"timeline"},t._l(t.reports,function(e){return s("timeline-item",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],key:e.id,attrs:{report:e}})}),1),t._v(" "),0===t.reports.length?s("div",{staticClass:"no-reports-message"},[s("p",[t._v("There are no reports to display")])]):t._e()],1)])},[],!1,null,"e32c7dc6",null));j.options.__file="index.vue";e.default=j.exports},hmQy:function(t,e,s){},j5HQ:function(t,e,s){"use strict";var r=s("WKah");s.n(r).a},nBu6:function(t,e,s){},tOKT:function(t,e,s){}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-598f"],{"9rrl":function(t,e,s){"use strict";var r=s("nBu6");s.n(r).a},Hup8:function(t,e,s){"use strict";var r=s("tOKT");s.n(r).a},RnhZ:function(t,e,s){var r={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-SG":"zavE","./en-SG.js":"zavE","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./ga":"USCx","./ga.js":"USCx","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it-ch":"bxKX","./it-ch.js":"bxKX","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ku":"JCF/","./ku.js":"JCF/","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function a(t){var e=n(t);return s(e)}function n(t){if(!s.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return r[t]}a.keys=function(){return Object.keys(r)},a.resolve=n,t.exports=a,a.id="RnhZ"},WKah:function(t,e,s){},YqVV:function(t,e,s){"use strict";var r=s("hmQy");s.n(r).a},cEOe:function(t,e,s){"use strict";s.r(e);var r=s("wd/R"),a=s.n(r),n={name:"Statuses",props:{report:{type:Object,required:!0}},methods:{capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},changeStatus:function(t,e,s,r){this.$store.dispatch("ChangeStatusScope",{statusId:t,isSensitive:e,visibility:s,reportId:r})},deleteStatus:function(t,e){var s=this;this.$confirm("Are you sure you want to delete this status?","Warning",{confirmButtonText:"OK",cancelButtonText:"Cancel",type:"warning"}).then(function(){s.$store.dispatch("DeleteStatus",{statusId:t,reportId:e}),s.$message({type:"success",message:"Delete completed"})}).catch(function(){s.$message({type:"info",message:"Delete canceled"})})},getStatusesTitle:function(t){return"Reported statuses: ".concat(t.length," item(s)")},parseTimestamp:function(t){return a()(t).format("YYYY-MM-DD HH:mm")}}},i=(s("j5HQ"),s("KHd+")),o=Object(i.a)(n,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-collapse-item",{attrs:{title:t.getStatusesTitle(t.report.statuses)}},t._l(t.report.statuses,function(e){return s("el-card",{key:e.id,staticClass:"status-card"},[s("div",{attrs:{slot:"header"},slot:"header"},[s("div",{staticClass:"status-header"},[s("div",{staticClass:"status-account-container"},[s("div",{staticClass:"status-account"},[s("img",{staticClass:"status-avatar-img",attrs:{src:e.account.avatar}}),t._v(" "),s("h3",{staticClass:"status-account-name"},[t._v(t._s(e.account.display_name))])]),t._v(" "),s("a",{staticClass:"account",attrs:{href:e.account.url,target:"_blank"}},[t._v("\n @"+t._s(e.account.acct)+"\n ")])]),t._v(" "),s("div",{staticClass:"status-actions"},[e.sensitive?s("el-tag",{attrs:{type:"warning",size:"large"}},[t._v(t._s(t.$t("reports.sensitive")))]):t._e(),t._v(" "),s("el-tag",{attrs:{size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(e.visibility)))]),t._v(" "),s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{staticClass:"status-actions-button",attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v("\n "+t._s(t.$t("reports.changeScope"))),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[e.sensitive?t._e():s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(e.id,!0,e.visibility,t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.addSensitive"))+"\n ")]),t._v(" "),e.sensitive?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(e.id,!1,e.visibility,t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.removeSensitive"))+"\n ")]):t._e(),t._v(" "),"public"!==e.visibility?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(e.id,e.sensitive,"public",t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.public"))+"\n ")]):t._e(),t._v(" "),"private"!==e.visibility?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(e.id,e.sensitive,"private",t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.private"))+"\n ")]):t._e(),t._v(" "),"unlisted"!==e.visibility?s("el-dropdown-item",{nativeOn:{click:function(s){return t.changeStatus(e.id,e.sensitive,"unlisted",t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.unlisted"))+"\n ")]):t._e(),t._v(" "),s("el-dropdown-item",{nativeOn:{click:function(s){return t.deleteStatus(e.id,t.report.id)}}},[t._v("\n "+t._s(t.$t("reports.deleteStatus"))+"\n ")])],1)],1)],1)])]),t._v(" "),s("div",{staticClass:"status-body"},[s("span",{staticClass:"status-content",domProps:{innerHTML:t._s(e.content)}}),t._v(" "),s("a",{staticClass:"account",attrs:{href:e.url,target:"_blank"}},[t._v("\n "+t._s(t.parseTimestamp(e.created_at))+"\n ")])])])}),1)},[],!1,null,null,null);o.options.__file="Statuses.vue";var c={name:"TimelineItem",components:{Statuses:o.exports},props:{report:{type:Object,required:!0}},methods:{changeReportState:function(t,e){this.$store.dispatch("ChangeReportState",{reportState:t,reportId:e})},capitalizeFirstLetter:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},getStateType:function(t){switch(t){case"closed":return"info";case"resolved":return"success";default:return"primary"}},parseTimestamp:function(t){return a()(t).format("L HH:mm")},showDeactivatedButton:function(t){return this.$store.state.user.id!==t},handleDeactivation:function(t){var e=t.nickname;this.$store.dispatch("ToggleUserActivation",e)},handleDeletion:function(t){this.$store.dispatch("DeleteUser",t)},toggleTag:function(t,e){t.tags.includes(e)?this.$store.dispatch("RemoveTag",{users:[t],tag:e}):this.$store.dispatch("AddTag",{users:[t],tag:e})}}},l=(s("YqVV"),Object(i.a)(c,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-timeline-item",{staticClass:"timeline-item-container",attrs:{timestamp:t.parseTimestamp(t.report.created_at),placement:"top"}},[s("el-card",[s("div",{staticClass:"header-container"},[s("div",[s("h3",{staticClass:"report-title"},[t._v("Report on "+t._s(t.report.account.display_name))]),t._v(" "),s("h5",{staticClass:"id"},[t._v("ID: "+t._s(t.report.id))])]),t._v(" "),s("div",[s("el-tag",{attrs:{type:t.getStateType(t.report.state),size:"large"}},[t._v(t._s(t.capitalizeFirstLetter(t.report.state)))]),t._v(" "),s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{attrs:{plain:"",size:"small",icon:"el-icon-edit"}},[t._v(t._s(t.$t("reports.changeState"))),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},["resolved"!==t.report.state?s("el-dropdown-item",{nativeOn:{click:function(e){return t.changeReportState("resolved",t.report.id)}}},[t._v(t._s(t.$t("reports.resolve")))]):t._e(),t._v(" "),"open"!==t.report.state?s("el-dropdown-item",{nativeOn:{click:function(e){return t.changeReportState("open",t.report.id)}}},[t._v(t._s(t.$t("reports.reopen")))]):t._e(),t._v(" "),"closed"!==t.report.state?s("el-dropdown-item",{nativeOn:{click:function(e){return t.changeReportState("closed",t.report.id)}}},[t._v(t._s(t.$t("reports.close")))]):t._e()],1)],1),t._v(" "),s("el-dropdown",{attrs:{trigger:"click"}},[s("el-button",{attrs:{plain:"",size:"small",icon:"el-icon-files"}},[t._v(t._s(t.$t("reports.moderateUser"))),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.showDeactivatedButton(t.report.account)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeactivation(t.report.account)}}},[t._v("\n "+t._s(t.report.account.deactivated?t.$t("users.activateAccount"):t.$t("users.deactivateAccount"))+"\n ")]):t._e(),t._v(" "),t.showDeactivatedButton(t.report.account.id)?s("el-dropdown-item",{nativeOn:{click:function(e){return t.handleDeletion(t.report.account.id)}}},[t._v("\n "+t._s(t.$t("users.deleteAccount"))+"\n ")]):t._e(),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("force_nsfw")},attrs:{divided:!0},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.forceNsfw"))+"\n "),t.report.account.tags.includes("force_nsfw")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("strip_media")},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"strip_media")}}},[t._v("\n "+t._s(t.$t("users.stripMedia"))+"\n "),t.report.account.tags.includes("strip_media")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("force_unlisted")},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.forceUnlisted"))+"\n "),t.report.account.tags.includes("force_unlisted")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("sandbox")},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"sandbox")}}},[t._v("\n "+t._s(t.$t("users.sandbox"))+"\n "),t.report.account.tags.includes("sandbox")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),t.report.account.local?s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("disable_remote_subscription")},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableRemoteSubscription"))+"\n "),t.report.account.tags.includes("disable_remote_subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),t.report.account.local?s("el-dropdown-item",{class:{"active-tag":t.report.account.tags.includes("disable_any_subscription")},nativeOn:{click:function(e){return t.toggleTag(t.report.account,"disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableAnySubscription"))+"\n "),t.report.account.tags.includes("disable_any_subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e()],1)],1)],1)]),t._v(" "),s("div",[s("div",{staticClass:"line"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v("Account:")]),t._v(" "),s("img",{staticClass:"avatar-img",attrs:{src:t.report.account.avatar,alt:"avatar"}}),t._v(" "),s("a",{staticClass:"account",attrs:{href:t.report.account.url,target:"_blank"}},[s("span",{staticClass:"report-row-value"},[t._v(t._s(t.report.account.acct))])])]),t._v(" "),t.report.content.length>0?s("div",[s("div",{staticClass:"line"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v("Content:\n "),s("span",{staticClass:"report-row-value"},[t._v(t._s(t.report.content))])])]):t._e(),t._v(" "),s("div",[s("div",{staticClass:"line"}),t._v(" "),s("span",{staticClass:"report-row-key"},[t._v("Actor:")]),t._v(" "),s("img",{staticClass:"avatar-img",attrs:{src:t.report.actor.avatar,alt:"avatar"}}),t._v(" "),s("a",{staticClass:"account",attrs:{href:t.report.actor.url,target:"_blank"}},[s("span",{staticClass:"report-row-value"},[t._v(t._s(t.report.actor.acct))])])]),t._v(" "),t.report.statuses.length>0?s("div",{staticClass:"statuses"},[s("el-collapse",[s("statuses",{attrs:{report:t.report}})],1)],1):t._e()])],1)},[],!1,null,null,null));l.options.__file="TimelineItem.vue";var u=l.exports,d=s("mSNy"),p={data:function(){return{filter:"open",options:[{value:"open",label:d.a.t("reportsFilter.open")},{value:"closed",label:d.a.t("reportsFilter.closed")},{value:"resolved",label:d.a.t("reportsFilter.resolved")}]}},created:function(){this.$store.dispatch("SetFilter",this.$data.filter)},methods:{toggleFilters:function(){this.$store.dispatch("SetFilter",this.$data.filter),this.$store.dispatch("ClearFetchedReports"),this.$store.dispatch("FetchReports")}}},v=(s("9rrl"),Object(i.a)(p,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-select",{staticClass:"select-field",attrs:{placeholder:t.$t("reportsFilter.inputPlaceholder"),clearable:"","value-key":"value"},on:{change:t.toggleFilters},model:{value:t.filter,callback:function(e){t.filter=e},expression:"filter"}},t._l(t.options,function(e){return s("el-option",{key:e.value,attrs:{label:e.label,value:e.value}},[t._v(t._s(e.label))])}),1)},[],!1,null,"07695bc4",null));v.options.__file="ReportsFilter.vue";var _={components:{TimelineItem:u,ReportsFilter:v.exports},computed:{loading:function(){return this.$store.state.users.loading},reports:function(){return this.$store.state.reports.fetchedReports}},mounted:function(){this.$store.dispatch("FetchReports")},created:function(){window.addEventListener("scroll",this.handleScroll)},destroyed:function(){window.removeEventListener("scroll",this.handleScroll)},methods:{handleScroll:function(t){document.documentElement.scrollHeight-document.documentElement.scrollTop===document.documentElement.clientHeight&&this.$store.dispatch("FetchReports")}}},j=(s("Hup8"),Object(i.a)(_,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"reports-container"},[s("h1",[t._v(t._s(t.$t("reports.reports")))]),t._v(" "),s("div",{staticClass:"filter-container"},[s("reports-filter")],1),t._v(" "),s("div",{staticClass:"block"},[s("el-timeline",{staticClass:"timeline"},t._l(t.reports,function(e){return s("timeline-item",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],key:e.id,attrs:{report:e}})}),1),t._v(" "),0===t.reports.length?s("div",{staticClass:"no-reports-message"},[s("p",[t._v("There are no reports to display")])]):t._e()],1)])},[],!1,null,"e32c7dc6",null));j.options.__file="index.vue";e.default=j.exports},hmQy:function(t,e,s){},j5HQ:function(t,e,s){"use strict";var r=s("WKah");s.n(r).a},nBu6:function(t,e,s){},tOKT:function(t,e,s){}}]); +//# sourceMappingURL=chunk-598f.dd8089ce.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-598f.dd8089ce.js.map b/priv/static/adminfe/static/js/chunk-598f.dd8089ce.js.map new file mode 100644 index 000000000..4ebe69933 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-598f.dd8089ce.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/reports/components/ReportsFilter.vue?c1a0","webpack:///./src/views/reports/index.vue?c335","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/reports/components/TimelineItem.vue?f7d5","webpack:///./src/views/reports/index.vue?86df","webpack:///./src/views/reports/components/Statuses.vue?6dc1","webpack:///src/views/reports/components/Statuses.vue","webpack:///./src/views/reports/components/Statuses.vue","webpack:///./src/views/reports/components/Statuses.vue?1846","webpack:///./src/views/reports/components/TimelineItem.vue?4cd1","webpack:///src/views/reports/components/TimelineItem.vue","webpack:///./src/views/reports/components/TimelineItem.vue","webpack:///./src/views/reports/components/TimelineItem.vue?9fa7","webpack:///./src/views/reports/components/ReportsFilter.vue?e3b7","webpack:///src/views/reports/components/ReportsFilter.vue","webpack:///./src/views/reports/components/ReportsFilter.vue","webpack:///./src/views/reports/components/ReportsFilter.vue?9fab","webpack:///./src/views/reports/index.vue?3bcc","webpack:///src/views/reports/index.vue","webpack:///./src/views/reports/index.vue","webpack:///./src/views/reports/components/Statuses.vue?f720"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ReportsFilter_vue_vue_type_style_index_0_id_07695bc4_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_e32c7dc6_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-SG","./en-SG.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","id","webpackContextResolve","o","e","Error","code","keys","Object","resolve","module","exports","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_TimelineItem_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","components_Statusesvue_type_script_lang_js_","name","props","report","type","required","methods","capitalizeFirstLetter","str","charAt","toUpperCase","slice","changeStatus","statusId","isSensitive","visibility","reportId","this","$store","dispatch","deleteStatus","_this","$confirm","confirmButtonText","cancelButtonText","then","$message","message","catch","getStatusesTitle","statuses","concat","length","parseTimestamp","timestamp","moment_default","format","component","componentNormalizer","_vm","_h","$createElement","_c","_self","attrs","title","_l","status","key","staticClass","slot","src","account","avatar","_v","_s","display_name","href","url","target","acct","size","$t","_e","trigger","plain","icon","sensitive","nativeOn","click","$event","domProps","innerHTML","content","created_at","options","__file","components_TimelineItemvue_type_script_lang_js_","components","Statuses","changeReportState","reportState","getStateType","state","showDeactivatedButton","user","handleDeactivation","_ref","nickname","handleDeletion","toggleTag","tag","tags","includes","users","TimelineItem_component","placement","deactivated","class","active-tag","divided","alt","actor","TimelineItem","components_ReportsFiltervue_type_script_lang_js_","data","filter","value","label","lang","t","created","$data","toggleFilters","ReportsFilter_component","placeholder","clearable","value-key","on","change","model","callback","$$v","expression","item","views_reportsvue_type_script_lang_js_","ReportsFilter","computed","loading","reports","fetchedReports","mounted","window","addEventListener","handleScroll","destroyed","removeEventListener","document","documentElement","scrollHeight","scrollTop","clientHeight","reports_component","directives","rawName","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Statuses_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"wGAAA,IAAAA,EAAAC,EAAA,QAAAA,EAAAC,EAAAF,GAAygB,qCCAzgB,IAAAG,EAAAF,EAAA,QAAAA,EAAAC,EAAAC,GAA+e,wBCA/e,IAAAC,GACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,O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","file":"static/js/chunk-598f.dd8089ce.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=style&index=0&id=07695bc4&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=style&index=0&id=07695bc4&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=e32c7dc6&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=e32c7dc6&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-SG\": \"zavE\",\n\t\"./en-SG.js\": \"zavE\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimelineItem.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimelineItem.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"reports-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('reports.reports')))]),_vm._v(\" \"),_c('div',{staticClass:\"filter-container\"},[_c('reports-filter')],1),_vm._v(\" \"),_c('div',{staticClass:\"block\"},[_c('el-timeline',{staticClass:\"timeline\"},_vm._l((_vm.reports),function(report){return _c('timeline-item',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],key:report.id,attrs:{\"report\":report}})}),1),_vm._v(\" \"),(_vm.reports.length === 0)?_c('div',{staticClass:\"no-reports-message\"},[_c('p',[_vm._v(\"There are no reports to display\")])]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Statuses.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Statuses.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Statuses.vue?vue&type=template&id=2b85301a&\"\nimport script from \"./Statuses.vue?vue&type=script&lang=js&\"\nexport * from \"./Statuses.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Statuses.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Statuses.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-collapse-item',{attrs:{\"title\":_vm.getStatusesTitle(_vm.report.statuses)}},_vm._l((_vm.report.statuses),function(status){return _c('el-card',{key:status.id,staticClass:\"status-card\"},[_c('div',{attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('div',{staticClass:\"status-header\"},[_c('div',{staticClass:\"status-account-container\"},[_c('div',{staticClass:\"status-account\"},[_c('img',{staticClass:\"status-avatar-img\",attrs:{\"src\":status.account.avatar}}),_vm._v(\" \"),_c('h3',{staticClass:\"status-account-name\"},[_vm._v(_vm._s(status.account.display_name))])]),_vm._v(\" \"),_c('a',{staticClass:\"account\",attrs:{\"href\":status.account.url,\"target\":\"_blank\"}},[_vm._v(\"\\n @\"+_vm._s(status.account.acct)+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"status-actions\"},[(status.sensitive)?_c('el-tag',{attrs:{\"type\":\"warning\",\"size\":\"large\"}},[_vm._v(_vm._s(_vm.$t('reports.sensitive')))]):_vm._e(),_vm._v(\" \"),_c('el-tag',{attrs:{\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(status.visibility)))]),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{staticClass:\"status-actions-button\",attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.changeScope'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(!status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(status.id, true, status.visibility, _vm.report.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.addSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(status.sensitive)?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(status.id, false, status.visibility, _vm.report.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.removeSensitive'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(status.visibility !== 'public')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(status.id, status.sensitive, 'public', _vm.report.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.public'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(status.visibility !== 'private')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(status.id, status.sensitive, 'private', _vm.report.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.private'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(status.visibility !== 'unlisted')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeStatus(status.id, status.sensitive, 'unlisted', _vm.report.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.unlisted'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.deleteStatus(status.id, _vm.report.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('reports.deleteStatus'))+\"\\n \")])],1)],1)],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[_c('span',{staticClass:\"status-content\",domProps:{\"innerHTML\":_vm._s(status.content)}}),_vm._v(\" \"),_c('a',{staticClass:\"account\",attrs:{\"href\":status.url,\"target\":\"_blank\"}},[_vm._v(\"\\n \"+_vm._s(_vm.parseTimestamp(status.created_at))+\"\\n \")])])])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimelineItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TimelineItem.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./TimelineItem.vue?vue&type=template&id=e59a02ba&\"\nimport script from \"./TimelineItem.vue?vue&type=script&lang=js&\"\nexport * from \"./TimelineItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TimelineItem.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"TimelineItem.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-timeline-item',{staticClass:\"timeline-item-container\",attrs:{\"timestamp\":_vm.parseTimestamp(_vm.report.created_at),\"placement\":\"top\"}},[_c('el-card',[_c('div',{staticClass:\"header-container\"},[_c('div',[_c('h3',{staticClass:\"report-title\"},[_vm._v(\"Report on \"+_vm._s(_vm.report.account.display_name))]),_vm._v(\" \"),_c('h5',{staticClass:\"id\"},[_vm._v(\"ID: \"+_vm._s(_vm.report.id))])]),_vm._v(\" \"),_c('div',[_c('el-tag',{attrs:{\"type\":_vm.getStateType(_vm.report.state),\"size\":\"large\"}},[_vm._v(_vm._s(_vm.capitalizeFirstLetter(_vm.report.state)))]),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-edit\"}},[_vm._v(_vm._s(_vm.$t('reports.changeState'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.report.state !== 'resolved')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('resolved', _vm.report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.resolve')))]):_vm._e(),_vm._v(\" \"),(_vm.report.state !== 'open')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('open', _vm.report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.reopen')))]):_vm._e(),_vm._v(\" \"),(_vm.report.state !== 'closed')?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.changeReportState('closed', _vm.report.id)}}},[_vm._v(_vm._s(_vm.$t('reports.close')))]):_vm._e()],1)],1),_vm._v(\" \"),_c('el-dropdown',{attrs:{\"trigger\":\"click\"}},[_c('el-button',{attrs:{\"plain\":\"\",\"size\":\"small\",\"icon\":\"el-icon-files\"}},[_vm._v(_vm._s(_vm.$t('reports.moderateUser'))),_c('i',{staticClass:\"el-icon-arrow-down el-icon--right\"})]),_vm._v(\" \"),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[(_vm.showDeactivatedButton(_vm.report.account))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeactivation(_vm.report.account)}}},[_vm._v(\"\\n \"+_vm._s(_vm.report.account.deactivated ? _vm.$t('users.activateAccount') : _vm.$t('users.deactivateAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDeactivatedButton(_vm.report.account.id))?_c('el-dropdown-item',{nativeOn:{\"click\":function($event){return _vm.handleDeletion(_vm.report.account.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.deleteAccount'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.report.account.tags.includes('force_nsfw') },attrs:{\"divided\":true},nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.report.account, 'force_nsfw')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceNsfw'))+\"\\n \"),(_vm.report.account.tags.includes('force_nsfw'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.report.account.tags.includes('strip_media') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.report.account, 'strip_media')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.stripMedia'))+\"\\n \"),(_vm.report.account.tags.includes('strip_media'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.report.account.tags.includes('force_unlisted') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.report.account, 'force_unlisted')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.forceUnlisted'))+\"\\n \"),(_vm.report.account.tags.includes('force_unlisted'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),_c('el-dropdown-item',{class:{ 'active-tag': _vm.report.account.tags.includes('sandbox') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.report.account, 'sandbox')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.sandbox'))+\"\\n \"),(_vm.report.account.tags.includes('sandbox'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]),_vm._v(\" \"),(_vm.report.account.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.report.account.tags.includes('disable_remote_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.report.account, 'disable_remote_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableRemoteSubscription'))+\"\\n \"),(_vm.report.account.tags.includes('disable_remote_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.report.account.local)?_c('el-dropdown-item',{class:{ 'active-tag': _vm.report.account.tags.includes('disable_any_subscription') },nativeOn:{\"click\":function($event){return _vm.toggleTag(_vm.report.account, 'disable_any_subscription')}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('users.disableAnySubscription'))+\"\\n \"),(_vm.report.account.tags.includes('disable_any_subscription'))?_c('i',{staticClass:\"el-icon-check\"}):_vm._e()]):_vm._e()],1)],1)],1)]),_vm._v(\" \"),_c('div',[_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('span',{staticClass:\"report-row-key\"},[_vm._v(\"Account:\")]),_vm._v(\" \"),_c('img',{staticClass:\"avatar-img\",attrs:{\"src\":_vm.report.account.avatar,\"alt\":\"avatar\"}}),_vm._v(\" \"),_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.report.account.url,\"target\":\"_blank\"}},[_c('span',{staticClass:\"report-row-value\"},[_vm._v(_vm._s(_vm.report.account.acct))])])]),_vm._v(\" \"),(_vm.report.content.length > 0)?_c('div',[_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('span',{staticClass:\"report-row-key\"},[_vm._v(\"Content:\\n \"),_c('span',{staticClass:\"report-row-value\"},[_vm._v(_vm._s(_vm.report.content))])])]):_vm._e(),_vm._v(\" \"),_c('div',[_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('span',{staticClass:\"report-row-key\"},[_vm._v(\"Actor:\")]),_vm._v(\" \"),_c('img',{staticClass:\"avatar-img\",attrs:{\"src\":_vm.report.actor.avatar,\"alt\":\"avatar\"}}),_vm._v(\" \"),_c('a',{staticClass:\"account\",attrs:{\"href\":_vm.report.actor.url,\"target\":\"_blank\"}},[_c('span',{staticClass:\"report-row-value\"},[_vm._v(_vm._s(_vm.report.actor.acct))])])]),_vm._v(\" \"),(_vm.report.statuses.length > 0)?_c('div',{staticClass:\"statuses\"},[_c('el-collapse',[_c('statuses',{attrs:{\"report\":_vm.report}})],1)],1):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportsFilter.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ReportsFilter.vue?vue&type=template&id=07695bc4&scoped=true&\"\nimport script from \"./ReportsFilter.vue?vue&type=script&lang=js&\"\nexport * from \"./ReportsFilter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReportsFilter.vue?vue&type=style&index=0&id=07695bc4&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"07695bc4\",\n null\n \n)\n\ncomponent.options.__file = \"ReportsFilter.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-select',{staticClass:\"select-field\",attrs:{\"placeholder\":_vm.$t('reportsFilter.inputPlaceholder'),\"clearable\":\"\",\"value-key\":\"value\"},on:{\"change\":_vm.toggleFilters},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}},[_vm._v(_vm._s(item.label))])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=e32c7dc6&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=e32c7dc6&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e32c7dc6\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Statuses.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Statuses.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-5e57.7313703a.js b/priv/static/adminfe/static/js/chunk-5e57.7313703a.js deleted file mode 100644 index e16366179..000000000 --- a/priv/static/adminfe/static/js/chunk-5e57.7313703a.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-5e57"],{"+qaP":function(t,e,a){"use strict";var i=a("60OA");a.n(i).a},"2q6O":function(t,e,a){"use strict";var i=a("Scsy");a.n(i).a},"4NUT":function(t,e,a){},"4b9x":function(t,e,a){"use strict";var i=a("wgcy");a.n(i).a},"60OA":function(t,e,a){},"9p49":function(t,e,a){},DPt0:function(t,e,a){"use strict";var i=a("x6RV");a.n(i).a},Dd5M:function(t,e,a){},FCne:function(t,e,a){"use strict";var i=a("OCuP");a.n(i).a},KFE3:function(t,e,a){"use strict";var i=a("mSK5");a.n(i).a},NyLv:function(t,e,a){"use strict";var i=a("Rh6R");a.n(i).a},OCuP:function(t,e,a){},PYLh:function(t,e,a){},Px65:function(t,e,a){},PygS:function(t,e,a){"use strict";var i=a("TtMh");a.n(i).a},RTtG:function(t,e,a){"use strict";var i=a("Zgs2");a.n(i).a},Rh6R:function(t,e,a){},Scsy:function(t,e,a){},TOIk:function(t,e,a){},TRR9:function(t,e,a){},TtMh:function(t,e,a){},TudB:function(t,e,a){},"UbP/":function(t,e,a){},UdS4:function(t,e,a){"use strict";var i=a("WwJU");a.n(i).a},V9mB:function(t,e,a){"use strict";var i=a("Dd5M");a.n(i).a},"WvM+":function(t,e,a){"use strict";var i=a("TRR9");a.n(i).a},WwJU:function(t,e,a){},YcIK:function(t,e,a){"use strict";a.r(e);var i=a("lSNA"),s=a.n(i),n=a("MVZn"),l=a.n(n),r=a("L2JU"),o=a("mSNy"),u={name:"ActivityPub",computed:l()({},Object(r.b)(["activityPubConfig","userConfig"]),{activityPub:function(){return this.activityPubConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"},user:function(){return this.userConfig}}),methods:{updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},c=(a("qEST"),a("KHd+")),p=Object(c.a)(u,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"activityPub",attrs:{model:t.activityPub,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Accept blocks"}},[a("el-switch",{attrs:{value:t.activityPub.accept_blocks},on:{change:function(e){return t.updateSetting(e,"activitypub","accept_blocks")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whether to accept incoming block activities from other instances")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Unfollow blocked"}},[a("el-switch",{attrs:{value:t.activityPub.unfollow_blocked},on:{change:function(e){return t.updateSetting(e,"activitypub","unfollow_blocked")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whether blocks result in people getting unfollowed")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Outgoing blocks"}},[a("el-switch",{attrs:{value:t.activityPub.outgoing_blocks},on:{change:function(e){return t.updateSetting(e,"activitypub","outgoing_blocks")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whether to federate blocks to other instances")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Follow handshake timeout"}},[a("el-input-number",{staticClass:"top-margin",attrs:{value:t.activityPub.follow_handshake_timeout,step:100,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"activitypub","follow_handshake_timeout")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Sign object fetches"}},[a("el-switch",{attrs:{value:t.activityPub.sign_object_fetches},on:{change:function(e){return t.updateSetting(e,"activitypub","sign_object_fetches")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Sign object fetches with HTTP signatures")])],1)],1),t._v(" "),a("el-form",{ref:"user",attrs:{model:t.user,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Deny follow blocked"}},[a("el-switch",{attrs:{value:t.user.deny_follow_blocked},on:{change:function(e){return t.updateSetting(e,"user","deny_follow_blocked")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whether to disallow following an account that has blocked the user in question")])],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null);p.options.__file="ActivityPub.vue";var m=p.exports,d={name:"Authentication",computed:l()({},Object(r.b)(["pleromaAuthenticatorConfig","ldapConfig","authConfig","ueberauthConfig","oauth2Config","facebookConfig","googleConfig","twitterConfig","microsoftConfig"]),{auth:function(){return this.authConfig},ldap:function(){return this.ldapConfig},oauth2:function(){return this.oauth2Config},pleromaAuthenticator:function(){return this.pleromaAuthenticatorConfig},ueberauth:function(){return this.ueberauthConfig},facebook:function(){return this.facebookConfig},google:function(){return this.googleConfig},twitter:function(){return this.twitterConfig},microsoft:function(){return this.microsoftConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},f=(a("4b9x"),Object(c.a)(d,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"pleromaAuthenticator",attrs:{model:t.pleromaAuthenticator,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Authentication type"}},[a("el-select",{attrs:{value:t.pleromaAuthenticator.value,clearable:""},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Auth.Authenticator","value")}}},[a("el-option",{attrs:{label:"None",value:""}}),t._v(" "),a("el-option",{attrs:{label:"Pleroma.Web.Auth.PleromaAuthenticator // Default database authenticator",value:"Pleroma.Web.Auth.PleromaAuthenticator"}}),t._v(" "),a("el-option",{attrs:{label:"Pleroma.Web.Auth.LDAPAuthenticator // LDAP authenticator",value:"Pleroma.Web.Auth.LDAPAuthenticator"}})],1)],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"auth",attrs:{model:t.auth,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Authentication settings:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Auth template"}},[a("el-input",{attrs:{value:t.auth.auth_template},on:{input:function(e){return t.updateSetting(e,"auth","auth_template")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Authentication form template. By default it's\n "),a("span",{staticClass:"code"},[t._v("show.html")]),t._v(" which corresponds to\n "),a("span",{staticClass:"code"},[t._v("lib/pleroma/web/templates/o_auth/o_auth/show.html.eex.")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"OAuth consumer template"}},[a("el-input",{attrs:{value:t.auth.oauth_consumer_template},on:{input:function(e){return t.updateSetting(e,"auth","oauth_consumer_template")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("OAuth consumer mode authentication form template. By default it's\n "),a("span",{staticClass:"code"},[t._v("consumer.html")]),t._v(" which corresponds to\n "),a("span",{staticClass:"code"},[t._v("lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex.")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"OAuth consumer strategies"}},[a("el-input",{attrs:{value:t.auth.oauth_consumer_strategies},on:{input:function(e){return t.updateSetting(e,"auth","oauth_consumer_strategies")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The list of enabled OAuth consumer strategies; by default it's set by\n "),a("span",{staticClass:"code"},[t._v("OAUTH_CONSUMER_STRATEGIES")]),t._v("\n environment variable. You can enter values in the following format: "),a("span",{staticClass:"code"},[t._v("'a:foo b:baz'")])])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"ldap",attrs:{model:t.ldap,"label-width":t.labelWidth}},[a("el-form-item",{staticClass:"options-paragraph-container"},[a("p",{staticClass:"options-paragraph"},[t._v("Use LDAP for user authentication. When a user logs in to the Pleroma\n instance, the name and password will be verified by trying to authenticate\n (bind) to an LDAP server. If a user exists in the LDAP directory but there\n is no account with the same name yet on the Pleroma instance then a new\n Pleroma account will be created with the same name as the LDAP user name.")])]),t._v(" "),a("el-form-item",{attrs:{label:"LDAP Authenticator:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:t.ldap.enabled},on:{change:function(e){return t.updateSetting(e,"ldap","enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enables LDAP authentication")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Host"}},[a("el-input",{attrs:{value:t.ldap.host},on:{input:function(e){return t.updateSetting(e,"ldap","host")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("LDAP server hostname")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:t.ldap.port},on:{input:function(e){return t.updateSetting(e,"ldap","port")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("LDAP port, e.g. 389 or 636")])],1),t._v(" "),a("el-form-item",{attrs:{label:"SSL"}},[a("el-switch",{attrs:{value:t.ldap.ssl},on:{change:function(e){return t.updateSetting(e,"ldap","ssl")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("True to use SSL, usually implies the port 636")])],1),t._v(" "),a("el-form-item",{attrs:{label:"TLS"}},[a("el-switch",{attrs:{value:t.ldap.tls},on:{change:function(e){return t.updateSetting(e,"ldap","tls")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("True to start TLS, usually implies the port 389")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Base"}},[a("el-input",{attrs:{value:t.ldap.base},on:{input:function(e){return t.updateSetting(e,"ldap","base")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("LDAP base, e.g. "),a("span",{staticClass:"code"},[t._v("'dc=example,dc=com'")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"UID"}},[a("el-input",{attrs:{value:t.ldap.uid},on:{input:function(e){return t.updateSetting(e,"ldap","uid")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("LDAP attribute name to authenticate the user, e.g. when\n "),a("span",{staticClass:"code"},[t._v("'cn'")]),t._v(", the filter will be "),a("span",{staticClass:"code"},[t._v("'cn=username,base'")])])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"ueberauth",attrs:{model:t.ueberauth,"label-width":t.labelWidth}},[a("el-form-item",{staticClass:"options-paragraph-container",attrs:{label:"OAuth consumer mode"}},[a("p",{staticClass:"options-paragraph"},[t._v("\n OAuth consumer mode allows sign in / sign up via external OAuth providers\n (e.g. Twitter, Facebook, Google, Microsoft, etc.). Implementation is based on Ueberauth; see the list of\n "),a("a",{attrs:{href:"https://github.com/ueberauth/ueberauth/wiki/List-of-Strategies",rel:"nofollow noreferrer noopener",target:"_blank"}},[t._v("\n available strategies.\n ")])]),t._v(" "),a("p",{staticClass:"options-paragraph"},[t._v("\n Note: each strategy is shipped as a separate dependency; in order to get the strategies, run\n "),a("span",{staticClass:"code"},[t._v('OAUTH_CONSUMER_STRATEGIES="..." mix deps.get')]),t._v(",\n e.g. "),a("span",{staticClass:"code"},[t._v('OAUTH_CONSUMER_STRATEGIES="twitter facebook google microsoft" mix deps.get')]),t._v(".\n The server should also be started with "),a("span",{staticClass:"code"},[t._v('OAUTH_CONSUMER_STRATEGIES="..." mix phx.server')]),t._v("\n in case you enable any strategies.\n ")]),t._v(" "),a("p",{staticClass:"options-paragraph"},[t._v("\n Note: each strategy requires separate setup (on external provider side and Pleroma side).\n Below are the guidelines on setting up most popular strategies.\n ")]),t._v(" "),a("p",{staticClass:"options-paragraph"},[t._v("\n Note: make sure that "),a("span",{staticClass:"code"},[t._v("'SameSite=Lax'")]),t._v(" is set in\n "),a("span",{staticClass:"code"},[t._v("extra_cookie_attrs")]),t._v(" when you have this feature enabled.\n OAuth consumer mode will not work with "),a("span",{staticClass:"code"},[t._v("'SameSite=Strict'")])]),t._v(" "),a("p",{staticClass:"options-paragraph"},[t._v("For Twitter,\n "),a("a",{attrs:{href:"https://developer.twitter.com/en/apps",rel:"nofollow noreferrer noopener",target:"_blank"}},[t._v("\n register an app,\n ")]),t._v("\n configure callback URL to "),a("span",{staticClass:"code"},[t._v("https:///oauth/twitter/callback")])]),t._v(" "),a("p",{staticClass:"options-paragraph"},[t._v("For Facebook,\n "),a("a",{attrs:{href:"https://developers.facebook.com/apps",rel:"nofollow noreferrer noopener",target:"_blank"}},[t._v("\n register an app,\n ")]),t._v("\n configure callback URL to "),a("span",{staticClass:"code"},[t._v("https:///oauth/facebook/callback")]),t._v(",\n enable Facebook Login service at\n "),a("span",{staticClass:"code"},[t._v("https://developers.facebook.com/apps//fb-login/settings/")])]),t._v(" "),a("p",{staticClass:"options-paragraph"},[t._v("For Google,\n "),a("a",{attrs:{href:"https://console.developers.google.com/",rel:"nofollow noreferrer noopener",target:"_blank"}},[t._v("\n register an app,\n ")]),t._v("\n configure callback URL to "),a("span",{staticClass:"code"},[t._v("https:///oauth/google/callback")])]),t._v(" "),a("p",{staticClass:"options-paragraph"},[t._v("For Microsoft,\n "),a("a",{attrs:{href:"https://portal.azure.com",rel:"nofollow noreferrer noopener",target:"_blank"}},[t._v("\n register an app,\n ")]),t._v("\n configure callback URL to "),a("span",{staticClass:"code"},[t._v("https:///oauth/microsoft/callback")])]),t._v(" "),a("p",{staticClass:"options-paragraph"},[t._v("\n Once the app is configured on external OAuth provider side, add app's credentials and strategy-specific settings\n per strategy's documentation (e.g.\n "),a("a",{attrs:{href:"https://github.com/ueberauth/ueberauth_twitter",rel:"nofollow noreferrer noopener",target:"_blank"}},[t._v("\n ueberauth_twitter\n ")]),t._v(").\n ")])]),t._v(" "),a("el-form-item",{attrs:{label:"Ueberauth:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Base path"}},[a("el-input",{attrs:{value:t.ueberauth.base_path},on:{input:function(e){return t.updateSetting(e,"ueberauth","base_path")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"facebook",attrs:{model:t.facebook,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Facebook:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Client ID"}},[a("el-input",{attrs:{value:t.facebook.client_id},on:{input:function(e){return t.updateSetting(e,"Ueberauth.Strategy.Facebook.OAuth","client_id")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Client secret"}},[a("el-input",{attrs:{value:t.facebook.client_secret},on:{input:function(e){return t.updateSetting(e,"Ueberauth.Strategy.Facebook.OAuth","client_secret")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Redirect URI"}},[a("el-input",{attrs:{value:t.facebook.redirect_uri},on:{input:function(e){return t.updateSetting(e,"Ueberauth.Strategy.Facebook.OAuth","redirect_uri")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"twitter",attrs:{model:t.twitter,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Twitter:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Consumer key"}},[a("el-input",{attrs:{value:t.twitter.consumer_key},on:{input:function(e){return t.updateSetting(e,"Ueberauth.Strategy.Twitter.OAuth","consumer_key")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Consumer secret"}},[a("el-input",{attrs:{value:t.twitter.consumer_secret},on:{input:function(e){return t.updateSetting(e,"Ueberauth.Strategy.Twitter.OAuth","consumer_secret")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"google",attrs:{model:t.google,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Google:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Client ID"}},[a("el-input",{attrs:{value:t.google.client_id},on:{input:function(e){return t.updateSetting(e,"Ueberauth.Strategy.Google.OAuth","client_id")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Client secret"}},[a("el-input",{attrs:{value:t.google.client_secret},on:{input:function(e){return t.updateSetting(e,"Ueberauth.Strategy.Google.OAuth","client_secret")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Redirect URI"}},[a("el-input",{attrs:{value:t.google.redirect_uri},on:{input:function(e){return t.updateSetting(e,"Ueberauth.Strategy.Google.OAuth","redirect_uri")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"microsoft",attrs:{model:t.microsoft,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Microsoft:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Client ID"}},[a("el-input",{attrs:{value:t.microsoft.client_id},on:{input:function(e){return t.updateSetting(e,"Ueberauth.Strategy.Microsoft.OAuth","client_id")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Client secret"}},[a("el-input",{attrs:{value:t.microsoft.client_secret},on:{input:function(e){return t.updateSetting(e,"Ueberauth.Strategy.Microsoft.OAuth","client_secret")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"oauth2",attrs:{model:t.oauth2,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"OAuth 2.0 Provider:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Token expires in (s)"}},[a("el-input-number",{attrs:{value:t.oauth2.token_expires_in,step:10,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"oauth2","token_expires_in")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The lifetime in seconds of the access token")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Issue new refresh token"}},[a("el-switch",{attrs:{value:t.oauth2.issue_new_refresh_token},on:{change:function(e){return t.updateSetting(e,"oauth2","issue_new_refresh_token")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Keeps old refresh token or generate new refresh token when to obtain an access token")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Clean expired token"}},[a("el-switch",{attrs:{value:t.oauth2.clean_expired_tokens},on:{change:function(e){return t.updateSetting(e,"oauth2","clean_expired_tokens")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enable a background job to clean expired oauth tokens. Defaults to false.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Clean expired token interval"}},[a("el-input-number",{attrs:{value:t.oauth2.clean_expired_tokens_interval/36e5,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(36e5*e,"oauth2","clean_expired_tokens_interval")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Interval to run the job to clean expired tokens. Defaults to 24 hours.")])],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));f.options.__file="Authentication.vue";var v=f.exports,h={name:"AutoLinker",computed:l()({},Object(r.b)(["autoLinkerConfig"]),{auto_linker:function(){return this.autoLinkerConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"},loading:function(){return this.$store.state.settings.loading},booleanClass:function(){return this.getBooleanValue("class")},booleanRel:function(){return this.getBooleanValue("rel")},booleanTruncate:function(){return this.getBooleanValue("truncate")}}),methods:{getBooleanValue:function(t){var e=this.autoLinkerConfig.opts[t];return"string"==typeof e||"number"==typeof e},getNumValue:function(t){return this.autoLinkerConfig.opts[t]||0},getStringValue:function(t){return this.autoLinkerConfig.opts[t]||""},processTwoTypeValue:function(t,e,a,i){if(!0===t){var s="truncate"===i?0:"";this.processNestedData(s,e,a,i)}else this.processNestedData(t,e,a,i)},processNestedData:function(t,e,a,i){var n=l()({},this.$store.state.settings.settings[e][a],s()({},i,t));this.updateSetting(n,e,a)},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},_=(a("cyzs"),Object(c.a)(h,function(){var t=this,e=t.$createElement,a=t._self._c||e;return t.loading?t._e():a("el-form",{ref:"auto_linker",attrs:{model:t.auto_linker,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Class"}},[a("el-switch",{attrs:{value:t.booleanClass},on:{change:function(e){return t.processTwoTypeValue(e,"auto_linker","opts","class")}}}),t._v(" "),t.booleanClass?t._e():a("p",{staticClass:"expl"},[t._v("Specify the class to be added to the generated link. False to clear.")])],1),t._v(" "),t.booleanClass?a("el-form-item",[a("el-input",{attrs:{value:t.getStringValue("class")},on:{input:function(e){return t.processTwoTypeValue(e,"auto_linker","opts","class")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Specify the class to be added to the generated link. False to clear.")])],1):t._e(),t._v(" "),a("el-form-item",{attrs:{label:"Rel"}},[a("el-switch",{attrs:{value:t.booleanRel},on:{change:function(e){return t.processTwoTypeValue(e,"auto_linker","opts","rel")}}}),t._v(" "),t.booleanRel?t._e():a("p",{staticClass:"expl"},[t._v("Override the rel attribute. False to clear")])],1),t._v(" "),t.booleanRel?a("el-form-item",[a("el-input",{attrs:{value:t.getStringValue("rel")},on:{input:function(e){return t.processTwoTypeValue(e,"auto_linker","opts","rel")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Override the rel attribute. False to clear")])],1):t._e(),t._v(" "),a("el-form-item",{attrs:{label:"New window"}},[a("el-switch",{attrs:{value:t.auto_linker.opts.new_window},on:{change:function(e){return t.processNestedData(e,"auto_linker","opts","new_window")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Set to false to remove "),a("span",{staticClass:"code"},[t._v("target='_blank'")]),t._v(" attribute")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Scheme"}},[a("el-switch",{attrs:{value:t.auto_linker.opts.scheme},on:{change:function(e){return t.processNestedData(e,"auto_linker","opts","scheme")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Set to true to link urls with schema "),a("span",{staticClass:"code"},[t._v("http://google.com")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Truncate"}},[a("el-switch",{attrs:{value:t.booleanTruncate},on:{change:function(e){return t.processTwoTypeValue(e,"auto_linker","opts","truncate")}}}),t._v(" "),t.booleanTruncate?t._e():a("p",{staticClass:"expl"},[t._v("Set to a number to truncate urls longer then the number.\n Truncated urls will end in "),a("span",{staticClass:"code"},[t._v("..")])])],1),t._v(" "),t.booleanTruncate?a("el-form-item",[a("el-input-number",{attrs:{value:t.getStringValue("truncate"),step:1,min:0,size:"large"},on:{change:function(e){return t.processTwoTypeValue(e,"auto_linker","opts","truncate")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Specify the class to be added to the generated link. False to clear.")])],1):t._e(),t._v(" "),a("el-form-item",{attrs:{label:"Strip prefix"}},[a("el-switch",{attrs:{value:t.auto_linker.opts.strip_prefix},on:{change:function(e){return t.processNestedData(e,"auto_linker","opts","strip_prefix")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Strip the scheme prefix")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Extra"}},[a("el-switch",{attrs:{value:t.auto_linker.opts.extra},on:{change:function(e){return t.processNestedData(e,"auto_linker","opts","extra")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Link urls with rarely used schemes (magnet, ipfs, irc, etc.)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Validate TLD"}},[a("el-switch",{attrs:{value:t.auto_linker.opts.validate_tld},on:{change:function(e){return t.processNestedData(e,"auto_linker","opts","validate_tld")}}})],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));_.options.__file="AutoLinker.vue";var b=_.exports,g={name:"Captcha",computed:l()({},Object(r.b)(["captchaConfig","kocaptchaConfig"]),{captcha:function(){return this.captchaConfig},kocaptcha:function(){return this.kocaptchaConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},y=(a("2q6O"),Object(c.a)(g,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"captcha",attrs:{model:t.captcha,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:t.captcha.enabled},on:{change:function(e){return t.updateSetting(e,"Pleroma.Captcha","enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whether the captcha should be shown on registration")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Valid for (s)"}},[a("el-input-number",{attrs:{value:t.captcha.seconds_valid,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"Pleroma.Captcha","seconds_valid")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The time in seconds for which the captcha is valid")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Method"}},[a("el-select",{attrs:{value:t.captcha.method,placeholder:"Select"},on:{change:function(e){return t.updateSetting(e,"Pleroma.Captcha","method")}}},[a("el-option",{attrs:{label:"Pleroma.Captcha.Kocaptcha",value:"Pleroma.Captcha.Kocaptcha"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("The method/service to use for captcha")])],1)],1),t._v(" "),a("el-form",{ref:"kocaptcha",attrs:{model:t.kocaptcha,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Kocaptcha Endpoint"}},[a("el-input",{attrs:{value:t.kocaptcha.endpoint},on:{input:function(e){return t.updateSetting(e,"Pleroma.Captcha.Kocaptcha","endpoint")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Kocaptcha is a captcha service with a single API endpoint, the source code is\n "),a("a",{attrs:{href:"https://github.com/koto-bank/kocaptcha",rel:"nofollow noreferrer noopener",target:"_blank"}},[t._v("here")]),t._v(".\n The default endpoint "),a("span",{staticClass:"code"},[t._v("'https://captcha.kotobank.ch'")]),t._v(" is hosted by the developer.\n ")])],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));y.options.__file="Captcha.vue";var C=y.exports,w={name:"Instance",computed:l()({},Object(r.b)(["databaseConfig","ectoReposConfig","pleromaRepoConfig"]),{database:function(){return this.databaseConfig},ectoRepos:function(){return this.ectoReposConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"},pleromaRepo:function(){return this.pleromaRepoConfig}}),methods:{updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},S=(a("RTtG"),Object(c.a)(w,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"database",attrs:{model:t.database,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Database settings:"}}),t._v(" "),a("el-form-item",{attrs:{label:"RUM enabled"}},[a("el-switch",{attrs:{value:t.database.rum_enabled},on:{change:function(e){return t.updateSetting(e,"database","rum_enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("RUM indexes are an alternative indexing scheme that is not included in PostgreSQL by default.\n While they may eventually be mainlined, for now they have to be installed as a PostgreSQL extension from\n "),a("a",{attrs:{href:"https://github.com/postgrespro/rum",rel:"nofollow noreferrer noopener",target:"_blank"}},[t._v("\n https://github.com/postgrespro/rum.\n ")])]),t._v(" "),a("p",{staticClass:"expl"},[t._v("Their advantage over the standard GIN indexes is that they allow efficient ordering of search results by timestamp,\n which makes search queries a lot faster on larger servers, by one or two orders of magnitude.\n They take up around 3 times as much space as GIN indexes.")]),t._v(" "),a("p",{staticClass:"expl"},[t._v("To enable them, both the "),a("span",{staticClass:"code"},[t._v("rum_enabled")]),t._v(" flag has to be set and the following special\n migration has to be run: "),a("span",{staticClass:"code"},[t._v("mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/")])])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"ectoRepos",attrs:{model:t.ectoRepos,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Ecto repos"}},[a("el-select",{attrs:{value:t.ectoRepos.value||[],multiple:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"ecto_repos","value")}}},[a("el-option",{attrs:{label:"Pleroma.Repo",value:"Pleroma.Repo"}})],1)],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"pleromaRepo",attrs:{model:t.pleromaRepo,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Pleroma Repo configuration:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Name"}},[a("el-input",{attrs:{value:t.pleromaRepo.name},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","name")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The name of the Repo supervisor process")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Priv"}},[a("el-input",{attrs:{value:t.pleromaRepo.priv},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","priv")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The directory where to keep repository data, like migrations, schema and more. Defaults to "),a("span",{staticClass:"code"},[t._v("\n priv/YOUR_REPO")]),t._v(". It must always point to a subdirectory inside the priv directory")])],1),t._v(" "),a("el-form-item",{attrs:{label:"URL"}},[a("el-input",{attrs:{value:t.pleromaRepo.url},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","url")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("An URL that specifies storage information")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Log level"}},[a("el-select",{attrs:{value:t.pleromaRepo.log},on:{change:function(e){return t.updateSetting(e,"Pleroma.Repo","log")}}},[a("el-option",{attrs:{value:!1,label:"False - disables logging for that repository."}}),t._v(" "),a("el-option",{attrs:{value:":debug",label:":debug - for debug-related messages"}}),t._v(" "),a("el-option",{attrs:{value:":info",label:":info - for information of any kind"}}),t._v(" "),a("el-option",{attrs:{value:":warn",label:":warn - for warnings"}}),t._v(" "),a("el-option",{attrs:{value:":error",label:":error - for errors"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("The log level used when logging the query with Elixir's Logger")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Pool size"}},[a("el-input-number",{attrs:{value:t.pleromaRepo.pool_size,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"Pleroma.Repo","pool_size")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The size of the pool used by the connection module. Defaults to "),a("span",{staticClass:"code"},[t._v("10")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Telemetry prefix"}},[a("el-select",{attrs:{value:t.pleromaRepo.telemetry_prefix||[],multiple:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"Pleroma.Repo","telemetry_prefix")}}},[a("el-option",{attrs:{label:":my_app",value:":my_app"}}),t._v(" "),a("el-option",{attrs:{label:":repo",value:":repo"}}),t._v(" "),a("el-option",{attrs:{label:":query",value:":query"}})],1)],1),t._v(" "),a("el-form-item",{attrs:{label:"Types"}},[a("el-input",{attrs:{value:t.pleromaRepo.types},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","types")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Telemetry event"}},[a("el-select",{attrs:{value:t.pleromaRepo.telemetry_event||[],multiple:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"Pleroma.Repo","telemetry_event")}}},[a("el-option",{attrs:{label:"Pleroma.Repo.Instrumenter",value:"Pleroma.Repo.Instrumenter"}})],1)],1),t._v(" "),a("el-form-item",{attrs:{label:"Connection options:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Hostname"}},[a("el-input",{attrs:{value:t.pleromaRepo.hostname},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","hostname")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Server hostname")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Socket dir"}},[a("el-input",{attrs:{value:t.pleromaRepo.socket_dir},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","socket_dir")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Connect to Postgres via UNIX sockets in the given directory. The socket name is derived based on the port.\n This is the preferred method for configuring sockets and it takes precedence over the hostname.\n If you are connecting to a socket outside of the Postgres convention, use "),a("span",{staticClass:"code"},[t._v(":socket")]),t._v(" instead.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Socket"}},[a("el-input",{attrs:{value:t.pleromaRepo.socket},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","socket")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Connect to Postgres via UNIX sockets in the given path. This option takes precedence over the\n "),a("span",{staticClass:"code"},[t._v(":hostname")]),t._v(" and "),a("span",{staticClass:"code"},[t._v(":socket_dir")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Username"}},[a("el-input",{attrs:{value:t.pleromaRepo.username},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","username")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Password"}},[a("el-input",{attrs:{value:t.pleromaRepo.password},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","password")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:t.pleromaRepo.port},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","port")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Server port (default: 5432)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Database"}},[a("el-input",{attrs:{value:t.pleromaRepo.database},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","database")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The database to connect to")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Maintenance database"}},[a("el-input",{attrs:{value:t.pleromaRepo.maintenance_database},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","maintenance_database")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v('Specifies the name of the database to connect to when creating or dropping the database. Defaults to "postgres"')])],1),t._v(" "),a("el-form-item",{attrs:{label:"Pool"}},[a("el-input",{attrs:{value:t.pleromaRepo.pool},on:{input:function(e){return t.updateSetting(e,"Pleroma.Repo","pool")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The connection pool module, defaults to "),a("span",{staticClass:"code"},[t._v("DBConnection.ConnectionPool")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"SSL"}},[a("el-switch",{attrs:{value:t.pleromaRepo.ssl},on:{change:function(e){return t.updateSetting(e,"Pleroma.Repo","ssl")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Set to true if ssl should be used")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Connect timeout"}},[a("el-input-number",{attrs:{value:t.pleromaRepo.connect_timeout,step:1e3,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"Pleroma.Repo","connect_timeout")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The timeout for establishing new connections. Defaults to 5000")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Prepare"}},[a("el-select",{attrs:{value:t.pleromaRepo.prepare},on:{change:function(e){return t.updateSetting(e,"Pleroma.Repo","prepare")}}},[a("el-option",{attrs:{label:"named",value:":named"}}),t._v(" "),a("el-option",{attrs:{label:"unnamed",value:":unnamed"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("How to prepare queries, either "),a("span",{staticClass:"code"},[t._v(":named")]),t._v(" to use named queries or\n "),a("span",{staticClass:"code"},[t._v(":unnamed")]),t._v(" to force unnamed queries (default: :named)")])],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));S.options.__file="Database.vue";var x=S.exports,k={federationPublisherModulesOptions:[{label:"Pleroma.Web.ActivityPub.Publisher",value:"Pleroma.Web.ActivityPub.Publisher"},{label:"Pleroma.Web.Websub",value:"Pleroma.Web.Websub"},{label:"Pleroma.Web.Salmon",value:"Pleroma.Web.Salmon"}],rewritePolicyOptions:[{label:"NoOpPolicy",value:"Pleroma.Web.ActivityPub.MRF.NoOpPolicy",expl:"NoOpPolicy: Doesn’t modify activities (default)"},{label:"DropPolicy",value:"Pleroma.Web.ActivityPub.MRF.DropPolicy",expl:"DropPolicy: Drops all activities. It generally doesn’t makes sense to use in production"},{label:"SimplePolicy",value:"Pleroma.Web.ActivityPub.MRF.SimplePolicy",expl:"SimplePolicy: Restrict the visibility of activities from certains instances (See :mrf_simple section)"},{label:"TagPolicy",value:"Pleroma.Web.ActivityPub.MRF.TagPolicy",expl:"Applies policies to individual users based on tags, which can be set using pleroma-fe/admin-fe/any other app that supports Pleroma Admin API. For example it allows marking posts from individual users nsfw (sensitive)"},{label:"SubchainPolicy",value:"Pleroma.Web.ActivityPub.MRF.SubchainPolicy",expl:"Selectively runs other MRF policies when messages match (see :mrf_subchain section)"},{label:"RejectNonPublic",value:"Pleroma.Web.ActivityPub.MRF.RejectNonPublic",expl:"RejectNonPublic: Drops posts with non-public visibility settings (See :mrf_rejectnonpublic section)"},{label:"EnsureRePrepended",value:"Pleroma.Web.ActivityPub.MRF.EnsureRePrepended",expl:"EnsureRePrepended: Rewrites posts to ensure that replies to posts with subjects do not have an identical subject and instead begin with re:"},{label:"AntiLinkSpamPolicy",value:"Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy",expl:"Rejects posts from likely spambots by rejecting posts from new users that contain links"},{label:"MediaProxyWarmingPolicy",value:"Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy",expl:"Crawls attachments using their MediaProxy URLs so that the MediaProxy cache is primed"},{label:"MentionPolicy",value:"Pleroma.Web.ActivityPub.MRF.MentionPolicy",expl:"Drops posts mentioning configurable users. (see :mrf_mention section)"}],quarantinedInstancesOptions:[],autofollowedNicknamesOptions:[],uriSchemesOptions:[{label:"https",value:"https"},{label:"http",value:"http"},{label:"dat",value:"dat"},{label:"dweb",value:"dweb"},{label:"gopher",value:"gopher"},{label:"ipfs",value:"ipfs"},{label:"ipns",value:"ipns"},{label:"irc",value:"irc"},{label:"ircs",value:"ircs"},{label:"magnet",value:"magnet"},{label:"mailto",value:"mailto"},{label:"mumble",value:"mumble"},{label:"ssb",value:"ssb"},{label:"xmpp",value:"xmpp"}],themeOptions:[{label:"pleroma-dark",value:"pleroma-dark"},{label:"pleroma-light",value:"pleroma-light"},{label:"classic-dark",value:"classic-dark"},{label:"bird",value:"bird"},{label:"ir-black",value:"ir-black"},{label:"monokai",value:"monokai"},{label:"mammal",value:"mammal"},{label:"redmond-xx",value:"redmond-xx"},{label:"redmond-xx-se",value:"redmond-xx-se"},{label:"redmond-xxi",value:"redmond-xxi"},{label:"breezy-dark",value:"breezy-dark"},{label:"breezy-light",value:"breezy-light"}],instrumentersOptions:[{label:"Pleroma.Web.Endpoint.Instrumenter",value:"Pleroma.Web.Endpoint.Instrumenter"}],extraCookieAttrsOptions:[{label:"SameSite=Lax",value:"SameSite=Lax"}],hackneyPoolsOptions:[{label:"Federation",value:":federation",max_connections:50,timeout:15e4},{label:"Media",value:":media",max_connections:50,timeout:15e4},{label:"Upload",value:":upload",max_connections:25,timeout:3e5}],whitelistedContentTypesOptions:[{label:"image/gif",value:"image/gif"},{label:"image/jpeg",value:"image/jpeg"},{label:"image/jpg",value:"image/jpg"},{label:"image/png",value:"image/png"},{label:"image/svg+xml",value:"image/svg+xml"},{label:"audio/mpeg",value:"audio/mpeg"},{label:"audio/mp3",value:"audio/mp3"},{label:"video/webm",value:"video/webm"},{label:"video/mp4",value:"video/mp4"},{label:"video/quicktime",value:"video/quicktime"}],mogrifyActionsOptions:[{label:"strip",value:"strip"},{label:"auto-orient",value:"auto-orient"}],adapterOptions:[{label:"Swoosh.Adapters.Sendmail",value:"Swoosh.Adapters.Sendmail"},{label:"Swoosh.Adapters.SMTP",value:"Swoosh.Adapters.SMTP"},{label:"Swoosh.Adapters.Sendgrid",value:"Swoosh.Adapters.Sendgrid"},{label:"Swoosh.Adapters.Mandrill",value:"Swoosh.Adapters.Mandrill"},{label:"Swoosh.Adapters.Mailgun",value:"Swoosh.Adapters.Mailgun"},{label:"Swoosh.Adapters.Mailjet",value:"Swoosh.Adapters.Mailjet"},{label:"Swoosh.Adapters.Postmark",value:"Swoosh.Adapters.Postmark"},{label:"Swoosh.Adapters.SparkPost",value:"Swoosh.Adapters.SparkPost"},{label:"Swoosh.Adapters.AmazonSES",value:"Swoosh.Adapters.AmazonSES"},{label:"Swoosh.Adapters.Dyn",value:"Swoosh.Adapters.Dyn"},{label:"Swoosh.Adapters.SocketLabs",value:"Swoosh.Adapters.SocketLabs"},{label:"Swoosh.Adapters.Gmail",value:"Swoosh.Adapters.Gmail"},{label:"Swoosh.Adapters.Local",value:"Swoosh.Adapters.Local"}],loggerBackendsOptions:[{label:"Console // log to stdout",value:JSON.stringify(":console")},{label:"Ex_syslogger // log to syslog",value:JSON.stringify({tuple:["ExSyslogger",":ex_syslogger"]})},{label:"Quack.Logger // log to Slack",value:JSON.stringify("Quack.Logger")}],restrictedNicknamesOptions:[{value:".well-known"},{value:"~"},{value:"about"},{value:"activities"},{value:"api"},{value:"auth"},{value:"check_password"},{value:"dev"},{value:"friend-requests"},{value:"inbox"},{value:"internal"},{value:"main"},{value:"media"},{value:"nodeinfo"},{value:"notice"},{value:"oauth"},{value:"objects"},{value:"ostatus_subscribe"},{value:"pleroma"},{value:"proxy"},{value:"push"},{value:"registration"},{value:"relay"},{value:"settings"},{value:"status"},{value:"tag"},{value:"user-search"},{value:"user_exists"},{value:"users"},{value:"web"}]},A=a("fJ7X"),P=a.n(A),U=(a("nBvS"),a("Lrpg"),{name:"Endpoint",components:{editor:P.a},computed:l()({},Object(r.b)(["endpointConfig"]),{editorContentHttp:{get:function(){return this.endpointConfig.http.dispatch?this.endpointConfig.http.dispatch[0]:""},set:function(t){this.processNestedData([t],"Pleroma.Web.Endpoint","http","dispatch")}},editorContentHttps:{get:function(){return this.endpointConfig.https.dispatch?this.endpointConfig.https.dispatch[0]:""},set:function(t){this.processNestedData([t],"Pleroma.Web.Endpoint","https","dispatch")}},configureHttp:function(){return!1==!this.endpoint.http},configureHttps:function(){return!1==!this.endpoint.https},endpoint:function(){return this.endpointConfig},endpointHttp:function(){return this.endpoint.http||{}},endpointHttps:function(){return this.endpoint.https||{}},extraCookieAttrsOptions:function(){return k.extraCookieAttrsOptions},instrumentersOptions:function(){return k.instrumentersOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"},loading:function(){return this.$store.state.settings.loading}}),methods:{processNestedData:function(t,e,a,i){var n=l()({},this.$store.state.settings.settings[e][a],s()({},i,t));this.updateSetting(n,e,a)},showServerConfig:function(t,e){t?this.updateSetting({},"Pleroma.Web.Endpoint",e):this.updateSetting(t,"Pleroma.Web.Endpoint",e)},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}}),L=(a("NyLv"),Object(c.a)(U,function(){var t=this,e=t.$createElement,a=t._self._c||e;return t.loading?t._e():a("el-form",{ref:"endpoint",attrs:{model:t.endpoint,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Instrumenters"}},[a("el-select",{attrs:{value:t.endpoint.instrumenters||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Endpoint","instrumenters")}}},t._l(t.instrumentersOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"Compile-time configuration:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Code reloader"}},[a("el-switch",{attrs:{value:t.endpoint.code_reloader},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Endpoint","code_reloader")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enables code reloading functionality")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Debug errors"}},[a("el-switch",{attrs:{value:t.endpoint.debug_errors},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Endpoint","debug_errors")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enables using "),a("span",{staticClass:"code"},[t._v("Plug.Debugger")]),t._v(" functionality for debugging failures in the application.\n Recommended to be set to true only in development as it allows listing of the application source code during debugging. Defaults to false.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Render errors:"}}),t._v(" "),a("el-form-item",{attrs:{label:"View"}},[a("el-input",{attrs:{value:t.endpoint.render_errors.view},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","render_errors","view")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Accepts"}},[a("el-input",{attrs:{value:t.endpoint.render_errors.accepts},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","render_errors","accepts")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Layout"}},[a("el-switch",{attrs:{value:t.endpoint.render_errors.layout},on:{change:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","render_errors","layout")}}})],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"Runtime configuration:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Cache static manifest"}},[a("el-input",{attrs:{value:t.endpoint.cache_static_manifest},on:{input:function(e){return t.updateSetting(e,"Pleroma.Web.Endpoint","cache_static_manifest")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("A path to a json manifest file that contains static files and their digested version.\n This is typically set to "),a("span",{staticClass:"code"},[t._v("'priv/static/cache_manifest.json'")]),t._v("\n which is the file automatically generated by "),a("span",{staticClass:"code"},[t._v("mix phx.digest")])])],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"HTTP:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Configure HTTP server"}},[a("el-switch",{attrs:{value:t.configureHttp},on:{change:function(e){return t.showServerConfig(e,"http")}}})],1),t._v(" "),t.configureHttp?a("div",[a("el-form-item",{attrs:{label:"Dispatch"}},[a("editor",{attrs:{height:"150",width:"100%",lang:"elixir",theme:"chrome"},model:{value:t.editorContentHttp,callback:function(e){t.editorContentHttp=e},expression:"editorContentHttp"}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("You can type in Elixir code here")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:t.endpointHttp.port},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","http","port")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The port to run the server. Defaults to 4000 (http) and 4040 (https).")])],1),t._v(" "),a("el-form-item",{attrs:{label:"IP"}},[a("el-input",{attrs:{value:t.endpointHttp.ip,placeholder:"xxx.xxx.xxx.xx"},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","http","ip")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The ip to bind the server to")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Reference name"}},[a("el-input",{attrs:{value:t.endpointHttp.ref},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","http","ref")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The reference name to be used. Defaults to "),a("span",{staticClass:"code"},[t._v("plug.HTTP")]),t._v(" (http) and\n "),a("span",{staticClass:"code"},[t._v("plug.HTTPS")]),t._v(" (https). This is the value that needs to be given on shutdown.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Compress"}},[a("el-switch",{attrs:{value:t.endpointHttp.compress},on:{change:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","http","compress")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Cowboy will attempt to compress the response body. Defaults to false.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Timeout in s"}},[a("el-input-number",{attrs:{value:t.endpointHttp.timeout/1e3,step:1,min:0,size:"large"},on:{input:function(e){return t.processNestedData(1e3*e,"Pleroma.Web.Endpoint","http","timeout")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Time in s with no requests before Cowboy closes the connection. Defaults to 5 s.")])],1),t._v(" "),a("div",{staticClass:"line"})],1):t._e(),t._v(" "),a("el-form-item",{attrs:{label:"HTTPS:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Configure HTTPS server"}},[a("el-switch",{attrs:{value:t.configureHttps},on:{change:function(e){return t.showServerConfig(e,"https")}}})],1),t._v(" "),t.configureHttps?a("div",[a("el-form-item",{attrs:{label:"Dispatch"}},[a("editor",{attrs:{height:"150",width:"100%",lang:"elixir",theme:"chrome"},model:{value:t.editorContentHttps,callback:function(e){t.editorContentHttps=e},expression:"editorContentHttps"}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("You can type in Elixir code here")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:t.endpointHttps.port},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","https","port")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The port to run the server. Defaults to 4000 (http) and 4040 (https).")])],1),t._v(" "),a("el-form-item",{attrs:{label:"IP"}},[a("el-input",{attrs:{value:t.endpointHttps.ip,placeholder:"xxx.xxx.xxx.xx"},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","https","ip")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The ip to bind the server to")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Reference name"}},[a("el-input",{attrs:{value:t.endpointHttps.ref},on:{input:function(e){return t.updateSetting(e,"Pleroma.Web.Endpoint","https","ref")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The reference name to be used. Defaults to "),a("span",{staticClass:"code"},[t._v("plug.HTTP")]),t._v(" (http) and\n "),a("span",{staticClass:"code"},[t._v("plug.HTTPS")]),t._v(" (https). This is the value that needs to be given on shutdown.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Compress"}},[a("el-switch",{attrs:{value:t.endpointHttps.compress},on:{change:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","https","compress")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Cowboy will attempt to compress the response body. Defaults to false.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Timeout in s"}},[a("el-input-number",{attrs:{value:t.endpointHttps.timeout/1e3,step:1,min:0,size:"large"},on:{input:function(e){return t.processNestedData(1e3*e,"Pleroma.Web.Endpoint","https","timeout")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Time in s with no requests before Cowboy closes the connection. Defaults to 5 s.")])],1),t._v(" "),a("div",{staticClass:"line"})],1):t._e(),t._v(" "),a("el-form-item",{attrs:{label:"Secret key base"}},[a("el-input",{attrs:{value:t.endpoint.secret_key_base},on:{input:function(e){return t.updateSetting(e,"Pleroma.Web.Endpoint","secret_key_base")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("A secret key used as a base to generate secrets for encrypting and signing data. For example, cookies and tokens are signed by default, but they may also be encrypted if desired. Defaults to nil as it must be set per application")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Server"}},[a("el-switch",{attrs:{value:t.endpoint.server},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Endpoint","server")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("When true, starts the web server when the endpoint supervision tree starts. Defaults to false. The "),a("span",{staticClass:"code"},[t._v("mix phx.server")]),t._v(" task automatically sets this to true.")])],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"URL:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Host"}},[a("el-input",{attrs:{value:t.endpoint.url.host},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","url","host")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The host without the scheme and a post (e.g "),a("span",{staticClass:"code"},[t._v("example.com")]),t._v(", not "),a("span",{staticClass:"code"},[t._v("https://example.com:2020")]),t._v(")")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Scheme"}},[a("el-input",{attrs:{value:t.endpoint.url.scheme},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","url","scheme")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("e.g http, https")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:t.endpoint.url.port},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","url","port")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Path"}},[a("el-input",{attrs:{value:t.endpoint.url.path},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","url","path")}}})],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"Protocol"}},[a("el-input",{attrs:{value:t.endpoint.protocol},on:{input:function(e){return t.updateSetting(e,"Pleroma.Web.Endpoint","protocol")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Signing salt"}},[a("el-input",{attrs:{value:t.endpoint.signing_salt},on:{input:function(e){return t.updateSetting(e,"Pleroma.Web.Endpoint","signing_salt")}}})],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"PubSub:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Name"}},[a("el-input",{attrs:{value:t.endpoint.pubsub.name},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","pubsub","name")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Adapter"}},[a("el-input",{attrs:{value:t.endpoint.pubsub.adapter},on:{input:function(e){return t.processNestedData(e,"Pleroma.Web.Endpoint","pubsub","adapter")}}})],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"Secure cookie flag"}},[a("el-switch",{attrs:{value:t.endpoint.secure_cookie_flag},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Endpoint","secure_cookie_flag")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Extra cookie attrs"}},[a("el-select",{attrs:{value:t.endpoint.extra_cookie_attrs||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Endpoint","extra_cookie_attrs")}}},t._l(t.extraCookieAttrsOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{staticClass:"options-paragraph-container"},[a("p",{staticClass:"options-paragraph"},[t._v("Only common options are listed here. You can add more (all configuration options can be viewed\n "),a("a",{attrs:{href:"https://hexdocs.pm/phoenix/Phoenix.Endpoint.html#module-dynamic-configuration",rel:"nofollow noreferrer noopener",target:"_blank"}},[t._v("here")]),t._v(")\n ")])]),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));L.options.__file="Endpoint.vue";var R=L.exports,M={name:"Instance",computed:l()({},Object(r.b)(["enabledConfig","handlerConfig","passwordAuthenticatorConfig","portConfig","privDirConfig"]),{enabled:function(){return this.enabledConfig},handler:function(){return this.handlerConfig},passwordAuthenticator:function(){return this.passwordAuthenticatorConfig},port:function(){return this.portConfig},privDir:function(){return this.privDirConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{toggleEsshd:function(t){this.$store.dispatch("ToggleEsshd",t)},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},T=(a("FCne"),Object(c.a)(M,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{attrs:{"label-width":t.labelWidth}},[a("el-form-item",[a("p",{staticClass:"expl"},[t._v("Before enabling this you must:\n "),a("ol",{staticClass:"esshd-list"},[a("li",[t._v("Add "),a("span",{staticClass:"code"},[t._v(":esshd")]),t._v(" to "),a("span",{staticClass:"code"},[t._v("mix.exs")]),t._v(" as one of the\n "),a("span",{staticClass:"code"},[t._v("extra_applications")])]),t._v(" "),a("li",[t._v("Generate host keys in your\n "),a("span",{staticClass:"code"},[t._v("priv")]),t._v(" dir with\n "),a("span",{staticClass:"code"},[t._v('ssh-keygen -m PEM -N "" -b 2048 -t rsa -f ssh_host_rsa_key')])])])])])],1),t._v(" "),a("el-form",{ref:"enabled",attrs:{model:t.enabled,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:t.enabled.value},on:{change:function(e){return t.updateSetting(e,"enabled","value")}}})],1)],1),t._v(" "),a("el-form",{ref:"privDir",attrs:{model:t.privDir,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Priv dir"}},[a("el-input",{attrs:{value:t.privDir.value},on:{input:function(e){return t.updateSetting(e,"priv_dir","value")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("You can input relative path here")])],1)],1),t._v(" "),a("el-form",{ref:"handler",attrs:{model:t.handler,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Handler"}},[a("el-input",{attrs:{value:t.handler.value},on:{input:function(e){return t.updateSetting(e,"handler","value")}}})],1)],1),t._v(" "),a("el-form",{ref:"port",attrs:{model:t.port,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:t.port.value},on:{input:function(e){return t.updateSetting(e,"port","value")}}})],1)],1),t._v(" "),a("el-form",{ref:"passwordAuthenticator",attrs:{model:t.passwordAuthenticator,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Password authenticator"}},[a("el-input",{attrs:{value:t.passwordAuthenticator.value},on:{input:function(e){return t.updateSetting(e,"password_authenticator","value")}}})],1),t._v(" "),a("el-form-item",[a("p",{staticClass:"expl"},[t._v("Feel free to adjust the priv_dir and port number.\n Then you will have to create the key for the keys (in the example "),a("span",{staticClass:"code"},[t._v("priv/ssh_keys")]),t._v(") and create the host keys with\n "),a("span",{staticClass:"code"},[t._v('ssh-keygen -m PEM -N "" -b 2048 -t rsa -f ssh_host_rsa_key')]),t._v(".\n After restarting, you should be able to connect to your Pleroma instance with "),a("span",{staticClass:"code"},[t._v("ssh username@server -p $PORT")])])]),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));T.options.__file="Esshd.vue";var D=T.exports,W={name:"Frontend",computed:l()({},Object(r.b)(["assetsConfig","frontendConfig","emojiConfig","chatConfig","markupConfig"]),{assets:function(){return this.assetsConfig},chat:function(){return this.chatConfig},emoji:function(){return this.emojiConfig},frontend:function(){return this.frontendConfig},groups:function(){var t=this;return Object.keys(this.emojiConfig.groups).map(function(e){return[e,t.emojiConfig.groups[e]]})},markup:function(){return this.markupConfig},mascots:function(){var t=this;return Object.keys(this.assetsConfig.mascots).map(function(e){return[e,t.assetsConfig.mascots[e].url,t.assetsConfig.mascots[e].mime_type]})},themeOptions:function(){return k.themeOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{addRowToGroups:function(){var t=this.groups.reduce(function(t,e,a){return l()({},t,s()({},e[0],e[1]))},{});this.updateSetting(l()({},t,{"":[]}),"emoji","groups")},addRowToMascots:function(){var t=this.mascots.reduce(function(t,e,a){return l()({},t,s()({},e[0],{url:e[1],mime_type:e[2]}))},{});this.updateSetting(l()({},t,{"":{url:"",mime_type:""}}),"assets","mascots")},deleteGroupsRow:function(t){var e=this.groups.filter(function(e,a){return t!==a}).reduce(function(t,e,a){return l()({},t,s()({},e[0],e[1]))},{});this.updateSetting(e,"emoji","groups")},deleteMascotsRow:function(t){var e=this.mascots.filter(function(e,a){return t!==a}).reduce(function(t,e,a){return l()({},t,s()({},e[0],{url:e[1],mime_type:e[2]}))},{});this.updateSetting(e,"assets","mascots")},parseGroups:function(t,e,a){var i=this.groups.reduce(function(i,n,r){return a===r?"key"===e?l()({},i,s()({},t,n[1])):l()({},i,s()({},n[0],t)):l()({},i,s()({},n[0],n[1]))},{});this.updateSetting(i,"emoji","groups")},parseMascots:function(t,e,a){var i=this.mascots.reduce(function(i,n,r){return a===r?"name"===e?l()({},i,s()({},t,{url:n[1],mime_type:n[2]})):"url"===e?l()({},i,s()({},n[0],{url:t,mime_type:n[2]})):l()({},i,s()({},n[0],{url:n[1],mime_type:t})):l()({},i,s()({},n[0],{url:n[1],mime_type:n[2]}))},{});this.updateSetting(i,"assets","mascots")},processNestedData:function(t,e,a,i){var n=l()({},this.$store.state.settings.settings[e][a],s()({},i,t));this.updateSetting(n,e,a)},sendBackgroundMasto:function(t){var e=t.file;this.$store.dispatch("UploadMedia",{file:e,tab:"frontend_configurations",inputName:"masto_fe",childName:"background"})},sendBackgroundPleroma:function(t){var e=t.file;this.$store.dispatch("UploadMedia",{file:e,tab:"frontend_configurations",inputName:"pleroma_fe",childName:"background"})},sendLogoMasto:function(t){var e=t.file;this.$store.dispatch("UploadMedia",{file:e,tab:"frontend_configurations",inputName:"masto_fe",childName:"logo"})},sendLogoPleroma:function(t){var e=t.file;this.$store.dispatch("UploadMedia",{file:e,tab:"frontend_configurations",inputName:"pleroma_fe",childName:"logo"})},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},E=(a("hVXW"),Object(c.a)(W,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"frontend",attrs:{model:t.frontend,"label-width":t.labelWidth}},[a("el-form-item",[a("p",{staticClass:"expl"},[t._v("This form can be used to configure a keyword list that keeps the configuration data for any kind of frontend.\n By default, settings for "),a("span",{staticClass:"code"},[t._v("pleroma_fe")]),t._v(" and "),a("span",{staticClass:"code"},[t._v("masto_fe")]),t._v(" are configured.\n If you want to add your own configuration your settings need to be complete as they will override the defaults.")])]),t._v(" "),a("el-form-item",{attrs:{label:"Pleroma FE:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Theme"}},[a("el-select",{attrs:{value:t.frontend.pleroma_fe.theme},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","theme")}}},t._l(t.themeOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1),t._v(" "),a("p",{staticClass:"expl"},[t._v("Which theme to use")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Background"}},[a("el-input",{attrs:{value:t.frontend.pleroma_fe.background},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","background")}}}),t._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[t._v("or")]),t._v(" "),a("el-upload",{attrs:{"http-request":t.sendBackgroundPleroma,multiple:!1,"show-file-list":!1,action:"/api/v1/media"}},[a("el-button",{attrs:{size:"small",type:"primary"}},[t._v("Click to upload")])],1)],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("URL of the background, unless viewing a user profile with a background that is set")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Logo"}},[a("el-input",{attrs:{value:t.frontend.pleroma_fe.logo},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","logo")}}}),t._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[t._v("or")]),t._v(" "),a("el-upload",{attrs:{"http-request":t.sendLogoPleroma,multiple:!1,"show-file-list":!1,action:"/api/v1/media"}},[a("el-button",{attrs:{size:"small",type:"primary"}},[t._v("Click to upload")])],1)],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("URL of the logo")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Logo mask"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.logoMask},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","logoMask")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whether to use only the logo's shape as a mask (true) or as a regular image (false)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Logo margin (em)"}},[a("el-input-number",{attrs:{value:t.frontend.pleroma_fe.logoMargin,step:.1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","logoMargin")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("What margin to use around the logo")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Redirect URL"}},[a("el-input",{attrs:{value:t.frontend.pleroma_fe.redirectRootNoLogin},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","redirectRootNoLogin")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Relative URL which indicates where to redirect when a user is logged in")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Redirect for anonymous user"}},[a("el-input",{attrs:{value:t.frontend.pleroma_fe.redirectRootLogin},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","redirectRootLogin")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Relative URL which indicates where to redirect when a user isn’t logged in")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Show instance panel"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.showInstanceSpecificPanel},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","showInstanceSpecificPanel")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whenether to show the instance’s specific panel")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Scope options enabled"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.scopeOptionsEnabled},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","scopeOptionsEnabled")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Formatting options enabled"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.formattingOptionsEnabled},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","formattingOptionsEnabled")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Collapse msg with subject"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.collapseMessageWithSubject},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","collapseMessageWithSubject")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("When a message has a subject (aka Content Warning), collapse it by default")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Scope copy"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.scopeCopy},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","scopeCopy")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Copy the scope "),a("span",{staticClass:"code"},[t._v("(private/unlisted/public)")]),t._v(" in replies to posts by default")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Subject line behavior"}},[a("el-select",{attrs:{value:t.frontend.pleroma_fe.subjectLineBehavior},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","subjectLineBehavior")}}},[a("el-option",{attrs:{label:"Email",value:"email"}},[t._v("Email / Copy and preprend re:, as in email")]),t._v(" "),a("el-option",{attrs:{label:"Masto",value:"masto"}},[t._v("Masto / Copy verbatim, as in Mastodon")]),t._v(" "),a("el-option",{attrs:{label:"Noop",value:"noop"}},[t._v("Noop / Don't copy the subject")])],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("Allows changing the default behaviour of subject lines in replies")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Post content type"}},[a("el-input",{attrs:{value:t.frontend.pleroma_fe.postContentType},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","postContentType")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Always show subject input"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.alwaysShowSubjectInput},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","alwaysShowSubjectInput")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("When set to false, auto-hide the subject field when it's empty")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Hide post statistics"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.hidePostStats},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","hidePostStats")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Hide notices statistics(repeats, favorites, …)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Hide user statistics"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.hideUserStats},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","hideUserStats")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Hide profile statistics(posts, posts per day, followers, followings, …)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Login method"}},[a("el-input",{attrs:{value:t.frontend.pleroma_fe.loginMethod},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","loginMethod")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Web push notifications"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.webPushNotifications},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","webPushNotifications")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"No attachment links"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.noAttachmentLinks},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","noAttachmentLinks")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"NSFW Censor image"}},[a("el-input",{attrs:{value:t.frontend.pleroma_fe.nsfwCensorImage},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","nsfwCensorImage")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Show features panel"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.showFeaturesPanel},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","showFeaturesPanel")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Minimal scopes mode"}},[a("el-switch",{attrs:{value:t.frontend.pleroma_fe.minimalScopesMode},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","pleroma_fe","minimalScopesMode")}}})],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"Masto FE:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Theme"}},[a("el-select",{attrs:{value:t.frontend.masto_fe.theme},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","theme")}}},t._l(t.themeOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1),t._v(" "),a("p",{staticClass:"expl"},[t._v("Which theme to use")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Background"}},[a("el-input",{attrs:{value:t.frontend.masto_fe.background},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","background")}}}),t._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[t._v("or")]),t._v(" "),a("el-upload",{attrs:{"http-request":t.sendBackgroundMasto,multiple:!1,"show-file-list":!1,action:"/api/v1/media"}},[a("el-button",{attrs:{size:"small",type:"primary"}},[t._v("Click to upload")])],1)],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("URL of the background, unless viewing a user profile with a background that is set")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Logo"}},[a("el-input",{attrs:{value:t.frontend.masto_fe.logo},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","logo")}}}),t._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[t._v("or")]),t._v(" "),a("el-upload",{attrs:{"http-request":t.sendLogoMasto,multiple:!1,"show-file-list":!1,action:"/api/v1/media"}},[a("el-button",{attrs:{size:"small",type:"primary"}},[t._v("Click to upload")])],1)],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("URL of the logo")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Logo mask"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.logoMask},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","logoMask")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whether to use only the logo's shape as a mask (true) or as a regular image (false)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Logo margin (em)"}},[a("el-input-number",{attrs:{value:t.frontend.masto_fe.logoMargin,step:.1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","logoMargin")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("What margin to use around the logo")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Redirect URL"}},[a("el-input",{attrs:{value:t.frontend.masto_fe.redirectRootNoLogin},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","redirectRootNoLogin")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Relative URL which indicates where to redirect when a user is logged in")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Redirect for anonymous user"}},[a("el-input",{attrs:{value:t.frontend.masto_fe.redirectRootLogin},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","redirectRootLogin")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Relative URL which indicates where to redirect when a user isn’t logged in")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Show instance panel"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.showInstanceSpecificPanel},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","showInstanceSpecificPanel")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whenether to show the instance’s specific panel")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Scope options enabled"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.scopeOptionsEnabled},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","scopeOptionsEnabled")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Formatting options enabled"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.formattingOptionsEnabled},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","formattingOptionsEnabled")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Collapse msg with subjects"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.collapseMessageWithSubject},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","collapseMessageWithSubject")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("When a message has a subject (aka Content Warning), collapse it by default")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Scope copy"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.scopeCopy},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","scopeCopy")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Copy the scope "),a("span",{staticClass:"code"},[t._v("(private/unlisted/public)")]),t._v(" in replies to posts by default")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Subject line behavior"}},[a("el-select",{attrs:{value:t.frontend.masto_fe.subjectLineBehavior},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","subjectLineBehavior")}}},[a("el-option",{attrs:{label:"Email",value:"email"}},[t._v("Email / Copy and preprend re:, as in email")]),t._v(" "),a("el-option",{attrs:{label:"Masto",value:"masto"}},[t._v("Masto / Copy verbatim, as in Mastodon")]),t._v(" "),a("el-option",{attrs:{label:"Noop",value:"noop"}},[t._v("Noop / Don't copy the subject")])],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("Allows changing the default behaviour of subject lines in replies")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Post content type"}},[a("el-input",{attrs:{value:t.frontend.masto_fe.postContentType},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","postContentType")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Always show subject input"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.alwaysShowSubjectInput},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","alwaysShowSubjectInput")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("When set to false, auto-hide the subject field when it's empty")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Hide post statistics"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.hidePostStats},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","hidePostStats")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Hide notices statistics(repeats, favorites, …)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Hide user statistics"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.hideUserStats},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","hideUserStats")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Hide profile statistics(posts, posts per day, followers, followings, …)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Login method"}},[a("el-input",{attrs:{value:t.frontend.masto_fe.loginMethod},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","loginMethod")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Web push notifications"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.webPushNotifications},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","webPushNotifications")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"No attachment links"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.noAttachmentLinks},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","noAttachmentLinks")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"NSFW Censor image"}},[a("el-input",{attrs:{value:t.frontend.masto_fe.nsfwCensorImage},on:{input:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","nsfwCensorImage")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Show features panel"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.showFeaturesPanel},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","showFeaturesPanel")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Minimal scopes mode"}},[a("el-switch",{attrs:{value:t.frontend.masto_fe.minimalScopesMode},on:{change:function(e){return t.processNestedData(e,"frontend_configurations","masto_fe","minimalScopesMode")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"assets",attrs:{model:t.assets,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Assets:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Default mascot"}},[a("el-select",{attrs:{value:t.assets.default_mascot},on:{change:function(e){return t.updateSetting(e,"assets","default_mascot")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("An element from mascots - This will be used as the default mascot on MastoFE\n (default: "),a("span",{staticClass:"code"},[t._v(":pleroma_fox_tan")]),t._v(")")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Mascots"}},[t._l(t.mascots,function(e,i){var s=e[0],n=e[1],l=e[2];return a("div",{key:i,staticClass:"mascot-container"},[a("div",{staticClass:"mascot-name-container"},[a("el-input",{staticClass:"mascot-name-input",attrs:{value:s,placeholder:"Name"},on:{input:function(e){return t.parseMascots(e,"name",i)}}}),t._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.deleteMascotsRow(i,"emoji","groups")}}})],1),t._v(" "),a("el-input",{staticClass:"mascot-input",attrs:{value:n,placeholder:"URL"},on:{input:function(e){return t.parseMascots(e,"url",i)}}}),t._v(" "),a("el-input",{staticClass:"mascot-input",attrs:{value:l,placeholder:"Mime type"},on:{input:function(e){return t.parseMascots(e,"mimeType",i)}}})],1)}),t._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:t.addRowToMascots}})],2)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"emoji",attrs:{model:t.emoji,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Emoji:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Location of emoji files"}},[a("el-select",{attrs:{value:t.emoji.shortcode_globs||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"emoji","shortcode_globs")}}},[a("el-option",{attrs:{label:"/emoji/custom/**/*.png",value:"/emoji/custom/**/*.png"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("Location of custom emoji files. "),a("span",{staticClass:"code"},[t._v("*")]),t._v(" can be used as a wildcard.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Pack extensions"}},[a("el-select",{attrs:{value:t.emoji.pack_extensions||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"emoji","pack_extensions")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("A list of file extensions for emojis, when no "),a("span",{staticClass:"code"},[t._v("emoji.txt")]),t._v(" for a pack is present. ")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Group"}},[t._l(t.groups,function(e,i){var s=e[0],n=e[1];return a("div",{key:i,staticClass:"setting-input"},[a("el-input",{staticClass:"name-input",attrs:{value:s,placeholder:"key"},on:{input:function(e){return t.parseGroups(e,"key",i)}}}),t._v(" :\n "),a("el-select",{staticClass:"value-input",attrs:{value:n,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.parseGroups(e,"value",i)}}}),t._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.deleteGroupsRow(i)}}})],1)}),t._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:t.addRowToGroups}})],2),t._v(" "),a("el-form-item",{attrs:{label:"Location of JSON-manifest"}},[a("el-input",{attrs:{value:t.emoji.default_manifest},on:{input:function(e){return t.updateSetting(e,"emoji","default_manifest")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download. Currently only one manifest can be added (no arrays).")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"chat",attrs:{model:t.chat,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Chat enabled"}},[a("el-switch",{attrs:{value:t.chat.enabled},on:{input:function(e){return t.updateSetting(e,"chat","enabled")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"markup",attrs:{model:t.markup,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Markup settings:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Allow inline images"}},[a("el-switch",{attrs:{value:t.markup.allow_inline_images},on:{input:function(e){return t.updateSetting(e,"markup","allow_inline_images")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Allow headings"}},[a("el-switch",{attrs:{value:t.markup.allow_headings},on:{input:function(e){return t.updateSetting(e,"markup","allow_headings")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Allow tables"}},[a("el-switch",{attrs:{value:t.markup.allow_tables},on:{input:function(e){return t.updateSetting(e,"markup","allow_tables")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Allow fonts"}},[a("el-switch",{attrs:{value:t.markup.allow_fonts},on:{input:function(e){return t.updateSetting(e,"markup","allow_fonts")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Scrub policy"}},[a("el-select",{attrs:{value:t.markup.scrub_policy||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"markup","scrub_policy")}}},[a("el-option",{attrs:{label:"Pleroma.HTML.Transform.MediaProxy",value:"Pleroma.HTML.Transform.MediaProxy"}}),t._v(" "),a("el-option",{attrs:{label:"Pleroma.HTML.Scrubber.Default",value:"Pleroma.HTML.Scrubber.Default"}})],1)],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));E.options.__file="Frontend.vue";var N=E.exports,O={name:"Gopher",computed:l()({},Object(r.b)(["gopherConfig"]),{gopher:function(){return this.gopherConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},j=(a("w5cJ"),Object(c.a)(O,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("el-form",{ref:"gopher",attrs:{model:t.gopher,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:t.gopher.enabled},on:{change:function(e){return t.updateSetting(e,"gopher","enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enables the gopher interface")])],1),t._v(" "),a("el-form-item",{attrs:{label:"IP address"}},[a("el-input",{attrs:{value:t.gopher.ip,placeholder:"xxx.xxx.xxx.xx"},on:{input:function(e){return t.updateSetting(e,"gopher","ip")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enables the gopher interface")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:t.gopher.port},on:{input:function(e){return t.updateSetting(e,"gopher","port")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Port to bind to")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Dst port"}},[a("el-input",{attrs:{value:t.gopher.dstport},on:{input:function(e){return t.updateSetting(e,"gopher","dstport")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Port advertised in urls (optional, defaults to port)")])],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));j.options.__file="Gopher.vue";var I=j.exports,$={name:"HTTP",computed:l()({},Object(r.b)(["corsPlugCredentials","corsPlugExposeConfig","corsPlugHeaders","corsPlugMaxAge","corsPlugMethods","hackneyPoolsConfig","httpConfig","httpSecurityConfig","metricsExporter"]),{corsPlugExpose:function(){return this.corsPlugExposeConfig},hackneyPools:function(){return this.hackneyPoolsConfig},http:function(){return this.httpConfig},httpSecurity:function(){return this.httpSecurityConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{processNestedData:function(t,e,a,i){var n=l()({},this.$store.state.settings.settings[e][a],s()({},i,t));this.updateSetting(n,e,a)},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},F=(a("KFE3"),Object(c.a)($,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"http",attrs:{model:t.http,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"HTTP settings:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Proxy url"}},[a("el-input",{attrs:{value:t.http.proxy_url},on:{input:function(e){return t.updateSetting(e,"http","proxy_url")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Send user agent"}},[a("el-switch",{attrs:{value:t.http.send_user_agent},on:{change:function(e){return t.updateSetting(e,"http","send_user_agent")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Adapter:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Versions"}},[a("el-select",{attrs:{value:t.http.adapter.versions||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.processNestedData(e,"http","adapter","versions")}}},[a("el-option",{attrs:{value:":tlsv1"}}),t._v(" "),a("el-option",{attrs:{value:":'tlsv1.1'"}}),t._v(" "),a("el-option",{attrs:{value:":'tlsv1.2'"}})],1)],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"corsPlugMaxAge",attrs:{model:t.corsPlugMaxAge,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Cors plug config:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Max age (days)"}},[a("el-input-number",{attrs:{value:t.corsPlugMaxAge.value/86400,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(86400*e,"max_age","value")}}})],1)],1),t._v(" "),a("el-form",{ref:"corsPlugMethods",attrs:{model:t.corsPlugMethods,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Methods"}},[a("el-select",{attrs:{value:t.corsPlugMethods.value||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"methods","value")}}},[a("el-option",{attrs:{value:"POST"}}),t._v(" "),a("el-option",{attrs:{value:"PUT"}}),t._v(" "),a("el-option",{attrs:{value:"DELETE"}}),t._v(" "),a("el-option",{attrs:{value:"GET"}}),t._v(" "),a("el-option",{attrs:{value:"PATCH"}}),t._v(" "),a("el-option",{attrs:{value:"OPTIONS"}})],1)],1)],1),t._v(" "),a("el-form",{ref:"corsPlugExpose",attrs:{model:t.corsPlugExpose,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Expose"}},[a("el-select",{attrs:{value:t.corsPlugExpose.value||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"expose","value")}}},[a("el-option",{attrs:{value:"Link"}}),t._v(" "),a("el-option",{attrs:{value:"X-RateLimit-Reset"}}),t._v(" "),a("el-option",{attrs:{value:"X-RateLimit-Limit"}}),t._v(" "),a("el-option",{attrs:{value:"X-RateLimit-Remaining"}}),t._v(" "),a("el-option",{attrs:{value:"X-Request-Id"}}),t._v(" "),a("el-option",{attrs:{value:"Idempotency-Key"}})],1)],1)],1),t._v(" "),a("el-form",{ref:"corsPlugCredentials",attrs:{model:t.corsPlugCredentials,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Credentials"}},[a("el-switch",{attrs:{value:t.corsPlugCredentials.value},on:{change:function(e){return t.updateSetting(e,"credentials","value")}}})],1)],1),t._v(" "),a("el-form",{ref:"corsPlugHeaders",attrs:{model:t.corsPlugHeaders,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Headers"}},[a("el-select",{attrs:{value:t.corsPlugHeaders.value||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"headers","value")}}},[a("el-option",{attrs:{value:"Authorization"}}),t._v(" "),a("el-option",{attrs:{value:"Content-Type"}}),t._v(" "),a("el-option",{attrs:{value:"Idempotency-Key"}})],1)],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"httpSecurity",attrs:{model:t.httpSecurity,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"HTTP security:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Security policy"}},[a("el-switch",{attrs:{value:t.httpSecurity.enabled},on:{change:function(e){return t.updateSetting(e,"http_security","enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whether the managed content security policy is enabled")])],1),t._v(" "),a("el-form-item",{attrs:{label:"STS"}},[a("el-switch",{attrs:{value:t.httpSecurity.sts},on:{change:function(e){return t.updateSetting(e,"http_security","sts")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whether to additionally send a "),a("span",{staticClass:"code"},[t._v("Strict-Transport-Security header")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"STS max age (days)"}},[a("el-input-number",{attrs:{value:t.httpSecurity.sts_max_age/86400,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(86400*e,"http_security","sts_max_age")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The maximum age for the "),a("span",{staticClass:"code"},[t._v("Strict-Transport-Security")]),t._v(" header if sent")])],1),t._v(" "),a("el-form-item",{attrs:{label:"CT max age (days)"}},[a("el-input-number",{attrs:{value:t.httpSecurity.ct_max_age/86400,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(86400*e,"http_security","ct_max_age")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The maximum age for the "),a("span",{staticClass:"code"},[t._v("Expect-CT")]),t._v(" header if sent")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Referrer policy"}},[a("el-select",{attrs:{value:t.httpSecurity.referrer_policy,placeholder:"Select"},on:{change:function(e){return t.updateSetting(e,"http_security","referrer_policy")}}},[a("el-option",{attrs:{label:"same-origin",value:"same-origin"}}),t._v(" "),a("el-option",{attrs:{label:"no-referrer",value:"no-referrer"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("The referrer policy to use")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Report URI"}},[a("el-input",{attrs:{value:t.httpSecurity.report_uri},on:{input:function(e){return t.updateSetting(e,"http_security","report_uri")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Adds the specified url to "),a("span",{staticClass:"code"},[t._v("report-uri")]),t._v(" and "),a("span",{staticClass:"code"},[t._v("report-to")]),t._v(" group in CSP header")])],1)],1),t._v(" "),a("el-form",{ref:"hackneyPools",attrs:{model:t.hackneyPools,"label-width":t.labelWidth}},[a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"Hackney pools:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Federation:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Max connections"}},[a("el-input-number",{attrs:{value:t.hackneyPools.federation.max_connections,step:1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(e,"hackney_pools","federation","max_connections")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("You may want this pool "),a("span",{staticClass:"code"},[t._v("max_connections")]),t._v(" to be at least equal to the number of federator jobs + retry queue jobs.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Timeout (s)"}},[a("el-input-number",{attrs:{value:t.hackneyPools.federation.timeout/1e3,step:10,min:0,size:"large"},on:{change:function(e){return t.processNestedData(1e3*e,"hackney_pools","federation","timeout")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("For the federation jobs")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Media:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Max connections"}},[a("el-input-number",{attrs:{value:t.hackneyPools.media.max_connections,step:1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(e,"hackney_pools","media","max_connections")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Timeout (s)"}},[a("el-input-number",{attrs:{value:t.hackneyPools.media.timeout/1e3,step:10,min:0,size:"large"},on:{change:function(e){return t.processNestedData(1e3*e,"hackney_pools","media","timeout")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("For rich media, media proxy")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Upload:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Max connections"}},[a("el-input-number",{attrs:{value:t.hackneyPools.upload.max_connections,step:1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(e,"hackney_pools","upload","max_connections")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Timeout (s)"}},[a("el-input-number",{attrs:{value:t.hackneyPools.upload.timeout/1e3,step:10,min:0,size:"large"},on:{change:function(e){return t.processNestedData(1e3*e,"hackney_pools","upload","timeout")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("For uploaded media (if using a remote uploader and "),a("span",{staticClass:"code"},[t._v("proxy_remote: true")]),t._v(")")])],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));F.options.__file="Http.vue";var z=F.exports,H={name:"Instance",computed:l()({},Object(r.b)(["adminTokenConfig","fetchInitialPostsConfig","instanceConfig","pleromaUserConfig","scheduledActivityConfig","suggestionsConfig","uriSchemesConfig"]),{admin_token:function(){return this.adminTokenConfig},autofollowedNicknamesOptions:function(){return k.autofollowedNicknamesOptions},federationPublisherModulesOptions:function(){return k.federationPublisherModulesOptions},fetch_initial_posts:function(){return this.fetchInitialPostsConfig},instance:function(){return this.instanceConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"},pleromaUser:function(){return this.pleromaUserConfig},quarantinedInstancesOptions:function(){return k.quarantinedInstancesOptions},restrictedNicknamesOptions:function(){return k.restrictedNicknamesOptions},rewritePolicy:function(){return"string"==typeof this.instance.rewrite_policy?[this.instance.rewrite_policy]:this.instance.rewrite_policy},rewritePolicyOptions:function(){return k.rewritePolicyOptions},scheduled_activity:function(){return this.scheduledActivityConfig},suggestions:function(){return this.suggestionsConfig},uri_schemes:function(){return this.uriSchemesConfig},uriSchemesOptions:function(){return k.uriSchemesOptions}}),methods:{getRewritePolicyExpl:function(t){return k.rewritePolicyOptions.find(function(e){return e.value===t}).expl},processNestedData:function(t,e,a,i){var n=l()({},this.$store.state.settings.settings[e][a],s()({},i,t));this.updateSetting(n,e,a)},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},q=(a("e0P1"),Object(c.a)(H,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"instance",attrs:{model:t.instance,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Name"}},[a("el-input",{attrs:{value:t.instance.name},on:{input:function(e){return t.updateSetting(e,"instance","name")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The instance’s name")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Email"}},[a("el-input",{attrs:{value:t.instance.email},on:{input:function(e){return t.updateSetting(e,"instance","email")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Email used to reach an Administrator/Moderator of the instance")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Notify email"}},[a("el-input",{attrs:{value:t.instance.notify_email},on:{input:function(e){return t.updateSetting(e,"instance","notify_email")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Email used for notifications")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Description"}},[a("el-input",{attrs:{value:t.instance.description},on:{input:function(e){return t.updateSetting(e,"instance","description")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The instance’s description, can be seen in nodeinfo and "),a("span",{staticClass:"code"},[t._v("/api/v1/instance")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Limit"}},[a("el-input-number",{attrs:{value:t.instance.limit,step:1e3,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"instance","limit")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Posts character limit (CW/Subject included in the counter)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Remote limit"}},[a("el-input-number",{attrs:{value:t.instance.remote_limit,step:1e3,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"instance","remote_limit")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Hard character limit beyond which remote posts will be dropped")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Upload limit (MB)"}},[a("el-input-number",{attrs:{value:t.instance.upload_limit/1048576,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(1048576*e,"instance","upload_limit")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("File size limit of uploads (except for avatar, background, banner)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Avatar upload limit (MB)"}},[a("el-input-number",{attrs:{value:t.instance.avatar_upload_limit/1048576,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(1048576*e,"instance","avatar_upload_limit")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("File size limit of user’s profile avatars")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Background upload limit (MB)"}},[a("el-input-number",{attrs:{value:t.instance.background_upload_limit/1048576,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(1048576*e,"instance","background_upload_limit")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("File size limit of user’s profile backgrounds")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Banner upload limit (MB)"}},[a("el-input-number",{attrs:{value:t.instance.banner_upload_limit/1048576,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(1048576*e,"instance","banner_upload_limit")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("File size limit of user’s profile banners")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Poll limits:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Max options"}},[a("el-input-number",{attrs:{value:t.instance.poll_limits.max_options,step:1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(e,"instance","poll_limits","max_options")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Maximum number of options")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Max characters per option"}},[a("el-input-number",{attrs:{value:t.instance.poll_limits.max_option_chars,step:1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(e,"instance","poll_limits","max_option_chars")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Maximum number of characters per option")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Minimum expiration (days)"}},[a("el-input-number",{attrs:{value:t.instance.poll_limits.min_expiration,step:1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(e,"instance","poll_limits","min_expiration")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Minimum expiration time")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Max expiration (days)"}},[a("el-input-number",{attrs:{value:t.instance.poll_limits.max_expiration/86400,step:1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(86400*e,"instance","poll_limits","max_expiration")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Maximum expiration time")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Registrations open"}},[a("el-switch",{attrs:{value:t.instance.registrations_open},on:{change:function(e){return t.updateSetting(e,"instance","registrations_open")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enable registrations for anyone, invitations can be enabled when false")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Invites enabled"}},[a("el-switch",{attrs:{value:t.instance.invites_enabled},on:{change:function(e){return t.updateSetting(e,"instance","invites_enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enable user invitations for admins (depends on "),a("span",{staticClass:"code"},[t._v("registrations_open: false)")]),t._v(".")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Account activation required"}},[a("el-switch",{attrs:{value:t.instance.account_activation_required},on:{change:function(e){return t.updateSetting(e,"instance","account_activation_required")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Require users to confirm their emails before signing in")])],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"Federating"}},[a("el-switch",{attrs:{value:t.instance.federating},on:{change:function(e){return t.updateSetting(e,"instance","federating")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enable federation with other instances")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Fed. replies max depth"}},[a("el-input-number",{attrs:{value:t.instance.federation_incoming_replies_max_depth,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"instance","federation_incoming_replies_max_depth")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Max. depth of reply-to activities fetching on incoming federation, to prevent out-of-memory situations while fetching very long threads. Lower this value if you experience out-of-memory crashes.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Fed. reachability timeout"}},[a("el-input-number",{attrs:{value:t.instance.federation_reachability_timeout_days,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"instance","federation_reachability_timeout_days")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Timeout (in days) of each external federation target being unreachable prior to pausing federating to it")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Federation publisher modules"}},[a("el-select",{attrs:{value:t.instance.federation_publisher_modules||[],multiple:""},on:{change:function(e){return t.updateSetting(e,"instance","federation_publisher_modules")}}},t._l(t.federationPublisherModulesOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1)],1),t._v(" "),a("el-form-item",{attrs:{label:"Allow relay"}},[a("el-switch",{attrs:{value:t.instance.allow_relay},on:{change:function(e){return t.updateSetting(e,"instance","allow_relay")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enable Pleroma’s Relay, which makes it possible to follow a whole instance")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Rewrite policy"}},[a("el-select",{attrs:{value:t.rewritePolicy||[],multiple:""},on:{change:function(e){return t.updateSetting(e,"instance","rewrite_policy")}}},t._l(t.rewritePolicyOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1),t._v(" "),t._l(t.rewritePolicy,function(e){return a("p",{key:e,staticClass:"expl"},[t._v(t._s(t.getRewritePolicyExpl(e)))])})],2),t._v(" "),a("el-form-item",{attrs:{label:"Public"}},[a("el-switch",{attrs:{value:t.instance.public},on:{change:function(e){return t.updateSetting(e,"instance","public")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Makes the client API in authentificated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Quarantined instances"}},[a("el-select",{attrs:{value:t.instance.quarantined_instances||[],multiple:"",placeholder:"Select"},on:{change:function(e){return t.updateSetting(e,"instance","quarantined_instances")}}},t._l(t.quarantinedInstancesOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of ActivityPub instances where private (DMs, followers-only) activities will not be send")])],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"Managed config"}},[a("el-switch",{attrs:{value:t.instance.managed_config},on:{change:function(e){return t.updateSetting(e,"instance","managed_config")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whenether the config for pleroma-fe is configured in this config or in "),a("span",{staticClass:"code"},[t._v("static/config.json")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Static directory"}},[a("el-input",{attrs:{value:t.instance.static_dir},on:{input:function(e){return t.updateSetting(e,"instance","static_dir")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Allowed post formats"}},[a("el-select",{attrs:{value:t.instance.allowed_post_formats||[],multiple:"",placeholder:"Select"},on:{change:function(e){return t.updateSetting(e,"instance","allowed_post_formats")}}},[a("el-option",{attrs:{label:"text/plain",value:"text/plain"}}),t._v(" "),a("el-option",{attrs:{label:"text/html",value:"text/html"}}),t._v(" "),a("el-option",{attrs:{label:"text/markdown",value:"text/markdown"}}),t._v(" "),a("el-option",{attrs:{label:"text/bbcode",value:"text/bbcode"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("MIME-type list of formats allowed to be posted (transformed into HTML)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"MRF transparency"}},[a("el-switch",{attrs:{value:t.instance.mrf_transparency},on:{change:function(e){return t.updateSetting(e,"instance","mrf_transparency")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Make the content of your Message Rewrite Facility settings public (via nodeinfo)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"MRF transparency exclusions"}},[a("el-select",{attrs:{value:t.instance.mrf_transparency_exclusions||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"instance","mrf_transparency_exclusions")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Scope copy"}},[a("el-switch",{attrs:{value:t.instance.scope_copy},on:{change:function(e){return t.updateSetting(e,"instance","scope_copy")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Copy the scope "),a("span",{staticClass:"code"},[t._v("(private/unlisted/public)")]),t._v(" in replies to posts by default")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Subject line behavior"}},[a("el-select",{attrs:{value:t.instance.subject_line_behavior},on:{change:function(e){return t.updateSetting(e,"instance","subject_line_behavior")}}},[a("el-option",{attrs:{label:"Email",value:"email"}},[t._v("Email / Copy and preprend re:, as in email")]),t._v(" "),a("el-option",{attrs:{label:"Masto",value:"masto"}},[t._v("Masto / Copy verbatim, as in Mastodon")]),t._v(" "),a("el-option",{attrs:{label:"Noop",value:"noop"}},[t._v("Noop / Don't copy the subject")])],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("Allows changing the default behaviour of subject lines in replies")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Always show subject input"}},[a("el-switch",{attrs:{value:t.instance.always_show_subject_input},on:{change:function(e){return t.updateSetting(e,"instance","always_show_subject_input")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("When set to false, auto-hide the subject field when it's empty")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Extended nickname format"}},[a("el-switch",{attrs:{value:t.instance.extended_nickname_format},on:{change:function(e){return t.updateSetting(e,"instance","extended_nickname_format")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Set to "),a("span",{staticClass:"code"},[t._v("true")]),t._v(" to use extended local nicknames format (allows underscores/dashes). This will break federation with older software for theses nicknames")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Max pinned statuses"}},[a("el-input-number",{attrs:{value:t.instance.max_pinned_statuses,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"instance","max_pinned_statuses")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The maximum number of pinned statuses. '0' will disable the feature")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Autofollowed nicknames"}},[a("el-select",{attrs:{value:t.instance.autofollowed_nicknames||[],multiple:"",placeholder:"Select"},on:{change:function(e){return t.updateSetting(e,"instance","autofollowed_nicknames")}}},t._l(t.autofollowedNicknamesOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1),t._v(" "),a("p",{staticClass:"expl"},[t._v("Set to nicknames of (local) users that every new user should automatically follow")])],1),t._v(" "),a("el-form-item",{attrs:{label:"No attachment links"}},[a("el-switch",{attrs:{value:t.instance.no_attachment_links},on:{change:function(e){return t.updateSetting(e,"instance","no_attachment_links")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Set to true to disable automatically adding attachment link text to statuses")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Welcome message"}},[a("el-input",{attrs:{value:t.instance.welcome_message},on:{input:function(e){return t.updateSetting(e,"instance","welcome_message")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("A message that will be send to a newly registered users as a direct message")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Welcome user nickname"}},[a("el-input",{attrs:{value:t.instance.welcome_user_nickname},on:{input:function(e){return t.updateSetting(e,"instance","welcome_user_nickname")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The nickname of the local user that sends the welcome message")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Max report comment size"}},[a("el-input-number",{attrs:{value:t.instance.max_report_comment_size,step:100,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"instance","max_report_comment_size")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The maximum size of the report comment")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Safe DM mentions"}},[a("el-switch",{attrs:{value:t.instance.safe_dm_mentions},on:{change:function(e){return t.updateSetting(e,"instance","safe_dm_mentions")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("If set to true, only mentions at the beginning of a post will be used to address people in direct messages. This is to prevent accidental mentioning of people when talking about them")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Healthcheck"}},[a("el-switch",{attrs:{value:t.instance.healthcheck},on:{change:function(e){return t.updateSetting(e,"instance","healthcheck")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("If set to true, system data will be shown on "),a("span",{staticClass:"code"},[t._v("/api/pleroma/healthcheck")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Remote post retention days"}},[a("el-input-number",{attrs:{value:t.instance.remote_post_retention_days,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"instance","remote_post_retention_days")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The default amount of days to retain remote posts when pruning the database.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Skip thread containment"}},[a("el-switch",{attrs:{value:t.instance.skip_thread_containment},on:{change:function(e){return t.updateSetting(e,"instance","skip_thread_containment")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Skip filter out broken threads.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Limit to local content"}},[a("el-select",{attrs:{value:t.instance.limit_to_local_content},on:{change:function(e){return t.updateSetting(e,"instance","limit_to_local_content")}}},[a("el-option",{attrs:{label:"Unauthenticated",value:":unauthenticated"}}),t._v(" "),a("el-option",{attrs:{label:"All",value:":all"}}),t._v(" "),a("el-option",{attrs:{label:"False",value:"false"}})],1)],1),t._v(" "),a("el-form-item",{attrs:{label:"Dynamic configuration"}},[a("el-switch",{attrs:{value:t.instance.dynamic_configuration},on:{change:function(e){return t.updateSetting(e,"instance","dynamic_configuration")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Allow transferring configuration to DB with the subsequent customization from Admin API")])],1),t._v(" "),a("el-form-item",{attrs:{label:"External user synchronization"}},[a("el-switch",{attrs:{value:t.instance.external_user_synchronization},on:{change:function(e){return t.updateSetting(e,"instance","external_user_synchronization")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enabling following/followers counters synchronization for external users.")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"uri_schemes",attrs:{model:t.uri_schemes,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"URI schemes"}},[a("el-select",{attrs:{value:t.uri_schemes.valid_schemes||[],multiple:"",filterable:"","allow-create":"",placeholder:"Select"},on:{change:function(e){return t.updateSetting(e,"uri_schemes","valid_schemes")}}},t._l(t.uriSchemesOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of the scheme part that is considered valid to be an URL")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"admin_token",attrs:{model:t.admin_token,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Admin token"}},[a("el-input",{attrs:{value:t.admin_token.value},on:{input:function(e){return t.updateSetting(e,"admin_token","value")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("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 "),a("span",{staticClass:"code"},[t._v("admin_token")]),t._v(" parameter.")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"scheduled_activity",attrs:{model:t.scheduled_activity,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Scheduled activity:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Daily user limit"}},[a("el-input-number",{attrs:{value:t.scheduled_activity.daily_user_limit,step:5,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"Pleroma.ScheduledActivity","daily_user_limit")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The number of scheduled activities a user is allowed to create in a single day (Default: 25)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Total user limit"}},[a("el-input-number",{attrs:{value:t.scheduled_activity.total_user_limit,step:10,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"Pleroma.ScheduledActivity","total_user_limit")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The number of scheduled activities a user is allowed to create in total (Default: 300)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:t.scheduled_activity.enabled},on:{change:function(e){return t.updateSetting(e,"Pleroma.ScheduledActivity","enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Whether scheduled activities are sent to the job queue to be executed")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"fetch_initial_posts",attrs:{model:t.fetch_initial_posts,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Fetch initial posts"}},[a("el-switch",{attrs:{value:t.fetch_initial_posts.enabled},on:{change:function(e){return t.updateSetting(e,"fetch_initial_posts","enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("If enabled, when a new user is federated with, fetch some of their latest posts")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Pages"}},[a("el-input-number",{attrs:{value:t.fetch_initial_posts.pages,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"fetch_initial_posts","pages")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The amount of pages to fetch")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"suggestions",attrs:{model:t.suggestions,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Suggestions:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:t.suggestions.enabled},on:{change:function(e){return t.updateSetting(e,"suggestions","enabled")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Third party engine"}},[a("el-input",{attrs:{value:t.suggestions.third_party_engine},on:{input:function(e){return t.updateSetting(e,"suggestions","third_party_engine")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Timeout"}},[a("el-input-number",{attrs:{value:t.suggestions.timeout,step:1e3,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"suggestions","timeout")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Limit"}},[a("el-input-number",{attrs:{value:t.suggestions.limit,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"suggestions","limit")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Web"}},[a("el-input",{attrs:{value:t.suggestions.web},on:{input:function(e){return t.updateSetting(e,"suggestions","web")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"pleromaUser",attrs:{model:t.pleromaUser,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Restricted nicknames"}},[a("el-select",{attrs:{value:t.pleromaUser.restricted_nicknames||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"Pleroma.User","restricted_nicknames")}}},t._l(t.restrictedNicknamesOptions,function(t){return a("el-option",{key:t.value,attrs:{value:t.value}})}),1)],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));q.options.__file="Instance.vue";var B=q.exports,G={name:"JobQueue",computed:l()({},Object(r.b)(["queuesConfig","retryQueueConfig"]),{queues:function(){return this.queuesConfig},retryQueue:function(){return this.retryQueueConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},V=(a("lNpP"),Object(c.a)(G,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"queues",attrs:{model:t.queues,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Job queues:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Outgoing federation"}},[a("el-input-number",{attrs:{value:t.queues.federator_outgoing,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"queues","federator_outgoing")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Incoming federation"}},[a("el-input-number",{attrs:{value:t.queues.federator_incoming,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"queues","federator_incoming")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Email sender"}},[a("el-input-number",{attrs:{value:t.queues.mailer,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"queues","mailer")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Transmogrifier"}},[a("el-input-number",{attrs:{value:t.queues.transmogrifier,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"queues","transmogrifier")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Web push notifications"}},[a("el-input-number",{attrs:{value:t.queues.web_push,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"queues","web_push")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Scheduled activities"}},[a("el-input-number",{attrs:{value:t.queues.scheduled_activities,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"queues","scheduled_activities")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Background"}},[a("el-input-number",{attrs:{value:t.queues.background,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"queues","background")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"retryQueue",attrs:{model:t.retryQueue,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Retry queue:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:t.retryQueue.enabled},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Federator.RetryQueue","enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("If set to true, failed federation jobs will be retried")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Max jobs"}},[a("el-input-number",{attrs:{value:t.retryQueue.max_jobs,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Federator.RetryQueue","max_jobs")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The maximum amount of parallel federation jobs running at the same time.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Initial timeout (s)"}},[a("el-input-number",{attrs:{value:t.retryQueue.initial_timeout,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Federator.RetryQueue","initial_timeout")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The initial timeout in seconds")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Max retries"}},[a("el-input-number",{attrs:{value:t.retryQueue.max_retries,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Federator.RetryQueue","max_retries")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The maximum number of times a federation job is retried")])],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));V.options.__file="JobQueue.vue";var K=V.exports,Q={name:"Logger",computed:l()({},Object(r.b)(["consoleConfig","exsysloggerConfig","levelConfig","loggerBackendsConfig","metaConfig","webhookUrlConfig"]),{consoleLogger:function(){return this.consoleConfig},exsyslogger:function(){return this.exsysloggerConfig},level:function(){return this.levelConfig},loggerBackends:function(){return this.loggerBackendsConfig},loggerBackendsValue:function(){return this.loggerBackends.value?this.loggerBackends.value.map(function(t){return JSON.stringify(t)}):[]},loggerBackendsOptions:function(){return k.loggerBackendsOptions},meta:function(){return this.metaConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"},webhookUrl:function(){return this.webhookUrlConfig}}),methods:{processNestedData:function(t,e,a,i){var n=l()({},this.$store.state.settings.settings[e][a],s()({},i,t));this.updateSetting(n,e,a)},updateloggerBackends:function(t,e,a){var i=t.map(function(t){return JSON.parse(t)});this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,i)})},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},J=(a("mADP"),Object(c.a)(Q,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"loggerBackends",attrs:{model:t.loggerBackends,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Backends"}},[a("el-select",{attrs:{value:t.loggerBackendsValue,multiple:""},on:{change:function(e){return t.updateloggerBackends(e,"backends","value")}}},t._l(t.loggerBackendsOptions,function(t,e){return a("el-option",{key:e,attrs:{label:t.label,value:t.value}})}),1),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of instances to remove medias from")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"consoleLogger",attrs:{model:t.consoleLogger,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Console logger:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Level"}},[a("el-select",{attrs:{value:t.consoleLogger.level},on:{change:function(e){return t.updateSetting(e,"console","level")}}},[a("el-option",{attrs:{value:":debug",label:":debug - for debug-related messages"}}),t._v(" "),a("el-option",{attrs:{value:":info",label:":info - for information of any kind"}}),t._v(" "),a("el-option",{attrs:{value:":warn",label:":warn - for warnings"}}),t._v(" "),a("el-option",{attrs:{value:":error",label:":error - for errors"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("The level to be logged by this backend. Note that messages are filtered by the general\n "),a("span",{staticClass:"code"},[t._v(":level")]),t._v(" configuration for the "),a("span",{staticClass:"code"},[t._v(":logger")]),t._v(" application first.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Format"}},[a("el-input",{attrs:{value:t.consoleLogger.format},on:{input:function(e){return t.updateSetting(e,"console","format")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The format message used to print logs. ")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Metadata"}},[a("el-select",{attrs:{value:t.consoleLogger.metadata||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"console","metadata")}}},[a("el-option",{attrs:{value:":all"}}),t._v(" "),a("el-option",{attrs:{value:":request_id"}}),t._v(" "),a("el-option",{attrs:{value:":line"}}),t._v(" "),a("el-option",{attrs:{value:":user_id"}}),t._v(" "),a("el-option",{attrs:{value:":application"}}),t._v(" "),a("el-option",{attrs:{value:":function"}}),t._v(" "),a("el-option",{attrs:{value:":file"}}),t._v(" "),a("el-option",{attrs:{value:":pid"}}),t._v(" "),a("el-option",{attrs:{value:":crash_reason"}}),t._v(" "),a("el-option",{attrs:{value:":initial_call"}}),t._v(" "),a("el-option",{attrs:{value:":registered_name"}}),t._v(" "),a("el-option",{attrs:{value:":none"}})],1)],1),t._v(" "),a("el-form-item",{attrs:{label:"Device"}},[a("el-input",{attrs:{value:t.consoleLogger.device},on:{input:function(e){return t.updateSetting(e,"console","device")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The device to log error messages to. Defaults to "),a("span",{staticClass:"code"},[t._v(":user")]),t._v("\n but can be changed to something else such as "),a("span",{staticClass:"code"},[t._v(":standard_error")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Max buffer"}},[a("el-input-number",{attrs:{value:t.consoleLogger.max_buffer,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"console","max_buffer")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Maximum events to buffer while waiting for a confirmation from the IO device (default: 32). Once the buffer is full, the backend will block until a confirmation is received.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Colors:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:t.consoleLogger.colors.enabled},on:{change:function(e){return t.processNestedData(e,"console","colors","enabled")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Debug message"}},[a("el-input",{attrs:{value:t.consoleLogger.colors.debug},on:{input:function(e){return t.processNestedData(e,"console","colors","debug")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Defaults to: "),a("span",{staticClass:"code"},[t._v(":cyan")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Info message"}},[a("el-input",{attrs:{value:t.consoleLogger.colors.info},on:{input:function(e){return t.processNestedData(e,"console","colors","info")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Defaults to: "),a("span",{staticClass:"code"},[t._v(":normal")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Warn message"}},[a("el-input",{attrs:{value:t.consoleLogger.colors.warn},on:{input:function(e){return t.processNestedData(e,"console","colors","warn")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Defaults to: "),a("span",{staticClass:"code"},[t._v(":yellow")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Error message"}},[a("el-input",{attrs:{value:t.consoleLogger.colors.error},on:{input:function(e){return t.processNestedData(e,"console","colors","error")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Defaults to: "),a("span",{staticClass:"code"},[t._v(":red")])])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"exsyslogger",attrs:{model:t.exsyslogger,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"ExSyslogger:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Level"}},[a("el-select",{attrs:{value:t.exsyslogger.level},on:{change:function(e){return t.updateSetting(e,"ex_syslogger","level")}}},[a("el-option",{attrs:{value:":debug",label:":debug - for debug-related messages"}}),t._v(" "),a("el-option",{attrs:{value:":info",label:":info - for information of any kind"}}),t._v(" "),a("el-option",{attrs:{value:":warn",label:":warn - for warnings"}}),t._v(" "),a("el-option",{attrs:{value:":error",label:":error - for errors"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("Logging level. It defaults to "),a("span",{staticClass:"code"},[t._v(":info.")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Format"}},[a("el-input",{attrs:{value:t.exsyslogger.format},on:{input:function(e){return t.updateSetting(e,"ex_syslogger","format")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The format message used to print logs.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Formatter"}},[a("el-input",{attrs:{value:t.exsyslogger.formatter},on:{input:function(e){return t.updateSetting(e,"ex_syslogger","formatter")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Formatter that will be used to format the log. It default to "),a("span",{staticClass:"code"},[t._v("Logger.Formatter")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Metadata"}},[a("el-select",{attrs:{value:t.exsyslogger.metadata||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"ex_syslogger","metadata")}}},[a("el-option",{attrs:{value:":all"}}),t._v(" "),a("el-option",{attrs:{value:":request_id"}}),t._v(" "),a("el-option",{attrs:{value:":line"}}),t._v(" "),a("el-option",{attrs:{value:":user_id"}}),t._v(" "),a("el-option",{attrs:{value:":application"}}),t._v(" "),a("el-option",{attrs:{value:":function"}}),t._v(" "),a("el-option",{attrs:{value:":file"}}),t._v(" "),a("el-option",{attrs:{value:":pid"}}),t._v(" "),a("el-option",{attrs:{value:":crash_reason"}}),t._v(" "),a("el-option",{attrs:{value:":initial_call"}}),t._v(" "),a("el-option",{attrs:{value:":registered_name"}}),t._v(" "),a("el-option",{attrs:{value:":none"}})],1)],1),t._v(" "),a("el-form-item",{attrs:{label:"Ident"}},[a("el-input",{attrs:{value:t.exsyslogger.ident},on:{input:function(e){return t.updateSetting(e,"ex_syslogger","ident")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("A string that’s prepended to every message, and is typically set to the app name. It defaults to "),a("span",{staticClass:"code"},[t._v("Elixir")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Facility"}},[a("el-input",{attrs:{value:t.exsyslogger.facility},on:{input:function(e){return t.updateSetting(e,"ex_syslogger","facility")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Syslog facility to be used. It defaults to "),a("span",{staticClass:"code"},[t._v(":local0")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Options"}},[a("el-select",{attrs:{value:t.exsyslogger.option||[],multiple:""},on:{change:function(e){return t.updateSetting(e,"ex_syslogger","option")}}},[a("el-option",{attrs:{value:":pid"}}),t._v(" "),a("el-option",{attrs:{value:":cons"}}),t._v(" "),a("el-option",{attrs:{value:":odelay"}}),t._v(" "),a("el-option",{attrs:{value:":ndelay"}}),t._v(" "),a("el-option",{attrs:{value:":perror"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("Syslog option to be used. It defaults to "),a("span",{staticClass:"code"},[t._v(":ndelay.")])])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"webhookUrl",attrs:{model:t.webhookUrl,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Quack logger:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Webhook URL"}},[a("el-input",{attrs:{value:t.webhookUrl.value},on:{input:function(e){return t.updateSetting(e,"webhook_url","value")}}})],1)],1),t._v(" "),a("el-form",{ref:"level",attrs:{model:t.level,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Level"}},[a("el-select",{attrs:{value:t.level.value},on:{change:function(e){return t.updateSetting(e,"level","value")}}},[a("el-option",{attrs:{value:":debug",label:":debug - for debug-related messages"}}),t._v(" "),a("el-option",{attrs:{value:":info",label:":info - for information of any kind"}}),t._v(" "),a("el-option",{attrs:{value:":warn",label:":warn - for warnings"}}),t._v(" "),a("el-option",{attrs:{value:":error",label:":error - for errors"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("Logging level. It defaults to "),a("span",{staticClass:"code"},[t._v(":info.")])])],1)],1),t._v(" "),a("el-form",{ref:"meta",attrs:{model:t.meta,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Metadata"}},[a("el-select",{attrs:{value:t.meta.value||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"meta","value")}}},[a("el-option",{attrs:{value:":all"}}),t._v(" "),a("el-option",{attrs:{value:":module"}}),t._v(" "),a("el-option",{attrs:{value:":function"}}),t._v(" "),a("el-option",{attrs:{value:":file"}}),t._v(" "),a("el-option",{attrs:{value:":application"}}),t._v(" "),a("el-option",{attrs:{value:":line"}}),t._v(" "),a("el-option",{attrs:{value:":pid"}}),t._v(" "),a("el-option",{attrs:{value:":crash_reason"}}),t._v(" "),a("el-option",{attrs:{value:":initial_call"}}),t._v(" "),a("el-option",{attrs:{value:":registered_name"}}),t._v(" "),a("el-option",{attrs:{value:":none"}})],1)],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));J.options.__file="Logger.vue";var Y=J.exports,X={name:"Mailer",components:{editor:P.a},computed:l()({},Object(r.b)(["mailerConfig"]),{editorContent:{get:function(){return this.mailerConfig.dkim?this.mailerConfig.dkim[0]:""},set:function(t){this.updateSetting([t],"Pleroma.Emails.Mailer","dkim")}},mailer:function(){return this.mailerConfig},adapterOptions:function(){return k.adapterOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},Z=(a("PygS"),Object(c.a)(X,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("el-form",{ref:"mailer",attrs:{model:t.mailer,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:t.mailer.enabled},on:{change:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Allows to enable or disable sending emails. Defaults to false.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Adapter"}},[a("el-select",{attrs:{value:t.mailer.adapter},on:{change:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","adapter")}}},t._l(t.adapterOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),"Swoosh.Adapters.Sendmail"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"CMD Path"}},[a("el-input",{attrs:{value:t.mailer.cmd_path},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","cmd_path")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("E. g. "),a("span",{staticClass:"code"},[t._v('/usr/bin/sendmail"')])])],1),t._v(" "),a("el-form-item",{attrs:{label:"CMD Args"}},[a("el-input",{attrs:{value:t.mailer.cmd_args},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","cmd_args")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("E. g. "),a("span",{staticClass:"code"},[t._v("-N delay,failure,success")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Qmail"}},[a("el-switch",{attrs:{value:t.mailer.qmail},on:{change:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","qmail")}}})],1)],1):t._e(),t._v(" "),"Swoosh.Adapters.SMTP"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"Relay"}},[a("el-input",{attrs:{value:t.mailer.relay},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","relay")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("E. g. "),a("span",{staticClass:"code"},[t._v("smtp.avengers.com")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Username"}},[a("el-input",{attrs:{value:t.mailer.username},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","username")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Password"}},[a("el-input",{attrs:{value:t.mailer.password},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","password")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"SSL"}},[a("el-switch",{attrs:{value:t.mailer.ssl},on:{change:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","ssl")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"TLS"}},[a("el-input",{attrs:{value:t.mailer.tls},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","tls")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("E.g. "),a("span",{staticClass:"code"},[t._v(":always")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Auth"}},[a("el-input",{attrs:{value:t.mailer.auth},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","auth")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("E.g. "),a("span",{staticClass:"code"},[t._v(":always")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:t.mailer.port},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","port")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"DKIM"}},[a("editor",{attrs:{height:"150",width:"100%",lang:"elixir",theme:"chrome"},model:{value:t.editorContent,callback:function(e){t.editorContent=e},expression:"editorContent"}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Retries"}},[a("el-input-number",{attrs:{value:t.mailer.retries,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","retries")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"No mx lookups"}},[a("el-switch",{attrs:{value:t.mailer.no_mx_lookups},on:{change:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","no_mx_lookups")}}})],1)],1):t._e(),t._v(" "),"Swoosh.Adapters.Sendgrid"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:t.mailer.api_key},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","api_key")}}})],1)],1):t._e(),t._v(" "),"Swoosh.Adapters.Mandrill"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:t.mailer.api_key},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","api_key")}}})],1)],1):t._e(),t._v(" "),"Swoosh.Adapters.Mailgun"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:t.mailer.api_key},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","api_key")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Domain"}},[a("el-input",{attrs:{value:t.mailer.domain},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","domain")}}})],1)],1):t._e(),t._v(" "),"Swoosh.Adapters.Mailjet"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:t.mailer.api_key},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","api_key")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Secret"}},[a("el-input",{attrs:{value:t.mailer.secret},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","secret")}}})],1)],1):t._e(),t._v(" "),"Swoosh.Adapters.Postmark"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:t.mailer.api_key},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","api_key")}}})],1)],1):t._e(),t._v(" "),"Swoosh.Adapters.SparkPost"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:t.mailer.api_key},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","api_key")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Endpoint"}},[a("el-input",{attrs:{value:t.mailer.endpoint},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","endpoint")}}})],1)],1):t._e(),t._v(" "),"Swoosh.Adapters.AmazonSES"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"Region"}},[a("el-input",{attrs:{value:t.mailer.region},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","region")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Access key"}},[a("el-input",{attrs:{value:t.mailer.access_key},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","access_key")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Secret"}},[a("el-input",{attrs:{value:t.mailer.secret},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","secret")}}})],1)],1):t._e(),t._v(" "),"Swoosh.Adapters.Dyn"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:t.mailer.api_key},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","api_key")}}})],1)],1):t._e(),t._v(" "),"Swoosh.Adapters.SocketLabs"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"Server ID"}},[a("el-input",{attrs:{value:t.mailer.server_id},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","server_id")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:t.mailer.api_key},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","api_key")}}})],1)],1):t._e(),t._v(" "),"Swoosh.Adapters.Gmail"===t.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"Access token"}},[a("el-input",{attrs:{value:t.mailer.access_token},on:{input:function(e){return t.updateSetting(e,"Pleroma.Emails.Mailer","access_token")}}})],1)],1):t._e(),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));Z.options.__file="Mailer.vue";var tt=Z.exports,et={name:"MediaProxy",computed:l()({},Object(r.b)(["mediaProxyConfig"]),{inlineContentTypes:function(){return Array.isArray(this.mediaProxy.proxy_opts.inline_content_types)?"whitelistedTypeArray":this.mediaProxy.proxy_opts.inline_content_types},http:function(){return this.mediaProxy.proxy_opts.http||{}},mediaProxy:function(){return this.mediaProxyConfig},reqHeadersOptions:function(){return this.mediaProxySettings.reqHeadersOptions},hackneyPoolsOptions:function(){return k.hackneyPoolsOptions},whitelistedContentTypes:function(){return Array.isArray(this.mediaProxy.proxy_opts.inline_content_types)?this.mediaProxy.proxy_opts.inline_content_types:[]},whitelistedContentTypesOptions:function(){return k.whitelistedContentTypesOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{getPoolExpl:function(t){var e=this.hackneyPoolsOptions.find(function(e){return e.value===t});return e?"Max connections: "+e.max_connections+", timeout: "+e.timeout:""},processHttpSettings:function(t,e,a,i,n){var r=l()({},this.mediaProxy[a][i],s()({},n,t));this.processNestedData(r,e,a,i)},processNestedData:function(t,e,a,i){var n=l()({},this.$store.state.settings.settings[e][a],s()({},i,t));this.updateSetting(n,e,a)},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},at=(a("UdS4"),Object(c.a)(et,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("el-form",{ref:"mediaProxy",attrs:{model:t.mediaProxy,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:t.mediaProxy.enabled},on:{change:function(e){return t.updateSetting(e,"media_proxy","enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Enables proxying of remote media to the instance’s proxy")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Base URL"}},[a("el-input",{attrs:{value:t.mediaProxy.base_url},on:{input:function(e){return t.updateSetting(e,"media_proxy","base_url")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts.")])],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"Proxy options:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Redirect on failure"}},[a("el-switch",{attrs:{value:t.mediaProxy.proxy_opts.redirect_on_failure},on:{change:function(e){return t.processNestedData(e,"media_proxy","proxy_opts","redirect_on_failure")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Redirects the client to the real remote URL if there's any HTTP errors. Any error during body processing will not be redirected as the response is chunked")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Max body length (MB)"}},[a("el-input-number",{attrs:{value:t.mediaProxy.proxy_opts.max_body_length/1048576,step:1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(1048576*e,"media_proxy","proxy_opts","max_body_length")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Limits the content length to be approximately the specified length")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Max read duration (s)"}},[a("el-input-number",{attrs:{value:t.mediaProxy.proxy_opts.max_read_duration,step:1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(e,"media_proxy","proxy_opts","max_read_duration")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The total time the connection is allowed to read from the remote upstream")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Inline content types"}},[a("el-select",{attrs:{value:t.inlineContentTypes},on:{change:function(e){return t.processNestedData(e,"media_proxy","proxy_opts","inline_content_types")}}},[a("el-option",{attrs:{value:!0,label:"True"}}),t._v(" "),a("el-option",{attrs:{value:!1,label:"False"}}),t._v(" "),a("el-option",{attrs:{value:"whitelistedTypeArray",label:"List of whitelisted content types"}}),t._v(" "),a("el-option",{attrs:{value:"keepUserAgent",label:"Forward client's user-agent to the upstream"}})],1),t._v(" "),!0===t.inlineContentTypes?a("p",{staticClass:"expl"},[t._v("Will not alter "),a("span",{staticClass:"code"},[t._v("content-disposition")]),t._v(" (up to the upstream)")]):t._e(),t._v(" "),t.inlineContentTypes?t._e():a("p",{staticClass:"expl"},[t._v("Will add "),a("span",{staticClass:"code"},[t._v("content-disposition: attachment")]),t._v(" to any request")]),t._v(" "),"keepUserAgent"===t.inlineContentTypes?a("p",{staticClass:"expl"},[t._v("\n Will forward the client's user-agent to the upstream. This may be useful if the upstream is\n doing content transformation (encoding, …) depending on the request.\n ")]):t._e()],1),t._v(" "),"whitelistedTypeArray"===t.inlineContentTypes?a("el-form-item",{attrs:{label:"Whitelisted content types"}},[a("el-select",{attrs:{value:t.whitelistedContentTypes,multiple:""},on:{change:function(e){return t.processNestedData(e,"media_proxy","proxy_opts","inline_content_types")}}},t._l(t.whitelistedContentTypesOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1)],1):t._e(),t._v(" "),a("el-form-item",{attrs:{label:"Request headers"}},[a("el-select",{attrs:{value:t.mediaProxy.proxy_opts.req_headers||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.processNestedData(e,"media_proxy","proxy_opts","req_headers")}}}),t._v(" "),a("p",{staticClass:"expl"},[a("span",{staticClass:"code"},[t._v("resp_headers")]),t._v(" additional headers")])],1),t._v(" "),a("el-form-item",{attrs:{label:"HTTP:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Follow redirect"}},[a("el-switch",{attrs:{value:t.http.follow_redirect},on:{change:function(e){return t.processHttpSettings(e,"media_proxy","proxy_opts","http","follow_redirect")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Pool"}},[a("el-select",{attrs:{value:t.http.pool},on:{change:function(e){return t.processHttpSettings(e,"media_proxy","proxy_opts","http","pool")}}},t._l(t.hackneyPoolsOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1),t._v(" "),a("p",{staticClass:"expl"},[t._v(t._s(t.getPoolExpl(t.http.pool)))])],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"Whitelist"}},[a("el-select",{attrs:{value:t.mediaProxy.whitelist||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"media_proxy","whitelist")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of domains to bypass the mediaproxy")])],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));at.options.__file="MediaProxy.vue";var it=at.exports,st={name:"Metadata",computed:l()({},Object(r.b)(["metadataConfig","richMediaConfig"]),{metadata:function(){return this.metadataConfig},richMedia:function(){return this.richMediaConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},nt=(a("apN7"),Object(c.a)(st,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"metadata",attrs:{model:t.metadata,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Providers"}},[a("el-select",{attrs:{value:t.metadata.providers||[],multiple:""},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Metadata","providers")}}},[a("el-option",{attrs:{value:"Pleroma.Web.Metadata.Providers.OpenGraph"}}),t._v(" "),a("el-option",{attrs:{value:"Pleroma.Web.Metadata.Providers.TwitterCard"}}),t._v(" "),a("el-option",{attrs:{value:"Pleroma.Web.Metadata.Providers.RelMe"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("A list of metadata providers to enable.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Unfurl NSFW"}},[a("el-switch",{attrs:{value:t.metadata.unfurl_nsfw},on:{change:function(e){return t.updateSetting(e,"Pleroma.Web.Metadata","unfurl_nsfw")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("If set to true nsfw attachments will be shown in previews.")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"richMedia",attrs:{model:t.richMedia,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Rich media:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:t.richMedia.enabled},on:{change:function(e){return t.updateSetting(e,"rich_media","enabled")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("If enabled the instance will parse metadata from attached links to generate link previews.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Ignore hosts"}},[a("el-select",{attrs:{value:t.richMedia.ignore_hosts||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"rich_media","ignore_hosts")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of hosts which will be ignored by the metadata parser.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Ignore TLD"}},[a("el-select",{attrs:{value:t.richMedia.ignore_tld||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"rich_media","ignore_tld")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("List TLDs (top-level domains) which will ignore for parse metadata.\n Default is "),a("span",{staticClass:"code"},[t._v('["local", "localdomain", "lan"]')])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Parsers"}},[a("el-select",{attrs:{value:t.richMedia.parsers||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"rich_media","parsers")}}},[a("el-option",{attrs:{value:"Pleroma.Web.RichMedia.Parsers.TwitterCard"}}),t._v(" "),a("el-option",{attrs:{value:"Pleroma.Web.RichMedia.Parsers.OGP"}}),t._v(" "),a("el-option",{attrs:{value:"Pleroma.Web.RichMedia.Parsers.OEmbed"}})],1),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of Rich Media parsers")])],1),t._v(" "),a("el-form-item",{attrs:{label:"TTL Setters"}},[a("el-select",{attrs:{value:t.richMedia.ttl_setters||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"rich_media","ttl_setters")}}},[a("el-option",{attrs:{value:"Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl"}})],1)],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));nt.options.__file="Metadata.vue";var lt=nt.exports,rt={name:"MRF",data:function(){return{removableDoubleOptions:["replace","mrfUserAllowlist"],removableSingleOptions:["keywordReject","federatedTimelineRemoval"]}},computed:l()({},Object(r.b)(["mrfHellthreadConfig","mrfKeywordConfig","mrfMentionConfig","mrfNormalizeMarkupConfig","mrfSimpleConfig","mrfSubchainConfig","mrfRejectnonpublicConfig","mrfUserAllowlistConfig"]),{matchActor:function(){var t=this;return Object.keys(this.mrfSubchain.match_actor).map(function(e){return[e,t.mrfSubchain.match_actor[e]]})},mrfHellthread:function(){return this.mrfHellthreadConfig},mrfKeyword:function(){return this.mrfKeywordConfig},mrfMention:function(){return this.mrfMentionConfig},mrfNormalizeMarkup:function(){return this.mrfNormalizeMarkupConfig},mrfSimple:function(){return this.mrfSimpleConfig},mrfSubchain:function(){return this.mrfSubchainConfig},mrfRejectnonpublic:function(){return this.mrfRejectnonpublicConfig},mrfUserAllowlist:function(){return this.mrfUserAllowlistConfig},policiesOptions:function(){return k.rewritePolicyOptions},replacePatterns:function(){var t=this;return Object.keys(this.mrfKeywordConfig.replace).map(function(e){return[e,t.mrfKeywordConfig.replace[e]]})},userAllowlist:function(){var t=this;return Object.keys(this.mrfUserAllowlist).map(function(e){return[e,t.mrfUserAllowlist[e]]})},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{addMrfSubchainRow:function(){var t=this.matchActor.reduce(function(t,e,a){return l()({},t,s()({},e[0],e[1]))},{});this.updateSetting(l()({},t,{"":[]}),"mrf_subchain","match_actor")},addMrfUserAllowlistRow:function(){var t=this.userAllowlist.reduce(function(t,e,a){return l()({},t,s()({},e[0],e[1]))},{});this.$store.dispatch("RewriteConfig",{data:l()({},t,{"":[]}),tab:"mrf_user_allowlist"})},addReplaceRow:function(){var t=this.replacePatterns.reduce(function(t,e,a){return l()({},t,s()({},e[0],e[1]))},{});this.updateSetting(l()({},t,{"":""}),"mrf_keyword","replace")},deleteMrfSubchainRow:function(t){var e=this.matchActor.filter(function(e,a){return t!==a}).reduce(function(t,e,a){return l()({},t,s()({},e[0],e[1]))},{});this.updateSetting(e,"mrf_subchain","match_actor")},deleteMrfUserAllowlistRow:function(t){var e=this.userAllowlist.filter(function(e,a){return t!==a}).reduce(function(t,e,a){return l()({},t,s()({},e[0],e[1]))},{});this.$store.dispatch("RewriteConfig",{data:e,tab:"mrf_user_allowlist"})},deleteReplaceRow:function(t){var e=this.replacePatterns.filter(function(e,a){return t!==a}).reduce(function(t,e,a){return l()({},t,s()({},e[0],e[1]))},{});this.updateSetting(e,"mrf_keyword","replace")},parseMrfSubchain:function(t,e,a){var i=this.matchActor.reduce(function(i,n,r){return a===r?"regExp"===e?l()({},i,s()({},t,n[1])):l()({},i,s()({},n[0],t)):l()({},i,s()({},n[0],n[1]))},{});this.updateSetting(i,"mrf_subchain","match_actor")},parseMrfUserAllowlist:function(t,e,a){var i=this.userAllowlist.reduce(function(i,n,r){return a===r?"domain"===e?l()({},i,s()({},t,n[1])):l()({},i,s()({},n[0],t)):l()({},i,s()({},n[0],n[1]))},{});this.$store.dispatch("RewriteConfig",{data:i,tab:"mrf_user_allowlist"})},parseReplace:function(t,e,a){var i=this.replacePatterns.reduce(function(i,n,r){return a===r?"key"===e?l()({},i,s()({},t,n[1])):l()({},i,s()({},n[0],t)):l()({},i,s()({},n[0],n[1]))},{});this.updateSetting(i,"mrf_keyword","replace")},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},ot=(a("h9z7"),Object(c.a)(rt,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"mrfSimple",attrs:{model:t.mrfSimple,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"MRF Simple:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Media removal"}},[a("el-select",{attrs:{value:t.mrfSimple.media_removal||[],multiple:"","allow-create":"",filterable:""},on:{change:function(e){return t.updateSetting(e,"mrf_simple","media_removal")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of instances to remove medias from")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Media NSFW"}},[a("el-select",{attrs:{value:t.mrfSimple.media_nsfw||[],multiple:"","allow-create":"",filterable:""},on:{change:function(e){return t.updateSetting(e,"mrf_simple","media_nsfw")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of instances to put medias as NSFW (sensitive)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Federated timeline removal"}},[a("el-select",{attrs:{value:t.mrfSimple.federated_timeline_removal||[],multiple:"","allow-create":"",filterable:""},on:{change:function(e){return t.updateSetting(e,"mrf_simple","federated_timeline_removal")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of instances to remove from Federated (aka The Whole Known Network) Timeline")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Reject"}},[a("el-select",{attrs:{value:t.mrfSimple.reject||[],multiple:"","allow-create":"",filterable:""},on:{change:function(e){return t.updateSetting(e,"mrf_simple","reject")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of instances to reject any activities from")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Accept"}},[a("el-select",{attrs:{value:t.mrfSimple.accept||[],multiple:"","allow-create":"",filterable:""},on:{change:function(e){return t.updateSetting(e,"mrf_simple","accept")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of instances to accept any activities from")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Report removal"}},[a("el-select",{attrs:{value:t.mrfSimple.report_removal||[],multiple:"","allow-create":"",filterable:""},on:{change:function(e){return t.updateSetting(e,"mrf_simple","report_removal")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of instances to reject reports from")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Avatar removal"}},[a("el-select",{attrs:{value:t.mrfSimple.avatar_removal||[],multiple:"","allow-create":"",filterable:""},on:{change:function(e){return t.updateSetting(e,"mrf_simple","avatar_removal")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of instances to strip avatars from")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Banner removal"}},[a("el-select",{attrs:{value:t.mrfSimple.banner_removal||[],multiple:"","allow-create":"",filterable:""},on:{change:function(e){return t.updateSetting(e,"mrf_simple","banner_removal")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("List of instances to strip banners from")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"mrfRejectnonpublic",attrs:{model:t.mrfRejectnonpublic,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"MRF Reject non public:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Allow followers-only posts"}},[a("el-switch",{attrs:{value:t.mrfRejectnonpublic.allow_followersonly},on:{change:function(e){return t.updateSetting(e,"mrf_rejectnonpublic","allow_followersonly")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Allow direct messages"}},[a("el-switch",{attrs:{value:t.mrfRejectnonpublic.allow_direct},on:{change:function(e){return t.updateSetting(e,"mrf_rejectnonpublic","allow_direct")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"mrfHellthread",attrs:{model:t.mrfHellthread,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"MRF Hellthread:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Delist threshold"}},[a("el-input-number",{attrs:{value:t.mrfHellthread.delist_threshold,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"mrf_hellthread","delist_threshold")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Number of mentioned users after which the message gets delisted\n (the message can still be seen, but it will not show up in public timelines and mentioned users won't get notifications about it).\n Set to 0 to disable.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Reject threshold"}},[a("el-input-number",{attrs:{value:t.mrfHellthread.reject_threshold,step:1,min:0,size:"large"},on:{change:function(e){return t.updateSetting(e,"mrf_hellthread","reject_threshold")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Number of mentioned users after which the messaged gets rejected. Set to 0 to disable.")])],1)],1),t._v(" "),a("el-form",{ref:"mrfKeyword",attrs:{model:t.mrfKeyword,"label-width":t.labelWidth}},[a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"MRF Keyword:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Reject"}},[a("el-select",{attrs:{value:t.mrfKeyword.reject||[],multiple:"","allow-create":"",filterable:""},on:{change:function(e){return t.updateSetting(e,"mrf_keyword","reject")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("A list of patterns which result in message being rejected")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Federated timeline removal"}},[a("el-select",{attrs:{value:t.mrfKeyword.federated_timeline_removal,multiple:"","allow-create":"",filterable:""},on:{change:function(e){return t.updateSetting(e,"mrf_keyword","federated_timeline_removal")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("A list of patterns which result in message being removed from federated timelines (a.k.a unlisted)")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Replace"}},[t._l(t.replacePatterns,function(e,i){var s=e[0],n=e[1];return a("div",{key:i,staticClass:"setting-input"},[a("el-input",{staticClass:"name-input",attrs:{value:s,placeholder:"pattern"},on:{input:function(e){return t.parseReplace(e,"key",i)}}}),t._v(" :\n "),a("el-input",{staticClass:"value-input",attrs:{value:n,placeholder:"replacement"},on:{input:function(e){return t.parseReplace(e,"value",i)}}}),t._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.deleteReplaceRow(i)}}})],1)}),t._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:t.addReplaceRow}})],2)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"mrfSubchain",attrs:{model:t.mrfSubchain,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"MRF Subchain:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Match actor:"}},[t._l(t.matchActor,function(e,i){var s=e[0],n=e[1];return a("div",{key:i,staticClass:"setting-input"},[a("el-input",{staticClass:"name-input",attrs:{value:s,placeholder:"Regular expression"},on:{input:function(e){return t.parseMrfSubchain(e,"regExp",i)}}}),t._v(" :\n "),a("el-select",{staticClass:"value-input",attrs:{value:n,placeholder:"Policy modules",multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.parseMrfSubchain(e,"policies",i)}}},t._l(t.policiesOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1),t._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.deleteMrfSubchainRow(i)}}})],1)}),t._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:t.addMrfSubchainRow}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Matches a series of regular expressions against the actor field.")])],2)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"mrfMention",attrs:{model:t.mrfMention,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"MRF Mention:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Actors"}},[a("el-select",{attrs:{value:t.mrfMention.actors||[],multiple:"","allow-create":"",filterable:""},on:{change:function(e){return t.updateSetting(e,"mrf_mention","actors")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("A list of actors, for which to drop any posts mentioning.")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"mrfUserAllowlist",attrs:{model:t.mrfUserAllowlist,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"MRF User allowlist"}},[t._l(t.userAllowlist,function(e,i){var s=e[0],n=e[1];return a("div",{key:i,staticClass:"setting-input"},[a("el-input",{staticClass:"name-input",attrs:{value:s,placeholder:"domain"},on:{input:function(e){return t.parseMrfUserAllowlist(e,"domain",i)}}}),t._v(" :\n "),a("el-select",{staticClass:"value-input",attrs:{value:n,placeholder:"list of users",multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.parseMrfUserAllowlist(e,"users",i)}}}),t._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.deleteMrfUserAllowlistRow(i)}}})],1)}),t._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:t.addMrfUserAllowlistRow}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The keys in this section are the domain names that the policy should apply to. Each key should be assigned a list of users that should be allowed through by their ActivityPub ID.")])],2)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"mrfNormalizeMarkup",attrs:{model:t.mrfNormalizeMarkup,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"MRF normalize markup:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Scrub policy"}},[a("el-input",{attrs:{value:t.mrfNormalizeMarkup.scrub_policy},on:{input:function(e){return t.updateSetting(e,"mrf_normalize_markup","scrub_policy")}}})],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));ot.options.__file="MRF.vue";var ut=ot.exports,ct={name:"Other",computed:l()({},Object(r.b)(["formatEncodersConfig","mimeTypesConfig","teslaAdapterConfig"]),{formatEncoders:function(){return this.formatEncodersConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"},mimeTypes:function(){var t=this;return Object.keys(this.mimeTypesConfig.value).map(function(e){return[e,t.mimeTypesConfig.value[e]]})},teslaAdapter:function(){return this.teslaAdapterConfig}}),methods:{addRowToMimeTypes:function(){var t=this.mimeTypes.reduce(function(t,e,a){return l()({},t,s()({},e[0],e[1]))},{});this.updateSetting(l()({},t,{"":[]}),"types","value")},deleteMimeTypes:function(t){var e=this.mimeTypes.filter(function(e,a){return t!==a}).reduce(function(t,e,a){return l()({},t,s()({},e[0],e[1]))},{});this.updateSetting(e,"types","value")},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})},parseMimeTypes:function(t,e,a){var i=this.mimeTypes.reduce(function(i,n,r){return a===r?"type"===e?l()({},i,s()({},t,n[1])):l()({},i,s()({},n[0],t)):l()({},i,s()({},n[0],n[1]))},{});this.updateSetting(i,"types","value")},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})}}},pt=(a("gFOO"),Object(c.a)(ct,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"formatEncoders",attrs:{model:t.formatEncoders,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Phoenix Format encoders:"}}),t._v(" "),a("el-form-item",{attrs:{label:"JSON"}},[a("el-input",{attrs:{value:t.formatEncoders.json},on:{input:function(e){return t.updateSetting(e,"format_encoders","json")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"teslaAdapter",attrs:{model:t.teslaAdapter,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Tesla adapter"}},[a("el-input",{attrs:{value:t.teslaAdapter.value},on:{input:function(e){return t.updateSetting(e,"adapter","value")}}})],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"mimeTypesConfig",attrs:{model:t.mimeTypesConfig,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Mime types"}},[t._l(t.mimeTypes,function(e,i){var s=e[0],n=e[1];return a("div",{key:i,staticClass:"setting-input"},[a("el-input",{staticClass:"name-input",attrs:{value:s,placeholder:"type"},on:{input:function(e){return t.parseMimeTypes(e,"type",i)}}}),t._v(" :\n "),a("el-select",{staticClass:"value-input",attrs:{value:n,multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.parseMimeTypes(e,"value",i)}}}),t._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.deleteMimeTypes(i)}}})],1)}),t._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:t.addRowToMimeTypes}})],2),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));pt.options.__file="Other.vue";var mt=pt.exports,dt={name:"RateLimiters",computed:l()({},Object(r.b)(["rateLimitersConfig"]),{accountConfirmationResendAllUsers:function(){return this.rateLimiters.account_confirmation_resend?this.rateLimiters.account_confirmation_resend.tuple:[null,null]},accountConfirmationResendAuthUsers:function(){return!!Array.isArray(this.rateLimiters.account_confirmation_resend)&&this.rateLimiters.account_confirmation_resend[1].tuple},accountConfirmationResendUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.account_confirmation_resend)&&this.rateLimiters.account_confirmation_resend[0].tuple},appAccountCreationAllUsers:function(){return this.rateLimiters.app_account_creation?this.rateLimiters.app_account_creation.tuple:[null,null]},appAccountCreationAuthUsers:function(){return!!Array.isArray(this.rateLimiters.app_account_creation)&&this.rateLimiters.app_account_creation[1].tuple},appAccountCreationUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.app_account_creation)&&this.rateLimiters.app_account_creation[0].tuple},rateLimiters:function(){return this.rateLimitersConfig},passwordResetAllUsers:function(){return this.rateLimiters.password_reset?this.rateLimiters.password_reset.tuple:[null,null]},passwordResetAuthUsers:function(){return!!Array.isArray(this.rateLimiters.password_reset)&&this.rateLimiters.password_reset[1].tuple},passwordResetUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.password_reset)&&this.rateLimiters.password_reset[0].tuple},relationsActionsAllUsers:function(){return this.rateLimiters.relations_actions?this.rateLimiters.relations_actions.tuple:[null,null]},relationsActionsAuthUsers:function(){return!!Array.isArray(this.rateLimiters.relations_actions)&&this.rateLimiters.relations_actions[1].tuple},relationsActionsUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.relations_actions)&&this.rateLimiters.relations_actions[0].tuple},relationIdActionAllUsers:function(){return this.rateLimiters.relation_id_action?this.rateLimiters.relation_id_action.tuple:[null,null]},relationIdActionAuthUsers:function(){return!!Array.isArray(this.rateLimiters.relation_id_action)&&this.rateLimiters.relation_id_action[1].tuple},relationIdActionUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.relation_id_action)&&this.rateLimiters.relation_id_action[0].tuple},searchLimitAllUsers:function(){return this.rateLimiters.search?this.rateLimiters.search.tuple:[null,null]},searchLimitAuthUsers:function(){return!!Array.isArray(this.rateLimiters.search)&&this.rateLimiters.search[1].tuple},searchLimitUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.search)&&this.rateLimiters.search[0].tuple},statusesActionsAllUsers:function(){return this.rateLimiters.statuses_actions?this.rateLimiters.statuses_actions.tuple:[null,null]},statusesActionsAuthUsers:function(){return!!Array.isArray(this.rateLimiters.statuses_actions)&&this.rateLimiters.statuses_actions[1].tuple},statusesActionsUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.statuses_actions)&&this.rateLimiters.statuses_actions[0].tuple},statusIdActionAllUsers:function(){return this.rateLimiters.status_id_action?this.rateLimiters.status_id_action.tuple:[null,null]},statusIdActionAuthUsers:function(){return!!Array.isArray(this.rateLimiters.status_id_action)&&this.rateLimiters.status_id_action[1].tuple},statusIdActionUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.status_id_action)&&this.rateLimiters.status_id_action[0].tuple},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{parseRateLimiter:function(t,e,a,i,s){if("oneLimit"===i){var n="scale"===a?{tuple:[t,s[1]]}:{tuple:[s[0],t]};this.updateSetting(n,"rate_limit",e)}else if("authUserslimit"===i){var l="scale"===a?[{tuple:[s[0][0],s[0][1]]},{tuple:[t,s[1][1]]}]:[{tuple:[s[0][0],s[0][1]]},{tuple:[s[1][0],t]}];this.updateSetting(l,"rate_limit",e)}else if("unauthUsersLimit"===i){var r="scale"===a?[{tuple:[t,s[0][1]]},{tuple:[s[1][0],s[1][1]]}]:[{tuple:[s[0][0],t]},{tuple:[s[1][0],s[1][1]]}];this.updateSetting(r,"rate_limit",e)}},toggleLimits:function(t,e){this.updateSetting(t,"rate_limit",e)},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},ft=(a("WvM+"),Object(c.a)(dt,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("el-form",{ref:"rateLimiters",attrs:{model:t.rateLimiters,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Search:"}},[t.searchLimitAuthUsers?t._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:t.searchLimitAllUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"search","scale","oneLimit",t.searchLimitAllUsers)}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.searchLimitAllUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"search","limit","oneLimit",t.searchLimitAllUsers)}}}),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"search")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.searchLimitAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.searchLimitAuthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"search","scale","authUserslimit",[t.searchLimitUnauthUsers,t.searchLimitAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.searchLimitAuthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"search","limit","authUserslimit",[t.searchLimitUnauthUsers,t.searchLimitAuthUsers])}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.searchLimitUnauthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"search","scale","unauthUsersLimit",[t.searchLimitUnauthUsers,t.searchLimitAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.searchLimitUnauthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"search","limit","unauthUsersLimit",[t.searchLimitUnauthUsers,t.searchLimitAuthUsers])}}})],1),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits({tuple:[null,null]},"search")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()]),t._v(" "),a("el-form-item",{attrs:{label:"App account creation:"}},[t.appAccountCreationAuthUsers?t._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:t.appAccountCreationAllUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"app_account_creation","scale","oneLimit",t.appAccountCreationAllUsers)}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.appAccountCreationAllUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"app_account_creation","limit","oneLimit",t.appAccountCreationAllUsers)}}}),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"app_account_creation")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.appAccountCreationAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.appAccountCreationAuthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"app_account_creation","scale","authUserslimit",[t.appAccountCreationUnauthUsers,t.appAccountCreationAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.appAccountCreationAuthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"app_account_creation","limit","authUserslimit",[t.appAccountCreationUnauthUsers,t.appAccountCreationAuthUsers])}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.appAccountCreationUnauthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"app_account_creation","scale","unauthUsersLimit",[t.appAccountCreationUnauthUsers,t.appAccountCreationAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.appAccountCreationUnauthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"app_account_creation","limit","unauthUsersLimit",[t.appAccountCreationUnauthUsers,t.appAccountCreationAuthUsers])}}})],1),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits({tuple:[null,null]},"app_account_creation")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()]),t._v(" "),a("el-form-item",{attrs:{label:"Relations actions:"}},[t.relationsActionsAuthUsers?t._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:t.relationsActionsAllUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"relations_actions","scale","oneLimit",t.relationsActionsAllUsers)}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.relationsActionsAllUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"relations_actions","limit","oneLimit",t.relationsActionsAllUsers)}}}),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"relations_actions")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.relationsActionsAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.relationsActionsAuthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"relations_actions","scale","authUserslimit",[t.relationsActionsUnauthUsers,t.relationsActionsAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.relationsActionsAuthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"relations_actions","limit","authUserslimit",[t.relationsActionsUnauthUsers,t.relationsActionsAuthUsers])}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.relationsActionsUnauthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"relations_actions","scale","unauthUsersLimit",[t.relationsActionsUnauthUsers,t.relationsActionsAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.relationsActionsUnauthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"relations_actions","limit","unauthUsersLimit",[t.relationsActionsUnauthUsers,t.relationsActionsAuthUsers])}}})],1),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits({tuple:[null,null]},"relations_actions")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()]),t._v(" "),a("el-form-item",{attrs:{label:"Relation ID Action:"}},[t.relationIdActionAuthUsers?t._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:t.relationIdActionAllUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"relation_id_action","scale","oneLimit",t.relationIdActionAllUsers)}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.relationIdActionAllUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"relation_id_action","limit","oneLimit",t.relationIdActionAllUsers)}}}),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"relation_id_action")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.relationIdActionAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.relationIdActionAuthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"relation_id_action","scale","authUserslimit",[t.relationIdActionUnauthUsers,t.relationIdActionAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.relationIdActionAuthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"relation_id_action","limit","authUserslimit",[t.relationIdActionUnauthUsers,t.relationIdActionAuthUsers])}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.relationIdActionUnauthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"relation_id_action","scale","unauthUsersLimit",[t.relationIdActionUnauthUsers,t.relationIdActionAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.relationIdActionUnauthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"relation_id_action","limit","unauthUsersLimit",[t.relationIdActionUnauthUsers,t.relationIdActionAuthUsers])}}})],1),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits({tuple:[null,null]},"relation_id_action")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()]),t._v(" "),a("el-form-item",{attrs:{label:"Statuses actions:"}},[t.statusesActionsAuthUsers?t._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:t.statusesActionsAllUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"statuses_actions","scale","oneLimit",t.statusesActionsAllUsers)}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.statusesActionsAllUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"statuses_actions","limit","oneLimit",t.statusesActionsAllUsers)}}}),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"statuses_actions")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.statusesActionsAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.statusesActionsAuthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"statuses_actions","scale","authUserslimit",[t.statusesActionsUnauthUsers,t.statusesActionsAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.statusesActionsAuthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"statuses_actions","limit","authUserslimit",[t.statusesActionsUnauthUsers,t.statusesActionsAuthUsers])}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.statusesActionsUnauthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"statuses_actions","scale","unauthUsersLimit",[t.statusesActionsUnauthUsers,t.statusesActionsAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.statusesActionsUnauthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"statuses_actions","limit","unauthUsersLimit",[t.statusesActionsUnauthUsers,t.statusesActionsAuthUsers])}}})],1),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits({tuple:[null,null]},"statuses_actions")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()]),t._v(" "),a("el-form-item",{attrs:{label:"Status ID Action:"}},[t.statusIdActionAuthUsers?t._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:t.statusIdActionAllUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"status_id_action","scale","oneLimit",t.statusIdActionAllUsers)}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.statusIdActionAllUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"status_id_action","limit","oneLimit",t.statusIdActionAllUsers)}}}),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"status_id_action")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.statusIdActionAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.statusIdActionAuthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"status_id_action","scale","authUserslimit",[t.statusIdActionUnauthUsers,t.statusIdActionAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.statusIdActionAuthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"status_id_action","limit","authUserslimit",[t.statusIdActionUnauthUsers,t.statusIdActionAuthUsers])}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.statusIdActionUnauthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"status_id_action","scale","unauthUsersLimit",[t.statusIdActionUnauthUsers,t.statusIdActionAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.statusIdActionUnauthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"status_id_action","limit","unauthUsersLimit",[t.statusIdActionUnauthUsers,t.statusIdActionAuthUsers])}}})],1),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits({tuple:[null,null]},"status_id_action")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()]),t._v(" "),a("el-form-item",{attrs:{label:"Password reset:"}},[t.passwordResetAuthUsers?t._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:t.passwordResetAllUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"password_reset","scale","oneLimit",t.passwordResetAllUsers)}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.passwordResetAllUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"password_reset","limit","oneLimit",t.passwordResetAllUsers)}}}),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"password_reset")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.passwordResetAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.passwordResetAuthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"password_reset","scale","authUserslimit",[t.passwordResetUnauthUsers,t.passwordResetAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.passwordResetAuthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"password_reset","limit","authUserslimit",[t.passwordResetUnauthUsers,t.passwordResetAuthUsers])}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.passwordResetUnauthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"password_reset","scale","unauthUsersLimit",[t.passwordResetUnauthUsers,t.passwordResetAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.passwordResetUnauthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"password_reset","limit","unauthUsersLimit",[t.passwordResetUnauthUsers,t.passwordResetAuthUsers])}}})],1),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits({tuple:[null,null]},"password_reset")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()]),t._v(" "),a("el-form-item",{attrs:{label:"Account confirmation resend:"}},[t.accountConfirmationResendAuthUsers?t._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:t.accountConfirmationResendAllUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"account_confirmation_resend","scale","oneLimit",t.accountConfirmationResendAllUsers)}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.accountConfirmationResendAllUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"account_confirmation_resend","limit","oneLimit",t.accountConfirmationResendAllUsers)}}}),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(e){return t.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"account_confirmation_resend")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set different limits for unauthenticated and authenticated users")])],1)],1),t._v(" "),t.accountConfirmationResendAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.accountConfirmationResendAuthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"account_confirmation_resend","scale","authUserslimit",[t.accountConfirmationResendUnauthUsers,t.accountConfirmationResendAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.accountConfirmationResendAuthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"account_confirmation_resend","limit","authUserslimit",[t.accountConfirmationResendUnauthUsers,t.accountConfirmationResendAuthUsers])}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:t.accountConfirmationResendUnauthUsers[0],placeholder:"scale"},on:{input:function(e){return t.parseRateLimiter(e,"account_confirmation_resend","scale","unauthUsersLimit",[t.accountConfirmationResendUnauthUsers,t.accountConfirmationResendAuthUsers])}}}),t._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:t.accountConfirmationResendUnauthUsers[1],placeholder:"limit"},on:{input:function(e){return t.parseRateLimiter(e,"account_confirmation_resend","limit","unauthUsersLimit",[t.accountConfirmationResendUnauthUsers,t.accountConfirmationResendAuthUsers])}}})],1),t._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(e){return t.toggleLimits({tuple:[null,null]},"account_confirmation_resend")}}}),t._v(" "),a("p",{staticClass:"expl limit-expl"},[t._v("Set limit for all users")])],1)],1):t._e()]),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));ft.options.__file="RateLimiters.vue";var vt=ft.exports,ht={name:"Upload",computed:l()({},Object(r.b)(["uploadAnonymizeFilenameConfig","uploadConfig","uploadFilterMogrifyConfig","uploadersLocalConfig","uploadMDIIConfig","uploadS3Config"]),{inlineContentTypes:function(){return Array.isArray(this.upload.proxy_opts.inline_content_types)?"whitelistedTypeArray":this.upload.proxy_opts.inline_content_types},http:function(){return this.upload.proxy_opts.http||{}},upload:function(){return this.uploadConfig},uploadersLocal:function(){return this.uploadersLocalConfig},uploadAnonymizeFilename:function(){return this.uploadAnonymizeFilenameConfig},uploadFilterMogrify:function(){return this.uploadFilterMogrifyConfig},uploadMDII:function(){return this.uploadMDIIConfig},uploadS3:function(){return this.uploadS3Config},hackneyPoolsOptions:function(){return k.hackneyPoolsOptions},whitelistedContentTypes:function(){return Array.isArray(this.upload.proxy_opts.inline_content_types)?this.upload.proxy_opts.inline_content_types:[]},whitelistedContentTypesOptions:function(){return k.whitelistedContentTypesOptions},mogrifyActionsOptions:function(){return k.mogrifyActionsOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{getPoolExpl:function(t){var e=this.hackneyPoolsOptions.find(function(e){return e.value===t});return e?"Max connections: "+e.max_connections+", timeout: "+e.timeout:""},processHttpSettings:function(t,e,a,i,n){var r=l()({},this.uploadConfig[a][i],s()({},n,t));this.processNestedData(r,e,a,i)},processNestedData:function(t,e,a,i){var n=l()({},this.$store.state.settings.settings[e][a],s()({},i,t));this.updateSetting(n,e,a)},updateInlineContentTypes:function(){"whitelistedTypeArray"===this.$data.inlineContentTypes?this.processNestedData(this.$data.whitelistedContentTypes,"Pleroma.Upload","proxy_opts","inline_content_types"):this.processNestedData(this.$data.inlineContentTypes,"Pleroma.Upload","proxy_opts","inline_content_types")},updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},_t=(a("DPt0"),Object(c.a)(ht,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-form",{ref:"upload",attrs:{model:t.upload,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Uploader"}},[a("el-input",{attrs:{value:t.upload.uploader},on:{input:function(e){return t.updateSetting(e,"Pleroma.Upload","uploader")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Filters"}},[a("el-select",{attrs:{value:t.upload.filters||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"Pleroma.Upload","filters")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Link name"}},[a("el-switch",{attrs:{value:t.upload.link_name},on:{change:function(e){return t.updateSetting(e,"Pleroma.Upload","link_name")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("When enabled Pleroma will add a name parameter to the url of the upload, for example\n "),a("span",{staticClass:"code"},[t._v("https://instance.tld/media/corndog.png?name=corndog.png")])])],1),t._v(" "),a("el-form-item",{attrs:{label:"Base URL"}},[a("el-input",{attrs:{value:t.upload.base_url},on:{input:function(e){return t.updateSetting(e,"Pleroma.Upload","base_url")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Proxy remote"}},[a("el-switch",{attrs:{value:t.upload.proxy_remote},on:{change:function(e){return t.updateSetting(e,"Pleroma.Upload","proxy_remote")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("If you're using a remote uploader, Pleroma will proxy media requests instead of redirecting to it")])],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form-item",{attrs:{label:"Proxy options:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Redirect on failure"}},[a("el-switch",{attrs:{value:t.upload.proxy_opts.redirect_on_failure},on:{change:function(e){return t.processNestedData(e,"Pleroma.Upload","proxy_opts","redirect_on_failure")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Redirects the client to the real remote URL if there's any HTTP errors.\n Any error during body processing will not be redirected as the response is chunked")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Max body length (MB)"}},[a("el-input-number",{attrs:{value:t.upload.proxy_opts.max_body_length/1048576,step:1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(1048576*e,"Pleroma.Upload","proxy_opts","max_body_length")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Limits the content length to be approximately the specified length")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Max read duration (s)"}},[a("el-input-number",{attrs:{value:t.upload.proxy_opts.max_read_duration,step:1,min:0,size:"large"},on:{change:function(e){return t.processNestedData(e,"Pleroma.Upload","proxy_opts","max_read_duration")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("The total time the connection is allowed to read from the remote upstream")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Inline content types"}},[a("el-select",{attrs:{value:t.inlineContentTypes},on:{change:function(e){return t.processNestedData(e,"Pleroma.Upload","proxy_opts","inline_content_types")}}},[a("el-option",{attrs:{value:!0,label:"True"}}),t._v(" "),a("el-option",{attrs:{value:!1,label:"False"}}),t._v(" "),a("el-option",{attrs:{value:"whitelistedTypeArray",label:"List of whitelisted content types"}}),t._v(" "),a("el-option",{attrs:{value:"keepUserAgent",label:"Forward client's user-agent to the upstream"}})],1),t._v(" "),!0===t.inlineContentTypes?a("p",{staticClass:"expl"},[t._v("Will not alter "),a("span",{staticClass:"code"},[t._v("content-disposition")]),t._v(" (up to the upstream)")]):t._e(),t._v(" "),t.inlineContentTypes?t._e():a("p",{staticClass:"expl"},[t._v("Will add "),a("span",{staticClass:"code"},[t._v("content-disposition: attachment")]),t._v(" to any request")]),t._v(" "),"keepUserAgent"===t.inlineContentTypes?a("p",{staticClass:"expl"},[t._v("\n Will forward the client's user-agent to the upstream. This may be useful if the upstream is\n doing content transformation (encoding, …) depending on the request.\n ")]):t._e()],1),t._v(" "),"whitelistedTypeArray"===t.inlineContentTypes?a("el-form-item",{attrs:{label:"Whitelisted content types"}},[a("el-select",{attrs:{value:t.whitelistedContentTypes,multiple:""},on:{change:function(e){return t.processNestedData(e,"Pleroma.Upload","proxy_opts","inline_content_types")}}},t._l(t.whitelistedContentTypesOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1)],1):t._e(),t._v(" "),a("el-form-item",{attrs:{label:"Request headers"}},[a("el-select",{attrs:{value:t.upload.proxy_opts.req_headers||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.processNestedData(e,"Pleroma.Upload","proxy_opts","req_headers")}}}),t._v(" "),a("p",{staticClass:"expl"},[a("span",{staticClass:"code"},[t._v("resp_headers")]),t._v(" additional headers")])],1),t._v(" "),a("el-form-item",{attrs:{label:"HTTP:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Follow redirect"}},[a("el-switch",{attrs:{value:t.http.follow_redirect},on:{change:function(e){return t.processHttpSettings(e,"Pleroma.Upload","proxy_opts","http","follow_redirect")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Pool"}},[a("el-select",{attrs:{value:t.http.pool},on:{change:function(e){return t.processHttpSettings(e,"Pleroma.Upload","proxy_opts","http","pool")}}},t._l(t.hackneyPoolsOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1),t._v(" "),a("p",{staticClass:"expl"},[t._v(t._s(t.getPoolExpl(t.http.pool)))])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"uploadersLocal",attrs:{model:t.uploadersLocal,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Uploaders.Local:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Directory for user-uploads"}},[a("el-input",{attrs:{value:t.uploadersLocal.uploads},on:{input:function(e){return t.updateSetting(e,"Pleroma.Uploaders.Local","uploads")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Which directory to store the user-uploads in, relative to pleroma’s working directory")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"uploadFilterMogrify",attrs:{model:t.uploadFilterMogrify,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Actions for Mogrify"}},[a("el-select",{attrs:{value:t.uploadFilterMogrify.args||[],multiple:"",filterable:"","allow-create":""},on:{change:function(e){return t.updateSetting(e,"Pleroma.Upload.Filter.Mogrify","args")}}},t._l(t.mogrifyActionsOptions,function(t){return a("el-option",{key:t.value,attrs:{label:t.label,value:t.value}})}),1)],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"uploadAnonymizeFilename",attrs:{model:t.uploadAnonymizeFilename,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Anonymize filename"}},[a("el-input",{attrs:{value:t.uploadAnonymizeFilename.text},on:{input:function(e){return t.updateSetting(e,"Pleroma.Upload.Filter.AnonymizeFilename","text")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("Text to replace filenames in links. If empty, "),a("span",{staticClass:"code"},[t._v("{random}.extension")]),t._v(" will be used")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"uploadS3",attrs:{model:t.uploadS3,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"S3 Config:"}}),t._v(" "),a("el-form-item",{attrs:{label:"Bucket"}},[a("el-input",{attrs:{value:t.uploadS3.bucket},on:{input:function(e){return t.updateSetting(e,"Pleroma.Uploaders.S3","bucket")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("S3 bucket name")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Public endpoint"}},[a("el-input",{attrs:{value:t.uploadS3.public_endpoint},on:{input:function(e){return t.updateSetting(e,"Pleroma.Uploaders.S3","public_endpoint")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("S3 endpoint that the user finally accesses")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Truncated namespace"}},[a("el-input",{attrs:{value:t.uploadS3.truncated_namespace},on:{input:function(e){return t.updateSetting(e,"Pleroma.Uploaders.S3","truncated_namespace")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v('If you use S3 compatible service such as Digital Ocean Spaces or CDN, set folder name or "" etc.\n For example, when using CDN to S3 virtual host format, set "".\n At this time, write CNAME to CDN in '),a("span",{staticClass:"code"},[t._v("public_endpoint")]),t._v(".\n ")])],1)],1),t._v(" "),a("div",{staticClass:"line"}),t._v(" "),a("el-form",{ref:"uploadMDII",attrs:{model:t.uploadMDII,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Uploaders.MDII Config:"}}),t._v(" "),a("el-form-item",{attrs:{label:"CGI"}},[a("el-input",{attrs:{value:t.uploadMDII.cgi},on:{input:function(e){return t.updateSetting(e,"Pleroma.Uploaders.MDII","cgi")}}})],1),t._v(" "),a("el-form-item",{attrs:{label:"Files"}},[a("el-input",{attrs:{value:t.uploadMDII.files},on:{input:function(e){return t.updateSetting(e,"Pleroma.Uploaders.MDII","files")}}})],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)],1)},[],!1,null,null,null));_t.options.__file="Upload.vue";var bt=_t.exports,gt={name:"WebPush",computed:l()({},Object(r.b)(["vapidDetailsConfig"]),{vapidDetails:function(){return this.vapidDetailsConfig},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(t,e,a){this.$store.dispatch("UpdateSettings",{tab:e,data:s()({},a,t)})},onSubmit:function(){this.$store.dispatch("SubmitChanges"),this.$message({type:"success",message:o.a.t("settings.success")})}}},yt=(a("+qaP"),Object(c.a)(gt,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("el-form",{ref:"vapidDetails",attrs:{model:t.vapidDetails,"label-width":t.labelWidth}},[a("el-form-item",{attrs:{label:"Subject"}},[a("el-input",{attrs:{value:t.vapidDetails.subject},on:{input:function(e){return t.updateSetting(e,"vapid_details","subject")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("A mailto link for the administrative contact. It’s best if this email is not a personal email address,\n but rather a group email so that if a person leaves an organization, is unavailable for an extended period,\n or otherwise can’t respond, someone else on the list can.")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Public key"}},[a("el-input",{attrs:{value:t.vapidDetails.public_key},on:{input:function(e){return t.updateSetting(e,"vapid_details","public_key")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("VAPID public key")])],1),t._v(" "),a("el-form-item",{attrs:{label:"Private key"}},[a("el-input",{attrs:{value:t.vapidDetails.private_key},on:{input:function(e){return t.updateSetting(e,"vapid_details","private_key")}}}),t._v(" "),a("p",{staticClass:"expl"},[t._v("VAPID private key")])],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:t.onSubmit}},[t._v("Submit")])],1)],1)},[],!1,null,null,null));yt.options.__file="WebPush.vue";var Ct={components:{ActivityPub:m,Authentication:v,AutoLinker:b,Captcha:C,Database:x,Endpoint:R,Esshd:D,Frontend:N,Gopher:I,Http:z,Instance:B,JobQueue:K,Logger:Y,Mailer:tt,MediaProxy:it,Metadata:lt,Mrf:ut,Other:mt,RateLimiters:vt,Upload:bt,WebPush:yt.exports},computed:{isMobile:function(){return"mobile"===this.$store.state.app.device},tabPosition:function(){return this.isMobile?"top":"left"}},mounted:function(){this.$store.dispatch("FetchSettings")}},wt=(a("V9mB"),Object(c.a)(Ct,function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"settings-container"},[a("h1",[t._v(t._s(t.$t("settings.settings")))]),t._v(" "),a("el-tabs",{attrs:{"tab-position":t.tabPosition}},[a("el-tab-pane",{attrs:{label:t.$t("settings.activityPub")}},[a("activity-pub")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.auth")}},[a("authentication")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.autoLinker")}},[a("auto-linker")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.esshd")}},[a("esshd")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.captcha")}},[a("captcha")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.database")}},[a("database")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.endpoint")}},[a("endpoint")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.frontend")}},[a("frontend")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.gopher")}},[a("gopher")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.http")}},[a("http")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.instance")}},[a("instance")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.jobQueue")}},[a("job-queue")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.logger")}},[a("logger")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.mailer")}},[a("mailer")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.mediaProxy")}},[a("media-proxy")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.metadata")}},[a("metadata")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.mrf")}},[a("mrf")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.rateLimiters")}},[a("rate-limiters")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.upload")}},[a("upload")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.webPush")}},[a("web-push")],1),t._v(" "),a("el-tab-pane",{attrs:{label:t.$t("settings.other")}},[a("other")],1)],1)],1)},[],!1,null,"729534ce",null));wt.options.__file="index.vue";e.default=wt.exports},Zgs2:function(t,e,a){},apN7:function(t,e,a){"use strict";var i=a("9p49");a.n(i).a},cyzs:function(t,e,a){"use strict";var i=a("Px65");a.n(i).a},e0P1:function(t,e,a){"use strict";var i=a("TudB");a.n(i).a},gFOO:function(t,e,a){"use strict";var i=a("jqM2");a.n(i).a},h9z7:function(t,e,a){"use strict";var i=a("TOIk");a.n(i).a},hVXW:function(t,e,a){"use strict";var i=a("uswN");a.n(i).a},jqM2:function(t,e,a){},lNpP:function(t,e,a){"use strict";var i=a("UbP/");a.n(i).a},mADP:function(t,e,a){"use strict";var i=a("qLeA");a.n(i).a},mSK5:function(t,e,a){},qEST:function(t,e,a){"use strict";var i=a("4NUT");a.n(i).a},qLeA:function(t,e,a){},uswN:function(t,e,a){},w5cJ:function(t,e,a){"use strict";var i=a("PYLh");a.n(i).a},wgcy:function(t,e,a){},x6RV:function(t,e,a){}}]); \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-6292.0e668979.js b/priv/static/adminfe/static/js/chunk-6292.0e668979.js new file mode 100644 index 000000000..1e5c339f2 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-6292.0e668979.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-6292"],{"+qaP":function(e,t,a){"use strict";var s=a("60OA");a.n(s).a},"2q6O":function(e,t,a){"use strict";var s=a("Scsy");a.n(s).a},"4NUT":function(e,t,a){},"4b9x":function(e,t,a){"use strict";var s=a("wgcy");a.n(s).a},"60OA":function(e,t,a){},"9p49":function(e,t,a){},DPt0:function(e,t,a){"use strict";var s=a("x6RV");a.n(s).a},Dd5M:function(e,t,a){},FCne:function(e,t,a){"use strict";var s=a("OCuP");a.n(s).a},KFE3:function(e,t,a){"use strict";var s=a("mSK5");a.n(s).a},NyLv:function(e,t,a){"use strict";var s=a("Rh6R");a.n(s).a},OCuP:function(e,t,a){},PYLh:function(e,t,a){},Px65:function(e,t,a){},PygS:function(e,t,a){"use strict";var s=a("TtMh");a.n(s).a},RTtG:function(e,t,a){"use strict";var s=a("Zgs2");a.n(s).a},Rh6R:function(e,t,a){},Scsy:function(e,t,a){},TOIk:function(e,t,a){},TRR9:function(e,t,a){},TtMh:function(e,t,a){},TudB:function(e,t,a){},"UbP/":function(e,t,a){},UdS4:function(e,t,a){"use strict";var s=a("WwJU");a.n(s).a},V9mB:function(e,t,a){"use strict";var s=a("Dd5M");a.n(s).a},"WvM+":function(e,t,a){"use strict";var s=a("TRR9");a.n(s).a},WwJU:function(e,t,a){},YcIK:function(e,t,a){"use strict";a.r(t);var s=a("o0o1"),n=a.n(s),i=a("yXPU"),l=a.n(i),r=a("lSNA"),o=a.n(r),u=a("MVZn"),c=a.n(u),p=a("L2JU"),m=a("mSNy"),d={name:"ActivityPub",computed:c()({},Object(p.b)(["activityPub","user"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},v=(a("qEST"),a("KHd+")),f=Object(v.a)(d,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"activityPub",attrs:{model:e.activityPub,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Unfollow blocked"}},[a("el-switch",{attrs:{value:e.activityPub.unfollow_blocked},on:{change:function(t){return e.updateSetting(t,"activitypub","unfollow_blocked")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whether blocks result in people getting unfollowed")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Outgoing blocks"}},[a("el-switch",{attrs:{value:e.activityPub.outgoing_blocks},on:{change:function(t){return e.updateSetting(t,"activitypub","outgoing_blocks")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whether to federate blocks to other instances")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Follow handshake timeout"}},[a("el-input-number",{staticClass:"top-margin",attrs:{value:e.activityPub.follow_handshake_timeout,step:100,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"activitypub","follow_handshake_timeout")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Sign object fetches"}},[a("el-switch",{attrs:{value:e.activityPub.sign_object_fetches},on:{change:function(t){return e.updateSetting(t,"activitypub","sign_object_fetches")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Sign object fetches with HTTP signatures")])],1)],1),e._v(" "),a("el-form",{ref:"user",attrs:{model:e.user,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Deny follow blocked"}},[a("el-switch",{attrs:{value:e.user.deny_follow_blocked},on:{change:function(t){return e.updateSetting(t,"user","deny_follow_blocked")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whether to disallow following an account that has blocked the user in question")])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null);f.options.__file="ActivityPub.vue";var _=f.exports,h={name:"Authentication",computed:c()({},Object(p.b)(["pleromaAuthenticator","ldap","auth","ueberauth","oauth2","facebook","google","twitter","microsoft"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},b=(a("4b9x"),Object(v.a)(h,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"pleromaAuthenticator",attrs:{model:e.pleromaAuthenticator,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Authentication type"}},[a("el-select",{attrs:{value:e.pleromaAuthenticator.value,clearable:""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Auth.Authenticator","value")}}},[a("el-option",{attrs:{label:"None",value:""}}),e._v(" "),a("el-option",{attrs:{label:"Pleroma.Web.Auth.PleromaAuthenticator // Default database authenticator",value:"Pleroma.Web.Auth.PleromaAuthenticator"}}),e._v(" "),a("el-option",{attrs:{label:"Pleroma.Web.Auth.LDAPAuthenticator // LDAP authenticator",value:"Pleroma.Web.Auth.LDAPAuthenticator"}})],1)],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"auth",attrs:{model:e.auth,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Authentication settings:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Auth template"}},[a("el-input",{attrs:{value:e.auth.auth_template},on:{input:function(t){return e.updateSetting(t,"auth","auth_template")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Authentication form template. By default it's\n "),a("span",{staticClass:"code"},[e._v("show.html")]),e._v(" which corresponds to\n "),a("span",{staticClass:"code"},[e._v("lib/pleroma/web/templates/o_auth/o_auth/show.html.eex.")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"OAuth consumer template"}},[a("el-input",{attrs:{value:e.auth.oauth_consumer_template},on:{input:function(t){return e.updateSetting(t,"auth","oauth_consumer_template")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("OAuth consumer mode authentication form template. By default it's\n "),a("span",{staticClass:"code"},[e._v("consumer.html")]),e._v(" which corresponds to\n "),a("span",{staticClass:"code"},[e._v("lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex.")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"OAuth consumer strategies"}},[a("el-select",{attrs:{value:e.auth.oauth_consumer_strategies||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"auth","oauth_consumer_strategies")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The list of enabled OAuth consumer strategies; by default it's set by\n "),a("span",{staticClass:"code"},[e._v("OAUTH_CONSUMER_STRATEGIES")]),e._v("\n environment variable. You can enter values in the following format: "),a("span",{staticClass:"code"},[e._v("'a:foo b:baz'")])])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"ldap",attrs:{model:e.ldap,"label-width":e.labelWidth}},[a("el-form-item",{staticClass:"options-paragraph-container"},[a("p",{staticClass:"options-paragraph"},[e._v("Use LDAP for user authentication. When a user logs in to the Pleroma\n instance, the name and password will be verified by trying to authenticate\n (bind) to an LDAP server. If a user exists in the LDAP directory but there\n is no account with the same name yet on the Pleroma instance then a new\n Pleroma account will be created with the same name as the LDAP user name.")])]),e._v(" "),a("el-form-item",{attrs:{label:"LDAP Authenticator:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:e.ldap.enabled},on:{change:function(t){return e.updateSetting(t,"ldap","enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enables LDAP authentication")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Host"}},[a("el-input",{attrs:{value:e.ldap.host},on:{input:function(t){return e.updateSetting(t,"ldap","host")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("LDAP server hostname")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:e.ldap.port},on:{input:function(t){return e.updateSetting(t,"ldap","port")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("LDAP port, e.g. 389 or 636")])],1),e._v(" "),a("el-form-item",{attrs:{label:"SSL"}},[a("el-switch",{attrs:{value:e.ldap.ssl},on:{change:function(t){return e.updateSetting(t,"ldap","ssl")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("True to use SSL, usually implies the port 636")])],1),e._v(" "),a("el-form-item",{attrs:{label:"TLS"}},[a("el-switch",{attrs:{value:e.ldap.tls},on:{change:function(t){return e.updateSetting(t,"ldap","tls")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("True to start TLS, usually implies the port 389")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Base"}},[a("el-input",{attrs:{value:e.ldap.base},on:{input:function(t){return e.updateSetting(t,"ldap","base")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("LDAP base, e.g. "),a("span",{staticClass:"code"},[e._v("'dc=example,dc=com'")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"UID"}},[a("el-input",{attrs:{value:e.ldap.uid},on:{input:function(t){return e.updateSetting(t,"ldap","uid")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("LDAP attribute name to authenticate the user, e.g. when\n "),a("span",{staticClass:"code"},[e._v("'cn'")]),e._v(", the filter will be "),a("span",{staticClass:"code"},[e._v("'cn=username,base'")])])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"ueberauth",attrs:{model:e.ueberauth,"label-width":e.labelWidth}},[a("el-form-item",{staticClass:"options-paragraph-container",attrs:{label:"OAuth consumer mode"}},[a("p",{staticClass:"options-paragraph"},[e._v("\n OAuth consumer mode allows sign in / sign up via external OAuth providers\n (e.g. Twitter, Facebook, Google, Microsoft, etc.). Implementation is based on Ueberauth; see the list of\n "),a("a",{attrs:{href:"https://github.com/ueberauth/ueberauth/wiki/List-of-Strategies",rel:"nofollow noreferrer noopener",target:"_blank"}},[e._v("\n available strategies.\n ")])]),e._v(" "),a("p",{staticClass:"options-paragraph"},[e._v("\n Note: each strategy is shipped as a separate dependency; in order to get the strategies, run\n "),a("span",{staticClass:"code"},[e._v('OAUTH_CONSUMER_STRATEGIES="..." mix deps.get')]),e._v(",\n e.g. "),a("span",{staticClass:"code"},[e._v('OAUTH_CONSUMER_STRATEGIES="twitter facebook google microsoft" mix deps.get')]),e._v(".\n The server should also be started with "),a("span",{staticClass:"code"},[e._v('OAUTH_CONSUMER_STRATEGIES="..." mix phx.server')]),e._v("\n in case you enable any strategies.\n ")]),e._v(" "),a("p",{staticClass:"options-paragraph"},[e._v("\n Note: each strategy requires separate setup (on external provider side and Pleroma side).\n Below are the guidelines on setting up most popular strategies.\n ")]),e._v(" "),a("p",{staticClass:"options-paragraph"},[e._v("\n Note: make sure that "),a("span",{staticClass:"code"},[e._v("'SameSite=Lax'")]),e._v(" is set in\n "),a("span",{staticClass:"code"},[e._v("extra_cookie_attrs")]),e._v(" when you have this feature enabled.\n OAuth consumer mode will not work with "),a("span",{staticClass:"code"},[e._v("'SameSite=Strict'")])]),e._v(" "),a("p",{staticClass:"options-paragraph"},[e._v("For Twitter,\n "),a("a",{attrs:{href:"https://developer.twitter.com/en/apps",rel:"nofollow noreferrer noopener",target:"_blank"}},[e._v("\n register an app,\n ")]),e._v("\n configure callback URL to "),a("span",{staticClass:"code"},[e._v("https:///oauth/twitter/callback")])]),e._v(" "),a("p",{staticClass:"options-paragraph"},[e._v("For Facebook,\n "),a("a",{attrs:{href:"https://developers.facebook.com/apps",rel:"nofollow noreferrer noopener",target:"_blank"}},[e._v("\n register an app,\n ")]),e._v("\n configure callback URL to "),a("span",{staticClass:"code"},[e._v("https:///oauth/facebook/callback")]),e._v(",\n enable Facebook Login service at\n "),a("span",{staticClass:"code"},[e._v("https://developers.facebook.com/apps//fb-login/settings/")])]),e._v(" "),a("p",{staticClass:"options-paragraph"},[e._v("For Google,\n "),a("a",{attrs:{href:"https://console.developers.google.com/",rel:"nofollow noreferrer noopener",target:"_blank"}},[e._v("\n register an app,\n ")]),e._v("\n configure callback URL to "),a("span",{staticClass:"code"},[e._v("https:///oauth/google/callback")])]),e._v(" "),a("p",{staticClass:"options-paragraph"},[e._v("For Microsoft,\n "),a("a",{attrs:{href:"https://portal.azure.com",rel:"nofollow noreferrer noopener",target:"_blank"}},[e._v("\n register an app,\n ")]),e._v("\n configure callback URL to "),a("span",{staticClass:"code"},[e._v("https:///oauth/microsoft/callback")])]),e._v(" "),a("p",{staticClass:"options-paragraph"},[e._v("\n Once the app is configured on external OAuth provider side, add app's credentials and strategy-specific settings\n per strategy's documentation (e.g.\n "),a("a",{attrs:{href:"https://github.com/ueberauth/ueberauth_twitter",rel:"nofollow noreferrer noopener",target:"_blank"}},[e._v("\n ueberauth_twitter\n ")]),e._v(").\n ")])]),e._v(" "),a("el-form-item",{attrs:{label:"Ueberauth:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Base path"}},[a("el-input",{attrs:{value:e.ueberauth.base_path},on:{input:function(t){return e.updateSetting(t,"ueberauth","base_path")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"facebook",attrs:{model:e.facebook,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Facebook:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Client ID"}},[a("el-input",{attrs:{value:e.facebook.client_id},on:{input:function(t){return e.updateSetting(t,"Ueberauth.Strategy.Facebook.OAuth","client_id")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Client secret"}},[a("el-input",{attrs:{value:e.facebook.client_secret},on:{input:function(t){return e.updateSetting(t,"Ueberauth.Strategy.Facebook.OAuth","client_secret")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Redirect URI"}},[a("el-input",{attrs:{value:e.facebook.redirect_uri},on:{input:function(t){return e.updateSetting(t,"Ueberauth.Strategy.Facebook.OAuth","redirect_uri")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"twitter",attrs:{model:e.twitter,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Twitter:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Consumer key"}},[a("el-input",{attrs:{value:e.twitter.consumer_key},on:{input:function(t){return e.updateSetting(t,"Ueberauth.Strategy.Twitter.OAuth","consumer_key")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Consumer secret"}},[a("el-input",{attrs:{value:e.twitter.consumer_secret},on:{input:function(t){return e.updateSetting(t,"Ueberauth.Strategy.Twitter.OAuth","consumer_secret")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"google",attrs:{model:e.google,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Google:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Client ID"}},[a("el-input",{attrs:{value:e.google.client_id},on:{input:function(t){return e.updateSetting(t,"Ueberauth.Strategy.Google.OAuth","client_id")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Client secret"}},[a("el-input",{attrs:{value:e.google.client_secret},on:{input:function(t){return e.updateSetting(t,"Ueberauth.Strategy.Google.OAuth","client_secret")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Redirect URI"}},[a("el-input",{attrs:{value:e.google.redirect_uri},on:{input:function(t){return e.updateSetting(t,"Ueberauth.Strategy.Google.OAuth","redirect_uri")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"microsoft",attrs:{model:e.microsoft,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Microsoft:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Client ID"}},[a("el-input",{attrs:{value:e.microsoft.client_id},on:{input:function(t){return e.updateSetting(t,"Ueberauth.Strategy.Microsoft.OAuth","client_id")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Client secret"}},[a("el-input",{attrs:{value:e.microsoft.client_secret},on:{input:function(t){return e.updateSetting(t,"Ueberauth.Strategy.Microsoft.OAuth","client_secret")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"oauth2",attrs:{model:e.oauth2,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"OAuth 2.0 Provider:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Token expires in (s)"}},[a("el-input-number",{attrs:{value:e.oauth2.token_expires_in,step:10,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"oauth2","token_expires_in")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The lifetime in seconds of the access token")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Issue new refresh token"}},[a("el-switch",{attrs:{value:e.oauth2.issue_new_refresh_token},on:{change:function(t){return e.updateSetting(t,"oauth2","issue_new_refresh_token")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Keeps old refresh token or generate new refresh token when to obtain an access token")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Clean expired token"}},[a("el-switch",{attrs:{value:e.oauth2.clean_expired_tokens},on:{change:function(t){return e.updateSetting(t,"oauth2","clean_expired_tokens")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enable a background job to clean expired oauth tokens. Defaults to false.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Clean expired token interval"}},[a("el-input-number",{attrs:{value:e.oauth2.clean_expired_tokens_interval/36e5,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(36e5*t,"oauth2","clean_expired_tokens_interval")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Interval to run the job to clean expired tokens. Defaults to 24 hours.")])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));b.options.__file="Authentication.vue";var g=b.exports,y={name:"AutoLinker",computed:c()({},Object(p.b)(["autoLinker"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"},loading:function(){return this.$store.state.settings.loading},booleanClass:function(){return this.getBooleanValue("class")},booleanRel:function(){return this.getBooleanValue("rel")},booleanTruncate:function(){return this.getBooleanValue("truncate")}}),methods:{getBooleanValue:function(e){var t=this.autoLinker.opts[e];return"string"==typeof t||"number"==typeof t},getNumValue:function(e){return this.autoLinker.opts[e]||0},getStringValue:function(e){return this.autoLinker.opts[e]||""},processTwoTypeValue:function(e,t,a,s){if(!0===e){var n="truncate"===s?0:"";this.processNestedData(n,t,a,s)}else this.processNestedData(e,t,a,s)},processNestedData:function(e,t,a,s){var n=c()({},this.$store.state.settings.settings[t][a],o()({},s,e));this.updateSetting(n,t,a)},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},w=(a("cyzs"),Object(v.a)(y,function(){var e=this,t=e.$createElement,a=e._self._c||t;return e.loading?e._e():a("el-form",{ref:"autoLinker",attrs:{model:e.autoLinker,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Class"}},[a("el-switch",{attrs:{value:e.booleanClass},on:{change:function(t){return e.processTwoTypeValue(t,"auto_linker","opts","class")}}}),e._v(" "),e.booleanClass?e._e():a("p",{staticClass:"expl"},[e._v("Specify the class to be added to the generated link. False to clear.")])],1),e._v(" "),e.booleanClass?a("el-form-item",[a("el-input",{attrs:{value:e.getStringValue("class")},on:{input:function(t){return e.processTwoTypeValue(t,"auto_linker","opts","class")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Specify the class to be added to the generated link. False to clear.")])],1):e._e(),e._v(" "),a("el-form-item",{attrs:{label:"Rel"}},[a("el-switch",{attrs:{value:e.booleanRel},on:{change:function(t){return e.processTwoTypeValue(t,"auto_linker","opts","rel")}}}),e._v(" "),e.booleanRel?e._e():a("p",{staticClass:"expl"},[e._v("Override the rel attribute. False to clear")])],1),e._v(" "),e.booleanRel?a("el-form-item",[a("el-input",{attrs:{value:e.getStringValue("rel")},on:{input:function(t){return e.processTwoTypeValue(t,"auto_linker","opts","rel")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Override the rel attribute. False to clear")])],1):e._e(),e._v(" "),a("el-form-item",{attrs:{label:"New window"}},[a("el-switch",{attrs:{value:e.autoLinker.opts.new_window},on:{change:function(t){return e.processNestedData(t,"auto_linker","opts","new_window")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Set to false to remove "),a("span",{staticClass:"code"},[e._v("target='_blank'")]),e._v(" attribute")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Scheme"}},[a("el-switch",{attrs:{value:e.autoLinker.opts.scheme},on:{change:function(t){return e.processNestedData(t,"auto_linker","opts","scheme")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Set to true to link urls with schema "),a("span",{staticClass:"code"},[e._v("http://google.com")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Truncate"}},[a("el-switch",{attrs:{value:e.booleanTruncate},on:{change:function(t){return e.processTwoTypeValue(t,"auto_linker","opts","truncate")}}}),e._v(" "),e.booleanTruncate?e._e():a("p",{staticClass:"expl"},[e._v("Set to a number to truncate urls longer then the number.\n Truncated urls will end in "),a("span",{staticClass:"code"},[e._v("..")])])],1),e._v(" "),e.booleanTruncate?a("el-form-item",[a("el-input-number",{attrs:{value:e.getStringValue("truncate"),step:1,min:0,size:"large"},on:{change:function(t){return e.processTwoTypeValue(t,"auto_linker","opts","truncate")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Specify the class to be added to the generated link. False to clear.")])],1):e._e(),e._v(" "),a("el-form-item",{attrs:{label:"Strip prefix"}},[a("el-switch",{attrs:{value:e.autoLinker.opts.strip_prefix},on:{change:function(t){return e.processNestedData(t,"auto_linker","opts","strip_prefix")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Strip the scheme prefix")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Extra"}},[a("el-switch",{attrs:{value:e.autoLinker.opts.extra},on:{change:function(t){return e.processNestedData(t,"auto_linker","opts","extra")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Link urls with rarely used schemes (magnet, ipfs, irc, etc.)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Validate TLD"}},[a("el-switch",{attrs:{value:e.autoLinker.opts.validate_tld},on:{change:function(t){return e.processNestedData(t,"auto_linker","opts","validate_tld")}}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)},[],!1,null,null,null));w.options.__file="AutoLinker.vue";var x=w.exports,C={name:"Captcha",computed:c()({},Object(p.b)(["captcha","kocaptcha"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},S=(a("2q6O"),Object(v.a)(C,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"captcha",attrs:{model:e.captcha,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:e.captcha.enabled},on:{change:function(t){return e.updateSetting(t,"Pleroma.Captcha","enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whether the captcha should be shown on registration")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Valid for (s)"}},[a("el-input-number",{attrs:{value:e.captcha.seconds_valid,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"Pleroma.Captcha","seconds_valid")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The time in seconds for which the captcha is valid")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Method"}},[a("el-select",{attrs:{value:e.captcha.method,clearable:""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Captcha","method")}}},[a("el-option",{attrs:{label:"Pleroma.Captcha.Kocaptcha",value:"Pleroma.Captcha.Kocaptcha"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("The method/service to use for captcha")])],1)],1),e._v(" "),a("el-form",{ref:"kocaptcha",attrs:{model:e.kocaptcha,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Kocaptcha Endpoint"}},[a("el-input",{attrs:{value:e.kocaptcha.endpoint},on:{input:function(t){return e.updateSetting(t,"Pleroma.Captcha.Kocaptcha","endpoint")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Kocaptcha is a captcha service with a single API endpoint, the source code is\n "),a("a",{attrs:{href:"https://github.com/koto-bank/kocaptcha",rel:"nofollow noreferrer noopener",target:"_blank"}},[e._v("here")]),e._v(".\n The default endpoint "),a("span",{staticClass:"code"},[e._v("'https://captcha.kotobank.ch'")]),e._v(" is hosted by the developer.\n ")])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));S.options.__file="Captcha.vue";var k=S.exports,A={name:"Instance",computed:c()({},Object(p.b)(["database","ectoRepos","pleromaRepo"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},P=(a("RTtG"),Object(v.a)(A,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"database",attrs:{model:e.database,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Database settings:"}}),e._v(" "),a("el-form-item",{attrs:{label:"RUM enabled"}},[a("el-switch",{attrs:{value:e.database.rum_enabled},on:{change:function(t){return e.updateSetting(t,"database","rum_enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("RUM indexes are an alternative indexing scheme that is not included in PostgreSQL by default.\n While they may eventually be mainlined, for now they have to be installed as a PostgreSQL extension from\n "),a("a",{attrs:{href:"https://github.com/postgrespro/rum",rel:"nofollow noreferrer noopener",target:"_blank"}},[e._v("\n https://github.com/postgrespro/rum.\n ")])]),e._v(" "),a("p",{staticClass:"expl"},[e._v("Their advantage over the standard GIN indexes is that they allow efficient ordering of search results by timestamp,\n which makes search queries a lot faster on larger servers, by one or two orders of magnitude.\n They take up around 3 times as much space as GIN indexes.")]),e._v(" "),a("p",{staticClass:"expl"},[e._v("To enable them, both the "),a("span",{staticClass:"code"},[e._v("rum_enabled")]),e._v(" flag has to be set and the following special\n migration has to be run: "),a("span",{staticClass:"code"},[e._v("mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/")])])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"ectoRepos",attrs:{model:e.ectoRepos,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Ecto repos"}},[a("el-select",{attrs:{value:e.ectoRepos.value||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"ecto_repos","value")}}},[a("el-option",{attrs:{label:"Pleroma.Repo",value:"Pleroma.Repo"}})],1)],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"pleromaRepo",attrs:{model:e.pleromaRepo,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Pleroma Repo configuration:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Name"}},[a("el-input",{attrs:{value:e.pleromaRepo.name},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","name")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The name of the Repo supervisor process")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Priv"}},[a("el-input",{attrs:{value:e.pleromaRepo.priv},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","priv")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The directory where to keep repository data, like migrations, schema and more. Defaults to "),a("span",{staticClass:"code"},[e._v("\n priv/YOUR_REPO")]),e._v(". It must always point to a subdirectory inside the priv directory")])],1),e._v(" "),a("el-form-item",{attrs:{label:"URL"}},[a("el-input",{attrs:{value:e.pleromaRepo.url},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","url")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("An URL that specifies storage information")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Log level"}},[a("el-select",{attrs:{value:e.pleromaRepo.log,clearable:""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Repo","log")}}},[a("el-option",{attrs:{value:!1,label:"False - disables logging for that repository."}}),e._v(" "),a("el-option",{attrs:{value:":debug",label:":debug - for debug-related messages"}}),e._v(" "),a("el-option",{attrs:{value:":info",label:":info - for information of any kind"}}),e._v(" "),a("el-option",{attrs:{value:":warn",label:":warn - for warnings"}}),e._v(" "),a("el-option",{attrs:{value:":error",label:":error - for errors"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("The log level used when logging the query with Elixir's Logger")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Pool size"}},[a("el-input-number",{attrs:{value:e.pleromaRepo.pool_size,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"Pleroma.Repo","pool_size")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The size of the pool used by the connection module. Defaults to "),a("span",{staticClass:"code"},[e._v("10")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Telemetry prefix"}},[a("el-select",{attrs:{value:e.pleromaRepo.telemetry_prefix||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Repo","telemetry_prefix")}}},[a("el-option",{attrs:{label:":my_app",value:":my_app"}}),e._v(" "),a("el-option",{attrs:{label:":repo",value:":repo"}}),e._v(" "),a("el-option",{attrs:{label:":query",value:":query"}})],1)],1),e._v(" "),a("el-form-item",{attrs:{label:"Types"}},[a("el-input",{attrs:{value:e.pleromaRepo.types},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","types")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Telemetry event"}},[a("el-select",{attrs:{value:e.pleromaRepo.telemetry_event||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Repo","telemetry_event")}}},[a("el-option",{attrs:{label:"Pleroma.Repo.Instrumenter",value:"Pleroma.Repo.Instrumenter"}})],1)],1),e._v(" "),a("el-form-item",{attrs:{label:"Connection options:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Hostname"}},[a("el-input",{attrs:{value:e.pleromaRepo.hostname},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","hostname")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Server hostname")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Socket dir"}},[a("el-input",{attrs:{value:e.pleromaRepo.socket_dir},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","socket_dir")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Connect to Postgres via UNIX sockets in the given directory. The socket name is derived based on the port.\n This is the preferred method for configuring sockets and it takes precedence over the hostname.\n If you are connecting to a socket outside of the Postgres convention, use "),a("span",{staticClass:"code"},[e._v(":socket")]),e._v(" instead.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Socket"}},[a("el-input",{attrs:{value:e.pleromaRepo.socket},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","socket")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Connect to Postgres via UNIX sockets in the given path. This option takes precedence over the\n "),a("span",{staticClass:"code"},[e._v(":hostname")]),e._v(" and "),a("span",{staticClass:"code"},[e._v(":socket_dir")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Username"}},[a("el-input",{attrs:{value:e.pleromaRepo.username},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","username")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Password"}},[a("el-input",{attrs:{value:e.pleromaRepo.password},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","password")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:e.pleromaRepo.port},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","port")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Server port (default: 5432)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Database"}},[a("el-input",{attrs:{value:e.pleromaRepo.database},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","database")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The database to connect to")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Maintenance database"}},[a("el-input",{attrs:{value:e.pleromaRepo.maintenance_database},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","maintenance_database")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v('Specifies the name of the database to connect to when creating or dropping the database. Defaults to "postgres"')])],1),e._v(" "),a("el-form-item",{attrs:{label:"Pool"}},[a("el-input",{attrs:{value:e.pleromaRepo.pool},on:{input:function(t){return e.updateSetting(t,"Pleroma.Repo","pool")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The connection pool module, defaults to "),a("span",{staticClass:"code"},[e._v("DBConnection.ConnectionPool")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"SSL"}},[a("el-switch",{attrs:{value:e.pleromaRepo.ssl},on:{change:function(t){return e.updateSetting(t,"Pleroma.Repo","ssl")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Set to true if ssl should be used")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Connect timeout"}},[a("el-input-number",{attrs:{value:e.pleromaRepo.connect_timeout,step:1e3,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"Pleroma.Repo","connect_timeout")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The timeout for establishing new connections. Defaults to 5000")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Prepare"}},[a("el-select",{attrs:{value:e.pleromaRepo.prepare,clearable:""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Repo","prepare")}}},[a("el-option",{attrs:{label:"named",value:":named"}}),e._v(" "),a("el-option",{attrs:{label:"unnamed",value:":unnamed"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("How to prepare queries, either "),a("span",{staticClass:"code"},[e._v(":named")]),e._v(" to use named queries or\n "),a("span",{staticClass:"code"},[e._v(":unnamed")]),e._v(" to force unnamed queries (default: :named)")])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));P.options.__file="Database.vue";var U=P.exports,L={federationPublisherModulesOptions:[{label:"Pleroma.Web.ActivityPub.Publisher",value:"Pleroma.Web.ActivityPub.Publisher"},{label:"Pleroma.Web.Websub",value:"Pleroma.Web.Websub"},{label:"Pleroma.Web.Salmon",value:"Pleroma.Web.Salmon"}],rewritePolicyOptions:[{label:"NoOpPolicy",value:"Pleroma.Web.ActivityPub.MRF.NoOpPolicy",expl:"NoOpPolicy: Doesn’t modify activities (default)"},{label:"DropPolicy",value:"Pleroma.Web.ActivityPub.MRF.DropPolicy",expl:"DropPolicy: Drops all activities. It generally doesn’t makes sense to use in production"},{label:"SimplePolicy",value:"Pleroma.Web.ActivityPub.MRF.SimplePolicy",expl:"SimplePolicy: Restrict the visibility of activities from certains instances (See :mrf_simple section)"},{label:"TagPolicy",value:"Pleroma.Web.ActivityPub.MRF.TagPolicy",expl:"Applies policies to individual users based on tags, which can be set using pleroma-fe/admin-fe/any other app that supports Pleroma Admin API. For example it allows marking posts from individual users nsfw (sensitive)"},{label:"SubchainPolicy",value:"Pleroma.Web.ActivityPub.MRF.SubchainPolicy",expl:"Selectively runs other MRF policies when messages match (see :mrf_subchain section)"},{label:"RejectNonPublic",value:"Pleroma.Web.ActivityPub.MRF.RejectNonPublic",expl:"RejectNonPublic: Drops posts with non-public visibility settings (See :mrf_rejectnonpublic section)"},{label:"EnsureRePrepended",value:"Pleroma.Web.ActivityPub.MRF.EnsureRePrepended",expl:"EnsureRePrepended: Rewrites posts to ensure that replies to posts with subjects do not have an identical subject and instead begin with re:"},{label:"AntiLinkSpamPolicy",value:"Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy",expl:"Rejects posts from likely spambots by rejecting posts from new users that contain links"},{label:"MediaProxyWarmingPolicy",value:"Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy",expl:"Crawls attachments using their MediaProxy URLs so that the MediaProxy cache is primed"},{label:"MentionPolicy",value:"Pleroma.Web.ActivityPub.MRF.MentionPolicy",expl:"Drops posts mentioning configurable users. (see :mrf_mention section)"},{label:"VocabularyPolicy",value:"Pleroma.Web.ActivityPub.MRF.VocabularyPolicy",expl:"Restricts activities to a configured set of vocabulary"}],quarantinedInstancesOptions:[],autofollowedNicknamesOptions:[],uriSchemesOptions:[{label:"https",value:"https"},{label:"http",value:"http"},{label:"dat",value:"dat"},{label:"dweb",value:"dweb"},{label:"gopher",value:"gopher"},{label:"ipfs",value:"ipfs"},{label:"ipns",value:"ipns"},{label:"irc",value:"irc"},{label:"ircs",value:"ircs"},{label:"magnet",value:"magnet"},{label:"mailto",value:"mailto"},{label:"mumble",value:"mumble"},{label:"ssb",value:"ssb"},{label:"xmpp",value:"xmpp"}],themeOptions:[{label:"pleroma-dark",value:"pleroma-dark"},{label:"pleroma-light",value:"pleroma-light"},{label:"classic-dark",value:"classic-dark"},{label:"bird",value:"bird"},{label:"ir-black",value:"ir-black"},{label:"monokai",value:"monokai"},{label:"mammal",value:"mammal"},{label:"redmond-xx",value:"redmond-xx"},{label:"redmond-xx-se",value:"redmond-xx-se"},{label:"redmond-xxi",value:"redmond-xxi"},{label:"breezy-dark",value:"breezy-dark"},{label:"breezy-light",value:"breezy-light"}],instrumentersOptions:[{label:"Pleroma.Web.Endpoint.Instrumenter",value:"Pleroma.Web.Endpoint.Instrumenter"}],extraCookieAttrsOptions:[{label:"SameSite=Lax",value:"SameSite=Lax"}],hackneyPoolsOptions:[{label:"Federation",value:":federation",max_connections:50,timeout:15e4},{label:"Media",value:":media",max_connections:50,timeout:15e4},{label:"Upload",value:":upload",max_connections:25,timeout:3e5}],whitelistedContentTypesOptions:[{label:"image/gif",value:"image/gif"},{label:"image/jpeg",value:"image/jpeg"},{label:"image/jpg",value:"image/jpg"},{label:"image/png",value:"image/png"},{label:"image/svg+xml",value:"image/svg+xml"},{label:"audio/mpeg",value:"audio/mpeg"},{label:"audio/mp3",value:"audio/mp3"},{label:"video/webm",value:"video/webm"},{label:"video/mp4",value:"video/mp4"},{label:"video/quicktime",value:"video/quicktime"}],mogrifyActionsOptions:[{label:"strip",value:"strip"},{label:"auto-orient",value:"auto-orient"}],adapterOptions:[{label:"Swoosh.Adapters.Sendmail",value:"Swoosh.Adapters.Sendmail"},{label:"Swoosh.Adapters.SMTP",value:"Swoosh.Adapters.SMTP"},{label:"Swoosh.Adapters.Sendgrid",value:"Swoosh.Adapters.Sendgrid"},{label:"Swoosh.Adapters.Mandrill",value:"Swoosh.Adapters.Mandrill"},{label:"Swoosh.Adapters.Mailgun",value:"Swoosh.Adapters.Mailgun"},{label:"Swoosh.Adapters.Mailjet",value:"Swoosh.Adapters.Mailjet"},{label:"Swoosh.Adapters.Postmark",value:"Swoosh.Adapters.Postmark"},{label:"Swoosh.Adapters.SparkPost",value:"Swoosh.Adapters.SparkPost"},{label:"Swoosh.Adapters.AmazonSES",value:"Swoosh.Adapters.AmazonSES"},{label:"Swoosh.Adapters.Dyn",value:"Swoosh.Adapters.Dyn"},{label:"Swoosh.Adapters.SocketLabs",value:"Swoosh.Adapters.SocketLabs"},{label:"Swoosh.Adapters.Gmail",value:"Swoosh.Adapters.Gmail"},{label:"Swoosh.Adapters.Local",value:"Swoosh.Adapters.Local"}],loggerBackendsOptions:[{label:"Console // log to stdout",value:JSON.stringify(":console")},{label:"Ex_syslogger // log to syslog",value:JSON.stringify({tuple:["ExSyslogger",":ex_syslogger"]})},{label:"Quack.Logger // log to Slack",value:JSON.stringify("Quack.Logger")}],restrictedNicknamesOptions:[{value:".well-known"},{value:"~"},{value:"about"},{value:"activities"},{value:"api"},{value:"auth"},{value:"check_password"},{value:"dev"},{value:"friend-requests"},{value:"inbox"},{value:"internal"},{value:"main"},{value:"media"},{value:"nodeinfo"},{value:"notice"},{value:"oauth"},{value:"objects"},{value:"ostatus_subscribe"},{value:"pleroma"},{value:"proxy"},{value:"push"},{value:"registration"},{value:"relay"},{value:"settings"},{value:"status"},{value:"tag"},{value:"user-search"},{value:"user_exists"},{value:"users"},{value:"web"}]},R=a("fJ7X"),M=a.n(R),T=(a("nBvS"),a("Lrpg"),{name:"Endpoint",components:{editor:M.a},computed:c()({},Object(p.b)(["endpoint"]),{editorContentHttp:{get:function(){return this.endpoint.http.dispatch?this.endpoint.http.dispatch[0]:""},set:function(e){this.processNestedData([e],"Pleroma.Web.Endpoint","http","dispatch")}},editorContentHttps:{get:function(){return this.endpoint.https.dispatch?this.endpoint.https.dispatch[0]:""},set:function(e){this.processNestedData([e],"Pleroma.Web.Endpoint","https","dispatch")}},configureHttp:function(){return!1==!this.endpoint.http},configureHttps:function(){return!1==!this.endpoint.https},endpointHttp:function(){return this.endpoint.http||{}},endpointHttps:function(){return this.endpoint.https||{}},extraCookieAttrsOptions:function(){return L.extraCookieAttrsOptions},instrumentersOptions:function(){return L.instrumentersOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"},loading:function(){return this.$store.state.settings.loading}}),methods:{processNestedData:function(e,t,a,s){var n=c()({},this.$store.state.settings.settings[t][a],o()({},s,e));this.updateSetting(n,t,a)},showServerConfig:function(e,t){e?this.updateSetting({},"Pleroma.Web.Endpoint",t):this.updateSetting(e,"Pleroma.Web.Endpoint",t)},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}}),D=(a("NyLv"),Object(v.a)(T,function(){var e=this,t=e.$createElement,a=e._self._c||t;return e.loading?e._e():a("el-form",{ref:"endpoint",attrs:{model:e.endpoint,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Instrumenters"}},[a("el-select",{attrs:{value:e.endpoint.instrumenters||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Endpoint","instrumenters")}}},e._l(e.instrumentersOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"Compile-time configuration:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Code reloader"}},[a("el-switch",{attrs:{value:e.endpoint.code_reloader},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Endpoint","code_reloader")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enables code reloading functionality")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Debug errors"}},[a("el-switch",{attrs:{value:e.endpoint.debug_errors},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Endpoint","debug_errors")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enables using "),a("span",{staticClass:"code"},[e._v("Plug.Debugger")]),e._v(" functionality for debugging failures in the application.\n Recommended to be set to true only in development as it allows listing of the application source code during debugging. Defaults to false.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Render errors:"}}),e._v(" "),a("el-form-item",{attrs:{label:"View"}},[a("el-input",{attrs:{value:e.endpoint.render_errors.view},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","render_errors","view")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Accepts"}},[a("el-select",{attrs:{value:e.endpoint.render_errors.accepts||[],multiple:"",filterable:"","allow-create":""},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","render_errors","accepts")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Layout"}},[a("el-switch",{attrs:{value:e.endpoint.render_errors.layout},on:{change:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","render_errors","layout")}}})],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"Runtime configuration:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Cache static manifest"}},[a("el-input",{attrs:{value:e.endpoint.cache_static_manifest},on:{input:function(t){return e.updateSetting(t,"Pleroma.Web.Endpoint","cache_static_manifest")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A path to a json manifest file that contains static files and their digested version.\n This is typically set to "),a("span",{staticClass:"code"},[e._v("'priv/static/cache_manifest.json'")]),e._v("\n which is the file automatically generated by "),a("span",{staticClass:"code"},[e._v("mix phx.digest")])])],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"HTTP:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Configure HTTP server"}},[a("el-switch",{attrs:{value:e.configureHttp},on:{change:function(t){return e.showServerConfig(t,"http")}}})],1),e._v(" "),e.configureHttp?a("div",[a("el-form-item",{attrs:{label:"Dispatch"}},[a("editor",{attrs:{height:"150",width:"100%",lang:"elixir",theme:"chrome"},model:{value:e.editorContentHttp,callback:function(t){e.editorContentHttp=t},expression:"editorContentHttp"}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("You can type in Elixir code here")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:e.endpointHttp.port},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","http","port")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The port to run the server. Defaults to 4000 (http) and 4040 (https).")])],1),e._v(" "),a("el-form-item",{attrs:{label:"IP"}},[a("el-input",{attrs:{value:e.endpointHttp.ip,placeholder:"xxx.xxx.xxx.xx"},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","http","ip")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The ip to bind the server to")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Reference name"}},[a("el-input",{attrs:{value:e.endpointHttp.ref},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","http","ref")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The reference name to be used. Defaults to "),a("span",{staticClass:"code"},[e._v("plug.HTTP")]),e._v(" (http) and\n "),a("span",{staticClass:"code"},[e._v("plug.HTTPS")]),e._v(" (https). This is the value that needs to be given on shutdown.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Compress"}},[a("el-switch",{attrs:{value:e.endpointHttp.compress},on:{change:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","http","compress")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Cowboy will attempt to compress the response body. Defaults to false.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Timeout in s"}},[a("el-input-number",{attrs:{value:e.endpointHttp.timeout/1e3,step:1,min:0,size:"large"},on:{input:function(t){return e.processNestedData(1e3*t,"Pleroma.Web.Endpoint","http","timeout")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Time in s with no requests before Cowboy closes the connection. Defaults to 5 s.")])],1),e._v(" "),a("div",{staticClass:"line"})],1):e._e(),e._v(" "),a("el-form-item",{attrs:{label:"HTTPS:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Configure HTTPS server"}},[a("el-switch",{attrs:{value:e.configureHttps},on:{change:function(t){return e.showServerConfig(t,"https")}}})],1),e._v(" "),e.configureHttps?a("div",[a("el-form-item",{attrs:{label:"Dispatch"}},[a("editor",{attrs:{height:"150",width:"100%",lang:"elixir",theme:"chrome"},model:{value:e.editorContentHttps,callback:function(t){e.editorContentHttps=t},expression:"editorContentHttps"}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("You can type in Elixir code here")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:e.endpointHttps.port},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","https","port")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The port to run the server. Defaults to 4000 (http) and 4040 (https).")])],1),e._v(" "),a("el-form-item",{attrs:{label:"IP"}},[a("el-input",{attrs:{value:e.endpointHttps.ip,placeholder:"xxx.xxx.xxx.xx"},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","https","ip")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The ip to bind the server to")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Reference name"}},[a("el-input",{attrs:{value:e.endpointHttps.ref},on:{input:function(t){return e.updateSetting(t,"Pleroma.Web.Endpoint","https","ref")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The reference name to be used. Defaults to "),a("span",{staticClass:"code"},[e._v("plug.HTTP")]),e._v(" (http) and\n "),a("span",{staticClass:"code"},[e._v("plug.HTTPS")]),e._v(" (https). This is the value that needs to be given on shutdown.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Compress"}},[a("el-switch",{attrs:{value:e.endpointHttps.compress},on:{change:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","https","compress")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Cowboy will attempt to compress the response body. Defaults to false.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Timeout in s"}},[a("el-input-number",{attrs:{value:e.endpointHttps.timeout/1e3,step:1,min:0,size:"large"},on:{input:function(t){return e.processNestedData(1e3*t,"Pleroma.Web.Endpoint","https","timeout")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Time in s with no requests before Cowboy closes the connection. Defaults to 5 s.")])],1),e._v(" "),a("div",{staticClass:"line"})],1):e._e(),e._v(" "),a("el-form-item",{attrs:{label:"Secret key base"}},[a("el-input",{attrs:{value:e.endpoint.secret_key_base},on:{input:function(t){return e.updateSetting(t,"Pleroma.Web.Endpoint","secret_key_base")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A secret key used as a base to generate secrets for encrypting and signing data. For example, cookies and tokens are signed by default, but they may also be encrypted if desired. Defaults to nil as it must be set per application")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Server"}},[a("el-switch",{attrs:{value:e.endpoint.server},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Endpoint","server")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("When true, starts the web server when the endpoint supervision tree starts. Defaults to false. The "),a("span",{staticClass:"code"},[e._v("mix phx.server")]),e._v(" task automatically sets this to true.")])],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"URL:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Host"}},[a("el-input",{attrs:{value:e.endpoint.url.host},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","url","host")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The host without the scheme and a post (e.g "),a("span",{staticClass:"code"},[e._v("example.com")]),e._v(", not "),a("span",{staticClass:"code"},[e._v("https://example.com:2020")]),e._v(")")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Scheme"}},[a("el-input",{attrs:{value:e.endpoint.url.scheme},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","url","scheme")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("e.g http, https")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:e.endpoint.url.port},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","url","port")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Path"}},[a("el-input",{attrs:{value:e.endpoint.url.path},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","url","path")}}})],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"Protocol"}},[a("el-input",{attrs:{value:e.endpoint.protocol},on:{input:function(t){return e.updateSetting(t,"Pleroma.Web.Endpoint","protocol")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Signing salt"}},[a("el-input",{attrs:{value:e.endpoint.signing_salt},on:{input:function(t){return e.updateSetting(t,"Pleroma.Web.Endpoint","signing_salt")}}})],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"PubSub:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Name"}},[a("el-input",{attrs:{value:e.endpoint.pubsub.name},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","pubsub","name")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Adapter"}},[a("el-input",{attrs:{value:e.endpoint.pubsub.adapter},on:{input:function(t){return e.processNestedData(t,"Pleroma.Web.Endpoint","pubsub","adapter")}}})],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"Secure cookie flag"}},[a("el-switch",{attrs:{value:e.endpoint.secure_cookie_flag},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Endpoint","secure_cookie_flag")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Extra cookie attrs"}},[a("el-select",{attrs:{value:e.endpoint.extra_cookie_attrs||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Endpoint","extra_cookie_attrs")}}},e._l(e.extraCookieAttrsOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{staticClass:"options-paragraph-container"},[a("p",{staticClass:"options-paragraph"},[e._v("Only common options are listed here. You can add more (all configuration options can be viewed\n "),a("a",{attrs:{href:"https://hexdocs.pm/phoenix/Phoenix.Endpoint.html#module-dynamic-configuration",rel:"nofollow noreferrer noopener",target:"_blank"}},[e._v("here")]),e._v(")\n ")])]),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)},[],!1,null,null,null));D.options.__file="Endpoint.vue";var E=D.exports,W={name:"Instance",computed:c()({},Object(p.b)(["enabled","handler","passwordAuthenticator","port","privDir"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{toggleEsshd:function(e){this.$store.dispatch("ToggleEsshd",e)},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},N=(a("FCne"),Object(v.a)(W,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{attrs:{"label-width":e.labelWidth}},[a("el-form-item",[a("p",{staticClass:"expl"},[e._v("Before enabling this you must:\n "),a("ol",{staticClass:"esshd-list"},[a("li",[e._v("Add "),a("span",{staticClass:"code"},[e._v(":esshd")]),e._v(" to "),a("span",{staticClass:"code"},[e._v("mix.exs")]),e._v(" as one of the\n "),a("span",{staticClass:"code"},[e._v("extra_applications")])]),e._v(" "),a("li",[e._v("Generate host keys in your\n "),a("span",{staticClass:"code"},[e._v("priv")]),e._v(" dir with\n "),a("span",{staticClass:"code"},[e._v('ssh-keygen -m PEM -N "" -b 2048 -t rsa -f ssh_host_rsa_key')])])])])])],1),e._v(" "),a("el-form",{ref:"enabled",attrs:{model:e.enabled,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:e.enabled.value},on:{change:function(t){return e.updateSetting(t,"enabled","value")}}})],1)],1),e._v(" "),a("el-form",{ref:"privDir",attrs:{model:e.privDir,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Priv dir"}},[a("el-input",{attrs:{value:e.privDir.value},on:{input:function(t){return e.updateSetting(t,"priv_dir","value")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("You can input relative path here")])],1)],1),e._v(" "),a("el-form",{ref:"handler",attrs:{model:e.handler,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Handler"}},[a("el-input",{attrs:{value:e.handler.value},on:{input:function(t){return e.updateSetting(t,"handler","value")}}})],1)],1),e._v(" "),a("el-form",{ref:"port",attrs:{model:e.port,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:e.port.value},on:{input:function(t){return e.updateSetting(t,"port","value")}}})],1)],1),e._v(" "),a("el-form",{ref:"passwordAuthenticator",attrs:{model:e.passwordAuthenticator,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Password authenticator"}},[a("el-input",{attrs:{value:e.passwordAuthenticator.value},on:{input:function(t){return e.updateSetting(t,"password_authenticator","value")}}})],1),e._v(" "),a("el-form-item",[a("p",{staticClass:"expl"},[e._v("Feel free to adjust the priv_dir and port number.\n Then you will have to create the key for the keys (in the example "),a("span",{staticClass:"code"},[e._v("priv/ssh_keys")]),e._v(") and create the host keys with\n "),a("span",{staticClass:"code"},[e._v('ssh-keygen -m PEM -N "" -b 2048 -t rsa -f ssh_host_rsa_key')]),e._v(".\n After restarting, you should be able to connect to your Pleroma instance with "),a("span",{staticClass:"code"},[e._v("ssh username@server -p $PORT")])])]),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));N.options.__file="Esshd.vue";var O=N.exports,j={name:"Frontend",computed:c()({},Object(p.b)(["assets","frontend","emoji","chat","markup"]),{groups:function(){var e=this;return Object.keys(this.emoji.groups).map(function(t){return[t,e.emoji.groups[t]]})},mascots:function(){var e=this;return Object.keys(this.assets.mascots).map(function(t){return[t,e.assets.mascots[t].url,e.assets.mascots[t].mime_type]})},themeOptions:function(){return L.themeOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{addRowToGroups:function(){var e=this.groups.reduce(function(e,t,a){return c()({},e,o()({},t[0],t[1]))},{});this.updateSetting(c()({},e,{"":[]}),"emoji","groups")},addRowToMascots:function(){var e=this.mascots.reduce(function(e,t,a){return c()({},e,o()({},t[0],{url:t[1],mime_type:t[2]}))},{});this.updateSetting(c()({},e,{"":{url:"",mime_type:""}}),"assets","mascots")},deleteGroupsRow:function(e){var t=this.groups.filter(function(t,a){return e!==a}).reduce(function(e,t,a){return c()({},e,o()({},t[0],t[1]))},{});this.updateSetting(t,"emoji","groups")},deleteMascotsRow:function(e){var t=this.mascots.filter(function(t,a){return e!==a}).reduce(function(e,t,a){return c()({},e,o()({},t[0],{url:t[1],mime_type:t[2]}))},{});this.updateSetting(t,"assets","mascots")},parseGroups:function(e,t,a){var s=this.groups.reduce(function(s,n,i){return a===i?"key"===t?c()({},s,o()({},e,n[1])):c()({},s,o()({},n[0],e)):c()({},s,o()({},n[0],n[1]))},{});this.updateSetting(s,"emoji","groups")},parseMascots:function(e,t,a){var s=this.mascots.reduce(function(s,n,i){return a===i?"name"===t?c()({},s,o()({},e,{url:n[1],mime_type:n[2]})):"url"===t?c()({},s,o()({},n[0],{url:e,mime_type:n[2]})):c()({},s,o()({},n[0],{url:n[1],mime_type:e})):c()({},s,o()({},n[0],{url:n[1],mime_type:n[2]}))},{});this.updateSetting(s,"assets","mascots")},processNestedData:function(e,t,a,s){var n=c()({},this.$store.state.settings.settings[t][a],o()({},s,e));this.updateSetting(n,t,a)},sendBackgroundMasto:function(e){var t=e.file;this.$store.dispatch("UploadMedia",{file:t,tab:"frontend_configurations",inputName:"masto_fe",childName:"background"})},sendBackgroundPleroma:function(e){var t=e.file;this.$store.dispatch("UploadMedia",{file:t,tab:"frontend_configurations",inputName:"pleroma_fe",childName:"background"})},sendLogoMasto:function(e){var t=e.file;this.$store.dispatch("UploadMedia",{file:t,tab:"frontend_configurations",inputName:"masto_fe",childName:"logo"})},sendLogoPleroma:function(e){var t=e.file;this.$store.dispatch("UploadMedia",{file:t,tab:"frontend_configurations",inputName:"pleroma_fe",childName:"logo"})},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},I=(a("hVXW"),Object(v.a)(j,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"frontend",attrs:{model:e.frontend,"label-width":e.labelWidth}},[a("el-form-item",[a("p",{staticClass:"expl"},[e._v("This form can be used to configure a keyword list that keeps the configuration data for any kind of frontend.\n By default, settings for "),a("span",{staticClass:"code"},[e._v("pleroma_fe")]),e._v(" and "),a("span",{staticClass:"code"},[e._v("masto_fe")]),e._v(" are configured.\n If you want to add your own configuration your settings need to be complete as they will override the defaults.")])]),e._v(" "),a("el-form-item",{attrs:{label:"Pleroma FE:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Theme"}},[a("el-select",{attrs:{value:e.frontend.pleroma_fe.theme,clearable:""},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","theme")}}},e._l(e.themeOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1),e._v(" "),a("p",{staticClass:"expl"},[e._v("Which theme to use")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Background"}},[a("el-input",{attrs:{value:e.frontend.pleroma_fe.background},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","background")}}}),e._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[e._v("or")]),e._v(" "),a("el-upload",{attrs:{"http-request":e.sendBackgroundPleroma,multiple:!1,"show-file-list":!1,action:"/api/v1/media"}},[a("el-button",{attrs:{size:"small",type:"primary"}},[e._v("Click to upload")])],1)],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("URL of the background, unless viewing a user profile with a background that is set")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Logo"}},[a("el-input",{attrs:{value:e.frontend.pleroma_fe.logo},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","logo")}}}),e._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[e._v("or")]),e._v(" "),a("el-upload",{attrs:{"http-request":e.sendLogoPleroma,multiple:!1,"show-file-list":!1,action:"/api/v1/media"}},[a("el-button",{attrs:{size:"small",type:"primary"}},[e._v("Click to upload")])],1)],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("URL of the logo")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Logo mask"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.logoMask},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","logoMask")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whether to use only the logo's shape as a mask (true) or as a regular image (false)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Logo margin (em)"}},[a("el-input-number",{attrs:{value:e.frontend.pleroma_fe.logoMargin,step:.1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","logoMargin")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("What margin to use around the logo")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Redirect URL"}},[a("el-input",{attrs:{value:e.frontend.pleroma_fe.redirectRootNoLogin},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","redirectRootNoLogin")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Relative URL which indicates where to redirect when a user is logged in")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Redirect for anonymous user"}},[a("el-input",{attrs:{value:e.frontend.pleroma_fe.redirectRootLogin},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","redirectRootLogin")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Relative URL which indicates where to redirect when a user isn’t logged in")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Show instance panel"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.showInstanceSpecificPanel},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","showInstanceSpecificPanel")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whenether to show the instance’s specific panel")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Scope options enabled"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.scopeOptionsEnabled},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","scopeOptionsEnabled")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Formatting options enabled"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.formattingOptionsEnabled},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","formattingOptionsEnabled")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Collapse msg with subject"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.collapseMessageWithSubject},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","collapseMessageWithSubject")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("When a message has a subject (aka Content Warning), collapse it by default")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Scope copy"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.scopeCopy},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","scopeCopy")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Copy the scope "),a("span",{staticClass:"code"},[e._v("(private/unlisted/public)")]),e._v(" in replies to posts by default")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Subject line behavior"}},[a("el-select",{attrs:{value:e.frontend.pleroma_fe.subjectLineBehavior,clearable:""},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","subjectLineBehavior")}}},[a("el-option",{attrs:{label:"Email",value:"email"}},[e._v("Email / Copy and preprend re:, as in email")]),e._v(" "),a("el-option",{attrs:{label:"Masto",value:"masto"}},[e._v("Masto / Copy verbatim, as in Mastodon")]),e._v(" "),a("el-option",{attrs:{label:"Noop",value:"noop"}},[e._v("Noop / Don't copy the subject")])],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("Allows changing the default behaviour of subject lines in replies")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Post content type"}},[a("el-input",{attrs:{value:e.frontend.pleroma_fe.postContentType},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","postContentType")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Always show subject input"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.alwaysShowSubjectInput},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","alwaysShowSubjectInput")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("When set to false, auto-hide the subject field when it's empty")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Hide post statistics"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.hidePostStats},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","hidePostStats")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Hide notices statistics(repeats, favorites, …)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Hide user statistics"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.hideUserStats},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","hideUserStats")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Hide profile statistics(posts, posts per day, followers, followings, …)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Login method"}},[a("el-input",{attrs:{value:e.frontend.pleroma_fe.loginMethod},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","loginMethod")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Web push notifications"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.webPushNotifications},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","webPushNotifications")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"No attachment links"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.noAttachmentLinks},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","noAttachmentLinks")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"NSFW Censor image"}},[a("el-input",{attrs:{value:e.frontend.pleroma_fe.nsfwCensorImage},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","nsfwCensorImage")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Show features panel"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.showFeaturesPanel},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","showFeaturesPanel")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Minimal scopes mode"}},[a("el-switch",{attrs:{value:e.frontend.pleroma_fe.minimalScopesMode},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","pleroma_fe","minimalScopesMode")}}})],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"Masto FE:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Theme"}},[a("el-select",{attrs:{value:e.frontend.masto_fe.theme,clearable:""},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","theme")}}},e._l(e.themeOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1),e._v(" "),a("p",{staticClass:"expl"},[e._v("Which theme to use")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Background"}},[a("el-input",{attrs:{value:e.frontend.masto_fe.background},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","background")}}}),e._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[e._v("or")]),e._v(" "),a("el-upload",{attrs:{"http-request":e.sendBackgroundMasto,multiple:!1,"show-file-list":!1,action:"/api/v1/media"}},[a("el-button",{attrs:{size:"small",type:"primary"}},[e._v("Click to upload")])],1)],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("URL of the background, unless viewing a user profile with a background that is set")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Logo"}},[a("el-input",{attrs:{value:e.frontend.masto_fe.logo},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","logo")}}}),e._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[e._v("or")]),e._v(" "),a("el-upload",{attrs:{"http-request":e.sendLogoMasto,multiple:!1,"show-file-list":!1,action:"/api/v1/media"}},[a("el-button",{attrs:{size:"small",type:"primary"}},[e._v("Click to upload")])],1)],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("URL of the logo")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Logo mask"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.logoMask},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","logoMask")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whether to use only the logo's shape as a mask (true) or as a regular image (false)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Logo margin (em)"}},[a("el-input-number",{attrs:{value:e.frontend.masto_fe.logoMargin,step:.1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","logoMargin")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("What margin to use around the logo")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Redirect URL"}},[a("el-input",{attrs:{value:e.frontend.masto_fe.redirectRootNoLogin},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","redirectRootNoLogin")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Relative URL which indicates where to redirect when a user is logged in")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Redirect for anonymous user"}},[a("el-input",{attrs:{value:e.frontend.masto_fe.redirectRootLogin},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","redirectRootLogin")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Relative URL which indicates where to redirect when a user isn’t logged in")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Show instance panel"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.showInstanceSpecificPanel},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","showInstanceSpecificPanel")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whenether to show the instance’s specific panel")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Scope options enabled"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.scopeOptionsEnabled},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","scopeOptionsEnabled")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Formatting options enabled"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.formattingOptionsEnabled},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","formattingOptionsEnabled")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Collapse msg with subjects"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.collapseMessageWithSubject},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","collapseMessageWithSubject")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("When a message has a subject (aka Content Warning), collapse it by default")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Scope copy"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.scopeCopy},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","scopeCopy")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Copy the scope "),a("span",{staticClass:"code"},[e._v("(private/unlisted/public)")]),e._v(" in replies to posts by default")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Subject line behavior"}},[a("el-select",{attrs:{value:e.frontend.masto_fe.subjectLineBehavior,clearable:""},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","subjectLineBehavior")}}},[a("el-option",{attrs:{label:"Email",value:"email"}},[e._v("Email / Copy and preprend re:, as in email")]),e._v(" "),a("el-option",{attrs:{label:"Masto",value:"masto"}},[e._v("Masto / Copy verbatim, as in Mastodon")]),e._v(" "),a("el-option",{attrs:{label:"Noop",value:"noop"}},[e._v("Noop / Don't copy the subject")])],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("Allows changing the default behaviour of subject lines in replies")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Post content type"}},[a("el-input",{attrs:{value:e.frontend.masto_fe.postContentType},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","postContentType")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Always show subject input"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.alwaysShowSubjectInput},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","alwaysShowSubjectInput")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("When set to false, auto-hide the subject field when it's empty")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Hide post statistics"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.hidePostStats},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","hidePostStats")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Hide notices statistics(repeats, favorites, …)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Hide user statistics"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.hideUserStats},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","hideUserStats")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Hide profile statistics(posts, posts per day, followers, followings, …)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Login method"}},[a("el-input",{attrs:{value:e.frontend.masto_fe.loginMethod},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","loginMethod")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Web push notifications"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.webPushNotifications},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","webPushNotifications")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"No attachment links"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.noAttachmentLinks},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","noAttachmentLinks")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"NSFW Censor image"}},[a("el-input",{attrs:{value:e.frontend.masto_fe.nsfwCensorImage},on:{input:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","nsfwCensorImage")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Show features panel"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.showFeaturesPanel},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","showFeaturesPanel")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Minimal scopes mode"}},[a("el-switch",{attrs:{value:e.frontend.masto_fe.minimalScopesMode},on:{change:function(t){return e.processNestedData(t,"frontend_configurations","masto_fe","minimalScopesMode")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"assets",attrs:{model:e.assets,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Assets:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Default mascot"}},[a("el-select",{attrs:{value:e.assets.default_mascot,clearable:""},on:{change:function(t){return e.updateSetting(t,"assets","default_mascot")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("An element from mascots - This will be used as the default mascot on MastoFE\n (default: "),a("span",{staticClass:"code"},[e._v(":pleroma_fox_tan")]),e._v(")")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Mascots"}},[e._l(e.mascots,function(t,s){var n=t[0],i=t[1],l=t[2];return a("div",{key:s,staticClass:"mascot-container"},[a("div",{staticClass:"mascot-name-container"},[a("el-input",{staticClass:"mascot-name-input",attrs:{value:n,placeholder:"Name"},on:{input:function(t){return e.parseMascots(t,"name",s)}}}),e._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.deleteMascotsRow(s,"emoji","groups")}}})],1),e._v(" "),a("el-input",{staticClass:"mascot-input",attrs:{value:i,placeholder:"URL"},on:{input:function(t){return e.parseMascots(t,"url",s)}}}),e._v(" "),a("el-input",{staticClass:"mascot-input",attrs:{value:l,placeholder:"Mime type"},on:{input:function(t){return e.parseMascots(t,"mimeType",s)}}})],1)}),e._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:e.addRowToMascots}})],2)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"emoji",attrs:{model:e.emoji,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Emoji:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Location of emoji files"}},[a("el-select",{attrs:{value:e.emoji.shortcode_globs||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"emoji","shortcode_globs")}}},[a("el-option",{attrs:{label:"/emoji/custom/**/*.png",value:"/emoji/custom/**/*.png"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("Location of custom emoji files. "),a("span",{staticClass:"code"},[e._v("*")]),e._v(" can be used as a wildcard.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Pack extensions"}},[a("el-select",{attrs:{value:e.emoji.pack_extensions||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"emoji","pack_extensions")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A list of file extensions for emojis, when no "),a("span",{staticClass:"code"},[e._v("emoji.txt")]),e._v(" for a pack is present. ")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Group"}},[e._l(e.groups,function(t,s){var n=t[0],i=t[1];return a("div",{key:s,staticClass:"setting-input"},[a("el-input",{staticClass:"name-input",attrs:{value:n,placeholder:"key"},on:{input:function(t){return e.parseGroups(t,"key",s)}}}),e._v(" :\n "),a("el-select",{staticClass:"value-input",attrs:{value:i,multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.parseGroups(t,"value",s)}}}),e._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.deleteGroupsRow(s)}}})],1)}),e._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:e.addRowToGroups}})],2),e._v(" "),a("el-form-item",{attrs:{label:"Location of JSON-manifest"}},[a("el-input",{attrs:{value:e.emoji.default_manifest},on:{input:function(t){return e.updateSetting(t,"emoji","default_manifest")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download. Currently only one manifest can be added (no arrays).")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"chat",attrs:{model:e.chat,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Chat enabled"}},[a("el-switch",{attrs:{value:e.chat.enabled},on:{input:function(t){return e.updateSetting(t,"chat","enabled")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"markup",attrs:{model:e.markup,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Markup settings:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Allow inline images"}},[a("el-switch",{attrs:{value:e.markup.allow_inline_images},on:{input:function(t){return e.updateSetting(t,"markup","allow_inline_images")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Allow headings"}},[a("el-switch",{attrs:{value:e.markup.allow_headings},on:{input:function(t){return e.updateSetting(t,"markup","allow_headings")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Allow tables"}},[a("el-switch",{attrs:{value:e.markup.allow_tables},on:{input:function(t){return e.updateSetting(t,"markup","allow_tables")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Allow fonts"}},[a("el-switch",{attrs:{value:e.markup.allow_fonts},on:{input:function(t){return e.updateSetting(t,"markup","allow_fonts")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Scrub policy"}},[a("el-select",{attrs:{value:e.markup.scrub_policy||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"markup","scrub_policy")}}},[a("el-option",{attrs:{label:"Pleroma.HTML.Transform.MediaProxy",value:"Pleroma.HTML.Transform.MediaProxy"}}),e._v(" "),a("el-option",{attrs:{label:"Pleroma.HTML.Scrubber.Default",value:"Pleroma.HTML.Scrubber.Default"}})],1)],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));I.options.__file="Frontend.vue";var $=I.exports,F={name:"Gopher",computed:c()({},Object(p.b)(["gopher"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},z=(a("w5cJ"),Object(v.a)(F,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-form",{ref:"gopher",attrs:{model:e.gopher,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:e.gopher.enabled},on:{change:function(t){return e.updateSetting(t,"gopher","enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enables the gopher interface")])],1),e._v(" "),a("el-form-item",{attrs:{label:"IP address"}},[a("el-input",{attrs:{value:e.gopher.ip,placeholder:"xxx.xxx.xxx.xx"},on:{input:function(t){return e.updateSetting(t,"gopher","ip")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enables the gopher interface")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:e.gopher.port},on:{input:function(t){return e.updateSetting(t,"gopher","port")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Port to bind to")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Dst port"}},[a("el-input",{attrs:{value:e.gopher.dstport},on:{input:function(t){return e.updateSetting(t,"gopher","dstport")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Port advertised in urls (optional, defaults to port)")])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)},[],!1,null,null,null));z.options.__file="Gopher.vue";var H=z.exports,q={name:"HTTP",computed:c()({},Object(p.b)(["corsPlugCredentials","corsPlugExpose","corsPlugHeaders","corsPlugMaxAge","corsPlugMethods","hackneyPools","http","httpSecurity","metricsExporter"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{processNestedData:function(e,t,a,s){var n=c()({},this.$store.state.settings.settings[t][a],o()({},s,e));this.updateSetting(n,t,a)},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},B=(a("KFE3"),Object(v.a)(q,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"http",attrs:{model:e.http,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"HTTP settings:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Proxy url"}},[a("el-input",{attrs:{value:e.http.proxy_url},on:{input:function(t){return e.updateSetting(t,"http","proxy_url")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Send user agent"}},[a("el-switch",{attrs:{value:e.http.send_user_agent},on:{change:function(t){return e.updateSetting(t,"http","send_user_agent")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Adapter:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Versions"}},[a("el-select",{attrs:{value:e.http.adapter.versions||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.processNestedData(t,"http","adapter","versions")}}},[a("el-option",{attrs:{value:":tlsv1"}}),e._v(" "),a("el-option",{attrs:{value:":'tlsv1.1'"}}),e._v(" "),a("el-option",{attrs:{value:":'tlsv1.2'"}})],1)],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"corsPlugMaxAge",attrs:{model:e.corsPlugMaxAge,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Cors plug config:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Max age (days)"}},[a("el-input-number",{attrs:{value:e.corsPlugMaxAge.value/86400,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(86400*t,"max_age","value")}}})],1)],1),e._v(" "),a("el-form",{ref:"corsPlugMethods",attrs:{model:e.corsPlugMethods,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Methods"}},[a("el-select",{attrs:{value:e.corsPlugMethods.value||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"methods","value")}}},[a("el-option",{attrs:{value:"POST"}}),e._v(" "),a("el-option",{attrs:{value:"PUT"}}),e._v(" "),a("el-option",{attrs:{value:"DELETE"}}),e._v(" "),a("el-option",{attrs:{value:"GET"}}),e._v(" "),a("el-option",{attrs:{value:"PATCH"}}),e._v(" "),a("el-option",{attrs:{value:"OPTIONS"}})],1)],1)],1),e._v(" "),a("el-form",{ref:"corsPlugExpose",attrs:{model:e.corsPlugExpose,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Expose"}},[a("el-select",{attrs:{value:e.corsPlugExpose.value||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"expose","value")}}},[a("el-option",{attrs:{value:"Link"}}),e._v(" "),a("el-option",{attrs:{value:"X-RateLimit-Reset"}}),e._v(" "),a("el-option",{attrs:{value:"X-RateLimit-Limit"}}),e._v(" "),a("el-option",{attrs:{value:"X-RateLimit-Remaining"}}),e._v(" "),a("el-option",{attrs:{value:"X-Request-Id"}}),e._v(" "),a("el-option",{attrs:{value:"Idempotency-Key"}})],1)],1)],1),e._v(" "),a("el-form",{ref:"corsPlugCredentials",attrs:{model:e.corsPlugCredentials,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Credentials"}},[a("el-switch",{attrs:{value:e.corsPlugCredentials.value},on:{change:function(t){return e.updateSetting(t,"credentials","value")}}})],1)],1),e._v(" "),a("el-form",{ref:"corsPlugHeaders",attrs:{model:e.corsPlugHeaders,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Headers"}},[a("el-select",{attrs:{value:e.corsPlugHeaders.value||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"headers","value")}}},[a("el-option",{attrs:{value:"Authorization"}}),e._v(" "),a("el-option",{attrs:{value:"Content-Type"}}),e._v(" "),a("el-option",{attrs:{value:"Idempotency-Key"}})],1)],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"httpSecurity",attrs:{model:e.httpSecurity,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"HTTP security:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Security policy"}},[a("el-switch",{attrs:{value:e.httpSecurity.enabled},on:{change:function(t){return e.updateSetting(t,"http_security","enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whether the managed content security policy is enabled")])],1),e._v(" "),a("el-form-item",{attrs:{label:"STS"}},[a("el-switch",{attrs:{value:e.httpSecurity.sts},on:{change:function(t){return e.updateSetting(t,"http_security","sts")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whether to additionally send a "),a("span",{staticClass:"code"},[e._v("Strict-Transport-Security header")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"STS max age (days)"}},[a("el-input-number",{attrs:{value:e.httpSecurity.sts_max_age/86400,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(86400*t,"http_security","sts_max_age")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The maximum age for the "),a("span",{staticClass:"code"},[e._v("Strict-Transport-Security")]),e._v(" header if sent")])],1),e._v(" "),a("el-form-item",{attrs:{label:"CT max age (days)"}},[a("el-input-number",{attrs:{value:e.httpSecurity.ct_max_age/86400,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(86400*t,"http_security","ct_max_age")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The maximum age for the "),a("span",{staticClass:"code"},[e._v("Expect-CT")]),e._v(" header if sent")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Referrer policy"}},[a("el-select",{attrs:{value:e.httpSecurity.referrer_policy,clearable:""},on:{change:function(t){return e.updateSetting(t,"http_security","referrer_policy")}}},[a("el-option",{attrs:{label:"same-origin",value:"same-origin"}}),e._v(" "),a("el-option",{attrs:{label:"no-referrer",value:"no-referrer"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("The referrer policy to use")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Report URI"}},[a("el-input",{attrs:{value:e.httpSecurity.report_uri},on:{input:function(t){return e.updateSetting(t,"http_security","report_uri")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Adds the specified url to "),a("span",{staticClass:"code"},[e._v("report-uri")]),e._v(" and "),a("span",{staticClass:"code"},[e._v("report-to")]),e._v(" group in CSP header")])],1)],1),e._v(" "),a("el-form",{ref:"hackneyPools",attrs:{model:e.hackneyPools,"label-width":e.labelWidth}},[a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"Hackney pools:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Federation:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Max connections"}},[a("el-input-number",{attrs:{value:e.hackneyPools.federation.max_connections,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"hackney_pools","federation","max_connections")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("You may want this pool "),a("span",{staticClass:"code"},[e._v("max_connections")]),e._v(" to be at least equal to the number of federator jobs + retry queue jobs.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Timeout (s)"}},[a("el-input-number",{attrs:{value:e.hackneyPools.federation.timeout/1e3,step:10,min:0,size:"large"},on:{change:function(t){return e.processNestedData(1e3*t,"hackney_pools","federation","timeout")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("For the federation jobs")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Media:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Max connections"}},[a("el-input-number",{attrs:{value:e.hackneyPools.media.max_connections,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"hackney_pools","media","max_connections")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Timeout (s)"}},[a("el-input-number",{attrs:{value:e.hackneyPools.media.timeout/1e3,step:10,min:0,size:"large"},on:{change:function(t){return e.processNestedData(1e3*t,"hackney_pools","media","timeout")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("For rich media, media proxy")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Upload:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Max connections"}},[a("el-input-number",{attrs:{value:e.hackneyPools.upload.max_connections,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"hackney_pools","upload","max_connections")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Timeout (s)"}},[a("el-input-number",{attrs:{value:e.hackneyPools.upload.timeout/1e3,step:10,min:0,size:"large"},on:{change:function(t){return e.processNestedData(1e3*t,"hackney_pools","upload","timeout")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("For uploaded media (if using a remote uploader and "),a("span",{staticClass:"code"},[e._v("proxy_remote: true")]),e._v(")")])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));B.options.__file="Http.vue";var V=B.exports,G={name:"Instance",computed:c()({},Object(p.b)(["adminToken","fetchInitialPosts","instance","pleromaUser","scheduledActivity","suggestions","uriSchemes"]),{autofollowedNicknamesOptions:function(){return L.autofollowedNicknamesOptions},federationPublisherModulesOptions:function(){return L.federationPublisherModulesOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"},quarantinedInstancesOptions:function(){return L.quarantinedInstancesOptions},restrictedNicknamesOptions:function(){return L.restrictedNicknamesOptions},rewritePolicy:function(){return"string"==typeof this.instance.rewrite_policy?[this.instance.rewrite_policy]:this.instance.rewrite_policy},rewritePolicyExplanations:function(){return this.rewritePolicy?this.rewritePolicy.filter(function(e){return L.rewritePolicyOptions.find(function(t){return t.value===e})}):[]},rewritePolicyOptions:function(){return L.rewritePolicyOptions},uriSchemesOptions:function(){return L.uriSchemesOptions}}),methods:{getRewritePolicyExpl:function(e){return L.rewritePolicyOptions.find(function(t){return t.value===e}).expl},processNestedData:function(e,t,a,s){var n=c()({},this.$store.state.settings.settings[t][a],o()({},s,e));this.updateSetting(n,t,a)},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},K=(a("e0P1"),Object(v.a)(G,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"instance",attrs:{model:e.instance,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Name"}},[a("el-input",{attrs:{value:e.instance.name},on:{input:function(t){return e.updateSetting(t,"instance","name")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The instance’s name")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Email"}},[a("el-input",{attrs:{value:e.instance.email},on:{input:function(t){return e.updateSetting(t,"instance","email")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Email used to reach an Administrator/Moderator of the instance")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Notify email"}},[a("el-input",{attrs:{value:e.instance.notify_email},on:{input:function(t){return e.updateSetting(t,"instance","notify_email")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Email used for notifications")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Description"}},[a("el-input",{attrs:{value:e.instance.description},on:{input:function(t){return e.updateSetting(t,"instance","description")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The instance’s description, can be seen in nodeinfo and "),a("span",{staticClass:"code"},[e._v("/api/v1/instance")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Limit"}},[a("el-input-number",{attrs:{value:e.instance.limit,step:1e3,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","limit")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Posts character limit (CW/Subject included in the counter)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Remote limit"}},[a("el-input-number",{attrs:{value:e.instance.remote_limit,step:1e3,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","remote_limit")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Hard character limit beyond which remote posts will be dropped")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Upload limit (MB)"}},[a("el-input-number",{attrs:{value:e.instance.upload_limit/1048576,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(1048576*t,"instance","upload_limit")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("File size limit of uploads (except for avatar, background, banner)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Avatar upload limit (MB)"}},[a("el-input-number",{attrs:{value:e.instance.avatar_upload_limit/1048576,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(1048576*t,"instance","avatar_upload_limit")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("File size limit of user’s profile avatars")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Background upload limit (MB)"}},[a("el-input-number",{attrs:{value:e.instance.background_upload_limit/1048576,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(1048576*t,"instance","background_upload_limit")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("File size limit of user’s profile backgrounds")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Banner upload limit (MB)"}},[a("el-input-number",{attrs:{value:e.instance.banner_upload_limit/1048576,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(1048576*t,"instance","banner_upload_limit")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("File size limit of user’s profile banners")])],1),e._v(" "),a("el-form-item",{attrs:{label:"User bio length"}},[a("el-input-number",{attrs:{value:e.instance.user_bio_length,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","user_bio_length")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A user bio maximum length (default: 5000)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"User name length"}},[a("el-input-number",{attrs:{value:e.instance.user_name_length,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","user_name_length")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A user name maximum length (default: 100)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Poll limits:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Max options"}},[a("el-input-number",{attrs:{value:e.instance.poll_limits.max_options,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"instance","poll_limits","max_options")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Maximum number of options")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max characters per option"}},[a("el-input-number",{attrs:{value:e.instance.poll_limits.max_option_chars,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"instance","poll_limits","max_option_chars")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Maximum number of characters per option")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Minimum expiration (days)"}},[a("el-input-number",{attrs:{value:e.instance.poll_limits.min_expiration,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"instance","poll_limits","min_expiration")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Minimum expiration time")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max expiration (days)"}},[a("el-input-number",{attrs:{value:e.instance.poll_limits.max_expiration/86400,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(86400*t,"instance","poll_limits","max_expiration")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Maximum expiration time")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Registrations open"}},[a("el-switch",{attrs:{value:e.instance.registrations_open},on:{change:function(t){return e.updateSetting(t,"instance","registrations_open")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enable registrations for anyone, invitations can be enabled when false")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Invites enabled"}},[a("el-switch",{attrs:{value:e.instance.invites_enabled},on:{change:function(t){return e.updateSetting(t,"instance","invites_enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enable user invitations for admins (depends on "),a("span",{staticClass:"code"},[e._v("registrations_open: false)")]),e._v(".")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Account activation required"}},[a("el-switch",{attrs:{value:e.instance.account_activation_required},on:{change:function(t){return e.updateSetting(t,"instance","account_activation_required")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Require users to confirm their emails before signing in")])],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"Federating"}},[a("el-switch",{attrs:{value:e.instance.federating},on:{change:function(t){return e.updateSetting(t,"instance","federating")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enable federation with other instances")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Fed. replies max depth"}},[a("el-input-number",{attrs:{value:e.instance.federation_incoming_replies_max_depth,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","federation_incoming_replies_max_depth")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Max. depth of reply-to activities fetching on incoming federation, to prevent out-of-memory situations while fetching very long threads. Lower this value if you experience out-of-memory crashes.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Fed. reachability timeout"}},[a("el-input-number",{attrs:{value:e.instance.federation_reachability_timeout_days,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","federation_reachability_timeout_days")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Timeout (in days) of each external federation target being unreachable prior to pausing federating to it")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Federation publisher modules"}},[a("el-select",{attrs:{value:e.instance.federation_publisher_modules||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"instance","federation_publisher_modules")}}},e._l(e.federationPublisherModulesOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1)],1),e._v(" "),a("el-form-item",{attrs:{label:"Allow relay"}},[a("el-switch",{attrs:{value:e.instance.allow_relay},on:{change:function(t){return e.updateSetting(t,"instance","allow_relay")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enable Pleroma’s Relay, which makes it possible to follow a whole instance")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Rewrite policy"}},[a("el-select",{attrs:{value:e.rewritePolicy||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"instance","rewrite_policy")}}},e._l(e.rewritePolicyOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1),e._v(" "),e._l(e.rewritePolicyExplanations,function(t){return a("p",{key:t,staticClass:"expl"},[e._v(e._s(e.getRewritePolicyExpl(t)))])})],2),e._v(" "),a("el-form-item",{attrs:{label:"Public"}},[a("el-switch",{attrs:{value:e.instance.public},on:{change:function(t){return e.updateSetting(t,"instance","public")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Makes the client API in authentificated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Quarantined instances"}},[a("el-select",{attrs:{value:e.instance.quarantined_instances||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"instance","quarantined_instances")}}},e._l(e.quarantinedInstancesOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of ActivityPub instances where private (DMs, followers-only) activities will not be send")])],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"Managed config"}},[a("el-switch",{attrs:{value:e.instance.managed_config},on:{change:function(t){return e.updateSetting(t,"instance","managed_config")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whenether the config for pleroma-fe is configured in this config or in "),a("span",{staticClass:"code"},[e._v("static/config.json")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Static directory"}},[a("el-input",{attrs:{value:e.instance.static_dir},on:{input:function(t){return e.updateSetting(t,"instance","static_dir")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Allowed post formats"}},[a("el-select",{attrs:{value:e.instance.allowed_post_formats||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"instance","allowed_post_formats")}}},[a("el-option",{attrs:{label:"text/plain",value:"text/plain"}}),e._v(" "),a("el-option",{attrs:{label:"text/html",value:"text/html"}}),e._v(" "),a("el-option",{attrs:{label:"text/markdown",value:"text/markdown"}}),e._v(" "),a("el-option",{attrs:{label:"text/bbcode",value:"text/bbcode"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("MIME-type list of formats allowed to be posted (transformed into HTML)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"MRF transparency"}},[a("el-switch",{attrs:{value:e.instance.mrf_transparency},on:{change:function(t){return e.updateSetting(t,"instance","mrf_transparency")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Make the content of your Message Rewrite Facility settings public (via nodeinfo)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"MRF transparency exclusions"}},[a("el-select",{attrs:{value:e.instance.mrf_transparency_exclusions||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"instance","mrf_transparency_exclusions")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Scope copy"}},[a("el-switch",{attrs:{value:e.instance.scope_copy},on:{change:function(t){return e.updateSetting(t,"instance","scope_copy")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Copy the scope "),a("span",{staticClass:"code"},[e._v("(private/unlisted/public)")]),e._v(" in replies to posts by default")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Subject line behavior"}},[a("el-select",{attrs:{value:e.instance.subject_line_behavior,clearable:""},on:{change:function(t){return e.updateSetting(t,"instance","subject_line_behavior")}}},[a("el-option",{attrs:{label:"Email",value:"email"}},[e._v("Email / Copy and preprend re:, as in email")]),e._v(" "),a("el-option",{attrs:{label:"Masto",value:"masto"}},[e._v("Masto / Copy verbatim, as in Mastodon")]),e._v(" "),a("el-option",{attrs:{label:"Noop",value:"noop"}},[e._v("Noop / Don't copy the subject")])],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("Allows changing the default behaviour of subject lines in replies")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Always show subject input"}},[a("el-switch",{attrs:{value:e.instance.always_show_subject_input},on:{change:function(t){return e.updateSetting(t,"instance","always_show_subject_input")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("When set to false, auto-hide the subject field when it's empty")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Extended nickname format"}},[a("el-switch",{attrs:{value:e.instance.extended_nickname_format},on:{change:function(t){return e.updateSetting(t,"instance","extended_nickname_format")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Set to "),a("span",{staticClass:"code"},[e._v("true")]),e._v(" to use extended local nicknames format (allows underscores/dashes). This will break federation with older software for theses nicknames")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max pinned statuses"}},[a("el-input-number",{attrs:{value:e.instance.max_pinned_statuses,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","max_pinned_statuses")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The maximum number of pinned statuses. '0' will disable the feature")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Autofollowed nicknames"}},[a("el-select",{attrs:{value:e.instance.autofollowed_nicknames||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"instance","autofollowed_nicknames")}}},e._l(e.autofollowedNicknamesOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1),e._v(" "),a("p",{staticClass:"expl"},[e._v("Set to nicknames of (local) users that every new user should automatically follow")])],1),e._v(" "),a("el-form-item",{attrs:{label:"No attachment links"}},[a("el-switch",{attrs:{value:e.instance.no_attachment_links},on:{change:function(t){return e.updateSetting(t,"instance","no_attachment_links")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Set to true to disable automatically adding attachment link text to statuses")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Welcome message"}},[a("el-input",{attrs:{value:e.instance.welcome_message},on:{input:function(t){return e.updateSetting(t,"instance","welcome_message")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A message that will be send to a newly registered users as a direct message")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Welcome user nickname"}},[a("el-input",{attrs:{value:e.instance.welcome_user_nickname},on:{input:function(t){return e.updateSetting(t,"instance","welcome_user_nickname")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The nickname of the local user that sends the welcome message")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max report comment size"}},[a("el-input-number",{attrs:{value:e.instance.max_report_comment_size,step:100,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","max_report_comment_size")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The maximum size of the report comment")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Safe DM mentions"}},[a("el-switch",{attrs:{value:e.instance.safe_dm_mentions},on:{change:function(t){return e.updateSetting(t,"instance","safe_dm_mentions")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("If set to true, only mentions at the beginning of a post will be used to address people in direct messages. This is to prevent accidental mentioning of people when talking about them")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Healthcheck"}},[a("el-switch",{attrs:{value:e.instance.healthcheck},on:{change:function(t){return e.updateSetting(t,"instance","healthcheck")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("If set to true, system data will be shown on "),a("span",{staticClass:"code"},[e._v("/api/pleroma/healthcheck")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Remote post retention days"}},[a("el-input-number",{attrs:{value:e.instance.remote_post_retention_days,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","remote_post_retention_days")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The default amount of days to retain remote posts when pruning the database.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Skip thread containment"}},[a("el-switch",{attrs:{value:e.instance.skip_thread_containment},on:{change:function(t){return e.updateSetting(t,"instance","skip_thread_containment")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Skip filter out broken threads.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Limit to local content"}},[a("el-select",{attrs:{value:e.instance.limit_to_local_content,clearable:""},on:{change:function(t){return e.updateSetting(t,"instance","limit_to_local_content")}}},[a("el-option",{attrs:{label:"Unauthenticated",value:":unauthenticated"}}),e._v(" "),a("el-option",{attrs:{label:"All",value:":all"}}),e._v(" "),a("el-option",{attrs:{label:"False",value:"false"}})],1)],1),e._v(" "),a("el-form-item",{attrs:{label:"Dynamic configuration"}},[a("el-switch",{attrs:{value:e.instance.dynamic_configuration},on:{change:function(t){return e.updateSetting(t,"instance","dynamic_configuration")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Allow transferring configuration to DB with the subsequent customization from Admin API")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max account fields"}},[a("el-input-number",{attrs:{value:e.instance.max_account_fields,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","max_account_fields")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The maximum number of custom fields in the user profile (Default: 4)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max remote account fields"}},[a("el-input-number",{attrs:{value:e.instance.max_remote_account_fields,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","max_remote_account_fields")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The maximum number of custom fields in the remote user profile (Default: 10)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Account field name length"}},[a("el-input-number",{attrs:{value:e.instance.account_field_name_length,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","account_field_name_length")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("An account field name maximum length (Default: 255)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Account field value length"}},[a("el-input-number",{attrs:{value:e.instance.account_field_value_length,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"instance","account_field_value_length")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("An account field value maximum length (Default: 255)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"External user synchronization"}},[a("el-switch",{attrs:{value:e.instance.external_user_synchronization},on:{change:function(t){return e.updateSetting(t,"instance","external_user_synchronization")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enabling following/followers counters synchronization for external users.")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"uriSchemes",attrs:{model:e.uriSchemes,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"URI schemes"}},[a("el-select",{attrs:{value:e.uriSchemes.valid_schemes||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"uri_schemes","valid_schemes")}}},e._l(e.uriSchemesOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of the scheme part that is considered valid to be an URL")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"adminToken",attrs:{model:e.adminToken,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Admin token"}},[a("el-input",{attrs:{value:e.adminToken.value},on:{input:function(t){return e.updateSetting(t,"admin_token","value")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("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 "),a("span",{staticClass:"code"},[e._v("admin_token")]),e._v(" parameter.")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"scheduledActivity",attrs:{model:e.scheduledActivity,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Scheduled activity:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Daily user limit"}},[a("el-input-number",{attrs:{value:e.scheduledActivity.daily_user_limit,step:5,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"Pleroma.ScheduledActivity","daily_user_limit")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The number of scheduled activities a user is allowed to create in a single day (Default: 25)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Total user limit"}},[a("el-input-number",{attrs:{value:e.scheduledActivity.total_user_limit,step:10,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"Pleroma.ScheduledActivity","total_user_limit")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The number of scheduled activities a user is allowed to create in total (Default: 300)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:e.scheduledActivity.enabled},on:{change:function(t){return e.updateSetting(t,"Pleroma.ScheduledActivity","enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Whether scheduled activities are sent to the job queue to be executed")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"fetchInitialPosts",attrs:{model:e.fetchInitialPosts,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Fetch initial posts"}},[a("el-switch",{attrs:{value:e.fetchInitialPosts.enabled},on:{change:function(t){return e.updateSetting(t,"fetch_initial_posts","enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("If enabled, when a new user is federated with, fetch some of their latest posts")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Pages"}},[a("el-input-number",{attrs:{value:e.fetchInitialPosts.pages,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"fetch_initial_posts","pages")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The amount of pages to fetch")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"suggestions",attrs:{model:e.suggestions,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Suggestions:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:e.suggestions.enabled},on:{change:function(t){return e.updateSetting(t,"suggestions","enabled")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Third party engine"}},[a("el-input",{attrs:{value:e.suggestions.third_party_engine},on:{input:function(t){return e.updateSetting(t,"suggestions","third_party_engine")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Timeout"}},[a("el-input-number",{attrs:{value:e.suggestions.timeout,step:1e3,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"suggestions","timeout")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Limit"}},[a("el-input-number",{attrs:{value:e.suggestions.limit,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"suggestions","limit")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Web"}},[a("el-input",{attrs:{value:e.suggestions.web},on:{input:function(t){return e.updateSetting(t,"suggestions","web")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"pleromaUser",attrs:{model:e.pleromaUser,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Restricted nicknames"}},[a("el-select",{attrs:{value:e.pleromaUser.restricted_nicknames||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"Pleroma.User","restricted_nicknames")}}},e._l(e.restrictedNicknamesOptions,function(e){return a("el-option",{key:e.value,attrs:{value:e.value}})}),1)],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));K.options.__file="Instance.vue";var Q=K.exports,J={name:"JobQueue",computed:c()({},Object(p.b)(["queues","retryQueue"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},X=(a("lNpP"),Object(v.a)(J,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"queues",attrs:{model:e.queues,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Job queues:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Outgoing federation"}},[a("el-input-number",{attrs:{value:e.queues.federator_outgoing,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"queues","federator_outgoing")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Incoming federation"}},[a("el-input-number",{attrs:{value:e.queues.federator_incoming,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"queues","federator_incoming")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Email sender"}},[a("el-input-number",{attrs:{value:e.queues.mailer,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"queues","mailer")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Transmogrifier"}},[a("el-input-number",{attrs:{value:e.queues.transmogrifier,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"queues","transmogrifier")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Web push notifications"}},[a("el-input-number",{attrs:{value:e.queues.web_push,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"queues","web_push")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Scheduled activities"}},[a("el-input-number",{attrs:{value:e.queues.scheduled_activities,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"queues","scheduled_activities")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Background"}},[a("el-input-number",{attrs:{value:e.queues.background,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"queues","background")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"retryQueue",attrs:{model:e.retryQueue,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Retry queue:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:e.retryQueue.enabled},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Federator.RetryQueue","enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("If set to true, failed federation jobs will be retried")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max jobs"}},[a("el-input-number",{attrs:{value:e.retryQueue.max_jobs,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Federator.RetryQueue","max_jobs")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The maximum amount of parallel federation jobs running at the same time.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Initial timeout (s)"}},[a("el-input-number",{attrs:{value:e.retryQueue.initial_timeout,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Federator.RetryQueue","initial_timeout")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The initial timeout in seconds")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max retries"}},[a("el-input-number",{attrs:{value:e.retryQueue.max_retries,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Federator.RetryQueue","max_retries")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The maximum number of times a federation job is retried")])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));X.options.__file="JobQueue.vue";var Y=X.exports,Z={name:"Logger",computed:c()({},Object(p.b)(["consoleLogger","exsyslogger","level","loggerBackends","meta","webhookUrl"]),{loggerBackendsValue:function(){return this.loggerBackends.value?this.loggerBackends.value.map(function(e){return JSON.stringify(e)}):[]},loggerBackendsOptions:function(){return L.loggerBackendsOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{processNestedData:function(e,t,a,s){var n=c()({},this.$store.state.settings.settings[t][a],o()({},s,e));this.updateSetting(n,t,a)},updateloggerBackends:function(e,t,a){var s=e.map(function(e){return JSON.parse(e)});this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,s)})},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},ee=(a("mADP"),Object(v.a)(Z,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"loggerBackends",attrs:{model:e.loggerBackends,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Backends"}},[a("el-select",{attrs:{value:e.loggerBackendsValue,multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateloggerBackends(t,"backends","value")}}},e._l(e.loggerBackendsOptions,function(e,t){return a("el-option",{key:t,attrs:{label:e.label,value:e.value}})}),1),e._v(" "),a("p",{staticClass:"expl"},[a("span",{staticClass:"code"},[e._v(":console")]),e._v(" is used to send logs to stdout, "),a("span",{staticClass:"code"},[e._v("{ExSyslogger, :ex_syslogger}")]),e._v(" to log to syslog, and "),a("span",{staticClass:"code"},[e._v("Quack.Logger")]),e._v(" to log to Slack")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"consoleLogger",attrs:{model:e.consoleLogger,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Console logger:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Level"}},[a("el-select",{attrs:{value:e.consoleLogger.level,clearable:""},on:{change:function(t){return e.updateSetting(t,"console","level")}}},[a("el-option",{attrs:{value:":debug",label:":debug - for debug-related messages"}}),e._v(" "),a("el-option",{attrs:{value:":info",label:":info - for information of any kind"}}),e._v(" "),a("el-option",{attrs:{value:":warn",label:":warn - for warnings"}}),e._v(" "),a("el-option",{attrs:{value:":error",label:":error - for errors"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("The level to be logged by this backend. Note that messages are filtered by the general\n "),a("span",{staticClass:"code"},[e._v(":level")]),e._v(" configuration for the "),a("span",{staticClass:"code"},[e._v(":logger")]),e._v(" application first.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Format"}},[a("el-input",{attrs:{value:e.consoleLogger.format},on:{input:function(t){return e.updateSetting(t,"console","format")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The format message used to print logs. ")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Metadata"}},[a("el-select",{attrs:{value:e.consoleLogger.metadata||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"console","metadata")}}},[a("el-option",{attrs:{value:":all"}}),e._v(" "),a("el-option",{attrs:{value:":request_id"}}),e._v(" "),a("el-option",{attrs:{value:":line"}}),e._v(" "),a("el-option",{attrs:{value:":user_id"}}),e._v(" "),a("el-option",{attrs:{value:":application"}}),e._v(" "),a("el-option",{attrs:{value:":function"}}),e._v(" "),a("el-option",{attrs:{value:":file"}}),e._v(" "),a("el-option",{attrs:{value:":pid"}}),e._v(" "),a("el-option",{attrs:{value:":crash_reason"}}),e._v(" "),a("el-option",{attrs:{value:":initial_call"}}),e._v(" "),a("el-option",{attrs:{value:":registered_name"}}),e._v(" "),a("el-option",{attrs:{value:":none"}})],1)],1),e._v(" "),a("el-form-item",{attrs:{label:"Device"}},[a("el-input",{attrs:{value:e.consoleLogger.device},on:{input:function(t){return e.updateSetting(t,"console","device")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The device to log error messages to. Defaults to "),a("span",{staticClass:"code"},[e._v(":user")]),e._v("\n but can be changed to something else such as "),a("span",{staticClass:"code"},[e._v(":standard_error")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max buffer"}},[a("el-input-number",{attrs:{value:e.consoleLogger.max_buffer,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"console","max_buffer")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Maximum events to buffer while waiting for a confirmation from the IO device (default: 32). Once the buffer is full, the backend will block until a confirmation is received.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Colors:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:e.consoleLogger.colors.enabled},on:{change:function(t){return e.processNestedData(t,"console","colors","enabled")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Debug message"}},[a("el-input",{attrs:{value:e.consoleLogger.colors.debug},on:{input:function(t){return e.processNestedData(t,"console","colors","debug")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Defaults to: "),a("span",{staticClass:"code"},[e._v(":cyan")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Info message"}},[a("el-input",{attrs:{value:e.consoleLogger.colors.info},on:{input:function(t){return e.processNestedData(t,"console","colors","info")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Defaults to: "),a("span",{staticClass:"code"},[e._v(":normal")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Warn message"}},[a("el-input",{attrs:{value:e.consoleLogger.colors.warn},on:{input:function(t){return e.processNestedData(t,"console","colors","warn")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Defaults to: "),a("span",{staticClass:"code"},[e._v(":yellow")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Error message"}},[a("el-input",{attrs:{value:e.consoleLogger.colors.error},on:{input:function(t){return e.processNestedData(t,"console","colors","error")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Defaults to: "),a("span",{staticClass:"code"},[e._v(":red")])])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"exsyslogger",attrs:{model:e.exsyslogger,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"ExSyslogger:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Level"}},[a("el-select",{attrs:{value:e.exsyslogger.level,clearable:""},on:{change:function(t){return e.updateSetting(t,"ex_syslogger","level")}}},[a("el-option",{attrs:{value:":debug",label:":debug - for debug-related messages"}}),e._v(" "),a("el-option",{attrs:{value:":info",label:":info - for information of any kind"}}),e._v(" "),a("el-option",{attrs:{value:":warn",label:":warn - for warnings"}}),e._v(" "),a("el-option",{attrs:{value:":error",label:":error - for errors"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("Logging level. It defaults to "),a("span",{staticClass:"code"},[e._v(":info.")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Format"}},[a("el-input",{attrs:{value:e.exsyslogger.format},on:{input:function(t){return e.updateSetting(t,"ex_syslogger","format")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The format message used to print logs.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Formatter"}},[a("el-input",{attrs:{value:e.exsyslogger.formatter},on:{input:function(t){return e.updateSetting(t,"ex_syslogger","formatter")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Formatter that will be used to format the log. It default to "),a("span",{staticClass:"code"},[e._v("Logger.Formatter")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Metadata"}},[a("el-select",{attrs:{value:e.exsyslogger.metadata||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"ex_syslogger","metadata")}}},[a("el-option",{attrs:{value:":all"}}),e._v(" "),a("el-option",{attrs:{value:":request_id"}}),e._v(" "),a("el-option",{attrs:{value:":line"}}),e._v(" "),a("el-option",{attrs:{value:":user_id"}}),e._v(" "),a("el-option",{attrs:{value:":application"}}),e._v(" "),a("el-option",{attrs:{value:":function"}}),e._v(" "),a("el-option",{attrs:{value:":file"}}),e._v(" "),a("el-option",{attrs:{value:":pid"}}),e._v(" "),a("el-option",{attrs:{value:":crash_reason"}}),e._v(" "),a("el-option",{attrs:{value:":initial_call"}}),e._v(" "),a("el-option",{attrs:{value:":registered_name"}}),e._v(" "),a("el-option",{attrs:{value:":none"}})],1)],1),e._v(" "),a("el-form-item",{attrs:{label:"Ident"}},[a("el-input",{attrs:{value:e.exsyslogger.ident},on:{input:function(t){return e.updateSetting(t,"ex_syslogger","ident")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A string that’s prepended to every message, and is typically set to the app name. It defaults to "),a("span",{staticClass:"code"},[e._v("Elixir")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Facility"}},[a("el-input",{attrs:{value:e.exsyslogger.facility},on:{input:function(t){return e.updateSetting(t,"ex_syslogger","facility")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Syslog facility to be used. It defaults to "),a("span",{staticClass:"code"},[e._v(":local0")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Options"}},[a("el-select",{attrs:{value:e.exsyslogger.option||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"ex_syslogger","option")}}},[a("el-option",{attrs:{value:":pid"}}),e._v(" "),a("el-option",{attrs:{value:":cons"}}),e._v(" "),a("el-option",{attrs:{value:":odelay"}}),e._v(" "),a("el-option",{attrs:{value:":ndelay"}}),e._v(" "),a("el-option",{attrs:{value:":perror"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("Syslog option to be used. It defaults to "),a("span",{staticClass:"code"},[e._v(":ndelay.")])])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"webhookUrl",attrs:{model:e.webhookUrl,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Quack logger:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Webhook URL"}},[a("el-input",{attrs:{value:e.webhookUrl.value},on:{input:function(t){return e.updateSetting(t,"webhook_url","value")}}})],1)],1),e._v(" "),a("el-form",{ref:"level",attrs:{model:e.level,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Level"}},[a("el-select",{attrs:{value:e.level.value,clearable:""},on:{change:function(t){return e.updateSetting(t,"level","value")}}},[a("el-option",{attrs:{value:":debug",label:":debug - for debug-related messages"}}),e._v(" "),a("el-option",{attrs:{value:":info",label:":info - for information of any kind"}}),e._v(" "),a("el-option",{attrs:{value:":warn",label:":warn - for warnings"}}),e._v(" "),a("el-option",{attrs:{value:":error",label:":error - for errors"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("Logging level. It defaults to "),a("span",{staticClass:"code"},[e._v(":info.")])])],1)],1),e._v(" "),a("el-form",{ref:"meta",attrs:{model:e.meta,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Metadata"}},[a("el-select",{attrs:{value:e.meta.value||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"meta","value")}}},[a("el-option",{attrs:{value:":all"}}),e._v(" "),a("el-option",{attrs:{value:":module"}}),e._v(" "),a("el-option",{attrs:{value:":function"}}),e._v(" "),a("el-option",{attrs:{value:":file"}}),e._v(" "),a("el-option",{attrs:{value:":application"}}),e._v(" "),a("el-option",{attrs:{value:":line"}}),e._v(" "),a("el-option",{attrs:{value:":pid"}}),e._v(" "),a("el-option",{attrs:{value:":crash_reason"}}),e._v(" "),a("el-option",{attrs:{value:":initial_call"}}),e._v(" "),a("el-option",{attrs:{value:":registered_name"}}),e._v(" "),a("el-option",{attrs:{value:":none"}})],1)],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));ee.options.__file="Logger.vue";var te=ee.exports,ae={name:"Mailer",components:{editor:M.a},computed:c()({},Object(p.b)(["emailNotifications","mailer","userEmail"]),{editorContent:{get:function(){return this.mailer.dkim?this.mailer.dkim[0]:""},set:function(e){this.updateSetting([e],"Pleroma.Emails.Mailer","dkim")}},adapterOptions:function(){return L.adapterOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{processNestedData:function(e,t,a,s){var n=c()({},this.$store.state.settings.settings[t][a],o()({},s,e));this.updateSetting(n,t,a)},sendEmailLogo:function(e){var t=e.file;this.$store.dispatch("UploadMedia",{file:t,tab:"Pleroma.Emails.UserEmail",inputName:"logo"})},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},se=(a("PygS"),Object(v.a)(ae,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"mailer",attrs:{model:e.mailer,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:e.mailer.enabled},on:{change:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Allows to enable or disable sending emails. Defaults to false.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Adapter"}},[a("el-select",{attrs:{value:e.mailer.adapter,clearable:""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","adapter")}}},e._l(e.adapterOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),"Swoosh.Adapters.Sendmail"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"CMD Path"}},[a("el-input",{attrs:{value:e.mailer.cmd_path},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","cmd_path")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("E. g. "),a("span",{staticClass:"code"},[e._v('/usr/bin/sendmail"')])])],1),e._v(" "),a("el-form-item",{attrs:{label:"CMD Args"}},[a("el-input",{attrs:{value:e.mailer.cmd_args},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","cmd_args")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("E. g. "),a("span",{staticClass:"code"},[e._v("-N delay,failure,success")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Qmail"}},[a("el-switch",{attrs:{value:e.mailer.qmail},on:{change:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","qmail")}}})],1)],1):e._e(),e._v(" "),"Swoosh.Adapters.SMTP"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"Relay"}},[a("el-input",{attrs:{value:e.mailer.relay},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","relay")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("E. g. "),a("span",{staticClass:"code"},[e._v("smtp.avengers.com")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Username"}},[a("el-input",{attrs:{value:e.mailer.username},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","username")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Password"}},[a("el-input",{attrs:{value:e.mailer.password},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","password")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"SSL"}},[a("el-switch",{attrs:{value:e.mailer.ssl},on:{change:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","ssl")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"TLS"}},[a("el-input",{attrs:{value:e.mailer.tls},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","tls")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("E.g. "),a("span",{staticClass:"code"},[e._v(":always")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Auth"}},[a("el-input",{attrs:{value:e.mailer.auth},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","auth")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("E.g. "),a("span",{staticClass:"code"},[e._v(":always")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Port"}},[a("el-input",{attrs:{value:e.mailer.port},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","port")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"DKIM"}},[a("editor",{attrs:{height:"150",width:"100%",lang:"elixir",theme:"chrome"},model:{value:e.editorContent,callback:function(t){e.editorContent=t},expression:"editorContent"}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Retries"}},[a("el-input-number",{attrs:{value:e.mailer.retries,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","retries")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"No mx lookups"}},[a("el-switch",{attrs:{value:e.mailer.no_mx_lookups},on:{change:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","no_mx_lookups")}}})],1)],1):e._e(),e._v(" "),"Swoosh.Adapters.Sendgrid"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:e.mailer.api_key},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","api_key")}}})],1)],1):e._e(),e._v(" "),"Swoosh.Adapters.Mandrill"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:e.mailer.api_key},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","api_key")}}})],1)],1):e._e(),e._v(" "),"Swoosh.Adapters.Mailgun"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:e.mailer.api_key},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","api_key")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Domain"}},[a("el-input",{attrs:{value:e.mailer.domain},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","domain")}}})],1)],1):e._e(),e._v(" "),"Swoosh.Adapters.Mailjet"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:e.mailer.api_key},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","api_key")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Secret"}},[a("el-input",{attrs:{value:e.mailer.secret},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","secret")}}})],1)],1):e._e(),e._v(" "),"Swoosh.Adapters.Postmark"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:e.mailer.api_key},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","api_key")}}})],1)],1):e._e(),e._v(" "),"Swoosh.Adapters.SparkPost"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:e.mailer.api_key},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","api_key")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Endpoint"}},[a("el-input",{attrs:{value:e.mailer.endpoint},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","endpoint")}}})],1)],1):e._e(),e._v(" "),"Swoosh.Adapters.AmazonSES"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"Region"}},[a("el-input",{attrs:{value:e.mailer.region},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","region")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Access key"}},[a("el-input",{attrs:{value:e.mailer.access_key},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","access_key")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Secret"}},[a("el-input",{attrs:{value:e.mailer.secret},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","secret")}}})],1)],1):e._e(),e._v(" "),"Swoosh.Adapters.Dyn"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:e.mailer.api_key},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","api_key")}}})],1)],1):e._e(),e._v(" "),"Swoosh.Adapters.SocketLabs"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"Server ID"}},[a("el-input",{attrs:{value:e.mailer.server_id},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","server_id")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"API key"}},[a("el-input",{attrs:{value:e.mailer.api_key},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","api_key")}}})],1)],1):e._e(),e._v(" "),"Swoosh.Adapters.Gmail"===e.mailer.adapter?a("div",[a("el-form-item",{attrs:{label:"Access token"}},[a("el-input",{attrs:{value:e.mailer.access_token},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.Mailer","access_token")}}})],1)],1):e._e()],1),e._v(" "),a("el-form",{ref:"emailNotifications",attrs:{model:e.emailNotifications,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Email notifications"}}),e._v(" "),a("el-form-item",{attrs:{label:"Digest:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Active"}},[a("el-switch",{attrs:{value:e.emailNotifications.digest.active},on:{change:function(t){return e.processNestedData(t,"email_notifications","digest","active")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Globally enable or disable digest emails.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Schedule"}},[a("el-input",{attrs:{value:e.emailNotifications.digest.schedule},on:{input:function(t){return e.processNestedData(t,"email_notifications","digest","schedule")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("When to send digest email, in "),a("a",{attrs:{href:"https://en.wikipedia.org/wiki/Cron",rel:"nofollow noreferrer noopener",target:"_blank"}},[e._v("\n crontab format\n ")]),e._v('.\n "0 0 * * 0" is the default, meaning "once a week at midnight on Sunday morning"')])],1),e._v(" "),a("el-form-item",{attrs:{label:"Interval"}},[a("el-input-number",{attrs:{value:e.emailNotifications.digest.interval,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"email_notifications","digest","interval")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Minimum interval between digest emails to one user.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Inactivity threshold"}},[a("el-input-number",{attrs:{value:e.emailNotifications.digest.inactivity_threshold,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"email_notifications","digest","inactivity_threshold")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Minimum user inactivity threshold.")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"userEmail",attrs:{model:e.userEmail,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Digest template styles:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Logo"}},[a("el-input",{attrs:{value:e.userEmail.logo},on:{input:function(t){return e.updateSetting(t,"Pleroma.Emails.UserEmail","logo")}}}),e._v(" "),a("div",{staticClass:"upload-container"},[a("p",{staticClass:"text"},[e._v("or")]),e._v(" "),a("el-upload",{attrs:{"http-request":e.sendEmailLogo,multiple:!1,"show-file-list":!1,action:"/api/v1/media"}},[a("el-button",{attrs:{size:"small",type:"primary"}},[e._v("Click to upload")])],1)],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("A path to a custom logo.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Styling:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Link color"}},[a("el-input",{attrs:{value:e.userEmail.styling.link_color},on:{input:function(t){return e.processNestedData(t,"Pleroma.Emails.UserEmail","styling","link_color")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Background color"}},[a("el-input",{attrs:{value:e.userEmail.styling.background_color},on:{input:function(t){return e.processNestedData(t,"Pleroma.Emails.UserEmail","styling","background_color")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Content background color"}},[a("el-input",{attrs:{value:e.userEmail.styling.content_background_color},on:{input:function(t){return e.processNestedData(t,"Pleroma.Emails.UserEmail","styling","content_background_color")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Header color"}},[a("el-input",{attrs:{value:e.userEmail.styling.header_color},on:{input:function(t){return e.processNestedData(t,"Pleroma.Emails.UserEmail","styling","header_color")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Text color"}},[a("el-input",{attrs:{value:e.userEmail.styling.text_color},on:{input:function(t){return e.processNestedData(t,"Pleroma.Emails.UserEmail","styling","text_color")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Text muted color"}},[a("el-input",{attrs:{value:e.userEmail.styling.text_muted_color},on:{input:function(t){return e.processNestedData(t,"Pleroma.Emails.UserEmail","styling","text_muted_color")}}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));se.options.__file="Mailer.vue";var ne=se.exports,ie={name:"MediaProxy",computed:c()({},Object(p.b)(["mediaProxy"]),{inlineContentTypes:function(){return Array.isArray(this.mediaProxy.proxy_opts.inline_content_types)?"whitelistedTypeArray":this.mediaProxy.proxy_opts.inline_content_types},http:function(){return this.mediaProxy.proxy_opts.http||{}},reqHeadersOptions:function(){return this.mediaProxySettings.reqHeadersOptions},hackneyPoolsOptions:function(){return L.hackneyPoolsOptions},whitelistedContentTypes:function(){return Array.isArray(this.mediaProxy.proxy_opts.inline_content_types)?this.mediaProxy.proxy_opts.inline_content_types:[]},whitelistedContentTypesOptions:function(){return L.whitelistedContentTypesOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{getPoolExpl:function(e){var t=this.hackneyPoolsOptions.find(function(t){return t.value===e});return t?"Max connections: "+t.max_connections+", timeout: "+t.timeout:""},processHttpSettings:function(e,t,a,s,n){var i=c()({},this.mediaProxy[a][s],o()({},n,e));this.processNestedData(i,t,a,s)},processNestedData:function(e,t,a,s){var n=c()({},this.$store.state.settings.settings[t][a],o()({},s,e));this.updateSetting(n,t,a)},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},le=(a("UdS4"),Object(v.a)(ie,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-form",{ref:"mediaProxy",attrs:{model:e.mediaProxy,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:e.mediaProxy.enabled},on:{change:function(t){return e.updateSetting(t,"media_proxy","enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Enables proxying of remote media to the instance’s proxy")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Base URL"}},[a("el-input",{attrs:{value:e.mediaProxy.base_url},on:{input:function(t){return e.updateSetting(t,"media_proxy","base_url")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts.")])],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"Proxy options:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Redirect on failure"}},[a("el-switch",{attrs:{value:e.mediaProxy.proxy_opts.redirect_on_failure},on:{change:function(t){return e.processNestedData(t,"media_proxy","proxy_opts","redirect_on_failure")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Redirects the client to the real remote URL if there's any HTTP errors. Any error during body processing will not be redirected as the response is chunked")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max body length (MB)"}},[a("el-input-number",{attrs:{value:e.mediaProxy.proxy_opts.max_body_length/1048576,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(1048576*t,"media_proxy","proxy_opts","max_body_length")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Limits the content length to be approximately the specified length")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max read duration (s)"}},[a("el-input-number",{attrs:{value:e.mediaProxy.proxy_opts.max_read_duration,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"media_proxy","proxy_opts","max_read_duration")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The total time the connection is allowed to read from the remote upstream")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Inline content types"}},[a("el-select",{attrs:{value:e.inlineContentTypes,clearable:""},on:{change:function(t){return e.processNestedData(t,"media_proxy","proxy_opts","inline_content_types")}}},[a("el-option",{attrs:{value:!0,label:"True"}}),e._v(" "),a("el-option",{attrs:{value:!1,label:"False"}}),e._v(" "),a("el-option",{attrs:{value:"whitelistedTypeArray",label:"List of whitelisted content types"}}),e._v(" "),a("el-option",{attrs:{value:"keepUserAgent",label:"Forward client's user-agent to the upstream"}})],1),e._v(" "),!0===e.inlineContentTypes?a("p",{staticClass:"expl"},[e._v("Will not alter "),a("span",{staticClass:"code"},[e._v("content-disposition")]),e._v(" (up to the upstream)")]):e._e(),e._v(" "),e.inlineContentTypes?e._e():a("p",{staticClass:"expl"},[e._v("Will add "),a("span",{staticClass:"code"},[e._v("content-disposition: attachment")]),e._v(" to any request")]),e._v(" "),"keepUserAgent"===e.inlineContentTypes?a("p",{staticClass:"expl"},[e._v("\n Will forward the client's user-agent to the upstream. This may be useful if the upstream is\n doing content transformation (encoding, …) depending on the request.\n ")]):e._e()],1),e._v(" "),"whitelistedTypeArray"===e.inlineContentTypes?a("el-form-item",{attrs:{label:"Whitelisted content types"}},[a("el-select",{attrs:{value:e.whitelistedContentTypes,multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.processNestedData(t,"media_proxy","proxy_opts","inline_content_types")}}},e._l(e.whitelistedContentTypesOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1)],1):e._e(),e._v(" "),a("el-form-item",{attrs:{label:"Request headers"}},[a("el-select",{attrs:{value:e.mediaProxy.proxy_opts.req_headers||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.processNestedData(t,"media_proxy","proxy_opts","req_headers")}}}),e._v(" "),a("p",{staticClass:"expl"},[a("span",{staticClass:"code"},[e._v("resp_headers")]),e._v(" additional headers")])],1),e._v(" "),a("el-form-item",{attrs:{label:"HTTP:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Follow redirect"}},[a("el-switch",{attrs:{value:e.http.follow_redirect},on:{change:function(t){return e.processHttpSettings(t,"media_proxy","proxy_opts","http","follow_redirect")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Pool"}},[a("el-select",{attrs:{value:e.http.pool,clearable:""},on:{change:function(t){return e.processHttpSettings(t,"media_proxy","proxy_opts","http","pool")}}},e._l(e.hackneyPoolsOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1),e._v(" "),a("p",{staticClass:"expl"},[e._v(e._s(e.getPoolExpl(e.http.pool)))])],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"Whitelist"}},[a("el-select",{attrs:{value:e.mediaProxy.whitelist||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"media_proxy","whitelist")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of domains to bypass the mediaproxy")])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)},[],!1,null,null,null));le.options.__file="MediaProxy.vue";var re=le.exports,oe={name:"Metadata",computed:c()({},Object(p.b)(["metadata","richMedia"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},ue=(a("apN7"),Object(v.a)(oe,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"metadata",attrs:{model:e.metadata,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Providers"}},[a("el-select",{attrs:{value:e.metadata.providers||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Metadata","providers")}}},[a("el-option",{attrs:{value:"Pleroma.Web.Metadata.Providers.OpenGraph"}}),e._v(" "),a("el-option",{attrs:{value:"Pleroma.Web.Metadata.Providers.TwitterCard"}}),e._v(" "),a("el-option",{attrs:{value:"Pleroma.Web.Metadata.Providers.RelMe"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("A list of metadata providers to enable.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Unfurl NSFW"}},[a("el-switch",{attrs:{value:e.metadata.unfurl_nsfw},on:{change:function(t){return e.updateSetting(t,"Pleroma.Web.Metadata","unfurl_nsfw")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("If set to true nsfw attachments will be shown in previews.")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"richMedia",attrs:{model:e.richMedia,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Rich media:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Enabled"}},[a("el-switch",{attrs:{value:e.richMedia.enabled},on:{change:function(t){return e.updateSetting(t,"rich_media","enabled")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("If enabled the instance will parse metadata from attached links to generate link previews.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Ignore hosts"}},[a("el-select",{attrs:{value:e.richMedia.ignore_hosts||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"rich_media","ignore_hosts")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of hosts which will be ignored by the metadata parser.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Ignore TLD"}},[a("el-select",{attrs:{value:e.richMedia.ignore_tld||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"rich_media","ignore_tld")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("List TLDs (top-level domains) which will ignore for parse metadata.\n Default is "),a("span",{staticClass:"code"},[e._v('["local", "localdomain", "lan"]')])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Parsers"}},[a("el-select",{attrs:{value:e.richMedia.parsers||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"rich_media","parsers")}}},[a("el-option",{attrs:{value:"Pleroma.Web.RichMedia.Parsers.TwitterCard"}}),e._v(" "),a("el-option",{attrs:{value:"Pleroma.Web.RichMedia.Parsers.OGP"}}),e._v(" "),a("el-option",{attrs:{value:"Pleroma.Web.RichMedia.Parsers.OEmbed"}})],1),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of Rich Media parsers")])],1),e._v(" "),a("el-form-item",{attrs:{label:"TTL Setters"}},[a("el-select",{attrs:{value:e.richMedia.ttl_setters||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"rich_media","ttl_setters")}}},[a("el-option",{attrs:{value:"Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl"}})],1)],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));ue.options.__file="Metadata.vue";var ce=ue.exports,pe={name:"MRF",data:function(){return{removableDoubleOptions:["replace","mrfUserAllowlist"],removableSingleOptions:["keywordReject","federatedTimelineRemoval"]}},computed:c()({},Object(p.b)(["mrfHellthread","mrfKeyword","mrfMention","mrfNormalizeMarkup","mrfSimple","mrfSubchain","mrfRejectnonpublic","mrfUserAllowlist","mrfVocabulary"]),{matchActor:function(){var e=this;return Object.keys(this.mrfSubchain.match_actor).map(function(t){return[t,e.mrfSubchain.match_actor[t]]})},policiesOptions:function(){return L.rewritePolicyOptions},replacePatterns:function(){var e=this;return Object.keys(this.mrfKeyword.replace).map(function(t){return[t,e.mrfKeyword.replace[t]]})},userAllowlist:function(){var e=this;return Object.keys(this.mrfUserAllowlist).map(function(t){return[t,e.mrfUserAllowlist[t]]})},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{addMrfSubchainRow:function(){var e=this.matchActor.reduce(function(e,t,a){return c()({},e,o()({},t[0],t[1]))},{});this.updateSetting(c()({},e,{"":[]}),"mrf_subchain","match_actor")},addMrfUserAllowlistRow:function(){var e=this.userAllowlist.reduce(function(e,t,a){return c()({},e,o()({},t[0],t[1]))},{});this.$store.dispatch("RewriteConfig",{data:c()({},e,{"":[]}),tab:"mrf_user_allowlist"})},addReplaceRow:function(){var e=this.replacePatterns.reduce(function(e,t,a){return c()({},e,o()({},t[0],t[1]))},{});this.updateSetting(c()({},e,{"":""}),"mrf_keyword","replace")},deleteMrfSubchainRow:function(e){var t=this.matchActor.filter(function(t,a){return e!==a}).reduce(function(e,t,a){return c()({},e,o()({},t[0],t[1]))},{});this.updateSetting(t,"mrf_subchain","match_actor")},deleteMrfUserAllowlistRow:function(e){var t=this.userAllowlist.filter(function(t,a){return e!==a}).reduce(function(e,t,a){return c()({},e,o()({},t[0],t[1]))},{});this.$store.dispatch("RewriteConfig",{data:t,tab:"mrf_user_allowlist"})},deleteReplaceRow:function(e){var t=this.replacePatterns.filter(function(t,a){return e!==a}).reduce(function(e,t,a){return c()({},e,o()({},t[0],t[1]))},{});this.updateSetting(t,"mrf_keyword","replace")},parseMrfSubchain:function(e,t,a){var s=this.matchActor.reduce(function(s,n,i){return a===i?"regExp"===t?c()({},s,o()({},e,n[1])):c()({},s,o()({},n[0],e)):c()({},s,o()({},n[0],n[1]))},{});this.updateSetting(s,"mrf_subchain","match_actor")},parseMrfUserAllowlist:function(e,t,a){var s=this.userAllowlist.reduce(function(s,n,i){return a===i?"domain"===t?c()({},s,o()({},e,n[1])):c()({},s,o()({},n[0],e)):c()({},s,o()({},n[0],n[1]))},{});this.$store.dispatch("RewriteConfig",{data:s,tab:"mrf_user_allowlist"})},parseReplace:function(e,t,a){var s=this.replacePatterns.reduce(function(s,n,i){return a===i?"key"===t?c()({},s,o()({},e,n[1])):c()({},s,o()({},n[0],e)):c()({},s,o()({},n[0],n[1]))},{});this.updateSetting(s,"mrf_keyword","replace")},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},me=(a("h9z7"),Object(v.a)(pe,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"mrfSimple",attrs:{model:e.mrfSimple,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"MRF Simple:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Media removal"}},[a("el-select",{attrs:{value:e.mrfSimple.media_removal||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_simple","media_removal")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of instances to remove medias from")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Media NSFW"}},[a("el-select",{attrs:{value:e.mrfSimple.media_nsfw||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_simple","media_nsfw")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of instances to put medias as NSFW (sensitive)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Federated timeline removal"}},[a("el-select",{attrs:{value:e.mrfSimple.federated_timeline_removal||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_simple","federated_timeline_removal")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of instances to remove from Federated (aka The Whole Known Network) Timeline")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Reject"}},[a("el-select",{attrs:{value:e.mrfSimple.reject||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_simple","reject")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of instances to reject any activities from")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Accept"}},[a("el-select",{attrs:{value:e.mrfSimple.accept||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_simple","accept")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of instances to accept any activities from")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Report removal"}},[a("el-select",{attrs:{value:e.mrfSimple.report_removal||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_simple","report_removal")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of instances to reject reports from")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Avatar removal"}},[a("el-select",{attrs:{value:e.mrfSimple.avatar_removal||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_simple","avatar_removal")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of instances to strip avatars from")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Banner removal"}},[a("el-select",{attrs:{value:e.mrfSimple.banner_removal||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_simple","banner_removal")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("List of instances to strip banners from")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"mrfRejectnonpublic",attrs:{model:e.mrfRejectnonpublic,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"MRF Reject non public:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Allow followers-only posts"}},[a("el-switch",{attrs:{value:e.mrfRejectnonpublic.allow_followersonly},on:{change:function(t){return e.updateSetting(t,"mrf_rejectnonpublic","allow_followersonly")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Allow direct messages"}},[a("el-switch",{attrs:{value:e.mrfRejectnonpublic.allow_direct},on:{change:function(t){return e.updateSetting(t,"mrf_rejectnonpublic","allow_direct")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"mrfHellthread",attrs:{model:e.mrfHellthread,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"MRF Hellthread:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Delist threshold"}},[a("el-input-number",{attrs:{value:e.mrfHellthread.delist_threshold,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"mrf_hellthread","delist_threshold")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Number of mentioned users after which the message gets delisted\n (the message can still be seen, but it will not show up in public timelines and mentioned users won't get notifications about it).\n Set to 0 to disable.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Reject threshold"}},[a("el-input-number",{attrs:{value:e.mrfHellthread.reject_threshold,step:1,min:0,size:"large"},on:{change:function(t){return e.updateSetting(t,"mrf_hellthread","reject_threshold")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Number of mentioned users after which the messaged gets rejected. Set to 0 to disable.")])],1)],1),e._v(" "),a("el-form",{ref:"mrfKeyword",attrs:{model:e.mrfKeyword,"label-width":e.labelWidth}},[a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"MRF Keyword:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Reject"}},[a("el-select",{attrs:{value:e.mrfKeyword.reject||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_keyword","reject")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A list of patterns which result in message being rejected")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Federated timeline removal"}},[a("el-select",{attrs:{value:e.mrfKeyword.federated_timeline_removal,multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_keyword","federated_timeline_removal")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A list of patterns which result in message being removed from federated timelines (a.k.a unlisted)")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Replace"}},[e._l(e.replacePatterns,function(t,s){var n=t[0],i=t[1];return a("div",{key:s,staticClass:"setting-input"},[a("el-input",{staticClass:"name-input",attrs:{value:n,placeholder:"pattern"},on:{input:function(t){return e.parseReplace(t,"key",s)}}}),e._v(" :\n "),a("el-input",{staticClass:"value-input",attrs:{value:i,placeholder:"replacement"},on:{input:function(t){return e.parseReplace(t,"value",s)}}}),e._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.deleteReplaceRow(s)}}})],1)}),e._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:e.addReplaceRow}})],2)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"mrfSubchain",attrs:{model:e.mrfSubchain,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"MRF Subchain:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Match actor:"}},[e._l(e.matchActor,function(t,s){var n=t[0],i=t[1];return a("div",{key:s,staticClass:"setting-input"},[a("el-input",{staticClass:"name-input",attrs:{value:n,placeholder:"Regular expression"},on:{input:function(t){return e.parseMrfSubchain(t,"regExp",s)}}}),e._v(" :\n "),a("el-select",{staticClass:"value-input",attrs:{value:i,placeholder:"Policy modules",multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.parseMrfSubchain(t,"policies",s)}}},e._l(e.policiesOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1),e._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.deleteMrfSubchainRow(s)}}})],1)}),e._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:e.addMrfSubchainRow}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Matches a series of regular expressions against the actor field.")])],2)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"mrfMention",attrs:{model:e.mrfMention,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"MRF Mention:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Actors"}},[a("el-select",{attrs:{value:e.mrfMention.actors||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_mention","actors")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A list of actors, for which to drop any posts mentioning.")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"mrfUserAllowlist",attrs:{model:e.mrfUserAllowlist,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"MRF User allowlist"}},[e._l(e.userAllowlist,function(t,s){var n=t[0],i=t[1];return a("div",{key:s,staticClass:"setting-input"},[a("el-input",{staticClass:"name-input",attrs:{value:n,placeholder:"domain"},on:{input:function(t){return e.parseMrfUserAllowlist(t,"domain",s)}}}),e._v(" :\n "),a("el-select",{staticClass:"value-input",attrs:{value:i,placeholder:"list of users",multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.parseMrfUserAllowlist(t,"users",s)}}}),e._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.deleteMrfUserAllowlistRow(s)}}})],1)}),e._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:e.addMrfUserAllowlistRow}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The keys in this section are the domain names that the policy should apply to. Each key should be assigned a list of users that should be allowed through by their ActivityPub ID.")])],2)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"mrfNormalizeMarkup",attrs:{model:e.mrfNormalizeMarkup,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"MRF normalize markup:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Scrub policy"}},[a("el-input",{attrs:{value:e.mrfNormalizeMarkup.scrub_policy},on:{input:function(t){return e.updateSetting(t,"mrf_normalize_markup","scrub_policy")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"mrfVocabulary",attrs:{model:e.mrfVocabulary,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"MRF Vocabulary:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Accept"}},[a("el-select",{attrs:{value:e.mrfVocabulary.accept||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_vocabulary","accept")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A list of ActivityStreams terms to accept. If empty, all supported messages are accepted.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Reject"}},[a("el-select",{attrs:{value:e.mrfVocabulary.reject||[],multiple:"","allow-create":"",filterable:""},on:{change:function(t){return e.updateSetting(t,"mrf_vocabulary","reject")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A list of ActivityStreams terms to reject. If empty, no messages are rejected.")])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));me.options.__file="MRF.vue";var de=me.exports,ve={name:"Other",computed:c()({},Object(p.b)(["formatEncoders","mimeTypesConfig","teslaAdapter"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"},mimeTypes:function(){var e=this;return Object.keys(this.mimeTypesConfig.value).map(function(t){return[t,e.mimeTypesConfig.value[t]]})}}),methods:{addRowToMimeTypes:function(){var e=this.mimeTypes.reduce(function(e,t,a){return c()({},e,o()({},t[0],t[1]))},{});this.updateSetting(c()({},e,{"":[]}),"types","value")},deleteMimeTypes:function(e){var t=this.mimeTypes.filter(function(t,a){return e!==a}).reduce(function(e,t,a){return c()({},e,o()({},t[0],t[1]))},{});this.updateSetting(t,"types","value")},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}(),parseMimeTypes:function(e,t,a){var s=this.mimeTypes.reduce(function(s,n,i){return a===i?"type"===t?c()({},s,o()({},e,n[1])):c()({},s,o()({},n[0],e)):c()({},s,o()({},n[0],n[1]))},{});this.updateSetting(s,"types","value")},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})}}},fe=(a("gFOO"),Object(v.a)(ve,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"formatEncoders",attrs:{model:e.formatEncoders,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Phoenix Format encoders:"}}),e._v(" "),a("el-form-item",{attrs:{label:"JSON"}},[a("el-input",{attrs:{value:e.formatEncoders.json},on:{input:function(t){return e.updateSetting(t,"format_encoders","json")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"teslaAdapter",attrs:{model:e.teslaAdapter,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Tesla adapter"}},[a("el-input",{attrs:{value:e.teslaAdapter.value},on:{input:function(t){return e.updateSetting(t,"adapter","value")}}})],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"mimeTypesConfig",attrs:{model:e.mimeTypesConfig,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Mime types"}},[e._l(e.mimeTypes,function(t,s){var n=t[0],i=t[1];return a("div",{key:s,staticClass:"setting-input"},[a("el-input",{staticClass:"name-input",attrs:{value:n,placeholder:"type"},on:{input:function(t){return e.parseMimeTypes(t,"type",s)}}}),e._v(" :\n "),a("el-select",{staticClass:"value-input",attrs:{value:i,multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.parseMimeTypes(t,"value",s)}}}),e._v(" "),a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.deleteMimeTypes(s)}}})],1)}),e._v(" "),a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:e.addRowToMimeTypes}})],2),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));fe.options.__file="Other.vue";var _e=fe.exports,he={name:"RateLimiters",computed:c()({},Object(p.b)(["rateLimiters"]),{accountConfirmationResendAllUsers:function(){return this.rateLimiters.account_confirmation_resend?this.rateLimiters.account_confirmation_resend.tuple:[null,null]},accountConfirmationResendAuthUsers:function(){return!!Array.isArray(this.rateLimiters.account_confirmation_resend)&&this.rateLimiters.account_confirmation_resend[1].tuple},accountConfirmationResendUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.account_confirmation_resend)&&this.rateLimiters.account_confirmation_resend[0].tuple},activityPubRoutesAllUsers:function(){return this.rateLimiters.ap_routes?this.rateLimiters.ap_routes.tuple:[null,null]},activityPubRoutesAuthUsers:function(){return!!Array.isArray(this.rateLimiters.ap_routes)&&this.rateLimiters.ap_routes[1].tuple},activityPubRoutesUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.ap_routes)&&this.rateLimiters.ap_routes[0].tuple},appAccountCreationAllUsers:function(){return this.rateLimiters.app_account_creation?this.rateLimiters.app_account_creation.tuple:[null,null]},appAccountCreationAuthUsers:function(){return!!Array.isArray(this.rateLimiters.app_account_creation)&&this.rateLimiters.app_account_creation[1].tuple},appAccountCreationUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.app_account_creation)&&this.rateLimiters.app_account_creation[0].tuple},passwordResetAllUsers:function(){return this.rateLimiters.password_reset?this.rateLimiters.password_reset.tuple:[null,null]},passwordResetAuthUsers:function(){return!!Array.isArray(this.rateLimiters.password_reset)&&this.rateLimiters.password_reset[1].tuple},passwordResetUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.password_reset)&&this.rateLimiters.password_reset[0].tuple},relationsActionsAllUsers:function(){return this.rateLimiters.relations_actions?this.rateLimiters.relations_actions.tuple:[null,null]},relationsActionsAuthUsers:function(){return!!Array.isArray(this.rateLimiters.relations_actions)&&this.rateLimiters.relations_actions[1].tuple},relationsActionsUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.relations_actions)&&this.rateLimiters.relations_actions[0].tuple},relationIdActionAllUsers:function(){return this.rateLimiters.relation_id_action?this.rateLimiters.relation_id_action.tuple:[null,null]},relationIdActionAuthUsers:function(){return!!Array.isArray(this.rateLimiters.relation_id_action)&&this.rateLimiters.relation_id_action[1].tuple},relationIdActionUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.relation_id_action)&&this.rateLimiters.relation_id_action[0].tuple},searchLimitAllUsers:function(){return this.rateLimiters.search?this.rateLimiters.search.tuple:[null,null]},searchLimitAuthUsers:function(){return!!Array.isArray(this.rateLimiters.search)&&this.rateLimiters.search[1].tuple},searchLimitUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.search)&&this.rateLimiters.search[0].tuple},statusesActionsAllUsers:function(){return this.rateLimiters.statuses_actions?this.rateLimiters.statuses_actions.tuple:[null,null]},statusesActionsAuthUsers:function(){return!!Array.isArray(this.rateLimiters.statuses_actions)&&this.rateLimiters.statuses_actions[1].tuple},statusesActionsUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.statuses_actions)&&this.rateLimiters.statuses_actions[0].tuple},statusIdActionAllUsers:function(){return this.rateLimiters.status_id_action?this.rateLimiters.status_id_action.tuple:[null,null]},statusIdActionAuthUsers:function(){return!!Array.isArray(this.rateLimiters.status_id_action)&&this.rateLimiters.status_id_action[1].tuple},statusIdActionUnauthUsers:function(){return!!Array.isArray(this.rateLimiters.status_id_action)&&this.rateLimiters.status_id_action[0].tuple},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{parseRateLimiter:function(e,t,a,s,n){if("oneLimit"===s){var i="scale"===a?{tuple:[e,n[1]]}:{tuple:[n[0],e]};this.updateSetting(i,"rate_limit",t)}else if("authUserslimit"===s){var l="scale"===a?[{tuple:[n[0][0],n[0][1]]},{tuple:[e,n[1][1]]}]:[{tuple:[n[0][0],n[0][1]]},{tuple:[n[1][0],e]}];this.updateSetting(l,"rate_limit",t)}else if("unauthUsersLimit"===s){var r="scale"===a?[{tuple:[e,n[0][1]]},{tuple:[n[1][0],n[1][1]]}]:[{tuple:[n[0][0],e]},{tuple:[n[1][0],n[1][1]]}];this.updateSetting(r,"rate_limit",t)}},toggleLimits:function(e,t){this.updateSetting(e,"rate_limit",t)},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},be=(a("WvM+"),Object(v.a)(he,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-form",{ref:"rateLimiters",attrs:{model:e.rateLimiters,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Search:"}},[e.searchLimitAuthUsers?e._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:e.searchLimitAllUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"search","scale","oneLimit",e.searchLimitAllUsers)}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.searchLimitAllUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"search","limit","oneLimit",e.searchLimitAllUsers)}}}),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(t){return e.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"search")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set different limits for unauthenticated and authenticated users")])],1)],1),e._v(" "),e.searchLimitAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.searchLimitAuthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"search","scale","authUserslimit",[e.searchLimitUnauthUsers,e.searchLimitAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.searchLimitAuthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"search","limit","authUserslimit",[e.searchLimitUnauthUsers,e.searchLimitAuthUsers])}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.searchLimitUnauthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"search","scale","unauthUsersLimit",[e.searchLimitUnauthUsers,e.searchLimitAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.searchLimitUnauthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"search","limit","unauthUsersLimit",[e.searchLimitUnauthUsers,e.searchLimitAuthUsers])}}})],1),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.toggleLimits({tuple:[null,null]},"search")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set limit for all users")])],1)],1):e._e()]),e._v(" "),a("el-form-item",{attrs:{label:"App account creation:"}},[e.appAccountCreationAuthUsers?e._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:e.appAccountCreationAllUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"app_account_creation","scale","oneLimit",e.appAccountCreationAllUsers)}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.appAccountCreationAllUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"app_account_creation","limit","oneLimit",e.appAccountCreationAllUsers)}}}),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(t){return e.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"app_account_creation")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set different limits for unauthenticated and authenticated users")])],1)],1),e._v(" "),e.appAccountCreationAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.appAccountCreationAuthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"app_account_creation","scale","authUserslimit",[e.appAccountCreationUnauthUsers,e.appAccountCreationAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.appAccountCreationAuthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"app_account_creation","limit","authUserslimit",[e.appAccountCreationUnauthUsers,e.appAccountCreationAuthUsers])}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.appAccountCreationUnauthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"app_account_creation","scale","unauthUsersLimit",[e.appAccountCreationUnauthUsers,e.appAccountCreationAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.appAccountCreationUnauthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"app_account_creation","limit","unauthUsersLimit",[e.appAccountCreationUnauthUsers,e.appAccountCreationAuthUsers])}}})],1),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.toggleLimits({tuple:[null,null]},"app_account_creation")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set limit for all users")])],1)],1):e._e()]),e._v(" "),a("el-form-item",{attrs:{label:"Relations actions:"}},[e.relationsActionsAuthUsers?e._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:e.relationsActionsAllUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"relations_actions","scale","oneLimit",e.relationsActionsAllUsers)}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.relationsActionsAllUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"relations_actions","limit","oneLimit",e.relationsActionsAllUsers)}}}),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(t){return e.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"relations_actions")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set different limits for unauthenticated and authenticated users")])],1)],1),e._v(" "),e.relationsActionsAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.relationsActionsAuthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"relations_actions","scale","authUserslimit",[e.relationsActionsUnauthUsers,e.relationsActionsAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.relationsActionsAuthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"relations_actions","limit","authUserslimit",[e.relationsActionsUnauthUsers,e.relationsActionsAuthUsers])}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.relationsActionsUnauthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"relations_actions","scale","unauthUsersLimit",[e.relationsActionsUnauthUsers,e.relationsActionsAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.relationsActionsUnauthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"relations_actions","limit","unauthUsersLimit",[e.relationsActionsUnauthUsers,e.relationsActionsAuthUsers])}}})],1),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.toggleLimits({tuple:[null,null]},"relations_actions")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set limit for all users")])],1)],1):e._e()]),e._v(" "),a("el-form-item",{attrs:{label:"Relation ID Action:"}},[e.relationIdActionAuthUsers?e._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:e.relationIdActionAllUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"relation_id_action","scale","oneLimit",e.relationIdActionAllUsers)}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.relationIdActionAllUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"relation_id_action","limit","oneLimit",e.relationIdActionAllUsers)}}}),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(t){return e.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"relation_id_action")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set different limits for unauthenticated and authenticated users")])],1)],1),e._v(" "),e.relationIdActionAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.relationIdActionAuthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"relation_id_action","scale","authUserslimit",[e.relationIdActionUnauthUsers,e.relationIdActionAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.relationIdActionAuthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"relation_id_action","limit","authUserslimit",[e.relationIdActionUnauthUsers,e.relationIdActionAuthUsers])}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.relationIdActionUnauthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"relation_id_action","scale","unauthUsersLimit",[e.relationIdActionUnauthUsers,e.relationIdActionAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.relationIdActionUnauthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"relation_id_action","limit","unauthUsersLimit",[e.relationIdActionUnauthUsers,e.relationIdActionAuthUsers])}}})],1),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.toggleLimits({tuple:[null,null]},"relation_id_action")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set limit for all users")])],1)],1):e._e()]),e._v(" "),a("el-form-item",{attrs:{label:"Statuses actions:"}},[e.statusesActionsAuthUsers?e._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:e.statusesActionsAllUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"statuses_actions","scale","oneLimit",e.statusesActionsAllUsers)}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.statusesActionsAllUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"statuses_actions","limit","oneLimit",e.statusesActionsAllUsers)}}}),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(t){return e.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"statuses_actions")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set different limits for unauthenticated and authenticated users")])],1)],1),e._v(" "),e.statusesActionsAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.statusesActionsAuthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"statuses_actions","scale","authUserslimit",[e.statusesActionsUnauthUsers,e.statusesActionsAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.statusesActionsAuthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"statuses_actions","limit","authUserslimit",[e.statusesActionsUnauthUsers,e.statusesActionsAuthUsers])}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.statusesActionsUnauthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"statuses_actions","scale","unauthUsersLimit",[e.statusesActionsUnauthUsers,e.statusesActionsAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.statusesActionsUnauthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"statuses_actions","limit","unauthUsersLimit",[e.statusesActionsUnauthUsers,e.statusesActionsAuthUsers])}}})],1),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.toggleLimits({tuple:[null,null]},"statuses_actions")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set limit for all users")])],1)],1):e._e()]),e._v(" "),a("el-form-item",{attrs:{label:"Status ID Action:"}},[e.statusIdActionAuthUsers?e._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:e.statusIdActionAllUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"status_id_action","scale","oneLimit",e.statusIdActionAllUsers)}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.statusIdActionAllUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"status_id_action","limit","oneLimit",e.statusIdActionAllUsers)}}}),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(t){return e.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"status_id_action")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set different limits for unauthenticated and authenticated users")])],1)],1),e._v(" "),e.statusIdActionAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.statusIdActionAuthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"status_id_action","scale","authUserslimit",[e.statusIdActionUnauthUsers,e.statusIdActionAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.statusIdActionAuthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"status_id_action","limit","authUserslimit",[e.statusIdActionUnauthUsers,e.statusIdActionAuthUsers])}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.statusIdActionUnauthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"status_id_action","scale","unauthUsersLimit",[e.statusIdActionUnauthUsers,e.statusIdActionAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.statusIdActionUnauthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"status_id_action","limit","unauthUsersLimit",[e.statusIdActionUnauthUsers,e.statusIdActionAuthUsers])}}})],1),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.toggleLimits({tuple:[null,null]},"status_id_action")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set limit for all users")])],1)],1):e._e()]),e._v(" "),a("el-form-item",{attrs:{label:"Password reset:"}},[e.passwordResetAuthUsers?e._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:e.passwordResetAllUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"password_reset","scale","oneLimit",e.passwordResetAllUsers)}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.passwordResetAllUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"password_reset","limit","oneLimit",e.passwordResetAllUsers)}}}),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(t){return e.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"password_reset")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set different limits for unauthenticated and authenticated users")])],1)],1),e._v(" "),e.passwordResetAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.passwordResetAuthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"password_reset","scale","authUserslimit",[e.passwordResetUnauthUsers,e.passwordResetAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.passwordResetAuthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"password_reset","limit","authUserslimit",[e.passwordResetUnauthUsers,e.passwordResetAuthUsers])}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.passwordResetUnauthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"password_reset","scale","unauthUsersLimit",[e.passwordResetUnauthUsers,e.passwordResetAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.passwordResetUnauthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"password_reset","limit","unauthUsersLimit",[e.passwordResetUnauthUsers,e.passwordResetAuthUsers])}}})],1),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.toggleLimits({tuple:[null,null]},"password_reset")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set limit for all users")])],1)],1):e._e()]),e._v(" "),a("el-form-item",{attrs:{label:"Account confirmation resend:"}},[e.accountConfirmationResendAuthUsers?e._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:e.accountConfirmationResendAllUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"account_confirmation_resend","scale","oneLimit",e.accountConfirmationResendAllUsers)}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.accountConfirmationResendAllUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"account_confirmation_resend","limit","oneLimit",e.accountConfirmationResendAllUsers)}}}),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(t){return e.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"account_confirmation_resend")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set different limits for unauthenticated and authenticated users")])],1)],1),e._v(" "),e.accountConfirmationResendAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.accountConfirmationResendAuthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"account_confirmation_resend","scale","authUserslimit",[e.accountConfirmationResendUnauthUsers,e.accountConfirmationResendAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.accountConfirmationResendAuthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"account_confirmation_resend","limit","authUserslimit",[e.accountConfirmationResendUnauthUsers,e.accountConfirmationResendAuthUsers])}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.accountConfirmationResendUnauthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"account_confirmation_resend","scale","unauthUsersLimit",[e.accountConfirmationResendUnauthUsers,e.accountConfirmationResendAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.accountConfirmationResendUnauthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"account_confirmation_resend","limit","unauthUsersLimit",[e.accountConfirmationResendUnauthUsers,e.accountConfirmationResendAuthUsers])}}})],1),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.toggleLimits({tuple:[null,null]},"account_confirmation_resend")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set limit for all users")])],1)],1):e._e()]),e._v(" "),a("el-form-item",{attrs:{label:"Activity pub routes:"}},[e.activityPubRoutesAuthUsers?e._e():a("div",[a("el-input",{staticClass:"scale-input",attrs:{value:e.activityPubRoutesAllUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"ap_routes","scale","oneLimit",e.activityPubRoutesAllUsers)}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.activityPubRoutesAllUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"ap_routes","limit","oneLimit",e.activityPubRoutesAllUsers)}}}),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-plus",circle:""},on:{click:function(t){return e.toggleLimits([{tuple:[null,null]},{tuple:[null,null]}],"ap_routes")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set different limits for unauthenticated and authenticated users")])],1)],1),e._v(" "),e.activityPubRoutesAuthUsers?a("div",[a("el-form-item",{attrs:{label:"Authenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.activityPubRoutesAuthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"ap_routes","scale","authUserslimit",[e.activityPubRoutesUnauthUsers,e.activityPubRoutesAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.activityPubRoutesAuthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"ap_routes","limit","authUserslimit",[e.activityPubRoutesUnauthUsers,e.activityPubRoutesAuthUsers])}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Unauthenticated users:"}},[a("el-input",{staticClass:"scale-input",attrs:{value:e.activityPubRoutesUnauthUsers[0],placeholder:"scale"},on:{input:function(t){return e.parseRateLimiter(t,"ap_routes","scale","unauthUsersLimit",[e.activityPubRoutesUnauthUsers,e.activityPubRoutesAuthUsers])}}}),e._v(" :\n "),a("el-input",{staticClass:"limit-input",attrs:{value:e.activityPubRoutesUnauthUsers[1],placeholder:"limit"},on:{input:function(t){return e.parseRateLimiter(t,"ap_routes","limit","unauthUsersLimit",[e.activityPubRoutesUnauthUsers,e.activityPubRoutesAuthUsers])}}})],1),e._v(" "),a("div",{staticClass:"limit-button-container"},[a("el-button",{attrs:{icon:"el-icon-minus",circle:""},on:{click:function(t){return e.toggleLimits({tuple:[null,null]},"ap_routes")}}}),e._v(" "),a("p",{staticClass:"expl limit-expl"},[e._v("Set limit for all users")])],1)],1):e._e()]),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)},[],!1,null,null,null));be.options.__file="RateLimiters.vue";var ge=be.exports,ye={name:"Upload",computed:c()({},Object(p.b)(["uploadAnonymizeFilename","upload","uploadFilterMogrify","uploadersLocal","uploadMDII","uploadS3"]),{inlineContentTypes:function(){return Array.isArray(this.upload.proxy_opts.inline_content_types)?"whitelistedTypeArray":this.upload.proxy_opts.inline_content_types},http:function(){return this.upload.proxy_opts.http||{}},hackneyPoolsOptions:function(){return L.hackneyPoolsOptions},whitelistedContentTypes:function(){return Array.isArray(this.upload.proxy_opts.inline_content_types)?this.upload.proxy_opts.inline_content_types:[]},whitelistedContentTypesOptions:function(){return L.whitelistedContentTypesOptions},mogrifyActionsOptions:function(){return L.mogrifyActionsOptions},isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{getPoolExpl:function(e){var t=this.hackneyPoolsOptions.find(function(t){return t.value===e});return t?"Max connections: "+t.max_connections+", timeout: "+t.timeout:""},processHttpSettings:function(e,t,a,s,n){var i=c()({},this.upload[a][s],o()({},n,e));this.processNestedData(i,t,a,s)},processNestedData:function(e,t,a,s){var n=c()({},this.$store.state.settings.settings[t][a],o()({},s,e));this.updateSetting(n,t,a)},updateInlineContentTypes:function(){"whitelistedTypeArray"===this.$data.inlineContentTypes?this.processNestedData(this.$data.whitelistedContentTypes,"Pleroma.Upload","proxy_opts","inline_content_types"):this.processNestedData(this.$data.inlineContentTypes,"Pleroma.Upload","proxy_opts","inline_content_types")},updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},we=(a("DPt0"),Object(v.a)(ye,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-form",{ref:"upload",attrs:{model:e.upload,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Uploader"}},[a("el-input",{attrs:{value:e.upload.uploader},on:{input:function(t){return e.updateSetting(t,"Pleroma.Upload","uploader")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Filters"}},[a("el-select",{attrs:{value:e.upload.filters||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Upload","filters")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Link name"}},[a("el-switch",{attrs:{value:e.upload.link_name},on:{change:function(t){return e.updateSetting(t,"Pleroma.Upload","link_name")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("When enabled Pleroma will add a name parameter to the url of the upload, for example\n "),a("span",{staticClass:"code"},[e._v("https://instance.tld/media/corndog.png?name=corndog.png")])])],1),e._v(" "),a("el-form-item",{attrs:{label:"Base URL"}},[a("el-input",{attrs:{value:e.upload.base_url},on:{input:function(t){return e.updateSetting(t,"Pleroma.Upload","base_url")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Proxy remote"}},[a("el-switch",{attrs:{value:e.upload.proxy_remote},on:{change:function(t){return e.updateSetting(t,"Pleroma.Upload","proxy_remote")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("If you're using a remote uploader, Pleroma will proxy media requests instead of redirecting to it")])],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form-item",{attrs:{label:"Proxy options:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Redirect on failure"}},[a("el-switch",{attrs:{value:e.upload.proxy_opts.redirect_on_failure},on:{change:function(t){return e.processNestedData(t,"Pleroma.Upload","proxy_opts","redirect_on_failure")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Redirects the client to the real remote URL if there's any HTTP errors.\n Any error during body processing will not be redirected as the response is chunked")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max body length (MB)"}},[a("el-input-number",{attrs:{value:e.upload.proxy_opts.max_body_length/1048576,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(1048576*t,"Pleroma.Upload","proxy_opts","max_body_length")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Limits the content length to be approximately the specified length")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Max read duration (s)"}},[a("el-input-number",{attrs:{value:e.upload.proxy_opts.max_read_duration,step:1,min:0,size:"large"},on:{change:function(t){return e.processNestedData(t,"Pleroma.Upload","proxy_opts","max_read_duration")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("The total time the connection is allowed to read from the remote upstream")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Inline content types"}},[a("el-select",{attrs:{value:e.inlineContentTypes,clearable:""},on:{change:function(t){return e.processNestedData(t,"Pleroma.Upload","proxy_opts","inline_content_types")}}},[a("el-option",{attrs:{value:!0,label:"True"}}),e._v(" "),a("el-option",{attrs:{value:!1,label:"False"}}),e._v(" "),a("el-option",{attrs:{value:"whitelistedTypeArray",label:"List of whitelisted content types"}}),e._v(" "),a("el-option",{attrs:{value:"keepUserAgent",label:"Forward client's user-agent to the upstream"}})],1),e._v(" "),!0===e.inlineContentTypes?a("p",{staticClass:"expl"},[e._v("Will not alter "),a("span",{staticClass:"code"},[e._v("content-disposition")]),e._v(" (up to the upstream)")]):e._e(),e._v(" "),e.inlineContentTypes?e._e():a("p",{staticClass:"expl"},[e._v("Will add "),a("span",{staticClass:"code"},[e._v("content-disposition: attachment")]),e._v(" to any request")]),e._v(" "),"keepUserAgent"===e.inlineContentTypes?a("p",{staticClass:"expl"},[e._v("\n Will forward the client's user-agent to the upstream. This may be useful if the upstream is\n doing content transformation (encoding, …) depending on the request.\n ")]):e._e()],1),e._v(" "),"whitelistedTypeArray"===e.inlineContentTypes?a("el-form-item",{attrs:{label:"Whitelisted content types"}},[a("el-select",{attrs:{value:e.whitelistedContentTypes,multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.processNestedData(t,"Pleroma.Upload","proxy_opts","inline_content_types")}}},e._l(e.whitelistedContentTypesOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1)],1):e._e(),e._v(" "),a("el-form-item",{attrs:{label:"Request headers"}},[a("el-select",{attrs:{value:e.upload.proxy_opts.req_headers||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.processNestedData(t,"Pleroma.Upload","proxy_opts","req_headers")}}}),e._v(" "),a("p",{staticClass:"expl"},[a("span",{staticClass:"code"},[e._v("resp_headers")]),e._v(" additional headers")])],1),e._v(" "),a("el-form-item",{attrs:{label:"HTTP:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Follow redirect"}},[a("el-switch",{attrs:{value:e.http.follow_redirect},on:{change:function(t){return e.processHttpSettings(t,"Pleroma.Upload","proxy_opts","http","follow_redirect")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Pool"}},[a("el-select",{attrs:{value:e.http.pool,clearable:""},on:{change:function(t){return e.processHttpSettings(t,"Pleroma.Upload","proxy_opts","http","pool")}}},e._l(e.hackneyPoolsOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1),e._v(" "),a("p",{staticClass:"expl"},[e._v(e._s(e.getPoolExpl(e.http.pool)))])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"uploadersLocal",attrs:{model:e.uploadersLocal,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Uploaders.Local:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Directory for user-uploads"}},[a("el-input",{attrs:{value:e.uploadersLocal.uploads},on:{input:function(t){return e.updateSetting(t,"Pleroma.Uploaders.Local","uploads")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Which directory to store the user-uploads in, relative to pleroma’s working directory")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"uploadFilterMogrify",attrs:{model:e.uploadFilterMogrify,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Actions for Mogrify"}},[a("el-select",{attrs:{value:e.uploadFilterMogrify.args||[],multiple:"",filterable:"","allow-create":""},on:{change:function(t){return e.updateSetting(t,"Pleroma.Upload.Filter.Mogrify","args")}}},e._l(e.mogrifyActionsOptions,function(e){return a("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})}),1)],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"uploadAnonymizeFilename",attrs:{model:e.uploadAnonymizeFilename,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Anonymize filename"}},[a("el-input",{attrs:{value:e.uploadAnonymizeFilename.text},on:{input:function(t){return e.updateSetting(t,"Pleroma.Upload.Filter.AnonymizeFilename","text")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("Text to replace filenames in links. If empty, "),a("span",{staticClass:"code"},[e._v("{random}.extension")]),e._v(" will be used")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"uploadS3",attrs:{model:e.uploadS3,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"S3 Config:"}}),e._v(" "),a("el-form-item",{attrs:{label:"Bucket"}},[a("el-input",{attrs:{value:e.uploadS3.bucket},on:{input:function(t){return e.updateSetting(t,"Pleroma.Uploaders.S3","bucket")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("S3 bucket name")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Bucket namespace"}},[a("el-input",{attrs:{value:e.uploadS3.bucket_namespace},on:{input:function(t){return e.updateSetting(t,"Pleroma.Uploaders.S3","bucket_namespace")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("S3 bucket namespace")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Public endpoint"}},[a("el-input",{attrs:{value:e.uploadS3.public_endpoint},on:{input:function(t){return e.updateSetting(t,"Pleroma.Uploaders.S3","public_endpoint")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("S3 endpoint that the user finally accesses")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Truncated namespace"}},[a("el-input",{attrs:{value:e.uploadS3.truncated_namespace},on:{input:function(t){return e.updateSetting(t,"Pleroma.Uploaders.S3","truncated_namespace")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v('If you use S3 compatible service such as Digital Ocean Spaces or CDN, set folder name or "" etc.\n For example, when using CDN to S3 virtual host format, set "".\n At this time, write CNAME to CDN in '),a("span",{staticClass:"code"},[e._v("public_endpoint")]),e._v(".\n ")])],1)],1),e._v(" "),a("div",{staticClass:"line"}),e._v(" "),a("el-form",{ref:"uploadMDII",attrs:{model:e.uploadMDII,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Uploaders.MDII Config:"}}),e._v(" "),a("el-form-item",{attrs:{label:"CGI"}},[a("el-input",{attrs:{value:e.uploadMDII.cgi},on:{input:function(t){return e.updateSetting(t,"Pleroma.Uploaders.MDII","cgi")}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"Files"}},[a("el-input",{attrs:{value:e.uploadMDII.files},on:{input:function(t){return e.updateSetting(t,"Pleroma.Uploaders.MDII","files")}}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)],1)},[],!1,null,null,null));we.options.__file="Upload.vue";var xe=we.exports,Ce={name:"WebPush",computed:c()({},Object(p.b)(["vapidDetails"]),{isMobile:function(){return"mobile"===this.$store.state.app.device},labelWidth:function(){return this.isMobile?"100px":"210px"}}),methods:{updateSetting:function(e,t,a){this.$store.dispatch("UpdateSettings",{tab:t,data:o()({},a,e)})},onSubmit:function(){var e=l()(n.a.mark(function e(){return n.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$store.dispatch("SubmitChanges");case 3:e.next=8;break;case 5:return e.prev=5,e.t0=e.catch(0),e.abrupt("return");case 8:this.$message({type:"success",message:m.a.t("settings.success")});case 9:case"end":return e.stop()}},e,this,[[0,5]])}));return function(){return e.apply(this,arguments)}}()}},Se=(a("+qaP"),Object(v.a)(Ce,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-form",{ref:"vapidDetails",attrs:{model:e.vapidDetails,"label-width":e.labelWidth}},[a("el-form-item",{attrs:{label:"Subject"}},[a("el-input",{attrs:{value:e.vapidDetails.subject},on:{input:function(t){return e.updateSetting(t,"vapid_details","subject")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("A mailto link for the administrative contact. It’s best if this email is not a personal email address,\n but rather a group email so that if a person leaves an organization, is unavailable for an extended period,\n or otherwise can’t respond, someone else on the list can.")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Public key"}},[a("el-input",{attrs:{value:e.vapidDetails.public_key},on:{input:function(t){return e.updateSetting(t,"vapid_details","public_key")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("VAPID public key")])],1),e._v(" "),a("el-form-item",{attrs:{label:"Private key"}},[a("el-input",{attrs:{value:e.vapidDetails.private_key},on:{input:function(t){return e.updateSetting(t,"vapid_details","private_key")}}}),e._v(" "),a("p",{staticClass:"expl"},[e._v("VAPID private key")])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.onSubmit}},[e._v("Submit")])],1)],1)},[],!1,null,null,null));Se.options.__file="WebPush.vue";var ke={components:{ActivityPub:_,Authentication:g,AutoLinker:x,Captcha:k,Database:U,Endpoint:E,Esshd:O,Frontend:$,Gopher:H,Http:V,Instance:Q,JobQueue:Y,Logger:te,Mailer:ne,MediaProxy:re,Metadata:ce,Mrf:de,Other:_e,RateLimiters:ge,Upload:xe,WebPush:Se.exports},computed:{isMobile:function(){return"mobile"===this.$store.state.app.device},tabPosition:function(){return this.isMobile?"top":"left"}},mounted:function(){this.$store.dispatch("FetchSettings")}},Ae=(a("V9mB"),Object(v.a)(ke,function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"settings-container"},[a("h1",[e._v(e._s(e.$t("settings.settings")))]),e._v(" "),a("el-tabs",{attrs:{"tab-position":e.tabPosition}},[a("el-tab-pane",{attrs:{label:e.$t("settings.activityPub")}},[a("activity-pub")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.auth")}},[a("authentication")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.autoLinker")}},[a("auto-linker")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.esshd")}},[a("esshd")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.captcha")}},[a("captcha")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.database")}},[a("database")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.endpoint")}},[a("endpoint")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.frontend")}},[a("frontend")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.gopher")}},[a("gopher")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.http")}},[a("http")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.instance")}},[a("instance")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.jobQueue")}},[a("job-queue")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.logger")}},[a("logger")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.mailer")}},[a("mailer")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.mediaProxy")}},[a("media-proxy")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.metadata")}},[a("metadata")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.mrf")}},[a("mrf")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.rateLimiters")}},[a("rate-limiters")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.upload")}},[a("upload")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.webPush")}},[a("web-push")],1),e._v(" "),a("el-tab-pane",{attrs:{label:e.$t("settings.other")}},[a("other")],1)],1)],1)},[],!1,null,"729534ce",null));Ae.options.__file="index.vue";t.default=Ae.exports},Zgs2:function(e,t,a){},apN7:function(e,t,a){"use strict";var s=a("9p49");a.n(s).a},cyzs:function(e,t,a){"use strict";var s=a("Px65");a.n(s).a},e0P1:function(e,t,a){"use strict";var s=a("TudB");a.n(s).a},gFOO:function(e,t,a){"use strict";var s=a("jqM2");a.n(s).a},h9z7:function(e,t,a){"use strict";var s=a("TOIk");a.n(s).a},hVXW:function(e,t,a){"use strict";var s=a("uswN");a.n(s).a},jqM2:function(e,t,a){},lNpP:function(e,t,a){"use strict";var s=a("UbP/");a.n(s).a},mADP:function(e,t,a){"use strict";var s=a("qLeA");a.n(s).a},mSK5:function(e,t,a){},qEST:function(e,t,a){"use strict";var s=a("4NUT");a.n(s).a},qLeA:function(e,t,a){},uswN:function(e,t,a){},w5cJ:function(e,t,a){"use strict";var s=a("PYLh");a.n(s).a},wgcy:function(e,t,a){},x6RV:function(e,t,a){}}]); +//# sourceMappingURL=chunk-6292.0e668979.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-6292.0e668979.js.map b/priv/static/adminfe/static/js/chunk-6292.0e668979.js.map new file mode 100644 index 000000000..ecc2a3003 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-6292.0e668979.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/settings/components/WebPush.vue?38e3","webpack:///./src/views/settings/components/Captcha.vue?029c","webpack:///./src/views/settings/components/Authentication.vue?4503","webpack:///./src/views/settings/components/Upload.vue?33cd","webpack:///./src/views/settings/components/Esshd.vue?eedf","webpack:///./src/views/settings/components/Http.vue?56b1","webpack:///./src/views/settings/components/Endpoint.vue?df2b","webpack:///./src/views/settings/components/Mailer.vue?cb92","webpack:///./src/views/settings/components/Database.vue?9c10","webpack:///./src/views/settings/components/MediaProxy.vue?e0fb","webpack:///./src/views/settings/index.vue?fca3","webpack:///./src/views/settings/components/RateLimiters.vue?0aac","webpack:///./src/views/settings/index.vue?253d","webpack:///./src/views/settings/components/ActivityPub.vue?9ad8","webpack:///src/views/settings/components/ActivityPub.vue","webpack:///./src/views/settings/components/ActivityPub.vue","webpack:///./src/views/settings/components/ActivityPub.vue?bfc9","webpack:///./src/views/settings/components/Authentication.vue?1922","webpack:///src/views/settings/components/Authentication.vue","webpack:///./src/views/settings/components/Authentication.vue","webpack:///./src/views/settings/components/Authentication.vue?e8bf","webpack:///./src/views/settings/components/AutoLinker.vue?fed2","webpack:///src/views/settings/components/AutoLinker.vue","webpack:///./src/views/settings/components/AutoLinker.vue","webpack:///./src/views/settings/components/AutoLinker.vue?868d","webpack:///./src/views/settings/components/Captcha.vue?b5df","webpack:///src/views/settings/components/Captcha.vue","webpack:///./src/views/settings/components/Captcha.vue","webpack:///./src/views/settings/components/Captcha.vue?4067","webpack:///./src/views/settings/components/Database.vue?092c","webpack:///src/views/settings/components/Database.vue","webpack:///./src/views/settings/components/Database.vue","webpack:///./src/views/settings/components/Database.vue?d370","webpack:///./src/views/settings/components/options.js","webpack:///./src/views/settings/components/Endpoint.vue?c17d","webpack:///src/views/settings/components/Endpoint.vue","webpack:///./src/views/settings/components/Endpoint.vue","webpack:///./src/views/settings/components/Endpoint.vue?1427","webpack:///./src/views/settings/components/Esshd.vue?b0ed","webpack:///src/views/settings/components/Esshd.vue","webpack:///./src/views/settings/components/Esshd.vue","webpack:///./src/views/settings/components/Esshd.vue?2952","webpack:///./src/views/settings/components/Frontend.vue?1622","webpack:///src/views/settings/components/Frontend.vue","webpack:///./src/views/settings/components/Frontend.vue","webpack:///./src/views/settings/components/Frontend.vue?faab","webpack:///./src/views/settings/components/Gopher.vue?cb09","webpack:///src/views/settings/components/Gopher.vue","webpack:///./src/views/settings/components/Gopher.vue","webpack:///./src/views/settings/components/Gopher.vue?71a6","webpack:///./src/views/settings/components/Http.vue?0ecb","webpack:///src/views/settings/components/Http.vue","webpack:///./src/views/settings/components/Http.vue","webpack:///./src/views/settings/components/Http.vue?106c","webpack:///./src/views/settings/components/Instance.vue?ea1e","webpack:///src/views/settings/components/Instance.vue","webpack:///./src/views/settings/components/Instance.vue","webpack:///./src/views/settings/components/Instance.vue?7a58","webpack:///./src/views/settings/components/JobQueue.vue?e650","webpack:///src/views/settings/components/JobQueue.vue","webpack:///./src/views/settings/components/JobQueue.vue","webpack:///./src/views/settings/components/JobQueue.vue?1198","webpack:///./src/views/settings/components/Logger.vue?aa5f","webpack:///src/views/settings/components/Logger.vue","webpack:///./src/views/settings/components/Logger.vue","webpack:///./src/views/settings/components/Logger.vue?25b9","webpack:///./src/views/settings/components/Mailer.vue?48d6","webpack:///src/views/settings/components/Mailer.vue","webpack:///./src/views/settings/components/Mailer.vue","webpack:///./src/views/settings/components/Mailer.vue?e50c","webpack:///./src/views/settings/components/MediaProxy.vue?9571","webpack:///src/views/settings/components/MediaProxy.vue","webpack:///./src/views/settings/components/MediaProxy.vue","webpack:///./src/views/settings/components/MediaProxy.vue?50af","webpack:///./src/views/settings/components/Metadata.vue?7f4f","webpack:///src/views/settings/components/Metadata.vue","webpack:///./src/views/settings/components/Metadata.vue","webpack:///./src/views/settings/components/Metadata.vue?8186","webpack:///./src/views/settings/components/MRF.vue?274b","webpack:///src/views/settings/components/MRF.vue","webpack:///./src/views/settings/components/MRF.vue","webpack:///./src/views/settings/components/MRF.vue?ce1b","webpack:///./src/views/settings/components/Other.vue?7bf4","webpack:///src/views/settings/components/Other.vue","webpack:///./src/views/settings/components/Other.vue","webpack:///./src/views/settings/components/Other.vue?932b","webpack:///./src/views/settings/components/RateLimiters.vue?15d2","webpack:///src/views/settings/components/RateLimiters.vue","webpack:///./src/views/settings/components/RateLimiters.vue","webpack:///./src/views/settings/components/RateLimiters.vue?4368","webpack:///./src/views/settings/components/Upload.vue?304d","webpack:///src/views/settings/components/Upload.vue","webpack:///./src/views/settings/components/Upload.vue","webpack:///./src/views/settings/components/Upload.vue?9fbf","webpack:///./src/views/settings/components/WebPush.vue?5451","webpack:///src/views/settings/components/WebPush.vue","webpack:///./src/views/settings/components/WebPush.vue","webpack:///./src/views/settings/components/WebPush.vue?1411","webpack:///./src/views/settings/index.vue?3c3a","webpack:///src/views/settings/index.vue","webpack:///./src/views/settings/index.vue","webpack:///./src/views/settings/components/Metadata.vue?0952","webpack:///./src/views/settings/components/AutoLinker.vue?42b3","webpack:///./src/views/settings/components/Instance.vue?2668","webpack:///./src/views/settings/components/Other.vue?8e53","webpack:///./src/views/settings/components/MRF.vue?8c92","webpack:///./src/views/settings/components/Frontend.vue?f18f","webpack:///./src/views/settings/components/JobQueue.vue?d797","webpack:///./src/views/settings/components/Logger.vue?a62e","webpack:///./src/views/settings/components/ActivityPub.vue?48d9","webpack:///./src/views/settings/components/Gopher.vue?5fd9"],"names":["_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_WebPush_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Captcha_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Authentication_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Upload_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Esshd_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Http_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Endpoint_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Mailer_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Database_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MediaProxy_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_729534ce_rel_stylesheet_2Fscss_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_RateLimiters_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","components_ActivityPubvue_type_script_lang_js_","name","computed","objectSpread_default","Object","vuex_esm","isMobile","this","$store","state","app","device","labelWidth","methods","updateSetting","value","tab","input","dispatch","data","defineProperty_default","onSubmit","_onSubmit","asyncToGenerator_default","regenerator_default","a","mark","_callee","wrap","_context","prev","next","t0","abrupt","$message","type","message","lang","t","stop","apply","arguments","component","componentNormalizer","_vm","_h","$createElement","_c","_self","ref","attrs","model","activityPub","label-width","label","unfollow_blocked","on","change","$event","_v","staticClass","outgoing_blocks","follow_handshake_timeout","step","min","size","sign_object_fetches","user","deny_follow_blocked","click","options","__file","ActivityPub","components_Authenticationvue_type_script_lang_js_","Authentication_component","pleromaAuthenticator","clearable","auth","auth_template","oauth_consumer_template","oauth_consumer_strategies","multiple","filterable","allow-create","ldap","enabled","host","port","ssl","tls","base","uid","ueberauth","href","rel","target","base_path","facebook","client_id","client_secret","redirect_uri","twitter","consumer_key","consumer_secret","google","microsoft","oauth2","token_expires_in","issue_new_refresh_token","clean_expired_tokens","clean_expired_tokens_interval","Authentication","components_AutoLinkervue_type_script_lang_js_","loading","settings","booleanClass","getBooleanValue","booleanRel","booleanTruncate","autoLinker","opts","getNumValue","getStringValue","processTwoTypeValue","inputName","childName","processNestedData","updatedValue","AutoLinker_component","_e","new_window","scheme","strip_prefix","extra","validate_tld","AutoLinker","components_Captchavue_type_script_lang_js_","Captcha_component","captcha","seconds_valid","method","kocaptcha","endpoint","Captcha","components_Databasevue_type_script_lang_js_","Database_component","database","rum_enabled","ectoRepos","pleromaRepo","priv","url","log","pool_size","telemetry_prefix","types","telemetry_event","hostname","socket_dir","socket","username","password","maintenance_database","pool","connect_timeout","prepare","Database","federationPublisherModulesOptions","rewritePolicyOptions","expl","quarantinedInstancesOptions","autofollowedNicknamesOptions","uriSchemesOptions","themeOptions","instrumentersOptions","extraCookieAttrsOptions","hackneyPoolsOptions","max_connections","timeout","whitelistedContentTypesOptions","mogrifyActionsOptions","adapterOptions","loggerBackendsOptions","JSON","stringify","tuple","restrictedNicknamesOptions","components_Endpointvue_type_script_lang_js_","components","editor","vue2_ace_editor_default","editorContentHttp","get","http","set","editorContentHttps","https","configureHttp","configureHttps","endpointHttp","endpointHttps","showServerConfig","protocol","Endpoint_component","instrumenters","_l","item","key","code_reloader","debug_errors","render_errors","view","accepts","layout","cache_static_manifest","height","width","theme","callback","$$v","expression","ip","placeholder","compress","secret_key_base","server","path","signing_salt","pubsub","adapter","secure_cookie_flag","extra_cookie_attrs","Endpoint","components_Esshdvue_type_script_lang_js_","toggleEsshd","Esshd_component","privDir","handler","passwordAuthenticator","Esshd","components_Frontendvue_type_script_lang_js_","groups","_this","keys","emoji","map","mascots","_this2","assets","mascotName","mime_type","addRowToGroups","reduce","acc","el","i","","addRowToMascots","deleteGroupsRow","index","filter","deleteMascotsRow","parseGroups","inputType","parseMascots","sendBackgroundMasto","_ref","file","sendBackgroundPleroma","_ref2","sendLogoMasto","_ref3","sendLogoPleroma","_ref4","Frontend_component","frontend","pleroma_fe","background","http-request","show-file-list","action","logo","logoMask","logoMargin","redirectRootNoLogin","redirectRootLogin","showInstanceSpecificPanel","scopeOptionsEnabled","formattingOptionsEnabled","collapseMessageWithSubject","scopeCopy","subjectLineBehavior","postContentType","alwaysShowSubjectInput","hidePostStats","hideUserStats","loginMethod","webPushNotifications","noAttachmentLinks","nsfwCensorImage","showFeaturesPanel","minimalScopesMode","masto_fe","default_mascot","mimeType","icon","circle","shortcode_globs","pack_extensions","default_manifest","chat","markup","allow_inline_images","allow_headings","allow_tables","allow_fonts","scrub_policy","Frontend","components_Gophervue_type_script_lang_js_","Gopher_component","gopher","dstport","Gopher","components_Httpvue_type_script_lang_js_","Http_component","proxy_url","send_user_agent","versions","corsPlugMaxAge","corsPlugMethods","corsPlugExpose","corsPlugCredentials","corsPlugHeaders","httpSecurity","sts","sts_max_age","ct_max_age","referrer_policy","report_uri","hackneyPools","federation","media","upload","Http","components_Instancevue_type_script_lang_js_","rewritePolicy","instance","rewrite_policy","rewritePolicyExplanations","policy","find","getRewritePolicyExpl","Instance_component","email","notify_email","description","limit","remote_limit","upload_limit","avatar_upload_limit","background_upload_limit","banner_upload_limit","user_bio_length","user_name_length","poll_limits","max_options","max_option_chars","min_expiration","max_expiration","registrations_open","invites_enabled","account_activation_required","federating","federation_incoming_replies_max_depth","federation_reachability_timeout_days","federation_publisher_modules","allow_relay","_s","public","quarantined_instances","managed_config","static_dir","allowed_post_formats","mrf_transparency","mrf_transparency_exclusions","scope_copy","subject_line_behavior","always_show_subject_input","extended_nickname_format","max_pinned_statuses","autofollowed_nicknames","no_attachment_links","welcome_message","welcome_user_nickname","max_report_comment_size","safe_dm_mentions","healthcheck","remote_post_retention_days","skip_thread_containment","limit_to_local_content","dynamic_configuration","max_account_fields","max_remote_account_fields","account_field_name_length","account_field_value_length","external_user_synchronization","uriSchemes","valid_schemes","adminToken","scheduledActivity","daily_user_limit","total_user_limit","fetchInitialPosts","pages","suggestions","third_party_engine","web","pleromaUser","restricted_nicknames","Instance","components_JobQueuevue_type_script_lang_js_","JobQueue_component","queues","federator_outgoing","federator_incoming","mailer","transmogrifier","web_push","scheduled_activities","retryQueue","max_jobs","initial_timeout","max_retries","JobQueue","components_Loggervue_type_script_lang_js_","loggerBackendsValue","loggerBackends","section","updateloggerBackends","parseValue","parse","Logger_component","consoleLogger","level","format","metadata","max_buffer","colors","debug","info","warn","error","exsyslogger","formatter","ident","facility","option","webhookUrl","meta","Logger","components_Mailervue_type_script_lang_js_","editorContent","dkim","sendEmailLogo","Mailer_component","cmd_path","cmd_args","qmail","relay","retries","no_mx_lookups","api_key","domain","secret","region","access_key","server_id","access_token","emailNotifications","digest","active","schedule","interval","inactivity_threshold","userEmail","styling","link_color","background_color","content_background_color","header_color","text_color","text_muted_color","Mailer","components_MediaProxyvue_type_script_lang_js_","inlineContentTypes","Array","isArray","mediaProxy","proxy_opts","inline_content_types","reqHeadersOptions","mediaProxySettings","whitelistedContentTypes","getPoolExpl","processHttpSettings","httpSection","MediaProxy_component","base_url","redirect_on_failure","max_body_length","max_read_duration","req_headers","follow_redirect","whitelist","MediaProxy","components_Metadatavue_type_script_lang_js_","Metadata_component","providers","unfurl_nsfw","richMedia","ignore_hosts","ignore_tld","parsers","ttl_setters","Metadata","components_MRFvue_type_script_lang_js_","removableDoubleOptions","removableSingleOptions","matchActor","mrfSubchain","match_actor","policiesOptions","replacePatterns","mrfKeyword","replace","userAllowlist","_this3","mrfUserAllowlist","addMrfSubchainRow","addMrfUserAllowlistRow","addReplaceRow","deleteMrfSubchainRow","deleteMrfUserAllowlistRow","deleteReplaceRow","parseMrfSubchain","parseMrfUserAllowlist","parseReplace","MRF_component","mrfSimple","media_removal","media_nsfw","federated_timeline_removal","reject","accept","report_removal","avatar_removal","banner_removal","mrfRejectnonpublic","allow_followersonly","allow_direct","mrfHellthread","delist_threshold","reject_threshold","regExp","policies","mrfMention","actors","users","mrfNormalizeMarkup","mrfVocabulary","MRF","components_Othervue_type_script_lang_js_","mimeTypes","mimeTypesConfig","addRowToMimeTypes","deleteMimeTypes","parseMimeTypes","Other_component","formatEncoders","json","teslaAdapter","Other","components_RateLimitersvue_type_script_lang_js_","accountConfirmationResendAllUsers","rateLimiters","account_confirmation_resend","accountConfirmationResendAuthUsers","accountConfirmationResendUnauthUsers","activityPubRoutesAllUsers","ap_routes","activityPubRoutesAuthUsers","activityPubRoutesUnauthUsers","appAccountCreationAllUsers","app_account_creation","appAccountCreationAuthUsers","appAccountCreationUnauthUsers","passwordResetAllUsers","password_reset","passwordResetAuthUsers","passwordResetUnauthUsers","relationsActionsAllUsers","relations_actions","relationsActionsAuthUsers","relationsActionsUnauthUsers","relationIdActionAllUsers","relation_id_action","relationIdActionAuthUsers","relationIdActionUnauthUsers","searchLimitAllUsers","search","searchLimitAuthUsers","searchLimitUnauthUsers","statusesActionsAllUsers","statuses_actions","statusesActionsAuthUsers","statusesActionsUnauthUsers","statusIdActionAllUsers","status_id_action","statusIdActionAuthUsers","statusIdActionUnauthUsers","parseRateLimiter","typeOfInput","typeOfLimit","currentValue","valueToSend","_valueToSend","_valueToSend2","toggleLimits","RateLimiters_component","RateLimiters","components_Uploadvue_type_script_lang_js_","updateInlineContentTypes","$data","Upload_component","uploader","filters","link_name","proxy_remote","uploadersLocal","uploads","uploadFilterMogrify","args","uploadAnonymizeFilename","text","uploadS3","bucket","bucket_namespace","public_endpoint","truncated_namespace","uploadMDII","cgi","files","Upload","components_WebPushvue_type_script_lang_js_","WebPush_component","vapidDetails","subject","public_key","private_key","views_settingsvue_type_script_lang_js_","Mrf","WebPush","tabPosition","mounted","settings_component","$t","tab-position","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Metadata_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_AutoLinker_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Instance_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Other_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_MRF_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Frontend_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_JobQueue_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Logger_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_ActivityPub_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_Gopher_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__"],"mappings":"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","file":"static/js/chunk-6292.0e668979.js","sourcesContent":["import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Endpoint.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Endpoint.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Database.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Database.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=729534ce&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=729534ce&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('settings.settings')))]),_vm._v(\" \"),_c('el-tabs',{attrs:{\"tab-position\":_vm.tabPosition}},[_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.activityPub')}},[_c('activity-pub')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.auth')}},[_c('authentication')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.autoLinker')}},[_c('auto-linker')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.esshd')}},[_c('esshd')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.captcha')}},[_c('captcha')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.database')}},[_c('database')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.endpoint')}},[_c('endpoint')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.frontend')}},[_c('frontend')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.gopher')}},[_c('gopher')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.http')}},[_c('http')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.instance')}},[_c('instance')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.jobQueue')}},[_c('job-queue')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.logger')}},[_c('logger')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.mailer')}},[_c('mailer')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.mediaProxy')}},[_c('media-proxy')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.metadata')}},[_c('metadata')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.mrf')}},[_c('mrf')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.rateLimiters')}},[_c('rate-limiters')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.upload')}},[_c('upload')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.webPush')}},[_c('web-push')],1),_vm._v(\" \"),_c('el-tab-pane',{attrs:{\"label\":_vm.$t('settings.other')}},[_c('other')],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./ActivityPub.vue?vue&type=template&id=633b0e1e&\"\nimport script from \"./ActivityPub.vue?vue&type=script&lang=js&\"\nexport * from \"./ActivityPub.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ActivityPub.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"activityPub\",attrs:{\"model\":_vm.activityPub,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Unfollow blocked\"}},[_c('el-switch',{attrs:{\"value\":_vm.activityPub.unfollow_blocked},on:{\"change\":function($event){return _vm.updateSetting($event, 'activitypub', 'unfollow_blocked')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whether blocks result in people getting unfollowed\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Outgoing blocks\"}},[_c('el-switch',{attrs:{\"value\":_vm.activityPub.outgoing_blocks},on:{\"change\":function($event){return _vm.updateSetting($event, 'activitypub', 'outgoing_blocks')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whether to federate blocks to other instances\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Follow handshake timeout\"}},[_c('el-input-number',{staticClass:\"top-margin\",attrs:{\"value\":_vm.activityPub.follow_handshake_timeout,\"step\":100,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'activitypub', 'follow_handshake_timeout')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Sign object fetches\"}},[_c('el-switch',{attrs:{\"value\":_vm.activityPub.sign_object_fetches},on:{\"change\":function($event){return _vm.updateSetting($event, 'activitypub', 'sign_object_fetches')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Sign object fetches with HTTP signatures\")])],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"user\",attrs:{\"model\":_vm.user,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Deny follow blocked\"}},[_c('el-switch',{attrs:{\"value\":_vm.user.deny_follow_blocked},on:{\"change\":function($event){return _vm.updateSetting($event, 'user', 'deny_follow_blocked')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whether to disallow following an account that has blocked the user in question\")])],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Authentication.vue?vue&type=template&id=2e021d34&\"\nimport script from \"./Authentication.vue?vue&type=script&lang=js&\"\nexport * from \"./Authentication.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Authentication.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Authentication.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"pleromaAuthenticator\",attrs:{\"model\":_vm.pleromaAuthenticator,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Authentication type\"}},[_c('el-select',{attrs:{\"value\":_vm.pleromaAuthenticator.value,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Auth.Authenticator', 'value')}}},[_c('el-option',{attrs:{\"label\":\"None\",\"value\":\"\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"Pleroma.Web.Auth.PleromaAuthenticator // Default database authenticator\",\"value\":\"Pleroma.Web.Auth.PleromaAuthenticator\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"Pleroma.Web.Auth.LDAPAuthenticator // LDAP authenticator\",\"value\":\"Pleroma.Web.Auth.LDAPAuthenticator\"}})],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"auth\",attrs:{\"model\":_vm.auth,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Authentication settings:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Auth template\"}},[_c('el-input',{attrs:{\"value\":_vm.auth.auth_template},on:{\"input\":function($event){return _vm.updateSetting($event, 'auth', 'auth_template')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Authentication form template. By default it's\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"show.html\")]),_vm._v(\" which corresponds to\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"lib/pleroma/web/templates/o_auth/o_auth/show.html.eex.\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"OAuth consumer template\"}},[_c('el-input',{attrs:{\"value\":_vm.auth.oauth_consumer_template},on:{\"input\":function($event){return _vm.updateSetting($event, 'auth', 'oauth_consumer_template')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"OAuth consumer mode authentication form template. By default it's\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"consumer.html\")]),_vm._v(\" which corresponds to\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex.\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"OAuth consumer strategies\"}},[_c('el-select',{attrs:{\"value\":_vm.auth.oauth_consumer_strategies || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'auth', 'oauth_consumer_strategies')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The list of enabled OAuth consumer strategies; by default it's set by\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"OAUTH_CONSUMER_STRATEGIES\")]),_vm._v(\"\\n environment variable. You can enter values in the following format: \"),_c('span',{staticClass:\"code\"},[_vm._v(\"'a:foo b:baz'\")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"ldap\",attrs:{\"model\":_vm.ldap,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{staticClass:\"options-paragraph-container\"},[_c('p',{staticClass:\"options-paragraph\"},[_vm._v(\"Use LDAP for user authentication. When a user logs in to the Pleroma\\n instance, the name and password will be verified by trying to authenticate\\n (bind) to an LDAP server. If a user exists in the LDAP directory but there\\n is no account with the same name yet on the Pleroma instance then a new\\n Pleroma account will be created with the same name as the LDAP user name.\")])]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"LDAP Authenticator:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.ldap.enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'ldap', 'enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enables LDAP authentication\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Host\"}},[_c('el-input',{attrs:{\"value\":_vm.ldap.host},on:{\"input\":function($event){return _vm.updateSetting($event, 'ldap', 'host')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"LDAP server hostname\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Port\"}},[_c('el-input',{attrs:{\"value\":_vm.ldap.port},on:{\"input\":function($event){return _vm.updateSetting($event, 'ldap', 'port')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"LDAP port, e.g. 389 or 636\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"SSL\"}},[_c('el-switch',{attrs:{\"value\":_vm.ldap.ssl},on:{\"change\":function($event){return _vm.updateSetting($event, 'ldap', 'ssl')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"True to use SSL, usually implies the port 636\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"TLS\"}},[_c('el-switch',{attrs:{\"value\":_vm.ldap.tls},on:{\"change\":function($event){return _vm.updateSetting($event, 'ldap', 'tls')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"True to start TLS, usually implies the port 389\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Base\"}},[_c('el-input',{attrs:{\"value\":_vm.ldap.base},on:{\"input\":function($event){return _vm.updateSetting($event, 'ldap', 'base')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"LDAP base, e.g. \"),_c('span',{staticClass:\"code\"},[_vm._v(\"'dc=example,dc=com'\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"UID\"}},[_c('el-input',{attrs:{\"value\":_vm.ldap.uid},on:{\"input\":function($event){return _vm.updateSetting($event, 'ldap', 'uid')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"LDAP attribute name to authenticate the user, e.g. when\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"'cn'\")]),_vm._v(\", the filter will be \"),_c('span',{staticClass:\"code\"},[_vm._v(\"'cn=username,base'\")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"ueberauth\",attrs:{\"model\":_vm.ueberauth,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{staticClass:\"options-paragraph-container\",attrs:{\"label\":\"OAuth consumer mode\"}},[_c('p',{staticClass:\"options-paragraph\"},[_vm._v(\"\\n OAuth consumer mode allows sign in / sign up via external OAuth providers\\n (e.g. Twitter, Facebook, Google, Microsoft, etc.). Implementation is based on Ueberauth; see the list of\\n \"),_c('a',{attrs:{\"href\":\"https://github.com/ueberauth/ueberauth/wiki/List-of-Strategies\",\"rel\":\"nofollow noreferrer noopener\",\"target\":\"_blank\"}},[_vm._v(\"\\n available strategies.\\n \")])]),_vm._v(\" \"),_c('p',{staticClass:\"options-paragraph\"},[_vm._v(\"\\n Note: each strategy is shipped as a separate dependency; in order to get the strategies, run\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"OAUTH_CONSUMER_STRATEGIES=\\\"...\\\" mix deps.get\")]),_vm._v(\",\\n e.g. \"),_c('span',{staticClass:\"code\"},[_vm._v(\"OAUTH_CONSUMER_STRATEGIES=\\\"twitter facebook google microsoft\\\" mix deps.get\")]),_vm._v(\".\\n The server should also be started with \"),_c('span',{staticClass:\"code\"},[_vm._v(\"OAUTH_CONSUMER_STRATEGIES=\\\"...\\\" mix phx.server\")]),_vm._v(\"\\n in case you enable any strategies.\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"options-paragraph\"},[_vm._v(\"\\n Note: each strategy requires separate setup (on external provider side and Pleroma side).\\n Below are the guidelines on setting up most popular strategies.\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"options-paragraph\"},[_vm._v(\"\\n Note: make sure that \"),_c('span',{staticClass:\"code\"},[_vm._v(\"'SameSite=Lax'\")]),_vm._v(\" is set in\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"extra_cookie_attrs\")]),_vm._v(\" when you have this feature enabled.\\n OAuth consumer mode will not work with \"),_c('span',{staticClass:\"code\"},[_vm._v(\"'SameSite=Strict'\")])]),_vm._v(\" \"),_c('p',{staticClass:\"options-paragraph\"},[_vm._v(\"For Twitter,\\n \"),_c('a',{attrs:{\"href\":\"https://developer.twitter.com/en/apps\",\"rel\":\"nofollow noreferrer noopener\",\"target\":\"_blank\"}},[_vm._v(\"\\n register an app,\\n \")]),_vm._v(\"\\n configure callback URL to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"https:///oauth/twitter/callback\")])]),_vm._v(\" \"),_c('p',{staticClass:\"options-paragraph\"},[_vm._v(\"For Facebook,\\n \"),_c('a',{attrs:{\"href\":\"https://developers.facebook.com/apps\",\"rel\":\"nofollow noreferrer noopener\",\"target\":\"_blank\"}},[_vm._v(\"\\n register an app,\\n \")]),_vm._v(\"\\n configure callback URL to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"https:///oauth/facebook/callback\")]),_vm._v(\",\\n enable Facebook Login service at\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"https://developers.facebook.com/apps//fb-login/settings/\")])]),_vm._v(\" \"),_c('p',{staticClass:\"options-paragraph\"},[_vm._v(\"For Google,\\n \"),_c('a',{attrs:{\"href\":\"https://console.developers.google.com/\",\"rel\":\"nofollow noreferrer noopener\",\"target\":\"_blank\"}},[_vm._v(\"\\n register an app,\\n \")]),_vm._v(\"\\n configure callback URL to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"https:///oauth/google/callback\")])]),_vm._v(\" \"),_c('p',{staticClass:\"options-paragraph\"},[_vm._v(\"For Microsoft,\\n \"),_c('a',{attrs:{\"href\":\"https://portal.azure.com\",\"rel\":\"nofollow noreferrer noopener\",\"target\":\"_blank\"}},[_vm._v(\"\\n register an app,\\n \")]),_vm._v(\"\\n configure callback URL to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"https:///oauth/microsoft/callback\")])]),_vm._v(\" \"),_c('p',{staticClass:\"options-paragraph\"},[_vm._v(\"\\n Once the app is configured on external OAuth provider side, add app's credentials and strategy-specific settings\\n per strategy's documentation (e.g.\\n \"),_c('a',{attrs:{\"href\":\"https://github.com/ueberauth/ueberauth_twitter\",\"rel\":\"nofollow noreferrer noopener\",\"target\":\"_blank\"}},[_vm._v(\"\\n ueberauth_twitter\\n \")]),_vm._v(\").\\n \")])]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Ueberauth:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Base path\"}},[_c('el-input',{attrs:{\"value\":_vm.ueberauth.base_path},on:{\"input\":function($event){return _vm.updateSetting($event, 'ueberauth', 'base_path')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"facebook\",attrs:{\"model\":_vm.facebook,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Facebook:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Client ID\"}},[_c('el-input',{attrs:{\"value\":_vm.facebook.client_id},on:{\"input\":function($event){return _vm.updateSetting($event, 'Ueberauth.Strategy.Facebook.OAuth', 'client_id')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Client secret\"}},[_c('el-input',{attrs:{\"value\":_vm.facebook.client_secret},on:{\"input\":function($event){return _vm.updateSetting($event, 'Ueberauth.Strategy.Facebook.OAuth', 'client_secret')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Redirect URI\"}},[_c('el-input',{attrs:{\"value\":_vm.facebook.redirect_uri},on:{\"input\":function($event){return _vm.updateSetting($event, 'Ueberauth.Strategy.Facebook.OAuth', 'redirect_uri')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"twitter\",attrs:{\"model\":_vm.twitter,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Twitter:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Consumer key\"}},[_c('el-input',{attrs:{\"value\":_vm.twitter.consumer_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'Ueberauth.Strategy.Twitter.OAuth', 'consumer_key')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Consumer secret\"}},[_c('el-input',{attrs:{\"value\":_vm.twitter.consumer_secret},on:{\"input\":function($event){return _vm.updateSetting($event, 'Ueberauth.Strategy.Twitter.OAuth', 'consumer_secret')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"google\",attrs:{\"model\":_vm.google,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Google:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Client ID\"}},[_c('el-input',{attrs:{\"value\":_vm.google.client_id},on:{\"input\":function($event){return _vm.updateSetting($event, 'Ueberauth.Strategy.Google.OAuth', 'client_id')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Client secret\"}},[_c('el-input',{attrs:{\"value\":_vm.google.client_secret},on:{\"input\":function($event){return _vm.updateSetting($event, 'Ueberauth.Strategy.Google.OAuth', 'client_secret')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Redirect URI\"}},[_c('el-input',{attrs:{\"value\":_vm.google.redirect_uri},on:{\"input\":function($event){return _vm.updateSetting($event, 'Ueberauth.Strategy.Google.OAuth', 'redirect_uri')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"microsoft\",attrs:{\"model\":_vm.microsoft,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Microsoft:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Client ID\"}},[_c('el-input',{attrs:{\"value\":_vm.microsoft.client_id},on:{\"input\":function($event){return _vm.updateSetting($event, 'Ueberauth.Strategy.Microsoft.OAuth', 'client_id')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Client secret\"}},[_c('el-input',{attrs:{\"value\":_vm.microsoft.client_secret},on:{\"input\":function($event){return _vm.updateSetting($event, 'Ueberauth.Strategy.Microsoft.OAuth', 'client_secret')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"oauth2\",attrs:{\"model\":_vm.oauth2,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"OAuth 2.0 Provider:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Token expires in (s)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.oauth2.token_expires_in,\"step\":10,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'oauth2', 'token_expires_in')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The lifetime in seconds of the access token\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Issue new refresh token\"}},[_c('el-switch',{attrs:{\"value\":_vm.oauth2.issue_new_refresh_token},on:{\"change\":function($event){return _vm.updateSetting($event, 'oauth2', 'issue_new_refresh_token')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Keeps old refresh token or generate new refresh token when to obtain an access token\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Clean expired token\"}},[_c('el-switch',{attrs:{\"value\":_vm.oauth2.clean_expired_tokens},on:{\"change\":function($event){return _vm.updateSetting($event, 'oauth2', 'clean_expired_tokens')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enable a background job to clean expired oauth tokens. Defaults to false.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Clean expired token interval\"}},[_c('el-input-number',{attrs:{\"value\":_vm.oauth2.clean_expired_tokens_interval / 3600000,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event * 3600000, 'oauth2', 'clean_expired_tokens_interval')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Interval to run the job to clean expired tokens. Defaults to 24 hours.\")])],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./AutoLinker.vue?vue&type=template&id=62014b5c&\"\nimport script from \"./AutoLinker.vue?vue&type=script&lang=js&\"\nexport * from \"./AutoLinker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AutoLinker.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"AutoLinker.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('el-form',{ref:\"autoLinker\",attrs:{\"model\":_vm.autoLinker,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Class\"}},[_c('el-switch',{attrs:{\"value\":_vm.booleanClass},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, 'auto_linker', 'opts', 'class')}}}),_vm._v(\" \"),(!_vm.booleanClass)?_c('p',{staticClass:\"expl\"},[_vm._v(\"Specify the class to be added to the generated link. False to clear.\")]):_vm._e()],1),_vm._v(\" \"),(_vm.booleanClass)?_c('el-form-item',[_c('el-input',{attrs:{\"value\":_vm.getStringValue('class')},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, 'auto_linker', 'opts', 'class')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Specify the class to be added to the generated link. False to clear.\")])],1):_vm._e(),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Rel\"}},[_c('el-switch',{attrs:{\"value\":_vm.booleanRel},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, 'auto_linker', 'opts', 'rel')}}}),_vm._v(\" \"),(!_vm.booleanRel)?_c('p',{staticClass:\"expl\"},[_vm._v(\"Override the rel attribute. False to clear\")]):_vm._e()],1),_vm._v(\" \"),(_vm.booleanRel)?_c('el-form-item',[_c('el-input',{attrs:{\"value\":_vm.getStringValue('rel')},on:{\"input\":function($event){return _vm.processTwoTypeValue($event, 'auto_linker', 'opts', 'rel')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Override the rel attribute. False to clear\")])],1):_vm._e(),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"New window\"}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinker.opts.new_window},on:{\"change\":function($event){return _vm.processNestedData($event, 'auto_linker', 'opts', 'new_window')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Set to false to remove \"),_c('span',{staticClass:\"code\"},[_vm._v(\"target='_blank'\")]),_vm._v(\" attribute\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Scheme\"}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinker.opts.scheme},on:{\"change\":function($event){return _vm.processNestedData($event, 'auto_linker', 'opts', 'scheme')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Set to true to link urls with schema \"),_c('span',{staticClass:\"code\"},[_vm._v(\"http://google.com\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Truncate\"}},[_c('el-switch',{attrs:{\"value\":_vm.booleanTruncate},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, 'auto_linker', 'opts', 'truncate')}}}),_vm._v(\" \"),(!_vm.booleanTruncate)?_c('p',{staticClass:\"expl\"},[_vm._v(\"Set to a number to truncate urls longer then the number.\\n Truncated urls will end in \"),_c('span',{staticClass:\"code\"},[_vm._v(\"..\")])]):_vm._e()],1),_vm._v(\" \"),(_vm.booleanTruncate)?_c('el-form-item',[_c('el-input-number',{attrs:{\"value\":_vm.getStringValue('truncate'),\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processTwoTypeValue($event, 'auto_linker', 'opts', 'truncate')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Specify the class to be added to the generated link. False to clear.\")])],1):_vm._e(),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Strip prefix\"}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinker.opts.strip_prefix},on:{\"change\":function($event){return _vm.processNestedData($event, 'auto_linker', 'opts', 'strip_prefix')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Strip the scheme prefix\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Extra\"}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinker.opts.extra},on:{\"change\":function($event){return _vm.processNestedData($event, 'auto_linker', 'opts', 'extra')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Link urls with rarely used schemes (magnet, ipfs, irc, etc.)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Validate TLD\"}},[_c('el-switch',{attrs:{\"value\":_vm.autoLinker.opts.validate_tld},on:{\"change\":function($event){return _vm.processNestedData($event, 'auto_linker', 'opts', 'validate_tld')}}})],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Captcha.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Captcha.vue?vue&type=template&id=14a0e05b&\"\nimport script from \"./Captcha.vue?vue&type=script&lang=js&\"\nexport * from \"./Captcha.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Captcha.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Captcha.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"captcha\",attrs:{\"model\":_vm.captcha,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.captcha.enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Captcha', 'enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whether the captcha should be shown on registration\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Valid for (s)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.captcha.seconds_valid,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Captcha', 'seconds_valid')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The time in seconds for which the captcha is valid\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Method\"}},[_c('el-select',{attrs:{\"value\":_vm.captcha.method,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Captcha', 'method')}}},[_c('el-option',{attrs:{\"label\":\"Pleroma.Captcha.Kocaptcha\",\"value\":\"Pleroma.Captcha.Kocaptcha\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The method/service to use for captcha\")])],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"kocaptcha\",attrs:{\"model\":_vm.kocaptcha,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Kocaptcha Endpoint\"}},[_c('el-input',{attrs:{\"value\":_vm.kocaptcha.endpoint},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Captcha.Kocaptcha', 'endpoint')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Kocaptcha is a captcha service with a single API endpoint, the source code is\\n \"),_c('a',{attrs:{\"href\":\"https://github.com/koto-bank/kocaptcha\",\"rel\":\"nofollow noreferrer noopener\",\"target\":\"_blank\"}},[_vm._v(\"here\")]),_vm._v(\".\\n The default endpoint \"),_c('span',{staticClass:\"code\"},[_vm._v(\"'https://captcha.kotobank.ch'\")]),_vm._v(\" is hosted by the developer.\\n \")])],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Database.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Database.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Database.vue?vue&type=template&id=5fed6c2e&\"\nimport script from \"./Database.vue?vue&type=script&lang=js&\"\nexport * from \"./Database.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Database.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Database.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"database\",attrs:{\"model\":_vm.database,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Database settings:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"RUM enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.database.rum_enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'database', 'rum_enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"RUM indexes are an alternative indexing scheme that is not included in PostgreSQL by default.\\n While they may eventually be mainlined, for now they have to be installed as a PostgreSQL extension from\\n \"),_c('a',{attrs:{\"href\":\"https://github.com/postgrespro/rum\",\"rel\":\"nofollow noreferrer noopener\",\"target\":\"_blank\"}},[_vm._v(\"\\n https://github.com/postgrespro/rum.\\n \")])]),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Their advantage over the standard GIN indexes is that they allow efficient ordering of search results by timestamp,\\n which makes search queries a lot faster on larger servers, by one or two orders of magnitude.\\n They take up around 3 times as much space as GIN indexes.\")]),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"To enable them, both the \"),_c('span',{staticClass:\"code\"},[_vm._v(\"rum_enabled\")]),_vm._v(\" flag has to be set and the following special\\n migration has to be run: \"),_c('span',{staticClass:\"code\"},[_vm._v(\"mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/\")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"ectoRepos\",attrs:{\"model\":_vm.ectoRepos,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Ecto repos\"}},[_c('el-select',{attrs:{\"value\":_vm.ectoRepos.value || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'ecto_repos', 'value')}}},[_c('el-option',{attrs:{\"label\":\"Pleroma.Repo\",\"value\":\"Pleroma.Repo\"}})],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"pleromaRepo\",attrs:{\"model\":_vm.pleromaRepo,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Pleroma Repo configuration:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Name\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.name},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'name')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The name of the Repo supervisor process\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Priv\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.priv},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'priv')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The directory where to keep repository data, like migrations, schema and more. Defaults to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"\\n priv/YOUR_REPO\")]),_vm._v(\". It must always point to a subdirectory inside the priv directory\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"URL\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.url},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'url')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"An URL that specifies storage information\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Log level\"}},[_c('el-select',{attrs:{\"value\":_vm.pleromaRepo.log,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'log')}}},[_c('el-option',{attrs:{\"value\":false,\"label\":\"False - disables logging for that repository.\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":debug\",\"label\":\":debug - for debug-related messages\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":info\",\"label\":\":info - for information of any kind\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":warn\",\"label\":\":warn - for warnings\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":error\",\"label\":\":error - for errors\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The log level used when logging the query with Elixir's Logger\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Pool size\"}},[_c('el-input-number',{attrs:{\"value\":_vm.pleromaRepo.pool_size,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'pool_size')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The size of the pool used by the connection module. Defaults to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"10\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Telemetry prefix\"}},[_c('el-select',{attrs:{\"value\":_vm.pleromaRepo.telemetry_prefix || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'telemetry_prefix')}}},[_c('el-option',{attrs:{\"label\":\":my_app\",\"value\":\":my_app\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\":repo\",\"value\":\":repo\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\":query\",\"value\":\":query\"}})],1)],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Types\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.types},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'types')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Telemetry event\"}},[_c('el-select',{attrs:{\"value\":_vm.pleromaRepo.telemetry_event || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'telemetry_event')}}},[_c('el-option',{attrs:{\"label\":\"Pleroma.Repo.Instrumenter\",\"value\":\"Pleroma.Repo.Instrumenter\"}})],1)],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Connection options:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Hostname\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.hostname},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'hostname')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Server hostname\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Socket dir\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.socket_dir},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'socket_dir')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Connect to Postgres via UNIX sockets in the given directory. The socket name is derived based on the port.\\n This is the preferred method for configuring sockets and it takes precedence over the hostname.\\n If you are connecting to a socket outside of the Postgres convention, use \"),_c('span',{staticClass:\"code\"},[_vm._v(\":socket\")]),_vm._v(\" instead.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Socket\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.socket},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'socket')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Connect to Postgres via UNIX sockets in the given path. This option takes precedence over the\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\":hostname\")]),_vm._v(\" and \"),_c('span',{staticClass:\"code\"},[_vm._v(\":socket_dir\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Username\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.username},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'username')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Password\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.password},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'password')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Port\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.port},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'port')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Server port (default: 5432)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Database\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.database},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'database')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The database to connect to\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Maintenance database\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.maintenance_database},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'maintenance_database')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Specifies the name of the database to connect to when creating or dropping the database. Defaults to \\\"postgres\\\"\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Pool\"}},[_c('el-input',{attrs:{\"value\":_vm.pleromaRepo.pool},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'pool')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The connection pool module, defaults to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"DBConnection.ConnectionPool\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"SSL\"}},[_c('el-switch',{attrs:{\"value\":_vm.pleromaRepo.ssl},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'ssl')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Set to true if ssl should be used\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Connect timeout\"}},[_c('el-input-number',{attrs:{\"value\":_vm.pleromaRepo.connect_timeout,\"step\":1000,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'connect_timeout')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The timeout for establishing new connections. Defaults to 5000\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Prepare\"}},[_c('el-select',{attrs:{\"value\":_vm.pleromaRepo.prepare,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Repo', 'prepare')}}},[_c('el-option',{attrs:{\"label\":\"named\",\"value\":\":named\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"unnamed\",\"value\":\":unnamed\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"How to prepare queries, either \"),_c('span',{staticClass:\"code\"},[_vm._v(\":named\")]),_vm._v(\" to use named queries or\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\":unnamed\")]),_vm._v(\" to force unnamed queries (default: :named)\")])],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const options = {\n federationPublisherModulesOptions: [\n { label: 'Pleroma.Web.ActivityPub.Publisher', value: 'Pleroma.Web.ActivityPub.Publisher' },\n { label: 'Pleroma.Web.Websub', value: 'Pleroma.Web.Websub' },\n { label: 'Pleroma.Web.Salmon', value: 'Pleroma.Web.Salmon' }],\n rewritePolicyOptions: [\n { label: 'NoOpPolicy', value: 'Pleroma.Web.ActivityPub.MRF.NoOpPolicy', expl: 'NoOpPolicy: Doesn’t modify activities (default)' },\n { label: 'DropPolicy', value: 'Pleroma.Web.ActivityPub.MRF.DropPolicy', expl: 'DropPolicy: Drops all activities. It generally doesn’t makes sense to use in production' },\n { label: 'SimplePolicy', value: 'Pleroma.Web.ActivityPub.MRF.SimplePolicy', expl: 'SimplePolicy: Restrict the visibility of activities from certains instances (See :mrf_simple section)' },\n { label: 'TagPolicy', value: 'Pleroma.Web.ActivityPub.MRF.TagPolicy', expl: 'Applies policies to individual users based on tags, which can be set using pleroma-fe/admin-fe/any other app that supports Pleroma Admin API. For example it allows marking posts from individual users nsfw (sensitive)' },\n { label: 'SubchainPolicy', value: 'Pleroma.Web.ActivityPub.MRF.SubchainPolicy', expl: 'Selectively runs other MRF policies when messages match (see :mrf_subchain section)' },\n { label: 'RejectNonPublic', value: 'Pleroma.Web.ActivityPub.MRF.RejectNonPublic', expl: 'RejectNonPublic: Drops posts with non-public visibility settings (See :mrf_rejectnonpublic section)' },\n { label: 'EnsureRePrepended', value: 'Pleroma.Web.ActivityPub.MRF.EnsureRePrepended', expl: 'EnsureRePrepended: Rewrites posts to ensure that replies to posts with subjects do not have an identical subject and instead begin with re:' },\n { label: 'AntiLinkSpamPolicy', value: 'Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy', expl: 'Rejects posts from likely spambots by rejecting posts from new users that contain links' },\n { label: 'MediaProxyWarmingPolicy', value: 'Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy', expl: 'Crawls attachments using their MediaProxy URLs so that the MediaProxy cache is primed' },\n { label: 'MentionPolicy', value: 'Pleroma.Web.ActivityPub.MRF.MentionPolicy', expl: 'Drops posts mentioning configurable users. (see :mrf_mention section)' },\n { label: 'VocabularyPolicy', value: 'Pleroma.Web.ActivityPub.MRF.VocabularyPolicy', expl: 'Restricts activities to a configured set of vocabulary' }\n ],\n quarantinedInstancesOptions: [],\n autofollowedNicknamesOptions: [],\n uriSchemesOptions: [\n { label: 'https', value: 'https' },\n { label: 'http', value: 'http' },\n { label: 'dat', value: 'dat' },\n { label: 'dweb', value: 'dweb' },\n { label: 'gopher', value: 'gopher' },\n { label: 'ipfs', value: 'ipfs' },\n { label: 'ipns', value: 'ipns' },\n { label: 'irc', value: 'irc' },\n { label: 'ircs', value: 'ircs' },\n { label: 'magnet', value: 'magnet' },\n { label: 'mailto', value: 'mailto' },\n { label: 'mumble', value: 'mumble' },\n { label: 'ssb', value: 'ssb' },\n { label: 'xmpp', value: 'xmpp' }],\n themeOptions: [\n { label: 'pleroma-dark', value: 'pleroma-dark' },\n { label: 'pleroma-light', value: 'pleroma-light' },\n { label: 'classic-dark', value: 'classic-dark' },\n { label: 'bird', value: 'bird' },\n { label: 'ir-black', value: 'ir-black' },\n { label: 'monokai', value: 'monokai' },\n { label: 'mammal', value: 'mammal' },\n { label: 'redmond-xx', value: 'redmond-xx' },\n { label: 'redmond-xx-se', value: 'redmond-xx-se' },\n { label: 'redmond-xxi', value: 'redmond-xxi' },\n { label: 'breezy-dark', value: 'breezy-dark' },\n { label: 'breezy-light', value: 'breezy-light' }],\n instrumentersOptions: [{ label: 'Pleroma.Web.Endpoint.Instrumenter', value: 'Pleroma.Web.Endpoint.Instrumenter' }],\n extraCookieAttrsOptions: [{ label: 'SameSite=Lax', value: 'SameSite=Lax' }],\n hackneyPoolsOptions: [{ label: 'Federation', value: ':federation', max_connections: 50, timeout: 150000 },\n { label: 'Media', value: ':media', max_connections: 50, timeout: 150000 },\n { label: 'Upload', value: ':upload', max_connections: 25, timeout: 300000 }],\n whitelistedContentTypesOptions: [{ label: 'image/gif', value: 'image/gif' },\n { label: 'image/jpeg', value: 'image/jpeg' },\n { label: 'image/jpg', value: 'image/jpg' },\n { label: 'image/png', value: 'image/png' },\n { label: 'image/svg+xml', value: 'image/svg+xml' },\n { label: 'audio/mpeg', value: 'audio/mpeg' },\n { label: 'audio/mp3', value: 'audio/mp3' },\n { label: 'video/webm', value: 'video/webm' },\n { label: 'video/mp4', value: 'video/mp4' },\n { label: 'video/quicktime', value: 'video/quicktime' }],\n mogrifyActionsOptions: [{ label: 'strip', value: 'strip' }, { label: 'auto-orient', value: 'auto-orient' }],\n adapterOptions: [\n { label: 'Swoosh.Adapters.Sendmail', value: 'Swoosh.Adapters.Sendmail' },\n { label: 'Swoosh.Adapters.SMTP', value: 'Swoosh.Adapters.SMTP' },\n { label: 'Swoosh.Adapters.Sendgrid', value: 'Swoosh.Adapters.Sendgrid' },\n { label: 'Swoosh.Adapters.Mandrill', value: 'Swoosh.Adapters.Mandrill' },\n { label: 'Swoosh.Adapters.Mailgun', value: 'Swoosh.Adapters.Mailgun' },\n { label: 'Swoosh.Adapters.Mailjet', value: 'Swoosh.Adapters.Mailjet' },\n { label: 'Swoosh.Adapters.Postmark', value: 'Swoosh.Adapters.Postmark' },\n { label: 'Swoosh.Adapters.SparkPost', value: 'Swoosh.Adapters.SparkPost' },\n { label: 'Swoosh.Adapters.AmazonSES', value: 'Swoosh.Adapters.AmazonSES' },\n { label: 'Swoosh.Adapters.Dyn', value: 'Swoosh.Adapters.Dyn' },\n { label: 'Swoosh.Adapters.SocketLabs', value: 'Swoosh.Adapters.SocketLabs' },\n { label: 'Swoosh.Adapters.Gmail', value: 'Swoosh.Adapters.Gmail' },\n { label: 'Swoosh.Adapters.Local', value: 'Swoosh.Adapters.Local' }\n ],\n loggerBackendsOptions: [\n { label: 'Console // log to stdout', value: JSON.stringify(':console') },\n { label: 'Ex_syslogger // log to syslog', value: JSON.stringify({ 'tuple': ['ExSyslogger', ':ex_syslogger'] }) },\n { label: 'Quack.Logger // log to Slack', value: JSON.stringify('Quack.Logger') }\n ],\n restrictedNicknamesOptions: [\n { value: '.well-known' },\n { value: '~' },\n { value: 'about' },\n { value: 'activities' },\n { value: 'api' },\n { value: 'auth' },\n { value: 'check_password' },\n { value: 'dev' },\n { value: 'friend-requests' },\n { value: 'inbox' },\n { value: 'internal' },\n { value: 'main' },\n { value: 'media' },\n { value: 'nodeinfo' },\n { value: 'notice' },\n { value: 'oauth' },\n { value: 'objects' },\n { value: 'ostatus_subscribe' },\n { value: 'pleroma' },\n { value: 'proxy' },\n { value: 'push' },\n { value: 'registration' },\n { value: 'relay' },\n { value: 'settings' },\n { value: 'status' },\n { value: 'tag' },\n { value: 'user-search' },\n { value: 'user_exists' },\n { value: 'users' },\n { value: 'web' }\n ]\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Endpoint.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Endpoint.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Endpoint.vue?vue&type=template&id=911facda&\"\nimport script from \"./Endpoint.vue?vue&type=script&lang=js&\"\nexport * from \"./Endpoint.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Endpoint.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Endpoint.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading)?_c('el-form',{ref:\"endpoint\",attrs:{\"model\":_vm.endpoint,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Instrumenters\"}},[_c('el-select',{attrs:{\"value\":_vm.endpoint.instrumenters || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Endpoint', 'instrumenters')}}},_vm._l((_vm.instrumentersOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Compile-time configuration:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Code reloader\"}},[_c('el-switch',{attrs:{\"value\":_vm.endpoint.code_reloader},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Endpoint', 'code_reloader')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enables code reloading functionality\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Debug errors\"}},[_c('el-switch',{attrs:{\"value\":_vm.endpoint.debug_errors},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Endpoint', 'debug_errors')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enables using \"),_c('span',{staticClass:\"code\"},[_vm._v(\"Plug.Debugger\")]),_vm._v(\" functionality for debugging failures in the application.\\n Recommended to be set to true only in development as it allows listing of the application source code during debugging. Defaults to false.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Render errors:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"View\"}},[_c('el-input',{attrs:{\"value\":_vm.endpoint.render_errors.view},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'render_errors', 'view')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Accepts\"}},[_c('el-select',{attrs:{\"value\":_vm.endpoint.render_errors.accepts || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'render_errors', 'accepts')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Layout\"}},[_c('el-switch',{attrs:{\"value\":_vm.endpoint.render_errors.layout},on:{\"change\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'render_errors', 'layout')}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Runtime configuration:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Cache static manifest\"}},[_c('el-input',{attrs:{\"value\":_vm.endpoint.cache_static_manifest},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Endpoint', 'cache_static_manifest')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A path to a json manifest file that contains static files and their digested version.\\n This is typically set to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"'priv/static/cache_manifest.json'\")]),_vm._v(\"\\n which is the file automatically generated by \"),_c('span',{staticClass:\"code\"},[_vm._v(\"mix phx.digest\")])])],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"HTTP:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Configure HTTP server\"}},[_c('el-switch',{attrs:{\"value\":_vm.configureHttp},on:{\"change\":function($event){return _vm.showServerConfig($event, 'http')}}})],1),_vm._v(\" \"),(_vm.configureHttp)?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Dispatch\"}},[_c('editor',{attrs:{\"height\":\"150\",\"width\":\"100%\",\"lang\":\"elixir\",\"theme\":\"chrome\"},model:{value:(_vm.editorContentHttp),callback:function ($$v) {_vm.editorContentHttp=$$v},expression:\"editorContentHttp\"}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"You can type in Elixir code here\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Port\"}},[_c('el-input',{attrs:{\"value\":_vm.endpointHttp.port},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'http', 'port')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The port to run the server. Defaults to 4000 (http) and 4040 (https).\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"IP\"}},[_c('el-input',{attrs:{\"value\":_vm.endpointHttp.ip,\"placeholder\":\"xxx.xxx.xxx.xx\"},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'http', 'ip')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The ip to bind the server to\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Reference name\"}},[_c('el-input',{attrs:{\"value\":_vm.endpointHttp.ref},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'http', 'ref')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The reference name to be used. Defaults to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"plug.HTTP\")]),_vm._v(\" (http) and\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"plug.HTTPS\")]),_vm._v(\" (https). This is the value that needs to be given on shutdown.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Compress\"}},[_c('el-switch',{attrs:{\"value\":_vm.endpointHttp.compress},on:{\"change\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'http', 'compress')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Cowboy will attempt to compress the response body. Defaults to false.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Timeout in s\"}},[_c('el-input-number',{attrs:{\"value\":_vm.endpointHttp.timeout / 1000,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"input\":function($event){return _vm.processNestedData($event * 1000, 'Pleroma.Web.Endpoint', 'http', 'timeout')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Time in s with no requests before Cowboy closes the connection. Defaults to 5 s.\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"})],1):_vm._e(),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"HTTPS:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Configure HTTPS server\"}},[_c('el-switch',{attrs:{\"value\":_vm.configureHttps},on:{\"change\":function($event){return _vm.showServerConfig($event, 'https')}}})],1),_vm._v(\" \"),(_vm.configureHttps)?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Dispatch\"}},[_c('editor',{attrs:{\"height\":\"150\",\"width\":\"100%\",\"lang\":\"elixir\",\"theme\":\"chrome\"},model:{value:(_vm.editorContentHttps),callback:function ($$v) {_vm.editorContentHttps=$$v},expression:\"editorContentHttps\"}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"You can type in Elixir code here\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Port\"}},[_c('el-input',{attrs:{\"value\":_vm.endpointHttps.port},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'https', 'port')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The port to run the server. Defaults to 4000 (http) and 4040 (https).\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"IP\"}},[_c('el-input',{attrs:{\"value\":_vm.endpointHttps.ip,\"placeholder\":\"xxx.xxx.xxx.xx\"},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'https', 'ip')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The ip to bind the server to\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Reference name\"}},[_c('el-input',{attrs:{\"value\":_vm.endpointHttps.ref},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Endpoint', 'https', 'ref')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The reference name to be used. Defaults to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"plug.HTTP\")]),_vm._v(\" (http) and\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"plug.HTTPS\")]),_vm._v(\" (https). This is the value that needs to be given on shutdown.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Compress\"}},[_c('el-switch',{attrs:{\"value\":_vm.endpointHttps.compress},on:{\"change\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'https', 'compress')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Cowboy will attempt to compress the response body. Defaults to false.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Timeout in s\"}},[_c('el-input-number',{attrs:{\"value\":_vm.endpointHttps.timeout / 1000,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"input\":function($event){return _vm.processNestedData($event * 1000, 'Pleroma.Web.Endpoint', 'https', 'timeout')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Time in s with no requests before Cowboy closes the connection. Defaults to 5 s.\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"})],1):_vm._e(),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Secret key base\"}},[_c('el-input',{attrs:{\"value\":_vm.endpoint.secret_key_base},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Endpoint', 'secret_key_base')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A secret key used as a base to generate secrets for encrypting and signing data. For example, cookies and tokens are signed by default, but they may also be encrypted if desired. Defaults to nil as it must be set per application\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Server\"}},[_c('el-switch',{attrs:{\"value\":_vm.endpoint.server},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Endpoint', 'server')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"When true, starts the web server when the endpoint supervision tree starts. Defaults to false. The \"),_c('span',{staticClass:\"code\"},[_vm._v(\"mix phx.server\")]),_vm._v(\" task automatically sets this to true.\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"URL:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Host\"}},[_c('el-input',{attrs:{\"value\":_vm.endpoint.url.host},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'url', 'host')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The host without the scheme and a post (e.g \"),_c('span',{staticClass:\"code\"},[_vm._v(\"example.com\")]),_vm._v(\", not \"),_c('span',{staticClass:\"code\"},[_vm._v(\"https://example.com:2020\")]),_vm._v(\")\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Scheme\"}},[_c('el-input',{attrs:{\"value\":_vm.endpoint.url.scheme},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'url', 'scheme')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"e.g http, https\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Port\"}},[_c('el-input',{attrs:{\"value\":_vm.endpoint.url.port},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'url', 'port')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Path\"}},[_c('el-input',{attrs:{\"value\":_vm.endpoint.url.path},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'url', 'path')}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Protocol\"}},[_c('el-input',{attrs:{\"value\":_vm.endpoint.protocol},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Endpoint', 'protocol')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Signing salt\"}},[_c('el-input',{attrs:{\"value\":_vm.endpoint.signing_salt},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Endpoint', 'signing_salt')}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"PubSub:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Name\"}},[_c('el-input',{attrs:{\"value\":_vm.endpoint.pubsub.name},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'pubsub', 'name')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Adapter\"}},[_c('el-input',{attrs:{\"value\":_vm.endpoint.pubsub.adapter},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Web.Endpoint', 'pubsub', 'adapter')}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Secure cookie flag\"}},[_c('el-switch',{attrs:{\"value\":_vm.endpoint.secure_cookie_flag},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Endpoint', 'secure_cookie_flag')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Extra cookie attrs\"}},[_c('el-select',{attrs:{\"value\":_vm.endpoint.extra_cookie_attrs || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Endpoint', 'extra_cookie_attrs')}}},_vm._l((_vm.extraCookieAttrsOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{staticClass:\"options-paragraph-container\"},[_c('p',{staticClass:\"options-paragraph\"},[_vm._v(\"Only common options are listed here. You can add more (all configuration options can be viewed\\n \"),_c('a',{attrs:{\"href\":\"https://hexdocs.pm/phoenix/Phoenix.Endpoint.html#module-dynamic-configuration\",\"rel\":\"nofollow noreferrer noopener\",\"target\":\"_blank\"}},[_vm._v(\"here\")]),_vm._v(\")\\n \")])]),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Esshd.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Esshd.vue?vue&type=template&id=153bd8e4&\"\nimport script from \"./Esshd.vue?vue&type=script&lang=js&\"\nexport * from \"./Esshd.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Esshd.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Esshd.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{attrs:{\"label-width\":_vm.labelWidth}},[_c('el-form-item',[_c('p',{staticClass:\"expl\"},[_vm._v(\"Before enabling this you must:\\n \"),_c('ol',{staticClass:\"esshd-list\"},[_c('li',[_vm._v(\"Add \"),_c('span',{staticClass:\"code\"},[_vm._v(\":esshd\")]),_vm._v(\" to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"mix.exs\")]),_vm._v(\" as one of the\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"extra_applications\")])]),_vm._v(\" \"),_c('li',[_vm._v(\"Generate host keys in your\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"priv\")]),_vm._v(\" dir with\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"ssh-keygen -m PEM -N \\\"\\\" -b 2048 -t rsa -f ssh_host_rsa_key\")])])])])])],1),_vm._v(\" \"),_c('el-form',{ref:\"enabled\",attrs:{\"model\":_vm.enabled,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.enabled.value},on:{\"change\":function($event){return _vm.updateSetting($event, 'enabled', 'value')}}})],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"privDir\",attrs:{\"model\":_vm.privDir,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Priv dir\"}},[_c('el-input',{attrs:{\"value\":_vm.privDir.value},on:{\"input\":function($event){return _vm.updateSetting($event, 'priv_dir', 'value')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"You can input relative path here\")])],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"handler\",attrs:{\"model\":_vm.handler,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Handler\"}},[_c('el-input',{attrs:{\"value\":_vm.handler.value},on:{\"input\":function($event){return _vm.updateSetting($event, 'handler', 'value')}}})],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"port\",attrs:{\"model\":_vm.port,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Port\"}},[_c('el-input',{attrs:{\"value\":_vm.port.value},on:{\"input\":function($event){return _vm.updateSetting($event, 'port', 'value')}}})],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"passwordAuthenticator\",attrs:{\"model\":_vm.passwordAuthenticator,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Password authenticator\"}},[_c('el-input',{attrs:{\"value\":_vm.passwordAuthenticator.value},on:{\"input\":function($event){return _vm.updateSetting($event, 'password_authenticator', 'value')}}})],1),_vm._v(\" \"),_c('el-form-item',[_c('p',{staticClass:\"expl\"},[_vm._v(\"Feel free to adjust the priv_dir and port number.\\n Then you will have to create the key for the keys (in the example \"),_c('span',{staticClass:\"code\"},[_vm._v(\"priv/ssh_keys\")]),_vm._v(\") and create the host keys with\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"ssh-keygen -m PEM -N \\\"\\\" -b 2048 -t rsa -f ssh_host_rsa_key\")]),_vm._v(\".\\n After restarting, you should be able to connect to your Pleroma instance with \"),_c('span',{staticClass:\"code\"},[_vm._v(\"ssh username@server -p $PORT\")])])]),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Frontend.vue?vue&type=template&id=7f3ed65f&\"\nimport script from \"./Frontend.vue?vue&type=script&lang=js&\"\nexport * from \"./Frontend.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Frontend.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"frontend\",attrs:{\"model\":_vm.frontend,\"label-width\":_vm.labelWidth}},[_c('el-form-item',[_c('p',{staticClass:\"expl\"},[_vm._v(\"This form can be used to configure a keyword list that keeps the configuration data for any kind of frontend.\\n By default, settings for \"),_c('span',{staticClass:\"code\"},[_vm._v(\"pleroma_fe\")]),_vm._v(\" and \"),_c('span',{staticClass:\"code\"},[_vm._v(\"masto_fe\")]),_vm._v(\" are configured.\\n If you want to add your own configuration your settings need to be complete as they will override the defaults.\")])]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Pleroma FE:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Theme\"}},[_c('el-select',{attrs:{\"value\":_vm.frontend.pleroma_fe.theme,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'theme')}}},_vm._l((_vm.themeOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Which theme to use\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Background\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.pleroma_fe.background},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'background')}}}),_vm._v(\" \"),_c('div',{staticClass:\"upload-container\"},[_c('p',{staticClass:\"text\"},[_vm._v(\"or\")]),_vm._v(\" \"),_c('el-upload',{attrs:{\"http-request\":_vm.sendBackgroundPleroma,\"multiple\":false,\"show-file-list\":false,\"action\":\"/api/v1/media\"}},[_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"}},[_vm._v(\"Click to upload\")])],1)],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"URL of the background, unless viewing a user profile with a background that is set\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Logo\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.pleroma_fe.logo},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'logo')}}}),_vm._v(\" \"),_c('div',{staticClass:\"upload-container\"},[_c('p',{staticClass:\"text\"},[_vm._v(\"or\")]),_vm._v(\" \"),_c('el-upload',{attrs:{\"http-request\":_vm.sendLogoPleroma,\"multiple\":false,\"show-file-list\":false,\"action\":\"/api/v1/media\"}},[_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"}},[_vm._v(\"Click to upload\")])],1)],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"URL of the logo\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Logo mask\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.logoMask},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'logoMask')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whether to use only the logo's shape as a mask (true) or as a regular image (false)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Logo margin (em)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.frontend.pleroma_fe.logoMargin,\"step\":0.1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'logoMargin')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"What margin to use around the logo\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Redirect URL\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.pleroma_fe.redirectRootNoLogin},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'redirectRootNoLogin')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Relative URL which indicates where to redirect when a user is logged in\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Redirect for anonymous user\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.pleroma_fe.redirectRootLogin},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'redirectRootLogin')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Relative URL which indicates where to redirect when a user isn’t logged in\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Show instance panel\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.showInstanceSpecificPanel},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'showInstanceSpecificPanel')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whenether to show the instance’s specific panel\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Scope options enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.scopeOptionsEnabled},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'scopeOptionsEnabled')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Formatting options enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.formattingOptionsEnabled},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'formattingOptionsEnabled')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Collapse msg with subject\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.collapseMessageWithSubject},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'collapseMessageWithSubject')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"When a message has a subject (aka Content Warning), collapse it by default\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Scope copy\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.scopeCopy},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'scopeCopy')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Copy the scope \"),_c('span',{staticClass:\"code\"},[_vm._v(\"(private/unlisted/public)\")]),_vm._v(\" in replies to posts by default\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Subject line behavior\"}},[_c('el-select',{attrs:{\"value\":_vm.frontend.pleroma_fe.subjectLineBehavior,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'subjectLineBehavior')}}},[_c('el-option',{attrs:{\"label\":\"Email\",\"value\":\"email\"}},[_vm._v(\"Email / Copy and preprend re:, as in email\")]),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"Masto\",\"value\":\"masto\"}},[_vm._v(\"Masto / Copy verbatim, as in Mastodon\")]),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"Noop\",\"value\":\"noop\"}},[_vm._v(\"Noop / Don't copy the subject\")])],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Allows changing the default behaviour of subject lines in replies\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Post content type\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.pleroma_fe.postContentType},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'postContentType')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Always show subject input\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.alwaysShowSubjectInput},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'alwaysShowSubjectInput')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"When set to false, auto-hide the subject field when it's empty\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Hide post statistics\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.hidePostStats},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'hidePostStats')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Hide notices statistics(repeats, favorites, …)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Hide user statistics\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.hideUserStats},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'hideUserStats')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Hide profile statistics(posts, posts per day, followers, followings, …)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Login method\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.pleroma_fe.loginMethod},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'loginMethod')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Web push notifications\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.webPushNotifications},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'webPushNotifications')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"No attachment links\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.noAttachmentLinks},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'noAttachmentLinks')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"NSFW Censor image\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.pleroma_fe.nsfwCensorImage},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'nsfwCensorImage')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Show features panel\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.showFeaturesPanel},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'showFeaturesPanel')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Minimal scopes mode\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.pleroma_fe.minimalScopesMode},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'pleroma_fe', 'minimalScopesMode')}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Masto FE:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Theme\"}},[_c('el-select',{attrs:{\"value\":_vm.frontend.masto_fe.theme,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'theme')}}},_vm._l((_vm.themeOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Which theme to use\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Background\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.masto_fe.background},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'background')}}}),_vm._v(\" \"),_c('div',{staticClass:\"upload-container\"},[_c('p',{staticClass:\"text\"},[_vm._v(\"or\")]),_vm._v(\" \"),_c('el-upload',{attrs:{\"http-request\":_vm.sendBackgroundMasto,\"multiple\":false,\"show-file-list\":false,\"action\":\"/api/v1/media\"}},[_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"}},[_vm._v(\"Click to upload\")])],1)],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"URL of the background, unless viewing a user profile with a background that is set\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Logo\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.masto_fe.logo},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'logo')}}}),_vm._v(\" \"),_c('div',{staticClass:\"upload-container\"},[_c('p',{staticClass:\"text\"},[_vm._v(\"or\")]),_vm._v(\" \"),_c('el-upload',{attrs:{\"http-request\":_vm.sendLogoMasto,\"multiple\":false,\"show-file-list\":false,\"action\":\"/api/v1/media\"}},[_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"}},[_vm._v(\"Click to upload\")])],1)],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"URL of the logo\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Logo mask\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.logoMask},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'logoMask')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whether to use only the logo's shape as a mask (true) or as a regular image (false)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Logo margin (em)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.frontend.masto_fe.logoMargin,\"step\":0.1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'logoMargin')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"What margin to use around the logo\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Redirect URL\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.masto_fe.redirectRootNoLogin},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'redirectRootNoLogin')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Relative URL which indicates where to redirect when a user is logged in\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Redirect for anonymous user\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.masto_fe.redirectRootLogin},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'redirectRootLogin')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Relative URL which indicates where to redirect when a user isn’t logged in\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Show instance panel\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.showInstanceSpecificPanel},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'showInstanceSpecificPanel')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whenether to show the instance’s specific panel\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Scope options enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.scopeOptionsEnabled},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'scopeOptionsEnabled')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Formatting options enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.formattingOptionsEnabled},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'formattingOptionsEnabled')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Collapse msg with subjects\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.collapseMessageWithSubject},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'collapseMessageWithSubject')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"When a message has a subject (aka Content Warning), collapse it by default\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Scope copy\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.scopeCopy},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'scopeCopy')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Copy the scope \"),_c('span',{staticClass:\"code\"},[_vm._v(\"(private/unlisted/public)\")]),_vm._v(\" in replies to posts by default\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Subject line behavior\"}},[_c('el-select',{attrs:{\"value\":_vm.frontend.masto_fe.subjectLineBehavior,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'subjectLineBehavior')}}},[_c('el-option',{attrs:{\"label\":\"Email\",\"value\":\"email\"}},[_vm._v(\"Email / Copy and preprend re:, as in email\")]),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"Masto\",\"value\":\"masto\"}},[_vm._v(\"Masto / Copy verbatim, as in Mastodon\")]),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"Noop\",\"value\":\"noop\"}},[_vm._v(\"Noop / Don't copy the subject\")])],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Allows changing the default behaviour of subject lines in replies\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Post content type\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.masto_fe.postContentType},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'postContentType')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Always show subject input\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.alwaysShowSubjectInput},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'alwaysShowSubjectInput')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"When set to false, auto-hide the subject field when it's empty\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Hide post statistics\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.hidePostStats},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'hidePostStats')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Hide notices statistics(repeats, favorites, …)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Hide user statistics\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.hideUserStats},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'hideUserStats')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Hide profile statistics(posts, posts per day, followers, followings, …)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Login method\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.masto_fe.loginMethod},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'loginMethod')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Web push notifications\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.webPushNotifications},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'webPushNotifications')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"No attachment links\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.noAttachmentLinks},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'noAttachmentLinks')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"NSFW Censor image\"}},[_c('el-input',{attrs:{\"value\":_vm.frontend.masto_fe.nsfwCensorImage},on:{\"input\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'nsfwCensorImage')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Show features panel\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.showFeaturesPanel},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'showFeaturesPanel')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Minimal scopes mode\"}},[_c('el-switch',{attrs:{\"value\":_vm.frontend.masto_fe.minimalScopesMode},on:{\"change\":function($event){return _vm.processNestedData($event, 'frontend_configurations', 'masto_fe', 'minimalScopesMode')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"assets\",attrs:{\"model\":_vm.assets,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Assets:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Default mascot\"}},[_c('el-select',{attrs:{\"value\":_vm.assets.default_mascot,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'assets', 'default_mascot')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"An element from mascots - This will be used as the default mascot on MastoFE\\n (default: \"),_c('span',{staticClass:\"code\"},[_vm._v(\":pleroma_fox_tan\")]),_vm._v(\")\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Mascots\"}},[_vm._l((_vm.mascots),function(ref,index){\nvar name = ref[0];\nvar url = ref[1];\nvar mimeType = ref[2];\nreturn _c('div',{key:index,staticClass:\"mascot-container\"},[_c('div',{staticClass:\"mascot-name-container\"},[_c('el-input',{staticClass:\"mascot-name-input\",attrs:{\"value\":name,\"placeholder\":\"Name\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'name', index)}}}),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteMascotsRow(index, 'emoji', 'groups')}}})],1),_vm._v(\" \"),_c('el-input',{staticClass:\"mascot-input\",attrs:{\"value\":url,\"placeholder\":\"URL\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'url', index)}}}),_vm._v(\" \"),_c('el-input',{staticClass:\"mascot-input\",attrs:{\"value\":mimeType,\"placeholder\":\"Mime type\"},on:{\"input\":function($event){return _vm.parseMascots($event, 'mimeType', index)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToMascots}})],2)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"emoji\",attrs:{\"model\":_vm.emoji,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Emoji:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Location of emoji files\"}},[_c('el-select',{attrs:{\"value\":_vm.emoji.shortcode_globs || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'emoji', 'shortcode_globs')}}},[_c('el-option',{attrs:{\"label\":\"/emoji/custom/**/*.png\",\"value\":\"/emoji/custom/**/*.png\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Location of custom emoji files. \"),_c('span',{staticClass:\"code\"},[_vm._v(\"*\")]),_vm._v(\" can be used as a wildcard.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Pack extensions\"}},[_c('el-select',{attrs:{\"value\":_vm.emoji.pack_extensions || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'emoji', 'pack_extensions')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A list of file extensions for emojis, when no \"),_c('span',{staticClass:\"code\"},[_vm._v(\"emoji.txt\")]),_vm._v(\" for a pack is present. \")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Group\"}},[_vm._l((_vm.groups),function(ref,index){\nvar key = ref[0];\nvar value = ref[1];\nreturn _c('div',{key:index,staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":key,\"placeholder\":\"key\"},on:{\"input\":function($event){return _vm.parseGroups($event, 'key', index)}}}),_vm._v(\" :\\n \"),_c('el-select',{staticClass:\"value-input\",attrs:{\"value\":value,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.parseGroups($event, 'value', index)}}}),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteGroupsRow(index)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToGroups}})],2),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Location of JSON-manifest\"}},[_c('el-input',{attrs:{\"value\":_vm.emoji.default_manifest},on:{\"input\":function($event){return _vm.updateSetting($event, 'emoji', 'default_manifest')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download. Currently only one manifest can be added (no arrays).\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"chat\",attrs:{\"model\":_vm.chat,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Chat enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.chat.enabled},on:{\"input\":function($event){return _vm.updateSetting($event, 'chat', 'enabled')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"markup\",attrs:{\"model\":_vm.markup,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Markup settings:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Allow inline images\"}},[_c('el-switch',{attrs:{\"value\":_vm.markup.allow_inline_images},on:{\"input\":function($event){return _vm.updateSetting($event, 'markup', 'allow_inline_images')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Allow headings\"}},[_c('el-switch',{attrs:{\"value\":_vm.markup.allow_headings},on:{\"input\":function($event){return _vm.updateSetting($event, 'markup', 'allow_headings')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Allow tables\"}},[_c('el-switch',{attrs:{\"value\":_vm.markup.allow_tables},on:{\"input\":function($event){return _vm.updateSetting($event, 'markup', 'allow_tables')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Allow fonts\"}},[_c('el-switch',{attrs:{\"value\":_vm.markup.allow_fonts},on:{\"input\":function($event){return _vm.updateSetting($event, 'markup', 'allow_fonts')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Scrub policy\"}},[_c('el-select',{attrs:{\"value\":_vm.markup.scrub_policy || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'markup', 'scrub_policy')}}},[_c('el-option',{attrs:{\"label\":\"Pleroma.HTML.Transform.MediaProxy\",\"value\":\"Pleroma.HTML.Transform.MediaProxy\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"Pleroma.HTML.Scrubber.Default\",\"value\":\"Pleroma.HTML.Scrubber.Default\"}})],1)],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Gopher.vue?vue&type=template&id=158af078&\"\nimport script from \"./Gopher.vue?vue&type=script&lang=js&\"\nexport * from \"./Gopher.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Gopher.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{ref:\"gopher\",attrs:{\"model\":_vm.gopher,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.gopher.enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'gopher', 'enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enables the gopher interface\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"IP address\"}},[_c('el-input',{attrs:{\"value\":_vm.gopher.ip,\"placeholder\":\"xxx.xxx.xxx.xx\"},on:{\"input\":function($event){return _vm.updateSetting($event, 'gopher', 'ip')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enables the gopher interface\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Port\"}},[_c('el-input',{attrs:{\"value\":_vm.gopher.port},on:{\"input\":function($event){return _vm.updateSetting($event, 'gopher', 'port')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Port to bind to\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Dst port\"}},[_c('el-input',{attrs:{\"value\":_vm.gopher.dstport},on:{\"input\":function($event){return _vm.updateSetting($event, 'gopher', 'dstport')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Port advertised in urls (optional, defaults to port)\")])],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Http.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Http.vue?vue&type=template&id=37489e24&\"\nimport script from \"./Http.vue?vue&type=script&lang=js&\"\nexport * from \"./Http.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Http.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Http.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"http\",attrs:{\"model\":_vm.http,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"HTTP settings:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Proxy url\"}},[_c('el-input',{attrs:{\"value\":_vm.http.proxy_url},on:{\"input\":function($event){return _vm.updateSetting($event, 'http', 'proxy_url')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Send user agent\"}},[_c('el-switch',{attrs:{\"value\":_vm.http.send_user_agent},on:{\"change\":function($event){return _vm.updateSetting($event, 'http', 'send_user_agent')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Adapter:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Versions\"}},[_c('el-select',{attrs:{\"value\":_vm.http.adapter.versions || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'http', 'adapter', 'versions')}}},[_c('el-option',{attrs:{\"value\":\":tlsv1\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":'tlsv1.1'\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":'tlsv1.2'\"}})],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"corsPlugMaxAge\",attrs:{\"model\":_vm.corsPlugMaxAge,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Cors plug config:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max age (days)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.corsPlugMaxAge.value / 86400,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event * 86400, 'max_age', 'value')}}})],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"corsPlugMethods\",attrs:{\"model\":_vm.corsPlugMethods,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Methods\"}},[_c('el-select',{attrs:{\"value\":_vm.corsPlugMethods.value || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'methods', 'value')}}},[_c('el-option',{attrs:{\"value\":\"POST\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"PUT\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"DELETE\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"GET\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"PATCH\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"OPTIONS\"}})],1)],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"corsPlugExpose\",attrs:{\"model\":_vm.corsPlugExpose,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Expose\"}},[_c('el-select',{attrs:{\"value\":_vm.corsPlugExpose.value || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'expose', 'value')}}},[_c('el-option',{attrs:{\"value\":\"Link\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"X-RateLimit-Reset\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"X-RateLimit-Limit\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"X-RateLimit-Remaining\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"X-Request-Id\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"Idempotency-Key\"}})],1)],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"corsPlugCredentials\",attrs:{\"model\":_vm.corsPlugCredentials,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Credentials\"}},[_c('el-switch',{attrs:{\"value\":_vm.corsPlugCredentials.value},on:{\"change\":function($event){return _vm.updateSetting($event, 'credentials', 'value')}}})],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"corsPlugHeaders\",attrs:{\"model\":_vm.corsPlugHeaders,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Headers\"}},[_c('el-select',{attrs:{\"value\":_vm.corsPlugHeaders.value || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'headers', 'value')}}},[_c('el-option',{attrs:{\"value\":\"Authorization\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"Content-Type\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"Idempotency-Key\"}})],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"httpSecurity\",attrs:{\"model\":_vm.httpSecurity,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"HTTP security:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Security policy\"}},[_c('el-switch',{attrs:{\"value\":_vm.httpSecurity.enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'http_security', 'enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whether the managed content security policy is enabled\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"STS\"}},[_c('el-switch',{attrs:{\"value\":_vm.httpSecurity.sts},on:{\"change\":function($event){return _vm.updateSetting($event, 'http_security', 'sts')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whether to additionally send a \"),_c('span',{staticClass:\"code\"},[_vm._v(\"Strict-Transport-Security header\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"STS max age (days)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.httpSecurity.sts_max_age / 86400,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event * 86400, 'http_security', 'sts_max_age')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The maximum age for the \"),_c('span',{staticClass:\"code\"},[_vm._v(\"Strict-Transport-Security\")]),_vm._v(\" header if sent\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"CT max age (days)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.httpSecurity.ct_max_age / 86400,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event * 86400, 'http_security', 'ct_max_age')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The maximum age for the \"),_c('span',{staticClass:\"code\"},[_vm._v(\"Expect-CT\")]),_vm._v(\" header if sent\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Referrer policy\"}},[_c('el-select',{attrs:{\"value\":_vm.httpSecurity.referrer_policy,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'http_security', 'referrer_policy')}}},[_c('el-option',{attrs:{\"label\":\"same-origin\",\"value\":\"same-origin\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"no-referrer\",\"value\":\"no-referrer\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The referrer policy to use\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Report URI\"}},[_c('el-input',{attrs:{\"value\":_vm.httpSecurity.report_uri},on:{\"input\":function($event){return _vm.updateSetting($event, 'http_security', 'report_uri')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Adds the specified url to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"report-uri\")]),_vm._v(\" and \"),_c('span',{staticClass:\"code\"},[_vm._v(\"report-to\")]),_vm._v(\" group in CSP header\")])],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"hackneyPools\",attrs:{\"model\":_vm.hackneyPools,\"label-width\":_vm.labelWidth}},[_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Hackney pools:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Federation:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max connections\"}},[_c('el-input-number',{attrs:{\"value\":_vm.hackneyPools.federation.max_connections,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'hackney_pools', 'federation', 'max_connections')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"You may want this pool \"),_c('span',{staticClass:\"code\"},[_vm._v(\"max_connections\")]),_vm._v(\" to be at least equal to the number of federator jobs + retry queue jobs.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Timeout (s)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.hackneyPools.federation.timeout / 1000,\"step\":10,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event * 1000, 'hackney_pools', 'federation', 'timeout')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"For the federation jobs\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Media:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max connections\"}},[_c('el-input-number',{attrs:{\"value\":_vm.hackneyPools.media.max_connections,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'hackney_pools', 'media', 'max_connections')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Timeout (s)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.hackneyPools.media.timeout / 1000,\"step\":10,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event * 1000, 'hackney_pools', 'media', 'timeout')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"For rich media, media proxy\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Upload:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max connections\"}},[_c('el-input-number',{attrs:{\"value\":_vm.hackneyPools.upload.max_connections,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'hackney_pools', 'upload', 'max_connections')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Timeout (s)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.hackneyPools.upload.timeout / 1000,\"step\":10,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event * 1000, 'hackney_pools', 'upload', 'timeout')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"For uploaded media (if using a remote uploader and \"),_c('span',{staticClass:\"code\"},[_vm._v(\"proxy_remote: true\")]),_vm._v(\")\")])],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Instance.vue?vue&type=template&id=dccaf986&\"\nimport script from \"./Instance.vue?vue&type=script&lang=js&\"\nexport * from \"./Instance.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Instance.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"instance\",attrs:{\"model\":_vm.instance,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Name\"}},[_c('el-input',{attrs:{\"value\":_vm.instance.name},on:{\"input\":function($event){return _vm.updateSetting($event, 'instance', 'name')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The instance’s name\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Email\"}},[_c('el-input',{attrs:{\"value\":_vm.instance.email},on:{\"input\":function($event){return _vm.updateSetting($event, 'instance', 'email')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Email used to reach an Administrator/Moderator of the instance\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Notify email\"}},[_c('el-input',{attrs:{\"value\":_vm.instance.notify_email},on:{\"input\":function($event){return _vm.updateSetting($event, 'instance', 'notify_email')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Email used for notifications\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Description\"}},[_c('el-input',{attrs:{\"value\":_vm.instance.description},on:{\"input\":function($event){return _vm.updateSetting($event, 'instance', 'description')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The instance’s description, can be seen in nodeinfo and \"),_c('span',{staticClass:\"code\"},[_vm._v(\"/api/v1/instance\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Limit\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.limit,\"step\":1000,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'limit')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Posts character limit (CW/Subject included in the counter)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Remote limit\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.remote_limit,\"step\":1000,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'remote_limit')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Hard character limit beyond which remote posts will be dropped\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Upload limit (MB)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.upload_limit / 1048576,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event * 1048576, 'instance', 'upload_limit')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"File size limit of uploads (except for avatar, background, banner)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Avatar upload limit (MB)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.avatar_upload_limit / 1048576,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event * 1048576, 'instance', 'avatar_upload_limit')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"File size limit of user’s profile avatars\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Background upload limit (MB)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.background_upload_limit / 1048576,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event * 1048576, 'instance', 'background_upload_limit')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"File size limit of user’s profile backgrounds\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Banner upload limit (MB)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.banner_upload_limit / 1048576,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event * 1048576, 'instance', 'banner_upload_limit')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"File size limit of user’s profile banners\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"User bio length\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.user_bio_length,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'user_bio_length')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A user bio maximum length (default: 5000)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"User name length\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.user_name_length,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'user_name_length')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A user name maximum length (default: 100)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Poll limits:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max options\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.poll_limits.max_options,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'instance', 'poll_limits', 'max_options')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Maximum number of options\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max characters per option\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.poll_limits.max_option_chars,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'instance', 'poll_limits', 'max_option_chars')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Maximum number of characters per option\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Minimum expiration (days)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.poll_limits.min_expiration,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'instance', 'poll_limits', 'min_expiration')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Minimum expiration time\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max expiration (days)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.poll_limits.max_expiration / 86400,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event * 86400, 'instance', 'poll_limits', 'max_expiration')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Maximum expiration time\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Registrations open\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.registrations_open},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'registrations_open')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enable registrations for anyone, invitations can be enabled when false\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Invites enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.invites_enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'invites_enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enable user invitations for admins (depends on \"),_c('span',{staticClass:\"code\"},[_vm._v(\"registrations_open: false)\")]),_vm._v(\".\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Account activation required\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.account_activation_required},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'account_activation_required')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Require users to confirm their emails before signing in\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Federating\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.federating},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'federating')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enable federation with other instances\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Fed. replies max depth\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.federation_incoming_replies_max_depth,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'federation_incoming_replies_max_depth')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Max. depth of reply-to activities fetching on incoming federation, to prevent out-of-memory situations while fetching very long threads. Lower this value if you experience out-of-memory crashes.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Fed. reachability timeout\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.federation_reachability_timeout_days,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'federation_reachability_timeout_days')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Timeout (in days) of each external federation target being unreachable prior to pausing federating to it\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Federation publisher modules\"}},[_c('el-select',{attrs:{\"value\":_vm.instance.federation_publisher_modules || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'federation_publisher_modules')}}},_vm._l((_vm.federationPublisherModulesOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Allow relay\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.allow_relay},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'allow_relay')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enable Pleroma’s Relay, which makes it possible to follow a whole instance\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Rewrite policy\"}},[_c('el-select',{attrs:{\"value\":_vm.rewritePolicy || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'rewrite_policy')}}},_vm._l((_vm.rewritePolicyOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_vm._l((_vm.rewritePolicyExplanations),function(item){return _c('p',{key:item,staticClass:\"expl\"},[_vm._v(_vm._s(_vm.getRewritePolicyExpl(item)))])})],2),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Public\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.public},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'public')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Makes the client API in authentificated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Quarantined instances\"}},[_c('el-select',{attrs:{\"value\":_vm.instance.quarantined_instances || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'quarantined_instances')}}},_vm._l((_vm.quarantinedInstancesOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of ActivityPub instances where private (DMs, followers-only) activities will not be send\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Managed config\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.managed_config},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'managed_config')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whenether the config for pleroma-fe is configured in this config or in \"),_c('span',{staticClass:\"code\"},[_vm._v(\"static/config.json\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Static directory\"}},[_c('el-input',{attrs:{\"value\":_vm.instance.static_dir},on:{\"input\":function($event){return _vm.updateSetting($event, 'instance', 'static_dir')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Allowed post formats\"}},[_c('el-select',{attrs:{\"value\":_vm.instance.allowed_post_formats || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'allowed_post_formats')}}},[_c('el-option',{attrs:{\"label\":\"text/plain\",\"value\":\"text/plain\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"text/html\",\"value\":\"text/html\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"text/markdown\",\"value\":\"text/markdown\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"text/bbcode\",\"value\":\"text/bbcode\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"MIME-type list of formats allowed to be posted (transformed into HTML)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"MRF transparency\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.mrf_transparency},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'mrf_transparency')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Make the content of your Message Rewrite Facility settings public (via nodeinfo)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"MRF transparency exclusions\"}},[_c('el-select',{attrs:{\"value\":_vm.instance.mrf_transparency_exclusions || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'mrf_transparency_exclusions')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Scope copy\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.scope_copy},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'scope_copy')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Copy the scope \"),_c('span',{staticClass:\"code\"},[_vm._v(\"(private/unlisted/public)\")]),_vm._v(\" in replies to posts by default\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Subject line behavior\"}},[_c('el-select',{attrs:{\"value\":_vm.instance.subject_line_behavior,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'subject_line_behavior')}}},[_c('el-option',{attrs:{\"label\":\"Email\",\"value\":\"email\"}},[_vm._v(\"Email / Copy and preprend re:, as in email\")]),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"Masto\",\"value\":\"masto\"}},[_vm._v(\"Masto / Copy verbatim, as in Mastodon\")]),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"Noop\",\"value\":\"noop\"}},[_vm._v(\"Noop / Don't copy the subject\")])],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Allows changing the default behaviour of subject lines in replies\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Always show subject input\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.always_show_subject_input},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'always_show_subject_input')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"When set to false, auto-hide the subject field when it's empty\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Extended nickname format\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.extended_nickname_format},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'extended_nickname_format')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Set to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"true\")]),_vm._v(\" to use extended local nicknames format (allows underscores/dashes). This will break federation with older software for theses nicknames\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max pinned statuses\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.max_pinned_statuses,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'max_pinned_statuses')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The maximum number of pinned statuses. '0' will disable the feature\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Autofollowed nicknames\"}},[_c('el-select',{attrs:{\"value\":_vm.instance.autofollowed_nicknames || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'autofollowed_nicknames')}}},_vm._l((_vm.autofollowedNicknamesOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Set to nicknames of (local) users that every new user should automatically follow\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"No attachment links\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.no_attachment_links},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'no_attachment_links')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Set to true to disable automatically adding attachment link text to statuses\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Welcome message\"}},[_c('el-input',{attrs:{\"value\":_vm.instance.welcome_message},on:{\"input\":function($event){return _vm.updateSetting($event, 'instance', 'welcome_message')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A message that will be send to a newly registered users as a direct message\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Welcome user nickname\"}},[_c('el-input',{attrs:{\"value\":_vm.instance.welcome_user_nickname},on:{\"input\":function($event){return _vm.updateSetting($event, 'instance', 'welcome_user_nickname')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The nickname of the local user that sends the welcome message\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max report comment size\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.max_report_comment_size,\"step\":100,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'max_report_comment_size')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The maximum size of the report comment\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Safe DM mentions\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.safe_dm_mentions},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'safe_dm_mentions')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"If set to true, only mentions at the beginning of a post will be used to address people in direct messages. This is to prevent accidental mentioning of people when talking about them\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Healthcheck\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.healthcheck},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'healthcheck')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"If set to true, system data will be shown on \"),_c('span',{staticClass:\"code\"},[_vm._v(\"/api/pleroma/healthcheck\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Remote post retention days\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.remote_post_retention_days,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'remote_post_retention_days')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The default amount of days to retain remote posts when pruning the database.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Skip thread containment\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.skip_thread_containment},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'skip_thread_containment')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Skip filter out broken threads.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Limit to local content\"}},[_c('el-select',{attrs:{\"value\":_vm.instance.limit_to_local_content,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'limit_to_local_content')}}},[_c('el-option',{attrs:{\"label\":\"Unauthenticated\",\"value\":\":unauthenticated\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"All\",\"value\":\":all\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"label\":\"False\",\"value\":\"false\"}})],1)],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Dynamic configuration\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.dynamic_configuration},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'dynamic_configuration')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Allow transferring configuration to DB with the subsequent customization from Admin API\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max account fields\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.max_account_fields,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'max_account_fields')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The maximum number of custom fields in the user profile (Default: 4)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max remote account fields\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.max_remote_account_fields,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'max_remote_account_fields')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The maximum number of custom fields in the remote user profile (Default: 10)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Account field name length\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.account_field_name_length,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'account_field_name_length')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"An account field name maximum length (Default: 255)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Account field value length\"}},[_c('el-input-number',{attrs:{\"value\":_vm.instance.account_field_value_length,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'account_field_value_length')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"An account field value maximum length (Default: 255)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"External user synchronization\"}},[_c('el-switch',{attrs:{\"value\":_vm.instance.external_user_synchronization},on:{\"change\":function($event){return _vm.updateSetting($event, 'instance', 'external_user_synchronization')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enabling following/followers counters synchronization for external users.\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"uriSchemes\",attrs:{\"model\":_vm.uriSchemes,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"URI schemes\"}},[_c('el-select',{attrs:{\"value\":_vm.uriSchemes.valid_schemes || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'uri_schemes', 'valid_schemes')}}},_vm._l((_vm.uriSchemesOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of the scheme part that is considered valid to be an URL\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"adminToken\",attrs:{\"model\":_vm.adminToken,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Admin token\"}},[_c('el-input',{attrs:{\"value\":_vm.adminToken.value},on:{\"input\":function($event){return _vm.updateSetting($event, 'admin_token', 'value')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"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 \"),_c('span',{staticClass:\"code\"},[_vm._v(\"admin_token\")]),_vm._v(\" parameter.\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"scheduledActivity\",attrs:{\"model\":_vm.scheduledActivity,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Scheduled activity:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Daily user limit\"}},[_c('el-input-number',{attrs:{\"value\":_vm.scheduledActivity.daily_user_limit,\"step\":5,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.ScheduledActivity', 'daily_user_limit')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The number of scheduled activities a user is allowed to create in a single day (Default: 25)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Total user limit\"}},[_c('el-input-number',{attrs:{\"value\":_vm.scheduledActivity.total_user_limit,\"step\":10,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.ScheduledActivity', 'total_user_limit')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The number of scheduled activities a user is allowed to create in total (Default: 300)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.scheduledActivity.enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.ScheduledActivity', 'enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Whether scheduled activities are sent to the job queue to be executed\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"fetchInitialPosts\",attrs:{\"model\":_vm.fetchInitialPosts,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Fetch initial posts\"}},[_c('el-switch',{attrs:{\"value\":_vm.fetchInitialPosts.enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'fetch_initial_posts', 'enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"If enabled, when a new user is federated with, fetch some of their latest posts\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Pages\"}},[_c('el-input-number',{attrs:{\"value\":_vm.fetchInitialPosts.pages,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'fetch_initial_posts', 'pages')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The amount of pages to fetch\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"suggestions\",attrs:{\"model\":_vm.suggestions,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Suggestions:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.suggestions.enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'suggestions', 'enabled')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Third party engine\"}},[_c('el-input',{attrs:{\"value\":_vm.suggestions.third_party_engine},on:{\"input\":function($event){return _vm.updateSetting($event, 'suggestions', 'third_party_engine')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Timeout\"}},[_c('el-input-number',{attrs:{\"value\":_vm.suggestions.timeout,\"step\":1000,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'suggestions', 'timeout')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Limit\"}},[_c('el-input-number',{attrs:{\"value\":_vm.suggestions.limit,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'suggestions', 'limit')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Web\"}},[_c('el-input',{attrs:{\"value\":_vm.suggestions.web},on:{\"input\":function($event){return _vm.updateSetting($event, 'suggestions', 'web')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"pleromaUser\",attrs:{\"model\":_vm.pleromaUser,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Restricted nicknames\"}},[_c('el-select',{attrs:{\"value\":_vm.pleromaUser.restricted_nicknames || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.User', 'restricted_nicknames')}}},_vm._l((_vm.restrictedNicknamesOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"value\":item.value}})}),1)],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./JobQueue.vue?vue&type=template&id=02182992&\"\nimport script from \"./JobQueue.vue?vue&type=script&lang=js&\"\nexport * from \"./JobQueue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"JobQueue.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"queues\",attrs:{\"model\":_vm.queues,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Job queues:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Outgoing federation\"}},[_c('el-input-number',{attrs:{\"value\":_vm.queues.federator_outgoing,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'queues', 'federator_outgoing')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Incoming federation\"}},[_c('el-input-number',{attrs:{\"value\":_vm.queues.federator_incoming,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'queues', 'federator_incoming')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Email sender\"}},[_c('el-input-number',{attrs:{\"value\":_vm.queues.mailer,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'queues', 'mailer')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Transmogrifier\"}},[_c('el-input-number',{attrs:{\"value\":_vm.queues.transmogrifier,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'queues', 'transmogrifier')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Web push notifications\"}},[_c('el-input-number',{attrs:{\"value\":_vm.queues.web_push,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'queues', 'web_push')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Scheduled activities\"}},[_c('el-input-number',{attrs:{\"value\":_vm.queues.scheduled_activities,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'queues', 'scheduled_activities')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Background\"}},[_c('el-input-number',{attrs:{\"value\":_vm.queues.background,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'queues', 'background')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"retryQueue\",attrs:{\"model\":_vm.retryQueue,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Retry queue:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.retryQueue.enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Federator.RetryQueue', 'enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"If set to true, failed federation jobs will be retried\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max jobs\"}},[_c('el-input-number',{attrs:{\"value\":_vm.retryQueue.max_jobs,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Federator.RetryQueue', 'max_jobs')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The maximum amount of parallel federation jobs running at the same time.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Initial timeout (s)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.retryQueue.initial_timeout,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Federator.RetryQueue', 'initial_timeout')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The initial timeout in seconds\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max retries\"}},[_c('el-input-number',{attrs:{\"value\":_vm.retryQueue.max_retries,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Federator.RetryQueue', 'max_retries')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The maximum number of times a federation job is retried\")])],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Logger.vue?vue&type=template&id=2b676ce8&\"\nimport script from \"./Logger.vue?vue&type=script&lang=js&\"\nexport * from \"./Logger.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Logger.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"loggerBackends\",attrs:{\"model\":_vm.loggerBackends,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Backends\"}},[_c('el-select',{attrs:{\"value\":_vm.loggerBackendsValue,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateloggerBackends($event, 'backends', 'value')}}},_vm._l((_vm.loggerBackendsOptions),function(item,index){return _c('el-option',{key:index,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_c('span',{staticClass:\"code\"},[_vm._v(\":console\")]),_vm._v(\" is used to send logs to stdout, \"),_c('span',{staticClass:\"code\"},[_vm._v(\"{ExSyslogger, :ex_syslogger}\")]),_vm._v(\" to log to syslog, and \"),_c('span',{staticClass:\"code\"},[_vm._v(\"Quack.Logger\")]),_vm._v(\" to log to Slack\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"consoleLogger\",attrs:{\"model\":_vm.consoleLogger,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Console logger:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Level\"}},[_c('el-select',{attrs:{\"value\":_vm.consoleLogger.level,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'console', 'level')}}},[_c('el-option',{attrs:{\"value\":\":debug\",\"label\":\":debug - for debug-related messages\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":info\",\"label\":\":info - for information of any kind\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":warn\",\"label\":\":warn - for warnings\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":error\",\"label\":\":error - for errors\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The level to be logged by this backend. Note that messages are filtered by the general\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\":level\")]),_vm._v(\" configuration for the \"),_c('span',{staticClass:\"code\"},[_vm._v(\":logger\")]),_vm._v(\" application first.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Format\"}},[_c('el-input',{attrs:{\"value\":_vm.consoleLogger.format},on:{\"input\":function($event){return _vm.updateSetting($event, 'console', 'format')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The format message used to print logs. \")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Metadata\"}},[_c('el-select',{attrs:{\"value\":_vm.consoleLogger.metadata || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'console', 'metadata')}}},[_c('el-option',{attrs:{\"value\":\":all\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":request_id\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":line\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":user_id\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":application\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":function\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":file\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":pid\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":crash_reason\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":initial_call\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":registered_name\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":none\"}})],1)],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Device\"}},[_c('el-input',{attrs:{\"value\":_vm.consoleLogger.device},on:{\"input\":function($event){return _vm.updateSetting($event, 'console', 'device')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The device to log error messages to. Defaults to \"),_c('span',{staticClass:\"code\"},[_vm._v(\":user\")]),_vm._v(\"\\n but can be changed to something else such as \"),_c('span',{staticClass:\"code\"},[_vm._v(\":standard_error\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max buffer\"}},[_c('el-input-number',{attrs:{\"value\":_vm.consoleLogger.max_buffer,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'console', 'max_buffer')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Maximum events to buffer while waiting for a confirmation from the IO device (default: 32). Once the buffer is full, the backend will block until a confirmation is received.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Colors:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.consoleLogger.colors.enabled},on:{\"change\":function($event){return _vm.processNestedData($event, 'console', 'colors', 'enabled')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Debug message\"}},[_c('el-input',{attrs:{\"value\":_vm.consoleLogger.colors.debug},on:{\"input\":function($event){return _vm.processNestedData($event, 'console', 'colors', 'debug')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Defaults to: \"),_c('span',{staticClass:\"code\"},[_vm._v(\":cyan\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Info message\"}},[_c('el-input',{attrs:{\"value\":_vm.consoleLogger.colors.info},on:{\"input\":function($event){return _vm.processNestedData($event, 'console', 'colors', 'info')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Defaults to: \"),_c('span',{staticClass:\"code\"},[_vm._v(\":normal\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Warn message\"}},[_c('el-input',{attrs:{\"value\":_vm.consoleLogger.colors.warn},on:{\"input\":function($event){return _vm.processNestedData($event, 'console', 'colors', 'warn')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Defaults to: \"),_c('span',{staticClass:\"code\"},[_vm._v(\":yellow\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Error message\"}},[_c('el-input',{attrs:{\"value\":_vm.consoleLogger.colors.error},on:{\"input\":function($event){return _vm.processNestedData($event, 'console', 'colors', 'error')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Defaults to: \"),_c('span',{staticClass:\"code\"},[_vm._v(\":red\")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"exsyslogger\",attrs:{\"model\":_vm.exsyslogger,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"ExSyslogger:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Level\"}},[_c('el-select',{attrs:{\"value\":_vm.exsyslogger.level,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'ex_syslogger', 'level')}}},[_c('el-option',{attrs:{\"value\":\":debug\",\"label\":\":debug - for debug-related messages\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":info\",\"label\":\":info - for information of any kind\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":warn\",\"label\":\":warn - for warnings\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":error\",\"label\":\":error - for errors\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Logging level. It defaults to \"),_c('span',{staticClass:\"code\"},[_vm._v(\":info.\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Format\"}},[_c('el-input',{attrs:{\"value\":_vm.exsyslogger.format},on:{\"input\":function($event){return _vm.updateSetting($event, 'ex_syslogger', 'format')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The format message used to print logs.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Formatter\"}},[_c('el-input',{attrs:{\"value\":_vm.exsyslogger.formatter},on:{\"input\":function($event){return _vm.updateSetting($event, 'ex_syslogger', 'formatter')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Formatter that will be used to format the log. It default to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"Logger.Formatter\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Metadata\"}},[_c('el-select',{attrs:{\"value\":_vm.exsyslogger.metadata || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'ex_syslogger', 'metadata')}}},[_c('el-option',{attrs:{\"value\":\":all\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":request_id\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":line\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":user_id\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":application\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":function\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":file\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":pid\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":crash_reason\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":initial_call\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":registered_name\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":none\"}})],1)],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Ident\"}},[_c('el-input',{attrs:{\"value\":_vm.exsyslogger.ident},on:{\"input\":function($event){return _vm.updateSetting($event, 'ex_syslogger', 'ident')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A string that’s prepended to every message, and is typically set to the app name. It defaults to \"),_c('span',{staticClass:\"code\"},[_vm._v(\"Elixir\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Facility\"}},[_c('el-input',{attrs:{\"value\":_vm.exsyslogger.facility},on:{\"input\":function($event){return _vm.updateSetting($event, 'ex_syslogger', 'facility')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Syslog facility to be used. It defaults to \"),_c('span',{staticClass:\"code\"},[_vm._v(\":local0\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Options\"}},[_c('el-select',{attrs:{\"value\":_vm.exsyslogger.option || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'ex_syslogger', 'option')}}},[_c('el-option',{attrs:{\"value\":\":pid\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":cons\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":odelay\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":ndelay\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":perror\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Syslog option to be used. It defaults to \"),_c('span',{staticClass:\"code\"},[_vm._v(\":ndelay.\")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"webhookUrl\",attrs:{\"model\":_vm.webhookUrl,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Quack logger:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Webhook URL\"}},[_c('el-input',{attrs:{\"value\":_vm.webhookUrl.value},on:{\"input\":function($event){return _vm.updateSetting($event, 'webhook_url', 'value')}}})],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"level\",attrs:{\"model\":_vm.level,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Level\"}},[_c('el-select',{attrs:{\"value\":_vm.level.value,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'level', 'value')}}},[_c('el-option',{attrs:{\"value\":\":debug\",\"label\":\":debug - for debug-related messages\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":info\",\"label\":\":info - for information of any kind\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":warn\",\"label\":\":warn - for warnings\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":error\",\"label\":\":error - for errors\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Logging level. It defaults to \"),_c('span',{staticClass:\"code\"},[_vm._v(\":info.\")])])],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"meta\",attrs:{\"model\":_vm.meta,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Metadata\"}},[_c('el-select',{attrs:{\"value\":_vm.meta.value || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'meta', 'value')}}},[_c('el-option',{attrs:{\"value\":\":all\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":module\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":function\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":file\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":application\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":line\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":pid\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":crash_reason\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":initial_call\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":registered_name\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\":none\"}})],1)],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Mailer.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Mailer.vue?vue&type=template&id=2da96af2&\"\nimport script from \"./Mailer.vue?vue&type=script&lang=js&\"\nexport * from \"./Mailer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Mailer.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Mailer.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"mailer\",attrs:{\"model\":_vm.mailer,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.mailer.enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Allows to enable or disable sending emails. Defaults to false.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Adapter\"}},[_c('el-select',{attrs:{\"value\":_vm.mailer.adapter,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'adapter')}}},_vm._l((_vm.adapterOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.Sendmail')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"CMD Path\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.cmd_path},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'cmd_path')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"E. g. \"),_c('span',{staticClass:\"code\"},[_vm._v(\"/usr/bin/sendmail\\\"\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"CMD Args\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.cmd_args},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'cmd_args')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"E. g. \"),_c('span',{staticClass:\"code\"},[_vm._v(\"-N delay,failure,success\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Qmail\"}},[_c('el-switch',{attrs:{\"value\":_vm.mailer.qmail},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'qmail')}}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.SMTP')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Relay\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.relay},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'relay')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"E. g. \"),_c('span',{staticClass:\"code\"},[_vm._v(\"smtp.avengers.com\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Username\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.username},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'username')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Password\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.password},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'password')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"SSL\"}},[_c('el-switch',{attrs:{\"value\":_vm.mailer.ssl},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'ssl')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"TLS\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.tls},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'tls')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"E.g. \"),_c('span',{staticClass:\"code\"},[_vm._v(\":always\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Auth\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.auth},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'auth')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"E.g. \"),_c('span',{staticClass:\"code\"},[_vm._v(\":always\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Port\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.port},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'port')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"DKIM\"}},[_c('editor',{attrs:{\"height\":\"150\",\"width\":\"100%\",\"lang\":\"elixir\",\"theme\":\"chrome\"},model:{value:(_vm.editorContent),callback:function ($$v) {_vm.editorContent=$$v},expression:\"editorContent\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Retries\"}},[_c('el-input-number',{attrs:{\"value\":_vm.mailer.retries,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'retries')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"No mx lookups\"}},[_c('el-switch',{attrs:{\"value\":_vm.mailer.no_mx_lookups},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'no_mx_lookups')}}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.Sendgrid')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"API key\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.api_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'api_key')}}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.Mandrill')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"API key\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.api_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'api_key')}}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.Mailgun')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"API key\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.api_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'api_key')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Domain\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.domain},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'domain')}}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.Mailjet')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"API key\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.api_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'api_key')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Secret\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.secret},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'secret')}}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.Postmark')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"API key\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.api_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'api_key')}}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.SparkPost')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"API key\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.api_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'api_key')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Endpoint\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.endpoint},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'endpoint')}}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.AmazonSES')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Region\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.region},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'region')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Access key\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.access_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'access_key')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Secret\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.secret},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'secret')}}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.Dyn')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"API key\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.api_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'api_key')}}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.SocketLabs')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Server ID\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.server_id},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'server_id')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"API key\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.api_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'api_key')}}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.mailer.adapter === 'Swoosh.Adapters.Gmail')?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Access token\"}},[_c('el-input',{attrs:{\"value\":_vm.mailer.access_token},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.Mailer', 'access_token')}}})],1)],1):_vm._e()],1),_vm._v(\" \"),_c('el-form',{ref:\"emailNotifications\",attrs:{\"model\":_vm.emailNotifications,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Email notifications\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Digest:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Active\"}},[_c('el-switch',{attrs:{\"value\":_vm.emailNotifications.digest.active},on:{\"change\":function($event){return _vm.processNestedData($event, 'email_notifications', 'digest', 'active')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Globally enable or disable digest emails.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Schedule\"}},[_c('el-input',{attrs:{\"value\":_vm.emailNotifications.digest.schedule},on:{\"input\":function($event){return _vm.processNestedData($event, 'email_notifications', 'digest', 'schedule')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"When to send digest email, in \"),_c('a',{attrs:{\"href\":\"https://en.wikipedia.org/wiki/Cron\",\"rel\":\"nofollow noreferrer noopener\",\"target\":\"_blank\"}},[_vm._v(\"\\n crontab format\\n \")]),_vm._v(\".\\n \\\"0 0 * * 0\\\" is the default, meaning \\\"once a week at midnight on Sunday morning\\\"\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Interval\"}},[_c('el-input-number',{attrs:{\"value\":_vm.emailNotifications.digest.interval,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'email_notifications', 'digest', 'interval')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Minimum interval between digest emails to one user.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Inactivity threshold\"}},[_c('el-input-number',{attrs:{\"value\":_vm.emailNotifications.digest.inactivity_threshold,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'email_notifications', 'digest', 'inactivity_threshold')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Minimum user inactivity threshold.\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"userEmail\",attrs:{\"model\":_vm.userEmail,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Digest template styles:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Logo\"}},[_c('el-input',{attrs:{\"value\":_vm.userEmail.logo},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Emails.UserEmail', 'logo')}}}),_vm._v(\" \"),_c('div',{staticClass:\"upload-container\"},[_c('p',{staticClass:\"text\"},[_vm._v(\"or\")]),_vm._v(\" \"),_c('el-upload',{attrs:{\"http-request\":_vm.sendEmailLogo,\"multiple\":false,\"show-file-list\":false,\"action\":\"/api/v1/media\"}},[_c('el-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"}},[_vm._v(\"Click to upload\")])],1)],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A path to a custom logo.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Styling:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Link color\"}},[_c('el-input',{attrs:{\"value\":_vm.userEmail.styling.link_color},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Emails.UserEmail', 'styling', 'link_color')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Background color\"}},[_c('el-input',{attrs:{\"value\":_vm.userEmail.styling.background_color},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Emails.UserEmail', 'styling', 'background_color')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Content background color\"}},[_c('el-input',{attrs:{\"value\":_vm.userEmail.styling.content_background_color},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Emails.UserEmail', 'styling', 'content_background_color')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Header color\"}},[_c('el-input',{attrs:{\"value\":_vm.userEmail.styling.header_color},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Emails.UserEmail', 'styling', 'header_color')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Text color\"}},[_c('el-input',{attrs:{\"value\":_vm.userEmail.styling.text_color},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Emails.UserEmail', 'styling', 'text_color')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Text muted color\"}},[_c('el-input',{attrs:{\"value\":_vm.userEmail.styling.text_muted_color},on:{\"input\":function($event){return _vm.processNestedData($event, 'Pleroma.Emails.UserEmail', 'styling', 'text_muted_color')}}})],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaProxy.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MediaProxy.vue?vue&type=template&id=566b164a&\"\nimport script from \"./MediaProxy.vue?vue&type=script&lang=js&\"\nexport * from \"./MediaProxy.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MediaProxy.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MediaProxy.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{ref:\"mediaProxy\",attrs:{\"model\":_vm.mediaProxy,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.mediaProxy.enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'media_proxy', 'enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Enables proxying of remote media to the instance’s proxy\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Base URL\"}},[_c('el-input',{attrs:{\"value\":_vm.mediaProxy.base_url},on:{\"input\":function($event){return _vm.updateSetting($event, 'media_proxy', 'base_url')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts.\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Proxy options:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Redirect on failure\"}},[_c('el-switch',{attrs:{\"value\":_vm.mediaProxy.proxy_opts.redirect_on_failure},on:{\"change\":function($event){return _vm.processNestedData($event, 'media_proxy', 'proxy_opts', 'redirect_on_failure')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Redirects the client to the real remote URL if there's any HTTP errors. Any error during body processing will not be redirected as the response is chunked\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max body length (MB)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.mediaProxy.proxy_opts.max_body_length / 1048576,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event * 1048576, 'media_proxy', 'proxy_opts', 'max_body_length')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Limits the content length to be approximately the specified length\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max read duration (s)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.mediaProxy.proxy_opts.max_read_duration,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'media_proxy', 'proxy_opts', 'max_read_duration')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The total time the connection is allowed to read from the remote upstream\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Inline content types\"}},[_c('el-select',{attrs:{\"value\":_vm.inlineContentTypes,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'media_proxy', 'proxy_opts', 'inline_content_types')}}},[_c('el-option',{attrs:{\"value\":true,\"label\":\"True\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":false,\"label\":\"False\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"whitelistedTypeArray\",\"label\":\"List of whitelisted content types\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"keepUserAgent\",\"label\":\"Forward client's user-agent to the upstream\"}})],1),_vm._v(\" \"),(_vm.inlineContentTypes === true)?_c('p',{staticClass:\"expl\"},[_vm._v(\"Will not alter \"),_c('span',{staticClass:\"code\"},[_vm._v(\"content-disposition\")]),_vm._v(\" (up to the upstream)\")]):_vm._e(),_vm._v(\" \"),(!_vm.inlineContentTypes)?_c('p',{staticClass:\"expl\"},[_vm._v(\"Will add \"),_c('span',{staticClass:\"code\"},[_vm._v(\"content-disposition: attachment\")]),_vm._v(\" to any request\")]):_vm._e(),_vm._v(\" \"),(_vm.inlineContentTypes === 'keepUserAgent')?_c('p',{staticClass:\"expl\"},[_vm._v(\"\\n Will forward the client's user-agent to the upstream. This may be useful if the upstream is\\n doing content transformation (encoding, …) depending on the request.\\n \")]):_vm._e()],1),_vm._v(\" \"),(_vm.inlineContentTypes === 'whitelistedTypeArray')?_c('el-form-item',{attrs:{\"label\":\"Whitelisted content types\"}},[_c('el-select',{attrs:{\"value\":_vm.whitelistedContentTypes,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'media_proxy', 'proxy_opts', 'inline_content_types')}}},_vm._l((_vm.whitelistedContentTypesOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1):_vm._e(),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Request headers\"}},[_c('el-select',{attrs:{\"value\":_vm.mediaProxy.proxy_opts.req_headers || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'media_proxy', 'proxy_opts', 'req_headers')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_c('span',{staticClass:\"code\"},[_vm._v(\"resp_headers\")]),_vm._v(\" additional headers\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"HTTP:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Follow redirect\"}},[_c('el-switch',{attrs:{\"value\":_vm.http.follow_redirect},on:{\"change\":function($event){return _vm.processHttpSettings($event, 'media_proxy', 'proxy_opts', 'http', 'follow_redirect')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Pool\"}},[_c('el-select',{attrs:{\"value\":_vm.http.pool,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.processHttpSettings($event, 'media_proxy', 'proxy_opts', 'http', 'pool')}}},_vm._l((_vm.hackneyPoolsOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(_vm._s(_vm.getPoolExpl(_vm.http.pool)))])],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Whitelist\"}},[_c('el-select',{attrs:{\"value\":_vm.mediaProxy.whitelist || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'media_proxy', 'whitelist')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of domains to bypass the mediaproxy\")])],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Metadata.vue?vue&type=template&id=5d0a5fd6&\"\nimport script from \"./Metadata.vue?vue&type=script&lang=js&\"\nexport * from \"./Metadata.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Metadata.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"metadata\",attrs:{\"model\":_vm.metadata,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Providers\"}},[_c('el-select',{attrs:{\"value\":_vm.metadata.providers || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Metadata', 'providers')}}},[_c('el-option',{attrs:{\"value\":\"Pleroma.Web.Metadata.Providers.OpenGraph\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"Pleroma.Web.Metadata.Providers.TwitterCard\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"Pleroma.Web.Metadata.Providers.RelMe\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A list of metadata providers to enable.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Unfurl NSFW\"}},[_c('el-switch',{attrs:{\"value\":_vm.metadata.unfurl_nsfw},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Web.Metadata', 'unfurl_nsfw')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"If set to true nsfw attachments will be shown in previews.\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"richMedia\",attrs:{\"model\":_vm.richMedia,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Rich media:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Enabled\"}},[_c('el-switch',{attrs:{\"value\":_vm.richMedia.enabled},on:{\"change\":function($event){return _vm.updateSetting($event, 'rich_media', 'enabled')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"If enabled the instance will parse metadata from attached links to generate link previews.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Ignore hosts\"}},[_c('el-select',{attrs:{\"value\":_vm.richMedia.ignore_hosts || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'rich_media', 'ignore_hosts')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of hosts which will be ignored by the metadata parser.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Ignore TLD\"}},[_c('el-select',{attrs:{\"value\":_vm.richMedia.ignore_tld || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'rich_media', 'ignore_tld')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List TLDs (top-level domains) which will ignore for parse metadata.\\n Default is \"),_c('span',{staticClass:\"code\"},[_vm._v(\"[\\\"local\\\", \\\"localdomain\\\", \\\"lan\\\"]\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Parsers\"}},[_c('el-select',{attrs:{\"value\":_vm.richMedia.parsers || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'rich_media', 'parsers')}}},[_c('el-option',{attrs:{\"value\":\"Pleroma.Web.RichMedia.Parsers.TwitterCard\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"Pleroma.Web.RichMedia.Parsers.OGP\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"Pleroma.Web.RichMedia.Parsers.OEmbed\"}})],1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of Rich Media parsers\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"TTL Setters\"}},[_c('el-select',{attrs:{\"value\":_vm.richMedia.ttl_setters || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'rich_media', 'ttl_setters')}}},[_c('el-option',{attrs:{\"value\":\"Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl\"}})],1)],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./MRF.vue?vue&type=template&id=ca66c63c&\"\nimport script from \"./MRF.vue?vue&type=script&lang=js&\"\nexport * from \"./MRF.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"MRF.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"mrfSimple\",attrs:{\"model\":_vm.mrfSimple,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"MRF Simple:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Media removal\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfSimple.media_removal || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_simple', 'media_removal')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of instances to remove medias from\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Media NSFW\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfSimple.media_nsfw || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_simple', 'media_nsfw')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of instances to put medias as NSFW (sensitive)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Federated timeline removal\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfSimple.federated_timeline_removal || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_simple', 'federated_timeline_removal')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of instances to remove from Federated (aka The Whole Known Network) Timeline\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Reject\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfSimple.reject || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_simple', 'reject')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of instances to reject any activities from\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Accept\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfSimple.accept || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_simple', 'accept')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of instances to accept any activities from\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Report removal\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfSimple.report_removal || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_simple', 'report_removal')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of instances to reject reports from\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Avatar removal\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfSimple.avatar_removal || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_simple', 'avatar_removal')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of instances to strip avatars from\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Banner removal\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfSimple.banner_removal || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_simple', 'banner_removal')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"List of instances to strip banners from\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"mrfRejectnonpublic\",attrs:{\"model\":_vm.mrfRejectnonpublic,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"MRF Reject non public:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Allow followers-only posts\"}},[_c('el-switch',{attrs:{\"value\":_vm.mrfRejectnonpublic.allow_followersonly},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_rejectnonpublic', 'allow_followersonly')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Allow direct messages\"}},[_c('el-switch',{attrs:{\"value\":_vm.mrfRejectnonpublic.allow_direct},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_rejectnonpublic', 'allow_direct')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"mrfHellthread\",attrs:{\"model\":_vm.mrfHellthread,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"MRF Hellthread:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Delist threshold\"}},[_c('el-input-number',{attrs:{\"value\":_vm.mrfHellthread.delist_threshold,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_hellthread', 'delist_threshold')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Number of mentioned users after which the message gets delisted\\n (the message can still be seen, but it will not show up in public timelines and mentioned users won't get notifications about it).\\n Set to 0 to disable.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Reject threshold\"}},[_c('el-input-number',{attrs:{\"value\":_vm.mrfHellthread.reject_threshold,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_hellthread', 'reject_threshold')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Number of mentioned users after which the messaged gets rejected. Set to 0 to disable.\")])],1)],1),_vm._v(\" \"),_c('el-form',{ref:\"mrfKeyword\",attrs:{\"model\":_vm.mrfKeyword,\"label-width\":_vm.labelWidth}},[_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"MRF Keyword:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Reject\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfKeyword.reject || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_keyword', 'reject')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A list of patterns which result in message being rejected\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Federated timeline removal\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfKeyword.federated_timeline_removal,\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_keyword', 'federated_timeline_removal')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A list of patterns which result in message being removed from federated timelines (a.k.a unlisted)\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Replace\"}},[_vm._l((_vm.replacePatterns),function(ref,index){\nvar key = ref[0];\nvar value = ref[1];\nreturn _c('div',{key:index,staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":key,\"placeholder\":\"pattern\"},on:{\"input\":function($event){return _vm.parseReplace($event, 'key', index)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"value-input\",attrs:{\"value\":value,\"placeholder\":\"replacement\"},on:{\"input\":function($event){return _vm.parseReplace($event, 'value', index)}}}),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteReplaceRow(index)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addReplaceRow}})],2)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"mrfSubchain\",attrs:{\"model\":_vm.mrfSubchain,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"MRF Subchain:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Match actor:\"}},[_vm._l((_vm.matchActor),function(ref,index){\nvar regExp = ref[0];\nvar policies = ref[1];\nreturn _c('div',{key:index,staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":regExp,\"placeholder\":\"Regular expression\"},on:{\"input\":function($event){return _vm.parseMrfSubchain($event, 'regExp', index)}}}),_vm._v(\" :\\n \"),_c('el-select',{staticClass:\"value-input\",attrs:{\"value\":policies,\"placeholder\":\"Policy modules\",\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.parseMrfSubchain($event, 'policies', index)}}},_vm._l((_vm.policiesOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteMrfSubchainRow(index)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addMrfSubchainRow}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Matches a series of regular expressions against the actor field.\")])],2)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"mrfMention\",attrs:{\"model\":_vm.mrfMention,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"MRF Mention:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Actors\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfMention.actors || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_mention', 'actors')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A list of actors, for which to drop any posts mentioning.\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"mrfUserAllowlist\",attrs:{\"model\":_vm.mrfUserAllowlist,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"MRF User allowlist\"}},[_vm._l((_vm.userAllowlist),function(ref,index){\nvar domain = ref[0];\nvar users = ref[1];\nreturn _c('div',{key:index,staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":domain,\"placeholder\":\"domain\"},on:{\"input\":function($event){return _vm.parseMrfUserAllowlist($event, 'domain', index)}}}),_vm._v(\" :\\n \"),_c('el-select',{staticClass:\"value-input\",attrs:{\"value\":users,\"placeholder\":\"list of users\",\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.parseMrfUserAllowlist($event, 'users', index)}}}),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteMrfUserAllowlistRow(index)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addMrfUserAllowlistRow}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The keys in this section are the domain names that the policy should apply to. Each key should be assigned a list of users that should be allowed through by their ActivityPub ID.\")])],2)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"mrfNormalizeMarkup\",attrs:{\"model\":_vm.mrfNormalizeMarkup,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"MRF normalize markup:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Scrub policy\"}},[_c('el-input',{attrs:{\"value\":_vm.mrfNormalizeMarkup.scrub_policy},on:{\"input\":function($event){return _vm.updateSetting($event, 'mrf_normalize_markup', 'scrub_policy')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"mrfVocabulary\",attrs:{\"model\":_vm.mrfVocabulary,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"MRF Vocabulary:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Accept\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfVocabulary.accept || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_vocabulary', 'accept')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A list of ActivityStreams terms to accept. If empty, all supported messages are accepted.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Reject\"}},[_c('el-select',{attrs:{\"value\":_vm.mrfVocabulary.reject || [],\"multiple\":\"\",\"allow-create\":\"\",\"filterable\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'mrf_vocabulary', 'reject')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A list of ActivityStreams terms to reject. If empty, no messages are rejected.\")])],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Other.vue?vue&type=template&id=75a047f1&\"\nimport script from \"./Other.vue?vue&type=script&lang=js&\"\nexport * from \"./Other.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Other.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"formatEncoders\",attrs:{\"model\":_vm.formatEncoders,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Phoenix Format encoders:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"JSON\"}},[_c('el-input',{attrs:{\"value\":_vm.formatEncoders.json},on:{\"input\":function($event){return _vm.updateSetting($event, 'format_encoders', 'json')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"teslaAdapter\",attrs:{\"model\":_vm.teslaAdapter,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Tesla adapter\"}},[_c('el-input',{attrs:{\"value\":_vm.teslaAdapter.value},on:{\"input\":function($event){return _vm.updateSetting($event, 'adapter', 'value')}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"mimeTypesConfig\",attrs:{\"model\":_vm.mimeTypesConfig,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Mime types\"}},[_vm._l((_vm.mimeTypes),function(ref,index){\nvar type = ref[0];\nvar value = ref[1];\nreturn _c('div',{key:index,staticClass:\"setting-input\"},[_c('el-input',{staticClass:\"name-input\",attrs:{\"value\":type,\"placeholder\":\"type\"},on:{\"input\":function($event){return _vm.parseMimeTypes($event, 'type', index)}}}),_vm._v(\" :\\n \"),_c('el-select',{staticClass:\"value-input\",attrs:{\"value\":value,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.parseMimeTypes($event, 'value', index)}}}),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.deleteMimeTypes(index)}}})],1)}),_vm._v(\" \"),_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":_vm.addRowToMimeTypes}})],2),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RateLimiters.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./RateLimiters.vue?vue&type=template&id=4ebbf908&\"\nimport script from \"./RateLimiters.vue?vue&type=script&lang=js&\"\nexport * from \"./RateLimiters.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RateLimiters.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"RateLimiters.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{ref:\"rateLimiters\",attrs:{\"model\":_vm.rateLimiters,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Search:\"}},[(!_vm.searchLimitAuthUsers)?_c('div',[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.searchLimitAllUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'search', 'scale', 'oneLimit', _vm.searchLimitAllUsers)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.searchLimitAllUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'search', 'limit', 'oneLimit', _vm.searchLimitAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([{ 'tuple': [null, null] }, { 'tuple': [null, null] }], 'search')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.searchLimitAuthUsers)?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Authenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.searchLimitAuthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'search', 'scale', 'authUserslimit', [_vm.searchLimitUnauthUsers, _vm.searchLimitAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.searchLimitAuthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'search', 'limit', 'authUserslimit', [_vm.searchLimitUnauthUsers, _vm.searchLimitAuthUsers])}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Unauthenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.searchLimitUnauthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'search', 'scale', 'unauthUsersLimit', [_vm.searchLimitUnauthUsers, _vm.searchLimitAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.searchLimitUnauthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'search', 'limit', 'unauthUsersLimit', [_vm.searchLimitUnauthUsers, _vm.searchLimitAuthUsers])}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits({ 'tuple': [null, null] }, 'search')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"App account creation:\"}},[(!_vm.appAccountCreationAuthUsers)?_c('div',[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.appAccountCreationAllUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'app_account_creation', 'scale', 'oneLimit', _vm.appAccountCreationAllUsers)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.appAccountCreationAllUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'app_account_creation', 'limit', 'oneLimit', _vm.appAccountCreationAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([{ 'tuple': [null, null] }, { 'tuple': [null, null] }], 'app_account_creation')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.appAccountCreationAuthUsers)?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Authenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.appAccountCreationAuthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'app_account_creation', 'scale', 'authUserslimit', [_vm.appAccountCreationUnauthUsers, _vm.appAccountCreationAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.appAccountCreationAuthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'app_account_creation', 'limit', 'authUserslimit', [_vm.appAccountCreationUnauthUsers, _vm.appAccountCreationAuthUsers])}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Unauthenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.appAccountCreationUnauthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'app_account_creation', 'scale', 'unauthUsersLimit', [_vm.appAccountCreationUnauthUsers, _vm.appAccountCreationAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.appAccountCreationUnauthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'app_account_creation', 'limit', 'unauthUsersLimit', [_vm.appAccountCreationUnauthUsers, _vm.appAccountCreationAuthUsers])}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits({ 'tuple': [null, null] }, 'app_account_creation')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Relations actions:\"}},[(!_vm.relationsActionsAuthUsers)?_c('div',[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.relationsActionsAllUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relations_actions', 'scale', 'oneLimit', _vm.relationsActionsAllUsers)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.relationsActionsAllUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relations_actions', 'limit', 'oneLimit', _vm.relationsActionsAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([{ 'tuple': [null, null] }, { 'tuple': [null, null] }], 'relations_actions')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.relationsActionsAuthUsers)?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Authenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.relationsActionsAuthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relations_actions', 'scale', 'authUserslimit', [_vm.relationsActionsUnauthUsers, _vm.relationsActionsAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.relationsActionsAuthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relations_actions', 'limit', 'authUserslimit', [_vm.relationsActionsUnauthUsers, _vm.relationsActionsAuthUsers])}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Unauthenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.relationsActionsUnauthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relations_actions', 'scale', 'unauthUsersLimit', [_vm.relationsActionsUnauthUsers, _vm.relationsActionsAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.relationsActionsUnauthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relations_actions', 'limit', 'unauthUsersLimit', [_vm.relationsActionsUnauthUsers, _vm.relationsActionsAuthUsers])}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits({ 'tuple': [null, null] }, 'relations_actions')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Relation ID Action:\"}},[(!_vm.relationIdActionAuthUsers)?_c('div',[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.relationIdActionAllUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relation_id_action', 'scale', 'oneLimit', _vm.relationIdActionAllUsers)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.relationIdActionAllUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relation_id_action', 'limit', 'oneLimit', _vm.relationIdActionAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([{ 'tuple': [null, null] }, { 'tuple': [null, null] }], 'relation_id_action')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.relationIdActionAuthUsers)?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Authenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.relationIdActionAuthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relation_id_action', 'scale', 'authUserslimit', [_vm.relationIdActionUnauthUsers, _vm.relationIdActionAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.relationIdActionAuthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relation_id_action', 'limit', 'authUserslimit', [_vm.relationIdActionUnauthUsers, _vm.relationIdActionAuthUsers])}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Unauthenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.relationIdActionUnauthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relation_id_action', 'scale', 'unauthUsersLimit', [_vm.relationIdActionUnauthUsers, _vm.relationIdActionAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.relationIdActionUnauthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'relation_id_action', 'limit', 'unauthUsersLimit', [_vm.relationIdActionUnauthUsers, _vm.relationIdActionAuthUsers])}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits({ 'tuple': [null, null] }, 'relation_id_action')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Statuses actions:\"}},[(!_vm.statusesActionsAuthUsers)?_c('div',[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.statusesActionsAllUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'statuses_actions', 'scale', 'oneLimit', _vm.statusesActionsAllUsers)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.statusesActionsAllUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'statuses_actions', 'limit', 'oneLimit', _vm.statusesActionsAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([{ 'tuple': [null, null] }, { 'tuple': [null, null] }], 'statuses_actions')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.statusesActionsAuthUsers)?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Authenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.statusesActionsAuthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'statuses_actions', 'scale', 'authUserslimit', [_vm.statusesActionsUnauthUsers, _vm.statusesActionsAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.statusesActionsAuthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'statuses_actions', 'limit', 'authUserslimit', [_vm.statusesActionsUnauthUsers, _vm.statusesActionsAuthUsers])}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Unauthenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.statusesActionsUnauthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'statuses_actions', 'scale', 'unauthUsersLimit', [_vm.statusesActionsUnauthUsers, _vm.statusesActionsAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.statusesActionsUnauthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'statuses_actions', 'limit', 'unauthUsersLimit', [_vm.statusesActionsUnauthUsers, _vm.statusesActionsAuthUsers])}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits({ 'tuple': [null, null] }, 'statuses_actions')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Status ID Action:\"}},[(!_vm.statusIdActionAuthUsers)?_c('div',[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.statusIdActionAllUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'status_id_action', 'scale', 'oneLimit', _vm.statusIdActionAllUsers)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.statusIdActionAllUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'status_id_action', 'limit', 'oneLimit', _vm.statusIdActionAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([{ 'tuple': [null, null] }, { 'tuple': [null, null] }], 'status_id_action')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.statusIdActionAuthUsers)?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Authenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.statusIdActionAuthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'status_id_action', 'scale', 'authUserslimit', [_vm.statusIdActionUnauthUsers, _vm.statusIdActionAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.statusIdActionAuthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'status_id_action', 'limit', 'authUserslimit', [_vm.statusIdActionUnauthUsers, _vm.statusIdActionAuthUsers])}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Unauthenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.statusIdActionUnauthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'status_id_action', 'scale', 'unauthUsersLimit', [_vm.statusIdActionUnauthUsers, _vm.statusIdActionAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.statusIdActionUnauthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'status_id_action', 'limit', 'unauthUsersLimit', [_vm.statusIdActionUnauthUsers, _vm.statusIdActionAuthUsers])}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits({ 'tuple': [null, null] }, 'status_id_action')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Password reset:\"}},[(!_vm.passwordResetAuthUsers)?_c('div',[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.passwordResetAllUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'password_reset', 'scale', 'oneLimit', _vm.passwordResetAllUsers)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.passwordResetAllUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'password_reset', 'limit', 'oneLimit', _vm.passwordResetAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([{ 'tuple': [null, null] }, { 'tuple': [null, null] }], 'password_reset')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.passwordResetAuthUsers)?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Authenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.passwordResetAuthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'password_reset', 'scale', 'authUserslimit', [_vm.passwordResetUnauthUsers, _vm.passwordResetAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.passwordResetAuthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'password_reset', 'limit', 'authUserslimit', [_vm.passwordResetUnauthUsers, _vm.passwordResetAuthUsers])}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Unauthenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.passwordResetUnauthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'password_reset', 'scale', 'unauthUsersLimit', [_vm.passwordResetUnauthUsers, _vm.passwordResetAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.passwordResetUnauthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'password_reset', 'limit', 'unauthUsersLimit', [_vm.passwordResetUnauthUsers, _vm.passwordResetAuthUsers])}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits({ 'tuple': [null, null] }, 'password_reset')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Account confirmation resend:\"}},[(!_vm.accountConfirmationResendAuthUsers)?_c('div',[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.accountConfirmationResendAllUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'account_confirmation_resend', 'scale', 'oneLimit', _vm.accountConfirmationResendAllUsers)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.accountConfirmationResendAllUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'account_confirmation_resend', 'limit', 'oneLimit', _vm.accountConfirmationResendAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([{ 'tuple': [null, null] }, { 'tuple': [null, null] }], 'account_confirmation_resend')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.accountConfirmationResendAuthUsers)?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Authenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.accountConfirmationResendAuthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'account_confirmation_resend', 'scale', 'authUserslimit', [_vm.accountConfirmationResendUnauthUsers, _vm.accountConfirmationResendAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.accountConfirmationResendAuthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'account_confirmation_resend', 'limit', 'authUserslimit', [_vm.accountConfirmationResendUnauthUsers, _vm.accountConfirmationResendAuthUsers])}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Unauthenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.accountConfirmationResendUnauthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'account_confirmation_resend', 'scale', 'unauthUsersLimit', [_vm.accountConfirmationResendUnauthUsers, _vm.accountConfirmationResendAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.accountConfirmationResendUnauthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'account_confirmation_resend', 'limit', 'unauthUsersLimit', [_vm.accountConfirmationResendUnauthUsers, _vm.accountConfirmationResendAuthUsers])}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits({ 'tuple': [null, null] }, 'account_confirmation_resend')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()]),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Activity pub routes:\"}},[(!_vm.activityPubRoutesAuthUsers)?_c('div',[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.activityPubRoutesAllUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'ap_routes', 'scale', 'oneLimit', _vm.activityPubRoutesAllUsers)}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.activityPubRoutesAllUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'ap_routes', 'limit', 'oneLimit', _vm.activityPubRoutesAllUsers)}}}),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-plus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits([{ 'tuple': [null, null] }, { 'tuple': [null, null] }], 'ap_routes')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set different limits for unauthenticated and authenticated users\")])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.activityPubRoutesAuthUsers)?_c('div',[_c('el-form-item',{attrs:{\"label\":\"Authenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.activityPubRoutesAuthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'ap_routes', 'scale', 'authUserslimit', [_vm.activityPubRoutesUnauthUsers, _vm.activityPubRoutesAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.activityPubRoutesAuthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'ap_routes', 'limit', 'authUserslimit', [_vm.activityPubRoutesUnauthUsers, _vm.activityPubRoutesAuthUsers])}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Unauthenticated users:\"}},[_c('el-input',{staticClass:\"scale-input\",attrs:{\"value\":_vm.activityPubRoutesUnauthUsers[0],\"placeholder\":\"scale\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'ap_routes', 'scale', 'unauthUsersLimit', [_vm.activityPubRoutesUnauthUsers, _vm.activityPubRoutesAuthUsers])}}}),_vm._v(\" :\\n \"),_c('el-input',{staticClass:\"limit-input\",attrs:{\"value\":_vm.activityPubRoutesUnauthUsers[1],\"placeholder\":\"limit\"},on:{\"input\":function($event){return _vm.parseRateLimiter($event, 'ap_routes', 'limit', 'unauthUsersLimit', [_vm.activityPubRoutesUnauthUsers, _vm.activityPubRoutesAuthUsers])}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"limit-button-container\"},[_c('el-button',{attrs:{\"icon\":\"el-icon-minus\",\"circle\":\"\"},on:{\"click\":function($event){return _vm.toggleLimits({ 'tuple': [null, null] }, 'ap_routes')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl limit-expl\"},[_vm._v(\"Set limit for all users\")])],1)],1):_vm._e()]),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Upload.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./Upload.vue?vue&type=template&id=03608c71&\"\nimport script from \"./Upload.vue?vue&type=script&lang=js&\"\nexport * from \"./Upload.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Upload.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Upload.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('el-form',{ref:\"upload\",attrs:{\"model\":_vm.upload,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Uploader\"}},[_c('el-input',{attrs:{\"value\":_vm.upload.uploader},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Upload', 'uploader')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Filters\"}},[_c('el-select',{attrs:{\"value\":_vm.upload.filters || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Upload', 'filters')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Link name\"}},[_c('el-switch',{attrs:{\"value\":_vm.upload.link_name},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Upload', 'link_name')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"When enabled Pleroma will add a name parameter to the url of the upload, for example\\n \"),_c('span',{staticClass:\"code\"},[_vm._v(\"https://instance.tld/media/corndog.png?name=corndog.png\")])])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Base URL\"}},[_c('el-input',{attrs:{\"value\":_vm.upload.base_url},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Upload', 'base_url')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Proxy remote\"}},[_c('el-switch',{attrs:{\"value\":_vm.upload.proxy_remote},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Upload', 'proxy_remote')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"If you're using a remote uploader, Pleroma will proxy media requests instead of redirecting to it\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Proxy options:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Redirect on failure\"}},[_c('el-switch',{attrs:{\"value\":_vm.upload.proxy_opts.redirect_on_failure},on:{\"change\":function($event){return _vm.processNestedData($event, 'Pleroma.Upload', 'proxy_opts', 'redirect_on_failure')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Redirects the client to the real remote URL if there's any HTTP errors.\\n Any error during body processing will not be redirected as the response is chunked\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max body length (MB)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.upload.proxy_opts.max_body_length / 1048576,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event * 1048576, 'Pleroma.Upload', 'proxy_opts', 'max_body_length')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Limits the content length to be approximately the specified length\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Max read duration (s)\"}},[_c('el-input-number',{attrs:{\"value\":_vm.upload.proxy_opts.max_read_duration,\"step\":1,\"min\":0,\"size\":\"large\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'Pleroma.Upload', 'proxy_opts', 'max_read_duration')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"The total time the connection is allowed to read from the remote upstream\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Inline content types\"}},[_c('el-select',{attrs:{\"value\":_vm.inlineContentTypes,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'Pleroma.Upload', 'proxy_opts', 'inline_content_types')}}},[_c('el-option',{attrs:{\"value\":true,\"label\":\"True\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":false,\"label\":\"False\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"whitelistedTypeArray\",\"label\":\"List of whitelisted content types\"}}),_vm._v(\" \"),_c('el-option',{attrs:{\"value\":\"keepUserAgent\",\"label\":\"Forward client's user-agent to the upstream\"}})],1),_vm._v(\" \"),(_vm.inlineContentTypes === true)?_c('p',{staticClass:\"expl\"},[_vm._v(\"Will not alter \"),_c('span',{staticClass:\"code\"},[_vm._v(\"content-disposition\")]),_vm._v(\" (up to the upstream)\")]):_vm._e(),_vm._v(\" \"),(!_vm.inlineContentTypes)?_c('p',{staticClass:\"expl\"},[_vm._v(\"Will add \"),_c('span',{staticClass:\"code\"},[_vm._v(\"content-disposition: attachment\")]),_vm._v(\" to any request\")]):_vm._e(),_vm._v(\" \"),(_vm.inlineContentTypes === 'keepUserAgent')?_c('p',{staticClass:\"expl\"},[_vm._v(\"\\n Will forward the client's user-agent to the upstream. This may be useful if the upstream is\\n doing content transformation (encoding, …) depending on the request.\\n \")]):_vm._e()],1),_vm._v(\" \"),(_vm.inlineContentTypes === 'whitelistedTypeArray')?_c('el-form-item',{attrs:{\"label\":\"Whitelisted content types\"}},[_c('el-select',{attrs:{\"value\":_vm.whitelistedContentTypes,\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'Pleroma.Upload', 'proxy_opts', 'inline_content_types')}}},_vm._l((_vm.whitelistedContentTypesOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1):_vm._e(),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Request headers\"}},[_c('el-select',{attrs:{\"value\":_vm.upload.proxy_opts.req_headers || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.processNestedData($event, 'Pleroma.Upload', 'proxy_opts', 'req_headers')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_c('span',{staticClass:\"code\"},[_vm._v(\"resp_headers\")]),_vm._v(\" additional headers\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"HTTP:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Follow redirect\"}},[_c('el-switch',{attrs:{\"value\":_vm.http.follow_redirect},on:{\"change\":function($event){return _vm.processHttpSettings($event, 'Pleroma.Upload', 'proxy_opts', 'http', 'follow_redirect')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Pool\"}},[_c('el-select',{attrs:{\"value\":_vm.http.pool,\"clearable\":\"\"},on:{\"change\":function($event){return _vm.processHttpSettings($event, 'Pleroma.Upload', 'proxy_opts', 'http', 'pool')}}},_vm._l((_vm.hackneyPoolsOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(_vm._s(_vm.getPoolExpl(_vm.http.pool)))])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"uploadersLocal\",attrs:{\"model\":_vm.uploadersLocal,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Uploaders.Local:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Directory for user-uploads\"}},[_c('el-input',{attrs:{\"value\":_vm.uploadersLocal.uploads},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Uploaders.Local', 'uploads')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Which directory to store the user-uploads in, relative to pleroma’s working directory\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"uploadFilterMogrify\",attrs:{\"model\":_vm.uploadFilterMogrify,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Actions for Mogrify\"}},[_c('el-select',{attrs:{\"value\":_vm.uploadFilterMogrify.args || [],\"multiple\":\"\",\"filterable\":\"\",\"allow-create\":\"\"},on:{\"change\":function($event){return _vm.updateSetting($event, 'Pleroma.Upload.Filter.Mogrify', 'args')}}},_vm._l((_vm.mogrifyActionsOptions),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"uploadAnonymizeFilename\",attrs:{\"model\":_vm.uploadAnonymizeFilename,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Anonymize filename\"}},[_c('el-input',{attrs:{\"value\":_vm.uploadAnonymizeFilename.text},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Upload.Filter.AnonymizeFilename', 'text')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"Text to replace filenames in links. If empty, \"),_c('span',{staticClass:\"code\"},[_vm._v(\"{random}.extension\")]),_vm._v(\" will be used\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"uploadS3\",attrs:{\"model\":_vm.uploadS3,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"S3 Config:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Bucket\"}},[_c('el-input',{attrs:{\"value\":_vm.uploadS3.bucket},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Uploaders.S3', 'bucket')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"S3 bucket name\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Bucket namespace\"}},[_c('el-input',{attrs:{\"value\":_vm.uploadS3.bucket_namespace},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Uploaders.S3', 'bucket_namespace')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"S3 bucket namespace\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Public endpoint\"}},[_c('el-input',{attrs:{\"value\":_vm.uploadS3.public_endpoint},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Uploaders.S3', 'public_endpoint')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"S3 endpoint that the user finally accesses\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Truncated namespace\"}},[_c('el-input',{attrs:{\"value\":_vm.uploadS3.truncated_namespace},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Uploaders.S3', 'truncated_namespace')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"If you use S3 compatible service such as Digital Ocean Spaces or CDN, set folder name or \\\"\\\" etc.\\n For example, when using CDN to S3 virtual host format, set \\\"\\\".\\n At this time, write CNAME to CDN in \"),_c('span',{staticClass:\"code\"},[_vm._v(\"public_endpoint\")]),_vm._v(\".\\n \")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('el-form',{ref:\"uploadMDII\",attrs:{\"model\":_vm.uploadMDII,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Uploaders.MDII Config:\"}}),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"CGI\"}},[_c('el-input',{attrs:{\"value\":_vm.uploadMDII.cgi},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Uploaders.MDII', 'cgi')}}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Files\"}},[_c('el-input',{attrs:{\"value\":_vm.uploadMDII.files},on:{\"input\":function($event){return _vm.updateSetting($event, 'Pleroma.Uploaders.MDII', 'files')}}})],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebPush.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./WebPush.vue?vue&type=template&id=1778144a&\"\nimport script from \"./WebPush.vue?vue&type=script&lang=js&\"\nexport * from \"./WebPush.vue?vue&type=script&lang=js&\"\nimport style0 from \"./WebPush.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"WebPush.vue\"\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-form',{ref:\"vapidDetails\",attrs:{\"model\":_vm.vapidDetails,\"label-width\":_vm.labelWidth}},[_c('el-form-item',{attrs:{\"label\":\"Subject\"}},[_c('el-input',{attrs:{\"value\":_vm.vapidDetails.subject},on:{\"input\":function($event){return _vm.updateSetting($event, 'vapid_details', 'subject')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"A mailto link for the administrative contact. It’s best if this email is not a personal email address,\\n but rather a group email so that if a person leaves an organization, is unavailable for an extended period,\\n or otherwise can’t respond, someone else on the list can.\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Public key\"}},[_c('el-input',{attrs:{\"value\":_vm.vapidDetails.public_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'vapid_details', 'public_key')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"VAPID public key\")])],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":\"Private key\"}},[_c('el-input',{attrs:{\"value\":_vm.vapidDetails.private_key},on:{\"input\":function($event){return _vm.updateSetting($event, 'vapid_details', 'private_key')}}}),_vm._v(\" \"),_c('p',{staticClass:\"expl\"},[_vm._v(\"VAPID private key\")])],1),_vm._v(\" \"),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"Submit\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=729534ce&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=729534ce&rel=stylesheet%2Fscss&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"729534ce\",\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Metadata.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoLinker.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Instance.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Other.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MRF.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Frontend.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JobQueue.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Logger.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityPub.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../node_modules/css-loader/index.js??ref--11-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gopher.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7c6b.c306c730.js b/priv/static/adminfe/static/js/chunk-7c6b.c306c730.js new file mode 100644 index 000000000..24d1d447a --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-7c6b.c306c730.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-7c6b"],{HMof:function(e,t,i){"use strict";i.r(t);var n=i("o0o1"),s=i.n(n),a=i("yXPU"),r=i.n(a),o={data:function(){return{rules:{email:[{validator:this.validateEmail,trigger:"blur"}]},newTokenForm:{maxUse:1,expiresAt:""},inviteUserForm:{email:"",name:""},createTokenDialogVisible:!1,inviteUserDialogVisible:!1}},computed:{getLabelWidth:function(){return this.isDesktop?"100px":"80px"},isDesktop:function(){return"desktop"===this.$store.state.app.device},loading:function(){return this.$store.state.invites.loading},newToken:function(){return this.$store.state.invites.newToken},tokens:function(){return this.$store.state.invites.inviteTokens}},mounted:function(){this.$store.dispatch("FetchInviteTokens")},methods:{closeDialogWindow:function(){this.inviteUserDialogVisible=!1,this.createTokenDialogVisible=!1,this.$store.dispatch("RemoveNewToken"),this.$data.inviteUserForm.email="",this.$data.inviteUserForm.name=""},createToken:function(){this.$store.dispatch("GenerateInviteToken",this.$data.newTokenForm)},inviteUserViaEmail:function(){var e=r()(s.a.mark(function e(){var t=this;return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:this.$refs.inviteUserForm.validate(function(){var e=r()(s.a.mark(function e(i){return s.a.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!i){e.next=15;break}return e.prev=1,e.next=4,t.$store.dispatch("InviteUserViaEmail",t.$data.inviteUserForm);case 4:e.next=9;break;case 6:return e.prev=6,e.t0=e.catch(1),e.abrupt("return");case 9:return e.prev=9,t.closeDialogWindow(),e.finish(9);case 12:t.$message({type:"success",message:t.$t("invites.emailSent")}),e.next=17;break;case 15:return t.$message({type:"error",message:t.$t("invites.submitFormError")}),e.abrupt("return",!1);case 17:case"end":return e.stop()}},e,null,[[1,6,9,12]])}));return function(t){return e.apply(this,arguments)}}());case 1:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}(),revokeInviteToken:function(e){this.$store.dispatch("RevokeToken",e)},validateEmail:function(e,t,i){return""===t?i(new Error(this.$t("invites.emptyEmailError"))):this.validEmail(t)?i():i(new Error(this.$t("invites.invalidEmailError")))},validEmail:function(e){return/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e)}}},l=(i("ObxI"),i("KHd+")),c=Object(l.a)(o,function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"invites-container"},[i("h1",[e._v(e._s(e.$t("invites.inviteTokens")))]),e._v(" "),i("div",{staticClass:"actions-container"},[i("el-button",{staticClass:"create-invite-token",on:{click:function(t){e.createTokenDialogVisible=!0}}},[i("span",[i("i",{staticClass:"icon el-icon-plus"}),e._v("\n "+e._s(e.$t("invites.createInviteToken"))+"\n ")])]),e._v(" "),i("el-button",{staticClass:"invite-via-email",on:{click:function(t){e.inviteUserDialogVisible=!0}}},[i("span",[i("i",{staticClass:"icon el-icon-message"}),e._v("\n "+e._s(e.$t("invites.inviteUserViaEmail"))+"\n ")])])],1),e._v(" "),i("el-dialog",{attrs:{visible:e.createTokenDialogVisible,"show-close":!1,title:e.$t("invites.createInviteToken"),"custom-class":"create-new-token-dialog"},on:{"update:visible":function(t){e.createTokenDialogVisible=t}}},[i("el-form",{ref:"newTokenForm",attrs:{model:e.newTokenForm,"label-width":e.getLabelWidth,"status-icon":""}},[i("el-form-item",{attrs:{label:e.$t("invites.maxUse")}},[i("el-input-number",{attrs:{min:0,size:e.isDesktop?"medium":"small",name:"maxUse"},model:{value:e.newTokenForm.maxUse,callback:function(t){e.$set(e.newTokenForm,"maxUse",t)},expression:"newTokenForm.maxUse"}})],1),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.expiresAt")}},[i("el-date-picker",{staticClass:"pick-date",attrs:{placeholder:e.$t("invites.pickDate"),type:"date",name:"date","value-format":"yyyy-MM-dd"},model:{value:e.newTokenForm.expiresAt,callback:function(t){e.$set(e.newTokenForm,"expiresAt",t)},expression:"newTokenForm.expiresAt"}})],1)],1),e._v(" "),i("span",{attrs:{slot:"footer"},slot:"footer"},[i("el-button",{on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("invites.cancel")))]),e._v(" "),i("el-button",{attrs:{type:"primary"},on:{click:e.createToken}},[e._v(e._s(e.$t("invites.create")))])],1),e._v(" "),"token"in e.newToken?i("el-card",[i("div",{staticClass:"clearfix",attrs:{slot:"header"},slot:"header"},[i("span",[e._v(e._s(e.$t("invites.tokenCreated")))])]),e._v(" "),i("p",[e._v(e._s(this.$t("invites.token"))+": "+e._s(e.newToken.token))]),e._v(" "),i("p",[e._v(e._s(this.$t("invites.maxUse"))+": "+e._s(e.newToken.maxUse))]),e._v(" "),i("p",[e._v(e._s(this.$t("invites.expiresAt"))+": "+e._s(e.newToken.expiresAt))])]):e._e()],1),e._v(" "),i("el-dialog",{attrs:{visible:e.inviteUserDialogVisible,"show-close":!1,title:e.$t("invites.sendRegistration"),"custom-class":"invite-via-email-dialog"},on:{"update:visible":function(t){e.inviteUserDialogVisible=t}}},[i("div",[i("p",{staticClass:"info"},[e._v(e._s(e.$t("invites.inviteViaEmailAlert")))]),e._v(" "),i("el-form",{ref:"inviteUserForm",attrs:{model:e.inviteUserForm,rules:e.rules,"label-width":e.getLabelWidth,"status-icon":""}},[i("el-form-item",{attrs:{label:e.$t("invites.email"),prop:"email"}},[i("el-input",{attrs:{name:"email",type:"email",autofocus:""},model:{value:e.inviteUserForm.email,callback:function(t){e.$set(e.inviteUserForm,"email",t)},expression:"inviteUserForm.email"}})],1),e._v(" "),i("el-form-item",{attrs:{label:e.$t("invites.name"),prop:"name"}},[i("el-input",{attrs:{name:"name"},model:{value:e.inviteUserForm.name,callback:function(t){e.$set(e.inviteUserForm,"name",t)},expression:"inviteUserForm.name"}})],1)],1)],1),e._v(" "),i("span",{attrs:{slot:"footer"},slot:"footer"},[i("el-button",{on:{click:e.closeDialogWindow}},[e._v(e._s(e.$t("invites.cancel")))]),e._v(" "),i("el-button",{attrs:{type:"primary"},on:{click:e.inviteUserViaEmail}},[e._v(e._s(e.$t("invites.create")))])],1)]),e._v(" "),i("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticClass:"invite-token-table",attrs:{data:e.tokens,"default-sort":{prop:"used",order:"ascending"}}},[e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.id"),"min-width":"60",prop:"id",sortable:""}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.token"),"min-width":e.isDesktop?350:125,prop:"token"}}),e._v(" "),e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.expiresAt"),align:"center","header-align":"center","min-width":"110",prop:"expires_at",sortable:""}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.maxUse"),align:"center","header-align":"center","min-width":"60",prop:"max_use",sortable:""}}),e._v(" "),e.isDesktop?i("el-table-column",{attrs:{label:e.$t("invites.uses"),align:"center","header-align":"center","min-width":"60",prop:"uses"}}):e._e(),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.used"),"min-width":e.isDesktop?60:50,align:"center","header-align":"center",prop:"used",sortable:""},scopedSlots:e._u([{key:"default",fn:function(t){return[i("el-tag",{attrs:{type:t.row.used?"danger":"success","disable-transitions":""}},[e._v(e._s(t.row.used?e.$t("invites.used"):e.$t("invites.active")))])]}}])}),e._v(" "),i("el-table-column",{attrs:{label:e.$t("invites.actions"),"min-width":e.isDesktop?100:50,align:"center","header-align":"center"},scopedSlots:e._u([{key:"default",fn:function(t){return[i("el-button",{attrs:{type:"text",size:"small"},nativeOn:{click:function(i){return e.revokeInviteToken(t.row.token)}}},[e._v("\n "+e._s(e.$t("invites.revoke"))+"\n ")])]}}])})],1)],1)},[],!1,null,null,null);c.options.__file="index.vue";t.default=c.exports},ObxI:function(e,t,i){"use strict";var n=i("Tykb");i.n(n).a},Tykb:function(e,t,i){}}]); +//# sourceMappingURL=chunk-7c6b.c306c730.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7c6b.c306c730.js.map b/priv/static/adminfe/static/js/chunk-7c6b.c306c730.js.map new file mode 100644 index 000000000..0384ad316 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-7c6b.c306c730.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/invites/index.vue?6d27","webpack:///./src/views/invites/index.vue?b523","webpack:///src/views/invites/index.vue","webpack:///./src/views/invites/index.vue","webpack:///./src/views/invites/index.vue?0fc1"],"names":["views_invitesvue_type_script_lang_js_","data","rules","email","validator","this","validateEmail","trigger","newTokenForm","maxUse","expiresAt","inviteUserForm","name","createTokenDialogVisible","inviteUserDialogVisible","computed","getLabelWidth","isDesktop","$store","state","app","device","loading","invites","newToken","tokens","inviteTokens","mounted","dispatch","methods","closeDialogWindow","$data","createToken","inviteUserViaEmail","_inviteUserViaEmail","asyncToGenerator_default","regenerator_default","a","mark","_callee2","_this","wrap","_context2","prev","next","$refs","validate","_ref","_callee","valid","_context","t0","abrupt","finish","$message","type","message","$t","stop","_x","apply","arguments","revokeInviteToken","token","rule","value","callback","Error","validEmail","test","component","Object","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","_v","_s","on","click","$event","attrs","visible","show-close","title","custom-class","update:visible","ref","model","label-width","status-icon","label","min","size","$$v","$set","expression","placeholder","value-format","slot","_e","prop","autofocus","directives","rawName","default-sort","order","min-width","sortable","align","header-align","scopedSlots","_u","key","fn","scope","row","used","disable-transitions","nativeOn","options","__file","__webpack_exports__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_11_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_11_2_node_modules_sass_loader_lib_loader_js_ref_11_3_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_rel_stylesheet_2Fscss_lang_scss___WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","n"],"mappings":"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","file":"static/js/chunk-7c6b.c306c730.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"invites-container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t('invites.inviteTokens')))]),_vm._v(\" \"),_c('div',{staticClass:\"actions-container\"},[_c('el-button',{staticClass:\"create-invite-token\",on:{\"click\":function($event){_vm.createTokenDialogVisible = true}}},[_c('span',[_c('i',{staticClass:\"icon el-icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.createInviteToken'))+\"\\n \")])]),_vm._v(\" \"),_c('el-button',{staticClass:\"invite-via-email\",on:{\"click\":function($event){_vm.inviteUserDialogVisible = true}}},[_c('span',[_c('i',{staticClass:\"icon el-icon-message\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.inviteUserViaEmail'))+\"\\n \")])])],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.createTokenDialogVisible,\"show-close\":false,\"title\":_vm.$t('invites.createInviteToken'),\"custom-class\":\"create-new-token-dialog\"},on:{\"update:visible\":function($event){_vm.createTokenDialogVisible=$event}}},[_c('el-form',{ref:\"newTokenForm\",attrs:{\"model\":_vm.newTokenForm,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.maxUse')}},[_c('el-input-number',{attrs:{\"min\":0,\"size\":_vm.isDesktop ? 'medium' : 'small',\"name\":\"maxUse\"},model:{value:(_vm.newTokenForm.maxUse),callback:function ($$v) {_vm.$set(_vm.newTokenForm, \"maxUse\", $$v)},expression:\"newTokenForm.maxUse\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.expiresAt')}},[_c('el-date-picker',{staticClass:\"pick-date\",attrs:{\"placeholder\":_vm.$t('invites.pickDate'),\"type\":\"date\",\"name\":\"date\",\"value-format\":\"yyyy-MM-dd\"},model:{value:(_vm.newTokenForm.expiresAt),callback:function ($$v) {_vm.$set(_vm.newTokenForm, \"expiresAt\", $$v)},expression:\"newTokenForm.expiresAt\"}})],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('invites.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.createToken}},[_vm._v(_vm._s(_vm.$t('invites.create')))])],1),_vm._v(\" \"),('token' in _vm.newToken)?_c('el-card',[_c('div',{staticClass:\"clearfix\",attrs:{\"slot\":\"header\"},slot:\"header\"},[_c('span',[_vm._v(_vm._s(_vm.$t('invites.tokenCreated')))])]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(this.$t('invites.token'))+\": \"+_vm._s(_vm.newToken.token))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(this.$t('invites.maxUse'))+\": \"+_vm._s(_vm.newToken.maxUse))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(this.$t('invites.expiresAt'))+\": \"+_vm._s(_vm.newToken.expiresAt))])]):_vm._e()],1),_vm._v(\" \"),_c('el-dialog',{attrs:{\"visible\":_vm.inviteUserDialogVisible,\"show-close\":false,\"title\":_vm.$t('invites.sendRegistration'),\"custom-class\":\"invite-via-email-dialog\"},on:{\"update:visible\":function($event){_vm.inviteUserDialogVisible=$event}}},[_c('div',[_c('p',{staticClass:\"info\"},[_vm._v(_vm._s(_vm.$t('invites.inviteViaEmailAlert')))]),_vm._v(\" \"),_c('el-form',{ref:\"inviteUserForm\",attrs:{\"model\":_vm.inviteUserForm,\"rules\":_vm.rules,\"label-width\":_vm.getLabelWidth,\"status-icon\":\"\"}},[_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.email'),\"prop\":\"email\"}},[_c('el-input',{attrs:{\"name\":\"email\",\"type\":\"email\",\"autofocus\":\"\"},model:{value:(_vm.inviteUserForm.email),callback:function ($$v) {_vm.$set(_vm.inviteUserForm, \"email\", $$v)},expression:\"inviteUserForm.email\"}})],1),_vm._v(\" \"),_c('el-form-item',{attrs:{\"label\":_vm.$t('invites.name'),\"prop\":\"name\"}},[_c('el-input',{attrs:{\"name\":\"name\"},model:{value:(_vm.inviteUserForm.name),callback:function ($$v) {_vm.$set(_vm.inviteUserForm, \"name\", $$v)},expression:\"inviteUserForm.name\"}})],1)],1)],1),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":_vm.closeDialogWindow}},[_vm._v(_vm._s(_vm.$t('invites.cancel')))]),_vm._v(\" \"),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.inviteUserViaEmail}},[_vm._v(_vm._s(_vm.$t('invites.create')))])],1)]),_vm._v(\" \"),_c('el-table',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"invite-token-table\",attrs:{\"data\":_vm.tokens,\"default-sort\":{prop: 'used', order: 'ascending'}}},[(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.id'),\"min-width\":\"60\",\"prop\":\"id\",\"sortable\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.token'),\"min-width\":_vm.isDesktop ? 350 : 125,\"prop\":\"token\"}}),_vm._v(\" \"),(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.expiresAt'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"110\",\"prop\":\"expires_at\",\"sortable\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.maxUse'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"60\",\"prop\":\"max_use\",\"sortable\":\"\"}}),_vm._v(\" \"),(_vm.isDesktop)?_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.uses'),\"align\":\"center\",\"header-align\":\"center\",\"min-width\":\"60\",\"prop\":\"uses\"}}):_vm._e(),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.used'),\"min-width\":_vm.isDesktop ? 60 : 50,\"align\":\"center\",\"header-align\":\"center\",\"prop\":\"used\",\"sortable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-tag',{attrs:{\"type\":scope.row.used ? 'danger' : 'success',\"disable-transitions\":\"\"}},[_vm._v(_vm._s(scope.row.used ? _vm.$t('invites.used') : _vm.$t('invites.active')))])]}}])}),_vm._v(\" \"),_c('el-table-column',{attrs:{\"label\":_vm.$t('invites.actions'),\"min-width\":_vm.isDesktop ? 100 : 50,\"align\":\"center\",\"header-align\":\"center\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"text\",\"size\":\"small\"},nativeOn:{\"click\":function($event){return _vm.revokeInviteToken(scope.row.token)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('invites.revoke'))+\"\\n \")])]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js?cacheDirectory!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=f9cc6804&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"index.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../node_modules/css-loader/index.js??ref--11-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/lib/index.js??ref--11-2!../../../node_modules/sass-loader/lib/loader.js??ref--11-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&rel=stylesheet%2Fscss&lang=scss&\""],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7fe2.458f9da5.js b/priv/static/adminfe/static/js/chunk-7fe2.458f9da5.js index 4442e3e24..ae8abe56d 100644 --- a/priv/static/adminfe/static/js/chunk-7fe2.458f9da5.js +++ b/priv/static/adminfe/static/js/chunk-7fe2.458f9da5.js @@ -1 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-7fe2"],{B9Yq:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},Bhyg:function(e,t,i){!function(){var e=function(){return this}();e||"undefined"==typeof window||(e=window);var t=function(e,i,n){"string"==typeof e?(2==arguments.length&&(n=i),t.modules[e]||(t.payloads[e]=n,t.modules[e]=null)):t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())};t.modules={},t.payloads={};var i=function(e,t,i){if("string"==typeof t){var s=o(e,t);if(void 0!=s)return i&&i(),s}else if("[object Array]"===Object.prototype.toString.call(t)){for(var r=[],a=0,l=t.length;a1&&function(e,t,i){if(Array.prototype.indexOf)return e.indexOf(t,i);for(var n=i||0;n-1&&(i=RegExp(this.source,n.replace.call(function(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}(this),"g","")),n.replace.call(e.slice(r.index),i,function(){for(var e=1;er.index&&this.lastIndex--}return r},o||(RegExp.prototype.test=function(e){var t=n.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,i){function n(){}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var i=d.call(arguments,1),s=function(){if(this instanceof s){var n=t.apply(this,i.concat(d.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(d.call(arguments)))};return t.prototype&&(n.prototype=t.prototype,s.prototype=new n,n.prototype=null),s});var s,o,r,a,l,c=Function.prototype.call,h=Array.prototype,u=Object.prototype,d=h.slice,g=c.bind(u.toString),f=c.bind(u.hasOwnProperty);if((l=f(u,"__defineGetter__"))&&(s=c.bind(u.__defineGetter__),o=c.bind(u.__defineSetter__),r=c.bind(u.__lookupGetter__),a=c.bind(u.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,i=[];if(i.splice.apply(i,e(20)),i.splice.apply(i,e(26)),t=i.length,i.splice(5,0,"XXX"),i.length,t+1==i.length)return!0}()){var m=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?m.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(d.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var i=this.length;e>0?e>i&&(e=i):void 0==e?e=0:e<0&&(e=Math.max(i+e,0)),e+ta)for(u=c;u--;)this[l+u]=this[a+u];if(o&&e===h)this.length=h,this.push.apply(this,s);else for(this.length=h+o,u=0;u>>0;if("[object Function]"!=g(e))throw new TypeError;for(;++s>>0,s=Array(n),o=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var r=0;r>>0,o=[],r=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var a=0;a>>0,s=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var o=0;o>>0,s=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var o=0;o>>0;if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var s,o=0;if(arguments.length>=2)s=arguments[1];else for(;;){if(o in i){s=i[o++];break}if(++o>=n)throw new TypeError("reduce of empty array with no initial value")}for(;o>>0;if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var s,o=n-1;if(arguments.length>=2)s=arguments[1];else for(;;){if(o in i){s=i[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}do{o in this&&(s=e.call(void 0,s,i[o],o,t))}while(o--);return s}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=C&&"[object String]"==g(this)?this.split(""):L(this),i=t.length>>>0;if(!i)return-1;var n=0;for(arguments.length>1&&(n=k(arguments[1])),n=n>=0?n:Math.max(0,i+n);n>>0;if(!i)return-1;var n=i-1;for(arguments.length>1&&(n=Math.min(n,k(arguments[1]))),n=n>=0?n:i-Math.abs(n);n>=0;n--)if(n in t&&e===t[n])return n;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:u)}),!Object.getOwnPropertyDescriptor){Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+e);if(f(e,t)){var i;if(i={enumerable:!0,configurable:!0},l){var n=e.__proto__;e.__proto__=u;var s=r(e,t),o=a(e,t);if(e.__proto__=n,s||o)return s&&(i.get=s),o&&(i.set=o),i}return i.value=e[t],i}}}(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),Object.create)||(p=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var i;if(null===e)i=p();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var n=function(){};n.prototype=e,(i=new n).__proto__=e}return void 0!==t&&Object.defineProperties(i,t),i});function v(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(e){}}if(Object.defineProperty){var w=v({}),F="undefined"==typeof document||v(document.createElement("div"));if(!w||!F)var E=Object.defineProperty}if(!Object.defineProperty||E){Object.defineProperty=function(e,t,i){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.defineProperty called on non-object: "+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Property description must be an object: "+i);if(E)try{return E.call(Object,e,t,i)}catch(e){}if(f(i,"value"))if(l&&(r(e,t)||a(e,t))){var n=e.__proto__;e.__proto__=u,delete e[t],e[t]=i.value,e.__proto__=n}else e[t]=i.value;else{if(!l)throw new TypeError("getters & setters can not be defined on this javascript engine");f(i,"get")&&s(e,t,i.get),f(i,"set")&&o(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)f(t,i)&&Object.defineProperty(e,i,t[i]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(e){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";f(e,t);)t+="?";e[t]=!0;var i=f(e,t);return delete e[t],i}),!Object.keys){var b=!0,y=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],$=y.length;for(var x in{toString:null})b=!1;Object.keys=function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var t=[];for(var i in e)f(e,i)&&t.push(i);if(b)for(var n=0,s=$;n0||-1)*Math.floor(Math.abs(e))),e}var L=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,i){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,i){"use strict";t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||"http://www.w3.org/1999/xhtml",e):document.createElement(e)},t.hasCssClass=function(e,t){return-1!==(e.className+"").split(/\s+/g).indexOf(t)},t.addCssClass=function(e,i){t.hasCssClass(e,i)||(e.className+=" "+i)},t.removeCssClass=function(e,t){for(var i=e.className.split(/\s+/g);;){var n=i.indexOf(t);if(-1==n)break;i.splice(n,1)}e.className=i.join(" ")},t.toggleCssClass=function(e,t){for(var i=e.className.split(/\s+/g),n=!0;;){var s=i.indexOf(t);if(-1==s)break;n=!1,i.splice(s,1)}return n&&i.push(t),e.className=i.join(" "),n},t.setCssClass=function(e,i,n){n?t.addCssClass(e,i):t.removeCssClass(e,i)},t.hasCssString=function(e,t){var i,n=0;if((t=t||document).createStyleSheet&&(i=t.styleSheets)){for(;n=0?parseFloat((s.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((s.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((s.match(/rv:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(s.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(s.split(" Chrome/")[1])||void 0,t.isAIR=s.indexOf("AdobeAIR")>=0,t.isIPad=s.indexOf("iPad")>=0,t.isChromeOS=s.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(s)&&!window.MSStream,t.isIOS&&(t.isMac=!0)}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("./keys"),s=e("./useragent"),o=null,r=0;t.addListener=function(e,t,i){if(e.addEventListener)return e.addEventListener(t,i,!1);if(e.attachEvent){var n=function(){i.call(e,window.event)};i._wrapper=n,e.attachEvent("on"+t,n)}},t.removeListener=function(e,t,i){if(e.removeEventListener)return e.removeEventListener(t,i,!1);e.detachEvent&&e.detachEvent("on"+t,i._wrapper||i)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,i,n){function s(e){i&&i(e),n&&n(e),t.removeListener(document,"mousemove",i,!0),t.removeListener(document,"mouseup",s,!0),t.removeListener(document,"dragstart",s,!0)}return t.addListener(document,"mousemove",i,!0),t.addListener(document,"mouseup",s,!0),t.addListener(document,"dragstart",s,!0),s},t.addTouchMoveListener=function(e,i){var n,s;t.addListener(e,"touchstart",function(e){var t=e.touches[0];n=t.clientX,s=t.clientY}),t.addListener(e,"touchmove",function(e){var t=e.touches;if(!(t.length>1)){var o=t[0];e.wheelX=n-o.clientX,e.wheelY=s-o.clientY,n=o.clientX,s=o.clientY,i(e)}})},t.addMouseWheelListener=function(e,i){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/8,e.wheelY=-e.wheelDeltaY/8):(e.wheelX=0,e.wheelY=-e.wheelDelta/8),i(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=.35*e.deltaX||0,e.wheelY=.35*e.deltaY||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}i(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),i(e)})},t.addMultiMouseDownListener=function(e,i,n,o){var r,a,l,c=0,h={2:"dblclick",3:"tripleclick",4:"quadclick"};function u(e){if(0!==t.getButton(e)?c=0:e.detail>1?++c>4&&(c=1):c=1,s.isIE){var u=Math.abs(e.clientX-r)>5||Math.abs(e.clientY-a)>5;l&&!u||(c=1),l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),1==c&&(r=e.clientX,a=e.clientY)}if(e._clicks=c,n[o]("mousedown",e),c>4)c=0;else if(c>1)return n[o](h[c],e)}function d(e){c=2,l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),n[o]("mousedown",e),n[o](h[c],e)}Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",u),s.isOldIE&&t.addListener(e,"dblclick",d)})};var a=!s.isMac||!s.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};function l(e,t,i){var l=a(t);if(!s.isMac&&o){if(t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(l|=8),o.altGr){if(3==(3&l))return;o.altGr=0}if(18===i||17===i){var c="location"in t?t.location:t.keyLocation;if(17===i&&1===c)1==o[i]&&(r=t.timeStamp);else if(18===i&&3===l&&2===c){t.timeStamp-r<50&&(o.altGr=!0)}}}if((i in n.MODIFIER_KEYS&&(i=-1),8&l&&i>=91&&i<=93&&(i=-1),!l&&13===i)&&(3===(c="location"in t?t.location:t.keyLocation)&&(e(t,l,-i),t.defaultPrevented)))return;if(s.isChromeOS&&8&l){if(e(t,l,i),t.defaultPrevented)return;l&=-9}return!!(l||i in n.FUNCTION_KEYS||i in n.PRINTABLE_KEYS)&&e(t,l,i)}function c(){o=Object.create(null)}if(t.getModifierString=function(e){return n.KEY_MODS[a(e)]},t.addCommandKeyListener=function(e,i){var n=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var r=null;n(e,"keydown",function(e){r=e.keyCode}),n(e,"keypress",function(e){return l(i,e,r)})}else{var a=null;n(e,"keydown",function(e){o[e.keyCode]=(o[e.keyCode]||0)+1;var t=l(i,e,e.keyCode);return a=e.defaultPrevented,t}),n(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),n(e,"keyup",function(e){o[e.keyCode]=null}),o||(c(),n(window,"focus",c))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){t.nextTick=function(e,i){i=i||window;t.addListener(i,"message",function n(s){"zero-timeout-message-1"==s.data&&(t.stopPropagation(s),t.removeListener(i,"message",n),e())}),i.postMessage("zero-timeout-message-1","*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,i){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){for(var i="";t>0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i};var n=/^\s\s*/,s=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(n,"")},t.stringTrimRight=function(e){return e.replace(s,"")},t.copyObject=function(e){var t={};for(var i in e)t[i]=e[i];return t},t.copyArray=function(e){for(var t=[],i=0,n=e.length;iu.length?e=e.substr(9):e.substr(0,4)==u.substr(0,4)?e=e.substr(4,e.length-u.length+1):e.charAt(e.length-1)==u.charAt(0)&&(e=e.slice(0,-1)),e==u.charAt(0)||e.charAt(e.length-1)==u.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),d&&(d=!1),y&&(y=!1))},x=function(e){if(!m){var t=i.value;$(t),E()}},S=function(e,t,i){var n=e.clipboardData||window.clipboardData;if(n&&!c){var s=h||i?"Text":"text/plain";try{return t?!1!==n.setData(s,t):n.getData(s)}catch(e){if(!i)return S(e,t,!0)}}},B=function(e,o){var r=t.getCopyText();if(!r)return n.preventDefault(e);S(e,r)?(s.isIOS&&(g=o,i.value="\n aa"+r+"a a\n",i.setSelectionRange(4,4+r.length),d={value:r}),o?t.onCut():t.onCopy(),s.isIOS||n.preventDefault(e)):(d=!0,i.value=r,i.select(),setTimeout(function(){d=!1,E(),F(),o?t.onCut():t.onCopy()}))};n.addCommandKeyListener(i,t.onCommandKey.bind(t)),n.addListener(i,"select",function(e){!function(e){return 0===e.selectionStart&&e.selectionEnd===e.value.length}(i)?b&&F(t.selection.isEmpty()):(t.selectAll(),F())}),n.addListener(i,"input",x),n.addListener(i,"cut",function(e){B(e,!0)}),n.addListener(i,"copy",function(e){B(e,!1)}),n.addListener(i,"paste",function(e){var o=S(e);"string"==typeof o?(o&&t.onPaste(o,e),s.isIE&&setTimeout(F),n.preventDefault(e)):(i.value="",f=!0)});var D,k=function(){if(m&&t.onCompositionUpdate&&!t.$readOnly){var e=i.value.replace(/\x01/g,"");if(m.lastValue!==e&&(t.onCompositionUpdate(e),m.lastValue&&t.undo(),m.canUndo&&(m.lastValue=e),m.lastValue)){var n=t.selection.getRange();t.insert(m.lastValue),t.session.markUndoGroup(),m.range=t.selection.getRange(),t.selection.setRange(n),t.selection.clearSelection()}}},L=function(e){if(t.onCompositionEnd&&!t.$readOnly){var n=m;m=!1;var o=setTimeout(function(){o=null;var e=i.value.replace(/\x01/g,"");m||(e==n.lastValue?E():!n.lastValue&&e&&(E(),$(e)))});b=function(e){return o&&clearTimeout(o),(e=e.replace(/\x01/g,""))==n.lastValue?"":(n.lastValue&&o&&t.undo(),e)},t.onCompositionEnd(),t.removeListener("mousedown",L),"compositionend"==e.type&&n.range&&t.selection.setRange(n.range),(s.isChrome&&s.isChrome>=53||s.isWebKit&&s.isWebKit>=603)&&x()}},R=r.delayedCall(k,50);function T(){clearTimeout(D),D=setTimeout(function(){p&&(i.style.cssText=p,p=""),null==t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}n.addListener(i,"compositionstart",function(e){m||!t.onCompositionStart||t.$readOnly||((m={}).canUndo=t.session.$undoManager,t.onCompositionStart(),setTimeout(k,0),t.on("mousedown",L),m.canUndo&&!t.selection.isEmpty()&&(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup())}),s.isGecko?n.addListener(i,"text",function(){R.schedule()}):(n.addListener(i,"keyup",function(){R.schedule()}),n.addListener(i,"keydown",function(){R.schedule()})),n.addListener(i,"compositionend",L),this.getElement=function(){return i},this.setReadOnly=function(e){i.readOnly=e},this.onContextMenu=function(e){y=!0,F(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,r){p||(p=i.style.cssText),i.style.cssText=(r?"z-index:100000;":"")+"height:"+i.style.height+";"+(s.isIE?"opacity:0.1;":"");var a=t.container.getBoundingClientRect(),l=o.computedStyle(t.container),c=a.top+(parseInt(l.borderTopWidth)||0),h=a.left+(parseInt(a.borderLeftWidth)||0),u=a.bottom-c-i.clientHeight-2,d=function(e){i.style.left=e.clientX-h-2+"px",i.style.top=Math.min(e.clientY-c-2,u)+"px"};d(e),"mousedown"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(D),s.isWin&&n.capture(t.container,d,T))},this.onContextMenuClose=T;var M=function(e){t.textInput.onContextMenu(e),T()};if(n.addListener(i,"mouseup",M),n.addListener(i,"mousedown",function(e){e.preventDefault(),T()}),n.addListener(t.renderer.scroller,"contextmenu",M),n.addListener(i,"contextmenu",M),s.isIOS){var _=null,O=!1;e.addEventListener("keydown",function(e){_&&clearTimeout(_),O=!0}),e.addEventListener("keyup",function(e){_=setTimeout(function(){O=!1},100)});var I=function(e){if(document.activeElement===i&&!O){if(g)return setTimeout(function(){g=!1},100);var n=i.selectionStart,s=i.selectionEnd;if(i.setSelectionRange(4,5),n==s)switch(n){case 0:t.onCommandKey(null,0,a.up);break;case 1:t.onCommandKey(null,0,a.home);break;case 2:t.onCommandKey(null,l.option,a.left);break;case 4:t.onCommandKey(null,0,a.left);break;case 5:t.onCommandKey(null,0,a.right);break;case 7:t.onCommandKey(null,l.option,a.right);break;case 8:t.onCommandKey(null,0,a.end);break;case 9:t.onCommandKey(null,0,a.down)}else{switch(s){case 6:t.onCommandKey(null,l.shift,a.right);break;case 7:t.onCommandKey(null,l.shift|l.option,a.right);break;case 8:t.onCommandKey(null,l.shift,a.end);break;case 9:t.onCommandKey(null,l.shift,a.down)}switch(n){case 0:t.onCommandKey(null,l.shift,a.up);break;case 1:t.onCommandKey(null,l.shift,a.home);break;case 2:t.onCommandKey(null,l.shift|l.option,a.left);break;case 3:t.onCommandKey(null,l.shift,a.left)}}}};document.addEventListener("selectionchange",I),t.on("destroy",function(){document.removeEventListener("selectionchange",I)})}}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/keyboard/textinput_ios"],function(e,t,i){"use strict";var n=e("../lib/event"),s=e("../lib/useragent"),o=e("../lib/dom"),r=e("../lib/lang"),a=s.isChrome<18,l=s.isIE,c=e("./textinput_ios").TextInput;t.TextInput=function(e,t){if(s.isIOS)return c.call(this,e,t);var i=o.createElement("textarea");i.className="ace_text-input",i.setAttribute("wrap","off"),i.setAttribute("autocorrect","off"),i.setAttribute("autocapitalize","off"),i.setAttribute("spellcheck",!1),i.style.opacity="0",e.insertBefore(i,e.firstChild);var h="\u2028\u2028",u=!1,d=!1,g=!1,f="",m=!0;try{var p=document.activeElement===i}catch(e){}n.addListener(i,"blur",function(e){t.onBlur(e),p=!1}),n.addListener(i,"focus",function(e){p=!0,t.onFocus(e),v()}),this.focus=function(){if(f)return i.focus();var e=i.style.top;i.style.position="fixed",i.style.top="0px",i.focus(),setTimeout(function(){i.style.position="","0px"==i.style.top&&(i.style.top=e)},0)},this.blur=function(){i.blur()},this.isFocused=function(){return p};var A=r.delayedCall(function(){p&&v(m)}),C=r.delayedCall(function(){g||(i.value=h,p&&v())});function v(e){if(!g){if(g=!0,F)var t=0,n=e?0:i.value.length-1;else t=e?2:1,n=2;try{i.setSelectionRange(t,n)}catch(e){}g=!1}}function w(){g||(i.value=h,s.isWebKit&&C.schedule())}s.isWebKit||t.addEventListener("changeSelection",function(){t.selection.isEmpty()!=m&&(m=!m,A.schedule())}),w(),p&&t.onFocus();var F=null;this.setInputHandler=function(e){F=e},this.getInputHandler=function(){return F};var E=!1,b=function(e){F&&(e=F(e),F=null),d?(v(),e&&t.onPaste(e),d=!1):e==h.charAt(0)?E?t.execCommand("del",{source:"ace"}):t.execCommand("backspace",{source:"ace"}):(e.substring(0,2)==h?e=e.substr(2):e.charAt(0)==h.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==h.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==h.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),E&&(E=!1)},y=function(e){if(!g){var t=i.value;b(t),w()}},$=function(e,t,i){var n=e.clipboardData||window.clipboardData;if(n&&!a){var s=l||i?"Text":"text/plain";try{return t?!1!==n.setData(s,t):n.getData(s)}catch(e){if(!i)return $(e,t,!0)}}},x=function(e,s){var o=t.getCopyText();if(!o)return n.preventDefault(e);$(e,o)?(s?t.onCut():t.onCopy(),n.preventDefault(e)):(u=!0,i.value=o,i.select(),setTimeout(function(){u=!1,w(),v(),s?t.onCut():t.onCopy()}))},S=function(e){x(e,!0)},B=function(e){x(e,!1)},D=function(e){var o=$(e);"string"==typeof o?(o&&t.onPaste(o,e),s.isIE&&setTimeout(v),n.preventDefault(e)):(i.value="",d=!0)};n.addCommandKeyListener(i,t.onCommandKey.bind(t)),n.addListener(i,"select",function(e){u?u=!1:function(e){return 0===e.selectionStart&&e.selectionEnd===e.value.length}(i)?(t.selectAll(),v()):F&&v(t.selection.isEmpty())}),n.addListener(i,"input",y),n.addListener(i,"cut",S),n.addListener(i,"copy",B),n.addListener(i,"paste",D),"oncut"in i&&"oncopy"in i&&"onpaste"in i||n.addListener(e,"keydown",function(e){if((!s.isMac||e.metaKey)&&e.ctrlKey)switch(e.keyCode){case 67:B(e);break;case 86:D(e);break;case 88:S(e)}});var k,L=function(){if(g&&t.onCompositionUpdate&&!t.$readOnly){var e=i.value.replace(/\u2028/g,"");if(g.lastValue!==e&&(t.onCompositionUpdate(e),g.lastValue&&t.undo(),g.canUndo&&(g.lastValue=e),g.lastValue)){var n=t.selection.getRange();t.insert(g.lastValue),t.session.markUndoGroup(),g.range=t.selection.getRange(),t.selection.setRange(n),t.selection.clearSelection()}}},R=function(e){if(t.onCompositionEnd&&!t.$readOnly){var n=g;g=!1;var o=setTimeout(function(){o=null;var e=i.value.replace(/\u2028/g,"");g||(e==n.lastValue?w():!n.lastValue&&e&&(w(),b(e)))});F=function(e){return o&&clearTimeout(o),(e=e.replace(/\u2028/g,""))==n.lastValue?"":(n.lastValue&&o&&t.undo(),e)},t.onCompositionEnd(),t.removeListener("mousedown",R),"compositionend"==e.type&&n.range&&t.selection.setRange(n.range),(s.isChrome&&s.isChrome>=53||s.isWebKit&&s.isWebKit>=603)&&y()}},T=r.delayedCall(L,50);function M(){clearTimeout(k),k=setTimeout(function(){f&&(i.style.cssText=f,f=""),null==t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}n.addListener(i,"compositionstart",function(e){g||!t.onCompositionStart||t.$readOnly||((g={}).canUndo=t.session.$undoManager,t.onCompositionStart(),setTimeout(L,0),t.on("mousedown",R),g.canUndo&&!t.selection.isEmpty()&&(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup())}),s.isGecko?n.addListener(i,"text",function(){T.schedule()}):(n.addListener(i,"keyup",function(){T.schedule()}),n.addListener(i,"keydown",function(){T.schedule()})),n.addListener(i,"compositionend",R),this.getElement=function(){return i},this.setReadOnly=function(e){i.readOnly=e},this.onContextMenu=function(e){E=!0,v(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,r){f||(f=i.style.cssText),i.style.cssText=(r?"z-index:100000;":"")+"height:"+i.style.height+";"+(s.isIE?"opacity:0.1;":"");var a=t.container.getBoundingClientRect(),l=o.computedStyle(t.container),c=a.top+(parseInt(l.borderTopWidth)||0),h=a.left+(parseInt(a.borderLeftWidth)||0),u=a.bottom-c-i.clientHeight-2,d=function(e){i.style.left=e.clientX-h-2+"px",i.style.top=Math.min(e.clientY-c-2,u)+"px"};d(e),"mousedown"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(k),s.isWin&&n.capture(t.container,d,M))},this.onContextMenuClose=M;var _=function(e){t.textInput.onContextMenu(e),M()};n.addListener(i,"mouseup",_),n.addListener(i,"mousedown",function(e){e.preventDefault(),M()}),n.addListener(t.renderer.scroller,"contextmenu",_),n.addListener(i,"contextmenu",_)}}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";e("../lib/dom"),e("../lib/event");var n=e("../lib/useragent");function s(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e));["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function o(e,t){if(e.start.row==e.end.row)var i=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)i=2*t.row-e.start.row-e.end.row;else var i=t.column-4;return i<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}(function(){this.onMouseDown=function(e){var t=e.inSelection(),i=e.getDocumentPosition();this.mousedownEvent=e;var s=this.editor,o=e.getButton();if(0!==o){var r=s.getSelectionRange().isEmpty();return s.$blockScrolling++,(r||1==o)&&s.selection.moveToPosition(i),s.$blockScrolling--,void(2==o&&(s.textInput.onContextMenu(e.domEvent),n.isMozilla||e.preventDefault()))}return this.mousedownEvent.time=Date.now(),!t||s.isFocused()||(s.focus(),!this.$focusTimout||this.$clickSelection||s.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(i,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var i=this.editor;i.$blockScrolling++,this.mousedownEvent.getShiftKey()?i.selection.selectToPosition(e):t||i.selection.moveToPosition(e),t||this.select(),i.renderer.scroller.setCapture&&i.renderer.scroller.setCapture(),i.setStyle("ace_selecting"),this.setState("select"),i.$blockScrolling--},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var n=this.$clickSelection.comparePoint(i);if(-1==n)e=this.$clickSelection.end;else if(1==n)e=this.$clickSelection.start;else{var s=o(this.$clickSelection,i);i=s.cursor,e=s.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),s=i.selection[e](n.row,n.column);if(i.$blockScrolling++,this.$clickSelection){var r=this.$clickSelection.comparePoint(s.start),a=this.$clickSelection.comparePoint(s.end);if(-1==r&&a<=0)t=this.$clickSelection.end,s.end.row==n.row&&s.end.column==n.column||(n=s.start);else if(1==a&&r>=0)t=this.$clickSelection.start,s.start.row==n.row&&s.start.column==n.column||(n=s.end);else if(-1==r&&1==a)n=s.end,t=s.start;else{var l=o(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.$blockScrolling--,i.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=function(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>0||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),i=this.editor,n=i.session.getBracketRange(t);n?(n.isEmpty()&&(n.start.column--,n.end.column++),this.setState("select")):(n=i.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=n,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),i=this.editor;this.setState("selectByLines");var n=i.getSelectionRange();n.isMultiLine()&&n.contains(t.row,t.column)?(this.$clickSelection=i.selection.getLineRange(n.start.row),this.$clickSelection.end=i.selection.getLineRange(n.end.row).end):this.$clickSelection=i.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var i=this.$lastScroll,n=e.domEvent.timeStamp,s=n-i.t,o=e.wheelX/s,r=e.wheelY/s;s<250&&(o=(o+i.vx)/2,r=(r+i.vy)/2);var a=Math.abs(o/r),l=!1;if(a>=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(l=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(l=!0),l)i.allowed=n;else if(n-i.allowed<250){Math.abs(o)<=1.1*Math.abs(i.vx)&&Math.abs(r)<=1.1*Math.abs(i.vy)?(l=!0,i.allowed=n):i.allowed=0}return i.t=n,i.vx=o,i.vy=r,l?(t.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){this.editor._emit("mousewheel",e)}}).call(s.prototype),t.DefaultHandlers=s}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,i){"use strict";e("./lib/oop");var n=e("./lib/dom");function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}(function(){this.$init=function(){return this.$element=n.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){n.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){n.addCssClass(this.getElement(),e)},this.show=function(e,t,i){null!=e&&this.setText(e),null!=t&&null!=i&&this.setPosition(t,i),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth},this.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)}}).call(s.prototype),t.Tooltip=s}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,i){"use strict";var n=e("../lib/dom"),s=e("../lib/oop"),o=e("../lib/event"),r=e("../tooltip").Tooltip;function a(e){r.call(this,e)}s.inherits(a,r),function(){this.setPosition=function(e,t){var i=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,s=this.getWidth(),o=this.getHeight();t+=15,(e+=15)+s>i&&(e-=e+s-i),t+o>n&&(t-=20+o),r.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=function(e){var t,i,s,r=e.editor,l=r.renderer.$gutterLayer,c=new a(r.container);function h(){t&&(t=clearTimeout(t)),s&&(c.hide(),s=null,r._signal("hideGutterTooltip",c),r.removeEventListener("mousewheel",h))}function u(e){c.setPosition(e.x,e.y)}e.editor.setDefaultHandler("guttermousedown",function(t){if(r.isFocused()&&0==t.getButton()&&"foldWidgets"!=l.getRegion(t)){var i=t.getDocumentPosition().row,n=r.session.selection;if(t.getShiftKey())n.selectTo(i,0);else{if(2==t.domEvent.detail)return r.selectAll(),t.preventDefault();e.$clickSelection=r.selection.getLineRange(i)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}),e.editor.setDefaultHandler("guttermousemove",function(o){var a=o.domEvent.target||o.domEvent.srcElement;if(n.hasCssClass(a,"ace_fold-widget"))return h();s&&e.$tooltipFollowsMouse&&u(o),i=o,t||(t=setTimeout(function(){t=null,i&&!e.isMousePressed?function(){var t=i.getDocumentPosition().row,n=l.$annotations[t];if(!n)return h();if(t==r.session.getLength()){var o=r.renderer.pixelToScreenCoordinates(0,i.y).row,a=i.$pos;if(o>r.session.documentToScreenRow(a.row,a.column))return h()}if(s!=n)if(s=n.text.join("
"),c.setHtml(s),c.show(),r._signal("showGutterTooltip",c),r.on("mousewheel",h),e.$tooltipFollowsMouse)u(i);else{var d=i.domEvent.target.getBoundingClientRect(),g=c.getElement().style;g.left=d.right+"px",g.top=d.bottom+"px"}}():h()},50))}),o.addListener(r.renderer.$gutter,"mouseout",function(e){i=null,s&&!t&&(t=setTimeout(function(){t=null,h()},50))}),r.on("changeSession",h)}}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/event"),s=e("../lib/useragent"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){n.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){n.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor.getSelectionRange();if(e.isEmpty())this.$inSelection=!1;else{var t=this.getDocumentPosition();this.$inSelection=e.contains(t.row,t.column)}return this.$inSelection},this.getButton=function(){return n.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=s.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/dom"),s=e("../lib/event"),o=e("../lib/useragent"),r=200,a=200,l=5;function c(e){var t=e.editor,i=n.createElement("img");i.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",o.isOpera&&(i.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c,u,d,g,f,m,p,A,C,v,w,F=t.container,E=0;function b(){var e=m;(function(e,i){var n=Date.now(),s=!i||e.row!=i.row,o=!i||e.column!=i.column;!v||s||o?(t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,v=n,w={x:u,y:d}):h(w.x,w.y,u,d)>l?v=null:n-v>=a&&(t.renderer.scrollCursorIntoView(),v=null)})(m=t.renderer.screenToTextCoordinates(u,d),e),function(e,i){var n=Date.now(),s=t.renderer.layerConfig.lineHeight,o=t.renderer.layerConfig.characterWidth,a=t.renderer.scroller.getBoundingClientRect(),l={x:{left:u-a.left,right:a.right-u},y:{top:d-a.top,bottom:a.bottom-d}},c=Math.min(l.x.left,l.x.right),h=Math.min(l.y.top,l.y.bottom),g={row:e.row,column:e.column};c/o<=2&&(g.column+=l.x.left=r&&t.renderer.scrollCursorIntoView(g):C=n:C=null}(m,e)}function y(){f=t.selection.toOrientedRange(),c=t.session.addMarker(f,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(g),b(),g=setInterval(b,20),E=0,s.addListener(document,"mousemove",S)}function $(){clearInterval(g),t.session.removeMarker(c),c=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(f),t.$blockScrolling-=1,t.isFocused()&&!A&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),f=null,m=null,E=0,C=null,v=null,s.removeListener(document,"mousemove",S)}this.onDragStart=function(e){if(this.cancelDrag||!F.draggable){var n=this;return setTimeout(function(){n.startSelect(),n.captureMouse(e)},0),e.preventDefault()}f=t.getSelectionRange();var s=e.dataTransfer;s.effectAllowed=t.getReadOnly()?"copy":"copyMove",o.isOpera&&(t.container.appendChild(i),i.scrollTop=0),s.setDragImage&&s.setDragImage(i,0,0),o.isOpera&&t.container.removeChild(i),s.clearData(),s.setData("Text",t.session.getTextRange()),A=!0,this.setState("drag")},this.onDragEnd=function(e){if(F.draggable=!1,A=!1,this.setState(null),!t.getReadOnly()){var i=e.dataTransfer.dropEffect;p||"move"!=i||t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(!t.getReadOnly()&&B(e.dataTransfer))return u=e.clientX,d=e.clientY,c||y(),E++,e.dataTransfer.dropEffect=p=D(e),s.preventDefault(e)},this.onDragOver=function(e){if(!t.getReadOnly()&&B(e.dataTransfer))return u=e.clientX,d=e.clientY,c||(y(),E++),null!==x&&(x=null),e.dataTransfer.dropEffect=p=D(e),s.preventDefault(e)},this.onDragLeave=function(e){if(--E<=0&&c)return $(),p=null,s.preventDefault(e)},this.onDrop=function(e){if(m){var i=e.dataTransfer;if(A)switch(p){case"move":f=f.contains(m.row,m.column)?{start:m,end:m}:t.moveText(f,m);break;case"copy":f=t.moveText(f,m,!0)}else{var n=i.getData("Text");f={start:m,end:t.session.insert(m,n)},t.focus(),p=null}return $(),s.preventDefault(e)}},s.addListener(F,"dragstart",this.onDragStart.bind(e)),s.addListener(F,"dragend",this.onDragEnd.bind(e)),s.addListener(F,"dragenter",this.onDragEnter.bind(e)),s.addListener(F,"dragover",this.onDragOver.bind(e)),s.addListener(F,"dragleave",this.onDragLeave.bind(e)),s.addListener(F,"drop",this.onDrop.bind(e));var x=null;function S(){null==x&&(x=setTimeout(function(){null!=x&&c&&$()},20))}function B(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function D(e){var t=["copy","copymove","all","uninitialized"],i=o.isMac?e.altKey:e.ctrlKey,n="uninitialized";try{n=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var s="none";return i&&t.indexOf(n)>=0?s="copy":["move","copymove","linkmove","all","uninitialized"].indexOf(n)>=0?s="move":t.indexOf(n)>=0&&(s="copy"),s}}function h(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor;e.container.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var t=o.isWin?"default":"move";e.renderer.setCursorStyle(t),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;o.isIE&&"dragReady"==this.state&&(h(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>3&&t.dragDrop());"dragWait"===this.state&&(h(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition())))},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,i=e.inSelection(),n=e.getButton();if(1===(e.domEvent.detail||1)&&0===n&&i){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var s=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in s&&(s.unselectable="on"),t.getDragDelay()){if(o.isWebKit)this.cancelDrag=!0,t.container.draggable=!0;this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(c.prototype),t.DragdropHandler=c}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n=e("./dom");t.get=function(e,t){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4===i.readyState&&t(i.responseText)},i.send(null)},t.loadScript=function(e,t){var i=n.getDocumentHead(),s=document.createElement("script");s.src=e,i.appendChild(s),s.onload=s.onreadystatechange=function(e,i){!i&&s.readyState&&"loaded"!=s.readyState&&"complete"!=s.readyState||(s=s.onload=s.onreadystatechange=null,i||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,i){"use strict";var n={},s=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};n._emit=n._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],n=this._defaultHandlers[e];if(i.length||n){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=s),t.preventDefault||(t.preventDefault=o),i=i.slice();for(var r=0;r1&&(s=i[i.length-2]);var r=l[t+"Path"];return null==r?r=l.basePath:"/"==n&&(t=n=""),r&&"/"!=r.slice(-1)&&(r+="/"),r+t+n+s+this.get("suffix")},t.setModuleUrl=function(e,t){return l.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(i,n){var s,r;Array.isArray(i)&&(r=i[0],i=i[1]);try{s=e(i)}catch(e){}if(s&&!t.$loading[i])return n&&n(s);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(n),!(t.$loading[i].length>1)){var a=function(){e([i],function(e){t._emit("load.module",{name:i,module:e});var n=t.$loading[i];t.$loading[i]=null,n.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();o.loadScript(t.moduleUrl(i,r),a)}},c(!0),t.init=c}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,i){"use strict";var n=e("../lib/event"),s=e("../lib/useragent"),o=e("./default_handlers").DefaultHandlers,r=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new o(this),new r(this),new l(this);var i=function(t){(!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement()))&&window.focus(),e.focus()},a=e.renderer.getMouseEventTarget();n.addListener(a,"click",this.onMouseEvent.bind(this,"click")),n.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),n.addMultiMouseDownListener([a,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),n.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),n.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;n.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),n.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),n.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),n.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),n.addListener(a,"mousedown",i),n.addListener(c,"mousedown",i),s.isIE&&e.renderer.scrollBarV&&(n.addListener(e.renderer.scrollBarV.element,"mousedown",i),n.addListener(e.renderer.scrollBarH.element,"mousedown",i)),e.on("mousemove",function(i){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var n=e.renderer.screenToTextCoordinates(i.x,i.y),s=e.session.selection.getRange(),o=e.renderer;!s.isEmpty()&&s.insideStart(n.row,n.column)?o.setCursorStyle("default"):o.setCursorStyle("")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var i=new a(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.onTouchMove=function(e,t){var i=new a(t,this.editor);i.speed=1,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var i=this.editor.renderer;i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=null);var o=this,r=function(e){if(e){if(s.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new a(e,o.editor),o.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",null==i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=!0,i.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e)},c=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(s.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});o.$onCaptureMouseMove=r,o.releaseMouse=n.capture(this.editor.container,r,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&n.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:s.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,i){"use strict";t.FoldHandler=function(e){e.on("click",function(t){var i=t.getDocumentPosition(),n=e.session,s=n.getFoldAt(i.row,i.column,1);s&&(t.getAccelKey()?n.removeFold(s):n.expandFold(s),t.stop())}),e.on("gutterclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var i=t.getDocumentPosition().row,n=e.session;n.foldWidgets&&n.foldWidgets[i]&&e.session.onFoldWidgetClick(i,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var i=t.getDocumentPosition().row,n=e.session,s=n.getParentFoldRangeData(i,!0),o=s.range||s.firstRange;if(o){i=o.start.row;var r=n.getFoldAt(i,n.getLine(i).length,1);r?n.removeFold(r):(n.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,i){"use strict";var n=e("../lib/keys"),s=e("../lib/event"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var i=this.$handlers.indexOf(e);-1!=i&&this.$handlers.splice(i,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==i&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1!=t&&(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,i,n){for(var o,r=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&!((o=this.$handlers[l].handleKeyboard(this.$data,e,t,i,n))&&o.command&&((r="null"==o.command||a.exec(o.command,this.$editor,o.args,n))&&n&&-1!=e&&1!=o.passEvent&&1!=o.command.passEvent&&s.stopEvent(n),r)););return r||-1!=e||(o={command:"insertstring"},r=a.exec("insertstring",this.$editor,t)),r&&this.$editor._signal&&this.$editor._signal("keyboardActivity",o),r},this.onCommandKey=function(e,t,i){var s=n.keyCodeToString(i);this.$callKeyboardHandlers(t,s,i,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define("ace/lib/bidiutil",["require","exports","module"],function(e,t,i){"use strict";var n=0,s=0,o=!1,r=!1,a=!1,l=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],c=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],h=1,u=0,d=1,g=2,f=3,m=4,p=5,A=6,C=7,v=8,w=9,F=10,E=11,b=12,y=13,$=14,x=15,S=16,B=17,D=18,k=[D,D,D,D,D,D,D,D,D,A,p,A,v,p,D,D,D,D,D,D,D,D,D,D,D,D,D,D,p,p,p,A,v,m,m,E,E,E,m,m,m,m,m,F,w,F,w,w,g,g,g,g,g,g,g,g,g,g,w,m,m,m,m,m,m,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,m,m,m,m,m,m,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,m,m,m,m,D,D,D,D,D,D,p,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,w,m,E,E,E,E,m,m,m,m,u,m,m,D,m,m,E,E,g,g,m,u,m,m,m,g,u,m,m,m,m,m],L=[v,v,v,v,v,v,v,v,v,v,v,D,D,D,u,d,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,v,p,y,$,x,S,B,w,E,E,E,E,E,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,w,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,v];function R(e,t,i){if(!(s=e){for(o=d+1;o=e;)o++;for(a=d,l=o-1;a=t.length||(l=i[s-1])!=g&&l!=f||(c=t[s+1])!=g&&c!=f?m:(o&&(c=f),c==l?c:m);case F:return(l=s>0?i[s-1]:p)==g&&s+10&&i[s-1]==g)return g;if(o)return m;for(k=s+1,h=t.length;k=1425&&R<=2303||64286==R;if(l=t[k],T&&(l==d||l==C))return d}return s<1||(l=t[s-1])==p?m:i[s-1];case p:return o=!1,r=!0,n;case A:return a=!0,m;case y:case $:case S:case B:case x:o=!1;case D:return m}}function M(e){var t=e.charCodeAt(0),i=t>>8;return 0==i?t>191?u:k[t]:5==i?/[\u0591-\u05f4]/.test(e)?d:u:6==i?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?b:/[\u0660-\u0669\u066b-\u066c]/.test(e)?f:1642==t?E:/[\u06f0-\u06f9]/.test(e)?g:C:32==i&&t<=8287?L[255&t]:254==i&&t>=65136?C:m}t.L=u,t.R=d,t.EN=g,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.DOT="·",t.doBidiReorder=function(e,i,u){if(e.length<2)return{};var g=e.split(""),w=new Array(g.length),F=new Array(g.length),E=[];n=u?h:0,function(e,t,i,h){var u=n?c:l,d=null,g=null,f=null,m=0,C=null,w=-1,F=null,E=null,b=[];if(!h)for(F=0,h=[];F0)if(16==C){for(F=w;F-1){for(F=w;F=0&&h[y]==v;y--)t[y]=n}}(g,E,g.length,i);for(var b=0;bC&&i[b]0&&"ل"===g[b-1]&&/\u0622|\u0623|\u0625|\u0627/.test(g[b])&&(E[b-1]=E[b]=t.R_H,b++);g[g.length-1]===t.DOT&&(E[g.length-1]=t.B);for(b=0;b=0&&(e=this.session.$docRowCache[i])}return e},this.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length)for(var i,n=this.session.$getRowCacheIndex(t,this.currentRow);this.currentRow-e>0&&(i=this.session.$getRowCacheIndex(t,this.currentRow-e-1))===n;)n=i,e++;return e},this.updateRowLine=function(e,t){if(void 0===e&&(e=this.getDocumentRow()),this.wrapIndent=0,this.isLastRow=e===this.session.getLength()-1,this.line=this.session.getLine(e),this.session.$useWrapMode){var i=this.session.$wrapData[e];i&&(void 0===t&&(t=this.getSplitIndex()),t>0&&i.length?(this.wrapIndent=i.indent,this.line=t0?e-1:0,this.bidiMap),i=this.bidiMap.bidiLevels,s=0;0===e&&i[t]%2!=0&&t++;for(var o=0;o=c&&si+r/2;){if(i+=r,s===o.length-1){r=0;break}r=this.charWidths[o[++s]]}return s>0&&o[s-1]%2!=0&&o[s]%2==0?(e0&&o[s-1]%2==0&&o[s]%2!=0?t=1+(e>i?this.bidiMap.logicalFromVisual[s]:this.bidiMap.logicalFromVisual[s-1]):this.isRtlDir&&s===o.length-1&&0===r&&o[s-1]%2==0||!this.isRtlDir&&0===s&&o[s]%2!=0?t=1+this.bidiMap.logicalFromVisual[s]:(s>0&&o[s-1]%2!=0&&0!==r&&s--,t=this.bidiMap.logicalFromVisual[s]),t+this.wrapIndent}}).call(a.prototype),t.BidiHandler=a}),ace.define("ace/range",["require","exports","module"],function(e,t,i){"use strict";var n=function(e,t,i,n){this.start={row:e,column:t},this.end={row:i,column:n}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,i=e.end,n=e.start;return 1==(t=this.compare(i.row,i.column))?1==(t=this.compare(n.row,n.column))?2:0==t?1:0:-1==t?-2:-1==(t=this.compare(n.row,n.column))?-1:1==t?42:0},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)&&(!this.isEnd(e,t)&&!this.isStart(e,t))},this.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},this.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var i={row:t+1,column:0};else if(this.end.rowt)var s={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?r.fromPoints(t,t):this.isBackwards()?r.fromPoints(t,e):r.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(void 0===t){var i=e||this.lead;e=i.row,t=i.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var i,n="number"==typeof e?e:this.lead.row,s=this.session.getFoldLine(n);return s?(n=s.start.row,i=s.end.row):i=n,!0===t?new r(n,0,i,this.session.getLine(i).length):new r(n,0,i+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(e,t,i){var n=e.column,s=e.column+t;return i<0&&(n=e.column-t,s=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(n,s).split(" ").length-1==t},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var i=this.session.getTabSize();this.wouldMoveIntoSoftTab(t,i,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=n)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s)this.moveCursorTo(s.end.row,s.end.column);else{if(this.session.nonTokenRe.exec(n)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,n=i.substring(t)),t>=i.length)return this.moveCursorTo(e,i.length),this.moveCursorRight(),void(e0&&this.moveCursorWordLeft());this.session.tokenRe.exec(o)&&(i-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,i)}},this.$shortWordEndIndex=function(e){var t,i=0,n=/\s/,s=this.session.tokenRe;if(s.lastIndex=0,this.session.tokenRe.exec(e))i=this.session.tokenRe.lastIndex;else{for(;(t=e[i])&&n.test(t);)i++;if(i<1)for(s.lastIndex=0;(t=e[i])&&!s.test(t);)if(s.lastIndex=0,i++,n.test(t)){if(i>2){i--;break}for(;(t=e[i])&&n.test(t);)i++;if(i>2)break}}return s.lastIndex=0,i},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t),s=this.session.getFoldAt(e,t,1);if(s)return this.moveCursorTo(s.end.row,s.end.column);if(t==i.length){var o=this.doc.getLength();do{e++,n=this.doc.getLine(e)}while(e0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}var o=s.stringReverse(n),r=this.$shortWordEndIndex(o);return this.moveCursorTo(t,i-r)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var i,n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(0!==e&&(this.session.$bidiHandler.isBidiRow(n.row,this.lead.row)?(i=this.session.$bidiHandler.getPosLeft(n.column),n.column=Math.round(i/this.session.$bidiHandler.charWidths[0])):i=n.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var s=this.session.screenToDocumentPosition(n.row+e,n.column,i);0!==e&&0===t&&s.row===this.lead.row&&s.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[s.row]&&(s.row>0||e>0)&&s.row++,this.moveCursorTo(s.row,s.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,i){var n=this.session.getFoldAt(e,t,1);n&&(e=n.start.row,t=n.start.column),this.$keepDesiredColumnOnChange=!0;var s=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(s.charAt(t))&&s.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,i){var n=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(n.row,n.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var i=this.getCursor();return r.fromPoints(t,i)}catch(e){return r.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else(e=this.getRange()).isBackwards=this.isBackwards();return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var i=r.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,i){"use strict";var n=e("./config"),s=2e3,o=function(e){for(var t in this.states=e,this.regExps={},this.matchMappings={},this.states){for(var i=this.states[t],n=[],s=0,o=this.matchMappings[t]={defaultToken:"text"},r="g",a=[],l=0;l1?this.$applyToken:c.token),u>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+s+1)}):(u=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),o[s]=l,s+=u,n.push(h),c.onMatch||(c.onMatch=null)}}n.length||(o[0]=0,n.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,r)},this),this.regExps[t]=new RegExp("("+n.join(")|(")+")|($)",r)}};(function(){this.$setMaxTokenCount=function(e){s=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),i=this.token.apply(this,t);if("string"==typeof i)return[{type:i,value:e}];for(var n=[],s=0,o=i.length;sh){var A=e.substring(h,p-m.length);d.type==g?d.value+=A:(d.type&&c.push(d),d={type:g,value:A})}for(var C=0;Cs){for(u>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&i[0]!==n&&i.unshift("#tmp",n),{tokens:c,state:i.length?i:n}},this.reportError=n.reportError}).call(o.prototype),t.Tokenizer=o}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,i){"use strict";var n=e("../lib/lang"),s=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var i in e){for(var n=e[i],s=0;s=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,i=e[t].start;if(void 0!==i)return i;for(i=0;t>0;)i+=e[t-=1].value.length;return i},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new n(this.$row,t,this.$row,t+e.value.length)}}).call(s.prototype),t.TokenIterator=s}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,i){"use strict";var n,s=e("../../lib/oop"),o=e("../behaviour").Behaviour,r=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},u={'"':'"',"'":"'"},d=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t])return n=h[t];n=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},g=function(e,t,i,n){var s=e.end.row-e.start.row;return{text:i+t+n,selection:[0,e.start.column+1,s,e.end.column+(s?0:1)]}},f=function(e){this.add("braces","insertion",function(t,i,s,o,r){var l=s.getCursorPosition(),c=o.doc.getLine(l.row);if("{"==r){d(s);var h=s.getSelectionRange(),u=o.doc.getTextRange(h);if(""!==u&&"{"!==u&&s.getWrapBehavioursEnabled())return g(h,u,"{","}");if(f.isSaneInsertion(s,o))return/[\]\}\)]/.test(c[l.column])||s.inMultiSelectMode||e&&e.braces?(f.recordAutoInsert(s,o,"}"),{text:"{}",selection:[1,1]}):(f.recordMaybeInsert(s,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){if(d(s),"}"==c.substring(l.column,l.column+1))if(null!==o.$findOpeningBracket("}",{column:l.column+1,row:l.row})&&f.isAutoInsertedClosing(l,c,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\n"==r||"\r\n"==r){d(s);var m="";if(f.isMaybeInsertedClosing(l,c)&&(m=a.stringRepeat("}",n.maybeInsertedBrackets),f.clearMaybeInsertedClosing()),"}"===c.substring(l.column,l.column+1)){var p=o.findMatchingBracket({row:l.row,column:l.column+1},"}");if(!p)return null;var A=this.$getIndent(o.getLine(p.row))}else{if(!m)return void f.clearMaybeInsertedClosing();A=this.$getIndent(c)}var C=A+o.getTabString();return{text:"\n"+C+"\n"+A+m,selection:[1,C.length,1,C.length]}}f.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,i,s,o){var r=s.doc.getTextRange(o);if(!o.isMultiLine()&&"{"==r){if(d(i),"}"==s.doc.getLine(o.start.row).substring(o.end.column,o.end.column+1))return o.end.column++,o;n.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,s){if("("==s){d(i);var o=i.getSelectionRange(),r=n.doc.getTextRange(o);if(""!==r&&i.getWrapBehavioursEnabled())return g(o,r,"(",")");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==s){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row);if(")"==l.substring(a.column,a.column+1))if(null!==n.$findOpeningBracket(")",{column:a.column+1,row:a.row})&&f.isAutoInsertedClosing(a,l,s))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("parens","deletion",function(e,t,i,n,s){var o=n.doc.getTextRange(s);if(!s.isMultiLine()&&"("==o&&(d(i),")"==n.doc.getLine(s.start.row).substring(s.start.column+1,s.start.column+2)))return s.end.column++,s}),this.add("brackets","insertion",function(e,t,i,n,s){if("["==s){d(i);var o=i.getSelectionRange(),r=n.doc.getTextRange(o);if(""!==r&&i.getWrapBehavioursEnabled())return g(o,r,"[","]");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==s){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row);if("]"==l.substring(a.column,a.column+1))if(null!==n.$findOpeningBracket("]",{column:a.column+1,row:a.row})&&f.isAutoInsertedClosing(a,l,s))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("brackets","deletion",function(e,t,i,n,s){var o=n.doc.getTextRange(s);if(!s.isMultiLine()&&"["==o&&(d(i),"]"==n.doc.getLine(s.start.row).substring(s.start.column+1,s.start.column+2)))return s.end.column++,s}),this.add("string_dquotes","insertion",function(e,t,i,n,s){var o=n.$mode.$quotes||u;if(1==s.length&&o[s]){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(s))return;d(i);var r=s,a=i.getSelectionRange(),l=n.doc.getTextRange(a);if(!(""===l||1==l.length&&o[l])&&i.getWrapBehavioursEnabled())return g(a,l,r,r);if(!l){var c=i.getCursorPosition(),h=n.doc.getLine(c.row),f=h.substring(c.column-1,c.column),m=h.substring(c.column,c.column+1),p=n.getTokenAt(c.row,c.column),A=n.getTokenAt(c.row,c.column+1);if("\\"==f&&p&&/escape/.test(p.type))return null;var C,v=p&&/string|escape/.test(p.type),w=!A||/string|escape/.test(A.type);if(m==r)(C=v!==w)&&/string\.end/.test(A.type)&&(C=!1);else{if(v&&!w)return null;if(v&&w)return null;var F=n.$mode.tokenRe;F.lastIndex=0;var E=F.test(f);F.lastIndex=0;var b=F.test(f);if(E||b)return null;if(m&&!/[\s;,.})\]\\]/.test(m))return null;C=!0}return{text:C?r+r:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,i,n,s){var o=n.doc.getTextRange(s);if(!s.isMultiLine()&&('"'==o||"'"==o)&&(d(i),n.doc.getLine(s.start.row).substring(s.start.column+1,s.start.column+2)==o))return s.end.column++,s})};f.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new r(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",l)){var s=new r(t,i.row,i.column+1);if(!this.$matchTokenType(s.getCurrentToken()||"text",l))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",c)},f.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},f.recordAutoInsert=function(e,t,i){var s=e.getCursorPosition(),o=t.doc.getLine(s.row);this.isAutoInsertedClosing(s,o,n.autoInsertedLineEnd[0])||(n.autoInsertedBrackets=0),n.autoInsertedRow=s.row,n.autoInsertedLineEnd=i+o.substr(s.column),n.autoInsertedBrackets++},f.recordMaybeInsert=function(e,t,i){var s=e.getCursorPosition(),o=t.doc.getLine(s.row);this.isMaybeInsertedClosing(s,o)||(n.maybeInsertedBrackets=0),n.maybeInsertedRow=s.row,n.maybeInsertedLineStart=o.substr(0,s.column)+i,n.maybeInsertedLineEnd=o.substr(s.column),n.maybeInsertedBrackets++},f.isAutoInsertedClosing=function(e,t,i){return n.autoInsertedBrackets>0&&e.row===n.autoInsertedRow&&i===n.autoInsertedLineEnd[0]&&t.substr(e.column)===n.autoInsertedLineEnd},f.isMaybeInsertedClosing=function(e,t){return n.maybeInsertedBrackets>0&&e.row===n.maybeInsertedRow&&t.substr(e.column)===n.maybeInsertedLineEnd&&t.substr(0,e.column)==n.maybeInsertedLineStart},f.popAutoInsertedClosing=function(){n.autoInsertedLineEnd=n.autoInsertedLineEnd.substr(1),n.autoInsertedBrackets--},f.clearMaybeInsertedClosing=function(){n&&(n.maybeInsertedBrackets=0,n.maybeInsertedRow=-1)},s.inherits(f,o),t.CstyleBehaviour=f}),ace.define("ace/unicode",["require","exports","module"],function(e,t,i){"use strict";t.packages={},function(e){var i=/\w{4}/g;for(var n in e)t.packages[n]=e[n].replace(i,"\\u$&")}({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,i){"use strict";var n=e("../tokenizer").Tokenizer,s=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour/cstyle").CstyleBehaviour,r=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=s};(function(){this.$defaultBehaviour=new o,this.tokenRe=new RegExp("^["+r.packages.L+r.packages.Mn+r.packages.Mc+r.packages.Nd+r.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+r.packages.L+r.packages.Mn+r.packages.Mc+r.packages.Nd+r.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new n(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,i,n){var s=t.doc,o=!0,r=!0,l=1/0,c=t.getTabSize(),h=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))m=this.lineCommentStart.map(a.escapeRegExp).join("|"),g=this.lineCommentStart[0];else m=a.escapeRegExp(this.lineCommentStart),g=this.lineCommentStart;m=new RegExp("^(\\s*)(?:"+m+") ?"),h=t.getUseSoftTabs();C=function(e,t){var i=e.match(m);if(i){var n=i[1].length,o=i[0].length;d(e,n,o)||" "!=i[0][o-1]||o--,s.removeInLine(t,n,o)}};var u=g+" ",d=(A=function(e,t){o&&!/\S/.test(e)||(d(e,l,l)?s.insertInLine({row:t,column:l},u):s.insertInLine({row:t,column:l},g))},v=function(e,t){return m.test(e)},function(e,t,i){for(var n=0;t--&&" "==e.charAt(t);)n++;if(n%c!=0)return!1;for(n=0;" "==e.charAt(i++);)n++;return c>2?n%c!=c-1:n%c==0})}else{if(!this.blockComment)return!1;var g=this.blockComment.start,f=this.blockComment.end,m=new RegExp("^(\\s*)(?:"+a.escapeRegExp(g)+")"),p=new RegExp("(?:"+a.escapeRegExp(f)+")\\s*$"),A=function(e,t){v(e,t)||o&&!/\S/.test(e)||(s.insertInLine({row:t,column:e.length},f),s.insertInLine({row:t,column:l},g))},C=function(e,t){var i;(i=e.match(p))&&s.removeInLine(t,e.length-i[0].length,e.length),(i=e.match(m))&&s.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(m.test(e))return!0;for(var n=t.getTokens(i),s=0;se.length&&(F=e.length)}),l==1/0&&(l=F,o=!1,r=!1),h&&l%c!=0&&(l=Math.floor(l/c)*c),w(r?C:A)},this.toggleBlockComment=function(e,t,i,n){var s=this.blockComment;if(s){!s.start&&s[0]&&(s=s[0]);var o,r,a=(m=new l(t,n.row,n.column)).getCurrentToken(),h=(t.selection,t.selection.toOrientedRange());if(a&&/comment/.test(a.type)){for(var u,d;a&&/comment/.test(a.type);){if(-1!=(p=a.value.indexOf(s.start))){var g=m.getCurrentTokenRow(),f=m.getCurrentTokenColumn()+p;u=new c(g,f,g,f+s.start.length);break}a=m.stepBackward()}var m;for(a=(m=new l(t,n.row,n.column)).getCurrentToken();a&&/comment/.test(a.type);){var p;if(-1!=(p=a.value.indexOf(s.end))){g=m.getCurrentTokenRow(),f=m.getCurrentTokenColumn()+p;d=new c(g,f,g,f+s.end.length);break}a=m.stepForward()}d&&t.remove(d),u&&(t.remove(u),o=u.start.row,r=-s.start.length)}else r=s.start.length,o=i.start.row,t.insert(i.end,s.end),t.insert(i.start,s.start);h.start.row==o&&(h.start.column+=r),h.end.row==o&&(h.end.column+=r),t.selection.fromOrientedRange(h)}},this.getNextLineIndent=function(e,t,i){return this.$getIndent(t)},this.checkOutdent=function(e,t,i){return!1},this.autoOutdent=function(e,t,i){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){for(var t in this.$embeds=[],this.$modes={},e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var i=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(t=0;tthis.row)){var i=function(t,i,n){var s="insert"==t.action,o=(s?1:-1)*(t.end.row-t.start.row),r=(s?1:-1)*(t.end.column-t.start.column),a=t.start,l=s?a:t.end;if(e(i,a,n))return{row:i.row,column:i.column};if(e(l,i,!n))return{row:i.row+o,column:i.column+(i.row==l.row?r:0)};return{row:a.row,column:a.column}}(t,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,!0)}},this.setPosition=function(e,t,i){var n;if(n=i?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=n.row||this.column!=n.column){var s={row:this.row,column:this.column};this.row=n.row,this.column=n.column,this._signal("change",{old:s,value:n})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var i={};return e>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):e<0?(i.row=0,i.column=0):(i.row=e,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),t<0&&(i.column=0),i}}).call(o.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,i){"use strict";var n=e("./lib/oop"),s=e("./apply_delta").applyDelta,o=e("./lib/event_emitter").EventEmitter,r=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){n.implement(this,o),this.setValue=function(e){var t=this.getLength()-1;this.remove(new r(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{(t=this.getLines(e.start.row,e.end.row))[0]=(t[0]||"").substring(e.start.column);var i=t.length-1;e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var i=this.clippedPos(e.row,e.column),n=this.pos(e.row,e.column+t.length);return this.applyDelta({start:i,end:n,action:"insert",lines:[t]},!0),this.clonePos(n)},this.clippedPos=function(e,t){var i=this.getLength();void 0===e?e=i:e<0?e=0:e>=i&&(e=i-1,t=void 0);var n=this.getLine(e);return void 0==t&&(t=n.length),{row:e,column:t=Math.min(Math.max(t,0),n.length)}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){var i=0;(e=Math.min(Math.max(e,0),this.getLength()))0,n=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){return e instanceof r||(e=r.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty()?e.start:t==this.getTextRange(e)?e.end:(this.remove(e),t?this.insert(e.start,t):e.start)},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!r.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),s(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var i=e.lines,n=i.length,s=e.start.row,o=e.start.column,r=0,a=0;;){r=a,a+=t-1;var l=i.slice(r,a);if(a>n){e.lines=l,e.start.row=s+r,e.start.column=o;break}l.push(""),this.applyDelta({start:this.pos(s+r,o),end:this.pos(s+a,o=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,s=t||0,o=i.length;s20){i.running=setTimeout(i.$worker,20);break}}i.currentLine=t,-1==n&&(n=t),o<=n&&i.fireUpdateEvent(o,n)}}};(function(){n.implement(this,s),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var i={first:e,last:t};this._signal("update",{data:i})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.lines.splice.apply(this.lines,n),this.states.splice.apply(this.states,n)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),i=this.states[e-1],n=this.tokenizer.getLineTokens(t,i,e);return this.states[e]+""!=n.state+""?(this.states[e]=n.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=n.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),s=(e("./lib/oop"),e("./range").Range),o=function(e,t,i){this.setRegexp(e),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,i,o){if(this.regExp)for(var r=o.firstRow,a=o.lastRow,l=r;l<=a;l++){var c=this.cache[l];null==c&&((c=n.getMatchOffsets(i.getLine(l),this.regExp)).length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new s(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(i),this.clazz,o)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../range").Range;function s(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new n(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,i){var n,s,o=0,r=this.folds,a=!0;null==t&&(t=this.end.row,i=this.end.column);for(var l=0;l0)){var l=n(e,r.start);return 0===a?t&&0!==l?-o-2:o:l>0||0===l&&!t?o:-o-1}}return-o-1},this.add=function(e){var t=!e.isEmpty(),i=this.pointIndex(e.start,t);i<0&&(i=-i-1);var n=this.pointIndex(e.end,t,i);return n<0?n=-n-1:n++,this.ranges.splice(i,n-i,e)},this.addList=function(e){for(var t=[],i=e.length;i--;)t.push.apply(t,this.add(e[i]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){for(var e,t=[],i=this.ranges,s=(i=i.sort(function(e,t){return n(e.start,t.start)}))[0],o=1;o=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var i=this.ranges;if(i[0].start.row>t||i[i.length-1].start.rown)break;if(c.start.row==n&&c.start.column>=t.column&&(c.start.column==t.column&&this.$insertRight||(c.start.column+=o,c.start.row+=s)),c.end.row==n&&c.end.column>=t.column){if(c.end.column==t.column&&this.$insertRight)continue;c.end.column==t.column&&o>0&&ac.start.column&&c.end.column==r[a+1].start.column&&(c.end.column-=o),c.end.column+=o,c.end.row+=s}}}if(0!=s&&a=e)return s;if(s.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var i=this.$foldData,n=0;for(t&&(n=i.indexOf(t)),-1==n&&(n=0);n=e)return s}return null},this.getFoldedRowCount=function(e,t){for(var i=this.$foldData,n=t-e+1,s=0;s=t){a=e?n-=t-a:n=0);break}r>=e&&(n-=a>=e?r-a:r-e+1)}return n},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var i,n=this.$foldData,r=!1;e instanceof o?i=e:(i=new o(t,e)).collapseChildren=t.collapseChildren,this.$clipRangeToDocument(i.range);var a=i.start.row,l=i.start.column,c=i.end.row,h=i.end.column;if(!(a0&&(this.removeFolds(g),g.forEach(function(e){i.addSubFold(e)}));for(var f=0;f0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var i,s;if(null==e?(i=new n(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new n(e,0,e,this.getLine(e).length):"row"in e?n.fromPoints(e,e):e,s=this.getFoldsInRangeList(i),t)this.removeFolds(s);else for(var o=s;o.length;)this.expandFolds(o),o=this.getFoldsInRangeList(i);if(s.length)return s},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var i=this.getFoldLine(e,t);return i?i.end.row:e},this.getRowFoldStart=function(e,t){var i=this.getFoldLine(e,t);return i?i.start.row:e},this.getFoldDisplayLine=function(e,t,i,n,s){null==n&&(n=e.start.row),null==s&&(s=0),null==t&&(t=e.end.row),null==i&&(i=this.getLine(t).length);var o=this.doc,r="";return e.walk(function(e,t,i,a){if(!(th)break}while(o&&l.test(o.type));o=s.stepBackward()}else o=s.getCurrentToken();return c.end.row=s.getCurrentTokenRow(),c.end.column=s.getCurrentTokenColumn()+o.value.length-2,c}},this.foldAll=function(e,t,i){void 0==i&&(i=1e5);var n=this.foldWidgets;if(n){t=t||this.getLength();for(var s=e=e||0;s=e){s=o.end.row;try{var r=this.addFold("...",o);r&&(r.collapseChildren=i)}catch(e){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){this.$foldMode!=e&&(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),e&&"manual"!=this.$foldStyle?(this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)):this.foldWidgets=null)},this.getParentFoldRangeData=function(e,t){var i=this.foldWidgets;if(!i||t&&i[e])return{};for(var n,s=e-1;s>=0;){var o=i[s];if(null==o&&(o=i[s]=this.getFoldWidget(s)),"start"==o){var r=this.getFoldWidgetRange(s);if(n||(n=r),r&&r.end.row>=e)break}s--}return{range:-1!==s&&r,firstRange:n}},this.onFoldWidgetClick=function(e,t){var i={children:(t=t.domEvent).shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey};if(!this.$toggleFoldWidget(e,i)){var n=t.target||t.srcElement;n&&/ace_fold-widget/.test(n.className)&&(n.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var i=this.getFoldWidget(e),n=this.getLine(e),s="end"===i?-1:1,o=this.getFoldAt(e,-1===s?0:n.length,s);if(o)return t.children||t.all?this.removeFold(o):this.expandFold(o),o;var r=this.getFoldWidgetRange(e,!0);if(r&&!r.isMultiLine()&&(o=this.getFoldAt(r.start.row,r.start.column,1))&&r.isEqual(o.range))return this.removeFold(o),o;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=r?r.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):r&&(t.all&&(r.collapseChildren=1e4),this.addFold("...",r));return r}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var i=this.$toggleFoldWidget(t,{});if(!i){var n=this.getParentFoldRangeData(t,!0);if(i=n.range||n.firstRange){t=i.start.row;var s=this.getFoldAt(t,this.getLine(t).length,1);s?this.removeFold(s):this.addFold("...",i)}}},this.updateFoldWidgets=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,n)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,i){"use strict";var n=e("../token_iterator").TokenIterator,s=e("../range").Range;t.BracketMatch=function(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var i=t||this.getLine(e.row).charAt(e.column-1);if(""==i)return null;var n=i.match(/([\(\[\{])|([\)\]\}])/);return n?n[1]?this.$findClosingBracket(n[1],e):this.$findOpeningBracket(n[2],e):null},this.getBracketRange=function(e){var t,i=this.getLine(e.row),n=!0,o=i.charAt(e.column-1),r=o&&o.match(/([\(\[\{])|([\)\]\}])/);if(r||(o=i.charAt(e.column),e={row:e.row,column:e.column+1},r=o&&o.match(/([\(\[\{])|([\)\]\}])/),n=!1),!r)return null;if(r[1]){if(!(a=this.$findClosingBracket(r[1],e)))return null;t=s.fromPoints(e,a),n||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a;if(!(a=this.$findOpeningBracket(r[2],e)))return null;t=s.fromPoints(a,e),n||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,i){var s=this.$brackets[e],o=1,r=new n(this,t.row,t.column),a=r.getCurrentToken();if(a||(a=r.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-r.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==s){if(0==(o-=1))return{row:r.getCurrentTokenRow(),column:l+r.getCurrentTokenColumn()}}else h==e&&(o+=1);l-=1}do{a=r.stepBackward()}while(a&&!i.test(a.type));if(null==a)break;l=(c=a.value).length-1}return null}},this.$findClosingBracket=function(e,t,i){var s=this.$brackets[e],o=1,r=new n(this,t.row,t.column),a=r.getCurrentToken();if(a||(a=r.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-r.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;li&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(e,t){for(var i=0,n=e.length-1;i<=n;){var s=i+n>>1,o=e[s];if(t>o)i=s+1;else{if(!(t=t);o++);return(i=n[o])?(i.index=o,i.start=s-i.value.length,i):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=s.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?s.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(n=!!i.charAt(t-1).match(this.tokenRe)),n||(n=!!i.charAt(t).match(this.tokenRe)),n)var s=this.tokenRe;else if(/^\s+$/.test(i.slice(t-1,t+1)))s=/\s/;else s=this.nonTokenRe;var o=t;if(o>0){do{o--}while(o>=0&&i.charAt(o).match(s));o++}for(var r=t;re&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),i=this.$rowLengthCache,n=0,s=0,o=this.$foldData[s],r=o?o.start.row:1/0,a=t.length,l=0;lr){if((l=o.end.row+1)>=a)break;r=(o=this.$foldData[s++])?o.start.row:1/0}null==i[l]&&(i[l]=this.$getStringScreenWidth(t[l])[0]),i[l]>n&&(n=i[l])}this.screenWidth=n}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=e.length-1;-1!=n;n--){var s=e[n];"doc"==s.group?(this.doc.revertDeltas(s.deltas),i=this.$getUndoSelection(s.deltas,!0,i)):s.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=0;ne.end.column&&(o.start.column+=c),o.end.row==e.end.row&&o.end.column>e.end.column&&(o.end.column+=c)),r&&o.start.row>=e.end.row&&(o.start.row+=r,o.end.row+=r)}if(o.end=this.insert(o.start,n),s.length){var a=e.start,l=o.start,c=(r=l.row-a.row,l.column-a.column);this.addFolds(s.map(function(e){return(e=e.clone()).start.row==a.row&&(e.start.column+=c),e.end.row==a.row&&(e.end.column+=c),e.start.row+=r,e.end.row+=r,e}))}return o},this.indentRows=function(e,t,i){i=i.replace(/\t/g,this.getTabString());for(var n=e;n<=t;n++)this.doc.insertInLine({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new h(0,0,0,0),n=this.getTabSize(),s=t.start.row;s<=t.end.row;++s){var o=this.getLine(s);i.start.row=s,i.end.row=s;for(var r=0;r0){var s;if((s=this.getRowFoldEnd(t+i))>this.doc.getLength()-1)return 0;n=s-t}else{e=this.$clipRowToDocument(e);n=(t=this.$clipRowToDocument(t))-e+1}var o=new h(e,0,t,Number.MAX_VALUE),r=this.getFoldsInRange(o).map(function(e){return(e=e.clone()).start.row+=n,e.end.row+=n,e}),a=0==i?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+n,a),r.length&&this.addFolds(r),n},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var i=this.doc.getLength();e>=i?(e=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var i=this.$wrapLimitRange;i.max<0&&(i={min:t,max:t});var n=this.$constrainWrapLimit(e,i.min,i.max);return n!=this.$wrapLimit&&n>1&&(this.$wrapLimit=n,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(e,t,i){return t&&(e=Math.max(t,e)),i&&(e=Math.min(i,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,i=e.action,n=e.start,s=e.end,o=n.row,r=s.row,a=r-o,l=null;if(this.$updating=!0,0!=a)if("remove"===i){this[t?"$wrapData":"$rowLengthCache"].splice(o,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var h=0;if(m=this.getFoldLine(s.row)){m.addRemoveChars(s.row,s.column,n.column-s.column),m.shiftRow(-a);var u=this.getFoldLine(o);u&&u!==m&&(u.merge(m),m=u),h=c.indexOf(m)+1}for(;h=s.row&&m.shiftRow(-a)}r=o}else{var d=Array(a);d.unshift(o,0);var g=t?this.$wrapData:this.$rowLengthCache;g.splice.apply(g,d);c=this.$foldData,h=0;if(m=this.getFoldLine(o)){var f=m.range.compareInside(n.row,n.column);0==f?(m=m.split(n.row,n.column))&&(m.shiftRow(a),m.addRemoveChars(r,0,s.column-n.column)):-1==f&&(m.addRemoveChars(o,0,s.column-n.column),m.shiftRow(a)),h=c.indexOf(m)+1}for(;h=o&&m.shiftRow(a)}}else a=Math.abs(e.start.column-e.end.column),"remove"===i&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a),(m=this.getFoldLine(o))&&m.addRemoveChars(o,n.column,a);return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(o,r):this.$updateRowLengthCache(o,r),l},this.$updateRowLengthCache=function(e,t,i){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(i,n){var s,o,r=this.doc.getAllLines(),a=this.getTabSize(),l=this.$wrapData,c=this.$wrapLimit,h=i;for(n=Math.min(n,r.length-1);h<=n;)(o=this.getFoldLine(h,o))?(s=[],o.walk(function(i,n,o,a){var l;if(null!=i){(l=this.$getDisplayTokens(i,s.length))[0]=e;for(var c=1;c=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}this.$computeWrapSplits=function(n,s,r){if(0==n.length)return[];var a=[],c=n.length,h=0,u=0,d=this.$wrapAsCode,g=this.$indentedSoftWrap,f=s<=Math.max(2*r,8)||!1===g?0:Math.floor(s/2);function m(e){var t=n.slice(h,e),s=t.length;t.join("").replace(/12/g,function(){s-=1}).replace(/2/g,function(){s-=1}),a.length||(p=function(){var e=0;if(0===f)return e;if(g)for(var t=0;ts-p;){var A=h+s-p;if(n[A-1]>=i&&n[A]>=i)m(A);else if(n[A]!=e&&n[A]!=t){for(var C=Math.max(A-(s-(s>>2)),h-1);A>C&&n[A]C&&n[A]C&&9==n[A];)A--}else for(;A>C&&n[A]C?m(++A):(2==n[A=h+s]&&A--,m(A-p))}else{for(;A!=h-1&&n[A]!=e;A--);if(A>h){m(A);continue}for(A=h+s;A39&&a<48||a>57&&a<64?s.push(9):a>=4352&&u(a)?s.push(1,2):s.push(1)}return s},this.$getStringScreenWidth=function(e,t,i){if(0==t)return[0,0];var n,s;for(null==t&&(t=1/0),i=i||0,s=0;s=4352&&u(n)?i+=2:i+=1,!(i>t));s++);return[i,s]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),i=this.$wrapData[t.row];return i.length&&i[0]=0){a=c[h],o=this.$docRowCache[h];var d=e>c[u-1]}else d=!u;for(var g=this.getLength()-1,f=this.getNextFoldLine(o),m=f?f.start.row:1/0;a<=e&&!(a+(l=this.getRowLength(o))>e||o>=g);)a+=l,++o>m&&(o=f.end.row+1,m=(f=this.getNextFoldLine(o,f))?f.start.row:1/0),d&&(this.$docRowCache.push(o),this.$screenRowCache.push(a));if(f&&f.start.row<=o)n=this.getFoldDisplayLine(f),o=f.start.row;else{if(a+l<=e||o>g)return{row:g,column:this.getLine(g).length};n=this.getLine(o),f=null}var p=0,A=Math.floor(e-a);if(this.$useWrapMode){var C=this.$wrapData[o];C&&(s=C[A],A>0&&C.length&&(p=C.indent,r=C[A-1]||C[C.length-1],n=n.substring(r)))}return void 0!==i&&this.$bidiHandler.isBidiRow(a+A,o,A)&&(t=this.$bidiHandler.offsetToCol(i)),r+=this.$getStringScreenWidth(n,t-p)[1],this.$useWrapMode&&r>=s&&(r=s-1),f?f.idxToPosition(r):{row:o,column:r}},this.documentToScreenPosition=function(e,t){if(void 0===t)var i=this.$clipPositionToDocument(e.row,e.column);else i=this.$clipPositionToDocument(e,t);e=i.row,t=i.column;var n,s=0,o=null;(n=this.getFoldAt(e,t,1))&&(e=n.start.row,t=n.start.column);var r,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0){a=l[c],s=this.$screenRowCache[c];var u=e>l[h-1]}else u=!h;for(var d=this.getNextFoldLine(a),g=d?d.start.row:1/0;a=g){if((r=d.end.row+1)>e)break;g=(d=this.getNextFoldLine(r,d))?d.start.row:1/0}else r=a+1;s+=this.getRowLength(a),a=r,u&&(this.$docRowCache.push(a),this.$screenRowCache.push(s))}var f="";d&&a>=g?(f=this.getFoldDisplayLine(d,e,t),o=d.start.row):(f=this.getLine(e).substring(0,t),o=e);var m=0;if(this.$useWrapMode){var p=this.$wrapData[o];if(p){for(var A=0;f.length>=p[A];)s++,A++;f=f.substring(p[A-1]||0,f.length),m=A>0?p.indent:0}}return{row:s,column:m+this.$getStringScreenWidth(f)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var i=this.$wrapData.length,n=0,s=(a=0,(t=this.$foldData[a++])?t.start.row:1/0);ns&&(n=t.end.row+1,s=(t=this.$foldData[a++])?t.start.row:1/0)}else{e=this.getLength();for(var r=this.$foldData,a=0;ai);o++);return[n,o]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=u}.call(f.prototype),e("./edit_session/folding").Folding.call(f.prototype),e("./edit_session/bracket_match").BracketMatch.call(f.prototype),r.defineOptions(f.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){(e="auto"==e?"text"!=this.$mode.type:"text"!=e)!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=f}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),s=e("./lib/oop"),o=e("./range").Range,r=function(){this.$options={}};(function(){this.set=function(e){return s.mixin(this.$options,e),this},this.getOptions=function(){return n.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,i=this.$matchIterator(e,t);if(!i)return!1;var n=null;return i.forEach(function(e,i,s,r){return n=new o(e,i,s,r),!(i==r&&t.start&&t.start.start&&0!=t.skipCurrent&&n.isEqual(t.start))||(n=null,!1)}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var i=t.range,s=i?e.getLines(i.start.row,i.end.row):e.doc.getAllLines(),r=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=s.length-c;e:for(var u=a.offset||0;u<=h;u++){for(var d=0;dm||(r.push(l=new o(u,m,u+c-1,p)),c>2&&(u=u+c-2))}}else for(var A=0;AF&&r[d].end.row==i.end.row;)d--;for(r=r.slice(A,d+1),A=0,d=r.length;A=a;i--)if(u(i,Number.MAX_VALUE,e))return;if(0!=t.wrap)for(i=l,a=r.row;i>=a;i--)if(u(i,Number.MAX_VALUE,e))return}};else c=function(e){var i=r.row;if(!u(i,r.column,e)){for(i+=1;i<=l;i++)if(u(i,0,e))return;if(0!=t.wrap)for(i=a,l=r.row;i<=l;i++)if(u(i,0,e))return}};if(t.$isMultiLine)var h=i.length,u=function(t,s,o){var r=n?t-h+1:t;if(!(r<0)){var a=e.getLine(r),l=a.search(i[0]);if(!(!n&&ls))return!!o(r,l,r+h-1,u)||void 0}}};else if(n)u=function(t,n,s){var o,r=e.getLine(t),a=[],l=0;for(i.lastIndex=0;o=i.exec(r);){var c=o[0].length;if(l=o.index,!c){if(l>=r.length)break;i.lastIndex=l+=1}if(o.index+c>n)break;a.push(o.index,c)}for(var h=a.length-1;h>=0;h-=2){var u=a[h-1];if(s(t,u,t,u+(c=a[h])))return!0}};else u=function(t,n,s){var o,r=e.getLine(t),a=n;for(i.lastIndex=n;o=i.exec(r);){var l=o[0].length;if(s(t,a=o.index,t,a+l))return!0;if(!l&&(i.lastIndex=a+=1,a>=r.length))return!1}};return{forEach:c}}}).call(r.prototype),t.Search=r}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/keys"),s=e("../lib/useragent"),o=n.KEY_MODS;function r(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function a(e,t){r.call(this,e,t),this.$singleCommand=!1}a.prototype=r.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],t||delete this.commands[i];var n=this.commandKeyBinding;for(var s in n){var o=n[s];if(o==e)delete n[s];else if(Array.isArray(o)){var r=o.indexOf(e);-1!=r&&(o.splice(r,1),1==o.length&&(n[s]=o[0]))}}},this.bindKey=function(e,t,i){if("object"==typeof e&&e&&(void 0==i&&(i=e.position),e=e[this.platform]),e)return"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var n="";if(-1!=e.indexOf(" ")){var s=e.split(/\s+/);e=s.pop(),s.forEach(function(e){var t=this.parseKeys(e),i=o[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var r=this.parseKeys(e),a=o[r.hashId]+r.key;this._addCommandToBinding(n+a,t,i)},this)},this._addCommandToBinding=function(t,i,n){var s,o=this.commandKeyBinding;if(i)if(!o[t]||this.$singleCommand)o[t]=i;else{Array.isArray(o[t])?-1!=(s=o[t].indexOf(i))&&o[t].splice(s,1):o[t]=[o[t]],"number"!=typeof n&&(n=e(i));var r=o[t];for(s=0;sn)break}r.splice(s,0,i)}else delete o[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var i=e[t];if(i){if("string"==typeof i)return this.bindKey(i,t);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=t),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),i=t.pop(),s=n[i];if(n.FUNCTION_KEYS[s])i=n.FUNCTION_KEYS[s].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:i.toUpperCase(),hashId:-1}}for(var o=0,r=t.length;r--;){var a=n.KEY_MODS[t[r]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[r]+" in "+e),!1;o|=a}return{key:i,hashId:o}},this.findKeyCommand=function(e,t){var i=o[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){if(!(n<0)){var s=o[t]+i,r=this.commandKeyBinding[s];return e.$keyChain&&(e.$keyChain+=" "+s,r=this.commandKeyBinding[e.$keyChain]||r),!r||"chainKeys"!=r&&"chainKeys"!=r[r.length-1]?(e.$keyChain&&(t&&4!=t||1!=i.length?(-1==t||n>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-s.length-1)),{command:r}):(e.$keyChain=e.$keyChain||s,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(r.prototype),t.HashHandler=r,t.MultiHashHandler=a}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),s=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,r=function(e,t){s.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};n.inherits(r,s),function(){n.implement(this,o),this.exec=function(e,t,i){if(Array.isArray(e)){for(var n=e.length;n--;)if(this.exec(e[n],t,i))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(e.isAvailable&&!e.isAvailable(t))return!1;var s={editor:t,command:e,args:i};return s.returnValue=this._emit("exec",s),this._signal("afterExec",s),!1!==s.returnValue},this.toggleRecording=function(e){if(!this.$inReplay)return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(r.prototype),t.CommandManager=r}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,i){"use strict";var n=e("../lib/lang"),s=e("../config"),o=e("../range").Range;function r(e,t){return{win:e,mac:t}}t.commands=[{name:"showSettingsMenu",bindKey:r("Ctrl-,","Command-,"),exec:function(e){s.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:r("Alt-E","F4"),exec:function(e){s.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:r("Alt-Shift-E","Shift-F4"),exec:function(e){s.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:r("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:r(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:r("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:r("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:r("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:r("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:r("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:r(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:r("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:r("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:r("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:r("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:r("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:r("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:r("Ctrl-F","Command-F"),exec:function(e){s.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:r("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:r("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:r("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:r("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:r("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:r("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:r("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:r("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:r("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:r("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:r("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:r("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:r("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:r("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:r("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:r("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:r("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:r("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:r("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:r("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:r(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:r("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:r(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:r("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:r("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:r("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:r("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:r("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:r("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:r("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:r(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:r("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:r("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:r("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:r("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:r("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:r("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:r("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:r("Ctrl-H","Command-Option-F"),exec:function(e){s.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:r("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:r("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:r("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:r("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:r("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:r("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:r("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:r("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:r("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:r("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:r("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",bindKey:r("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",bindKey:r("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:r("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:r("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:r("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:r("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:r("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:r("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(n.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:r(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:r("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:r("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:r("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:r("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:r(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),s=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),r=e.session.doc.getLine(i.row).length,a=e.session.doc.getTextRange(e.selection.getRange()).replace(/\n\s*/," ").length,l=e.session.doc.getLine(i.row),c=i.row+1;c<=s.row+1;c++){var h=n.stringTrimLeft(n.stringTrimRight(e.session.doc.getLine(c)));0!==h.length&&(h=" "+h),l+=h}s.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+a)):(r=e.session.doc.getLine(i.row).length>r?r+1:r,e.selection.moveCursorTo(i.row,r))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:r(null,null),exec:function(e){var t=e.session.doc.getLength()-1,i=e.session.doc.getLine(t).length,n=e.selection.rangeList.ranges,s=[];n.length<1&&(n=[e.selection.getRange()]);for(var r=0;r0&&this.$blockScrolling--;var i=t&&t.scrollIntoView;if(i){switch(i){case"center-animate":i="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),s=this.renderer.layerConfig;(n.start.row>=s.lastRow||n.end.row<=s.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==i&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,i=this.$mergeableCommands,n=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var s=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),n=n&&this.mergeNextCommand&&(!/\s/.test(s)||/\s/.test(t.args)),this.mergeNextCommand=!0}else n=n&&-1!==i.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(n=!1),n?this.session.mergeUndoDeltas=!0:-1!==i.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var i=this;A.loadModule(["keybinding",e],function(n){i.$keybindingId==e&&i.keyBinding.setKeyboardHandler(n&&n.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var i=this.session.getSelection();i.off("changeCursor",this.$onCursorChange),i.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&e.bgTokenizer&&e.bgTokenizer.scheduleStart()}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||s.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=t.findMatchingBracket(e.getCursorPosition());if(i)var n=new g(i.row,i.column,i.row,i.column+1);else if(t.$mode.getMatching)n=t.$mode.getMatching(e.session);n&&(t.$bracketHighlight=t.addMarker(n,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=e.getCursorPosition(),n=new C(e.session,i.row,i.column),s=n.getCurrentToken();if(!s||!/\b(?:tag-open|tag-name)/.test(s.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==s.type.indexOf("tag-open")||(s=n.stepForward())){var o=s.value,r=0,a=n.stepBackward();if("<"==a.value)do{a=s,(s=n.stepForward())&&s.value===o&&-1!==s.type.indexOf("tag-name")&&("<"===a.value?r++:"=0);else{do{s=a,a=n.stepBackward(),s&&s.value===o&&-1!==s.type.indexOf("tag-name")&&("<"===a.value?r++:"1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var i=new g(e.row,e.column,e.row,1/0);i.id=t.addMarker(i,"ace_active-line","screenLine"),t.$highlightLineMarker=i}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var i=this.selection.getRange(),n=this.getSelectionStyle();t.$selectionMarker=t.addMarker(i,"ace_selection",n)}var s=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(s),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var i=t.start.column-1,n=t.end.column+1,s=e.getLine(t.start.row),o=s.length,r=s.substring(Math.max(i,0),Math.min(n,o));if(!(i>=0&&/^[\w\d]/.test(r)||n<=o&&/[\w\d]$/.test(r)))if(r=s.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(r))return this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:r})}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var i={text:e,event:t};this.commands.exec("paste",this,i)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var i=t.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(i.length>n.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var s=n.length;s--;){var o=n[s];o.isEmpty()||this.session.remove(o),this.session.insert(o.start,i[s])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var i=this.session,n=i.getMode(),s=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var o=n.transformAction(i.getState(s.row),"insertion",this,i,e);o&&(e!==o.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=o.text)}if("\t"==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()&&-1==e.indexOf("\n")){(r=new g.fromPoints(s,s)).end.column+=e.length,this.session.remove(r)}}else{var r=this.getSelectionRange();s=this.session.remove(r),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=i.getLine(s.row);if(s.column>a.search(/\S|$/)){var l=a.substr(s.column).search(/\S|$/);i.doc.removeInLine(s.row,s.column,s.column+l)}}this.clearSelection();var c=s.column,h=i.getState(s.row),u=(a=i.getLine(s.row),n.checkOutdent(h,a,e));i.insert(s,e);if(o&&o.selection&&(2==o.selection.length?this.selection.setSelectionRange(new g(s.row,c+o.selection[0],s.row,c+o.selection[1])):this.selection.setSelectionRange(new g(s.row+o.selection[0],o.selection[1],s.row+o.selection[2],o.selection[3]))),i.getDocument().isNewLine(e)){var d=n.getNextLineIndent(h,a.slice(0,s.column),i.getTabString());i.insert({row:s.row+1,column:0},d)}u&&n.autoOutdent(h,i,s.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,i){this.keyBinding.onCommandKey(e,t,i)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var i=this.session,n=i.getState(t.start.row),s=i.getMode().transformAction(n,"deletion",this,i,t);if(0===t.end.column){var o=i.getTextRange(t);if("\n"==o[o.length-1]){var r=i.getLine(t.end.row);/^\s+$/.test(r)&&(t.end.column=r.length)}}s&&(t=s)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var i,n,s=this.session.getLine(e.row);tt.toLowerCase()?1:0});var s=new g(0,0,0,0);for(n=e.first;n<=e.last;n++){var o=t.getLine(n);s.start.row=n,s.end.row=n,s.end.column=o.length,t.replace(s,i[n-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,e)},this.getNumberAt=function(e,t){var i=/[\-]?[0-9]+(?:\.[0-9]+)?/g;i.lastIndex=0;for(var n=this.session.getLine(e);i.lastIndex=t)return{value:s[0],start:s.index,end:s.index+s[0].length}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,i=this.selection.getCursor().column,n=new g(t,i-1,t,i),s=this.session.getTextRange(n);if(!isNaN(parseFloat(s))&&isFinite(s)){var o=this.getNumberAt(t,i);if(o){var r=o.value.indexOf(".")>=0?o.start+o.value.indexOf(".")+1:o.end,a=o.start+o.value.length-r,l=parseFloat(o.value);l*=Math.pow(10,a),r!==o.end&&ig+1)break;g=f.last}for(h--,a=this.session.$moveLines(d,g,t?0:e),t&&-1==e&&(u=h+1);u<=h;)r[u].moveBy(a,0),u++;t||(a=0),l+=a}s.fromOrientedRange(s.ranges[0]),s.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var i=this.renderer,n=this.renderer.layerConfig,s=e*Math.floor(n.height/n.lineHeight);this.$blockScrolling++,!0===t?this.selection.$moveSelection(function(){this.moveCursorBy(s,0)}):!1===t&&(this.selection.moveCursorBy(s,0),this.selection.clearSelection()),this.$blockScrolling--;var o=i.scrollTop;i.scrollBy(0,s*n.lineHeight),null!=t&&i.scrollCursorIntoView(null,.5),i.animateScrolling(o)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,i,n){this.renderer.scrollToLine(e,t,i,n)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var i=this.getCursorPosition(),n=new C(this.session,i.row,i.column),s=n.getCurrentToken(),o=s||n.stepForward();if(o){var r,a,l=!1,c={},h=i.column-o.start,u={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(o.value.match(/[{}()\[\]]/g)){for(;h=0;--o)this.$tryReplace(i[o],e)&&n++;return this.selection.setSelectionRange(s),this.$blockScrolling-=1,n},this.$tryReplace=function(e,t){var i=this.session.getTextRange(e);return null!==(t=this.$search.replace(i,t))?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,i){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&n.mixin(t,e);var s=this.selection.getRange();null==t.needle&&((e=this.session.getTextRange(s)||this.$search.$options.needle)||(s=this.session.getWordRange(s.start.row,s.start.column),e=this.session.getTextRange(s)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:s});var o=this.$search.find(this.session);return t.preventScroll?o:o?(this.revealRange(o,i),o):(t.backwards?s.start=s.end:s.end=s.start,void this.selection.setRange(s))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,i=this,n=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var s=this.$scrollAnchor;s.style.cssText="position:absolute",this.container.insertBefore(s,this.container.firstChild);var o=this.on("changeSelection",function(){n=!0}),r=this.renderer.on("beforeRender",function(){n&&(t=i.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(n&&t&&(i.isFocused()||i.searchBox&&i.searchBox.isFocused())){var e=i.renderer,o=e.$cursorLayer.$pixelPos,r=e.layerConfig,a=o.top-r.offset;null!=(n=o.top>=0&&a+t.top<0||!(o.topwindow.innerHeight)&&null)&&(s.style.top=a+"px",s.style.left=o.left+"px",s.style.height=r.lineHeight+"px",s.scrollIntoView(n)),n=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",o),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",r))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,s.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}.call(v.prototype),A.defineOptions(v.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=v}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,i){"use strict";var n=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function i(e,t){for(var i=new Array(e.length),n=0;n0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return i(t,e)},this.$deserializeDeltas=function(e){return i(e,t)}}).call(n.prototype),t.UndoManager=n}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/dom"),s=e("../lib/oop"),o=e("../lib/lang"),r=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){s.implement(this,r),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;tr&&(m=o.end.row+1,r=(o=t.getNextFoldLine(m,o))?o.start.row:1/0),m>s){for(;this.$cells.length>f+1;)g=this.$cells.pop(),this.element.removeChild(g.element);break}(g=this.$cells[++f])||((g={element:null,textNode:null,foldWidget:null}).element=n.createElement("div"),g.textNode=document.createTextNode(""),g.element.appendChild(g.textNode),this.element.appendChild(g.element),this.$cells[f]=g);var p="ace_gutter-cell ";if(l[m]&&(p+=l[m]),c[m]&&(p+=c[m]),this.$annotations[m]&&(p+=this.$annotations[m].className),g.element.className!=p&&(g.element.className=p),(C=t.getRowLength(m)*e.lineHeight+"px")!=g.element.style.height&&(g.element.style.height=C),a){var A=a[m];null==A&&(A=a[m]=t.getFoldWidget(m))}if(A){g.foldWidget||(g.foldWidget=n.createElement("span"),g.element.appendChild(g.foldWidget));p="ace_fold-widget ace_"+A;"start"==A&&m==r&&mi.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../range").Range,s=e("../lib/dom"),o=function(e){this.element=s.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,i,n){return(e?1:0)|(t?2:0)|(i?4:0)|(n?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){if(e){this.config=e;var t=[];for(var i in this.markers){var n=this.markers[i];if(n.range){var s=n.range.clipRows(e.firstRow,e.lastRow);if(!s.isEmpty())if(s=s.toScreenRange(this.session),n.renderer){var o=this.$getTop(s.start.row,e),r=this.$padding+(this.session.$bidiHandler.isBidiRow(s.start.row)?this.session.$bidiHandler.getPosLeft(s.start.column):s.start.column*e.characterWidth);n.renderer(t,s,r,o,e)}else"fullLine"==n.type?this.drawFullLineMarker(t,s,n.clazz,e):"screenLine"==n.type?this.drawScreenLineMarker(t,s,n.clazz,e):s.isMultiLine()?"text"==n.type?this.drawTextMarker(t,s,n.clazz,e):this.drawMultiLineMarker(t,s,n.clazz,e):this.session.$bidiHandler.isBidiRow(s.start.row)?this.drawBidiSingleLineMarker(t,s,n.clazz+" ace_start ace_br15",e):this.drawSingleLineMarker(t,s,n.clazz+" ace_start ace_br15",e)}else n.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,i,s,o,r){for(var a=this.session,l=i.start.row,c=i.end.row,h=l,u=0,d=0,g=a.getScreenLastRowColumn(h),f=null,m=new n(h,i.start.column,h,d);h<=c;h++)m.start.row=m.end.row=h,m.start.column=h==l?i.start.column:a.getRowWrapIndent(h),m.end.column=g,u=d,d=g,g=h+1g,h==c),this.session.$bidiHandler.isBidiRow(h)?this.drawBidiSingleLineMarker(t,m,f,o,h==c?0:1,r):this.drawSingleLineMarker(t,m,f,o,h==c?0:1,r)},this.drawMultiLineMarker=function(e,t,i,n,s){var o,r,a,l=this.$padding;(s=s||"",this.session.$bidiHandler.isBidiRow(t.start.row))?((c=t.clone()).end.row=c.start.row,c.end.column=this.session.getLine(c.start.row).length,this.drawBidiSingleLineMarker(e,c,i+" ace_br1 ace_start",n,null,s)):(o=n.lineHeight,r=this.$getTop(t.start.row,n),a=l+t.start.column*n.characterWidth,e.push("
"));if(this.session.$bidiHandler.isBidiRow(t.end.row)){var c;(c=t.clone()).start.row=c.end.row,c.start.column=0,this.drawBidiSingleLineMarker(e,c,i+" ace_br12",n,null,s)}else{var h=t.end.column*n.characterWidth;o=n.lineHeight,r=this.$getTop(t.end.row,n),e.push("
")}if(!((o=(t.end.row-t.start.row-1)*n.lineHeight)<=0)){r=this.$getTop(t.start.row+1,n);var u=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")}},this.drawSingleLineMarker=function(e,t,i,n,s,o){var r=n.lineHeight,a=(t.end.column+(s||0)-t.start.column)*n.characterWidth,l=this.$getTop(t.start.row,n),c=this.$padding+t.start.column*n.characterWidth;e.push("
")},this.drawBidiSingleLineMarker=function(e,t,i,n,s,o){var r=n.lineHeight,a=this.$getTop(t.start.row,n),l=this.$padding;this.session.$bidiHandler.getSelections(t.start.column,t.end.column).forEach(function(t){e.push("
")})},this.drawFullLineMarker=function(e,t,i,n,s){var o=this.$getTop(t.start.row,n),r=n.lineHeight;t.start.row!=t.end.row&&(r+=this.$getTop(t.end.row,n)-o),e.push("
")},this.drawScreenLineMarker=function(e,t,i,n,s){var o=this.$getTop(t.start.row,n),r=n.lineHeight;e.push("
")}}).call(o.prototype),t.Marker=o}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),s=e("../lib/dom"),o=e("../lib/lang"),r=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=s.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){n.implement(this,r),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],i=1;i"+o.stringRepeat(this.TAB_CHAR,i)+""):t.push(o.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",s="",r="";if(this.showInvisibles){n+=" ace_invisible",s=" ace_invisible_space",r=" ace_invisible_tab";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=o.stringRepeat(this.TAB_CHAR,this.tabSize)}else l=a=o.stringRepeat(" ",this.tabSize);this.$tabStrings[" "]=""+a+"",this.$tabStrings["\t"]=""+l+""}},this.updateLines=function(e,t,i){this.config.lastRow==e.lastRow&&this.config.firstRow==e.firstRow||this.scrollLines(e),this.config=e;for(var n=Math.max(t,e.firstRow),s=Math.min(i,e.lastRow),o=this.element.childNodes,r=0,a=e.firstRow;ac&&(a=l.end.row+1,c=(l=this.session.getNextFoldLine(a,l))?l.start.row:1/0),!(a>s);){var h=o[r++];if(h){var u=[];this.$renderLine(u,a,!this.$useLineGroups(),a==c&&l),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=u.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;n--)i.removeChild(i.firstChild);if(t.lastRow>e.lastRow)for(n=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);n>0;n--)i.removeChild(i.lastChild);if(e.firstRowt.lastRow){s=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);i.appendChild(s)}},this.$renderLinesFragment=function(e,t,i){for(var n=this.element.ownerDocument.createDocumentFragment(),o=t,r=this.session.getNextFoldLine(o),a=r?r.start.row:1/0;o>a&&(o=r.end.row+1,a=(r=this.session.getNextFoldLine(o,r))?r.start.row:1/0),!(o>i);){var l=s.createElement("div"),c=[];if(this.$renderLine(c,o,!1,o==a&&r),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",n.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(o)+"px";else for(;l.firstChild;)n.appendChild(l.firstChild);o++}return n},this.update=function(e){this.config=e;for(var t=[],i=e.firstRow,n=e.lastRow,s=i,o=this.session.getNextFoldLine(s),r=o?o.start.row:1/0;s>r&&(s=o.end.row+1,r=(o=this.session.getNextFoldLine(s,o))?o.start.row:1/0),!(s>n);)this.$useLineGroups()&&t.push("
"),this.$renderLine(t,s,!1,s==r&&o),this.$useLineGroups()&&t.push("
"),s++;this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,i,n){var s=this,r=n.replace(/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,function(e,i,n,r,a){if(i)return s.showInvisibles?""+o.stringRepeat(s.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if("\t"==e){var l=s.session.getScreenTabSize(t+r);return t+=l-1,s.$tabStrings[l]}if(" "==e){var c=s.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=s.showInvisibles?s.SPACE_CHAR:"";return t+=1,""+h+""}return n?""+s.SPACE_CHAR+"":(t+=1,""+e+"")});if(this.$textToken[i.type])e.push(r);else{var a="ace_"+i.type.replace(/\./g," ace_"),l="";"fold"==i.type&&(l=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("",r,"")}return t+n.length},this.renderIndentGuide=function(e,t,i){var n=t.search(this.$indentGuideRe);return n<=0||n>=i?t:" "==t[0]?(n-=n%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):"\t"==t[0]?(e.push(o.stringRepeat(this.$tabStrings["\t"],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var s=0,r=0,a=i[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,u.substring(0,a-s)),u=u.substring(a-s),s=a,n||e.push("","
"),e.push(o.stringRepeat(" ",i.indent)),l=0,a=i[++r]||Number.MAX_VALUE;0!=u.length&&(s+=u.length,l=this.$renderToken(e,l,h,u))}}},this.$renderSimpleLine=function(e,t){var i=0,n=t[0],s=n.value;this.displayIndentGuides&&(s=this.renderIndentGuide(e,s)),s&&(i=this.$renderToken(e,i,n,s));for(var o=1;o"),s.length){var o=this.session.getRowSplitData(t);o&&o.length?this.$renderWrappedLine(e,s,o,i):this.$renderSimpleLine(e,s)}this.showInvisibles&&(n&&(t=n.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),i||e.push("
")},this.$getFoldLineTokens=function(e,t){var i=this.session,n=[];var s=i.getTokens(e);return t.walk(function(e,t,o,r,a){null!=e?n.push({type:"fold",value:e}):(a&&(s=i.getTokens(t)),s.length&&function(e,t,i){for(var s=0,o=0;o+e[s].value.lengthi-t&&(r=r.substring(0,i-t)),n.push({type:e[s].type,value:r}),o=t+r.length,s+=1);oi?n.push({type:e[s].type,value:r.substring(0,i-o)}):n.push(e[s]),o+=r.length,s+=1}}(s,r,o))},t.end.row,this.session.getLine(t.end.row).length),n},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n,s=e("../lib/dom"),o=function(e){this.element=s.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===n&&(n=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),s.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(n?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||n||(this.smoothBlinking=e,s.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=s.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,s.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,s.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&s.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){s.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(e);return{left:this.$padding+(this.session.$bidiHandler.isBidiRow(i.row,e.row)?this.session.$bidiHandler.getPosLeft(i.column):i.column*this.config.characterWidth),top:(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,i=0,n=0;void 0!==t&&0!==t.length||(t=[{cursor:null}]);i=0;for(var s=t.length;ie.height+e.offset||o.top<0)&&i>1)){var r=(this.cursors[n++]||this.addCursor()).style;this.drawCursor?this.drawCursor(r,o,e,t[i],this.session):(r.left=o.left+"px",r.top=o.top+"px",r.width=e.characterWidth+"px",r.height=e.lineHeight+"px")}}for(;this.cursors.length>n;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?s.addCssClass(this.element,"ace_overwrite-cursors"):s.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),s=e("./lib/dom"),o=e("./lib/event"),r=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=s.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=s.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){n.implement(this,r),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=s.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};n.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>32768?(this.coeff=32768/e,e=32768):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};n.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,i){"use strict";var n=e("./lib/event"),s=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;n.nextFrame(function(){var e;for(t.pending=!1;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(s.prototype),t.RenderLoop=s}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){var n=e("../lib/oop"),s=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e){this.el=s.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=s.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=s.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){n.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=s.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&t<1?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",r.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var t={height:e.height,width:e.width/l}}else t={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===t.width||0===t.height?null:t},this.$measureCharWidth=function(e){return this.$main.innerHTML=o.stringRepeat(e,l),this.$main.getBoundingClientRect().width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),s=e("./lib/dom"),o=e("./config"),r=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,u=e("./scrollbar").HScrollBar,d=e("./scrollbar").VScrollBar,g=e("./renderloop").RenderLoop,f=e("./layer/font_metrics").FontMetrics,m=e("./lib/event_emitter").EventEmitter;s.importCssString('.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_text-input-ios {position: absolute !important;top: -100000px !important;left: -100000px !important;}',"ace_editor.css");var p=function(e,t){var i=this;this.container=e||s.createElement("div"),this.$keepTextAreaAtCursor=!r.isOldIE,s.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=s.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=s.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=s.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var n=this.$textLayer=new c(this.content);this.canvas=n.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new d(this.container,this),this.scrollBarH=new u(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollTop(e.data-i.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollLeft(e.data-i.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new f(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){i.updateCharacterSize(),i.onResize(!0,i.gutterWidth,i.$size.width,i.$size.height),i._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new g(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,n.implement(this,m),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,i){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,i,n){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var s=this.container;n||(n=s.clientHeight||s.scrollHeight),i||(i=s.clientWidth||s.scrollWidth);var o=this.$updateCachedSize(e,t,i,n);if(!this.$size.scrollerHeight||!i&&!n)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(o|this.$changes,!0):this.$loop.schedule(o|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,i,n){n-=this.$extraHeight||0;var s=0,o=this.$size,r={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};return n&&(e||o.height!=n)&&(o.height=n,s|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",s|=this.CHANGE_SCROLL),i&&(e||o.width!=i)&&(s|=this.CHANGE_SIZE,o.width=i,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,i-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(s|=this.CHANGE_FULL)),o.$dirty=!i||!n,s&&this._signal("resize",r),s},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var i=this.session.selection.getCursor();i.column=0,e=this.$cursorLayer.getPixelPosition(i,!0),t*=this.session.getRowLength(i.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=s.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=s.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;t-=e.offset;var n=this.textarea.style,s=this.lineHeight;if(t<0||t>e.height-s)n.top=n.left="0";else{var o=this.characterWidth;if(this.$composition){var r=this.textarea.value.replace(/^\x01+/,"");o*=this.session.$getStringScreenWidth(r)[0]+2,s+=2}(i-=this.scrollLeft)>this.$size.scrollerWidth-o&&(i=this.$size.scrollerWidth-o),i+=this.gutterWidth,n.height=s+"px",n.width=o+"px",n.left=Math.min(i,this.$size.scrollerWidth-o)+"px",n.top=Math.min(t,this.$size.height-s)+"px"}}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow;return this.session.documentToScreenRow(t,0)*e.lineHeight-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,i,n){var s=this.scrollMargin;s.top=0|e,s.bottom=0|t,s.right=0|n,s.left=0|i,s.v=s.top+s.bottom,s.h=s.left+s.right,s.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-s.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(e||t)){if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender"),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var i=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),i.firstRow!=this.layerConfig.firstRow&&i.firstRowScreen==this.layerConfig.firstRowScreen){var n=this.scrollTop+(i.firstRow-this.layerConfig.firstRow)*this.lineHeight;n>0&&(this.scrollTop=n,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}i=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-i.offset+"px",this.content.style.marginTop=-i.offset+"px",this.content.style.width=i.width+2*this.$padding+"px",this.content.style.height=i.minHeight+"px"}if(e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL)return this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender");if(e&this.CHANGE_SCROLL)return e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(i):this.$textLayer.scrollLines(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender");e&this.CHANGE_TEXT?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(i):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(i),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(i),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(i),this._signal("afterRender")}else this.$changes|=e},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,i=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(i+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&i>this.$maxPixelHeight&&(i=this.$maxPixelHeight);var n=e>t;if(i!=this.desiredHeight||this.$size.height!=this.desiredHeight||n!=this.$vScroll){n!=this.$vScroll&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var s=this.container.clientWidth;this.container.style.height=i+"px",this.$updateCachedSize(!0,this.$gutterWidth,s,i),this.desiredHeight=i,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength()*this.lineHeight,s=this.$getLongestLine(),o=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),r=this.$horizScroll!==o;r&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var l=this.scrollTop%this.lineHeight,c=t.scrollerHeight+this.lineHeight,h=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;n+=h;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,n-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+u.right)));var d=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-n+h<0||this.scrollTop>u.top),g=a!==d;g&&(this.$vScroll=d,this.scrollBarV.setVisible(d));var f,m,p=Math.ceil(c/this.lineHeight)-1,A=Math.max(0,Math.round((this.scrollTop-l)/this.lineHeight)),C=A+p,v=this.lineHeight;A=e.screenToDocumentRow(A,0);var w=e.getFoldLine(A);w&&(A=w.start.row),f=e.documentToScreenRow(A,0),m=e.getRowLength(A)*v,C=Math.min(e.screenToDocumentRow(C,0),e.getLength()-1),c=t.scrollerHeight+e.getRowLength(C)*v+m,l=this.scrollTop-f*v;var F=0;return this.layerConfig.width!=s&&(F=this.CHANGE_H_SCROLL),(r||g)&&(F=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),g&&(s=this.$getLongestLine())),this.layerConfig={width:s,padding:this.$padding,firstRow:A,firstRowScreen:f,lastRow:C,lineHeight:v,characterWidth:this.characterWidth,minHeight:c,maxHeight:n,offset:l,gutterOffset:v?Math.max(0,Math.ceil((l+t.height-t.scrollerHeight)/v)):0,height:this.$size.scrollerHeight},F},this.$updateLines=function(){if(this.$changedLines){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var i=this.layerConfig;if(!(e>i.lastRow+1||to?(t&&l+r>o+this.lineHeight&&(o-=t*this.$size.scrollerHeight),0===o&&(o=-this.scrollMargin.top),this.session.setScrollTop(o)):l+this.$size.scrollerHeight-as?(s=1-this.scrollMargin.top||(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0)))},this.pixelToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=e+this.scrollLeft-i.left-this.$padding,s=n/this.characterWidth,o=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),r=Math.round(s);return{row:o,column:r,side:s-r>0?1:-1,offsetX:n}},this.screenToTextCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=e+this.scrollLeft-i.left-this.$padding,s=Math.round(n/this.characterWidth),o=(t+this.scrollTop-i.top)/this.lineHeight;return this.session.screenToDocumentPosition(o,Math.max(s,0),n)},this.textToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=this.session.documentToScreenPosition(e,t),s=this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e)?this.session.$bidiHandler.getPosLeft(n.column):Math.round(n.column*this.characterWidth)),o=n.row*this.lineHeight;return{pageX:i.left+s-this.scrollLeft,pageY:i.top+o-this.scrollTop}},this.visualizeFocus=function(){s.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){s.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,s.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(s.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){var i=this;if(this.$themeId=e,i._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)r(e);else{var n=e||this.$options.theme.initialValue;o.loadModule(["theme",n],r)}function r(n){if(i.$themeId!=e)return t&&t();if(!n||!n.cssClass)throw new Error("couldn't load module "+e+" or it didn't call define");s.importCssString(n.cssText,n.cssClass,i.container.ownerDocument),i.theme&&s.removeCssClass(i.container,i.theme.cssClass);var o="padding"in n?n.padding:"padding"in(i.theme||{})?4:i.$padding;i.$padding&&o!=i.$padding&&i.setPadding(o),i.$theme=n.cssClass,i.theme=n,s.addCssClass(i.container,n.cssClass),s.setCssClass(i.container,"ace_dark",n.isDark),i.$size&&(i.$size.width=0,i.$updateSizeAsync()),i._dispatchEvent("themeLoaded",{theme:n}),t&&t()}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){s.setCssClass(this.container,e,!1!==t)},this.unsetStyle=function(e){s.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(p.prototype),o.defineOptions(p.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){s.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight)return this.$gutterLineHighlight=s.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight);this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=p}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,i){"use strict";var n=e("../lib/oop"),s=e("../lib/net"),o=e("../lib/event_emitter").EventEmitter,r=e("../config");function a(e,t){var i=function(e,t){var i=t.src;s.qualifyURL(e);try{return new Blob([i],{type:"application/javascript"})}catch(e){var n=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder);return n.append(i),n.getBlob("application/javascript")}}(e,t),n=(window.URL||window.webkitURL).createObjectURL(i);return new Worker(n)}var l=function(t,i,n,s,o){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),r.get("packaged")||!e.toUrl)s=s||r.moduleUrl(i.id,"worker");else{var l=this.$normalizePath;s=s||l(e.toUrl("ace/worker/worker.js",null,"_"));var c={};t.forEach(function(t){c[t]=l(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}this.$worker=a(s,i),o&&this.send("importScripts",o),this.$worker.postMessage({init:!0,tlns:c,module:i.id,classname:n}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){n.implement(this,o),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var i=this.callbacks[t.id];i&&(i(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return s.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,i){if(i){var n=this.callbackId++;this.callbacks[n]=i,t.push(n)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(e){console.error(e.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))}}).call(l.prototype);var c=function(e,t,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var n=null,s=!1,a=Object.create(o),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),n&&(s?setTimeout(c):c())},this.setEmitSync=function(e){s=e};var c=function(){var e=l.messageBuffer.shift();e.command?n[e.command].apply(n,e.args):e.event&&a._signal(e.event,e.data)};a.postMessage=function(e){l.onMessage({data:e})},a.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},a.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},r.loadModule(["worker",t],function(e){for(n=new e[i](a);l.messageBuffer.length;)c()})};c.prototype=l.prototype,t.UIWorkerClient=c,t.WorkerClient=l,t.createWorker=a}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,i){"use strict";var n=e("./range").Range,s=e("./lib/event_emitter").EventEmitter,o=e("./lib/oop"),r=function(e,t,i,n,s,o){var r=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=s,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=n,this.$onCursorChange=function(){setTimeout(function(){r.onCursorChange()})},this.$pos=i;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,s),this.setup=function(){var e=this,t=this.doc,i=this.session;this.selectionBefore=i.selection.toJSON(),i.selection.inMultiSelectMode&&i.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var s=this.pos;s.$insertRight=!0,s.detach(),s.markerId=i.addMarker(new n(s.row,s.column,s.row,s.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);n.$insertRight=!0,n.detach(),e.others.push(n)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=e.addMarker(new n(i.row,i.column,i.row,i.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,o=t.start.column-this.pos.column;if(this.updateAnchors(e),s&&(this.length+=i),s&&!this.session.$fromUndo)if("insert"===e.action)for(var r=this.others.length-1;r>=0;r--){var a={row:(l=this.others[r]).row,column:l.column+o};this.doc.insertMergedLines(a,e.lines)}else if("remove"===e.action)for(r=this.others.length-1;r>=0;r--){var l;a={row:(l=this.others[r]).row,column:l.column+o};this.doc.remove(new n(a.row,a.column,a.row,a.column-i))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,i=function(i,s){t.removeMarker(i.markerId),i.markerId=t.addMarker(new n(i.row,i.column,i.row,i.column+e.length),s,null,!1)};i(this.pos,this.mainClass);for(var s=this.others.length;s--;)i(this.others[s],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,i=0;i1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var i=e.length;i--;){var n=this.ranges.indexOf(e[i]);this.ranges.splice(n,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new n,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=s.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{i=this.getRange();var n=this.isBackwards(),o=i.start.row,r=i.end.row;if(o==r){if(n)var a=i.end,l=i.start;else a=i.start,l=i.end;return this.addRange(s.fromPoints(l,l)),void this.addRange(s.fromPoints(a,a))}var c=[],h=this.getLineRange(o,!0);h.start.column=i.start.column,c.push(h);for(var u=o+1;u1){var e=this.rangeList.ranges,t=e[e.length-1],i=s.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var n=this.session.documentToScreenPosition(this.selectionLead),o=this.session.documentToScreenPosition(this.selectionAnchor);this.rectangularRangeBlock(n,o).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,i){var n=[],o=e.column0;)A--;if(A>0)for(var C=0;n[C].isEmpty();)C++;for(var v=A;v>=C;v--)n[v].isEmpty()&&n.splice(v,1)}return n}}.call(o.prototype);var d=e("./editor").Editor;function g(e,t){return e.row==t.row&&e.column==t.column}function f(e){e.$multiselectOnSessionChange||(e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",r),e.commands.addCommands(c.defaultCommands),function(e){var t=e.textInput.getElement(),i=!1;function n(t){i&&(e.renderer.setMouseCursor(""),i=!1)}a.addListener(t,"keydown",function(t){var s=18==t.keyCode&&!(t.ctrlKey||t.shiftKey||t.metaKey);e.$blockSelectEnabled&&s?i||(e.renderer.setMouseCursor("crosshair"),i=!0):i&&n()}),a.addListener(t,"keyup",n),a.addListener(t,"blur",n)}(e))}(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,i=e.length;i--;){var n=e[i];if(n.marker){this.session.removeMarker(n.marker);var s=t.indexOf(n);-1!=s&&t.splice(s,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(c.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(c.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,i=e.editor;if(i.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?n=i.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?n=i.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(i.exitMultiSelectMode(),n=t.exec(i,e.args||{})):n=t.multiSelectAction(i,e.args||{});else{var n=t.exec(i,e.args||{});i.multiSelect.addRange(i.multiSelect.toOrientedRange()),i.multiSelect.mergeOverlappingRanges()}return n}},this.forEachSelection=function(e,t,i){if(!this.inVirtualSelectionMode){var n,s=i&&i.keepOrder,r=1==i||i&&i.$byLines,a=this.session,l=this.selection,c=l.rangeList,h=(s?l:c).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var u=l._eventRegistry;l._eventRegistry={};var d=new o(a);this.inVirtualSelectionMode=!0;for(var g=h.length;g--;){if(r)for(;g>0&&h[g].start.row==h[g-1].end.row;)g--;d.fromOrientedRange(h[g]),d.index=g,this.selection=a.selection=d;var f=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===f||(n=f),d.toOrientedRange(h[g])}d.detach(),this.selection=a.selection=l,this.inVirtualSelectionMode=!1,l._eventRegistry=u,l.mergeOverlappingRanges();var m=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),m&&m.from==m.to&&this.renderer.animateScrolling(m.from),n}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,i=[],n=0;nr&&(r=i.column),nh?e.insert(n,l.stringRepeat(" ",o-h)):e.remove(new s(n.row,n.column,n.row,n.column-o+h)),t.start.column=t.end.column=r,t.start.row=t.end.row=n.row,t.cursor=t.end}),t.fromOrientedRange(i[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var h=this.selection.getRange(),u=h.start.row,d=h.end.row,g=u==d;if(g){var f,m=this.session.getLength();do{f=this.session.getLine(d)}while(/[=:]/.test(f)&&++d0);u<0&&(u=0),d>=m&&(d=m-1)}var p=this.session.removeFullLines(u,d);p=this.$reAlignText(p,g),this.session.insert({row:u,column:0},p.join("\n")+"\n"),g||(h.start.column=0,h.end.column=p[p.length-1].length),this.selection.setRange(h)}},this.$reAlignText=function(e,t){var i,n,s,o=!0,r=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==i?(i=t[1].length,n=t[2].length,s=t[3].length,t):(i+n+s!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(o=!1),i>t[1].length&&(i=t[1].length),nt[3].length&&(s=t[3].length),t):[e]}).map(t?c:o?r?function(e){return e[2]?a(i+n-e[2].length)+e[2]+a(s)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}:c:function(e){return e[2]?a(i)+e[2]+a(s)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]});function a(e){return l.stringRepeat(" ",e)}function c(e){return e[2]?a(i)+e[2]+a(n-e[2].length+s)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var i=e.oldSession;i&&(i.multiSelect.off("addRange",this.$onAddRange),i.multiSelect.off("removeRange",this.$onRemoveRange),i.multiSelect.off("multiSelect",this.$onMultiSelect),i.multiSelect.off("singleSelect",this.$onSingleSelect),i.multiSelect.lead.off("change",this.$checkMultiselectChange),i.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=f,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){f(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",r)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",r))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../../range").Range,s=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);return this.foldingStartMarker.test(n)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(e,t,i){return null},this.indentationBlock=function(e,t,i){var s=/\S/,o=e.getLine(t),r=o.search(s);if(-1!=r){for(var a=i||o.length,l=e.getLength(),c=t,h=t;++tc){var d=e.getLine(h).length;return new n(c,a,h,d)}}},this.openingBracketBlock=function(e,t,i,s,o){var r={row:i,column:s+1},a=e.$findClosingBracket(t,r,o);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>r.row&&(a.row--,a.column=e.getLine(a.row).length),n.fromPoints(r,a)}},this.closingBracketBlock=function(e,t,i,s,o){var r={row:i,column:s},a=e.$findOpeningBracket(t,r);if(a)return a.column++,r.column--,n.fromPoints(a,r)}}).call(s.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',e("../lib/dom").importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,i){"use strict";e("./lib/oop");var n=e("./lib/dom");e("./range").Range;function s(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets&&this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var i=this.session.lineWidgets;i&&i.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var i=t.lineWidgets;if(i&&e.action){for(var n=e.data,s=n.start.row,o=n.end.row,r="add"==e.action,a=s+1;a0&&!n[s];)s--;this.firstRow=i.firstRow,this.lastRow=i.lastRow,t.$cursorLayer.config=i;for(var r=s;r<=o;r++){var a=n[r];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:r,column:0},!0).top;a.coverLine||(l+=i.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-i.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=i.width+2*i.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(s.prototype),t.LineWidgets=s}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,i){"use strict";var n=e("../line_widgets").LineWidgets,s=e("../lib/dom"),o=e("../range").Range;t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new n(i),i.widgetManager.attach(e));var r=e.getCursorPosition(),a=r.row,l=i.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=function(e,t,i){var n=e.getAnnotations().sort(o.comparePoints);if(n.length){var s=function(e,t,i){for(var n=0,s=e.length-1;n<=s;){var o=n+s>>1,r=i(t,e[o]);if(r>0)n=o+1;else{if(!(r<0))return o;s=o-1}}return-(n+1)}(n,{row:t,column:-1},o.comparePoints);s<0&&(s=-s-1),s>=n.length?s=i>0?0:n.length-1:0===s&&i<0&&(s=n.length-1);var r=n[s];if(r&&i){if(r.row===t){do{r=n[s+=i]}while(r&&r.row===t);if(!r)return n.slice()}var a=[];t=r.row;do{a[i<0?"unshift":"push"](r),r=n[s+=i]}while(r&&r.row==t);return a.length&&a}}}(i,a,t);if(h){var u=h[0];r.column=(u.pos&&"number"!=typeof u.column?u.pos.sc:u.column)||0,r.row=u.row,c=e.renderer.$gutterLayer.$annotations[r.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(r.row),e.selection.moveToPosition(r);var d={row:r.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},g=d.el.appendChild(s.createElement("div")),f=d.el.appendChild(s.createElement("div"));f.className="error_widget_arrow "+c.className;var m=e.renderer.$cursorLayer.getPixelPosition(r).left;f.style.left=m+e.renderer.gutterWidth-5+"px",d.el.className="error_widget_wrapper",g.className="error_widget "+c.className,g.innerHTML=c.text.join("
"),g.appendChild(s.createElement("div"));var p=function(e,t,i){if(0===t&&("esc"===i||"return"===i))return d.destroy(),{command:"null"}};d.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(p),i.widgetManager.removeLineWidget(d),e.off("changeSelection",d.destroy),e.off("changeSession",d.destroy),e.off("mouseup",d.destroy),e.off("change",d.destroy))},e.keyBinding.addKeyboardHandler(p),e.on("changeSelection",d.destroy),e.on("changeSession",d.destroy),e.on("mouseup",d.destroy),e.on("change",d.destroy),e.session.widgetManager.addLineWidget(d),d.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:d.el.offsetHeight})},s.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var s=e("./lib/dom"),o=e("./lib/event"),r=e("./editor").Editor,a=e("./edit_session").EditSession,l=e("./undomanager").UndoManager,c=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.define=i("B9Yq"),t.edit=function(e){if("string"==typeof e){var i=e;if(!(e=document.getElementById(i)))throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof r)return e.env.editor;var n="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;n=a.value,e=s.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(n=s.getInnerText(e),e.innerHTML="");var l=t.createEditSession(n),h=new r(new c(e));h.setSession(l);var u={document:l,editor:h,onResize:h.resize.bind(h,null)};return a&&(u.textarea=a),o.addListener(window,"resize",u.onResize),h.on("destroy",function(){o.removeListener(window,"resize",u.onResize),u.editor.container.env=null}),h.container.env=h.env=u,h},t.createEditSession=function(e,t){var i=new a(e,t);return i.setUndoManager(new l),i},t.EditSession=a,t.UndoManager=l,t.version="1.2.9"}),ace.acequire(["ace/ace"],function(e){for(var t in e&&(e.config.init(!0),e.define=ace.define),window.ace||(window.ace=e),e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])}),e.exports=window.ace.acequire("ace/ace")},Lrpg:function(e,t){!function(e){function t(n){if(i[n])return i[n].exports;var s=i[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,t),s.l=!0,s.exports}var i={};t.m=e,t.c=i,t.d=function(e,i,n){t.o(e,i)||Object.defineProperty(e,i,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,"a",i),i},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t,i){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=!0,o=!1,r=["scroll","wheel","touchstart","touchmove","touchenter","touchend","touchleave","mouseout","mouseleave","mouseup","mousedown","mousemove","mouseenter","mousewheel","mouseover"],a=function(e,t){return void 0!==e?e:-1!==r.indexOf(t)&&s};(0,i(1).eventListenerOptionsSupported)()&&function(e){EventTarget.prototype.addEventListener=function(t,i,s){var r="object"===(void 0===s?"undefined":n(s))&&null!==s,l=r?s.capture:s;(s=r?function(e){var t=Object.getOwnPropertyDescriptor(e,"passive");return t&&!0!==t.writable&&void 0===t.set?Object.assign({},e):e}(s):{}).passive=a(s.passive,t),s.capture=void 0===l?o:l,e.call(this,t,i,s)},EventTarget.prototype.addEventListener._original=e}(EventTarget.prototype.addEventListener)},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.eventListenerOptionsSupported=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}}])},fJ7X:function(e,t,i){var n=i("Bhyg");e.exports={render:function(e){return e("div",{attrs:{style:"height: "+(this.height?this.px(this.height):"100%")+"; width: "+(this.width?this.px(this.width):"100%")}})},props:{value:{type:String,required:!0},lang:String,theme:String,height:!0,width:!0,options:Object},data:function(){return{editor:null,contentBackup:""}},methods:{px:function(e){return/^\d*$/.test(e)?e+"px":e}},watch:{value:function(e){this.contentBackup!==e&&(this.editor.session.setValue(e,1),this.contentBackup=e)},theme:function(e){this.editor.setTheme("ace/theme/"+e)},lang:function(e){this.editor.getSession().setMode("ace/mode/"+e)},options:function(e){this.editor.setOptions(e)},height:function(){this.$nextTick(function(){this.editor.resize()})},width:function(){this.$nextTick(function(){this.editor.resize()})}},beforeDestroy:function(){this.editor.destroy(),this.editor.container.remove()},mounted:function(){var e=this,t=this.lang||"text",s=this.theme||"chrome";i("s3h0");var o=e.editor=n.edit(this.$el);this.$emit("init",o),o.$blockScrolling=1/0,o.getSession().setMode("ace/mode/"+t),o.setTheme("ace/theme/"+s),o.setValue(this.value,1),this.contentBackup=this.value,o.on("change",function(){var t=o.getValue();e.$emit("input",t),e.contentBackup=t}),e.options&&o.setOptions(e.options)}}},nBvS:function(e,t){ace.define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,i){"use strict";var n=e("../lib/oop"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:["meta.module.elixir","keyword.control.module.elixir","meta.module.elixir","entity.name.type.module.elixir"],regex:"^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc (?:~[a-z])?"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc ~[A-Z]"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc (?:~[a-z])?'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc ~[A-Z]'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.false",regex:"@(?:module|type)?doc false",comment:"@doc false is treated as documentation"},{token:"comment.documentation.string",regex:'@(?:module|type)?doc "',push:[{token:"comment.documentation.string",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.string"}],comment:"@doc with string is treated as documentation"},{token:"keyword.control.elixir",regex:"\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|acequire|alias|use|quote|unquote|super)\\b(?![?!])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b"},{token:"punctuation.definition.constant.elixir",regex:":'",push:[{token:"punctuation.definition.constant.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.single-quoted.elixir"}]},{token:"punctuation.definition.constant.elixir",regex:':"',push:[{token:"punctuation.definition.constant.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.double-quoted.elixir"}]},{token:"punctuation.definition.string.begin.elixir",regex:"(?:''')",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>''')",push:[{token:"punctuation.definition.string.end.elixir",regex:"^\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.heredoc.elixir"}],comment:"Single-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:"'",push:[{token:"punctuation.definition.string.end.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.elixir"}],comment:"single quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'(?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'(?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:'"',push:[{token:"punctuation.definition.string.end.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.elixir"}],comment:"double quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[a-z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[a-z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[A-Z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[A-Z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:["punctuation.definition.constant.elixir","constant.other.symbol.elixir"],regex:"(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",comment:"symbols"},{token:"punctuation.definition.constant.elixir",regex:"(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",comment:"symbols"},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(#)(.*)"},{token:"constant.numeric.elixir",regex:"\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?=?"},{token:"keyword.operator.bitwise.elixir",regex:"\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}"},{token:"keyword.operator.logical.elixir",regex:"!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",originalRegex:"(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b"},{token:"keyword.operator.arithmetic.elixir",regex:"\\*|\\+|\\-|/"},{token:"keyword.operator.other.elixir",regex:"\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>"},{token:"keyword.operator.assignment.elixir",regex:"="},{token:"punctuation.separator.other.elixir",regex:":"},{token:"punctuation.separator.statement.elixir",regex:"\\;"},{token:"punctuation.separator.object.elixir",regex:","},{token:"punctuation.separator.method.elixir",regex:"\\."},{token:"punctuation.section.scope.elixir",regex:"\\{|\\}"},{token:"punctuation.section.array.elixir",regex:"\\[|\\]"},{token:"punctuation.section.function.elixir",regex:"\\(|\\)"}],"#escaped_char":[{token:"constant.character.escape.elixir",regex:"\\\\(?:x[\\da-fA-F]{1,2}|.)"}],"#interpolated_elixir":[{token:["source.elixir.embedded.source","source.elixir.embedded.source.empty"],regex:"(#\\{)(\\})"},{todo:{token:"punctuation.section.embedded.elixir",regex:"#\\{",push:[{token:"punctuation.section.embedded.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"},{include:"$self"},{defaultToken:"source.elixir.embedded.source"}]}}],"#nest_curly_and_self":[{token:"punctuation.section.scope.elixir",regex:"\\{",push:[{token:"punctuation.section.scope.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"}]},{include:"$self"}],"#regex_sub":[{include:"#interpolated_elixir"},{include:"#escaped_char"},{token:["punctuation.definition.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","punctuation.definition.arbitrary-repitition.elixir"],regex:"(\\{)(\\d+)((?:,\\d+)?)(\\})"},{token:"punctuation.definition.character-class.elixir",regex:"\\[(?:\\^?\\])?",push:[{token:"punctuation.definition.character-class.elixir",regex:"\\]",next:"pop"},{include:"#escaped_char"},{defaultToken:"string.regexp.character-class.elixir"}]},{token:"punctuation.definition.group.elixir",regex:"\\(",push:[{token:"punctuation.definition.group.elixir",regex:"\\)",next:"pop"},{include:"#regex_sub"},{defaultToken:"string.regexp.group.elixir"}]},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)",originalRegex:"(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",comment:"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags."}]},this.normalizeRules()};o.metaData={comment:"Textmate bundle for Elixir Programming Language.",fileTypes:["ex","exs"],firstLineMatch:"^#!/.*\\belixir",foldingStartMarker:"(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",foldingStopMarker:"^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",keyEquivalent:"^~E",name:"Elixir",scopeName:"source.elixir"},n.inherits(o,s),t.ElixirHighlightRules=o}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,i){"use strict";var n=e("../../lib/oop"),s=e("./fold_mode").FoldMode,o=e("../../range").Range,r=t.FoldMode=function(){};n.inherits(r,s),function(){this.getFoldWidgetRange=function(e,t,i){var n=this.indentationBlock(e,i);if(n)return n;var s=/\S/,r=e.getLine(i),a=r.search(s);if(-1!=a&&"#"==r[a]){for(var l=r.length,c=e.getLength(),h=i,u=i;++ih){var g=e.getLine(u).length;return new o(h,l,u,g)}}},this.getFoldWidget=function(e,t,i){var n=e.getLine(i),s=n.search(/\S/),o=e.getLine(i+1),r=e.getLine(i-1),a=r.search(/\S/),l=o.search(/\S/);if(-1==s)return e.foldWidgets[i-1]=-1!=a&&a"a"})),[e]}},{regex:/}/,onMatch:function(e,t,i){return[i.length?i.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,i,n){var s=e(t.substr(1),0,n);return n.unshift(s[0]),s},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,i){i[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,i){var n=i[0];return n.fmtString=e,e=this.splitRegex.exec(e),n.guard=e[1],n.fmt=e[2],n.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,i){return i[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,i){i[0]&&(i[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,i){i.inFormatString=!0},next:"start"}]}),u.prototype.getTokenizer=function(){return u.$tokenizer},u.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var i=t.substr(1);return(this.variables[t[0]+"__"]||{})[i]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];if(t=t.replace(/^TM_/,""),e){var n=e.session;switch(t){case"CURRENT_WORD":var s=n.getWordRange();case"SELECTION":case"SELECTED_TEXT":return n.getTextRange(s);case"CURRENT_LINE":return n.getLine(e.getCursorPosition().row);case"PREV_LINE":return n.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return n.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return n.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,i){var n=t.flag||"",s=t.guard;s=new RegExp(s,n.replace(/[^gi]/,""));var o=this.tokenizeTmSnippet(t.fmt,"formatString"),r=this,a=e.replace(s,function(){r.variables.__=arguments;for(var e=r.resolveVariables(o,i),t="E",n=0;n1?(C=t[t.length-1].length,A+=t.length-1):C+=e.length,v+=e}else e.start?e.end={row:A,column:C}:e.start={row:A,column:C}});var w=e.getSelectionRange(),F=e.session.replace(w,v),E=new d(e),b=e.inVirtualSelectionMode&&e.selection.index;E.addTabstops(a,w.start,F,b)},this.insertSnippet=function(e,t){var i=this;if(e.inVirtualSelectionMode)return i.insertSnippetForSelection(e,t);e.forEachSelection(function(){i.insertSnippetForSelection(e,t)},null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},this.$getScope=function(e){var t=e.session.$mode.$id||"";if("html"===(t=t.split("/").pop())||"php"===t){"php"!==t||e.session.$mode.inlinePhp||(t="html");var i=e.getCursorPosition(),n=e.session.getState(i.row);"object"==typeof n&&(n=n[0]),n.substring&&("js-"==n.substring(0,3)?t="javascript":"css-"==n.substring(0,4)?t="css":"php-"==n.substring(0,4)&&(t="php"))}return t},this.getActiveScopes=function(e){var t=this.$getScope(e),i=[t],n=this.snippetMap;return n[t]&&n[t].includeScopes&&i.push.apply(i,n[t].includeScopes),i.push("_"),i},this.expandWithTab=function(e,t){var i=this,n=e.forEachSelection(function(){return i.expandSnippetForSelection(e,t)},null,{keepOrder:!0});return n&&e.tabstopManager&&e.tabstopManager.tabNext(),n},this.expandSnippetForSelection=function(e,t){var i,n=e.getCursorPosition(),s=e.session.getLine(n.row),o=s.substring(0,n.column),r=s.substr(n.column),a=this.snippetMap;return this.getActiveScopes(e).some(function(e){var t=a[e];return t&&(i=this.findMatchingSnippet(t,o,r)),!!i},this),!!i&&(!(!t||!t.dryRun)||(e.session.doc.removeInLine(n.row,n.column-i.replaceBefore.length,n.column+i.replaceAfter.length),this.variables.M__=i.matchBefore,this.variables.T__=i.matchAfter,this.insertSnippetForSelection(e,i.content),this.variables.M__=this.variables.T__=null,!0))},this.findMatchingSnippet=function(e,t,i){for(var n=e.length;n--;){var s=e[n];if((!s.startRe||s.startRe.test(t))&&((!s.endRe||s.endRe.test(i))&&(s.startRe||s.endRe)))return s.matchBefore=s.startRe?s.startRe.exec(t):[""],s.matchAfter=s.endRe?s.endRe.exec(i):[""],s.replaceBefore=s.triggerRe?s.triggerRe.exec(t)[0]:"",s.replaceAfter=s.endTriggerRe?s.endTriggerRe.exec(i)[0]:"",s}},this.snippetMap={},this.snippetNameMap={},this.register=function(e,t){var i=this.snippetMap,n=this.snippetNameMap,s=this;function r(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")"),e||""}function a(e,t,i){return e=r(e),t=r(t),i?(e=t+e)&&"$"!=e[e.length-1]&&(e+="$"):(e+=t)&&"^"!=e[0]&&(e="^"+e),new RegExp(e)}function l(e){e.scope||(e.scope=t||"_"),t=e.scope,i[t]||(i[t]=[],n[t]={});var r=n[t];if(e.name){var l=r[e.name];l&&s.unregister(l),r[e.name]=e}i[t].push(e),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=o.escapeRegExp(e.tabTrigger)),(e.trigger||e.guard||e.endTrigger||e.endGuard)&&(e.startRe=a(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger,"",!0),e.endRe=a(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger,"",!0))}e||(e=[]),e&&e.content?l(e):Array.isArray(e)&&e.forEach(l),this._signal("registerSnippets",{scope:t})},this.unregister=function(e,t){var i=this.snippetMap,n=this.snippetNameMap;function s(e){var s=n[e.scope||t];if(s&&s[e.name]){delete s[e.name];var o=i[e.scope||t],r=o&&o.indexOf(e);r>=0&&o.splice(r,1)}}e.content?s(e):Array.isArray(e)&&e.forEach(s)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");for(var t,i=[],n={},s=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm;t=s.exec(e);){if(t[1])try{n=JSON.parse(t[1]),i.push(n)}catch(e){}if(t[4])n.content=t[4].replace(/^\t/gm,""),i.push(n),n={};else{var o=t[2],r=t[3];if("regex"==o){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(r)[1],n.trigger=a.exec(r)[1],n.endTrigger=a.exec(r)[1],n.endGuard=a.exec(r)[1]}else"snippet"==o?(n.tabTrigger=r.match(/^\S*/)[0],n.name||(n.name=r)):n[o]=r}}return i},this.getSnippetByName=function(e,t){var i,n=this.snippetNameMap;return this.getActiveScopes(t).some(function(t){var s=n[t];return s&&(i=s[e]),!!i},this),i}}).call(u.prototype);var d=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=o.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t="r"==e.action[0],i=e.start,n=e.end,s=i.row,o=n.row-s,r=n.column-i.column;if(t&&(o=-o,r=-r),!this.$inChange&&t){var a=this.selectedTabstop;if(a&&!a.some(function(e){return h(e.start,i)<=0&&h(e.end,n)>=0}))return this.detach()}for(var l=this.ranges,c=0;c0?(this.removeRange(u),c--):(u.start.row==s&&u.start.column>i.column&&(u.start.column+=r),u.end.row==s&&u.end.column>=i.column&&(u.end.column+=r),u.start.row>=s&&(u.start.row+=o),u.end.row>=s&&(u.end.row+=o),h(u.start,u.end)>0&&this.removeRange(u)))}l.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(e&&e.hasLinkedRanges){this.$inChange=!0;for(var i=this.editor.session,n=i.getTextRange(e.firstNonLinked),s=e.length;s--;){var o=e[s];if(o.linked){var r=t.snippetManager.tmStrFormat(n,o.original);i.replace(o,r)}}this.$inChange=!1}},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(this.editor){for(var e=this.editor.selection.lead,t=this.editor.selection.anchor,i=this.editor.selection.isEmpty(),n=this.ranges.length;n--;)if(!this.ranges[n].linked){var s=this.ranges[n].contains(e.row,e.column),o=i||this.ranges[n].contains(t.row,t.column);if(s&&o)return}this.detach()}},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,i=this.index+(e||1);(i=Math.min(Math.max(i,1),t))==t&&(i=0),this.selectTabstop(i),0===i&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];if(t&&this.addTabstopMarkers(t),this.index=e,(t=this.tabstops[this.index])&&t.length){if(this.selectedTabstop=t,this.editor.inVirtualSelectionMode)this.editor.selection.setRange(t.firstNonLinked);else{var i=this.editor.multiSelect;i.toSingleRange(t.firstNonLinked.clone());for(var n=t.length;n--;)t.hasLinkedRanges&&t[n].linked||i.addRange(t[n].clone(),!0);i.ranges[0]&&i.addRange(i.ranges[0].clone())}this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)}},this.addTabstops=function(e,t,i){if(this.$openTabstops||(this.$openTabstops=[]),!e[0]){var n=r.fromPoints(i,i);m(n.start,t),m(n.end,t),e[0]=[n],e[0].index=0}var s=[this.index+1,0],o=this.ranges;e.forEach(function(e,i){for(var n=this.$openTabstops[i]||e,a=e.length;a--;){var l=e[a],c=r.fromPoints(l.start,l.end||l.start);f(c.start,t),f(c.end,t),c.original=l,c.tabstop=n,o.push(c),n!=e?n.unshift(c):n[a]=c,l.fmtString?(c.linked=!0,n.hasLinkedRanges=!0):n.firstNonLinked||(n.firstNonLinked=c)}n.firstNonLinked||(n.hasLinkedRanges=!1),n===e&&(s.push(n),this.$openTabstops[i]=n),this.addTabstopMarkers(n)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(-1!=(t=this.tabstops.indexOf(e.tabstop))&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new l,this.keyboardHandler.bindKeys({Tab:function(e){t.snippetManager&&t.snippetManager.expandWithTab(e)||e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(d.prototype);var g={};g.onChange=a.prototype.onChange,g.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},g.update=function(e,t,i){this.$insertRight=i,this.pos=e,this.onChange(t)};var f=function(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row},m=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new u;var p=e("./editor").Editor;(function(){this.insertSnippet=function(e,i){return t.snippetManager.insertSnippet(this,e,i)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(p.prototype)}),ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","tabStops","resources","utils","actions","ace/config","ace/config"],function(e,t,i){"use strict";var n,s,o=e("ace/keyboard/hash_handler").HashHandler,r=e("ace/editor").Editor,a=e("ace/snippets").snippetManager,l=e("ace/range").Range;function c(){}c.prototype={setupContext:function(e){this.ace=e,this.indentation=e.session.getTabString(),n||(n=window.emmet),(n.resources||n.require("resources")).setVariable("indentation",this.indentation),this.$syntax=null,this.$syntax=this.getSyntax()},getSelectionRange:function(){var e=this.ace.getSelectionRange(),t=this.ace.session.doc;return{start:t.positionToIndex(e.start),end:t.positionToIndex(e.end)}},createSelection:function(e,t){var i=this.ace.session.doc;this.ace.selection.setRange({start:i.indexToPosition(e),end:i.indexToPosition(t)})},getCurrentLineRange:function(){var e=this.ace,t=e.getCursorPosition().row,i=e.session.getLine(t).length,n=e.session.doc.positionToIndex({row:t,column:0});return{start:n,end:n+i}},getCaretPos:function(){var e=this.ace.getCursorPosition();return this.ace.session.doc.positionToIndex(e)},setCaretPos:function(e){var t=this.ace.session.doc.indexToPosition(e);this.ace.selection.moveToPosition(t)},getCurrentLine:function(){var e=this.ace.getCursorPosition().row;return this.ace.session.getLine(e)},replaceContent:function(e,t,i,n){null==i&&(i=null==t?this.getContent().length:t),null==t&&(t=0);var s=this.ace,o=s.session.doc,r=l.fromPoints(o.indexToPosition(t),o.indexToPosition(i));s.session.remove(r),r.end=r.start,e=this.$updateTabstops(e),a.insertSnippet(s,e)},getContent:function(){return this.ace.getValue()},getSyntax:function(){if(this.$syntax)return this.$syntax;var e=this.ace.session.$modeId.split("/").pop();if("html"==e||"php"==e){var t=this.ace.getCursorPosition(),i=this.ace.session.getState(t.row);"string"!=typeof i&&(i=i[0]),i&&((i=i.split("-")).length>1?e=i[0]:"php"==e&&(e="html"))}return e},getProfileName:function(){var e=n.resources||n.require("resources");switch(this.getSyntax()){case"css":return"css";case"xml":case"xsl":return"xml";case"html":var t=e.getVariable("profile");return t||(t=-1!=this.ace.session.getLines(0,2).join("").search(/]+XHTML/i)?"xhtml":"html"),t;default:var i=this.ace.session.$mode;return i.emmetConfig&&i.emmetConfig.profile||"xhtml"}},prompt:function(e){return prompt(e)},getSelection:function(){return this.ace.session.getTextRange()},getFilePath:function(){return""},$updateTabstops:function(e){var t=0,i=null,s=n.tabStops||n.require("tabStops"),o=(n.resources||n.require("resources")).getVocabulary("user"),r={tabstop:function(e){var n=parseInt(e.group,10),o=0===n;o?n=++t:n+=1e3;var a=e.placeholder;a&&(a=s.processText(a,r));var l="${"+n+(a?":"+a:"")+"}";return o&&(i=[e.start,l]),l},escape:function(e){return"$"==e?"\\$":"\\"==e?"\\\\":e}};if(e=s.processText(e,r),o.variables.insert_final_tabstop&&!/\$\{0\}$/.test(e))e+="${0}";else if(i){e=(n.utils?n.utils.common:n.require("utils")).replaceSubstring(e,"${0}",i[0],i[1])}return e}};var h={expand_abbreviation:{mac:"ctrl+alt+e",win:"alt+e"},match_pair_outward:{mac:"ctrl+d",win:"ctrl+,"},match_pair_inward:{mac:"ctrl+j",win:"ctrl+shift+0"},matching_pair:{mac:"ctrl+alt+j",win:"alt+j"},next_edit_point:"alt+right",prev_edit_point:"alt+left",toggle_comment:{mac:"command+/",win:"ctrl+/"},split_join_tag:{mac:"shift+command+'",win:"shift+ctrl+`"},remove_tag:{mac:"command+'",win:"shift+ctrl+;"},evaluate_math_expression:{mac:"shift+command+y",win:"shift+ctrl+y"},increment_number_by_1:"ctrl+up",decrement_number_by_1:"ctrl+down",increment_number_by_01:"alt+up",decrement_number_by_01:"alt+down",increment_number_by_10:{mac:"alt+command+up",win:"shift+alt+up"},decrement_number_by_10:{mac:"alt+command+down",win:"shift+alt+down"},select_next_item:{mac:"shift+command+.",win:"shift+ctrl+."},select_previous_item:{mac:"shift+command+,",win:"shift+ctrl+,"},reflect_css_value:{mac:"shift+command+r",win:"shift+ctrl+r"},encode_decode_data_url:{mac:"shift+ctrl+d",win:"ctrl+'"},expand_abbreviation_with_tab:"Tab",wrap_with_abbreviation:{mac:"shift+ctrl+a",win:"shift+ctrl+a"}},u=new c;for(var d in t.commands=new o,t.runEmmetCommand=function e(t){try{u.setupContext(t);var i=n.actions||n.require("actions");if("expand_abbreviation_with_tab"==this.action){if(!t.selection.isEmpty())return!1;var s=t.selection.lead,o=t.session.getTokenAt(s.row,s.column);if(o&&/\btag\b/.test(o.type))return!1}if("wrap_with_abbreviation"==this.action)return setTimeout(function(){i.run("wrap_with_abbreviation",u)},0);var r=i.run(this.action,u)}catch(i){if(!n)return f(e.bind(this,t)),!0;t._signal("changeStatus","string"==typeof i?i:i.message),console.log(i),r=!1}return r},h)t.commands.addCommand({name:"emmet:"+d,action:d,bindKey:h[d],exec:t.runEmmetCommand,multiSelectAction:"forEach"});t.updateCommands=function(e,i){i?e.keyBinding.addKeyboardHandler(t.commands):e.keyBinding.removeKeyboardHandler(t.commands)},t.isSupportedMode=function(e){if(!e)return!1;if(e.emmetConfig)return!0;var t=e.$id||e;return/css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(t)},t.isAvailable=function(e,i){if(/(evaluate_math_expression|expand_abbreviation)$/.test(i))return!0;var n=e.session.$mode,s=t.isSupportedMode(n);if(s&&n.$modes)try{u.setupContext(e),/js|php/.test(u.getSyntax())&&(s=!1)}catch(e){}return s};var g=function(e,i){var n=i;if(n){var s=t.isSupportedMode(n.session.$mode);!1===e.enableEmmet&&(s=!1),s&&f(),t.updateCommands(n,s)}},f=function(t){"string"==typeof s&&e("ace/config").loadModule(s,function(){s=null,t&&t()})};t.AceEmmetEditor=c,e("ace/config").defineOptions(r.prototype,"editor",{enableEmmet:{set:function(e){this[e?"on":"removeListener"]("changeMode",g),g({enableEmmet:!!e},this)},value:!0}}),t.setCore=function(e){"string"==typeof e?s=e:n=e}}),ace.acequire(["ace/ext/emmet"],function(){})}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-7fe2"],{B9Yq:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},Bhyg:function(e,t,i){!function(){var e=function(){return this}();e||"undefined"==typeof window||(e=window);var t=function(e,i,n){"string"==typeof e?(2==arguments.length&&(n=i),t.modules[e]||(t.payloads[e]=n,t.modules[e]=null)):t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace())};t.modules={},t.payloads={};var i=function(e,t,i){if("string"==typeof t){var s=o(e,t);if(void 0!=s)return i&&i(),s}else if("[object Array]"===Object.prototype.toString.call(t)){for(var r=[],a=0,l=t.length;a1&&function(e,t,i){if(Array.prototype.indexOf)return e.indexOf(t,i);for(var n=i||0;n-1&&(i=RegExp(this.source,n.replace.call(function(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}(this),"g","")),n.replace.call(e.slice(r.index),i,function(){for(var e=1;er.index&&this.lastIndex--}return r},o||(RegExp.prototype.test=function(e){var t=n.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t}))}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,i){function n(){}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if("function"!=typeof t)throw new TypeError("Function.prototype.bind called on incompatible "+t);var i=d.call(arguments,1),s=function(){if(this instanceof s){var n=t.apply(this,i.concat(d.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(d.call(arguments)))};return t.prototype&&(n.prototype=t.prototype,s.prototype=new n,n.prototype=null),s});var s,o,r,a,l,c=Function.prototype.call,h=Array.prototype,u=Object.prototype,d=h.slice,g=c.bind(u.toString),f=c.bind(u.hasOwnProperty);if((l=f(u,"__defineGetter__"))&&(s=c.bind(u.__defineGetter__),o=c.bind(u.__defineSetter__),r=c.bind(u.__lookupGetter__),a=c.bind(u.__lookupSetter__)),2!=[1,2].splice(0).length)if(function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t,i=[];if(i.splice.apply(i,e(20)),i.splice.apply(i,e(26)),t=i.length,i.splice(5,0,"XXX"),i.length,t+1==i.length)return!0}()){var m=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?m.apply(this,[void 0===e?0:e,void 0===t?this.length-e:t].concat(d.call(arguments,2))):[]}}else Array.prototype.splice=function(e,t){var i=this.length;e>0?e>i&&(e=i):void 0==e?e=0:e<0&&(e=Math.max(i+e,0)),e+ta)for(u=c;u--;)this[l+u]=this[a+u];if(o&&e===h)this.length=h,this.push.apply(this,s);else for(this.length=h+o,u=0;u>>0;if("[object Function]"!=g(e))throw new TypeError;for(;++s>>0,s=Array(n),o=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var r=0;r>>0,o=[],r=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var a=0;a>>0,s=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var o=0;o>>0,s=arguments[1];if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");for(var o=0;o>>0;if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduce of empty array with no initial value");var s,o=0;if(arguments.length>=2)s=arguments[1];else for(;;){if(o in i){s=i[o++];break}if(++o>=n)throw new TypeError("reduce of empty array with no initial value")}for(;o>>0;if("[object Function]"!=g(e))throw new TypeError(e+" is not a function");if(!n&&1==arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var s,o=n-1;if(arguments.length>=2)s=arguments[1];else for(;;){if(o in i){s=i[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}do{o in this&&(s=e.call(void 0,s,i[o],o,t))}while(o--);return s}),Array.prototype.indexOf&&-1==[0,1].indexOf(1,2)||(Array.prototype.indexOf=function(e){var t=C&&"[object String]"==g(this)?this.split(""):L(this),i=t.length>>>0;if(!i)return-1;var n=0;for(arguments.length>1&&(n=k(arguments[1])),n=n>=0?n:Math.max(0,i+n);n>>0;if(!i)return-1;var n=i-1;for(arguments.length>1&&(n=Math.min(n,k(arguments[1]))),n=n>=0?n:i-Math.abs(n);n>=0;n--)if(n in t&&e===t[n])return n;return-1}),Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:u)}),!Object.getOwnPropertyDescriptor){Object.getOwnPropertyDescriptor=function(e,t){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+e);if(f(e,t)){var i;if(i={enumerable:!0,configurable:!0},l){var n=e.__proto__;e.__proto__=u;var s=r(e,t),o=a(e,t);if(e.__proto__=n,s||o)return s&&(i.get=s),o&&(i.set=o),i}return i.value=e[t],i}}}(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),Object.create)||(p=null===Object.prototype.__proto__?function(){return{__proto__:null}}:function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var i;if(null===e)i=p();else{if("object"!=typeof e)throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var n=function(){};n.prototype=e,(i=new n).__proto__=e}return void 0!==t&&Object.defineProperties(i,t),i});function v(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(e){}}if(Object.defineProperty){var w=v({}),F="undefined"==typeof document||v(document.createElement("div"));if(!w||!F)var E=Object.defineProperty}if(!Object.defineProperty||E){Object.defineProperty=function(e,t,i){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.defineProperty called on non-object: "+e);if("object"!=typeof i&&"function"!=typeof i||null===i)throw new TypeError("Property description must be an object: "+i);if(E)try{return E.call(Object,e,t,i)}catch(e){}if(f(i,"value"))if(l&&(r(e,t)||a(e,t))){var n=e.__proto__;e.__proto__=u,delete e[t],e[t]=i.value,e.__proto__=n}else e[t]=i.value;else{if(!l)throw new TypeError("getters & setters can not be defined on this javascript engine");f(i,"get")&&s(e,t,i.get),f(i,"set")&&o(e,t,i.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var i in t)f(t,i)&&Object.defineProperty(e,i,t[i]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(e){Object.freeze=function(e){return function(t){return"function"==typeof t?t:e(t)}}(Object.freeze)}if(Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;for(var t="";f(e,t);)t+="?";e[t]=!0;var i=f(e,t);return delete e[t],i}),!Object.keys){var b=!0,y=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],$=y.length;for(var x in{toString:null})b=!1;Object.keys=function(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new TypeError("Object.keys called on a non-object");var t=[];for(var i in e)f(e,i)&&t.push(i);if(b)for(var n=0,s=$;n0||-1)*Math.floor(Math.abs(e))),e}var L=function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,i){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,i){"use strict";t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||"http://www.w3.org/1999/xhtml",e):document.createElement(e)},t.hasCssClass=function(e,t){return-1!==(e.className+"").split(/\s+/g).indexOf(t)},t.addCssClass=function(e,i){t.hasCssClass(e,i)||(e.className+=" "+i)},t.removeCssClass=function(e,t){for(var i=e.className.split(/\s+/g);;){var n=i.indexOf(t);if(-1==n)break;i.splice(n,1)}e.className=i.join(" ")},t.toggleCssClass=function(e,t){for(var i=e.className.split(/\s+/g),n=!0;;){var s=i.indexOf(t);if(-1==s)break;n=!1,i.splice(s,1)}return n&&i.push(t),e.className=i.join(" "),n},t.setCssClass=function(e,i,n){n?t.addCssClass(e,i):t.removeCssClass(e,i)},t.hasCssString=function(e,t){var i,n=0;if((t=t||document).createStyleSheet&&(i=t.styleSheets)){for(;n=0?parseFloat((s.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((s.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&"Gecko"===window.navigator.product,t.isOldGecko=t.isGecko&&parseInt((s.match(/rv:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&"[object Opera]"==Object.prototype.toString.call(window.opera),t.isWebKit=parseFloat(s.split("WebKit/")[1])||void 0,t.isChrome=parseFloat(s.split(" Chrome/")[1])||void 0,t.isAIR=s.indexOf("AdobeAIR")>=0,t.isIPad=s.indexOf("iPad")>=0,t.isChromeOS=s.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(s)&&!window.MSStream,t.isIOS&&(t.isMac=!0)}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("./keys"),s=e("./useragent"),o=null,r=0;t.addListener=function(e,t,i){if(e.addEventListener)return e.addEventListener(t,i,!1);if(e.attachEvent){var n=function(){i.call(e,window.event)};i._wrapper=n,e.attachEvent("on"+t,n)}},t.removeListener=function(e,t,i){if(e.removeEventListener)return e.removeEventListener(t,i,!1);e.detachEvent&&e.detachEvent("on"+t,i._wrapper||i)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return"dblclick"==e.type?0:"contextmenu"==e.type||s.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,i,n){function s(e){i&&i(e),n&&n(e),t.removeListener(document,"mousemove",i,!0),t.removeListener(document,"mouseup",s,!0),t.removeListener(document,"dragstart",s,!0)}return t.addListener(document,"mousemove",i,!0),t.addListener(document,"mouseup",s,!0),t.addListener(document,"dragstart",s,!0),s},t.addTouchMoveListener=function(e,i){var n,s;t.addListener(e,"touchstart",function(e){var t=e.touches[0];n=t.clientX,s=t.clientY}),t.addListener(e,"touchmove",function(e){var t=e.touches;if(!(t.length>1)){var o=t[0];e.wheelX=n-o.clientX,e.wheelY=s-o.clientY,n=o.clientX,s=o.clientY,i(e)}})},t.addMouseWheelListener=function(e,i){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){void 0!==e.wheelDeltaX?(e.wheelX=-e.wheelDeltaX/8,e.wheelY=-e.wheelDeltaY/8):(e.wheelX=0,e.wheelY=-e.wheelDelta/8),i(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=.35*e.deltaX||0,e.wheelY=.35*e.deltaY||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=5*(e.deltaX||0),e.wheelY=5*(e.deltaY||0)}i(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=5*(e.detail||0),e.wheelY=0):(e.wheelX=0,e.wheelY=5*(e.detail||0)),i(e)})},t.addMultiMouseDownListener=function(e,i,n,o){var r,a,l,c=0,h={2:"dblclick",3:"tripleclick",4:"quadclick"};function u(e){if(0!==t.getButton(e)?c=0:e.detail>1?++c>4&&(c=1):c=1,s.isIE){var u=Math.abs(e.clientX-r)>5||Math.abs(e.clientY-a)>5;l&&!u||(c=1),l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),1==c&&(r=e.clientX,a=e.clientY)}if(e._clicks=c,n[o]("mousedown",e),c>4)c=0;else if(c>1)return n[o](h[c],e)}function d(e){c=2,l&&clearTimeout(l),l=setTimeout(function(){l=null},i[c-1]||600),n[o]("mousedown",e),n[o](h[c],e)}Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",u),s.isOldIE&&t.addListener(e,"dblclick",d)})};var a=!s.isMac||!s.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};function l(e,t,i){var l=a(t);if(!s.isMac&&o){if(t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(l|=8),o.altGr){if(3==(3&l))return;o.altGr=0}if(18===i||17===i){var c="location"in t?t.location:t.keyLocation;if(17===i&&1===c)1==o[i]&&(r=t.timeStamp);else if(18===i&&3===l&&2===c){t.timeStamp-r<50&&(o.altGr=!0)}}}if((i in n.MODIFIER_KEYS&&(i=-1),8&l&&i>=91&&i<=93&&(i=-1),!l&&13===i)&&(3===(c="location"in t?t.location:t.keyLocation)&&(e(t,l,-i),t.defaultPrevented)))return;if(s.isChromeOS&&8&l){if(e(t,l,i),t.defaultPrevented)return;l&=-9}return!!(l||i in n.FUNCTION_KEYS||i in n.PRINTABLE_KEYS)&&e(t,l,i)}function c(){o=Object.create(null)}if(t.getModifierString=function(e){return n.KEY_MODS[a(e)]},t.addCommandKeyListener=function(e,i){var n=t.addListener;if(s.isOldGecko||s.isOpera&&!("KeyboardEvent"in window)){var r=null;n(e,"keydown",function(e){r=e.keyCode}),n(e,"keypress",function(e){return l(i,e,r)})}else{var a=null;n(e,"keydown",function(e){o[e.keyCode]=(o[e.keyCode]||0)+1;var t=l(i,e,e.keyCode);return a=e.defaultPrevented,t}),n(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),n(e,"keyup",function(e){o[e.keyCode]=null}),o||(c(),n(window,"focus",c))}},"object"==typeof window&&window.postMessage&&!s.isOldIE){t.nextTick=function(e,i){i=i||window;t.addListener(i,"message",function n(s){"zero-timeout-message-1"==s.data&&(t.stopPropagation(s),t.removeListener(i,"message",n),e())}),i.postMessage("zero-timeout-message-1","*")}}t.nextFrame="object"==typeof window&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,i){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){for(var i="";t>0;)1&t&&(i+=e),(t>>=1)&&(e+=e);return i};var n=/^\s\s*/,s=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(n,"")},t.stringTrimRight=function(e){return e.replace(s,"")},t.copyObject=function(e){var t={};for(var i in e)t[i]=e[i];return t},t.copyArray=function(e){for(var t=[],i=0,n=e.length;iu.length?e=e.substr(9):e.substr(0,4)==u.substr(0,4)?e=e.substr(4,e.length-u.length+1):e.charAt(e.length-1)==u.charAt(0)&&(e=e.slice(0,-1)),e==u.charAt(0)||e.charAt(e.length-1)==u.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),d&&(d=!1),y&&(y=!1))},x=function(e){if(!m){var t=i.value;$(t),E()}},S=function(e,t,i){var n=e.clipboardData||window.clipboardData;if(n&&!c){var s=h||i?"Text":"text/plain";try{return t?!1!==n.setData(s,t):n.getData(s)}catch(e){if(!i)return S(e,t,!0)}}},B=function(e,o){var r=t.getCopyText();if(!r)return n.preventDefault(e);S(e,r)?(s.isIOS&&(g=o,i.value="\n aa"+r+"a a\n",i.setSelectionRange(4,4+r.length),d={value:r}),o?t.onCut():t.onCopy(),s.isIOS||n.preventDefault(e)):(d=!0,i.value=r,i.select(),setTimeout(function(){d=!1,E(),F(),o?t.onCut():t.onCopy()}))};n.addCommandKeyListener(i,t.onCommandKey.bind(t)),n.addListener(i,"select",function(e){!function(e){return 0===e.selectionStart&&e.selectionEnd===e.value.length}(i)?b&&F(t.selection.isEmpty()):(t.selectAll(),F())}),n.addListener(i,"input",x),n.addListener(i,"cut",function(e){B(e,!0)}),n.addListener(i,"copy",function(e){B(e,!1)}),n.addListener(i,"paste",function(e){var o=S(e);"string"==typeof o?(o&&t.onPaste(o,e),s.isIE&&setTimeout(F),n.preventDefault(e)):(i.value="",f=!0)});var D,k=function(){if(m&&t.onCompositionUpdate&&!t.$readOnly){var e=i.value.replace(/\x01/g,"");if(m.lastValue!==e&&(t.onCompositionUpdate(e),m.lastValue&&t.undo(),m.canUndo&&(m.lastValue=e),m.lastValue)){var n=t.selection.getRange();t.insert(m.lastValue),t.session.markUndoGroup(),m.range=t.selection.getRange(),t.selection.setRange(n),t.selection.clearSelection()}}},L=function(e){if(t.onCompositionEnd&&!t.$readOnly){var n=m;m=!1;var o=setTimeout(function(){o=null;var e=i.value.replace(/\x01/g,"");m||(e==n.lastValue?E():!n.lastValue&&e&&(E(),$(e)))});b=function(e){return o&&clearTimeout(o),(e=e.replace(/\x01/g,""))==n.lastValue?"":(n.lastValue&&o&&t.undo(),e)},t.onCompositionEnd(),t.removeListener("mousedown",L),"compositionend"==e.type&&n.range&&t.selection.setRange(n.range),(s.isChrome&&s.isChrome>=53||s.isWebKit&&s.isWebKit>=603)&&x()}},R=r.delayedCall(k,50);function T(){clearTimeout(D),D=setTimeout(function(){p&&(i.style.cssText=p,p=""),null==t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}n.addListener(i,"compositionstart",function(e){m||!t.onCompositionStart||t.$readOnly||((m={}).canUndo=t.session.$undoManager,t.onCompositionStart(),setTimeout(k,0),t.on("mousedown",L),m.canUndo&&!t.selection.isEmpty()&&(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup())}),s.isGecko?n.addListener(i,"text",function(){R.schedule()}):(n.addListener(i,"keyup",function(){R.schedule()}),n.addListener(i,"keydown",function(){R.schedule()})),n.addListener(i,"compositionend",L),this.getElement=function(){return i},this.setReadOnly=function(e){i.readOnly=e},this.onContextMenu=function(e){y=!0,F(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,r){p||(p=i.style.cssText),i.style.cssText=(r?"z-index:100000;":"")+"height:"+i.style.height+";"+(s.isIE?"opacity:0.1;":"");var a=t.container.getBoundingClientRect(),l=o.computedStyle(t.container),c=a.top+(parseInt(l.borderTopWidth)||0),h=a.left+(parseInt(a.borderLeftWidth)||0),u=a.bottom-c-i.clientHeight-2,d=function(e){i.style.left=e.clientX-h-2+"px",i.style.top=Math.min(e.clientY-c-2,u)+"px"};d(e),"mousedown"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(D),s.isWin&&n.capture(t.container,d,T))},this.onContextMenuClose=T;var M=function(e){t.textInput.onContextMenu(e),T()};if(n.addListener(i,"mouseup",M),n.addListener(i,"mousedown",function(e){e.preventDefault(),T()}),n.addListener(t.renderer.scroller,"contextmenu",M),n.addListener(i,"contextmenu",M),s.isIOS){var _=null,O=!1;e.addEventListener("keydown",function(e){_&&clearTimeout(_),O=!0}),e.addEventListener("keyup",function(e){_=setTimeout(function(){O=!1},100)});var I=function(e){if(document.activeElement===i&&!O){if(g)return setTimeout(function(){g=!1},100);var n=i.selectionStart,s=i.selectionEnd;if(i.setSelectionRange(4,5),n==s)switch(n){case 0:t.onCommandKey(null,0,a.up);break;case 1:t.onCommandKey(null,0,a.home);break;case 2:t.onCommandKey(null,l.option,a.left);break;case 4:t.onCommandKey(null,0,a.left);break;case 5:t.onCommandKey(null,0,a.right);break;case 7:t.onCommandKey(null,l.option,a.right);break;case 8:t.onCommandKey(null,0,a.end);break;case 9:t.onCommandKey(null,0,a.down)}else{switch(s){case 6:t.onCommandKey(null,l.shift,a.right);break;case 7:t.onCommandKey(null,l.shift|l.option,a.right);break;case 8:t.onCommandKey(null,l.shift,a.end);break;case 9:t.onCommandKey(null,l.shift,a.down)}switch(n){case 0:t.onCommandKey(null,l.shift,a.up);break;case 1:t.onCommandKey(null,l.shift,a.home);break;case 2:t.onCommandKey(null,l.shift|l.option,a.left);break;case 3:t.onCommandKey(null,l.shift,a.left)}}}};document.addEventListener("selectionchange",I),t.on("destroy",function(){document.removeEventListener("selectionchange",I)})}}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/keyboard/textinput_ios"],function(e,t,i){"use strict";var n=e("../lib/event"),s=e("../lib/useragent"),o=e("../lib/dom"),r=e("../lib/lang"),a=s.isChrome<18,l=s.isIE,c=e("./textinput_ios").TextInput;t.TextInput=function(e,t){if(s.isIOS)return c.call(this,e,t);var i=o.createElement("textarea");i.className="ace_text-input",i.setAttribute("wrap","off"),i.setAttribute("autocorrect","off"),i.setAttribute("autocapitalize","off"),i.setAttribute("spellcheck",!1),i.style.opacity="0",e.insertBefore(i,e.firstChild);var h="\u2028\u2028",u=!1,d=!1,g=!1,f="",m=!0;try{var p=document.activeElement===i}catch(e){}n.addListener(i,"blur",function(e){t.onBlur(e),p=!1}),n.addListener(i,"focus",function(e){p=!0,t.onFocus(e),v()}),this.focus=function(){if(f)return i.focus();var e=i.style.top;i.style.position="fixed",i.style.top="0px",i.focus(),setTimeout(function(){i.style.position="","0px"==i.style.top&&(i.style.top=e)},0)},this.blur=function(){i.blur()},this.isFocused=function(){return p};var A=r.delayedCall(function(){p&&v(m)}),C=r.delayedCall(function(){g||(i.value=h,p&&v())});function v(e){if(!g){if(g=!0,F)var t=0,n=e?0:i.value.length-1;else t=e?2:1,n=2;try{i.setSelectionRange(t,n)}catch(e){}g=!1}}function w(){g||(i.value=h,s.isWebKit&&C.schedule())}s.isWebKit||t.addEventListener("changeSelection",function(){t.selection.isEmpty()!=m&&(m=!m,A.schedule())}),w(),p&&t.onFocus();var F=null;this.setInputHandler=function(e){F=e},this.getInputHandler=function(){return F};var E=!1,b=function(e){F&&(e=F(e),F=null),d?(v(),e&&t.onPaste(e),d=!1):e==h.charAt(0)?E?t.execCommand("del",{source:"ace"}):t.execCommand("backspace",{source:"ace"}):(e.substring(0,2)==h?e=e.substr(2):e.charAt(0)==h.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==h.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==h.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),E&&(E=!1)},y=function(e){if(!g){var t=i.value;b(t),w()}},$=function(e,t,i){var n=e.clipboardData||window.clipboardData;if(n&&!a){var s=l||i?"Text":"text/plain";try{return t?!1!==n.setData(s,t):n.getData(s)}catch(e){if(!i)return $(e,t,!0)}}},x=function(e,s){var o=t.getCopyText();if(!o)return n.preventDefault(e);$(e,o)?(s?t.onCut():t.onCopy(),n.preventDefault(e)):(u=!0,i.value=o,i.select(),setTimeout(function(){u=!1,w(),v(),s?t.onCut():t.onCopy()}))},S=function(e){x(e,!0)},B=function(e){x(e,!1)},D=function(e){var o=$(e);"string"==typeof o?(o&&t.onPaste(o,e),s.isIE&&setTimeout(v),n.preventDefault(e)):(i.value="",d=!0)};n.addCommandKeyListener(i,t.onCommandKey.bind(t)),n.addListener(i,"select",function(e){u?u=!1:function(e){return 0===e.selectionStart&&e.selectionEnd===e.value.length}(i)?(t.selectAll(),v()):F&&v(t.selection.isEmpty())}),n.addListener(i,"input",y),n.addListener(i,"cut",S),n.addListener(i,"copy",B),n.addListener(i,"paste",D),"oncut"in i&&"oncopy"in i&&"onpaste"in i||n.addListener(e,"keydown",function(e){if((!s.isMac||e.metaKey)&&e.ctrlKey)switch(e.keyCode){case 67:B(e);break;case 86:D(e);break;case 88:S(e)}});var k,L=function(){if(g&&t.onCompositionUpdate&&!t.$readOnly){var e=i.value.replace(/\u2028/g,"");if(g.lastValue!==e&&(t.onCompositionUpdate(e),g.lastValue&&t.undo(),g.canUndo&&(g.lastValue=e),g.lastValue)){var n=t.selection.getRange();t.insert(g.lastValue),t.session.markUndoGroup(),g.range=t.selection.getRange(),t.selection.setRange(n),t.selection.clearSelection()}}},R=function(e){if(t.onCompositionEnd&&!t.$readOnly){var n=g;g=!1;var o=setTimeout(function(){o=null;var e=i.value.replace(/\u2028/g,"");g||(e==n.lastValue?w():!n.lastValue&&e&&(w(),b(e)))});F=function(e){return o&&clearTimeout(o),(e=e.replace(/\u2028/g,""))==n.lastValue?"":(n.lastValue&&o&&t.undo(),e)},t.onCompositionEnd(),t.removeListener("mousedown",R),"compositionend"==e.type&&n.range&&t.selection.setRange(n.range),(s.isChrome&&s.isChrome>=53||s.isWebKit&&s.isWebKit>=603)&&y()}},T=r.delayedCall(L,50);function M(){clearTimeout(k),k=setTimeout(function(){f&&(i.style.cssText=f,f=""),null==t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}n.addListener(i,"compositionstart",function(e){g||!t.onCompositionStart||t.$readOnly||((g={}).canUndo=t.session.$undoManager,t.onCompositionStart(),setTimeout(L,0),t.on("mousedown",R),g.canUndo&&!t.selection.isEmpty()&&(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup())}),s.isGecko?n.addListener(i,"text",function(){T.schedule()}):(n.addListener(i,"keyup",function(){T.schedule()}),n.addListener(i,"keydown",function(){T.schedule()})),n.addListener(i,"compositionend",R),this.getElement=function(){return i},this.setReadOnly=function(e){i.readOnly=e},this.onContextMenu=function(e){E=!0,v(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,r){f||(f=i.style.cssText),i.style.cssText=(r?"z-index:100000;":"")+"height:"+i.style.height+";"+(s.isIE?"opacity:0.1;":"");var a=t.container.getBoundingClientRect(),l=o.computedStyle(t.container),c=a.top+(parseInt(l.borderTopWidth)||0),h=a.left+(parseInt(a.borderLeftWidth)||0),u=a.bottom-c-i.clientHeight-2,d=function(e){i.style.left=e.clientX-h-2+"px",i.style.top=Math.min(e.clientY-c-2,u)+"px"};d(e),"mousedown"==e.type&&(t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(k),s.isWin&&n.capture(t.container,d,M))},this.onContextMenuClose=M;var _=function(e){t.textInput.onContextMenu(e),M()};n.addListener(i,"mouseup",_),n.addListener(i,"mousedown",function(e){e.preventDefault(),M()}),n.addListener(t.renderer.scroller,"contextmenu",_),n.addListener(i,"contextmenu",_)}}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";e("../lib/dom"),e("../lib/event");var n=e("../lib/useragent");function s(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e));["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"].forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function o(e,t){if(e.start.row==e.end.row)var i=2*t.column-e.start.column-e.end.column;else if(e.start.row!=e.end.row-1||e.start.column||e.end.column)i=2*t.row-e.start.row-e.end.row;else var i=t.column-4;return i<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}(function(){this.onMouseDown=function(e){var t=e.inSelection(),i=e.getDocumentPosition();this.mousedownEvent=e;var s=this.editor,o=e.getButton();if(0!==o){var r=s.getSelectionRange().isEmpty();return s.$blockScrolling++,(r||1==o)&&s.selection.moveToPosition(i),s.$blockScrolling--,void(2==o&&(s.textInput.onContextMenu(e.domEvent),n.isMozilla||e.preventDefault()))}return this.mousedownEvent.time=Date.now(),!t||s.isFocused()||(s.focus(),!this.$focusTimout||this.$clickSelection||s.inMultiSelectMode)?(this.captureMouse(e),this.startSelect(i,e.domEvent._clicks>1),e.preventDefault()):(this.setState("focusWait"),void this.captureMouse(e))},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var i=this.editor;i.$blockScrolling++,this.mousedownEvent.getShiftKey()?i.selection.selectToPosition(e):t||i.selection.moveToPosition(e),t||this.select(),i.renderer.scroller.setCapture&&i.renderer.scroller.setCapture(),i.setStyle("ace_selecting"),this.setState("select"),i.$blockScrolling--},this.select=function(){var e,t=this.editor,i=t.renderer.screenToTextCoordinates(this.x,this.y);if(t.$blockScrolling++,this.$clickSelection){var n=this.$clickSelection.comparePoint(i);if(-1==n)e=this.$clickSelection.end;else if(1==n)e=this.$clickSelection.start;else{var s=o(this.$clickSelection,i);i=s.cursor,e=s.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(i),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,i=this.editor,n=i.renderer.screenToTextCoordinates(this.x,this.y),s=i.selection[e](n.row,n.column);if(i.$blockScrolling++,this.$clickSelection){var r=this.$clickSelection.comparePoint(s.start),a=this.$clickSelection.comparePoint(s.end);if(-1==r&&a<=0)t=this.$clickSelection.end,s.end.row==n.row&&s.end.column==n.column||(n=s.start);else if(1==a&&r>=0)t=this.$clickSelection.start,s.start.row==n.row&&s.start.column==n.column||(n=s.end);else if(-1==r&&1==a)n=s.end,t=s.start;else{var l=o(this.$clickSelection,n);n=l.cursor,t=l.anchor}i.selection.setSelectionAnchor(t.row,t.column)}i.selection.selectToPosition(n),i.$blockScrolling--,i.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=function(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>0||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),i=this.editor,n=i.session.getBracketRange(t);n?(n.isEmpty()&&(n.start.column--,n.end.column++),this.setState("select")):(n=i.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=n,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),i=this.editor;this.setState("selectByLines");var n=i.getSelectionRange();n.isMultiLine()&&n.contains(t.row,t.column)?(this.$clickSelection=i.selection.getLineRange(n.start.row),this.$clickSelection.end=i.selection.getLineRange(n.end.row).end):this.$clickSelection=i.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(!e.getAccelKey()){e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var i=this.$lastScroll,n=e.domEvent.timeStamp,s=n-i.t,o=e.wheelX/s,r=e.wheelY/s;s<250&&(o=(o+i.vx)/2,r=(r+i.vy)/2);var a=Math.abs(o/r),l=!1;if(a>=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(l=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(l=!0),l)i.allowed=n;else if(n-i.allowed<250){Math.abs(o)<=1.1*Math.abs(i.vx)&&Math.abs(r)<=1.1*Math.abs(i.vy)?(l=!0,i.allowed=n):i.allowed=0}return i.t=n,i.vx=o,i.vy=r,l?(t.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()):void 0}},this.onTouchMove=function(e){this.editor._emit("mousewheel",e)}}).call(s.prototype),t.DefaultHandlers=s}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,i){"use strict";e("./lib/oop");var n=e("./lib/dom");function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}(function(){this.$init=function(){return this.$element=n.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){n.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){n.addCssClass(this.getElement(),e)},this.show=function(e,t,i){null!=e&&this.setText(e),null!=t&&null!=i&&this.setPosition(t,i),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth},this.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)}}).call(s.prototype),t.Tooltip=s}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,i){"use strict";var n=e("../lib/dom"),s=e("../lib/oop"),o=e("../lib/event"),r=e("../tooltip").Tooltip;function a(e){r.call(this,e)}s.inherits(a,r),function(){this.setPosition=function(e,t){var i=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,s=this.getWidth(),o=this.getHeight();t+=15,(e+=15)+s>i&&(e-=e+s-i),t+o>n&&(t-=20+o),r.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=function(e){var t,i,s,r=e.editor,l=r.renderer.$gutterLayer,c=new a(r.container);function h(){t&&(t=clearTimeout(t)),s&&(c.hide(),s=null,r._signal("hideGutterTooltip",c),r.removeEventListener("mousewheel",h))}function u(e){c.setPosition(e.x,e.y)}e.editor.setDefaultHandler("guttermousedown",function(t){if(r.isFocused()&&0==t.getButton()&&"foldWidgets"!=l.getRegion(t)){var i=t.getDocumentPosition().row,n=r.session.selection;if(t.getShiftKey())n.selectTo(i,0);else{if(2==t.domEvent.detail)return r.selectAll(),t.preventDefault();e.$clickSelection=r.selection.getLineRange(i)}return e.setState("selectByLines"),e.captureMouse(t),t.preventDefault()}}),e.editor.setDefaultHandler("guttermousemove",function(o){var a=o.domEvent.target||o.domEvent.srcElement;if(n.hasCssClass(a,"ace_fold-widget"))return h();s&&e.$tooltipFollowsMouse&&u(o),i=o,t||(t=setTimeout(function(){t=null,i&&!e.isMousePressed?function(){var t=i.getDocumentPosition().row,n=l.$annotations[t];if(!n)return h();if(t==r.session.getLength()){var o=r.renderer.pixelToScreenCoordinates(0,i.y).row,a=i.$pos;if(o>r.session.documentToScreenRow(a.row,a.column))return h()}if(s!=n)if(s=n.text.join("
"),c.setHtml(s),c.show(),r._signal("showGutterTooltip",c),r.on("mousewheel",h),e.$tooltipFollowsMouse)u(i);else{var d=i.domEvent.target.getBoundingClientRect(),g=c.getElement().style;g.left=d.right+"px",g.top=d.bottom+"px"}}():h()},50))}),o.addListener(r.renderer.$gutter,"mouseout",function(e){i=null,s&&!t&&(t=setTimeout(function(){t=null,h()},50))}),r.on("changeSession",h)}}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/event"),s=e("../lib/useragent"),o=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){n.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){n.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(null!==this.$inSelection)return this.$inSelection;var e=this.editor.getSelectionRange();if(e.isEmpty())this.$inSelection=!1;else{var t=this.getDocumentPosition();this.$inSelection=e.contains(t.row,t.column)}return this.$inSelection},this.getButton=function(){return n.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=s.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(o.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/dom"),s=e("../lib/event"),o=e("../lib/useragent"),r=200,a=200,l=5;function c(e){var t=e.editor,i=n.createElement("img");i.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",o.isOpera&&(i.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"].forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c,u,d,g,f,m,p,A,C,v,w,F=t.container,E=0;function b(){var e=m;(function(e,i){var n=Date.now(),s=!i||e.row!=i.row,o=!i||e.column!=i.column;!v||s||o?(t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,v=n,w={x:u,y:d}):h(w.x,w.y,u,d)>l?v=null:n-v>=a&&(t.renderer.scrollCursorIntoView(),v=null)})(m=t.renderer.screenToTextCoordinates(u,d),e),function(e,i){var n=Date.now(),s=t.renderer.layerConfig.lineHeight,o=t.renderer.layerConfig.characterWidth,a=t.renderer.scroller.getBoundingClientRect(),l={x:{left:u-a.left,right:a.right-u},y:{top:d-a.top,bottom:a.bottom-d}},c=Math.min(l.x.left,l.x.right),h=Math.min(l.y.top,l.y.bottom),g={row:e.row,column:e.column};c/o<=2&&(g.column+=l.x.left=r&&t.renderer.scrollCursorIntoView(g):C=n:C=null}(m,e)}function y(){f=t.selection.toOrientedRange(),c=t.session.addMarker(f,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(g),b(),g=setInterval(b,20),E=0,s.addListener(document,"mousemove",S)}function $(){clearInterval(g),t.session.removeMarker(c),c=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(f),t.$blockScrolling-=1,t.isFocused()&&!A&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),f=null,m=null,E=0,C=null,v=null,s.removeListener(document,"mousemove",S)}this.onDragStart=function(e){if(this.cancelDrag||!F.draggable){var n=this;return setTimeout(function(){n.startSelect(),n.captureMouse(e)},0),e.preventDefault()}f=t.getSelectionRange();var s=e.dataTransfer;s.effectAllowed=t.getReadOnly()?"copy":"copyMove",o.isOpera&&(t.container.appendChild(i),i.scrollTop=0),s.setDragImage&&s.setDragImage(i,0,0),o.isOpera&&t.container.removeChild(i),s.clearData(),s.setData("Text",t.session.getTextRange()),A=!0,this.setState("drag")},this.onDragEnd=function(e){if(F.draggable=!1,A=!1,this.setState(null),!t.getReadOnly()){var i=e.dataTransfer.dropEffect;p||"move"!=i||t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(!t.getReadOnly()&&B(e.dataTransfer))return u=e.clientX,d=e.clientY,c||y(),E++,e.dataTransfer.dropEffect=p=D(e),s.preventDefault(e)},this.onDragOver=function(e){if(!t.getReadOnly()&&B(e.dataTransfer))return u=e.clientX,d=e.clientY,c||(y(),E++),null!==x&&(x=null),e.dataTransfer.dropEffect=p=D(e),s.preventDefault(e)},this.onDragLeave=function(e){if(--E<=0&&c)return $(),p=null,s.preventDefault(e)},this.onDrop=function(e){if(m){var i=e.dataTransfer;if(A)switch(p){case"move":f=f.contains(m.row,m.column)?{start:m,end:m}:t.moveText(f,m);break;case"copy":f=t.moveText(f,m,!0)}else{var n=i.getData("Text");f={start:m,end:t.session.insert(m,n)},t.focus(),p=null}return $(),s.preventDefault(e)}},s.addListener(F,"dragstart",this.onDragStart.bind(e)),s.addListener(F,"dragend",this.onDragEnd.bind(e)),s.addListener(F,"dragenter",this.onDragEnter.bind(e)),s.addListener(F,"dragover",this.onDragOver.bind(e)),s.addListener(F,"dragleave",this.onDragLeave.bind(e)),s.addListener(F,"drop",this.onDrop.bind(e));var x=null;function S(){null==x&&(x=setTimeout(function(){null!=x&&c&&$()},20))}function B(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return"text/plain"==e||"Text"==e})}function D(e){var t=["copy","copymove","all","uninitialized"],i=o.isMac?e.altKey:e.ctrlKey,n="uninitialized";try{n=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var s="none";return i&&t.indexOf(n)>=0?s="copy":["move","copymove","linkmove","all","uninitialized"].indexOf(n)>=0?s="move":t.indexOf(n)>=0&&(s="copy"),s}}function h(e,t,i,n){return Math.sqrt(Math.pow(i-e,2)+Math.pow(n-t,2))}(function(){this.dragWait=function(){Date.now()-this.mousedownEvent.time>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){this.editor.container.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor;e.container.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var t=o.isWin?"default":"move";e.renderer.setCursorStyle(t),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;o.isIE&&"dragReady"==this.state&&(h(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>3&&t.dragDrop());"dragWait"===this.state&&(h(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y)>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition())))},this.onMouseDown=function(e){if(this.$dragEnabled){this.mousedownEvent=e;var t=this.editor,i=e.inSelection(),n=e.getButton();if(1===(e.domEvent.detail||1)&&0===n&&i){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var s=e.domEvent.target||e.domEvent.srcElement;if("unselectable"in s&&(s.unselectable="on"),t.getDragDelay()){if(o.isWebKit)this.cancelDrag=!0,t.container.draggable=!0;this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}}).call(c.prototype),t.DragdropHandler=c}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n=e("./dom");t.get=function(e,t){var i=new XMLHttpRequest;i.open("GET",e,!0),i.onreadystatechange=function(){4===i.readyState&&t(i.responseText)},i.send(null)},t.loadScript=function(e,t){var i=n.getDocumentHead(),s=document.createElement("script");s.src=e,i.appendChild(s),s.onload=s.onreadystatechange=function(e,i){!i&&s.readyState&&"loaded"!=s.readyState&&"complete"!=s.readyState||(s=s.onload=s.onreadystatechange=null,i||t())}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,i){"use strict";var n={},s=function(){this.propagationStopped=!0},o=function(){this.defaultPrevented=!0};n._emit=n._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var i=this._eventRegistry[e]||[],n=this._defaultHandlers[e];if(i.length||n){"object"==typeof t&&t||(t={}),t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=s),t.preventDefault||(t.preventDefault=o),i=i.slice();for(var r=0;r1&&(s=i[i.length-2]);var r=l[t+"Path"];return null==r?r=l.basePath:"/"==n&&(t=n=""),r&&"/"!=r.slice(-1)&&(r+="/"),r+t+n+s+this.get("suffix")},t.setModuleUrl=function(e,t){return l.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(i,n){var s,r;Array.isArray(i)&&(r=i[0],i=i[1]);try{s=e(i)}catch(e){}if(s&&!t.$loading[i])return n&&n(s);if(t.$loading[i]||(t.$loading[i]=[]),t.$loading[i].push(n),!(t.$loading[i].length>1)){var a=function(){e([i],function(e){t._emit("load.module",{name:i,module:e});var n=t.$loading[i];t.$loading[i]=null,n.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();o.loadScript(t.moduleUrl(i,r),a)}},c(!0),t.init=c}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,i){"use strict";var n=e("../lib/event"),s=e("../lib/useragent"),o=e("./default_handlers").DefaultHandlers,r=e("./default_gutter_handler").GutterHandler,a=e("./mouse_event").MouseEvent,l=e("./dragdrop_handler").DragdropHandler,c=e("../config"),h=function(e){var t=this;this.editor=e,new o(this),new r(this),new l(this);var i=function(t){(!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement()))&&window.focus(),e.focus()},a=e.renderer.getMouseEventTarget();n.addListener(a,"click",this.onMouseEvent.bind(this,"click")),n.addListener(a,"mousemove",this.onMouseMove.bind(this,"mousemove")),n.addMultiMouseDownListener([a,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),n.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),n.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var c=e.renderer.$gutter;n.addListener(c,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),n.addListener(c,"click",this.onMouseEvent.bind(this,"gutterclick")),n.addListener(c,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),n.addListener(c,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),n.addListener(a,"mousedown",i),n.addListener(c,"mousedown",i),s.isIE&&e.renderer.scrollBarV&&(n.addListener(e.renderer.scrollBarV.element,"mousedown",i),n.addListener(e.renderer.scrollBarH.element,"mousedown",i)),e.on("mousemove",function(i){if(!t.state&&!t.$dragDelay&&t.$dragEnabled){var n=e.renderer.screenToTextCoordinates(i.x,i.y),s=e.session.selection.getRange(),o=e.renderer;!s.isEmpty()&&s.insideStart(n.row,n.column)?o.setCursorStyle("default"):o.setCursorStyle("")}})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new a(t,this.editor))},this.onMouseMove=function(e,t){var i=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;i&&i.length&&this.editor._emit(e,new a(t,this.editor))},this.onMouseWheel=function(e,t){var i=new a(t,this.editor);i.speed=2*this.$scrollSpeed,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.onTouchMove=function(e,t){var i=new a(t,this.editor);i.speed=1,i.wheelX=t.wheelX,i.wheelY=t.wheelY,this.editor._emit(e,i)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var i=this.editor.renderer;i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=null);var o=this,r=function(e){if(e){if(s.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new a(e,o.editor),o.$mouseMoved=!0}},l=function(e){clearInterval(h),c(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",null==i.$keepTextAreaAtCursor&&(i.$keepTextAreaAtCursor=!0,i.$moveTextAreaToCursor()),o.isMousePressed=!1,o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e)},c=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(s.isOldIE&&"dblclick"==e.domEvent.type)return setTimeout(function(){l(e)});o.$onCaptureMouseMove=r,o.releaseMouse=n.capture(this.editor.container,r,l);var h=setInterval(c,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){t&&t.domEvent&&"contextmenu"!=t.domEvent.type||(this.editor.off("nativecontextmenu",e),t&&t.domEvent&&n.stopEvent(t.domEvent))}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(h.prototype),c.defineOptions(h.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:s.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=h}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,i){"use strict";t.FoldHandler=function(e){e.on("click",function(t){var i=t.getDocumentPosition(),n=e.session,s=n.getFoldAt(i.row,i.column,1);s&&(t.getAccelKey()?n.removeFold(s):n.expandFold(s),t.stop())}),e.on("gutterclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var i=t.getDocumentPosition().row,n=e.session;n.foldWidgets&&n.foldWidgets[i]&&e.session.onFoldWidgetClick(i,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){if("foldWidgets"==e.renderer.$gutterLayer.getRegion(t)){var i=t.getDocumentPosition().row,n=e.session,s=n.getParentFoldRangeData(i,!0),o=s.range||s.firstRange;if(o){i=o.start.row;var r=n.getFoldAt(i,n.getLine(i).length,1);r?n.removeFold(r):(n.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,i){"use strict";var n=e("../lib/keys"),s=e("../lib/event"),o=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]!=e){for(;t[t.length-1]&&t[t.length-1]!=this.$defaultHandler;)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)}},this.addKeyboardHandler=function(e,t){if(e){"function"!=typeof e||e.handleKeyboard||(e.handleKeyboard=e);var i=this.$handlers.indexOf(e);-1!=i&&this.$handlers.splice(i,1),void 0==t?this.$handlers.push(e):this.$handlers.splice(t,0,e),-1==i&&e.attach&&e.attach(this.$editor)}},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return-1!=t&&(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(i){return i.getStatusText&&i.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,i,n){for(var o,r=!1,a=this.$editor.commands,l=this.$handlers.length;l--&&!((o=this.$handlers[l].handleKeyboard(this.$data,e,t,i,n))&&o.command&&((r="null"==o.command||a.exec(o.command,this.$editor,o.args,n))&&n&&-1!=e&&1!=o.passEvent&&1!=o.command.passEvent&&s.stopEvent(n),r)););return r||-1!=e||(o={command:"insertstring"},r=a.exec("insertstring",this.$editor,t)),r&&this.$editor._signal&&this.$editor._signal("keyboardActivity",o),r},this.onCommandKey=function(e,t,i){var s=n.keyCodeToString(i);this.$callKeyboardHandlers(t,s,i,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(o.prototype),t.KeyBinding=o}),ace.define("ace/lib/bidiutil",["require","exports","module"],function(e,t,i){"use strict";var n=0,s=0,o=!1,r=!1,a=!1,l=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],c=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],h=1,u=0,d=1,g=2,f=3,m=4,p=5,A=6,C=7,v=8,w=9,F=10,E=11,b=12,y=13,$=14,x=15,S=16,B=17,D=18,k=[D,D,D,D,D,D,D,D,D,A,p,A,v,p,D,D,D,D,D,D,D,D,D,D,D,D,D,D,p,p,p,A,v,m,m,E,E,E,m,m,m,m,m,F,w,F,w,w,g,g,g,g,g,g,g,g,g,g,w,m,m,m,m,m,m,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,m,m,m,m,m,m,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,u,m,m,m,m,D,D,D,D,D,D,p,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,w,m,E,E,E,E,m,m,m,m,u,m,m,D,m,m,E,E,g,g,m,u,m,m,m,g,u,m,m,m,m,m],L=[v,v,v,v,v,v,v,v,v,v,v,D,D,D,u,d,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,v,p,y,$,x,S,B,w,E,E,E,E,E,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,w,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,v];function R(e,t,i){if(!(s=e){for(o=d+1;o=e;)o++;for(a=d,l=o-1;a=t.length||(l=i[s-1])!=g&&l!=f||(c=t[s+1])!=g&&c!=f?m:(o&&(c=f),c==l?c:m);case F:return(l=s>0?i[s-1]:p)==g&&s+10&&i[s-1]==g)return g;if(o)return m;for(k=s+1,h=t.length;k=1425&&R<=2303||64286==R;if(l=t[k],T&&(l==d||l==C))return d}return s<1||(l=t[s-1])==p?m:i[s-1];case p:return o=!1,r=!0,n;case A:return a=!0,m;case y:case $:case S:case B:case x:o=!1;case D:return m}}function M(e){var t=e.charCodeAt(0),i=t>>8;return 0==i?t>191?u:k[t]:5==i?/[\u0591-\u05f4]/.test(e)?d:u:6==i?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?b:/[\u0660-\u0669\u066b-\u066c]/.test(e)?f:1642==t?E:/[\u06f0-\u06f9]/.test(e)?g:C:32==i&&t<=8287?L[255&t]:254==i&&t>=65136?C:m}t.L=u,t.R=d,t.EN=g,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.DOT="·",t.doBidiReorder=function(e,i,u){if(e.length<2)return{};var g=e.split(""),w=new Array(g.length),F=new Array(g.length),E=[];n=u?h:0,function(e,t,i,h){var u=n?c:l,d=null,g=null,f=null,m=0,C=null,w=-1,F=null,E=null,b=[];if(!h)for(F=0,h=[];F0)if(16==C){for(F=w;F-1){for(F=w;F=0&&h[y]==v;y--)t[y]=n}}(g,E,g.length,i);for(var b=0;bC&&i[b]0&&"ل"===g[b-1]&&/\u0622|\u0623|\u0625|\u0627/.test(g[b])&&(E[b-1]=E[b]=t.R_H,b++);g[g.length-1]===t.DOT&&(E[g.length-1]=t.B);for(b=0;b=0&&(e=this.session.$docRowCache[i])}return e},this.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length)for(var i,n=this.session.$getRowCacheIndex(t,this.currentRow);this.currentRow-e>0&&(i=this.session.$getRowCacheIndex(t,this.currentRow-e-1))===n;)n=i,e++;return e},this.updateRowLine=function(e,t){if(void 0===e&&(e=this.getDocumentRow()),this.wrapIndent=0,this.isLastRow=e===this.session.getLength()-1,this.line=this.session.getLine(e),this.session.$useWrapMode){var i=this.session.$wrapData[e];i&&(void 0===t&&(t=this.getSplitIndex()),t>0&&i.length?(this.wrapIndent=i.indent,this.line=t0?e-1:0,this.bidiMap),i=this.bidiMap.bidiLevels,s=0;0===e&&i[t]%2!=0&&t++;for(var o=0;o=c&&si+r/2;){if(i+=r,s===o.length-1){r=0;break}r=this.charWidths[o[++s]]}return s>0&&o[s-1]%2!=0&&o[s]%2==0?(e0&&o[s-1]%2==0&&o[s]%2!=0?t=1+(e>i?this.bidiMap.logicalFromVisual[s]:this.bidiMap.logicalFromVisual[s-1]):this.isRtlDir&&s===o.length-1&&0===r&&o[s-1]%2==0||!this.isRtlDir&&0===s&&o[s]%2!=0?t=1+this.bidiMap.logicalFromVisual[s]:(s>0&&o[s-1]%2!=0&&0!==r&&s--,t=this.bidiMap.logicalFromVisual[s]),t+this.wrapIndent}}).call(a.prototype),t.BidiHandler=a}),ace.define("ace/range",["require","exports","module"],function(e,t,i){"use strict";var n=function(e,t,i,n){this.start={row:e,column:t},this.end={row:i,column:n}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return 0==this.compare(e,t)},this.compareRange=function(e){var t,i=e.end,n=e.start;return 1==(t=this.compare(i.row,i.column))?1==(t=this.compare(n.row,n.column))?2:0==t?1:0:-1==t?-2:-1==(t=this.compare(n.row,n.column))?-1:1==t?42:0},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return 0==this.comparePoint(e.start)&&0==this.comparePoint(e.end)},this.intersects=function(e){var t=this.compareRange(e);return-1==t||0==t||1==t},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){"object"==typeof e?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){"object"==typeof e?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return 0==this.compare(e,t)&&(!this.isEnd(e,t)&&!this.isStart(e,t))},this.insideStart=function(e,t){return 0==this.compare(e,t)&&!this.isEnd(e,t)},this.insideEnd=function(e,t){return 0==this.compare(e,t)&&!this.isStart(e,t)},this.compare=function(e,t){return this.isMultiLine()||e!==this.start.row?ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0:tthis.end.column?1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var i={row:t+1,column:0};else if(this.end.rowt)var s={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?r.fromPoints(t,t):this.isBackwards()?r.fromPoints(t,e):r.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(void 0===t){var i=e||this.lead;e=i.row,t=i.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var i,n="number"==typeof e?e:this.lead.row,s=this.session.getFoldLine(n);return s?(n=s.start.row,i=s.end.row):i=n,!0===t?new r(n,0,i,this.session.getLine(i).length):new r(n,0,i+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(e,t,i){var n=e.column,s=e.column+t;return i<0&&(n=e.column-t,s=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(n,s).split(" ").length-1==t},this.moveCursorLeft=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,-1))this.moveCursorTo(e.start.row,e.start.column);else if(0===t.column)t.row>0&&this.moveCursorTo(t.row-1,this.doc.getLine(t.row-1).length);else{var i=this.session.getTabSize();this.wouldMoveIntoSoftTab(t,i,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-i):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e,t=this.lead.getPosition();if(e=this.session.getFoldAt(t.row,t.column,1))this.moveCursorTo(e.end.row,e.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=n)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s)this.moveCursorTo(s.end.row,s.end.column);else{if(this.session.nonTokenRe.exec(n)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,n=i.substring(t)),t>=i.length)return this.moveCursorTo(e,i.length),this.moveCursorRight(),void(e0&&this.moveCursorWordLeft());this.session.tokenRe.exec(o)&&(i-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(t,i)}},this.$shortWordEndIndex=function(e){var t,i=0,n=/\s/,s=this.session.tokenRe;if(s.lastIndex=0,this.session.tokenRe.exec(e))i=this.session.tokenRe.lastIndex;else{for(;(t=e[i])&&n.test(t);)i++;if(i<1)for(s.lastIndex=0;(t=e[i])&&!s.test(t);)if(s.lastIndex=0,i++,n.test(t)){if(i>2){i--;break}for(;(t=e[i])&&n.test(t);)i++;if(i>2)break}}return s.lastIndex=0,i},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,i=this.doc.getLine(e),n=i.substring(t),s=this.session.getFoldAt(e,t,1);if(s)return this.moveCursorTo(s.end.row,s.end.column);if(t==i.length){var o=this.doc.getLength();do{e++,n=this.doc.getLine(e)}while(e0&&/^\s*$/.test(n));i=n.length,/\s+$/.test(n)||(n="")}var o=s.stringReverse(n),r=this.$shortWordEndIndex(o);return this.moveCursorTo(t,i-r)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var i,n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);0===t&&(0!==e&&(this.session.$bidiHandler.isBidiRow(n.row,this.lead.row)?(i=this.session.$bidiHandler.getPosLeft(n.column),n.column=Math.round(i/this.session.$bidiHandler.charWidths[0])):i=n.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var s=this.session.screenToDocumentPosition(n.row+e,n.column,i);0!==e&&0===t&&s.row===this.lead.row&&s.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[s.row]&&(s.row>0||e>0)&&s.row++,this.moveCursorTo(s.row,s.column+t,0===t)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,i){var n=this.session.getFoldAt(e,t,1);n&&(e=n.start.row,t=n.start.column),this.$keepDesiredColumnOnChange=!0;var s=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(s.charAt(t))&&s.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,i||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,i){var n=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(n.row,n.column,i)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var i=this.getCursor();return r.fromPoints(t,i)}catch(e){return r.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else(e=this.getRange()).isBackwards=this.isBackwards();return e},this.fromJSON=function(e){if(void 0==e.start){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var i=r.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(i.cursor=i.start),this.addRange(i,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(a.prototype),t.Selection=a}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,i){"use strict";var n=e("./config"),s=2e3,o=function(e){for(var t in this.states=e,this.regExps={},this.matchMappings={},this.states){for(var i=this.states[t],n=[],s=0,o=this.matchMappings[t]={defaultToken:"text"},r="g",a=[],l=0;l1?this.$applyToken:c.token),u>1&&(/\\\d/.test(c.regex)?h=c.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+s+1)}):(u=1,h=this.removeCapturingGroups(c.regex)),c.splitRegex||"string"==typeof c.token||a.push(c)),o[s]=l,s+=u,n.push(h),c.onMatch||(c.onMatch=null)}}n.length||(o[0]=0,n.push("$")),a.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,r)},this),this.regExps[t]=new RegExp("("+n.join(")|(")+")|($)",r)}};(function(){this.$setMaxTokenCount=function(e){s=0|e},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),i=this.token.apply(this,t);if("string"==typeof i)return[{type:i,value:e}];for(var n=[],s=0,o=i.length;sh){var A=e.substring(h,p-m.length);d.type==g?d.value+=A:(d.type&&c.push(d),d={type:g,value:A})}for(var C=0;Cs){for(u>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});h1&&i[0]!==n&&i.unshift("#tmp",n),{tokens:c,state:i.length?i:n}},this.reportError=n.reportError}).call(o.prototype),t.Tokenizer=o}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,i){"use strict";var n=e("../lib/lang"),s=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(t)for(var i in e){for(var n=e[i],s=0;s=this.$rowTokens.length;){if(this.$row+=1,e||(e=this.$session.getLength()),this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,i=e[t].start;if(void 0!==i)return i;for(i=0;t>0;)i+=e[t-=1].value.length;return i},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new n(this.$row,t,this.$row,t+e.value.length)}}).call(s.prototype),t.TokenIterator=s}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,i){"use strict";var n,s=e("../../lib/oop"),o=e("../behaviour").Behaviour,r=e("../../token_iterator").TokenIterator,a=e("../../lib/lang"),l=["text","paren.rparen","punctuation.operator"],c=["text","paren.rparen","punctuation.operator","comment"],h={},u={'"':'"',"'":"'"},d=function(e){var t=-1;if(e.multiSelect&&(t=e.selection.index,h.rangeCount!=e.multiSelect.rangeCount&&(h={rangeCount:e.multiSelect.rangeCount})),h[t])return n=h[t];n=h[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},g=function(e,t,i,n){var s=e.end.row-e.start.row;return{text:i+t+n,selection:[0,e.start.column+1,s,e.end.column+(s?0:1)]}},f=function(e){this.add("braces","insertion",function(t,i,s,o,r){var l=s.getCursorPosition(),c=o.doc.getLine(l.row);if("{"==r){d(s);var h=s.getSelectionRange(),u=o.doc.getTextRange(h);if(""!==u&&"{"!==u&&s.getWrapBehavioursEnabled())return g(h,u,"{","}");if(f.isSaneInsertion(s,o))return/[\]\}\)]/.test(c[l.column])||s.inMultiSelectMode||e&&e.braces?(f.recordAutoInsert(s,o,"}"),{text:"{}",selection:[1,1]}):(f.recordMaybeInsert(s,o,"{"),{text:"{",selection:[1,1]})}else if("}"==r){if(d(s),"}"==c.substring(l.column,l.column+1))if(null!==o.$findOpeningBracket("}",{column:l.column+1,row:l.row})&&f.isAutoInsertedClosing(l,c,r))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}else{if("\n"==r||"\r\n"==r){d(s);var m="";if(f.isMaybeInsertedClosing(l,c)&&(m=a.stringRepeat("}",n.maybeInsertedBrackets),f.clearMaybeInsertedClosing()),"}"===c.substring(l.column,l.column+1)){var p=o.findMatchingBracket({row:l.row,column:l.column+1},"}");if(!p)return null;var A=this.$getIndent(o.getLine(p.row))}else{if(!m)return void f.clearMaybeInsertedClosing();A=this.$getIndent(c)}var C=A+o.getTabString();return{text:"\n"+C+"\n"+A+m,selection:[1,C.length,1,C.length]}}f.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,i,s,o){var r=s.doc.getTextRange(o);if(!o.isMultiLine()&&"{"==r){if(d(i),"}"==s.doc.getLine(o.start.row).substring(o.end.column,o.end.column+1))return o.end.column++,o;n.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,i,n,s){if("("==s){d(i);var o=i.getSelectionRange(),r=n.doc.getTextRange(o);if(""!==r&&i.getWrapBehavioursEnabled())return g(o,r,"(",")");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,")"),{text:"()",selection:[1,1]}}else if(")"==s){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row);if(")"==l.substring(a.column,a.column+1))if(null!==n.$findOpeningBracket(")",{column:a.column+1,row:a.row})&&f.isAutoInsertedClosing(a,l,s))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("parens","deletion",function(e,t,i,n,s){var o=n.doc.getTextRange(s);if(!s.isMultiLine()&&"("==o&&(d(i),")"==n.doc.getLine(s.start.row).substring(s.start.column+1,s.start.column+2)))return s.end.column++,s}),this.add("brackets","insertion",function(e,t,i,n,s){if("["==s){d(i);var o=i.getSelectionRange(),r=n.doc.getTextRange(o);if(""!==r&&i.getWrapBehavioursEnabled())return g(o,r,"[","]");if(f.isSaneInsertion(i,n))return f.recordAutoInsert(i,n,"]"),{text:"[]",selection:[1,1]}}else if("]"==s){d(i);var a=i.getCursorPosition(),l=n.doc.getLine(a.row);if("]"==l.substring(a.column,a.column+1))if(null!==n.$findOpeningBracket("]",{column:a.column+1,row:a.row})&&f.isAutoInsertedClosing(a,l,s))return f.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}),this.add("brackets","deletion",function(e,t,i,n,s){var o=n.doc.getTextRange(s);if(!s.isMultiLine()&&"["==o&&(d(i),"]"==n.doc.getLine(s.start.row).substring(s.start.column+1,s.start.column+2)))return s.end.column++,s}),this.add("string_dquotes","insertion",function(e,t,i,n,s){var o=n.$mode.$quotes||u;if(1==s.length&&o[s]){if(this.lineCommentStart&&-1!=this.lineCommentStart.indexOf(s))return;d(i);var r=s,a=i.getSelectionRange(),l=n.doc.getTextRange(a);if(!(""===l||1==l.length&&o[l])&&i.getWrapBehavioursEnabled())return g(a,l,r,r);if(!l){var c=i.getCursorPosition(),h=n.doc.getLine(c.row),f=h.substring(c.column-1,c.column),m=h.substring(c.column,c.column+1),p=n.getTokenAt(c.row,c.column),A=n.getTokenAt(c.row,c.column+1);if("\\"==f&&p&&/escape/.test(p.type))return null;var C,v=p&&/string|escape/.test(p.type),w=!A||/string|escape/.test(A.type);if(m==r)(C=v!==w)&&/string\.end/.test(A.type)&&(C=!1);else{if(v&&!w)return null;if(v&&w)return null;var F=n.$mode.tokenRe;F.lastIndex=0;var E=F.test(f);F.lastIndex=0;var b=F.test(f);if(E||b)return null;if(m&&!/[\s;,.})\]\\]/.test(m))return null;C=!0}return{text:C?r+r:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,i,n,s){var o=n.doc.getTextRange(s);if(!s.isMultiLine()&&('"'==o||"'"==o)&&(d(i),n.doc.getLine(s.start.row).substring(s.start.column+1,s.start.column+2)==o))return s.end.column++,s})};f.isSaneInsertion=function(e,t){var i=e.getCursorPosition(),n=new r(t,i.row,i.column);if(!this.$matchTokenType(n.getCurrentToken()||"text",l)){var s=new r(t,i.row,i.column+1);if(!this.$matchTokenType(s.getCurrentToken()||"text",l))return!1}return n.stepForward(),n.getCurrentTokenRow()!==i.row||this.$matchTokenType(n.getCurrentToken()||"text",c)},f.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},f.recordAutoInsert=function(e,t,i){var s=e.getCursorPosition(),o=t.doc.getLine(s.row);this.isAutoInsertedClosing(s,o,n.autoInsertedLineEnd[0])||(n.autoInsertedBrackets=0),n.autoInsertedRow=s.row,n.autoInsertedLineEnd=i+o.substr(s.column),n.autoInsertedBrackets++},f.recordMaybeInsert=function(e,t,i){var s=e.getCursorPosition(),o=t.doc.getLine(s.row);this.isMaybeInsertedClosing(s,o)||(n.maybeInsertedBrackets=0),n.maybeInsertedRow=s.row,n.maybeInsertedLineStart=o.substr(0,s.column)+i,n.maybeInsertedLineEnd=o.substr(s.column),n.maybeInsertedBrackets++},f.isAutoInsertedClosing=function(e,t,i){return n.autoInsertedBrackets>0&&e.row===n.autoInsertedRow&&i===n.autoInsertedLineEnd[0]&&t.substr(e.column)===n.autoInsertedLineEnd},f.isMaybeInsertedClosing=function(e,t){return n.maybeInsertedBrackets>0&&e.row===n.maybeInsertedRow&&t.substr(e.column)===n.maybeInsertedLineEnd&&t.substr(0,e.column)==n.maybeInsertedLineStart},f.popAutoInsertedClosing=function(){n.autoInsertedLineEnd=n.autoInsertedLineEnd.substr(1),n.autoInsertedBrackets--},f.clearMaybeInsertedClosing=function(){n&&(n.maybeInsertedBrackets=0,n.maybeInsertedRow=-1)},s.inherits(f,o),t.CstyleBehaviour=f}),ace.define("ace/unicode",["require","exports","module"],function(e,t,i){"use strict";t.packages={},function(e){var i=/\w{4}/g;for(var n in e)t.packages[n]=e[n].replace(i,"\\u$&")}({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,i){"use strict";var n=e("../tokenizer").Tokenizer,s=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour/cstyle").CstyleBehaviour,r=e("../unicode"),a=e("../lib/lang"),l=e("../token_iterator").TokenIterator,c=e("../range").Range,h=function(){this.HighlightRules=s};(function(){this.$defaultBehaviour=new o,this.tokenRe=new RegExp("^["+r.packages.L+r.packages.Mn+r.packages.Mc+r.packages.Nd+r.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+r.packages.L+r.packages.Mn+r.packages.Mc+r.packages.Nd+r.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new n(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,i,n){var s=t.doc,o=!0,r=!0,l=1/0,c=t.getTabSize(),h=!1;if(this.lineCommentStart){if(Array.isArray(this.lineCommentStart))m=this.lineCommentStart.map(a.escapeRegExp).join("|"),g=this.lineCommentStart[0];else m=a.escapeRegExp(this.lineCommentStart),g=this.lineCommentStart;m=new RegExp("^(\\s*)(?:"+m+") ?"),h=t.getUseSoftTabs();C=function(e,t){var i=e.match(m);if(i){var n=i[1].length,o=i[0].length;d(e,n,o)||" "!=i[0][o-1]||o--,s.removeInLine(t,n,o)}};var u=g+" ",d=(A=function(e,t){o&&!/\S/.test(e)||(d(e,l,l)?s.insertInLine({row:t,column:l},u):s.insertInLine({row:t,column:l},g))},v=function(e,t){return m.test(e)},function(e,t,i){for(var n=0;t--&&" "==e.charAt(t);)n++;if(n%c!=0)return!1;for(n=0;" "==e.charAt(i++);)n++;return c>2?n%c!=c-1:n%c==0})}else{if(!this.blockComment)return!1;var g=this.blockComment.start,f=this.blockComment.end,m=new RegExp("^(\\s*)(?:"+a.escapeRegExp(g)+")"),p=new RegExp("(?:"+a.escapeRegExp(f)+")\\s*$"),A=function(e,t){v(e,t)||o&&!/\S/.test(e)||(s.insertInLine({row:t,column:e.length},f),s.insertInLine({row:t,column:l},g))},C=function(e,t){var i;(i=e.match(p))&&s.removeInLine(t,e.length-i[0].length,e.length),(i=e.match(m))&&s.removeInLine(t,i[1].length,i[0].length)},v=function(e,i){if(m.test(e))return!0;for(var n=t.getTokens(i),s=0;se.length&&(F=e.length)}),l==1/0&&(l=F,o=!1,r=!1),h&&l%c!=0&&(l=Math.floor(l/c)*c),w(r?C:A)},this.toggleBlockComment=function(e,t,i,n){var s=this.blockComment;if(s){!s.start&&s[0]&&(s=s[0]);var o,r,a=(m=new l(t,n.row,n.column)).getCurrentToken(),h=(t.selection,t.selection.toOrientedRange());if(a&&/comment/.test(a.type)){for(var u,d;a&&/comment/.test(a.type);){if(-1!=(p=a.value.indexOf(s.start))){var g=m.getCurrentTokenRow(),f=m.getCurrentTokenColumn()+p;u=new c(g,f,g,f+s.start.length);break}a=m.stepBackward()}var m;for(a=(m=new l(t,n.row,n.column)).getCurrentToken();a&&/comment/.test(a.type);){var p;if(-1!=(p=a.value.indexOf(s.end))){g=m.getCurrentTokenRow(),f=m.getCurrentTokenColumn()+p;d=new c(g,f,g,f+s.end.length);break}a=m.stepForward()}d&&t.remove(d),u&&(t.remove(u),o=u.start.row,r=-s.start.length)}else r=s.start.length,o=i.start.row,t.insert(i.end,s.end),t.insert(i.start,s.start);h.start.row==o&&(h.start.column+=r),h.end.row==o&&(h.end.column+=r),t.selection.fromOrientedRange(h)}},this.getNextLineIndent=function(e,t,i){return this.$getIndent(t)},this.checkOutdent=function(e,t,i){return!1},this.autoOutdent=function(e,t,i){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){for(var t in this.$embeds=[],this.$modes={},e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var i=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(t=0;tthis.row)){var i=function(t,i,n){var s="insert"==t.action,o=(s?1:-1)*(t.end.row-t.start.row),r=(s?1:-1)*(t.end.column-t.start.column),a=t.start,l=s?a:t.end;if(e(i,a,n))return{row:i.row,column:i.column};if(e(l,i,!n))return{row:i.row+o,column:i.column+(i.row==l.row?r:0)};return{row:a.row,column:a.column}}(t,{row:this.row,column:this.column},this.$insertRight);this.setPosition(i.row,i.column,!0)}},this.setPosition=function(e,t,i){var n;if(n=i?{row:e,column:t}:this.$clipPositionToDocument(e,t),this.row!=n.row||this.column!=n.column){var s={row:this.row,column:this.column};this.row=n.row,this.column=n.column,this._signal("change",{old:s,value:n})}},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var i={};return e>=this.document.getLength()?(i.row=Math.max(0,this.document.getLength()-1),i.column=this.document.getLine(i.row).length):e<0?(i.row=0,i.column=0):(i.row=e,i.column=Math.min(this.document.getLine(i.row).length,Math.max(0,t))),t<0&&(i.column=0),i}}).call(o.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,i){"use strict";var n=e("./lib/oop"),s=e("./apply_delta").applyDelta,o=e("./lib/event_emitter").EventEmitter,r=e("./range").Range,a=e("./anchor").Anchor,l=function(e){this.$lines=[""],0===e.length?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){n.implement(this,o),this.setValue=function(e){var t=this.getLength()-1;this.remove(new r(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new a(this,e,t)},0==="aaa".split(/a/).length?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){this.$newLineMode!==e&&(this.$newLineMode=e,this._signal("changeNewLineMode"))},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return"\r\n"==e||"\r"==e||"\n"==e},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{(t=this.getLines(e.start.row,e.end.row))[0]=(t[0]||"").substring(e.start.column);var i=t.length-1;e.end.row-e.start.row==i&&(t[i]=t[i].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var i=this.clippedPos(e.row,e.column),n=this.pos(e.row,e.column+t.length);return this.applyDelta({start:i,end:n,action:"insert",lines:[t]},!0),this.clonePos(n)},this.clippedPos=function(e,t){var i=this.getLength();void 0===e?e=i:e<0?e=0:e>=i&&(e=i-1,t=void 0);var n=this.getLine(e);return void 0==t&&(t=n.length),{row:e,column:t=Math.min(Math.max(t,0),n.length)}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){var i=0;(e=Math.min(Math.max(e,0),this.getLength()))0,n=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){return e instanceof r||(e=r.fromPoints(e.start,e.end)),0===t.length&&e.isEmpty()?e.start:t==this.getTextRange(e)?e.end:(this.remove(e),t?this.insert(e.start,t):e.start)},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var i="insert"==e.action;(i?e.lines.length<=1&&!e.lines[0]:!r.comparePoints(e.start,e.end))||(i&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),s(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){for(var i=e.lines,n=i.length,s=e.start.row,o=e.start.column,r=0,a=0;;){r=a,a+=t-1;var l=i.slice(r,a);if(a>n){e.lines=l,e.start.row=s+r,e.start.column=o;break}l.push(""),this.applyDelta({start:this.pos(s+r,o),end:this.pos(s+a,o=0),action:e.action,lines:l},!0)}},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:"insert"==e.action?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){for(var i=this.$lines||this.getAllLines(),n=this.getNewLineCharacter().length,s=t||0,o=i.length;s20){i.running=setTimeout(i.$worker,20);break}}i.currentLine=t,-1==n&&(n=t),o<=n&&i.fireUpdateEvent(o,n)}}};(function(){n.implement(this,s),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var i={first:e,last:t};this._signal("update",{data:i})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.lines[t]=null;else if("remove"==e.action)this.lines.splice(t,i+1,null),this.states.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.lines.splice.apply(this.lines,n),this.states.splice.apply(this.states,n)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),i=this.states[e-1],n=this.tokenizer.getLineTokens(t,i,e);return this.states[e]+""!=n.state+""?(this.states[e]=n.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=n.tokens}}).call(o.prototype),t.BackgroundTokenizer=o}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),s=(e("./lib/oop"),e("./range").Range),o=function(e,t,i){this.setRegexp(e),this.clazz=t,this.type=i||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){this.regExp+""!=e+""&&(this.regExp=e,this.cache=[])},this.update=function(e,t,i,o){if(this.regExp)for(var r=o.firstRow,a=o.lastRow,l=r;l<=a;l++){var c=this.cache[l];null==c&&((c=n.getMatchOffsets(i.getLine(l),this.regExp)).length>this.MAX_RANGES&&(c=c.slice(0,this.MAX_RANGES)),c=c.map(function(e){return new s(l,e.offset,l,e.offset+e.length)}),this.cache[l]=c.length?c:"");for(var h=c.length;h--;)t.drawSingleLineMarker(e,c[h].toScreenRange(i),this.clazz,o)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../range").Range;function s(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var i=t[t.length-1];this.range=new n(t[0].start.row,t[0].start.column,i.end.row,i.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,i){var n,s,o=0,r=this.folds,a=!0;null==t&&(t=this.end.row,i=this.end.column);for(var l=0;l0)){var l=n(e,r.start);return 0===a?t&&0!==l?-o-2:o:l>0||0===l&&!t?o:-o-1}}return-o-1},this.add=function(e){var t=!e.isEmpty(),i=this.pointIndex(e.start,t);i<0&&(i=-i-1);var n=this.pointIndex(e.end,t,i);return n<0?n=-n-1:n++,this.ranges.splice(i,n-i,e)},this.addList=function(e){for(var t=[],i=e.length;i--;)t.push.apply(t,this.add(e[i]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){for(var e,t=[],i=this.ranges,s=(i=i.sort(function(e,t){return n(e.start,t.start)}))[0],o=1;o=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var i=this.ranges;if(i[0].start.row>t||i[i.length-1].start.rown)break;if(c.start.row==n&&c.start.column>=t.column&&(c.start.column==t.column&&this.$insertRight||(c.start.column+=o,c.start.row+=s)),c.end.row==n&&c.end.column>=t.column){if(c.end.column==t.column&&this.$insertRight)continue;c.end.column==t.column&&o>0&&ac.start.column&&c.end.column==r[a+1].start.column&&(c.end.column-=o),c.end.column+=o,c.end.row+=s}}}if(0!=s&&a=e)return s;if(s.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var i=this.$foldData,n=0;for(t&&(n=i.indexOf(t)),-1==n&&(n=0);n=e)return s}return null},this.getFoldedRowCount=function(e,t){for(var i=this.$foldData,n=t-e+1,s=0;s=t){a=e?n-=t-a:n=0);break}r>=e&&(n-=a>=e?r-a:r-e+1)}return n},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var i,n=this.$foldData,r=!1;e instanceof o?i=e:(i=new o(t,e)).collapseChildren=t.collapseChildren,this.$clipRangeToDocument(i.range);var a=i.start.row,l=i.start.column,c=i.end.row,h=i.end.column;if(!(a0&&(this.removeFolds(g),g.forEach(function(e){i.addSubFold(e)}));for(var f=0;f0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var i,s;if(null==e?(i=new n(0,0,this.getLength(),0),t=!0):i="number"==typeof e?new n(e,0,e,this.getLine(e).length):"row"in e?n.fromPoints(e,e):e,s=this.getFoldsInRangeList(i),t)this.removeFolds(s);else for(var o=s;o.length;)this.expandFolds(o),o=this.getFoldsInRangeList(i);if(s.length)return s},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var i=this.getFoldLine(e,t);return i?i.end.row:e},this.getRowFoldStart=function(e,t){var i=this.getFoldLine(e,t);return i?i.start.row:e},this.getFoldDisplayLine=function(e,t,i,n,s){null==n&&(n=e.start.row),null==s&&(s=0),null==t&&(t=e.end.row),null==i&&(i=this.getLine(t).length);var o=this.doc,r="";return e.walk(function(e,t,i,a){if(!(th)break}while(o&&l.test(o.type));o=s.stepBackward()}else o=s.getCurrentToken();return c.end.row=s.getCurrentTokenRow(),c.end.column=s.getCurrentTokenColumn()+o.value.length-2,c}},this.foldAll=function(e,t,i){void 0==i&&(i=1e5);var n=this.foldWidgets;if(n){t=t||this.getLength();for(var s=e=e||0;s=e){s=o.end.row;try{var r=this.addFold("...",o);r&&(r.collapseChildren=i)}catch(e){}}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle!=e){this.$foldStyle=e,"manual"==e&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)}},this.$setFolding=function(e){this.$foldMode!=e&&(this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation"),e&&"manual"!=this.$foldStyle?(this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)):this.foldWidgets=null)},this.getParentFoldRangeData=function(e,t){var i=this.foldWidgets;if(!i||t&&i[e])return{};for(var n,s=e-1;s>=0;){var o=i[s];if(null==o&&(o=i[s]=this.getFoldWidget(s)),"start"==o){var r=this.getFoldWidgetRange(s);if(n||(n=r),r&&r.end.row>=e)break}s--}return{range:-1!==s&&r,firstRange:n}},this.onFoldWidgetClick=function(e,t){var i={children:(t=t.domEvent).shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey};if(!this.$toggleFoldWidget(e,i)){var n=t.target||t.srcElement;n&&/ace_fold-widget/.test(n.className)&&(n.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(this.getFoldWidget){var i=this.getFoldWidget(e),n=this.getLine(e),s="end"===i?-1:1,o=this.getFoldAt(e,-1===s?0:n.length,s);if(o)return t.children||t.all?this.removeFold(o):this.expandFold(o),o;var r=this.getFoldWidgetRange(e,!0);if(r&&!r.isMultiLine()&&(o=this.getFoldAt(r.start.row,r.start.column,1))&&r.isEqual(o.range))return this.removeFold(o),o;if(t.siblings){var a=this.getParentFoldRangeData(e);if(a.range)var l=a.range.start.row+1,c=a.range.end.row;this.foldAll(l,c,t.all?1e4:0)}else t.children?(c=r?r.end.row:this.getLength(),this.foldAll(e+1,c,t.all?1e4:0)):r&&(t.all&&(r.collapseChildren=1e4),this.addFold("...",r));return r}},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var i=this.$toggleFoldWidget(t,{});if(!i){var n=this.getParentFoldRangeData(t,!0);if(i=n.range||n.firstRange){t=i.start.row;var s=this.getFoldAt(t,this.getLine(t).length,1);s?this.removeFold(s):this.addFold("...",i)}}},this.updateFoldWidgets=function(e){var t=e.start.row,i=e.end.row-t;if(0===i)this.foldWidgets[t]=null;else if("remove"==e.action)this.foldWidgets.splice(t,i+1,null);else{var n=Array(i+1);n.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,n)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,i){"use strict";var n=e("../token_iterator").TokenIterator,s=e("../range").Range;t.BracketMatch=function(){this.findMatchingBracket=function(e,t){if(0==e.column)return null;var i=t||this.getLine(e.row).charAt(e.column-1);if(""==i)return null;var n=i.match(/([\(\[\{])|([\)\]\}])/);return n?n[1]?this.$findClosingBracket(n[1],e):this.$findOpeningBracket(n[2],e):null},this.getBracketRange=function(e){var t,i=this.getLine(e.row),n=!0,o=i.charAt(e.column-1),r=o&&o.match(/([\(\[\{])|([\)\]\}])/);if(r||(o=i.charAt(e.column),e={row:e.row,column:e.column+1},r=o&&o.match(/([\(\[\{])|([\)\]\}])/),n=!1),!r)return null;if(r[1]){if(!(a=this.$findClosingBracket(r[1],e)))return null;t=s.fromPoints(e,a),n||(t.end.column++,t.start.column--),t.cursor=t.end}else{var a;if(!(a=this.$findOpeningBracket(r[2],e)))return null;t=s.fromPoints(a,e),n||(t.start.column++,t.end.column--),t.cursor=t.start}return t},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,i){var s=this.$brackets[e],o=1,r=new n(this,t.row,t.column),a=r.getCurrentToken();if(a||(a=r.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-r.getCurrentTokenColumn()-2,c=a.value;;){for(;l>=0;){var h=c.charAt(l);if(h==s){if(0==(o-=1))return{row:r.getCurrentTokenRow(),column:l+r.getCurrentTokenColumn()}}else h==e&&(o+=1);l-=1}do{a=r.stepBackward()}while(a&&!i.test(a.type));if(null==a)break;l=(c=a.value).length-1}return null}},this.$findClosingBracket=function(e,t,i){var s=this.$brackets[e],o=1,r=new n(this,t.row,t.column),a=r.getCurrentToken();if(a||(a=r.stepForward()),a){i||(i=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));for(var l=t.column-r.getCurrentTokenColumn();;){for(var c=a.value,h=c.length;li&&(this.$docRowCache.splice(i,t),this.$screenRowCache.splice(i,t))},this.$getRowCacheIndex=function(e,t){for(var i=0,n=e.length-1;i<=n;){var s=i+n>>1,o=e[s];if(t>o)i=s+1;else{if(!(t=t);o++);return(i=n[o])?(i.index=o,i.start=s-i.value.length,i):null},this.setUndoManager=function(e){if(this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel(),e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=s.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?s.stringRepeat(" ",this.getTabSize()):"\t"},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(n=!!i.charAt(t-1).match(this.tokenRe)),n||(n=!!i.charAt(t).match(this.tokenRe)),n)var s=this.tokenRe;else if(/^\s+$/.test(i.slice(t-1,t+1)))s=/\s/;else s=this.nonTokenRe;var o=t;if(o>0){do{o--}while(o>=0&&i.charAt(o).match(s));o++}for(var r=t;re&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var t=this.doc.getAllLines(),i=this.$rowLengthCache,n=0,s=0,o=this.$foldData[s],r=o?o.start.row:1/0,a=t.length,l=0;lr){if((l=o.end.row+1)>=a)break;r=(o=this.$foldData[s++])?o.start.row:1/0}null==i[l]&&(i[l]=this.$getStringScreenWidth(t[l])[0]),i[l]>n&&(n=i[l])}this.screenWidth=n}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=e.length-1;-1!=n;n--){var s=e[n];"doc"==s.group?(this.doc.revertDeltas(s.deltas),i=this.$getUndoSelection(s.deltas,!0,i)):s.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,i&&this.$undoSelect&&!t&&this.selection.setSelectionRange(i),i}},this.redoChanges=function(e,t){if(e.length){this.$fromUndo=!0;for(var i=null,n=0;ne.end.column&&(o.start.column+=c),o.end.row==e.end.row&&o.end.column>e.end.column&&(o.end.column+=c)),r&&o.start.row>=e.end.row&&(o.start.row+=r,o.end.row+=r)}if(o.end=this.insert(o.start,n),s.length){var a=e.start,l=o.start,c=(r=l.row-a.row,l.column-a.column);this.addFolds(s.map(function(e){return(e=e.clone()).start.row==a.row&&(e.start.column+=c),e.end.row==a.row&&(e.end.column+=c),e.start.row+=r,e.end.row+=r,e}))}return o},this.indentRows=function(e,t,i){i=i.replace(/\t/g,this.getTabString());for(var n=e;n<=t;n++)this.doc.insertInLine({row:n,column:0},i)},this.outdentRows=function(e){for(var t=e.collapseRows(),i=new h(0,0,0,0),n=this.getTabSize(),s=t.start.row;s<=t.end.row;++s){var o=this.getLine(s);i.start.row=s,i.end.row=s;for(var r=0;r0){var s;if((s=this.getRowFoldEnd(t+i))>this.doc.getLength()-1)return 0;n=s-t}else{e=this.$clipRowToDocument(e);n=(t=this.$clipRowToDocument(t))-e+1}var o=new h(e,0,t,Number.MAX_VALUE),r=this.getFoldsInRange(o).map(function(e){return(e=e.clone()).start.row+=n,e.end.row+=n,e}),a=0==i?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+n,a),r.length&&this.addFolds(r),n},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){if(t=Math.max(0,t),e<0)e=0,t=0;else{var i=this.doc.getLength();e>=i?(e=i-1,t=this.doc.getLine(i-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){if(this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0),e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){this.$wrapLimitRange.min===e&&this.$wrapLimitRange.max===t||(this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},this.adjustWrapLimit=function(e,t){var i=this.$wrapLimitRange;i.max<0&&(i={min:t,max:t});var n=this.$constrainWrapLimit(e,i.min,i.max);return n!=this.$wrapLimit&&n>1&&(this.$wrapLimit=n,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0)},this.$constrainWrapLimit=function(e,t,i){return t&&(e=Math.max(t,e)),i&&(e=Math.min(i,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,i=e.action,n=e.start,s=e.end,o=n.row,r=s.row,a=r-o,l=null;if(this.$updating=!0,0!=a)if("remove"===i){this[t?"$wrapData":"$rowLengthCache"].splice(o,a);var c=this.$foldData;l=this.getFoldsInRange(e),this.removeFolds(l);var h=0;if(m=this.getFoldLine(s.row)){m.addRemoveChars(s.row,s.column,n.column-s.column),m.shiftRow(-a);var u=this.getFoldLine(o);u&&u!==m&&(u.merge(m),m=u),h=c.indexOf(m)+1}for(;h=s.row&&m.shiftRow(-a)}r=o}else{var d=Array(a);d.unshift(o,0);var g=t?this.$wrapData:this.$rowLengthCache;g.splice.apply(g,d);c=this.$foldData,h=0;if(m=this.getFoldLine(o)){var f=m.range.compareInside(n.row,n.column);0==f?(m=m.split(n.row,n.column))&&(m.shiftRow(a),m.addRemoveChars(r,0,s.column-n.column)):-1==f&&(m.addRemoveChars(o,0,s.column-n.column),m.shiftRow(a)),h=c.indexOf(m)+1}for(;h=o&&m.shiftRow(a)}}else a=Math.abs(e.start.column-e.end.column),"remove"===i&&(l=this.getFoldsInRange(e),this.removeFolds(l),a=-a),(m=this.getFoldLine(o))&&m.addRemoveChars(o,n.column,a);return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(o,r):this.$updateRowLengthCache(o,r),l},this.$updateRowLengthCache=function(e,t,i){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(i,n){var s,o,r=this.doc.getAllLines(),a=this.getTabSize(),l=this.$wrapData,c=this.$wrapLimit,h=i;for(n=Math.min(n,r.length-1);h<=n;)(o=this.getFoldLine(h,o))?(s=[],o.walk(function(i,n,o,a){var l;if(null!=i){(l=this.$getDisplayTokens(i,s.length))[0]=e;for(var c=1;c=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510)}this.$computeWrapSplits=function(n,s,r){if(0==n.length)return[];var a=[],c=n.length,h=0,u=0,d=this.$wrapAsCode,g=this.$indentedSoftWrap,f=s<=Math.max(2*r,8)||!1===g?0:Math.floor(s/2);function m(e){var t=n.slice(h,e),s=t.length;t.join("").replace(/12/g,function(){s-=1}).replace(/2/g,function(){s-=1}),a.length||(p=function(){var e=0;if(0===f)return e;if(g)for(var t=0;ts-p;){var A=h+s-p;if(n[A-1]>=i&&n[A]>=i)m(A);else if(n[A]!=e&&n[A]!=t){for(var C=Math.max(A-(s-(s>>2)),h-1);A>C&&n[A]C&&n[A]C&&9==n[A];)A--}else for(;A>C&&n[A]C?m(++A):(2==n[A=h+s]&&A--,m(A-p))}else{for(;A!=h-1&&n[A]!=e;A--);if(A>h){m(A);continue}for(A=h+s;A39&&a<48||a>57&&a<64?s.push(9):a>=4352&&u(a)?s.push(1,2):s.push(1)}return s},this.$getStringScreenWidth=function(e,t,i){if(0==t)return[0,0];var n,s;for(null==t&&(t=1/0),i=i||0,s=0;s=4352&&u(n)?i+=2:i+=1,!(i>t));s++);return[i,s]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.getRowLineCount=function(e){return this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1:1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),i=this.$wrapData[t.row];return i.length&&i[0]=0){a=c[h],o=this.$docRowCache[h];var d=e>c[u-1]}else d=!u;for(var g=this.getLength()-1,f=this.getNextFoldLine(o),m=f?f.start.row:1/0;a<=e&&!(a+(l=this.getRowLength(o))>e||o>=g);)a+=l,++o>m&&(o=f.end.row+1,m=(f=this.getNextFoldLine(o,f))?f.start.row:1/0),d&&(this.$docRowCache.push(o),this.$screenRowCache.push(a));if(f&&f.start.row<=o)n=this.getFoldDisplayLine(f),o=f.start.row;else{if(a+l<=e||o>g)return{row:g,column:this.getLine(g).length};n=this.getLine(o),f=null}var p=0,A=Math.floor(e-a);if(this.$useWrapMode){var C=this.$wrapData[o];C&&(s=C[A],A>0&&C.length&&(p=C.indent,r=C[A-1]||C[C.length-1],n=n.substring(r)))}return void 0!==i&&this.$bidiHandler.isBidiRow(a+A,o,A)&&(t=this.$bidiHandler.offsetToCol(i)),r+=this.$getStringScreenWidth(n,t-p)[1],this.$useWrapMode&&r>=s&&(r=s-1),f?f.idxToPosition(r):{row:o,column:r}},this.documentToScreenPosition=function(e,t){if(void 0===t)var i=this.$clipPositionToDocument(e.row,e.column);else i=this.$clipPositionToDocument(e,t);e=i.row,t=i.column;var n,s=0,o=null;(n=this.getFoldAt(e,t,1))&&(e=n.start.row,t=n.start.column);var r,a=0,l=this.$docRowCache,c=this.$getRowCacheIndex(l,e),h=l.length;if(h&&c>=0){a=l[c],s=this.$screenRowCache[c];var u=e>l[h-1]}else u=!h;for(var d=this.getNextFoldLine(a),g=d?d.start.row:1/0;a=g){if((r=d.end.row+1)>e)break;g=(d=this.getNextFoldLine(r,d))?d.start.row:1/0}else r=a+1;s+=this.getRowLength(a),a=r,u&&(this.$docRowCache.push(a),this.$screenRowCache.push(s))}var f="";d&&a>=g?(f=this.getFoldDisplayLine(d,e,t),o=d.start.row):(f=this.getLine(e).substring(0,t),o=e);var m=0;if(this.$useWrapMode){var p=this.$wrapData[o];if(p){for(var A=0;f.length>=p[A];)s++,A++;f=f.substring(p[A-1]||0,f.length),m=A>0?p.indent:0}}return{row:s,column:m+this.$getStringScreenWidth(f)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(this.$useWrapMode)for(var i=this.$wrapData.length,n=0,s=(a=0,(t=this.$foldData[a++])?t.start.row:1/0);ns&&(n=t.end.row+1,s=(t=this.$foldData[a++])?t.start.row:1/0)}else{e=this.getLength();for(var r=this.$foldData,a=0;ai);o++);return[n,o]})},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=u}.call(f.prototype),e("./edit_session/folding").Folding.call(f.prototype),e("./edit_session/bracket_match").BracketMatch.call(f.prototype),r.defineOptions(f.prototype,"session",{wrap:{set:function(e){if(e&&"off"!=e?"free"==e?e=!0:"printMargin"==e?e=-1:"string"==typeof e&&(e=parseInt(e,10)||!1):e=!1,this.$wrap!=e)if(this.$wrap=e,e){var t="number"==typeof e?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}else this.setUseWrapMode(!1)},get:function(){return this.getUseWrapMode()?-1==this.$wrap?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){(e="auto"==e?"text"!=this.$mode.type:"text"!=e)!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){isNaN(e)||this.$tabSize===e||(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=f}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,i){"use strict";var n=e("./lib/lang"),s=e("./lib/oop"),o=e("./range").Range,r=function(){this.$options={}};(function(){this.set=function(e){return s.mixin(this.$options,e),this},this.getOptions=function(){return n.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,i=this.$matchIterator(e,t);if(!i)return!1;var n=null;return i.forEach(function(e,i,s,r){return n=new o(e,i,s,r),!(i==r&&t.start&&t.start.start&&0!=t.skipCurrent&&n.isEqual(t.start))||(n=null,!1)}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var i=t.range,s=i?e.getLines(i.start.row,i.end.row):e.doc.getAllLines(),r=[],a=t.re;if(t.$isMultiLine){var l,c=a.length,h=s.length-c;e:for(var u=a.offset||0;u<=h;u++){for(var d=0;dm||(r.push(l=new o(u,m,u+c-1,p)),c>2&&(u=u+c-2))}}else for(var A=0;AF&&r[d].end.row==i.end.row;)d--;for(r=r.slice(A,d+1),A=0,d=r.length;A=a;i--)if(u(i,Number.MAX_VALUE,e))return;if(0!=t.wrap)for(i=l,a=r.row;i>=a;i--)if(u(i,Number.MAX_VALUE,e))return}};else c=function(e){var i=r.row;if(!u(i,r.column,e)){for(i+=1;i<=l;i++)if(u(i,0,e))return;if(0!=t.wrap)for(i=a,l=r.row;i<=l;i++)if(u(i,0,e))return}};if(t.$isMultiLine)var h=i.length,u=function(t,s,o){var r=n?t-h+1:t;if(!(r<0)){var a=e.getLine(r),l=a.search(i[0]);if(!(!n&&ls))return!!o(r,l,r+h-1,u)||void 0}}};else if(n)u=function(t,n,s){var o,r=e.getLine(t),a=[],l=0;for(i.lastIndex=0;o=i.exec(r);){var c=o[0].length;if(l=o.index,!c){if(l>=r.length)break;i.lastIndex=l+=1}if(o.index+c>n)break;a.push(o.index,c)}for(var h=a.length-1;h>=0;h-=2){var u=a[h-1];if(s(t,u,t,u+(c=a[h])))return!0}};else u=function(t,n,s){var o,r=e.getLine(t),a=n;for(i.lastIndex=n;o=i.exec(r);){var l=o[0].length;if(s(t,a=o.index,t,a+l))return!0;if(!l&&(i.lastIndex=a+=1,a>=r.length))return!1}};return{forEach:c}}}).call(r.prototype),t.Search=r}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,i){"use strict";var n=e("../lib/keys"),s=e("../lib/useragent"),o=n.KEY_MODS;function r(e,t){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function a(e,t){r.call(this,e,t),this.$singleCommand=!1}a.prototype=r.prototype,function(){function e(e){return"object"==typeof e&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var i=e&&("string"==typeof e?e:e.name);e=this.commands[i],t||delete this.commands[i];var n=this.commandKeyBinding;for(var s in n){var o=n[s];if(o==e)delete n[s];else if(Array.isArray(o)){var r=o.indexOf(e);-1!=r&&(o.splice(r,1),1==o.length&&(n[s]=o[0]))}}},this.bindKey=function(e,t,i){if("object"==typeof e&&e&&(void 0==i&&(i=e.position),e=e[this.platform]),e)return"function"==typeof t?this.addCommand({exec:t,bindKey:e,name:t.name||e}):void e.split("|").forEach(function(e){var n="";if(-1!=e.indexOf(" ")){var s=e.split(/\s+/);e=s.pop(),s.forEach(function(e){var t=this.parseKeys(e),i=o[t.hashId]+t.key;n+=(n?" ":"")+i,this._addCommandToBinding(n,"chainKeys")},this),n+=" "}var r=this.parseKeys(e),a=o[r.hashId]+r.key;this._addCommandToBinding(n+a,t,i)},this)},this._addCommandToBinding=function(t,i,n){var s,o=this.commandKeyBinding;if(i)if(!o[t]||this.$singleCommand)o[t]=i;else{Array.isArray(o[t])?-1!=(s=o[t].indexOf(i))&&o[t].splice(s,1):o[t]=[o[t]],"number"!=typeof n&&(n=e(i));var r=o[t];for(s=0;sn)break}r.splice(s,0,i)}else delete o[t]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var i=e[t];if(i){if("string"==typeof i)return this.bindKey(i,t);"function"==typeof i&&(i={exec:i}),"object"==typeof i&&(i.name||(i.name=t),this.addCommand(i))}},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),i=t.pop(),s=n[i];if(n.FUNCTION_KEYS[s])i=n.FUNCTION_KEYS[s].toLowerCase();else{if(!t.length)return{key:i,hashId:-1};if(1==t.length&&"shift"==t[0])return{key:i.toUpperCase(),hashId:-1}}for(var o=0,r=t.length;r--;){var a=n.KEY_MODS[t[r]];if(null==a)return"undefined"!=typeof console&&console.error("invalid modifier "+t[r]+" in "+e),!1;o|=a}return{key:i,hashId:o}},this.findKeyCommand=function(e,t){var i=o[e]+t;return this.commandKeyBinding[i]},this.handleKeyboard=function(e,t,i,n){if(!(n<0)){var s=o[t]+i,r=this.commandKeyBinding[s];return e.$keyChain&&(e.$keyChain+=" "+s,r=this.commandKeyBinding[e.$keyChain]||r),!r||"chainKeys"!=r&&"chainKeys"!=r[r.length-1]?(e.$keyChain&&(t&&4!=t||1!=i.length?(-1==t||n>0)&&(e.$keyChain=""):e.$keyChain=e.$keyChain.slice(0,-s.length-1)),{command:r}):(e.$keyChain=e.$keyChain||s,{command:"null"})}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(r.prototype),t.HashHandler=r,t.MultiHashHandler=a}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),s=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,r=function(e,t){s.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};n.inherits(r,s),function(){n.implement(this,o),this.exec=function(e,t,i){if(Array.isArray(e)){for(var n=e.length;n--;)if(this.exec(e[n],t,i))return!0;return!1}if("string"==typeof e&&(e=this.commands[e]),!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(e.isAvailable&&!e.isAvailable(t))return!1;var s={editor:t,command:e,args:i};return s.returnValue=this._emit("exec",s),this._signal("afterExec",s),!1!==s.returnValue},this.toggleRecording=function(e){if(!this.$inReplay)return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(!this.$inReplay&&this.macro){if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){"string"==typeof t?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}}},this.trimMacro=function(e){return e.map(function(e){return"string"!=typeof e[0]&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(r.prototype),t.CommandManager=r}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,i){"use strict";var n=e("../lib/lang"),s=e("../config"),o=e("../range").Range;function r(e,t){return{win:e,mac:t}}t.commands=[{name:"showSettingsMenu",bindKey:r("Ctrl-,","Command-,"),exec:function(e){s.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:r("Alt-E","F4"),exec:function(e){s.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:r("Alt-Shift-E","Shift-F4"),exec:function(e){s.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:r("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:r(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:r("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:r("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:r("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:r("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:r("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:r(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:r("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:r("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:r("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:r("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:r("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:r("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:r("Ctrl-F","Command-F"),exec:function(e){s.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:r("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:r("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:r("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:r("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:r("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:r("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:r("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:r("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:r("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:r("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:r("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:r("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:r("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:r("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:r("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:r("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:r("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:r("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:r("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:r("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:r(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:r("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:r(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:r("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:r("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:r("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:r("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:r("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:r("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:r("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:r(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:r("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:r("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:r("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:r("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:r("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:r("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:r("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:r("Ctrl-H","Command-Option-F"),exec:function(e){s.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:r("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:r("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:r("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:r("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:r("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:r("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:r("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:r("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:r("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:r("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:r("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",bindKey:r("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",bindKey:r("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:r("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:r("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:r("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:r("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:r("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:r("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(n.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:r(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:r("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:r("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:r("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:r("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:r(null,null),exec:function(e){for(var t=e.selection.isBackwards(),i=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),s=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),r=e.session.doc.getLine(i.row).length,a=e.session.doc.getTextRange(e.selection.getRange()).replace(/\n\s*/," ").length,l=e.session.doc.getLine(i.row),c=i.row+1;c<=s.row+1;c++){var h=n.stringTrimLeft(n.stringTrimRight(e.session.doc.getLine(c)));0!==h.length&&(h=" "+h),l+=h}s.row+10?(e.selection.moveCursorTo(i.row,i.column),e.selection.selectTo(i.row,i.column+a)):(r=e.session.doc.getLine(i.row).length>r?r+1:r,e.selection.moveCursorTo(i.row,r))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:r(null,null),exec:function(e){var t=e.session.doc.getLength()-1,i=e.session.doc.getLine(t).length,n=e.selection.rangeList.ranges,s=[];n.length<1&&(n=[e.selection.getRange()]);for(var r=0;r0&&this.$blockScrolling--;var i=t&&t.scrollIntoView;if(i){switch(i){case"center-animate":i="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),s=this.renderer.layerConfig;(n.start.row>=s.lastRow||n.end.row<=s.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead)}"animate"==i&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(this.$mergeUndoDeltas){var t=this.prevOp,i=this.$mergeableCommands,n=t.command&&e.command.name==t.command.name;if("insertstring"==e.command.name){var s=e.args;void 0===this.mergeNextCommand&&(this.mergeNextCommand=!0),n=n&&this.mergeNextCommand&&(!/\s/.test(s)||/\s/.test(t.args)),this.mergeNextCommand=!0}else n=n&&-1!==i.indexOf(e.command.name);"always"!=this.$mergeUndoDeltas&&Date.now()-this.sequenceStartTime>2e3&&(n=!1),n?this.session.mergeUndoDeltas=!0:-1!==i.indexOf(e.command.name)&&(this.sequenceStartTime=Date.now())}},this.setKeyboardHandler=function(e,t){if(e&&"string"==typeof e){this.$keybindingId=e;var i=this;A.loadModule(["keybinding",e],function(n){i.$keybindingId==e&&i.keyBinding.setKeyboardHandler(n&&n.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session!=e){this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var i=this.session.getSelection();i.off("changeCursor",this.$onCursorChange),i.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&e.bgTokenizer&&e.bgTokenizer.scheduleStart()}},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?1==t?this.navigateFileEnd():-1==t&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||s.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null),!this.$highlightPending){var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=t.findMatchingBracket(e.getCursorPosition());if(i)var n=new g(i.row,i.column,i.row,i.column+1);else if(t.$mode.getMatching)n=t.$mode.getMatching(e.session);n&&(t.$bracketHighlight=t.addMarker(n,"ace_bracket","text"))}},50)}},this.$highlightTags=function(){if(!this.$highlightTagPending){var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(t&&t.bgTokenizer){var i=e.getCursorPosition(),n=new C(e.session,i.row,i.column),s=n.getCurrentToken();if(!s||!/\b(?:tag-open|tag-name)/.test(s.type))return t.removeMarker(t.$tagHighlight),void(t.$tagHighlight=null);if(-1==s.type.indexOf("tag-open")||(s=n.stepForward())){var o=s.value,r=0,a=n.stepBackward();if("<"==a.value)do{a=s,(s=n.stepForward())&&s.value===o&&-1!==s.type.indexOf("tag-name")&&("<"===a.value?r++:"=0);else{do{s=a,a=n.stepBackward(),s&&s.value===o&&-1!==s.type.indexOf("tag-name")&&("<"===a.value?r++:"1||(e=!1)),t.$highlightLineMarker&&!e)t.removeMarker(t.$highlightLineMarker.id),t.$highlightLineMarker=null;else if(!t.$highlightLineMarker&&e){var i=new g(e.row,e.column,e.row,1/0);i.id=t.addMarker(i,"ace_active-line","screenLine"),t.$highlightLineMarker=i}else e&&(t.$highlightLineMarker.start.row=e.row,t.$highlightLineMarker.end.row=e.row,t.$highlightLineMarker.start.column=e.column,t._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;if(t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var i=this.selection.getRange(),n=this.getSelectionStyle();t.$selectionMarker=t.addMarker(i,"ace_selection",n)}var s=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(s),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(!t.isEmpty()&&!t.isMultiLine()){var i=t.start.column-1,n=t.end.column+1,s=e.getLine(t.start.row),o=s.length,r=s.substring(Math.max(i,0),Math.min(n,o));if(!(i>=0&&/^[\w\d]/.test(r)||n<=o&&/[\w\d]$/.test(r)))if(r=s.substring(t.start.column,t.end.column),/^[\w\d]+$/.test(r))return this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:r})}},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var i={text:e,event:t};this.commands.exec("paste",this,i)},this.$handlePaste=function(e){"string"==typeof e&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var i=t.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(i.length>n.length||i.length<2||!i[1])return this.commands.exec("insertstring",this,t);for(var s=n.length;s--;){var o=n[s];o.isEmpty()||this.session.remove(o),this.session.insert(o.start,i[s])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var i=this.session,n=i.getMode(),s=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var o=n.transformAction(i.getState(s.row),"insertion",this,i,e);o&&(e!==o.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=o.text)}if("\t"==e&&(e=this.session.getTabString()),this.selection.isEmpty()){if(this.session.getOverwrite()&&-1==e.indexOf("\n")){(r=new g.fromPoints(s,s)).end.column+=e.length,this.session.remove(r)}}else{var r=this.getSelectionRange();s=this.session.remove(r),this.clearSelection()}if("\n"==e||"\r\n"==e){var a=i.getLine(s.row);if(s.column>a.search(/\S|$/)){var l=a.substr(s.column).search(/\S|$/);i.doc.removeInLine(s.row,s.column,s.column+l)}}this.clearSelection();var c=s.column,h=i.getState(s.row),u=(a=i.getLine(s.row),n.checkOutdent(h,a,e));i.insert(s,e);if(o&&o.selection&&(2==o.selection.length?this.selection.setSelectionRange(new g(s.row,c+o.selection[0],s.row,c+o.selection[1])):this.selection.setSelectionRange(new g(s.row+o.selection[0],o.selection[1],s.row+o.selection[2],o.selection[3]))),i.getDocument().isNewLine(e)){var d=n.getNextLineIndent(h,a.slice(0,s.column),i.getTabString());i.insert({row:s.row+1,column:0},d)}u&&n.autoOutdent(h,i,s.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,i){this.keyBinding.onCommandKey(e,t,i)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&("left"==e?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var i=this.session,n=i.getState(t.start.row),s=i.getMode().transformAction(n,"deletion",this,i,t);if(0===t.end.column){var o=i.getTextRange(t);if("\n"==o[o.length-1]){var r=i.getLine(t.end.row);/^\s+$/.test(r)&&(t.end.column=r.length)}}s&&(t=s)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(this.selection.isEmpty()){var e=this.getCursorPosition(),t=e.column;if(0!==t){var i,n,s=this.session.getLine(e.row);tt.toLowerCase()?1:0});var s=new g(0,0,0,0);for(n=e.first;n<=e.last;n++){var o=t.getLine(n);s.start.row=n,s.end.row=n,s.end.column=o.length,t.replace(s,i[n-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),i=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,i,e)},this.getNumberAt=function(e,t){var i=/[\-]?[0-9]+(?:\.[0-9]+)?/g;i.lastIndex=0;for(var n=this.session.getLine(e);i.lastIndex=t)return{value:s[0],start:s.index,end:s.index+s[0].length}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,i=this.selection.getCursor().column,n=new g(t,i-1,t,i),s=this.session.getTextRange(n);if(!isNaN(parseFloat(s))&&isFinite(s)){var o=this.getNumberAt(t,i);if(o){var r=o.value.indexOf(".")>=0?o.start+o.value.indexOf(".")+1:o.end,a=o.start+o.value.length-r,l=parseFloat(o.value);l*=Math.pow(10,a),r!==o.end&&ig+1)break;g=f.last}for(h--,a=this.session.$moveLines(d,g,t?0:e),t&&-1==e&&(u=h+1);u<=h;)r[u].moveBy(a,0),u++;t||(a=0),l+=a}s.fromOrientedRange(s.ranges[0]),s.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var i=this.renderer,n=this.renderer.layerConfig,s=e*Math.floor(n.height/n.lineHeight);this.$blockScrolling++,!0===t?this.selection.$moveSelection(function(){this.moveCursorBy(s,0)}):!1===t&&(this.selection.moveCursorBy(s,0),this.selection.clearSelection()),this.$blockScrolling--;var o=i.scrollTop;i.scrollBy(0,s*n.lineHeight),null!=t&&i.scrollCursorIntoView(null,.5),i.animateScrolling(o)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,i,n){this.renderer.scrollToLine(e,t,i,n)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var i=this.getCursorPosition(),n=new C(this.session,i.row,i.column),s=n.getCurrentToken(),o=s||n.stepForward();if(o){var r,a,l=!1,c={},h=i.column-o.start,u={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(o.value.match(/[{}()\[\]]/g)){for(;h=0;--o)this.$tryReplace(i[o],e)&&n++;return this.selection.setSelectionRange(s),this.$blockScrolling-=1,n},this.$tryReplace=function(e,t){var i=this.session.getTextRange(e);return null!==(t=this.$search.replace(i,t))?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,i){t||(t={}),"string"==typeof e||e instanceof RegExp?t.needle=e:"object"==typeof e&&n.mixin(t,e);var s=this.selection.getRange();null==t.needle&&((e=this.session.getTextRange(s)||this.$search.$options.needle)||(s=this.session.getWordRange(s.start.row,s.start.column),e=this.session.getTextRange(s)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:s});var o=this.$search.find(this.session);return t.preventScroll?o:o?(this.revealRange(o,i),o):(t.backwards?s.start=s.end:s.end=s.start,void this.selection.setRange(s))},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var i=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),!1!==t&&this.renderer.animateScrolling(i)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(e){var t,i=this,n=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var s=this.$scrollAnchor;s.style.cssText="position:absolute",this.container.insertBefore(s,this.container.firstChild);var o=this.on("changeSelection",function(){n=!0}),r=this.renderer.on("beforeRender",function(){n&&(t=i.renderer.container.getBoundingClientRect())}),a=this.renderer.on("afterRender",function(){if(n&&t&&(i.isFocused()||i.searchBox&&i.searchBox.isFocused())){var e=i.renderer,o=e.$cursorLayer.$pixelPos,r=e.layerConfig,a=o.top-r.offset;null!=(n=o.top>=0&&a+t.top<0||!(o.topwindow.innerHeight)&&null)&&(s.style.top=a+"px",s.style.left=o.left+"px",s.style.height=r.lineHeight+"px",s.scrollIntoView(n)),n=t=null}});this.setAutoScrollEditorIntoView=function(e){e||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",o),this.renderer.off("afterRender",a),this.renderer.off("beforeRender",r))}}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;t&&(t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&"wide"!=e,s.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e)))}}.call(v.prototype),A.defineOptions(v.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=v}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,i){"use strict";var n=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:1==e.lines.length?null:e.lines,text:1==e.lines.length?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function i(e,t){for(var i=new Array(e.length),n=0;n0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return 0===this.dirtyCounter},this.$serializeDeltas=function(t){return i(t,e)},this.$deserializeDeltas=function(e){return i(e,t)}}).call(n.prototype),t.UndoManager=n}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/dom"),s=e("../lib/oop"),o=e("../lib/lang"),r=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=n.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){s.implement(this,r),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;tr&&(m=o.end.row+1,r=(o=t.getNextFoldLine(m,o))?o.start.row:1/0),m>s){for(;this.$cells.length>f+1;)g=this.$cells.pop(),this.element.removeChild(g.element);break}(g=this.$cells[++f])||((g={element:null,textNode:null,foldWidget:null}).element=n.createElement("div"),g.textNode=document.createTextNode(""),g.element.appendChild(g.textNode),this.element.appendChild(g.element),this.$cells[f]=g);var p="ace_gutter-cell ";if(l[m]&&(p+=l[m]),c[m]&&(p+=c[m]),this.$annotations[m]&&(p+=this.$annotations[m].className),g.element.className!=p&&(g.element.className=p),(C=t.getRowLength(m)*e.lineHeight+"px")!=g.element.style.height&&(g.element.style.height=C),a){var A=a[m];null==A&&(A=a[m]=t.getFoldWidget(m))}if(A){g.foldWidget||(g.foldWidget=n.createElement("span"),g.element.appendChild(g.foldWidget));p="ace_fold-widget ace_"+A;"start"==A&&m==r&&mi.right-t.right?"foldWidgets":void 0}}).call(a.prototype),t.Gutter=a}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,i){"use strict";var n=e("../range").Range,s=e("../lib/dom"),o=function(e){this.element=s.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,i,n){return(e?1:0)|(t?2:0)|(i?4:0)|(n?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){if(e){this.config=e;var t=[];for(var i in this.markers){var n=this.markers[i];if(n.range){var s=n.range.clipRows(e.firstRow,e.lastRow);if(!s.isEmpty())if(s=s.toScreenRange(this.session),n.renderer){var o=this.$getTop(s.start.row,e),r=this.$padding+(this.session.$bidiHandler.isBidiRow(s.start.row)?this.session.$bidiHandler.getPosLeft(s.start.column):s.start.column*e.characterWidth);n.renderer(t,s,r,o,e)}else"fullLine"==n.type?this.drawFullLineMarker(t,s,n.clazz,e):"screenLine"==n.type?this.drawScreenLineMarker(t,s,n.clazz,e):s.isMultiLine()?"text"==n.type?this.drawTextMarker(t,s,n.clazz,e):this.drawMultiLineMarker(t,s,n.clazz,e):this.session.$bidiHandler.isBidiRow(s.start.row)?this.drawBidiSingleLineMarker(t,s,n.clazz+" ace_start ace_br15",e):this.drawSingleLineMarker(t,s,n.clazz+" ace_start ace_br15",e)}else n.update(t,this,this.session,e)}this.element.innerHTML=t.join("")}},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,i,s,o,r){for(var a=this.session,l=i.start.row,c=i.end.row,h=l,u=0,d=0,g=a.getScreenLastRowColumn(h),f=null,m=new n(h,i.start.column,h,d);h<=c;h++)m.start.row=m.end.row=h,m.start.column=h==l?i.start.column:a.getRowWrapIndent(h),m.end.column=g,u=d,d=g,g=h+1g,h==c),this.session.$bidiHandler.isBidiRow(h)?this.drawBidiSingleLineMarker(t,m,f,o,h==c?0:1,r):this.drawSingleLineMarker(t,m,f,o,h==c?0:1,r)},this.drawMultiLineMarker=function(e,t,i,n,s){var o,r,a,l=this.$padding;(s=s||"",this.session.$bidiHandler.isBidiRow(t.start.row))?((c=t.clone()).end.row=c.start.row,c.end.column=this.session.getLine(c.start.row).length,this.drawBidiSingleLineMarker(e,c,i+" ace_br1 ace_start",n,null,s)):(o=n.lineHeight,r=this.$getTop(t.start.row,n),a=l+t.start.column*n.characterWidth,e.push("
"));if(this.session.$bidiHandler.isBidiRow(t.end.row)){var c;(c=t.clone()).start.row=c.end.row,c.start.column=0,this.drawBidiSingleLineMarker(e,c,i+" ace_br12",n,null,s)}else{var h=t.end.column*n.characterWidth;o=n.lineHeight,r=this.$getTop(t.end.row,n),e.push("
")}if(!((o=(t.end.row-t.start.row-1)*n.lineHeight)<=0)){r=this.$getTop(t.start.row+1,n);var u=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")}},this.drawSingleLineMarker=function(e,t,i,n,s,o){var r=n.lineHeight,a=(t.end.column+(s||0)-t.start.column)*n.characterWidth,l=this.$getTop(t.start.row,n),c=this.$padding+t.start.column*n.characterWidth;e.push("
")},this.drawBidiSingleLineMarker=function(e,t,i,n,s,o){var r=n.lineHeight,a=this.$getTop(t.start.row,n),l=this.$padding;this.session.$bidiHandler.getSelections(t.start.column,t.end.column).forEach(function(t){e.push("
")})},this.drawFullLineMarker=function(e,t,i,n,s){var o=this.$getTop(t.start.row,n),r=n.lineHeight;t.start.row!=t.end.row&&(r+=this.$getTop(t.end.row,n)-o),e.push("
")},this.drawScreenLineMarker=function(e,t,i,n,s){var o=this.$getTop(t.start.row,n),r=n.lineHeight;e.push("
")}}).call(o.prototype),t.Marker=o}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("../lib/oop"),s=e("../lib/dom"),o=e("../lib/lang"),r=(e("../lib/useragent"),e("../lib/event_emitter").EventEmitter),a=function(e){this.element=s.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){n.implement(this,r),this.EOF_CHAR="¶",this.EOL_CHAR_LF="¬",this.EOL_CHAR_CRLF="¤",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="—",this.SPACE_CHAR="·",this.$padding=0,this.$updateEolChar=function(){var e="\n"==this.session.doc.getNewLineCharacter()?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles!=e&&(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides!=e&&(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;for(var t=this.$tabStrings=[0],i=1;i"+o.stringRepeat(this.TAB_CHAR,i)+""):t.push(o.stringRepeat(" ",i));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var n="ace_indent-guide",s="",r="";if(this.showInvisibles){n+=" ace_invisible",s=" ace_invisible_space",r=" ace_invisible_tab";var a=o.stringRepeat(this.SPACE_CHAR,this.tabSize),l=o.stringRepeat(this.TAB_CHAR,this.tabSize)}else l=a=o.stringRepeat(" ",this.tabSize);this.$tabStrings[" "]=""+a+"",this.$tabStrings["\t"]=""+l+""}},this.updateLines=function(e,t,i){this.config.lastRow==e.lastRow&&this.config.firstRow==e.firstRow||this.scrollLines(e),this.config=e;for(var n=Math.max(t,e.firstRow),s=Math.min(i,e.lastRow),o=this.element.childNodes,r=0,a=e.firstRow;ac&&(a=l.end.row+1,c=(l=this.session.getNextFoldLine(a,l))?l.start.row:1/0),!(a>s);){var h=o[r++];if(h){var u=[];this.$renderLine(u,a,!this.$useLineGroups(),a==c&&l),h.style.height=e.lineHeight*this.session.getRowLength(a)+"px",h.innerHTML=u.join("")}a++}},this.scrollLines=function(e){var t=this.config;if(this.config=e,!t||t.lastRow0;n--)i.removeChild(i.firstChild);if(t.lastRow>e.lastRow)for(n=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);n>0;n--)i.removeChild(i.lastChild);if(e.firstRowt.lastRow){s=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);i.appendChild(s)}},this.$renderLinesFragment=function(e,t,i){for(var n=this.element.ownerDocument.createDocumentFragment(),o=t,r=this.session.getNextFoldLine(o),a=r?r.start.row:1/0;o>a&&(o=r.end.row+1,a=(r=this.session.getNextFoldLine(o,r))?r.start.row:1/0),!(o>i);){var l=s.createElement("div"),c=[];if(this.$renderLine(c,o,!1,o==a&&r),l.innerHTML=c.join(""),this.$useLineGroups())l.className="ace_line_group",n.appendChild(l),l.style.height=e.lineHeight*this.session.getRowLength(o)+"px";else for(;l.firstChild;)n.appendChild(l.firstChild);o++}return n},this.update=function(e){this.config=e;for(var t=[],i=e.firstRow,n=e.lastRow,s=i,o=this.session.getNextFoldLine(s),r=o?o.start.row:1/0;s>r&&(s=o.end.row+1,r=(o=this.session.getNextFoldLine(s,o))?o.start.row:1/0),!(s>n);)this.$useLineGroups()&&t.push("
"),this.$renderLine(t,s,!1,s==r&&o),this.$useLineGroups()&&t.push("
"),s++;this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,i,n){var s=this,r=n.replace(/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,function(e,i,n,r,a){if(i)return s.showInvisibles?""+o.stringRepeat(s.SPACE_CHAR,e.length)+"":e;if("&"==e)return"&";if("<"==e)return"<";if(">"==e)return">";if("\t"==e){var l=s.session.getScreenTabSize(t+r);return t+=l-1,s.$tabStrings[l]}if(" "==e){var c=s.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",h=s.showInvisibles?s.SPACE_CHAR:"";return t+=1,""+h+""}return n?""+s.SPACE_CHAR+"":(t+=1,""+e+"")});if(this.$textToken[i.type])e.push(r);else{var a="ace_"+i.type.replace(/\./g," ace_"),l="";"fold"==i.type&&(l=" style='width:"+i.value.length*this.config.characterWidth+"px;' "),e.push("",r,"")}return t+n.length},this.renderIndentGuide=function(e,t,i){var n=t.search(this.$indentGuideRe);return n<=0||n>=i?t:" "==t[0]?(n-=n%this.tabSize,e.push(o.stringRepeat(this.$tabStrings[" "],n/this.tabSize)),t.substr(n)):"\t"==t[0]?(e.push(o.stringRepeat(this.$tabStrings["\t"],n)),t.substr(n)):t},this.$renderWrappedLine=function(e,t,i,n){for(var s=0,r=0,a=i[0],l=0,c=0;c=a;)l=this.$renderToken(e,l,h,u.substring(0,a-s)),u=u.substring(a-s),s=a,n||e.push("","
"),e.push(o.stringRepeat(" ",i.indent)),l=0,a=i[++r]||Number.MAX_VALUE;0!=u.length&&(s+=u.length,l=this.$renderToken(e,l,h,u))}}},this.$renderSimpleLine=function(e,t){var i=0,n=t[0],s=n.value;this.displayIndentGuides&&(s=this.renderIndentGuide(e,s)),s&&(i=this.$renderToken(e,i,n,s));for(var o=1;o"),s.length){var o=this.session.getRowSplitData(t);o&&o.length?this.$renderWrappedLine(e,s,o,i):this.$renderSimpleLine(e,s)}this.showInvisibles&&(n&&(t=n.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),i||e.push("
")},this.$getFoldLineTokens=function(e,t){var i=this.session,n=[];var s=i.getTokens(e);return t.walk(function(e,t,o,r,a){null!=e?n.push({type:"fold",value:e}):(a&&(s=i.getTokens(t)),s.length&&function(e,t,i){for(var s=0,o=0;o+e[s].value.lengthi-t&&(r=r.substring(0,i-t)),n.push({type:e[s].type,value:r}),o=t+r.length,s+=1);oi?n.push({type:e[s].type,value:r.substring(0,i-o)}):n.push(e[s]),o+=r.length,s+=1}}(s,r,o))},t.end.row,this.session.getLine(t.end.row).length),n},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";var n,s=e("../lib/dom"),o=function(e){this.element=s.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),void 0===n&&(n=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),s.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(n?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){for(var t=this.cursors,i=t.length;i--;)t[i].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e==this.smoothBlinking||n||(this.smoothBlinking=e,s.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=s.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,s.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,s.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&s.removeCssClass(this.element,"ace_smooth-blinking"),e(!0),this.isBlinking&&this.blinkInterval&&this.isVisible){this.smoothBlinking&&setTimeout(function(){s.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var i=this.session.documentToScreenPosition(e);return{left:this.$padding+(this.session.$bidiHandler.isBidiRow(i.row,e.row)?this.session.$bidiHandler.getPosLeft(i.column):i.column*this.config.characterWidth),top:(i.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,i=0,n=0;void 0!==t&&0!==t.length||(t=[{cursor:null}]);i=0;for(var s=t.length;ie.height+e.offset||o.top<0)&&i>1)){var r=(this.cursors[n++]||this.addCursor()).style;this.drawCursor?this.drawCursor(r,o,e,t[i],this.session):(r.left=o.left+"px",r.top=o.top+"px",r.width=e.characterWidth+"px",r.height=e.lineHeight+"px")}}for(;this.cursors.length>n;)this.removeCursor();var a=this.session.getOverwrite();this.$setOverwrite(a),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?s.addCssClass(this.element,"ace_overwrite-cursors"):s.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(o.prototype),t.Cursor=o}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),s=e("./lib/dom"),o=e("./lib/event"),r=e("./lib/event_emitter").EventEmitter,a=function(e){this.element=s.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=s.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)};(function(){n.implement(this,r),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var l=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=s.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};n.inherits(l,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,1!=this.coeff){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>32768?(this.coeff=32768/e,e=32768):1!=this.coeff&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(l.prototype);var c=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};n.inherits(c,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(c.prototype),t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,i){"use strict";var n=e("./lib/event"),s=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){if(this.changes=this.changes|e,!this.pending&&this.changes){this.pending=!0;var t=this;n.nextFrame(function(){var e;for(t.pending=!1;e=t.changes;)t.changes=0,t.onRender(e)},this.window)}}}).call(s.prototype),t.RenderLoop=s}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,i){var n=e("../lib/oop"),s=e("../lib/dom"),o=e("../lib/lang"),r=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,l=0,c=t.FontMetrics=function(e){this.el=s.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=s.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=s.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),l||this.$testFractionalRect(),this.$measureNode.innerHTML=o.stringRepeat("X",l),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){n.implement(this,a),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=s.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;l=t>0&&t<1?50:100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",r.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(50===l){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var t={height:e.height,width:e.width/l}}else t={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/l};return 0===t.width||0===t.height?null:t},this.$measureCharWidth=function(e){return this.$main.innerHTML=o.stringRepeat(e,l),this.$main.getBoundingClientRect().width/l},this.getCharacterWidth=function(e){var t=this.charSizes[e];return void 0===t&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(c.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,i){"use strict";var n=e("./lib/oop"),s=e("./lib/dom"),o=e("./config"),r=e("./lib/useragent"),a=e("./layer/gutter").Gutter,l=e("./layer/marker").Marker,c=e("./layer/text").Text,h=e("./layer/cursor").Cursor,u=e("./scrollbar").HScrollBar,d=e("./scrollbar").VScrollBar,g=e("./renderloop").RenderLoop,f=e("./layer/font_metrics").FontMetrics,m=e("./lib/event_emitter").EventEmitter;s.importCssString('.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_text-input-ios {position: absolute !important;top: -100000px !important;left: -100000px !important;}',"ace_editor.css");var p=function(e,t){var i=this;this.container=e||s.createElement("div"),this.$keepTextAreaAtCursor=!r.isOldIE,s.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=s.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=s.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=s.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new a(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new l(this.content);var n=this.$textLayer=new c(this.content);this.canvas=n.element,this.$markerFront=new l(this.content),this.$cursorLayer=new h(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new d(this.container,this),this.scrollBarH=new u(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollTop(e.data-i.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){i.$scrollAnimation||i.session.setScrollLeft(e.data-i.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new f(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){i.updateCharacterSize(),i.onResize(!0,i.gutterWidth,i.$size.width,i.$size.height),i._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new g(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,n.implement(this,m),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),e&&(this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode))},this.updateLines=function(e,t,i){if(void 0===t&&(t=1/0),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,i,n){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=e?1:0;var s=this.container;n||(n=s.clientHeight||s.scrollHeight),i||(i=s.clientWidth||s.scrollWidth);var o=this.$updateCachedSize(e,t,i,n);if(!this.$size.scrollerHeight||!i&&!n)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(o|this.$changes,!0):this.$loop.schedule(o|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null}},this.$updateCachedSize=function(e,t,i,n){n-=this.$extraHeight||0;var s=0,o=this.$size,r={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};return n&&(e||o.height!=n)&&(o.height=n,s|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",s|=this.CHANGE_SCROLL),i&&(e||o.width!=i)&&(s|=this.CHANGE_SIZE,o.width=i,null==t&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",o.scrollerWidth=Math.max(0,i-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px",(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)&&(s|=this.CHANGE_FULL)),o.$dirty=!i||!n,s&&this._signal("resize",r),s},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-2*this.$padding,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var i=this.session.selection.getCursor();i.column=0,e=this.$cursorLayer.getPixelPosition(i,!0),t*=this.session.getRowLength(i.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(this.$showPrintMargin||this.$printMarginEl){if(!this.$printMarginEl){var e=s.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=s.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&-1==this.session.$wrap&&this.adjustWrapLimit()}},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$keepTextAreaAtCursor){var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,i=this.$cursorLayer.$pixelPos.left;t-=e.offset;var n=this.textarea.style,s=this.lineHeight;if(t<0||t>e.height-s)n.top=n.left="0";else{var o=this.characterWidth;if(this.$composition){var r=this.textarea.value.replace(/^\x01+/,"");o*=this.session.$getStringScreenWidth(r)[0]+2,s+=2}(i-=this.scrollLeft)>this.$size.scrollerWidth-o&&(i=this.$size.scrollerWidth-o),i+=this.gutterWidth,n.height=s+"px",n.width=o+"px",n.left=Math.min(i,this.$size.scrollerWidth-o)+"px",n.top=Math.min(t,this.$size.height-s)+"px"}}},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(0===this.layerConfig.offset?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow;return this.session.documentToScreenRow(t,0)*e.lineHeight-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,i,n){var s=this.scrollMargin;s.top=0|e,s.bottom=0|t,s.right=0|n,s.left=0|i,s.v=s.top+s.bottom,s.h=s.left+s.right,s.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-s.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){if(this.$changes&&(e|=this.$changes,this.$changes=0),this.session&&this.container.offsetWidth&&!this.$frozen&&(e||t)){if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender"),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var i=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){if(e|=this.$computeLayerConfig(),i.firstRow!=this.layerConfig.firstRow&&i.firstRowScreen==this.layerConfig.firstRowScreen){var n=this.scrollTop+(i.firstRow-this.layerConfig.firstRow)*this.lineHeight;n>0&&(this.scrollTop=n,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}i=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-i.offset+"px",this.content.style.marginTop=-i.offset+"px",this.content.style.width=i.width+2*this.$padding+"px",this.content.style.height=i.minHeight+"px"}if(e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left"),e&this.CHANGE_FULL)return this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),void this._signal("afterRender");if(e&this.CHANGE_SCROLL)return e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(i):this.$textLayer.scrollLines(i),this.$showGutter&&this.$gutterLayer.update(i),this.$markerBack.update(i),this.$markerFront.update(i),this.$cursorLayer.update(i),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),void this._signal("afterRender");e&this.CHANGE_TEXT?(this.$textLayer.update(i),this.$showGutter&&this.$gutterLayer.update(i)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(i):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(i),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(i),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(i),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(i),this._signal("afterRender")}else this.$changes|=e},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,i=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(i+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&i>this.$maxPixelHeight&&(i=this.$maxPixelHeight);var n=e>t;if(i!=this.desiredHeight||this.$size.height!=this.desiredHeight||n!=this.$vScroll){n!=this.$vScroll&&(this.$vScroll=n,this.scrollBarV.setVisible(n));var s=this.container.clientWidth;this.container.style.height=i+"px",this.$updateCachedSize(!0,this.$gutterWidth,s,i),this.desiredHeight=i,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,i=t.height<=2*this.lineHeight,n=this.session.getScreenLength()*this.lineHeight,s=this.$getLongestLine(),o=!i&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),r=this.$horizScroll!==o;r&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var l=this.scrollTop%this.lineHeight,c=t.scrollerHeight+this.lineHeight,h=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;n+=h;var u=this.scrollMargin;this.session.setScrollTop(Math.max(-u.top,Math.min(this.scrollTop,n-t.scrollerHeight+u.bottom))),this.session.setScrollLeft(Math.max(-u.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+u.right)));var d=!i&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-n+h<0||this.scrollTop>u.top),g=a!==d;g&&(this.$vScroll=d,this.scrollBarV.setVisible(d));var f,m,p=Math.ceil(c/this.lineHeight)-1,A=Math.max(0,Math.round((this.scrollTop-l)/this.lineHeight)),C=A+p,v=this.lineHeight;A=e.screenToDocumentRow(A,0);var w=e.getFoldLine(A);w&&(A=w.start.row),f=e.documentToScreenRow(A,0),m=e.getRowLength(A)*v,C=Math.min(e.screenToDocumentRow(C,0),e.getLength()-1),c=t.scrollerHeight+e.getRowLength(C)*v+m,l=this.scrollTop-f*v;var F=0;return this.layerConfig.width!=s&&(F=this.CHANGE_H_SCROLL),(r||g)&&(F=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),g&&(s=this.$getLongestLine())),this.layerConfig={width:s,padding:this.$padding,firstRow:A,firstRowScreen:f,lastRow:C,lineHeight:v,characterWidth:this.characterWidth,minHeight:c,maxHeight:n,offset:l,gutterOffset:v?Math.max(0,Math.ceil((l+t.height-t.scrollerHeight)/v)):0,height:this.$size.scrollerHeight},F},this.$updateLines=function(){if(this.$changedLines){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var i=this.layerConfig;if(!(e>i.lastRow+1||to?(t&&l+r>o+this.lineHeight&&(o-=t*this.$size.scrollerHeight),0===o&&(o=-this.scrollMargin.top),this.session.setScrollTop(o)):l+this.$size.scrollerHeight-as?(s=1-this.scrollMargin.top||(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right||void 0)))},this.pixelToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=e+this.scrollLeft-i.left-this.$padding,s=n/this.characterWidth,o=Math.floor((t+this.scrollTop-i.top)/this.lineHeight),r=Math.round(s);return{row:o,column:r,side:s-r>0?1:-1,offsetX:n}},this.screenToTextCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=e+this.scrollLeft-i.left-this.$padding,s=Math.round(n/this.characterWidth),o=(t+this.scrollTop-i.top)/this.lineHeight;return this.session.screenToDocumentPosition(o,Math.max(s,0),n)},this.textToScreenCoordinates=function(e,t){var i=this.scroller.getBoundingClientRect(),n=this.session.documentToScreenPosition(e,t),s=this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e)?this.session.$bidiHandler.getPosLeft(n.column):Math.round(n.column*this.characterWidth)),o=n.row*this.lineHeight;return{pageX:i.left+s-this.scrollLeft,pageY:i.top+o-this.scrollTop}},this.visualizeFocus=function(){s.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){s.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,s.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){this.$composition&&(s.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null)},this.setTheme=function(e,t){var i=this;if(this.$themeId=e,i._dispatchEvent("themeChange",{theme:e}),e&&"string"!=typeof e)r(e);else{var n=e||this.$options.theme.initialValue;o.loadModule(["theme",n],r)}function r(n){if(i.$themeId!=e)return t&&t();if(!n||!n.cssClass)throw new Error("couldn't load module "+e+" or it didn't call define");s.importCssString(n.cssText,n.cssClass,i.container.ownerDocument),i.theme&&s.removeCssClass(i.container,i.theme.cssClass);var o="padding"in n?n.padding:"padding"in(i.theme||{})?4:i.$padding;i.$padding&&o!=i.$padding&&i.setPadding(o),i.$theme=n.cssClass,i.theme=n,s.addCssClass(i.container,n.cssClass),s.setCssClass(i.container,"ace_dark",n.isDark),i.$size&&(i.$size.width=0,i.$updateSizeAsync()),i._dispatchEvent("themeLoaded",{theme:n}),t&&t()}},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){s.setCssClass(this.container,e,!1!==t)},this.unsetStyle=function(e){s.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(p.prototype),o.defineOptions(p.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){"number"==typeof e&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){s.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight)return this.$gutterLineHighlight=s.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",void this.$gutter.appendChild(this.$gutterLineHighlight);this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){this.$hScrollBarAlwaysVisible&&this.$horizScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){this.$vScrollBarAlwaysVisible&&this.$vScroll||this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){"number"==typeof e&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0,this.$scrollPastEnd!=e&&(this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=p}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,i){"use strict";var n=e("../lib/oop"),s=e("../lib/net"),o=e("../lib/event_emitter").EventEmitter,r=e("../config");function a(e,t){var i=function(e,t){var i=t.src;s.qualifyURL(e);try{return new Blob([i],{type:"application/javascript"})}catch(e){var n=new(window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder);return n.append(i),n.getBlob("application/javascript")}}(e,t),n=(window.URL||window.webkitURL).createObjectURL(i);return new Worker(n)}var l=function(t,i,n,s,o){if(this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),r.get("packaged")||!e.toUrl)s=s||r.moduleUrl(i.id,"worker");else{var l=this.$normalizePath;s=s||l(e.toUrl("ace/worker/worker.js",null,"_"));var c={};t.forEach(function(t){c[t]=l(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}this.$worker=a(s,i),o&&this.send("importScripts",o),this.$worker.postMessage({init:!0,tlns:c,module:i.id,classname:n}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){n.implement(this,o),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var i=this.callbacks[t.id];i&&(i(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return s.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,i){if(i){var n=this.callbackId++;this.callbacks[n]=i,t.push(n)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(e){console.error(e.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),"insert"==e.action?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;e&&(this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e}))}}).call(l.prototype);var c=function(e,t,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var n=null,s=!1,a=Object.create(o),l=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){l.messageBuffer.push(e),n&&(s?setTimeout(c):c())},this.setEmitSync=function(e){s=e};var c=function(){var e=l.messageBuffer.shift();e.command?n[e.command].apply(n,e.args):e.event&&a._signal(e.event,e.data)};a.postMessage=function(e){l.onMessage({data:e})},a.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},a.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},r.loadModule(["worker",t],function(e){for(n=new e[i](a);l.messageBuffer.length;)c()})};c.prototype=l.prototype,t.UIWorkerClient=c,t.WorkerClient=l,t.createWorker=a}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,i){"use strict";var n=e("./range").Range,s=e("./lib/event_emitter").EventEmitter,o=e("./lib/oop"),r=function(e,t,i,n,s,o){var r=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=s,this.othersClass=o,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=n,this.$onCursorChange=function(){setTimeout(function(){r.onCursorChange()})},this.$pos=i;var a=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=a.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){o.implement(this,s),this.setup=function(){var e=this,t=this.doc,i=this.session;this.selectionBefore=i.selection.toJSON(),i.selection.inMultiSelectMode&&i.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var s=this.pos;s.$insertRight=!0,s.detach(),s.markerId=i.addMarker(new n(s.row,s.column,s.row,s.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(i){var n=t.createAnchor(i.row,i.column);n.$insertRight=!0,n.detach(),e.others.push(n)}),i.setUndoSelect(!1)},this.showOtherMarkers=function(){if(!this.othersActive){var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(i){i.markerId=e.addMarker(new n(i.row,i.column,i.row,i.column+t.length),t.othersClass,null,!1)})}},this.hideOtherMarkers=function(){if(this.othersActive){this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,o=t.start.column-this.pos.column;if(this.updateAnchors(e),s&&(this.length+=i),s&&!this.session.$fromUndo)if("insert"===e.action)for(var r=this.others.length-1;r>=0;r--){var a={row:(l=this.others[r]).row,column:l.column+o};this.doc.insertMergedLines(a,e.lines)}else if("remove"===e.action)for(r=this.others.length-1;r>=0;r--){var l;a={row:(l=this.others[r]).row,column:l.column+o};this.doc.remove(new n(a.row,a.column,a.row,a.column-i))}this.$updating=!1,this.updateMarkers()}},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(!this.$updating){var e=this,t=this.session,i=function(i,s){t.removeMarker(i.markerId),i.markerId=t.addMarker(new n(i.row,i.column,i.row,i.column+e.length),s,null,!1)};i(this.pos,this.mainClass);for(var s=this.others.length;s--;)i(this.others[s],this.othersClass)}},this.onCursorChange=function(e){if(!this.$updating&&this.session){var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))}},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(-1!==this.$undoStackDepth){for(var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth,i=0;i1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)}},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){if(this.rangeCount=this.rangeList.ranges.length,1==this.rangeCount&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var i=e.length;i--;){var n=this.ranges.indexOf(e[i]);this.ranges.splice(n,1)}this._signal("removeRange",{ranges:e}),0===this.rangeCount&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),(t=t||this.ranges[0])&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new n,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],i=s.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{i=this.getRange();var n=this.isBackwards(),o=i.start.row,r=i.end.row;if(o==r){if(n)var a=i.end,l=i.start;else a=i.start,l=i.end;return this.addRange(s.fromPoints(l,l)),void this.addRange(s.fromPoints(a,a))}var c=[],h=this.getLineRange(o,!0);h.start.column=i.start.column,c.push(h);for(var u=o+1;u1){var e=this.rangeList.ranges,t=e[e.length-1],i=s.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(i,t.cursor==t.start)}else{var n=this.session.documentToScreenPosition(this.selectionLead),o=this.session.documentToScreenPosition(this.selectionAnchor);this.rectangularRangeBlock(n,o).forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,i){var n=[],o=e.column0;)A--;if(A>0)for(var C=0;n[C].isEmpty();)C++;for(var v=A;v>=C;v--)n[v].isEmpty()&&n.splice(v,1)}return n}}.call(o.prototype);var d=e("./editor").Editor;function g(e,t){return e.row==t.row&&e.column==t.column}function f(e){e.$multiselectOnSessionChange||(e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",r),e.commands.addCommands(c.defaultCommands),function(e){var t=e.textInput.getElement(),i=!1;function n(t){i&&(e.renderer.setMouseCursor(""),i=!1)}a.addListener(t,"keydown",function(t){var s=18==t.keyCode&&!(t.ctrlKey||t.shiftKey||t.metaKey);e.$blockSelectEnabled&&s?i||(e.renderer.setMouseCursor("crosshair"),i=!0):i&&n()}),a.addListener(t,"keyup",n),a.addListener(t,"blur",n)}(e))}(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(e.marker){this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);-1!=t&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(e){for(var t=this.session.$selectionMarkers,i=e.length;i--;){var n=e[i];if(n.marker){this.session.removeMarker(n.marker);var s=t.indexOf(n);-1!=s&&t.splice(s,1)}}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(c.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(e){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(c.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(e){var t=e.command,i=e.editor;if(i.multiSelect){if(t.multiSelectAction)"forEach"==t.multiSelectAction?n=i.forEachSelection(t,e.args):"forEachLine"==t.multiSelectAction?n=i.forEachSelection(t,e.args,!0):"single"==t.multiSelectAction?(i.exitMultiSelectMode(),n=t.exec(i,e.args||{})):n=t.multiSelectAction(i,e.args||{});else{var n=t.exec(i,e.args||{});i.multiSelect.addRange(i.multiSelect.toOrientedRange()),i.multiSelect.mergeOverlappingRanges()}return n}},this.forEachSelection=function(e,t,i){if(!this.inVirtualSelectionMode){var n,s=i&&i.keepOrder,r=1==i||i&&i.$byLines,a=this.session,l=this.selection,c=l.rangeList,h=(s?l:c).ranges;if(!h.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var u=l._eventRegistry;l._eventRegistry={};var d=new o(a);this.inVirtualSelectionMode=!0;for(var g=h.length;g--;){if(r)for(;g>0&&h[g].start.row==h[g-1].end.row;)g--;d.fromOrientedRange(h[g]),d.index=g,this.selection=a.selection=d;var f=e.exec?e.exec(this,t||{}):e(this,t||{});n||void 0===f||(n=f),d.toOrientedRange(h[g])}d.detach(),this.selection=a.selection=l,this.inVirtualSelectionMode=!1,l._eventRegistry=u,l.mergeOverlappingRanges();var m=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),m&&m.from==m.to&&this.renderer.animateScrolling(m.from),n}},this.exitMultiSelectMode=function(){this.inMultiSelectMode&&!this.inVirtualSelectionMode&&this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var t=this.multiSelect.rangeList.ranges,i=[],n=0;nr&&(r=i.column),nh?e.insert(n,l.stringRepeat(" ",o-h)):e.remove(new s(n.row,n.column,n.row,n.column-o+h)),t.start.column=t.end.column=r,t.start.row=t.end.row=n.row,t.cursor=t.end}),t.fromOrientedRange(i[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}else{var h=this.selection.getRange(),u=h.start.row,d=h.end.row,g=u==d;if(g){var f,m=this.session.getLength();do{f=this.session.getLine(d)}while(/[=:]/.test(f)&&++d0);u<0&&(u=0),d>=m&&(d=m-1)}var p=this.session.removeFullLines(u,d);p=this.$reAlignText(p,g),this.session.insert({row:u,column:0},p.join("\n")+"\n"),g||(h.start.column=0,h.end.column=p[p.length-1].length),this.selection.setRange(h)}},this.$reAlignText=function(e,t){var i,n,s,o=!0,r=!0;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?null==i?(i=t[1].length,n=t[2].length,s=t[3].length,t):(i+n+s!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(o=!1),i>t[1].length&&(i=t[1].length),nt[3].length&&(s=t[3].length),t):[e]}).map(t?c:o?r?function(e){return e[2]?a(i+n-e[2].length)+e[2]+a(s)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}:c:function(e){return e[2]?a(i)+e[2]+a(s)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]});function a(e){return l.stringRepeat(" ",e)}function c(e){return e[2]?a(i)+e[2]+a(n-e[2].length+s)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var i=e.oldSession;i&&(i.multiSelect.off("addRange",this.$onAddRange),i.multiSelect.off("removeRange",this.$onRemoveRange),i.multiSelect.off("multiSelect",this.$onMultiSelect),i.multiSelect.off("singleSelect",this.$onSingleSelect),i.multiSelect.lead.off("change",this.$checkMultiselectChange),i.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=f,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){f(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",r)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",r))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,i){"use strict";var n=e("../../range").Range,s=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,i){var n=e.getLine(i);return this.foldingStartMarker.test(n)?"start":"markbeginend"==t&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(e,t,i){return null},this.indentationBlock=function(e,t,i){var s=/\S/,o=e.getLine(t),r=o.search(s);if(-1!=r){for(var a=i||o.length,l=e.getLength(),c=t,h=t;++tc){var d=e.getLine(h).length;return new n(c,a,h,d)}}},this.openingBracketBlock=function(e,t,i,s,o){var r={row:i,column:s+1},a=e.$findClosingBracket(t,r,o);if(a){var l=e.foldWidgets[a.row];return null==l&&(l=e.getFoldWidget(a.row)),"start"==l&&a.row>r.row&&(a.row--,a.column=e.getLine(a.row).length),n.fromPoints(r,a)}},this.closingBracketBlock=function(e,t,i,s,o){var r={row:i,column:s},a=e.$findOpeningBracket(t,r);if(a)return a.column++,r.column--,n.fromPoints(a,r)}}).call(s.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,i){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',e("../lib/dom").importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,i){"use strict";e("./lib/oop");var n=e("./lib/dom");e("./range").Range;function s(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}(function(){this.getRowLength=function(e){var t;return t=this.lineWidgets&&this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0,this.$useWrapMode&&this.$wrapData[e]?this.$wrapData[e].length+1+t:1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach(),this.editor!=e&&(this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)))},this.detach=function(e){var t=this.editor;if(t){this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var i=this.session.lineWidgets;i&&i.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})}},this.updateOnFold=function(e,t){var i=t.lineWidgets;if(i&&e.action){for(var n=e.data,s=n.start.row,o=n.end.row,r="add"==e.action,a=s+1;a0&&!n[s];)s--;this.firstRow=i.firstRow,this.lastRow=i.lastRow,t.$cursorLayer.config=i;for(var r=s;r<=o;r++){var a=n[r];if(a&&a.el)if(a.hidden)a.el.style.top=-100-(a.pixelHeight||0)+"px";else{a._inDocument||(a._inDocument=!0,t.container.appendChild(a.el));var l=t.$cursorLayer.getPixelPosition({row:r,column:0},!0).top;a.coverLine||(l+=i.lineHeight*this.session.getRowLineCount(a.row)),a.el.style.top=l-i.offset+"px";var c=a.coverGutter?0:t.gutterWidth;a.fixedWidth||(c-=t.scrollLeft),a.el.style.left=c+"px",a.fullWidth&&a.screenWidth&&(a.el.style.minWidth=i.width+2*i.padding+"px"),a.fixedWidth?a.el.style.right=t.scrollBar.getWidth()+"px":a.el.style.right=""}}}}}).call(s.prototype),t.LineWidgets=s}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,i){"use strict";var n=e("../line_widgets").LineWidgets,s=e("../lib/dom"),o=e("../range").Range;t.showErrorMarker=function(e,t){var i=e.session;i.widgetManager||(i.widgetManager=new n(i),i.widgetManager.attach(e));var r=e.getCursorPosition(),a=r.row,l=i.widgetManager.getWidgetsAtRow(a).filter(function(e){return"errorMarker"==e.type})[0];l?l.destroy():a-=t;var c,h=function(e,t,i){var n=e.getAnnotations().sort(o.comparePoints);if(n.length){var s=function(e,t,i){for(var n=0,s=e.length-1;n<=s;){var o=n+s>>1,r=i(t,e[o]);if(r>0)n=o+1;else{if(!(r<0))return o;s=o-1}}return-(n+1)}(n,{row:t,column:-1},o.comparePoints);s<0&&(s=-s-1),s>=n.length?s=i>0?0:n.length-1:0===s&&i<0&&(s=n.length-1);var r=n[s];if(r&&i){if(r.row===t){do{r=n[s+=i]}while(r&&r.row===t);if(!r)return n.slice()}var a=[];t=r.row;do{a[i<0?"unshift":"push"](r),r=n[s+=i]}while(r&&r.row==t);return a.length&&a}}}(i,a,t);if(h){var u=h[0];r.column=(u.pos&&"number"!=typeof u.column?u.pos.sc:u.column)||0,r.row=u.row,c=e.renderer.$gutterLayer.$annotations[r.row]}else{if(l)return;c={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(r.row),e.selection.moveToPosition(r);var d={row:r.row,fixedWidth:!0,coverGutter:!0,el:s.createElement("div"),type:"errorMarker"},g=d.el.appendChild(s.createElement("div")),f=d.el.appendChild(s.createElement("div"));f.className="error_widget_arrow "+c.className;var m=e.renderer.$cursorLayer.getPixelPosition(r).left;f.style.left=m+e.renderer.gutterWidth-5+"px",d.el.className="error_widget_wrapper",g.className="error_widget "+c.className,g.innerHTML=c.text.join("
"),g.appendChild(s.createElement("div"));var p=function(e,t,i){if(0===t&&("esc"===i||"return"===i))return d.destroy(),{command:"null"}};d.destroy=function(){e.$mouseHandler.isMousePressed||(e.keyBinding.removeKeyboardHandler(p),i.widgetManager.removeLineWidget(d),e.off("changeSelection",d.destroy),e.off("changeSession",d.destroy),e.off("mouseup",d.destroy),e.off("change",d.destroy))},e.keyBinding.addKeyboardHandler(p),e.on("changeSelection",d.destroy),e.on("changeSession",d.destroy),e.on("mouseup",d.destroy),e.on("change",d.destroy),e.session.widgetManager.addLineWidget(d),d.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:d.el.offsetHeight})},s.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var s=e("./lib/dom"),o=e("./lib/event"),r=e("./editor").Editor,a=e("./edit_session").EditSession,l=e("./undomanager").UndoManager,c=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.acequire=e,t.define=i("B9Yq"),t.edit=function(e){if("string"==typeof e){var i=e;if(!(e=document.getElementById(i)))throw new Error("ace.edit can't find div #"+i)}if(e&&e.env&&e.env.editor instanceof r)return e.env.editor;var n="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;n=a.value,e=s.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(n=s.getInnerText(e),e.innerHTML="");var l=t.createEditSession(n),h=new r(new c(e));h.setSession(l);var u={document:l,editor:h,onResize:h.resize.bind(h,null)};return a&&(u.textarea=a),o.addListener(window,"resize",u.onResize),h.on("destroy",function(){o.removeListener(window,"resize",u.onResize),u.editor.container.env=null}),h.container.env=h.env=u,h},t.createEditSession=function(e,t){var i=new a(e,t);return i.setUndoManager(new l),i},t.EditSession=a,t.UndoManager=l,t.version="1.2.9"}),ace.acequire(["ace/ace"],function(e){for(var t in e&&(e.config.init(!0),e.define=ace.define),window.ace||(window.ace=e),e)e.hasOwnProperty(t)&&(window.ace[t]=e[t])}),e.exports=window.ace.acequire("ace/ace")},Lrpg:function(e,t){!function(e){function t(n){if(i[n])return i[n].exports;var s=i[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,t),s.l=!0,s.exports}var i={};t.m=e,t.c=i,t.d=function(e,i,n){t.o(e,i)||Object.defineProperty(e,i,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,"a",i),i},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t,i){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=!0,o=!1,r=["scroll","wheel","touchstart","touchmove","touchenter","touchend","touchleave","mouseout","mouseleave","mouseup","mousedown","mousemove","mouseenter","mousewheel","mouseover"],a=function(e,t){return void 0!==e?e:-1!==r.indexOf(t)&&s};(0,i(1).eventListenerOptionsSupported)()&&function(e){EventTarget.prototype.addEventListener=function(t,i,s){var r="object"===(void 0===s?"undefined":n(s))&&null!==s,l=r?s.capture:s;(s=r?function(e){var t=Object.getOwnPropertyDescriptor(e,"passive");return t&&!0!==t.writable&&void 0===t.set?Object.assign({},e):e}(s):{}).passive=a(s.passive,t),s.capture=void 0===l?o:l,e.call(this,t,i,s)},EventTarget.prototype.addEventListener._original=e}(EventTarget.prototype.addEventListener)},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.eventListenerOptionsSupported=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}}])},fJ7X:function(e,t,i){var n=i("Bhyg");e.exports={render:function(e){return e("div",{attrs:{style:"height: "+(this.height?this.px(this.height):"100%")+"; width: "+(this.width?this.px(this.width):"100%")}})},props:{value:{type:String,required:!0},lang:String,theme:String,height:!0,width:!0,options:Object},data:function(){return{editor:null,contentBackup:""}},methods:{px:function(e){return/^\d*$/.test(e)?e+"px":e}},watch:{value:function(e){this.contentBackup!==e&&(this.editor.session.setValue(e,1),this.contentBackup=e)},theme:function(e){this.editor.setTheme("ace/theme/"+e)},lang:function(e){this.editor.getSession().setMode("ace/mode/"+e)},options:function(e){this.editor.setOptions(e)},height:function(){this.$nextTick(function(){this.editor.resize()})},width:function(){this.$nextTick(function(){this.editor.resize()})}},beforeDestroy:function(){this.editor.destroy(),this.editor.container.remove()},mounted:function(){var e=this,t=this.lang||"text",s=this.theme||"chrome";i("s3h0");var o=e.editor=n.edit(this.$el);this.$emit("init",o),o.$blockScrolling=1/0,o.getSession().setMode("ace/mode/"+t),o.setTheme("ace/theme/"+s),o.setValue(this.value,1),this.contentBackup=this.value,o.on("change",function(){var t=o.getValue();e.$emit("input",t),e.contentBackup=t}),e.options&&o.setOptions(e.options)}}},nBvS:function(e,t){ace.define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,i){"use strict";var n=e("../lib/oop"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:["meta.module.elixir","keyword.control.module.elixir","meta.module.elixir","entity.name.type.module.elixir"],regex:"^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc (?:~[a-z])?"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc ~[A-Z]"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc (?:~[a-z])?'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc ~[A-Z]'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.false",regex:"@(?:module|type)?doc false",comment:"@doc false is treated as documentation"},{token:"comment.documentation.string",regex:'@(?:module|type)?doc "',push:[{token:"comment.documentation.string",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.string"}],comment:"@doc with string is treated as documentation"},{token:"keyword.control.elixir",regex:"\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|acequire|alias|use|quote|unquote|super)\\b(?![?!])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b"},{token:"punctuation.definition.constant.elixir",regex:":'",push:[{token:"punctuation.definition.constant.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.single-quoted.elixir"}]},{token:"punctuation.definition.constant.elixir",regex:':"',push:[{token:"punctuation.definition.constant.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.double-quoted.elixir"}]},{token:"punctuation.definition.string.begin.elixir",regex:"(?:''')",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>''')",push:[{token:"punctuation.definition.string.end.elixir",regex:"^\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.heredoc.elixir"}],comment:"Single-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:"'",push:[{token:"punctuation.definition.string.end.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.elixir"}],comment:"single quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'(?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'(?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:'"',push:[{token:"punctuation.definition.string.end.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.elixir"}],comment:"double quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[a-z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[a-z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[A-Z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[A-Z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:["punctuation.definition.constant.elixir","constant.other.symbol.elixir"],regex:"(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",comment:"symbols"},{token:"punctuation.definition.constant.elixir",regex:"(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",comment:"symbols"},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(#)(.*)"},{token:"constant.numeric.elixir",regex:"\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?=?"},{token:"keyword.operator.bitwise.elixir",regex:"\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}"},{token:"keyword.operator.logical.elixir",regex:"!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",originalRegex:"(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b"},{token:"keyword.operator.arithmetic.elixir",regex:"\\*|\\+|\\-|/"},{token:"keyword.operator.other.elixir",regex:"\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>"},{token:"keyword.operator.assignment.elixir",regex:"="},{token:"punctuation.separator.other.elixir",regex:":"},{token:"punctuation.separator.statement.elixir",regex:"\\;"},{token:"punctuation.separator.object.elixir",regex:","},{token:"punctuation.separator.method.elixir",regex:"\\."},{token:"punctuation.section.scope.elixir",regex:"\\{|\\}"},{token:"punctuation.section.array.elixir",regex:"\\[|\\]"},{token:"punctuation.section.function.elixir",regex:"\\(|\\)"}],"#escaped_char":[{token:"constant.character.escape.elixir",regex:"\\\\(?:x[\\da-fA-F]{1,2}|.)"}],"#interpolated_elixir":[{token:["source.elixir.embedded.source","source.elixir.embedded.source.empty"],regex:"(#\\{)(\\})"},{todo:{token:"punctuation.section.embedded.elixir",regex:"#\\{",push:[{token:"punctuation.section.embedded.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"},{include:"$self"},{defaultToken:"source.elixir.embedded.source"}]}}],"#nest_curly_and_self":[{token:"punctuation.section.scope.elixir",regex:"\\{",push:[{token:"punctuation.section.scope.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"}]},{include:"$self"}],"#regex_sub":[{include:"#interpolated_elixir"},{include:"#escaped_char"},{token:["punctuation.definition.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","punctuation.definition.arbitrary-repitition.elixir"],regex:"(\\{)(\\d+)((?:,\\d+)?)(\\})"},{token:"punctuation.definition.character-class.elixir",regex:"\\[(?:\\^?\\])?",push:[{token:"punctuation.definition.character-class.elixir",regex:"\\]",next:"pop"},{include:"#escaped_char"},{defaultToken:"string.regexp.character-class.elixir"}]},{token:"punctuation.definition.group.elixir",regex:"\\(",push:[{token:"punctuation.definition.group.elixir",regex:"\\)",next:"pop"},{include:"#regex_sub"},{defaultToken:"string.regexp.group.elixir"}]},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)",originalRegex:"(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",comment:"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags."}]},this.normalizeRules()};o.metaData={comment:"Textmate bundle for Elixir Programming Language.",fileTypes:["ex","exs"],firstLineMatch:"^#!/.*\\belixir",foldingStartMarker:"(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",foldingStopMarker:"^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",keyEquivalent:"^~E",name:"Elixir",scopeName:"source.elixir"},n.inherits(o,s),t.ElixirHighlightRules=o}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,i){"use strict";var n=e("../../lib/oop"),s=e("./fold_mode").FoldMode,o=e("../../range").Range,r=t.FoldMode=function(){};n.inherits(r,s),function(){this.getFoldWidgetRange=function(e,t,i){var n=this.indentationBlock(e,i);if(n)return n;var s=/\S/,r=e.getLine(i),a=r.search(s);if(-1!=a&&"#"==r[a]){for(var l=r.length,c=e.getLength(),h=i,u=i;++ih){var g=e.getLine(u).length;return new o(h,l,u,g)}}},this.getFoldWidget=function(e,t,i){var n=e.getLine(i),s=n.search(/\S/),o=e.getLine(i+1),r=e.getLine(i-1),a=r.search(/\S/),l=o.search(/\S/);if(-1==s)return e.foldWidgets[i-1]=-1!=a&&a"a"})),[e]}},{regex:/}/,onMatch:function(e,t,i){return[i.length?i.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,i,n){var s=e(t.substr(1),0,n);return n.unshift(s[0]),s},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,i){i[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,i){var n=i[0];return n.fmtString=e,e=this.splitRegex.exec(e),n.guard=e[1],n.fmt=e[2],n.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,i){return i[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,i){i[0]&&(i[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,i){i.inFormatString=!0},next:"start"}]}),u.prototype.getTokenizer=function(){return u.$tokenizer},u.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var i=t.substr(1);return(this.variables[t[0]+"__"]||{})[i]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];if(t=t.replace(/^TM_/,""),e){var n=e.session;switch(t){case"CURRENT_WORD":var s=n.getWordRange();case"SELECTION":case"SELECTED_TEXT":return n.getTextRange(s);case"CURRENT_LINE":return n.getLine(e.getCursorPosition().row);case"PREV_LINE":return n.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return n.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return n.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,i){var n=t.flag||"",s=t.guard;s=new RegExp(s,n.replace(/[^gi]/,""));var o=this.tokenizeTmSnippet(t.fmt,"formatString"),r=this,a=e.replace(s,function(){r.variables.__=arguments;for(var e=r.resolveVariables(o,i),t="E",n=0;n1?(C=t[t.length-1].length,A+=t.length-1):C+=e.length,v+=e}else e.start?e.end={row:A,column:C}:e.start={row:A,column:C}});var w=e.getSelectionRange(),F=e.session.replace(w,v),E=new d(e),b=e.inVirtualSelectionMode&&e.selection.index;E.addTabstops(a,w.start,F,b)},this.insertSnippet=function(e,t){var i=this;if(e.inVirtualSelectionMode)return i.insertSnippetForSelection(e,t);e.forEachSelection(function(){i.insertSnippetForSelection(e,t)},null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},this.$getScope=function(e){var t=e.session.$mode.$id||"";if("html"===(t=t.split("/").pop())||"php"===t){"php"!==t||e.session.$mode.inlinePhp||(t="html");var i=e.getCursorPosition(),n=e.session.getState(i.row);"object"==typeof n&&(n=n[0]),n.substring&&("js-"==n.substring(0,3)?t="javascript":"css-"==n.substring(0,4)?t="css":"php-"==n.substring(0,4)&&(t="php"))}return t},this.getActiveScopes=function(e){var t=this.$getScope(e),i=[t],n=this.snippetMap;return n[t]&&n[t].includeScopes&&i.push.apply(i,n[t].includeScopes),i.push("_"),i},this.expandWithTab=function(e,t){var i=this,n=e.forEachSelection(function(){return i.expandSnippetForSelection(e,t)},null,{keepOrder:!0});return n&&e.tabstopManager&&e.tabstopManager.tabNext(),n},this.expandSnippetForSelection=function(e,t){var i,n=e.getCursorPosition(),s=e.session.getLine(n.row),o=s.substring(0,n.column),r=s.substr(n.column),a=this.snippetMap;return this.getActiveScopes(e).some(function(e){var t=a[e];return t&&(i=this.findMatchingSnippet(t,o,r)),!!i},this),!!i&&(!(!t||!t.dryRun)||(e.session.doc.removeInLine(n.row,n.column-i.replaceBefore.length,n.column+i.replaceAfter.length),this.variables.M__=i.matchBefore,this.variables.T__=i.matchAfter,this.insertSnippetForSelection(e,i.content),this.variables.M__=this.variables.T__=null,!0))},this.findMatchingSnippet=function(e,t,i){for(var n=e.length;n--;){var s=e[n];if((!s.startRe||s.startRe.test(t))&&((!s.endRe||s.endRe.test(i))&&(s.startRe||s.endRe)))return s.matchBefore=s.startRe?s.startRe.exec(t):[""],s.matchAfter=s.endRe?s.endRe.exec(i):[""],s.replaceBefore=s.triggerRe?s.triggerRe.exec(t)[0]:"",s.replaceAfter=s.endTriggerRe?s.endTriggerRe.exec(i)[0]:"",s}},this.snippetMap={},this.snippetNameMap={},this.register=function(e,t){var i=this.snippetMap,n=this.snippetNameMap,s=this;function r(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")"),e||""}function a(e,t,i){return e=r(e),t=r(t),i?(e=t+e)&&"$"!=e[e.length-1]&&(e+="$"):(e+=t)&&"^"!=e[0]&&(e="^"+e),new RegExp(e)}function l(e){e.scope||(e.scope=t||"_"),t=e.scope,i[t]||(i[t]=[],n[t]={});var r=n[t];if(e.name){var l=r[e.name];l&&s.unregister(l),r[e.name]=e}i[t].push(e),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=o.escapeRegExp(e.tabTrigger)),(e.trigger||e.guard||e.endTrigger||e.endGuard)&&(e.startRe=a(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger,"",!0),e.endRe=a(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger,"",!0))}e||(e=[]),e&&e.content?l(e):Array.isArray(e)&&e.forEach(l),this._signal("registerSnippets",{scope:t})},this.unregister=function(e,t){var i=this.snippetMap,n=this.snippetNameMap;function s(e){var s=n[e.scope||t];if(s&&s[e.name]){delete s[e.name];var o=i[e.scope||t],r=o&&o.indexOf(e);r>=0&&o.splice(r,1)}}e.content?s(e):Array.isArray(e)&&e.forEach(s)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");for(var t,i=[],n={},s=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm;t=s.exec(e);){if(t[1])try{n=JSON.parse(t[1]),i.push(n)}catch(e){}if(t[4])n.content=t[4].replace(/^\t/gm,""),i.push(n),n={};else{var o=t[2],r=t[3];if("regex"==o){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(r)[1],n.trigger=a.exec(r)[1],n.endTrigger=a.exec(r)[1],n.endGuard=a.exec(r)[1]}else"snippet"==o?(n.tabTrigger=r.match(/^\S*/)[0],n.name||(n.name=r)):n[o]=r}}return i},this.getSnippetByName=function(e,t){var i,n=this.snippetNameMap;return this.getActiveScopes(t).some(function(t){var s=n[t];return s&&(i=s[e]),!!i},this),i}}).call(u.prototype);var d=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=o.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t="r"==e.action[0],i=e.start,n=e.end,s=i.row,o=n.row-s,r=n.column-i.column;if(t&&(o=-o,r=-r),!this.$inChange&&t){var a=this.selectedTabstop;if(a&&!a.some(function(e){return h(e.start,i)<=0&&h(e.end,n)>=0}))return this.detach()}for(var l=this.ranges,c=0;c0?(this.removeRange(u),c--):(u.start.row==s&&u.start.column>i.column&&(u.start.column+=r),u.end.row==s&&u.end.column>=i.column&&(u.end.column+=r),u.start.row>=s&&(u.start.row+=o),u.end.row>=s&&(u.end.row+=o),h(u.start,u.end)>0&&this.removeRange(u)))}l.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(e&&e.hasLinkedRanges){this.$inChange=!0;for(var i=this.editor.session,n=i.getTextRange(e.firstNonLinked),s=e.length;s--;){var o=e[s];if(o.linked){var r=t.snippetManager.tmStrFormat(n,o.original);i.replace(o,r)}}this.$inChange=!1}},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(this.editor){for(var e=this.editor.selection.lead,t=this.editor.selection.anchor,i=this.editor.selection.isEmpty(),n=this.ranges.length;n--;)if(!this.ranges[n].linked){var s=this.ranges[n].contains(e.row,e.column),o=i||this.ranges[n].contains(t.row,t.column);if(s&&o)return}this.detach()}},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,i=this.index+(e||1);(i=Math.min(Math.max(i,1),t))==t&&(i=0),this.selectTabstop(i),0===i&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];if(t&&this.addTabstopMarkers(t),this.index=e,(t=this.tabstops[this.index])&&t.length){if(this.selectedTabstop=t,this.editor.inVirtualSelectionMode)this.editor.selection.setRange(t.firstNonLinked);else{var i=this.editor.multiSelect;i.toSingleRange(t.firstNonLinked.clone());for(var n=t.length;n--;)t.hasLinkedRanges&&t[n].linked||i.addRange(t[n].clone(),!0);i.ranges[0]&&i.addRange(i.ranges[0].clone())}this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)}},this.addTabstops=function(e,t,i){if(this.$openTabstops||(this.$openTabstops=[]),!e[0]){var n=r.fromPoints(i,i);m(n.start,t),m(n.end,t),e[0]=[n],e[0].index=0}var s=[this.index+1,0],o=this.ranges;e.forEach(function(e,i){for(var n=this.$openTabstops[i]||e,a=e.length;a--;){var l=e[a],c=r.fromPoints(l.start,l.end||l.start);f(c.start,t),f(c.end,t),c.original=l,c.tabstop=n,o.push(c),n!=e?n.unshift(c):n[a]=c,l.fmtString?(c.linked=!0,n.hasLinkedRanges=!0):n.firstNonLinked||(n.firstNonLinked=c)}n.firstNonLinked||(n.hasLinkedRanges=!1),n===e&&(s.push(n),this.$openTabstops[i]=n),this.addTabstopMarkers(n)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(-1!=(t=this.tabstops.indexOf(e.tabstop))&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new l,this.keyboardHandler.bindKeys({Tab:function(e){t.snippetManager&&t.snippetManager.expandWithTab(e)||e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(d.prototype);var g={};g.onChange=a.prototype.onChange,g.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},g.update=function(e,t,i){this.$insertRight=i,this.pos=e,this.onChange(t)};var f=function(e,t){0==e.row&&(e.column+=t.column),e.row+=t.row},m=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new u;var p=e("./editor").Editor;(function(){this.insertSnippet=function(e,i){return t.snippetManager.insertSnippet(this,e,i)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(p.prototype)}),ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","tabStops","resources","utils","actions","ace/config","ace/config"],function(e,t,i){"use strict";var n,s,o=e("ace/keyboard/hash_handler").HashHandler,r=e("ace/editor").Editor,a=e("ace/snippets").snippetManager,l=e("ace/range").Range;function c(){}c.prototype={setupContext:function(e){this.ace=e,this.indentation=e.session.getTabString(),n||(n=window.emmet),(n.resources||n.require("resources")).setVariable("indentation",this.indentation),this.$syntax=null,this.$syntax=this.getSyntax()},getSelectionRange:function(){var e=this.ace.getSelectionRange(),t=this.ace.session.doc;return{start:t.positionToIndex(e.start),end:t.positionToIndex(e.end)}},createSelection:function(e,t){var i=this.ace.session.doc;this.ace.selection.setRange({start:i.indexToPosition(e),end:i.indexToPosition(t)})},getCurrentLineRange:function(){var e=this.ace,t=e.getCursorPosition().row,i=e.session.getLine(t).length,n=e.session.doc.positionToIndex({row:t,column:0});return{start:n,end:n+i}},getCaretPos:function(){var e=this.ace.getCursorPosition();return this.ace.session.doc.positionToIndex(e)},setCaretPos:function(e){var t=this.ace.session.doc.indexToPosition(e);this.ace.selection.moveToPosition(t)},getCurrentLine:function(){var e=this.ace.getCursorPosition().row;return this.ace.session.getLine(e)},replaceContent:function(e,t,i,n){null==i&&(i=null==t?this.getContent().length:t),null==t&&(t=0);var s=this.ace,o=s.session.doc,r=l.fromPoints(o.indexToPosition(t),o.indexToPosition(i));s.session.remove(r),r.end=r.start,e=this.$updateTabstops(e),a.insertSnippet(s,e)},getContent:function(){return this.ace.getValue()},getSyntax:function(){if(this.$syntax)return this.$syntax;var e=this.ace.session.$modeId.split("/").pop();if("html"==e||"php"==e){var t=this.ace.getCursorPosition(),i=this.ace.session.getState(t.row);"string"!=typeof i&&(i=i[0]),i&&((i=i.split("-")).length>1?e=i[0]:"php"==e&&(e="html"))}return e},getProfileName:function(){var e=n.resources||n.require("resources");switch(this.getSyntax()){case"css":return"css";case"xml":case"xsl":return"xml";case"html":var t=e.getVariable("profile");return t||(t=-1!=this.ace.session.getLines(0,2).join("").search(/]+XHTML/i)?"xhtml":"html"),t;default:var i=this.ace.session.$mode;return i.emmetConfig&&i.emmetConfig.profile||"xhtml"}},prompt:function(e){return prompt(e)},getSelection:function(){return this.ace.session.getTextRange()},getFilePath:function(){return""},$updateTabstops:function(e){var t=0,i=null,s=n.tabStops||n.require("tabStops"),o=(n.resources||n.require("resources")).getVocabulary("user"),r={tabstop:function(e){var n=parseInt(e.group,10),o=0===n;o?n=++t:n+=1e3;var a=e.placeholder;a&&(a=s.processText(a,r));var l="${"+n+(a?":"+a:"")+"}";return o&&(i=[e.start,l]),l},escape:function(e){return"$"==e?"\\$":"\\"==e?"\\\\":e}};if(e=s.processText(e,r),o.variables.insert_final_tabstop&&!/\$\{0\}$/.test(e))e+="${0}";else if(i){e=(n.utils?n.utils.common:n.require("utils")).replaceSubstring(e,"${0}",i[0],i[1])}return e}};var h={expand_abbreviation:{mac:"ctrl+alt+e",win:"alt+e"},match_pair_outward:{mac:"ctrl+d",win:"ctrl+,"},match_pair_inward:{mac:"ctrl+j",win:"ctrl+shift+0"},matching_pair:{mac:"ctrl+alt+j",win:"alt+j"},next_edit_point:"alt+right",prev_edit_point:"alt+left",toggle_comment:{mac:"command+/",win:"ctrl+/"},split_join_tag:{mac:"shift+command+'",win:"shift+ctrl+`"},remove_tag:{mac:"command+'",win:"shift+ctrl+;"},evaluate_math_expression:{mac:"shift+command+y",win:"shift+ctrl+y"},increment_number_by_1:"ctrl+up",decrement_number_by_1:"ctrl+down",increment_number_by_01:"alt+up",decrement_number_by_01:"alt+down",increment_number_by_10:{mac:"alt+command+up",win:"shift+alt+up"},decrement_number_by_10:{mac:"alt+command+down",win:"shift+alt+down"},select_next_item:{mac:"shift+command+.",win:"shift+ctrl+."},select_previous_item:{mac:"shift+command+,",win:"shift+ctrl+,"},reflect_css_value:{mac:"shift+command+r",win:"shift+ctrl+r"},encode_decode_data_url:{mac:"shift+ctrl+d",win:"ctrl+'"},expand_abbreviation_with_tab:"Tab",wrap_with_abbreviation:{mac:"shift+ctrl+a",win:"shift+ctrl+a"}},u=new c;for(var d in t.commands=new o,t.runEmmetCommand=function e(t){try{u.setupContext(t);var i=n.actions||n.require("actions");if("expand_abbreviation_with_tab"==this.action){if(!t.selection.isEmpty())return!1;var s=t.selection.lead,o=t.session.getTokenAt(s.row,s.column);if(o&&/\btag\b/.test(o.type))return!1}if("wrap_with_abbreviation"==this.action)return setTimeout(function(){i.run("wrap_with_abbreviation",u)},0);var r=i.run(this.action,u)}catch(i){if(!n)return f(e.bind(this,t)),!0;t._signal("changeStatus","string"==typeof i?i:i.message),console.log(i),r=!1}return r},h)t.commands.addCommand({name:"emmet:"+d,action:d,bindKey:h[d],exec:t.runEmmetCommand,multiSelectAction:"forEach"});t.updateCommands=function(e,i){i?e.keyBinding.addKeyboardHandler(t.commands):e.keyBinding.removeKeyboardHandler(t.commands)},t.isSupportedMode=function(e){if(!e)return!1;if(e.emmetConfig)return!0;var t=e.$id||e;return/css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(t)},t.isAvailable=function(e,i){if(/(evaluate_math_expression|expand_abbreviation)$/.test(i))return!0;var n=e.session.$mode,s=t.isSupportedMode(n);if(s&&n.$modes)try{u.setupContext(e),/js|php/.test(u.getSyntax())&&(s=!1)}catch(e){}return s};var g=function(e,i){var n=i;if(n){var s=t.isSupportedMode(n.session.$mode);!1===e.enableEmmet&&(s=!1),s&&f(),t.updateCommands(n,s)}},f=function(t){"string"==typeof s&&e("ace/config").loadModule(s,function(){s=null,t&&t()})};t.AceEmmetEditor=c,e("ace/config").defineOptions(r.prototype,"editor",{enableEmmet:{set:function(e){this[e?"on":"removeListener"]("changeMode",g),g({enableEmmet:!!e},this)},value:!0}}),t.setCore=function(e){"string"==typeof e?s=e:n=e}}),ace.acequire(["ace/ext/emmet"],function(){})}}]); +//# sourceMappingURL=chunk-7fe2.458f9da5.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-7fe2.458f9da5.js.map b/priv/static/adminfe/static/js/chunk-7fe2.458f9da5.js.map new file mode 100644 index 000000000..34a06172f --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-7fe2.458f9da5.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/brace/index.js","webpack:///./node_modules/default-passive-events/dist/index.js","webpack:///./node_modules/vue2-ace-editor/index.js","webpack:///./node_modules/brace/mode/elixir.js","webpack:///./node_modules/brace/ext/emmet.js"],"names":["module","exports","Error","global","this","window","define","deps","payload","arguments","length","modules","payloads","original","apply","console","error","trace","_acequire","parentId","callback","lookup","undefined","Object","prototype","toString","call","params","i","l","dep","acequire","push","packagedModule","normalizeModule","moduleName","indexOf","chunks","split","charAt","slice","join","previous","replace","mod","id","uri","packaged","ns","root","exportAce","ace","real","exec","RegExp","test","match","String","compliantExecNpcg","compliantLastIndexIncrement","x","lastIndex","str","name","r2","array","item","from","Array","source","regex","ignoreCase","multiline","extended","sticky","getNativeFlags","index","_xregexp","captureNames","Empty","Function","bind","that","target","TypeError","args","bound","result","concat","defineGetter","defineSetter","lookupGetter","lookupSetter","supportsAccessors","prototypeOfArray","prototypeOfObject","_toString","owns","hasOwnProperty","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","splice","makeArray","a","lengthBefore","array_splice","start","deleteCount","pos","removeCount","Math","max","removed","insert","add","remove","min","tailOldPos","tailNewPos","tailCount","lengthAfterRemove","isArray","obj","createEmpty","boxedString","splitString","forEach","fun","object","toObject","self","thisp","map","filter","value","every","some","reduce","reduceRight","sought","toInteger","lastIndexOf","abs","getPrototypeOf","__proto__","constructor","getOwnPropertyDescriptor","property","descriptor","enumerable","configurable","getter","setter","get","set","getOwnPropertyNames","keys","create","empty","propertyIsEnumerable","isPrototypeOf","toLocaleString","valueOf","properties","Type","defineProperties","doesDefinePropertyWork","defineProperty","exception","definePropertyWorksOnObject","definePropertyWorksOnDom","document","createElement","definePropertyFallback","seal","freeze","freezeObject","preventExtensions","isSealed","isFrozen","isExtensible","returnValue","hasDontEnumBug","dontEnums","dontEnumsLength","key","ii","dontEnum","Date","now","getTime","ws","trim","trimBeginRegexp","trimEndRegexp","n","floor","o","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","hasCssClass","el","className","addCssClass","removeCssClass","classes","toggleCssClass","setCssClass","node","include","hasCssString","sheets","createStyleSheet","styleSheets","owningElement","importCssString","cssText","style","appendChild","createTextNode","importCssStylsheet","link","rel","href","getInnerWidth","element","parseInt","computedStyle","clientWidth","getInnerHeight","clientHeight","scrollbarWidth","inner","width","minWidth","height","display","outer","position","left","overflow","body","noScrollbar","offsetWidth","withScrollbar","removeChild","pageYOffset","getPageScrollTop","getPageScrollLeft","pageXOffset","scrollTop","scrollLeft","getComputedStyle","currentStyle","setInnerHtml","innerHtml","cloneNode","innerHTML","parentNode","replaceChild","setInnerText","innerText","textContent","getInnerText","getParentWindow","defaultView","parentWindow","inherits","ctor","superCtor","super_","writable","mixin","implement","proto","oop","Keys","ret","MODIFIER_KEYS","16","17","18","224","KEY_MODS","ctrl","alt","option","shift","super","meta","command","cmd","FUNCTION_KEYS","8","9","13","19","27","32","33","34","35","36","37","38","39","40","44","45","46","96","97","98","99","100","101","102","103","104","105","-13","112","113","114","115","116","117","118","119","120","121","122","123","144","145","PRINTABLE_KEYS","48","49","50","51","52","53","54","55","56","57","59","61","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","107","109","110","186","187","188","189","190","191","192","219","220","221","222","111","106","toLowerCase","enter","escape","esc","del","mods","pow","keyCodeToString","keyCode","keyString","fromCharCode","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","navigator","os","platform","ua","userAgent","isWin","isIE","appName","parseFloat","isOldIE","isGecko","isMozilla","Controllers","controllers","product","isOldGecko","isOpera","opera","isWebKit","isChrome","isAIR","isIPad","isChromeOS","isIOS","MSStream","useragent","pressedKeys","ts","addListener","elem","type","addEventListener","attachEvent","wrapper","event","_wrapper","removeListener","removeEventListener","detachEvent","stopEvent","e","stopPropagation","preventDefault","cancelBubble","getButton","ctrlKey","altKey","shiftKey","button","1","2","4","capture","eventHandler","releaseCaptureHandler","onMouseUp","addTouchMoveListener","startx","starty","touchObj","touches","clientX","clientY","wheelX","wheelY","addMouseWheelListener","wheelDeltaX","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","elements","timeouts","callbackName","startX","startY","timer","clicks","eventNames","3","onMousedown","isNewClick","clearTimeout","setTimeout","_clicks","onDblclick","getModifierHash","metaKey","normalizeCommandKeys","hashId","getModifierState","altGr","location","keyLocation","timeStamp","defaultPrevented","resetPressedKeys","getModifierString","addCommandKeyListener","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","nextTick","win","listener","data","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","last","stringReverse","string","reverse","stringRepeat","count","stringTrimLeft","stringTrimRight","copyObject","copy","copyArray","deepCopy","arrayToMap","arr","createMap","props","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","regExp","matches","offset","deferredCall","fcn","deferred","timeout","cancel","schedule","isPending","delayedCall","defaultTimeout","_self","delay","dom","lang","KEYS","MODS","BROKEN_SETDATA","USE_IE_MIME_TYPE","TextInput","host","text","isTouchPad","setAttribute","opacity","insertBefore","firstChild","PLACEHOLDER","copied","cut","pasted","inComposition","tempStyle","isSelectionEmpty","isFocused","activeElement","onBlur","onFocus","resetSelection","focus","blur","syncSelection","syncValue","isEmpty","inputHandler","selectionStart","selectionEnd","setSelectionRange","resetValue","selection","setInputHandler","cb","getInputHandler","afterContextMenu","sendText","onPaste","substr","execCommand","substring","onTextInput","onInput","handleClipboardData","forceIEMime","clipboardData","mime","setData","getData","doCopy","isCut","getCopyText","onCut","onCopy","select","onCommandKey","isAllSelected","selectAll","closeTimeout","onCompositionUpdate","$readOnly","val","lastValue","undo","canUndo","r","getRange","session","markUndoGroup","range","setRange","clearSelection","onCompositionEnd","c","syncComposition","onContextMenuClose","renderer","$keepTextAreaAtCursor","$moveTextAreaToCursor","onCompositionStart","$undoManager","on","getElement","setReadOnly","readOnly","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","rect","container","getBoundingClientRect","top","borderTopWidth","borderLeftWidth","maxTop","bottom","move","textInput","scroller","typingResetTimeout","typing","detectArrowKeys","up","home","right","end","down","TextInputIOS","DefaultHandlers","mouseHandler","$clickSelection","editor","setDefaultHandler","onMouseDown","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","onTouchMove","selectByLines","extendSelectionBy","selectByWords","calcRangeOrientation","cursor","row","cmp","column","anchor","ev","inSelection","getDocumentPosition","mousedownEvent","selectionEmpty","getSelectionRange","$blockScrolling","moveToPosition","time","$focusTimout","inMultiSelectMode","captureMouse","startSelect","setState","waitForClickSelection","screenToTextCoordinates","y","getShiftKey","selectToPosition","setCapture","setStyle","comparePoint","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","distance","ax","ay","bx","by","sqrt","calcDistance","getBracketRange","getWordRange","isMultiLine","contains","getLineRange","getAccelKey","$lastScroll","t","vx","vy","allowed","prevScroll","dt","direction","canScroll","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setText","setHtml","html","setPosition","setClassName","show","hide","getHeight","offsetHeight","getWidth","destroy","GutterTooltip","windowWidth","innerWidth","windowHeight","innerHeight","GutterHandler","tooltipTimeout","mouseEvent","tooltipAnnotation","gutter","$gutterLayer","tooltip","hideTooltip","_signal","moveTooltip","getRegion","selectTo","srcElement","$tooltipFollowsMouse","isMousePressed","annotation","$annotations","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","showTooltip","$gutter","MouseEvent","$inSelection","propagationStopped","selectionRange","AUTOSCROLL_DELAY","SCROLL_CURSOR_DELAY","SCROLL_CURSOR_HYSTERESIS","DragdropHandler","blankImage","src","dragSelectionMarker","timerId","dragCursor","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","mouseTarget","counter","onDragInterval","prevCursor","vMovement","hMovement","moveCursorToPosition","lineHeight","layerConfig","characterWidth","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScroll","addDragMarker","toOrientedRange","addMarker","getSelectionStyle","$cursorLayer","setBlinking","clearInterval","setInterval","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","getReadOnly","onDragStart","cancelDrag","draggable","dataTransfer","effectAllowed","setDragImage","clearData","getTextRange","onDragEnd","dropEffect","setCursorStyle","onDragEnter","canAccept","getDropEffect","onDragOver","onMouseMoveTimer","onDragLeave","onDrop","moveText","dropData","types","copyAllowed","copyModifierState","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","state","dragDrop","$dragEnabled","eventTarget","unselectable","url","xhr","XMLHttpRequest","open","onreadystatechange","readyState","responseText","send","loadScript","path","s","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","once","newCallback","handlers","_disabled_","old","disabled","removeDefaultHandler","pop","capturing","off","removeAllListeners","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","getOption","opt","warn","forwardTo","handlesSet","message","reportError","msg","AppConfig","$defaultOptions","defineOptions","options","initialValue","resetOptions","setDefaultValue","opts","setDefaultValues","optionHash","net","workerPath","modePath","themePath","basePath","suffix","$moduleUrls","init","__webpack_require__","scriptOptions","scriptUrl","currentScript","_currentScript","scripts","ownerDocument","script","getAttribute","attributes","j","attr","deHyphenate","m","base","m1","toUpperCase","all","moduleUrl","component","parts","sep","re","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","DefaultGutterHandler","config","MouseHandler","focusEditor","hasFocus","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","Boolean","gutterEl","$dragDelay","character","insideStart","mousemove","$scrollSpeed","mouseMoveHandler","which","releaseMouse","$mouseMoved","onCaptureEnd","onCaptureInterval","$onCaptureMouseMove","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","getLine","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","commands","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","h","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","dir","hiLevel","lastArabic","hasUBAT_B","hasUBAT_S","impTab_LTR","impTab_RTL","RTL","L","R","EN","AN","ON","B","S","AL","WS","CS","ES","ET","NSM","LRE","RLE","PDF","LRO","RLO","BN","UnicodeTBL00","UnicodeTBL20","_invertLevel","lev","levels","_array","lo","hi","tmp","len","_getCharClass","chars","ix","wType","nType","cType","rtlCandidate","_getCharacterType","ch","uc","charCodeAt","ON_R","R_H","DOT","doBidiReorder","textCharTypes","isRtl","logicalFromVisual","bidiLevels","charTypes","impTab","prevState","newClass","newLevel","newState","action","condPos","_computeLevels","hasBidiCharacters","getVisualFromLogicalIdx","logIdx","rowMap","bidiUtil","bidiRE","BidiHandler","bidiMap","currentRow","charWidths","EOL","showInvisibles","isRtlDir","line","wrapIndent","isLastRow","EOF","seenBidi","isBidiRow","docRow","splitIndex","updateRowLine","updateBidiMap","onChange","delta","lines","getDocumentRow","rowCache","$screenRowCache","$getRowCacheIndex","$docRowCache","getSplitIndex","currentIndex","prevIndex","$useWrapMode","splits","$wrapData","indent","size","isFullWidth","getScreenTabSize","endOfLine","markAsDirty","updateCharacterWidths","fontMetrics","$characterSize","bidiCharWidth","$measureCharWidth","getShowInvisibles","setShowInvisibles","setEolChar","eolChar","setTextDir","getPosLeft","col","visualIdx","getSelections","startCol","endCol","level","selections","selColMin","selColMax","isSelected","isSelectedPrev","visIdx","offsetToCol","posX","logicalIdx","charWidth","Range","startRow","startColumn","endRow","endColumn","isEqual","compare","compareRange","p","containsRange","intersects","isEnd","isStart","setStart","setEnd","inside","insideEnd","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","extend","clone","collapseRows","toScreenRange","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","comparePoints","p1","p2","Selection","getDocument","lead","selectionLead","createAnchor","selectionAnchor","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","getCursor","getPosition","getSelectionAnchor","getSelectionLead","shiftSelection","columns","moveCursorTo","isBackwards","$moveSelection","mover","moveTo","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectWord","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","wouldMoveIntoSoftTab","tabSize","isTabStop","getTabSize","getNavigateWithinSoftTabs","firstColumnPosition","screenToDocumentPosition","leadingSpace","getDisplayLine","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","search","moveCursorLongWordRight","rightOfCursor","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","offsetX","screenPos","$bidiHandler","round","docPos","lineWidgets","keepDesiredColumn","moveCursorToScreen","desiredColumn","getRangeOfMovements","func","toJSON","rangeCount","ranges","r1","fromJSON","rangeList","toSingleRange","addRange","MAX_TOKEN_COUNT","Tokenizer","rules","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","rule","caseInsensitive","adjustedregex","matchcount","token","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","values","tokens","stack","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","next","consumeLineEnd","merge","unshift","TextHighlightRules","$rules","addRules","prefix","nextState","getRules","embedRules","HighlightRules","escapeRules","append","$embeds","getEmbeds","pushState","popState","normalizeRules","processState","processed","toInsert","stateName","includeName","noEscape","keywordMap","createKeywordMapper","splitChar","keywords","list","$keywordList","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","mode","getBehaviours","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","rowCount","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","getCurrentTokenRange","context","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","defaultQuotes","\"","'","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","selected","opening","closing","rowDiff","CstyleBehaviour","getCursorPosition","getWrapBehavioursEnabled","isSaneInsertion","braces","recordAutoInsert","recordMaybeInsert","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","openBracePos","findMatchingBracket","next_indent","$getIndent","getTabString","quotes","$mode","$quotes","lineCommentStart","quote","leftChar","rightChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","iterator","$matchTokenType","iterator2","bracket","packages","pack","codePoint","addUnicodePackage","Ll","Lu","Lt","Lm","Lo","M","Mn","Mc","Me","N","Nd","Nl","No","P","Pd","Ps","Pe","Pi","Pf","Pc","Po","Sm","Sc","Sk","So","Z","Zs","Zl","Zp","C","Cc","Cf","Co","Cs","Cn","unicode","Mode","$defaultBehaviour","getTokenizer","$tokenizer","$highlightRules","$highlightRuleConfig","blockComment","toggleCommentLines","ignoreBlankLines","shouldRemove","minIndent","Infinity","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","removeInLine","commentWithSpace","comment","insertInLine","testRemove","before","after","spaces","lineCommentEnd","regexpEnd","iter","minEmptyLength","toggleBlockComment","colDiff","initialRange","startRange","endRange","getNextLineIndent","tab","checkOutdent","input","autoOutdent","createWorker","createModeDelegates","$modes","delegations","scope","functionName","$delegator","method","transformAction","param","$behaviour","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","word","score","$id","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$clipPositionToDocument","$insertRight","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$getTransformedPoint","noClip","Document","textOrLines","$lines","insertMergedLines","setValue","getValue","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","MAX","to","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","first","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","cache","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","sort","b","containsRow","walk","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","log","foldBefore","newFoldLine","foldLineNext","idxToPosition","idx","lastFoldEndColumn","RangeList","pointIndex","excludeEdges","startIndex","endIndex","addList","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","Fold","subFolds","consumePoint","restorePoint","subFold","collapseChildren","addSubFold","consumeRange","afterStart","restoreRange","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","lastFold","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","getCommentFoldRange","depth","getFoldWidget","getFoldWidgetRange","$foldStyles","manual","markbegin","markbeginend","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","children","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","$brackets",")","(","]","[","{","}","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","$uid","onChangeFold","setMode","bgTokenizer","resetCaches","$resetRowCache","cacheArray","low","mid","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","ignore","$deltasDoc","$deltasFold","$informUndoManager","$deltas","setUndoManager","getUndoManager","reset","getSelection","undoManager","$syncInformUndoManager","group","execute","mergeUndoDeltas","$defaultUndoManager","redo","setUseSoftTabs","$useSoftTabs","$indentWithTabs","setTabSize","$tabSize","setNavigateWithinSoftTabs","navigateWithinSoftTabs","$navigateWithinSoftTabs","$overwrite","setOverwrite","overwrite","getOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","markers","getMarkers","highlight","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","getMode","$scrollTop","setScrollTop","isNaN","getScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","w","lineWidgetWidth","force","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","lastUndoRange","$getUndoSelection","foldDelta","redoChanges","setUndoSelect","enable","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","$moveLines","diff","$clipRowToDocument","Number","MAX_VALUE","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","setUseWrapMode","useWrapMode","getUseWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","limit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","SPACE","TAB","TAB_SPACE","displayLength","lastSplit","lastDocSplit","isCode","$wrapAsCode","indentedSoftWrap","$indentedSoftWrap","maxIndent","addSplit","displayed","indentation","getWrapIndent","minSplit","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","doCache","maxRow","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","wrap","$wrap","firstLineNumber","useSoftTabs","Search","find","$matchIterator","sr","sc","er","ec","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","$disableFakeMultiline","wholeWord","wordBoundary","addWordBoundary","modifier","caseSensitive","$assembleMultilineRegExp","backwards","forEachInLine","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","bindKey","isDefault","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","removeCommands","bindKeys","keyList","findKeyCommand","$keyChain","CommandManager","byName","isAvailable","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","prompt","gotoLine","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","firstLineEndCol","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","textarea","$mouseHandler","keyBinding","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","startOperation","endOperation","$opResetTimer","curOp","docChanged","selectionChanged","prevOp","commadEvent","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","prev","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","handler","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","getSession","cursorPos","resize","onResize","setTheme","theme","getTheme","getFontSize","setFontSize","$highlightBrackets","$bracketHighlight","$highlightPending","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","prevToken","sbm","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","updateLines","$updateHighlightActiveLine","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","startOuter","endOuter","lineCols","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","inVirtualSelectionMode","getBehavioursEnabled","transform","$mergeNextCommand","d","lineState","shouldOutdent","lineIndent","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","setDisplayIndentGuides","getDisplayIndentGuides","setShowPrintMargin","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","isFinite","nr","fp","decimals","nnr","toFixed","replaceRange","sel","endPoint","moved","totalDiff","rangeIndex","subRows","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","animate","alignCursor","getCursorPositionScreen","expand","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","preventScroll","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","searchBox","$pixelPos","$resetCursorStyle","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","behavioursEnabled","wrapBehavioursEnabled","autoScrollEditorIntoView","keybindingId","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","showLineNumbers","showGutter","displayIndentGuides","fontSize","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","foldStyle","UndoManager","$serializeDelta","$deserializeDelta","cloneDeltaSetsObj","deltaSets_old","fnGetModifiedDelta","deltaSets_new","deltaSet_old","deltaSet_new","delta_old","deltaSets","$doc","hasUndo","dirtyCounter","$undoStack","$redoStack","NaN","undoSelectionRange","redoSelectionRange","$deserializeDeltas","hasRedo","markClean","isClean","$serializeDeltas","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","$cells","rowInfo","annoText","gutterOffset","breakpoints","decorations","$firstLineNumber","lastLineNumber","gutterRenderer","$renderer","cell","textNode","foldWidget","getText","minHeight","$fixedWidth","padding","$padding","$computePadding","ceil","$showLineNumbers","setShowLineNumbers","getShowLineNumbers","paddingLeft","paddingRight","Marker","getBorderClass","tl","tr","br","bl","setPadding","setMarkers","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","drawBidiSingleLineMarker","firstRowScreen","stringBuilder","extraStyle","curr","clazzModified","lineRange","range1","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","getLineHeight","$fontMetrics","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","$tabStrings","tabStr","$indentGuideRe","spaceClass","tabClass","spaceContent","tabContent","scrollLines","lineElements","childNodes","lineElementsIdx","lineElement","$renderLine","$useLineGroups","oldConfig","lastChild","fragment","$renderLinesFragment","createDocumentFragment","$textToken","rparen","lparen","$renderToken","output","tabIdx","idx4","classToUse","space","renderIndentGuide","cols","$renderWrappedLine","onlyContents","splitChars","$renderSimpleLine","$getFoldLineTokens","renderTokens","addTokens","$measureNode","isIE8","Cursor","isVisible","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateVisibility","$updateOpacity","visibility","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","blink","getPixelPosition","onScreen","$selectionMarkers","cursorIndex","pixelPos","drawCursor","$setOverwrite","ScrollBar","parent","classSuffix","setVisible","skipEvent","onScroll","coeff","VScrollBar","scrollHeight","$scrollbarWidth","$minWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","change","CHAR_COUNT","FontMetrics","$setMeasureNodeStyles","$main","$testFractionalRect","isRoot","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","setPolling","GutterLayer","MarkerLayer","TextLayer","CursorLayer","VirtualRenderer","content","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","maxHeight","v","$loop","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_GUTTER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$updateGutterLineHighlight","$gutterLineHighlight","$printMarginEl","containerEl","posTop","posLeft","$composition","setScrollMargin","sm","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","st","marginTop","marginLeft","$highlightGutterLine","$updateLines","$autosize","desiredHeight","$maxPixelHeight","$gutterWidth","hideScrollbars","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","steps","x_min","dx","initialScroll","oldSteps","$timer","scrollTo","canvasPos","textToScreenCoordinates","pageX","pageY","keepTextAreaAtCursor","$themeId","cssClass","$theme","isDark","setMouseCursor","maxPixelHeight","workerUrl","blob","Blob","blobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","$workerBlob","blobURL","URL","webkitURL","createObjectURL","Worker","WorkerClient","topLevelNamespaces","classname","importScripts","$sendDeltaQueue","changeListener","onMessage","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","callbackId","callbacks","onmessage","err","deltaQueue","emit","ex","attachToDocument","q","UIWorkerClient","messageBuffer","main","emitSync","sender","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","selectionBefore","other","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","otherPos","updateMarkers","updateMarker","undosRequired","isSamePoint","accel","selectionMode","isMultiSelect","mouseX","mouseY","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","onSelectionInterval","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","selectMoreLines","selectMore","splitIntoLines","alignCursors","multiSelectCommands","getSelectionMarkers","$blockChangeEvents","$onAddRange","$onRemoveRange","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","startOffsetX","endOffsetX","yBackwards","docEnd","MultiSelect","$multiselectOnSessionChange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","altCursor","altDown","addAltCursorListeners","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","forEachSelection","keepOrder","$byLines","reg","cmdResult","anim","buf","nl","additive","skip","screenLead","toRemove","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","startW","textW","endW","isLeftAligned","isRightAligned","alignLeft","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","hidden","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","oldWidget","gutterAnno","comparator","binarySearch","matched","findAnnotations","arrow","onmousedown","Renderer","edit","_id","getElementById","env","tagName","oldNode","createEditSession","version","__esModule","default","Symbol","u","eventListenerOptionsSupported","EventTarget","assign","passive","_original","render","attrs","px","required","contentBackup","methods","watch","newTheme","newLang","newOption","$nextTick","beforeDestroy","mounted","vm","$el","$emit","ElixirHighlightRules","TODO","originalRegex","#escaped_char","#interpolated_elixir","todo","#nest_curly_and_self","#regex_sub","metaData","fileTypes","firstLineMatch","keyEquivalent","scopeName","BaseFoldMode","prevIndent","nextIndent","SnippetManager","snippetMap","snippetNameMap","TabstopToken","inFormatString","tabstopId","expectIf","elseBranch","changeCase","local","snippetVar","choices","fmtString","guard","fmt","code","formatString","tokenizeTmSnippet","$getDefaultValue","variables","__","getVariableValue","varName","tmStrFormat","fmtTokens","formatted","fmtParts","resolveVariables","gChangeCase","snippet","gotoNext","i1","insertSnippetForSelection","snippetText","tabString","tabstops","expanding","copyValue","arg","tabstopManager","TabstopManager","selectionId","addTabstops","insertSnippet","tabNext","$getScope","inlinePhp","getActiveScopes","scopes","includeScopes","expandWithTab","expandSnippetForSelection","snippets","findMatchingSnippet","dryRun","replaceBefore","replaceAfter","M__","matchBefore","T__","matchAfter","snippetList","startRe","endRe","triggerRe","endTriggerRe","register","wrapRegexp","guardedRegexp","addSnippet","unregister","tabTrigger","trigger","endTrigger","endGuard","removeSnippet","nameMap","parseSnippetFile","JSON","parse","guardRe","getSnippetByName","$onChangeSelection","$onChangeSession","onChangeSession","$onAfterExec","onAfterExec","$openTabstops","selectedTabstop","removeTabstopMarkers","isRemove","$inChange","removeRange","updateLinkedFields","hasLinkedRanges","firstNonLinked","linked","snippetManager","containsLead","containsAnchor","selectTabstop","addTabstopMarkers","moveRelative","dest","movePoint","tabstop","Tab","ed","Shift-Tab","Esc","Return","changeTracker","expandSnippet","emmet","emmetPath","AceEmmetEditor","setupContext","resources","require","setVariable","$syntax","getSyntax","createSelection","getCurrentLineRange","lineLength","getCaretPos","setCaretPos","getCurrentLine","replaceContent","noIndent","getContent","$updateTabstops","syntax","getProfileName","profile","getVariable","emmetConfig","title","getFilePath","zeroBase","lastZero","tabStops","settings","getVocabulary","tabstopOptions","isZero","processText","utils","common","replaceSubstring","keymap","expand_abbreviation","match_pair_outward","match_pair_inward","matching_pair","next_edit_point","prev_edit_point","toggle_comment","split_join_tag","remove_tag","evaluate_math_expression","increment_number_by_1","decrement_number_by_1","increment_number_by_01","decrement_number_by_01","increment_number_by_10","decrement_number_by_10","select_next_item","select_previous_item","reflect_css_value","encode_decode_data_url","expand_abbreviation_with_tab","wrap_with_abbreviation","editorProxy","runEmmetCommand","actions","run","load","updateCommands","isSupportedMode","isSupported","enableEmmet","setCore"],"mappings":"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,mBAEA++C,EAAA,WAEA5zF,KAAA80C,QAAmBtuC,QACTysC,OACV,qBACA,gCACA,qBACA,kCACA/uC,MAAA,iEACU+uC,MAAA,gCACV/uC,MAAA,sCACAtC,OACeqxC,MAAA,gCACf/uC,MAAA,UACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,kCACf6M,QAAA,mDACUtM,MAAA,gCACV/uC,MAAA,iCACAtC,OACeqxC,MAAA,gCACf/uC,MAAA,UACAuwC,KAAA,QACe/B,aAAA,kCACf6M,QAAA,mDACUtM,MAAA,gCACV/uC,MAAA,sCACAtC,OACeqxC,MAAA,gCACf/uC,MAAA,UACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,kCACf6M,QAAA,mDACUtM,MAAA,gCACV/uC,MAAA,iCACAtC,OACeqxC,MAAA,gCACf/uC,MAAA,UACAuwC,KAAA,QACe/B,aAAA,kCACf6M,QAAA,mDACUtM,MAAA,8BACV/uC,MAAA,6BACAq7C,QAAA,2CACUtM,MAAA,+BACV/uC,MAAA,yBACAtC,OACeqxC,MAAA,+BACf/uC,MAAA,IACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,iCACf6M,QAAA,iDACUtM,MAAA,yBACV/uC,MAAA,uSACA2vF,KAAA,2CACAC,cAAA,+SACU7gD,MAAA,0BACV/uC,MAAA,iDACA2vF,KAAA,2CACAC,cAAA,uDACAv0C,QAAA,oEACUtM,MAAA,2BACV/uC,MAAA,qCACU+uC,MAAA,2BACV/uC,MAAA,gDACU+uC,OACV,yCACA,0CACA/uC,MAAA,uBACU+uC,OACV,yCACA,mCACA/uC,MAAA,cACU+uC,MAAA,iCACV/uC,MAAA,oBACU+uC,MAAA,0BACV/uC,MAAA,iJACA2vF,KAAA,2CACAC,cAAA,6HACU7gD,MAAA,yCACV/uC,MAAA,KACAtC,OACeqxC,MAAA,yCACf/uC,MAAA,IACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,iDACLO,MAAA,yCACV/uC,MAAA,KACAtC,OACeqxC,MAAA,yCACf/uC,MAAA,IACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,iDACLO,MAAA,6CACV/uC,MAAA,UACA2vF,KAAA,2CACAC,cAAA,UACAlyF,OACeqxC,MAAA,2CACf/uC,MAAA,WACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,2DACf6M,QAAA,2BACUtM,MAAA,6CACV/uC,MAAA,IACAtC,OACeqxC,MAAA,2CACf/uC,MAAA,IACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,mDACf6M,QAAA,oDACUtM,MAAA,6CACV/uC,MAAA,UACA2vF,KAAA,2CACAC,cAAA,UACAlyF,OACeqxC,MAAA,2CACf/uC,MAAA,WACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,wCACf6M,QAAA,2BACUtM,MAAA,6CACV/uC,MAAA,IACAtC,OACeqxC,MAAA,2CACf/uC,MAAA,IACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,gCACf6M,QAAA,oDACUtM,MAAA,6CACV/uC,MAAA,gBACA2vF,KAAA,2CACAC,cAAA,gBACAlyF,OACeqxC,MAAA,2CACf/uC,MAAA,WACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,wCACf6M,QAAA,kCACUtM,MAAA,6CACV/uC,MAAA,YACAtC,OACeqxC,MAAA,2CACf/uC,MAAA,YACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,+BACf6M,QAAA,oCACUtM,MAAA,6CACV/uC,MAAA,YACAtC,OACeqxC,MAAA,2CACf/uC,MAAA,YACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,+BACf6M,QAAA,oCACUtM,MAAA,6CACV/uC,MAAA,YACAtC,OACeqxC,MAAA,2CACf/uC,MAAA,YACAuwC,KAAA,QACernC,QAAA,yBACAA,QAAA,kBACAslC,aAAA,+BACf6M,QAAA,oCACUtM,MAAA,6CACV/uC,MAAA,YACAtC,OACeqxC,MAAA,2CACf/u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","file":"static/js/chunk-7fe2.458f9da5.js","sourcesContent":["module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (acequire, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof acequirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _acequire = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && acequire.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar acequire = function(module, callback) {\n var packagedModule = _acequire(\"\", module, callback);\n if (packagedModule == undefined && acequire.original)\n return acequire.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin acequires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative acequires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _acequire(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.acequire || !root.acequire.packaged) {\n acequire.original = root.acequire;\n root.acequire = acequire;\n root.acequire.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/regexp\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\n var real = {\n exec: RegExp.prototype.exec,\n test: RegExp.prototype.test,\n match: String.prototype.match,\n replace: String.prototype.replace,\n split: String.prototype.split\n },\n compliantExecNpcg = real.exec.call(/()??/, \"\")[1] === undefined, // check `exec` handling of nonparticipating capturing groups\n compliantLastIndexIncrement = function () {\n var x = /^/g;\n real.test.call(x, \"\");\n return !x.lastIndex;\n }();\n\n if (compliantLastIndexIncrement && compliantExecNpcg)\n return;\n RegExp.prototype.exec = function (str) {\n var match = real.exec.apply(this, arguments),\n name, r2;\n if ( typeof(str) == 'string' && match) {\n if (!compliantExecNpcg && match.length > 1 && indexOf(match, \"\") > -1) {\n r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), \"g\", \"\"));\n real.replace.call(str.slice(match.index), r2, function () {\n for (var i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined)\n match[i] = undefined;\n }\n });\n }\n if (this._xregexp && this._xregexp.captureNames) {\n for (var i = 1; i < match.length; i++) {\n name = this._xregexp.captureNames[i - 1];\n if (name)\n match[name] = match[i];\n }\n }\n if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))\n this.lastIndex--;\n }\n return match;\n };\n if (!compliantLastIndexIncrement) {\n RegExp.prototype.test = function (str) {\n var match = real.exec.call(this, str);\n if (match && this.global && !match[0].length && (this.lastIndex > match.index))\n this.lastIndex--;\n return !!match;\n };\n }\n\n function getNativeFlags (regex) {\n return (regex.global ? \"g\" : \"\") +\n (regex.ignoreCase ? \"i\" : \"\") +\n (regex.multiline ? \"m\" : \"\") +\n (regex.extended ? \"x\" : \"\") + // Proposed for ES4; included in AS3\n (regex.sticky ? \"y\" : \"\");\n }\n\n function indexOf (array, item, from) {\n if (Array.prototype.indexOf) // Use the native array method if available\n return array.indexOf(item, from);\n for (var i = from || 0; i < array.length; i++) {\n if (array[i] === item)\n return i;\n }\n return -1;\n }\n\n});\n\nace.define(\"ace/lib/es5-shim\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\nfunction Empty() {}\n\nif (!Function.prototype.bind) {\n Function.prototype.bind = function bind(that) { // .length is 1\n var target = this;\n if (typeof target != \"function\") {\n throw new TypeError(\"Function.prototype.bind called on incompatible \" + target);\n }\n var args = slice.call(arguments, 1); // for normal call\n var bound = function () {\n\n if (this instanceof bound) {\n\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n\n }\n\n };\n if(target.prototype) {\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n return bound;\n };\n}\nvar call = Function.prototype.call;\nvar prototypeOfArray = Array.prototype;\nvar prototypeOfObject = Object.prototype;\nvar slice = prototypeOfArray.slice;\nvar _toString = call.bind(prototypeOfObject.toString);\nvar owns = call.bind(prototypeOfObject.hasOwnProperty);\nvar defineGetter;\nvar defineSetter;\nvar lookupGetter;\nvar lookupSetter;\nvar supportsAccessors;\nif ((supportsAccessors = owns(prototypeOfObject, \"__defineGetter__\"))) {\n defineGetter = call.bind(prototypeOfObject.__defineGetter__);\n defineSetter = call.bind(prototypeOfObject.__defineSetter__);\n lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);\n lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);\n}\nif ([1,2].splice(0).length != 2) {\n if(function() { // test IE < 9 to splice bug - see issue #138\n function makeArray(l) {\n var a = new Array(l+2);\n a[0] = a[1] = 0;\n return a;\n }\n var array = [], lengthBefore;\n \n array.splice.apply(array, makeArray(20));\n array.splice.apply(array, makeArray(26));\n\n lengthBefore = array.length; //46\n array.splice(5, 0, \"XXX\"); // add one element\n\n lengthBefore + 1 == array.length\n\n if (lengthBefore + 1 == array.length) {\n return true;// has right splice implementation without bugs\n }\n }()) {//IE 6/7\n var array_splice = Array.prototype.splice;\n Array.prototype.splice = function(start, deleteCount) {\n if (!arguments.length) {\n return [];\n } else {\n return array_splice.apply(this, [\n start === void 0 ? 0 : start,\n deleteCount === void 0 ? (this.length - start) : deleteCount\n ].concat(slice.call(arguments, 2)))\n }\n };\n } else {//IE8\n Array.prototype.splice = function(pos, removeCount){\n var length = this.length;\n if (pos > 0) {\n if (pos > length)\n pos = length;\n } else if (pos == void 0) {\n pos = 0;\n } else if (pos < 0) {\n pos = Math.max(length + pos, 0);\n }\n\n if (!(pos+removeCount < length))\n removeCount = length - pos;\n\n var removed = this.slice(pos, pos+removeCount);\n var insert = slice.call(arguments, 2);\n var add = insert.length; \n if (pos === length) {\n if (add) {\n this.push.apply(this, insert);\n }\n } else {\n var remove = Math.min(removeCount, length - pos);\n var tailOldPos = pos + remove;\n var tailNewPos = tailOldPos + add - remove;\n var tailCount = length - tailOldPos;\n var lengthAfterRemove = length - remove;\n\n if (tailNewPos < tailOldPos) { // case A\n for (var i = 0; i < tailCount; ++i) {\n this[tailNewPos+i] = this[tailOldPos+i];\n }\n } else if (tailNewPos > tailOldPos) { // case B\n for (i = tailCount; i--; ) {\n this[tailNewPos+i] = this[tailOldPos+i];\n }\n } // else, add == remove (nothing to do)\n\n if (add && pos === lengthAfterRemove) {\n this.length = lengthAfterRemove; // truncate array\n this.push.apply(this, insert);\n } else {\n this.length = lengthAfterRemove + add; // reserves space\n for (i = 0; i < add; ++i) {\n this[pos+i] = insert[i];\n }\n }\n }\n return removed;\n };\n }\n}\nif (!Array.isArray) {\n Array.isArray = function isArray(obj) {\n return _toString(obj) == \"[object Array]\";\n };\n}\nvar boxedString = Object(\"a\"),\n splitString = boxedString[0] != \"a\" || !(0 in boxedString);\n\nif (!Array.prototype.forEach) {\n Array.prototype.forEach = function forEach(fun /*, thisp*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n thisp = arguments[1],\n i = -1,\n length = self.length >>> 0;\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(); // TODO message\n }\n\n while (++i < length) {\n if (i in self) {\n fun.call(thisp, self[i], i, object);\n }\n }\n };\n}\nif (!Array.prototype.map) {\n Array.prototype.map = function map(fun /*, thisp*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n result = Array(length),\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self)\n result[i] = fun.call(thisp, self[i], i, object);\n }\n return result;\n };\n}\nif (!Array.prototype.filter) {\n Array.prototype.filter = function filter(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n result = [],\n value,\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self) {\n value = self[i];\n if (fun.call(thisp, value, i, object)) {\n result.push(value);\n }\n }\n }\n return result;\n };\n}\nif (!Array.prototype.every) {\n Array.prototype.every = function every(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self && !fun.call(thisp, self[i], i, object)) {\n return false;\n }\n }\n return true;\n };\n}\nif (!Array.prototype.some) {\n Array.prototype.some = function some(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0,\n thisp = arguments[1];\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self && fun.call(thisp, self[i], i, object)) {\n return true;\n }\n }\n return false;\n };\n}\nif (!Array.prototype.reduce) {\n Array.prototype.reduce = function reduce(fun /*, initial*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0;\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n if (!length && arguments.length == 1) {\n throw new TypeError(\"reduce of empty array with no initial value\");\n }\n\n var i = 0;\n var result;\n if (arguments.length >= 2) {\n result = arguments[1];\n } else {\n do {\n if (i in self) {\n result = self[i++];\n break;\n }\n if (++i >= length) {\n throw new TypeError(\"reduce of empty array with no initial value\");\n }\n } while (true);\n }\n\n for (; i < length; i++) {\n if (i in self) {\n result = fun.call(void 0, result, self[i], i, object);\n }\n }\n\n return result;\n };\n}\nif (!Array.prototype.reduceRight) {\n Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n object,\n length = self.length >>> 0;\n if (_toString(fun) != \"[object Function]\") {\n throw new TypeError(fun + \" is not a function\");\n }\n if (!length && arguments.length == 1) {\n throw new TypeError(\"reduceRight of empty array with no initial value\");\n }\n\n var result, i = length - 1;\n if (arguments.length >= 2) {\n result = arguments[1];\n } else {\n do {\n if (i in self) {\n result = self[i--];\n break;\n }\n if (--i < 0) {\n throw new TypeError(\"reduceRight of empty array with no initial value\");\n }\n } while (true);\n }\n\n do {\n if (i in this) {\n result = fun.call(void 0, result, self[i], i, object);\n }\n } while (i--);\n\n return result;\n };\n}\nif (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {\n Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {\n var self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n toObject(this),\n length = self.length >>> 0;\n\n if (!length) {\n return -1;\n }\n\n var i = 0;\n if (arguments.length > 1) {\n i = toInteger(arguments[1]);\n }\n i = i >= 0 ? i : Math.max(0, length + i);\n for (; i < length; i++) {\n if (i in self && self[i] === sought) {\n return i;\n }\n }\n return -1;\n };\n}\nif (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {\n Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {\n var self = splitString && _toString(this) == \"[object String]\" ?\n this.split(\"\") :\n toObject(this),\n length = self.length >>> 0;\n\n if (!length) {\n return -1;\n }\n var i = length - 1;\n if (arguments.length > 1) {\n i = Math.min(i, toInteger(arguments[1]));\n }\n i = i >= 0 ? i : length - Math.abs(i);\n for (; i >= 0; i--) {\n if (i in self && sought === self[i]) {\n return i;\n }\n }\n return -1;\n };\n}\nif (!Object.getPrototypeOf) {\n Object.getPrototypeOf = function getPrototypeOf(object) {\n return object.__proto__ || (\n object.constructor ?\n object.constructor.prototype :\n prototypeOfObject\n );\n };\n}\nif (!Object.getOwnPropertyDescriptor) {\n var ERR_NON_OBJECT = \"Object.getOwnPropertyDescriptor called on a \" +\n \"non-object: \";\n Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {\n if ((typeof object != \"object\" && typeof object != \"function\") || object === null)\n throw new TypeError(ERR_NON_OBJECT + object);\n if (!owns(object, property))\n return;\n\n var descriptor, getter, setter;\n descriptor = { enumerable: true, configurable: true };\n if (supportsAccessors) {\n var prototype = object.__proto__;\n object.__proto__ = prototypeOfObject;\n\n var getter = lookupGetter(object, property);\n var setter = lookupSetter(object, property);\n object.__proto__ = prototype;\n\n if (getter || setter) {\n if (getter) descriptor.get = getter;\n if (setter) descriptor.set = setter;\n return descriptor;\n }\n }\n descriptor.value = object[property];\n return descriptor;\n };\n}\nif (!Object.getOwnPropertyNames) {\n Object.getOwnPropertyNames = function getOwnPropertyNames(object) {\n return Object.keys(object);\n };\n}\nif (!Object.create) {\n var createEmpty;\n if (Object.prototype.__proto__ === null) {\n createEmpty = function () {\n return { \"__proto__\": null };\n };\n } else {\n createEmpty = function () {\n var empty = {};\n for (var i in empty)\n empty[i] = null;\n empty.constructor =\n empty.hasOwnProperty =\n empty.propertyIsEnumerable =\n empty.isPrototypeOf =\n empty.toLocaleString =\n empty.toString =\n empty.valueOf =\n empty.__proto__ = null;\n return empty;\n }\n }\n\n Object.create = function create(prototype, properties) {\n var object;\n if (prototype === null) {\n object = createEmpty();\n } else {\n if (typeof prototype != \"object\")\n throw new TypeError(\"typeof prototype[\"+(typeof prototype)+\"] != 'object'\");\n var Type = function () {};\n Type.prototype = prototype;\n object = new Type();\n object.__proto__ = prototype;\n }\n if (properties !== void 0)\n Object.defineProperties(object, properties);\n return object;\n };\n}\n\nfunction doesDefinePropertyWork(object) {\n try {\n Object.defineProperty(object, \"sentinel\", {});\n return \"sentinel\" in object;\n } catch (exception) {\n }\n}\nif (Object.defineProperty) {\n var definePropertyWorksOnObject = doesDefinePropertyWork({});\n var definePropertyWorksOnDom = typeof document == \"undefined\" ||\n doesDefinePropertyWork(document.createElement(\"div\"));\n if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {\n var definePropertyFallback = Object.defineProperty;\n }\n}\n\nif (!Object.defineProperty || definePropertyFallback) {\n var ERR_NON_OBJECT_DESCRIPTOR = \"Property description must be an object: \";\n var ERR_NON_OBJECT_TARGET = \"Object.defineProperty called on non-object: \"\n var ERR_ACCESSORS_NOT_SUPPORTED = \"getters & setters can not be defined \" +\n \"on this javascript engine\";\n\n Object.defineProperty = function defineProperty(object, property, descriptor) {\n if ((typeof object != \"object\" && typeof object != \"function\") || object === null)\n throw new TypeError(ERR_NON_OBJECT_TARGET + object);\n if ((typeof descriptor != \"object\" && typeof descriptor != \"function\") || descriptor === null)\n throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);\n if (definePropertyFallback) {\n try {\n return definePropertyFallback.call(Object, object, property, descriptor);\n } catch (exception) {\n }\n }\n if (owns(descriptor, \"value\")) {\n\n if (supportsAccessors && (lookupGetter(object, property) ||\n lookupSetter(object, property)))\n {\n var prototype = object.__proto__;\n object.__proto__ = prototypeOfObject;\n delete object[property];\n object[property] = descriptor.value;\n object.__proto__ = prototype;\n } else {\n object[property] = descriptor.value;\n }\n } else {\n if (!supportsAccessors)\n throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);\n if (owns(descriptor, \"get\"))\n defineGetter(object, property, descriptor.get);\n if (owns(descriptor, \"set\"))\n defineSetter(object, property, descriptor.set);\n }\n\n return object;\n };\n}\nif (!Object.defineProperties) {\n Object.defineProperties = function defineProperties(object, properties) {\n for (var property in properties) {\n if (owns(properties, property))\n Object.defineProperty(object, property, properties[property]);\n }\n return object;\n };\n}\nif (!Object.seal) {\n Object.seal = function seal(object) {\n return object;\n };\n}\nif (!Object.freeze) {\n Object.freeze = function freeze(object) {\n return object;\n };\n}\ntry {\n Object.freeze(function () {});\n} catch (exception) {\n Object.freeze = (function freeze(freezeObject) {\n return function freeze(object) {\n if (typeof object == \"function\") {\n return object;\n } else {\n return freezeObject(object);\n }\n };\n })(Object.freeze);\n}\nif (!Object.preventExtensions) {\n Object.preventExtensions = function preventExtensions(object) {\n return object;\n };\n}\nif (!Object.isSealed) {\n Object.isSealed = function isSealed(object) {\n return false;\n };\n}\nif (!Object.isFrozen) {\n Object.isFrozen = function isFrozen(object) {\n return false;\n };\n}\nif (!Object.isExtensible) {\n Object.isExtensible = function isExtensible(object) {\n if (Object(object) === object) {\n throw new TypeError(); // TODO message\n }\n var name = '';\n while (owns(object, name)) {\n name += '?';\n }\n object[name] = true;\n var returnValue = owns(object, name);\n delete object[name];\n return returnValue;\n };\n}\nif (!Object.keys) {\n var hasDontEnumBug = true,\n dontEnums = [\n \"toString\",\n \"toLocaleString\",\n \"valueOf\",\n \"hasOwnProperty\",\n \"isPrototypeOf\",\n \"propertyIsEnumerable\",\n \"constructor\"\n ],\n dontEnumsLength = dontEnums.length;\n\n for (var key in {\"toString\": null}) {\n hasDontEnumBug = false;\n }\n\n Object.keys = function keys(object) {\n\n if (\n (typeof object != \"object\" && typeof object != \"function\") ||\n object === null\n ) {\n throw new TypeError(\"Object.keys called on a non-object\");\n }\n\n var keys = [];\n for (var name in object) {\n if (owns(object, name)) {\n keys.push(name);\n }\n }\n\n if (hasDontEnumBug) {\n for (var i = 0, ii = dontEnumsLength; i < ii; i++) {\n var dontEnum = dontEnums[i];\n if (owns(object, dontEnum)) {\n keys.push(dontEnum);\n }\n }\n }\n return keys;\n };\n\n}\nif (!Date.now) {\n Date.now = function now() {\n return new Date().getTime();\n };\n}\nvar ws = \"\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\" +\n \"\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\" +\n \"\\u2029\\uFEFF\";\nif (!String.prototype.trim || ws.trim()) {\n ws = \"[\" + ws + \"]\";\n var trimBeginRegexp = new RegExp(\"^\" + ws + ws + \"*\"),\n trimEndRegexp = new RegExp(ws + ws + \"*$\");\n String.prototype.trim = function trim() {\n return String(this).replace(trimBeginRegexp, \"\").replace(trimEndRegexp, \"\");\n };\n}\n\nfunction toInteger(n) {\n n = +n;\n if (n !== n) { // isNaN\n n = 0;\n } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n return n;\n}\n\nfunction isPrimitive(input) {\n var type = typeof input;\n return (\n input === null ||\n type === \"undefined\" ||\n type === \"boolean\" ||\n type === \"number\" ||\n type === \"string\"\n );\n}\n\nfunction toPrimitive(input) {\n var val, valueOf, toString;\n if (isPrimitive(input)) {\n return input;\n }\n valueOf = input.valueOf;\n if (typeof valueOf === \"function\") {\n val = valueOf.call(input);\n if (isPrimitive(val)) {\n return val;\n }\n }\n toString = input.toString;\n if (typeof toString === \"function\") {\n val = toString.call(input);\n if (isPrimitive(val)) {\n return val;\n }\n }\n throw new TypeError();\n}\nvar toObject = function (o) {\n if (o == null) { // this matches both null and undefined\n throw new TypeError(\"can't convert \"+o+\" to object\");\n }\n return Object(o);\n};\n\n});\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\",\"ace/lib/regexp\",\"ace/lib/es5-shim\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./regexp\");\nacequire(\"./es5-shim\");\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\n\nexports.getDocumentHead = function(doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\n\nexports.createElement = function(tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\n\nexports.hasCssClass = function(el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function(el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\n\nexports.toggleCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function(node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n } else {\n exports.removeCssClass(node, className);\n }\n};\n\nexports.hasCssString = function(id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n\n if (doc.createStyleSheet && (sheets = doc.styleSheets)) {\n while (index < sheets.length)\n if (sheets[index++].owningElement.id === id) return true;\n } else if ((sheets = doc.getElementsByTagName(\"style\"))) {\n while (index < sheets.length)\n if (sheets[index++].id === id) return true;\n }\n\n return false;\n};\n\nexports.importCssString = function importCssString(cssText, id, doc) {\n doc = doc || document;\n if (id && exports.hasCssString(id, doc))\n return null;\n \n var style;\n \n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n \n if (doc.createStyleSheet) {\n style = doc.createStyleSheet();\n style.cssText = cssText;\n if (id)\n style.owningElement.id = id;\n } else {\n style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n\n exports.getDocumentHead(doc).appendChild(style);\n }\n};\n\nexports.importCssStylsheet = function(uri, doc) {\n if (doc.createStyleSheet) {\n doc.createStyleSheet(uri);\n } else {\n var link = exports.createElement('link');\n link.rel = 'stylesheet';\n link.href = uri;\n\n exports.getDocumentHead(doc).appendChild(link);\n }\n};\n\nexports.getInnerWidth = function(element) {\n return (\n parseInt(exports.computedStyle(element, \"paddingLeft\"), 10) +\n parseInt(exports.computedStyle(element, \"paddingRight\"), 10) + \n element.clientWidth\n );\n};\n\nexports.getInnerHeight = function(element) {\n return (\n parseInt(exports.computedStyle(element, \"paddingTop\"), 10) +\n parseInt(exports.computedStyle(element, \"paddingBottom\"), 10) +\n element.clientHeight\n );\n};\n\nexports.scrollbarWidth = function(document) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n\n outer.appendChild(inner);\n\n var body = document.documentElement;\n body.appendChild(outer);\n\n var noScrollbar = inner.offsetWidth;\n\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n\n if (noScrollbar == withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n\n body.removeChild(outer);\n\n return noScrollbar-withScrollbar;\n};\n\nif (typeof document == \"undefined\") {\n exports.importCssString = function() {};\n return;\n}\n\nif (window.pageYOffset !== undefined) {\n exports.getPageScrollTop = function() {\n return window.pageYOffset;\n };\n\n exports.getPageScrollLeft = function() {\n return window.pageXOffset;\n };\n}\nelse {\n exports.getPageScrollTop = function() {\n return document.body.scrollTop;\n };\n\n exports.getPageScrollLeft = function() {\n return document.body.scrollLeft;\n };\n}\n\nif (window.getComputedStyle)\n exports.computedStyle = function(element, style) {\n if (style)\n return (window.getComputedStyle(element, \"\") || {})[style] || \"\";\n return window.getComputedStyle(element, \"\") || {};\n };\nelse\n exports.computedStyle = function(element, style) {\n if (style)\n return element.currentStyle[style];\n return element.currentStyle;\n };\nexports.setInnerHtml = function(el, innerHtml) {\n var element = el.cloneNode(false);//document.createElement(\"div\");\n element.innerHTML = innerHtml;\n el.parentNode.replaceChild(element, el);\n return element;\n};\n\nif (\"textContent\" in document.documentElement) {\n exports.setInnerText = function(el, innerText) {\n el.textContent = innerText;\n };\n\n exports.getInnerText = function(el) {\n return el.textContent;\n };\n}\nelse {\n exports.setInnerText = function(el, innerText) {\n el.innerText = innerText;\n };\n\n exports.getInnerText = function(el) {\n return el.innerText;\n };\n}\n\nexports.getParentWindow = function(document) {\n return document.defaultView || document.parentWindow;\n};\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nexports.inherits = function(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\nexports.mixin = function(obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\n\nexports.implement = function(proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./fixoldbrowsers\");\n\nvar oop = acequire(\"./oop\");\nvar Keys = (function() {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta'\n },\n\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\" : 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8\n },\n\n FUNCTION_KEYS : {\n 8 : \"Backspace\",\n 9 : \"Tab\",\n 13 : \"Return\",\n 19 : \"Pause\",\n 27 : \"Esc\",\n 32 : \"Space\",\n 33 : \"PageUp\",\n 34 : \"PageDown\",\n 35 : \"End\",\n 36 : \"Home\",\n 37 : \"Left\",\n 38 : \"Up\",\n 39 : \"Right\",\n 40 : \"Down\",\n 44 : \"Print\",\n 45 : \"Insert\",\n 46 : \"Delete\",\n 96 : \"Numpad0\",\n 97 : \"Numpad1\",\n 98 : \"Numpad2\",\n 99 : \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\',221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n ret[173] = '-';\n \n (function() {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) { \n ret.KEY_MODS[i] = mods.filter(function(x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n\n return ret;\n})();\noop.mixin(exports, Keys);\n\nexports.keyCodeToString = function(keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function() {\n if (exports.isMac) {\n return exports.OS.MAC;\n } else if (exports.isLinux) {\n return exports.OS.LINUX;\n } else {\n return exports.OS.WINDOWS;\n }\n};\nif (typeof navigator != \"object\")\n return;\n\nvar os = (navigator.platform.match(/mac|win|linux/i) || [\"other\"])[0].toLowerCase();\nvar ua = navigator.userAgent;\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE = \n (navigator.appName == \"Microsoft Internet Explorer\" || navigator.appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]); // for ie\n \nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = (window.Controllers || window.controllers) && window.navigator.product === \"Gecko\";\nexports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv:(\\d+)/)||[])[1], 10) < 4;\nexports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\n\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\n\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\n\nexports.isIPad = ua.indexOf(\"iPad\") >= 0;\n\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\n\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\n\nif (exports.isIOS) exports.isMac = true;\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar keys = acequire(\"./keys\");\nvar useragent = acequire(\"./useragent\");\n\nvar pressedKeys = null;\nvar ts = 0;\n\nexports.addListener = function(elem, type, callback) {\n if (elem.addEventListener) {\n return elem.addEventListener(type, callback, false);\n }\n if (elem.attachEvent) {\n var wrapper = function() {\n callback.call(elem, window.event);\n };\n callback._wrapper = wrapper;\n elem.attachEvent(\"on\" + type, wrapper);\n }\n};\n\nexports.removeListener = function(elem, type, callback) {\n if (elem.removeEventListener) {\n return elem.removeEventListener(type, callback, false);\n }\n if (elem.detachEvent) {\n elem.detachEvent(\"on\" + type, callback._wrapper || callback);\n }\n};\nexports.stopEvent = function(e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\n\nexports.stopPropagation = function(e) {\n if (e.stopPropagation)\n e.stopPropagation();\n else\n e.cancelBubble = true;\n};\n\nexports.preventDefault = function(e) {\n if (e.preventDefault)\n e.preventDefault();\n else\n e.returnValue = false;\n};\nexports.getButton = function(e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n if (e.preventDefault) {\n return e.button;\n }\n else {\n return {1:0, 2:2, 4:1}[e.button];\n }\n};\n\nexports.capture = function(el, eventHandler, releaseCaptureHandler) {\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n\n exports.removeListener(document, \"mousemove\", eventHandler, true);\n exports.removeListener(document, \"mouseup\", onMouseUp, true);\n exports.removeListener(document, \"dragstart\", onMouseUp, true);\n }\n\n exports.addListener(document, \"mousemove\", eventHandler, true);\n exports.addListener(document, \"mouseup\", onMouseUp, true);\n exports.addListener(document, \"dragstart\", onMouseUp, true);\n \n return onMouseUp;\n};\n\nexports.addTouchMoveListener = function (el, callback) {\n var startx, starty;\n exports.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n var touchObj = touches[0];\n startx = touchObj.clientX;\n starty = touchObj.clientY;\n });\n exports.addListener(el, \"touchmove\", function (e) {\n var touches = e.touches;\n if (touches.length > 1) return;\n\n var touchObj = touches[0];\n\n e.wheelX = startx - touchObj.clientX;\n e.wheelY = starty - touchObj.clientY;\n\n startx = touchObj.clientX;\n starty = touchObj.clientY;\n\n callback(e);\n });\n};\n\nexports.addMouseWheelListener = function(el, callback) {\n if (\"onmousewheel\" in el) {\n exports.addListener(el, \"mousewheel\", function(e) {\n var factor = 8;\n if (e.wheelDeltaX !== undefined) {\n e.wheelX = -e.wheelDeltaX / factor;\n e.wheelY = -e.wheelDeltaY / factor;\n } else {\n e.wheelX = 0;\n e.wheelY = -e.wheelDelta / factor;\n }\n callback(e);\n });\n } else if (\"onwheel\" in el) {\n exports.addListener(el, \"wheel\", function(e) {\n var factor = 0.35;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = e.deltaX * factor || 0;\n e.wheelY = e.deltaY * factor || 0;\n break;\n case e.DOM_DELTA_LINE:\n case e.DOM_DELTA_PAGE:\n e.wheelX = (e.deltaX || 0) * 5;\n e.wheelY = (e.deltaY || 0) * 5;\n break;\n }\n \n callback(e);\n });\n } else {\n exports.addListener(el, \"DOMMouseScroll\", function(e) {\n if (e.axis && e.axis == e.HORIZONTAL_AXIS) {\n e.wheelX = (e.detail || 0) * 5;\n e.wheelY = 0;\n } else {\n e.wheelX = 0;\n e.wheelY = (e.detail || 0) * 5;\n }\n callback(e);\n });\n }\n};\n\nexports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName) {\n var clicks = 0;\n var startX, startY, timer; \n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n } else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n } else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);\n\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n \n e._clicks = clicks;\n\n eventHandler[callbackName](\"mousedown\", e);\n\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n function onDblclick(e) {\n clicks = 2;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);\n eventHandler[callbackName](\"mousedown\", e);\n eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function(el) {\n exports.addListener(el, \"mousedown\", onMousedown);\n if (useragent.isOldIE)\n exports.addListener(el, \"dblclick\", onDblclick);\n });\n};\n\nvar getModifierHash = useragent.isMac && useragent.isOpera && !(\"KeyboardEvent\" in window)\n ? function(e) {\n return 0 | (e.metaKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.ctrlKey ? 8 : 0);\n }\n : function(e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n };\n\nexports.getModifierString = function(e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\n\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n } else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n \n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n if (hashId & 8 && (keyCode >= 91 && keyCode <= 93)) {\n keyCode = -1;\n }\n \n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n \n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n \n return callback(e, hashId, keyCode);\n}\n\n\nexports.addCommandKeyListener = function(el, callback) {\n var addListener = exports.addListener;\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function(e) {\n lastKeyDownKeyCode = e.keyCode;\n });\n addListener(el, \"keypress\", function(e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n });\n } else {\n var lastDefaultPrevented = null;\n\n addListener(el, \"keydown\", function(e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n });\n\n addListener(el, \"keypress\", function(e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n });\n\n addListener(el, \"keyup\", function(e) {\n pressedKeys[e.keyCode] = null;\n });\n\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\n\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function(callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + postMessageId;\n exports.addListener(win, \"message\", function listener(e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n exports.removeListener(win, \"message\", listener);\n callback();\n }\n });\n win.postMessage(messageName, \"*\");\n };\n}\n\n\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\n\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function(callback) {\n setTimeout(callback, 17);\n };\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nexports.last = function(a) {\n return a[a.length - 1];\n};\n\nexports.stringReverse = function(string) {\n return string.split(\"\").reverse().join(\"\");\n};\n\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n\n if (count >>= 1)\n string += string;\n }\n return result;\n};\n\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\n\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\n\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\n\nexports.copyObject = function(obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\n\nexports.copyArray = function(array){\n var copy = [];\n for (var i=0, l=array.length; i PLACEHOLDER.length)\n data = data.substr(9);\n else if (data.substr(0, 4) == PLACEHOLDER.substr(0, 4))\n data = data.substr(4, data.length - PLACEHOLDER.length + 1);\n else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n if (data == PLACEHOLDER.charAt(0)) {\n } else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n\n if (data)\n host.onTextInput(data);\n }\n if (copied) {\n copied = false;\n }\n if (afterContextMenu)\n afterContextMenu = false;\n };\n var onInput = function(e) {\n if (inComposition)\n return;\n var data = text.value;\n sendText(data);\n resetValue();\n };\n\n var handleClipboardData = function(e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n } else {\n return clipboardData.getData(mime);\n }\n } catch(e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n\n var doCopy = function(e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n\n if (handleClipboardData(e, data)) {\n if (useragent.isIOS) {\n cut = isCut;\n text.value = \"\\n aa\" + data + \"a a\\n\";\n text.setSelectionRange(4, 4 + data.length);\n copied = {\n value: data\n };\n }\n isCut ? host.onCut() : host.onCopy();\n if (!useragent.isIOS) event.preventDefault(e);\n } else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function(){\n copied = false;\n resetValue();\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n\n var onCut = function(e) {\n doCopy(e, true);\n };\n\n var onCopy = function(e) {\n doCopy(e, false);\n };\n\n var onPaste = function(e) {\n var data = handleClipboardData(e);\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n\n event.addCommandKeyListener(text, host.onCommandKey.bind(host));\n\n event.addListener(text, \"select\", onSelect);\n\n event.addListener(text, \"input\", onInput);\n\n event.addListener(text, \"cut\", onCut);\n event.addListener(text, \"copy\", onCopy);\n event.addListener(text, \"paste\", onPaste);\n var onCompositionStart = function(e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly)\n return;\n inComposition = {};\n inComposition.canUndo = host.session.$undoManager;\n host.onCompositionStart();\n setTimeout(onCompositionUpdate, 0);\n host.on(\"mousedown\", onCompositionEnd);\n if (inComposition.canUndo && !host.selection.isEmpty()) {\n host.insert(\"\");\n host.session.markUndoGroup();\n host.selection.clearSelection();\n }\n host.session.markUndoGroup();\n };\n\n var onCompositionUpdate = function() {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n var val = text.value.replace(/\\x01/g, \"\");\n if (inComposition.lastValue === val) return;\n\n host.onCompositionUpdate(val);\n if (inComposition.lastValue)\n host.undo();\n if (inComposition.canUndo)\n inComposition.lastValue = val;\n if (inComposition.lastValue) {\n var r = host.selection.getRange();\n host.insert(inComposition.lastValue);\n host.session.markUndoGroup();\n inComposition.range = host.selection.getRange();\n host.selection.setRange(r);\n host.selection.clearSelection();\n }\n };\n\n var onCompositionEnd = function(e) {\n if (!host.onCompositionEnd || host.$readOnly) return;\n var c = inComposition;\n inComposition = false;\n var timer = setTimeout(function() {\n timer = null;\n var str = text.value.replace(/\\x01/g, \"\");\n if (inComposition)\n return;\n else if (str == c.lastValue)\n resetValue();\n else if (!c.lastValue && str) {\n resetValue();\n sendText(str);\n }\n });\n inputHandler = function compositionInputHandler(str) {\n if (timer)\n clearTimeout(timer);\n str = str.replace(/\\x01/g, \"\");\n if (str == c.lastValue)\n return \"\";\n if (c.lastValue && timer)\n host.undo();\n return str;\n };\n host.onCompositionEnd();\n host.removeListener(\"mousedown\", onCompositionEnd);\n if (e.type == \"compositionend\" && c.range) {\n host.selection.setRange(c.range);\n }\n var needsOnInput =\n (!!useragent.isChrome && useragent.isChrome >= 53) ||\n (!!useragent.isWebKit && useragent.isWebKit >= 603);\n\n if (needsOnInput) {\n onInput();\n }\n };\n\n\n\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50);\n\n event.addListener(text, \"compositionstart\", onCompositionStart);\n if (useragent.isGecko) {\n event.addListener(text, \"text\", function(){syncComposition.schedule();});\n } else {\n event.addListener(text, \"keyup\", function(){syncComposition.schedule();});\n event.addListener(text, \"keydown\", function(){syncComposition.schedule();});\n }\n event.addListener(text, \"compositionend\", onCompositionEnd);\n\n this.getElement = function() {\n return text;\n };\n\n this.setReadOnly = function(readOnly) {\n text.readOnly = readOnly;\n };\n\n this.onContextMenu = function(e) {\n afterContextMenu = true;\n resetSelection(host.selection.isEmpty());\n host._emit(\"nativecontextmenu\", {target: host, domEvent: e});\n this.moveToMouse(e, true);\n };\n\n this.moveToMouse = function(e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + \"height:\" + text.style.height + \";\"\n + (useragent.isIE ? \"opacity:0.1;\" : \"\");\n\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight -2;\n var move = function(e) {\n text.style.left = e.clientX - left - 2 + \"px\";\n text.style.top = Math.min(e.clientY - top - 2, maxTop) + \"px\";\n };\n move(e);\n\n if (e.type != \"mousedown\")\n return;\n\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$keepTextAreaAtCursor = null;\n\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n if (host.renderer.$keepTextAreaAtCursor == null) {\n host.renderer.$keepTextAreaAtCursor = true;\n host.renderer.$moveTextAreaToCursor();\n }\n }, 0);\n }\n\n var onContextMenu = function(e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu);\n event.addListener(text, \"mousedown\", function(e) {\n e.preventDefault();\n onContextMenuClose();\n });\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu);\n event.addListener(text, \"contextmenu\", onContextMenu);\n\n if (useragent.isIOS) {\n var typingResetTimeout = null;\n var typing = false;\n\n parentNode.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout) clearTimeout(typingResetTimeout);\n typing = true;\n });\n\n parentNode.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n });\n var detectArrowKeys = function(e) {\n if (document.activeElement !== text) return;\n if (typing) return;\n\n if (cut) {\n return setTimeout(function () {\n cut = false;\n }, 100);\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n text.setSelectionRange(4, 5);\n if (selectionStart == selectionEnd) {\n switch (selectionStart) {\n case 0: host.onCommandKey(null, 0, KEYS.up); break;\n case 1: host.onCommandKey(null, 0, KEYS.home); break;\n case 2: host.onCommandKey(null, MODS.option, KEYS.left); break;\n case 4: host.onCommandKey(null, 0, KEYS.left); break;\n case 5: host.onCommandKey(null, 0, KEYS.right); break;\n case 7: host.onCommandKey(null, MODS.option, KEYS.right); break;\n case 8: host.onCommandKey(null, 0, KEYS.end); break;\n case 9: host.onCommandKey(null, 0, KEYS.down); break;\n }\n } else {\n switch (selectionEnd) {\n case 6: host.onCommandKey(null, MODS.shift, KEYS.right); break;\n case 7: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.right); break;\n case 8: host.onCommandKey(null, MODS.shift, KEYS.end); break;\n case 9: host.onCommandKey(null, MODS.shift, KEYS.down); break;\n }\n switch (selectionStart) {\n case 0: host.onCommandKey(null, MODS.shift, KEYS.up); break;\n case 1: host.onCommandKey(null, MODS.shift, KEYS.home); break;\n case 2: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.left); break;\n case 3: host.onCommandKey(null, MODS.shift, KEYS.left); break;\n }\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function() {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n};\n\nexports.TextInput = TextInput;\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/keyboard/textinput_ios\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\nvar dom = acequire(\"../lib/dom\");\nvar lang = acequire(\"../lib/lang\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\n\nvar TextInputIOS = acequire(\"./textinput_ios\").TextInput;\nvar TextInput = function(parentNode, host) {\n if (useragent.isIOS)\n return TextInputIOS.call(this, parentNode, host);\n\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n\n var PLACEHOLDER = \"\\u2028\\u2028\";\n\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var tempStyle = '';\n var isSelectionEmpty = true;\n try { var isFocused = document.activeElement === text; } catch(e) {}\n \n event.addListener(text, \"blur\", function(e) {\n host.onBlur(e);\n isFocused = false;\n });\n event.addListener(text, \"focus\", function(e) {\n isFocused = true;\n host.onFocus(e);\n resetSelection();\n });\n this.focus = function() {\n if (tempStyle) return text.focus();\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n text.focus();\n setTimeout(function() {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function() {\n text.blur();\n };\n this.isFocused = function() {\n return isFocused;\n };\n var syncSelection = lang.delayedCall(function() {\n isFocused && resetSelection(isSelectionEmpty);\n });\n var syncValue = lang.delayedCall(function() {\n if (!inComposition) {\n text.value = PLACEHOLDER;\n isFocused && resetSelection();\n }\n });\n\n function resetSelection(isEmpty) {\n if (inComposition)\n return;\n inComposition = true;\n \n if (inputHandler) {\n var selectionStart = 0;\n var selectionEnd = isEmpty ? 0 : text.value.length - 1;\n } else {\n var selectionStart = isEmpty ? 2 : 1;\n var selectionEnd = 2;\n }\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n } catch(e){}\n \n inComposition = false;\n }\n\n function resetValue() {\n if (inComposition)\n return;\n text.value = PLACEHOLDER;\n if (useragent.isWebKit)\n syncValue.schedule();\n }\n\n useragent.isWebKit || host.addEventListener('changeSelection', function() {\n if (host.selection.isEmpty() != isSelectionEmpty) {\n isSelectionEmpty = !isSelectionEmpty;\n syncSelection.schedule();\n }\n });\n\n resetValue();\n if (isFocused)\n host.onFocus();\n\n\n var isAllSelected = function(text) {\n return text.selectionStart === 0 && text.selectionEnd === text.value.length;\n };\n\n var onSelect = function(e) {\n if (copied) {\n copied = false;\n } else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n } else if (inputHandler) {\n resetSelection(host.selection.isEmpty());\n }\n };\n\n var inputHandler = null;\n this.setInputHandler = function(cb) {inputHandler = cb;};\n this.getInputHandler = function() {return inputHandler;};\n var afterContextMenu = false;\n \n var sendText = function(data) {\n if (inputHandler) {\n data = inputHandler(data);\n inputHandler = null;\n }\n if (pasted) {\n resetSelection();\n if (data)\n host.onPaste(data);\n pasted = false;\n } else if (data == PLACEHOLDER.charAt(0)) {\n if (afterContextMenu)\n host.execCommand(\"del\", {source: \"ace\"});\n else // some versions of android do not fire keydown when pressing backspace\n host.execCommand(\"backspace\", {source: \"ace\"});\n } else {\n if (data.substring(0, 2) == PLACEHOLDER)\n data = data.substr(2);\n else if (data.charAt(0) == PLACEHOLDER.charAt(0))\n data = data.substr(1);\n else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0))\n data = data.slice(0, -1);\n \n if (data)\n host.onTextInput(data);\n }\n if (afterContextMenu)\n afterContextMenu = false;\n };\n var onInput = function(e) {\n if (inComposition)\n return;\n var data = text.value;\n sendText(data);\n resetValue();\n };\n \n var handleClipboardData = function(e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n } else {\n return clipboardData.getData(mime);\n }\n } catch(e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n\n var doCopy = function(e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n\n if (handleClipboardData(e, data)) {\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n } else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function(){\n copied = false;\n resetValue();\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n \n var onCut = function(e) {\n doCopy(e, true);\n };\n \n var onCopy = function(e) {\n doCopy(e, false);\n };\n \n var onPaste = function(e) {\n var data = handleClipboardData(e);\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n\n event.addCommandKeyListener(text, host.onCommandKey.bind(host));\n\n event.addListener(text, \"select\", onSelect);\n\n event.addListener(text, \"input\", onInput);\n\n event.addListener(text, \"cut\", onCut);\n event.addListener(text, \"copy\", onCopy);\n event.addListener(text, \"paste\", onPaste);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function(e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n });\n }\n var onCompositionStart = function(e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly) \n return;\n inComposition = {};\n inComposition.canUndo = host.session.$undoManager;\n host.onCompositionStart();\n setTimeout(onCompositionUpdate, 0);\n host.on(\"mousedown\", onCompositionEnd);\n if (inComposition.canUndo && !host.selection.isEmpty()) {\n host.insert(\"\");\n host.session.markUndoGroup();\n host.selection.clearSelection();\n }\n host.session.markUndoGroup();\n };\n\n var onCompositionUpdate = function() {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n var val = text.value.replace(/\\u2028/g, \"\");\n if (inComposition.lastValue === val) return;\n \n host.onCompositionUpdate(val);\n if (inComposition.lastValue)\n host.undo();\n if (inComposition.canUndo)\n inComposition.lastValue = val;\n if (inComposition.lastValue) {\n var r = host.selection.getRange();\n host.insert(inComposition.lastValue);\n host.session.markUndoGroup();\n inComposition.range = host.selection.getRange();\n host.selection.setRange(r);\n host.selection.clearSelection();\n }\n };\n\n var onCompositionEnd = function(e) {\n if (!host.onCompositionEnd || host.$readOnly) return;\n var c = inComposition;\n inComposition = false;\n var timer = setTimeout(function() {\n timer = null;\n var str = text.value.replace(/\\u2028/g, \"\");\n if (inComposition)\n return;\n else if (str == c.lastValue)\n resetValue();\n else if (!c.lastValue && str) {\n resetValue();\n sendText(str);\n }\n });\n inputHandler = function compositionInputHandler(str) {\n if (timer)\n clearTimeout(timer);\n str = str.replace(/\\u2028/g, \"\");\n if (str == c.lastValue)\n return \"\";\n if (c.lastValue && timer)\n host.undo();\n return str;\n };\n host.onCompositionEnd();\n host.removeListener(\"mousedown\", onCompositionEnd);\n if (e.type == \"compositionend\" && c.range) {\n host.selection.setRange(c.range);\n }\n var needsOnInput =\n (!!useragent.isChrome && useragent.isChrome >= 53) ||\n (!!useragent.isWebKit && useragent.isWebKit >= 603);\n\n if (needsOnInput) {\n onInput();\n }\n };\n \n \n\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50);\n\n event.addListener(text, \"compositionstart\", onCompositionStart);\n if (useragent.isGecko) {\n event.addListener(text, \"text\", function(){syncComposition.schedule();});\n } else {\n event.addListener(text, \"keyup\", function(){syncComposition.schedule();});\n event.addListener(text, \"keydown\", function(){syncComposition.schedule();});\n }\n event.addListener(text, \"compositionend\", onCompositionEnd);\n\n this.getElement = function() {\n return text;\n };\n\n this.setReadOnly = function(readOnly) {\n text.readOnly = readOnly;\n };\n\n this.onContextMenu = function(e) {\n afterContextMenu = true;\n resetSelection(host.selection.isEmpty());\n host._emit(\"nativecontextmenu\", {target: host, domEvent: e});\n this.moveToMouse(e, true);\n };\n \n this.moveToMouse = function(e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + \"height:\" + text.style.height + \";\"\n + (useragent.isIE ? \"opacity:0.1;\" : \"\");\n\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight -2;\n var move = function(e) {\n text.style.left = e.clientX - left - 2 + \"px\";\n text.style.top = Math.min(e.clientY - top - 2, maxTop) + \"px\";\n }; \n move(e);\n\n if (e.type != \"mousedown\")\n return;\n\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$keepTextAreaAtCursor = null;\n\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n if (host.renderer.$keepTextAreaAtCursor == null) {\n host.renderer.$keepTextAreaAtCursor = true;\n host.renderer.$moveTextAreaToCursor();\n }\n }, 0);\n }\n\n var onContextMenu = function(e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu);\n event.addListener(text, \"mousedown\", function(e) {\n e.preventDefault();\n onContextMenuClose();\n });\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu);\n event.addListener(text, \"contextmenu\", onContextMenu);\n};\n\nexports.TextInput = TextInput;\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\n\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 250; // milliseconds\n\nfunction DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n editor.setDefaultHandler(\"touchmove\", this.onTouchMove.bind(mouseHandler));\n\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n}\n\n(function() {\n\n this.onMouseDown = function(ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n editor.$blockScrolling++;\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n editor.$blockScrolling--;\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n\n this.startSelect = function(pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n editor.$blockScrolling++;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n if (editor.renderer.scroller.setCapture) {\n editor.renderer.scroller.setCapture();\n }\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n editor.$blockScrolling--;\n };\n\n this.select = function() {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n editor.$blockScrolling++;\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n } else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.$blockScrolling--;\n editor.renderer.scrollCursorIntoView();\n };\n\n this.extendSelectionBy = function(unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n editor.$blockScrolling++;\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n } else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n } else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.$blockScrolling--;\n editor.renderer.scrollCursorIntoView();\n };\n\n this.selectEnd =\n this.selectAllEnd =\n this.selectByWordsEnd =\n this.selectByLinesEnd = function() {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n if (this.editor.renderer.scroller.releaseCapture) {\n this.editor.renderer.scroller.releaseCapture();\n }\n };\n\n this.focusWait = function() {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n\n this.onDoubleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n } else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n\n this.onTripleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n } else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n\n this.onQuadClick = function(ev) {\n var editor = this.editor;\n\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n\n this.onMouseWheel = function(ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n \n var editor = this.editor;\n\n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n\n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = ev.wheelX / dt;\n var vy = ev.wheelY / dt;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n\n var direction = Math.abs(vx / vy);\n\n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n\n if (canScroll) {\n prevScroll.allowed = t;\n } else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.1 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.1 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n\n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n\n this.onTouchMove = function(ev) {\n this.editor._emit(\"mousewheel\", ev);\n };\n\n}).call(DefaultHandlers.prototype);\n\nexports.DefaultHandlers = DefaultHandlers;\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n\n if (cmp < 0)\n return {cursor: range.start, anchor: range.end};\n else\n return {cursor: range.end, anchor: range.start};\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nfunction Tooltip (parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n}\n\n(function() {\n this.$init = function() {\n this.$element = dom.createElement(\"div\");\n this.$element.className = \"ace_tooltip\";\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n this.getElement = function() {\n return this.$element || this.$init();\n };\n this.setText = function(text) {\n dom.setInnerText(this.getElement(), text);\n };\n this.setHtml = function(html) {\n this.getElement().innerHTML = html;\n };\n this.setPosition = function(x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n this.setClassName = function(className) {\n dom.addCssClass(this.getElement(), className);\n };\n this.show = function(text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n\n this.hide = function() {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n }\n };\n this.getHeight = function() {\n return this.getElement().offsetHeight;\n };\n this.getWidth = function() {\n return this.getElement().offsetWidth;\n };\n\n this.destroy = function() {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n\n}).call(Tooltip.prototype);\n\nexports.Tooltip = Tooltip;\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event\",\"ace/tooltip\"], function(acequire, exports, module) {\n\"use strict\";\nvar dom = acequire(\"../lib/dom\");\nvar oop = acequire(\"../lib/oop\");\nvar event = acequire(\"../lib/event\");\nvar Tooltip = acequire(\"../tooltip\").Tooltip;\n\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor.container);\n\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function(e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n\n if (gutterRegion == \"foldWidgets\")\n return;\n\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n\n\n var tooltipTimeout, mouseEvent, tooltipAnnotation;\n\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var annotation = gutter.$annotations[row];\n if (!annotation)\n return hideTooltip();\n\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n\n if (tooltipAnnotation == annotation)\n return;\n tooltipAnnotation = annotation.text.join(\"
\");\n\n tooltip.setHtml(tooltipAnnotation);\n tooltip.show();\n editor._signal(\"showGutterTooltip\", tooltip);\n editor.on(\"mousewheel\", hideTooltip);\n\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n } else {\n var gutterElement = mouseEvent.domEvent.target;\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n }\n\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltipAnnotation) {\n tooltip.hide();\n tooltipAnnotation = null;\n editor._signal(\"hideGutterTooltip\", tooltip);\n editor.removeEventListener(\"mousewheel\", hideTooltip);\n }\n }\n\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function(e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n\n if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n\n event.addListener(editor.renderer.$gutter, \"mouseout\", function(e) {\n mouseEvent = null;\n if (!tooltipAnnotation || tooltipTimeout)\n return;\n\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n });\n \n editor.on(\"changeSession\", hideTooltip);\n}\n\nfunction GutterTooltip(parentNode) {\n Tooltip.call(this, parentNode);\n}\n\noop.inherits(GutterTooltip, Tooltip);\n\n(function(){\n this.setPosition = function(x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n\n}).call(GutterTooltip.prototype);\n\n\n\nexports.GutterHandler = GutterHandler;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\nvar MouseEvent = exports.MouseEvent = function(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n \n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n\n this.$pos = null;\n this.$inSelection = null;\n \n this.propagationStopped = false;\n this.defaultPrevented = false;\n};\n\n(function() { \n \n this.stopPropagation = function() {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n \n this.preventDefault = function() {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n \n this.stop = function() {\n this.stopPropagation();\n this.preventDefault();\n };\n this.getDocumentPosition = function() {\n if (this.$pos)\n return this.$pos;\n \n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n this.inSelection = function() {\n if (this.$inSelection !== null)\n return this.$inSelection;\n \n var editor = this.editor;\n \n\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n\n return this.$inSelection;\n };\n this.getButton = function() {\n return event.getButton(this.domEvent);\n };\n this.getShiftKey = function() {\n return this.domEvent.shiftKey;\n };\n \n this.getAccelKey = useragent.isMac\n ? function() { return this.domEvent.metaKey; }\n : function() { return this.domEvent.ctrlKey; };\n \n}).call(MouseEvent.prototype);\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\n\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\n\nfunction DragdropHandler(mouseHandler) {\n\n var editor = mouseHandler.editor;\n\n var blankImage = dom.createElement(\"img\");\n blankImage.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (useragent.isOpera)\n blankImage.style.cssText = \"width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;\";\n\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.addEventListener(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n\n\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n\n this.onDragStart = function(e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function(){\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n if (useragent.isOpera) {\n editor.container.appendChild(blankImage);\n blankImage.scrollTop = 0;\n }\n dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0);\n if (useragent.isOpera) {\n editor.container.removeChild(blankImage);\n }\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n\n isInternal = true;\n this.setState(\"drag\");\n };\n\n this.onDragEnd = function(e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.renderer.$cursorLayer.setBlinking(true);\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n\n this.onDragEnter = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragOver = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragLeave = function(e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n\n this.onDrop = function(e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n } else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n } else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler));\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler));\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler));\n\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.$blockScrolling += 1;\n editor.moveCursorToPosition(cursor);\n editor.$blockScrolling -= 1;\n cursorMovedTime = now;\n cursorPointOnCaretMoved = {x: x, y: y};\n } else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = {row: cursor.row, column: cursor.column};\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n } else {\n autoScrollStartTime = null;\n }\n }\n\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.$blockScrolling += 1;\n editor.selection.fromOrientedRange(range);\n editor.$blockScrolling -= 1;\n if (editor.isFocused() && !isInternal)\n editor.renderer.$cursorLayer.setBlinking(!editor.getReadOnly());\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function() {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function(type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n } catch (e) {}\n var dropEffect = \"none\";\n\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n\n return dropEffect;\n }\n}\n\n(function() {\n\n this.dragWait = function() {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n\n this.dragWaitEnd = function() {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n\n this.dragReadyEnd = function(e) {\n this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly());\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n\n this.startDrag = function(){\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n\n this.onMouseDrag = function(e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n\n this.onMouseDown = function(e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n } else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n\n}).call(DragdropHandler.prototype);\n\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\nvar dom = acequire(\"./dom\");\n\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\n\nexports.loadScript = function(path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n\n s.src = path;\n head.appendChild(s);\n\n s.onload = s.onreadystatechange = function(_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function(url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar EventEmitter = {};\nvar stopPropagation = function() { this.propagationStopped = true; };\nvar preventDefault = function() { this.defaultPrevented = true; };\n\nEventEmitter._emit =\nEventEmitter._dispatchEvent = function(eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n\n if (typeof e != \"object\" || !e)\n e = {};\n\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n\n listeners = listeners.slice();\n for (var i=0; i 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n } else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\n\nexports.setModuleUrl = function(name, subst) {\n return options.$moduleUrls[name] = subst;\n};\n\nexports.$loading = {};\nexports.loadModule = function(moduleName, onLoad) {\n var module, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n\n try {\n module = acequire(moduleName);\n } catch (e) {}\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n\n exports.$loading[moduleName].push(onLoad);\n\n if (exports.$loading[moduleName].length > 1)\n return;\n\n var afterLoad = function() {\n acequire([moduleName], function(module) {\n exports._emit(\"load.module\", {name: moduleName, module: module});\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function(onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n\n if (!exports.get(\"packaged\"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n options.packaged = packaged || acequire.packaged || module.packaged || (global.define && define.packaged);\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i 0){\n\t\t\tif (action == 0x10){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = 1;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t} else {\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tcond = impTab[newState][6];\n\t\tif (cond){\n\t\t\tif(condPos == -1){\n\t\t\t\tcondPos = ix;\n\t\t\t}\n\t\t}else{\n\t\t\tif (condPos > -1){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = newLevel;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tif (charTypes[ix] == B){\n\t\t\tlevels[ix] = 0;\n\t\t}\n\t\thiLevel |= newLevel;\n\t}\n\tif (hasUBAT_S){\n\t\tfor(i = 0; i < len; i++){\n\t\t\tif(charTypes[i] == S){\n\t\t\t\tlevels[i] = dir;\n\t\t\t\tfor(var j = i - 1; j >= 0; j--){\n\t\t\t\t\tif(charTypes[j] == WS){\n\t\t\t\t\t\tlevels[j] = dir;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction _invertLevel(lev, levels, _array) {\n\tif (hiLevel < lev){\n\t\treturn;\n\t}\n\tif (lev == 1 && dir == RTL && !hasUBAT_B){\n\t\t_array.reverse();\n\t\treturn;\n\t}\n\tvar len = _array.length, start = 0, end, lo, hi, tmp;\n\twhile(start < len){\n\t\tif (levels[start] >= lev){\n\t\t\tend = start + 1;\n\t\twhile(end < len && levels[end] >= lev){\n\t\t\tend++;\n\t\t}\n\t\tfor(lo = start, hi = end - 1 ; lo < hi; lo++, hi--){\n\t\t\ttmp = _array[lo];\n\t\t\t_array[lo] = _array[hi];\n\t\t\t_array[hi] = tmp;\n\t\t}\n\t\tstart = end;\n\t}\n\tstart++;\n\t}\n}\n\nfunction _getCharClass(chars, types, classes, ix) {\n\tvar cType = types[ix], wType, nType, len, i;\n\tswitch(cType){\n\t\tcase L:\n\t\tcase R:\n\t\t\tlastArabic = false;\n\t\tcase ON:\n\t\tcase AN:\n\t\t\treturn cType;\n\t\tcase EN:\n\t\t\treturn lastArabic ? AN : EN;\n\t\tcase AL:\n\t\t\tlastArabic = true;\n\t\t\thasUBAT_AL = true;\n\t\t\treturn R;\n\t\tcase WS:\n\t\t\treturn ON;\n\t\tcase CS:\n\t\t\tif (ix < 1 || (ix + 1) >= types.length ||\n\t\t\t\t((wType = classes[ix - 1]) != EN && wType != AN) ||\n\t\t\t\t((nType = types[ix + 1]) != EN && nType != AN)){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\tif (lastArabic){nType = AN;}\n\t\t\treturn nType == wType ? nType : ON;\n\t\tcase ES:\n\t\t\twType = ix > 0 ? classes[ix - 1] : B;\n\t\t\tif (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase ET:\n\t\t\tif (ix > 0 && classes[ix - 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\tif (lastArabic){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\ti = ix + 1;\n\t\t\tlen = types.length;\n\t\t\twhile (i < len && types[i] == ET){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len && types[i] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase NSM:\n\t\t\tlen = types.length;\n\t\t\ti = ix + 1;\n\t\t\twhile (i < len && types[i] == NSM){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len){\n\t\t\t\tvar c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n\n\t\t\t\twType = types[i];\n\t\t\t\tif (rtlCandidate && (wType == R || wType == AL)){\n\t\t\t\t\treturn R;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ix < 1 || (wType = types[ix - 1]) == B){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\treturn classes[ix - 1];\n\t\tcase B:\n\t\t\tlastArabic = false;\n\t\t\thasUBAT_B = true;\n\t\t\treturn dir;\n\t\tcase S:\n\t\t\thasUBAT_S = true;\n\t\t\treturn ON;\n\t\tcase LRE:\n\t\tcase RLE:\n\t\tcase LRO:\n\t\tcase RLO:\n\t\tcase PDF:\n\t\t\tlastArabic = false;\n\t\tcase BN:\n\t\t\treturn ON;\n\t}\n}\n\nfunction _getCharacterType( ch ) {\n\tvar uc = ch.charCodeAt(0), hi = uc >> 8;\n\n\tif (hi == 0) {\n\t\treturn ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n\t} else if (hi == 5) {\n\t\treturn (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n\t} else if (hi == 6) {\n\t\tif (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n\t\t\treturn NSM;\n\t\telse if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n\t\t\treturn AN;\n\t\telse if (uc == 0x066A)\n\t\t\treturn ET;\n\t\telse if (/[\\u06f0-\\u06f9]/.test(ch))\n\t\t\treturn EN;\n\t\telse\n\t\t\treturn AL;\n\t} else if (hi == 0x20 && uc <= 0x205F) {\n\t\treturn UnicodeTBL20[uc & 0xFF];\n\t} else if (hi == 0xFE) {\n\t\treturn (uc >= 0xFE70 ? AL : ON);\n\t}\n\treturn ON;\n}\n\nfunction _isArabicDiacritics( ch ) {\n\treturn (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\n\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function(text, textCharTypes, isRtl) {\n\tif (text.length < 2)\n\t\treturn {};\n\n\tvar chars = text.split(\"\"), logicalFromVisual = new Array(chars.length),\n\t\tbidiLevels = new Array(chars.length), levels = [];\n\n\tdir = isRtl ? RTL : LTR;\n\n\t_computeLevels(chars, levels, chars.length, textCharTypes);\n\n\tfor (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++);\n\n\t_invertLevel(2, levels, logicalFromVisual);\n\t_invertLevel(1, levels, logicalFromVisual);\n\n\tfor (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n\t\tif (textCharTypes[i] === AN) {\n\t\t\tlevels[i] = exports.AN;\n\t\t} else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE)\n\t\t\t|| textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n\t\t\tlevels[i] = exports.ON_R;\n\t\t} else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n\t\t\tlevels[i - 1] = levels[i] = exports.R_H;\n\t\t\ti++;\n\t\t}\n\t}\n\tif (chars[chars.length - 1] === exports.DOT)\n\t\tlevels[chars.length - 1] = exports.B;\n\n\tfor (var i = 0; i < logicalFromVisual.length; i++) {\n\t\tbidiLevels[i] = levels[logicalFromVisual[i]];\n\t}\n\n\treturn {'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels};\n};\nexports.hasBidiCharacters = function(text, textCharTypes){\n\tvar ret = false;\n\tfor (var i = 0; i < text.length; i++){\n\t\ttextCharTypes[i] = _getCharacterType(text.charAt(i));\n\t\tif (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL))\n\t\t\tret = true;\n\t}\n\treturn ret;\n};\nexports.getVisualFromLogicalIdx = function(logIdx, rowMap) {\n\tfor (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n\t\tif (rowMap.logicalFromVisual[i] == logIdx)\n\t\t\treturn i;\n\t}\n\treturn 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar bidiUtil = acequire(\"./lib/bidiutil\");\nvar lang = acequire(\"./lib/lang\");\nvar useragent = acequire(\"./lib/useragent\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\nvar BidiHandler = function(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.isLastRow = false;\n this.EOF = \"\\xB6\";\n this.seenBidi = false;\n};\n\n(function() {\n this.isBidiRow = function(screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n\n this.onChange = function(delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n }\n else {\n this.currentRow = null;\n }\n };\n\n this.getDocumentRow = function() {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n\n return docRow;\n };\n\n this.getSplitIndex = function() {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n\n prevIndex = currentIndex;\n splitIndex++;\n }\n }\n\n return splitIndex;\n };\n\n this.updateRowLine = function(docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n\n this.wrapIndent = 0;\n this.isLastRow = (docRow === this.session.getLength() - 1);\n this.line = this.session.getLine(docRow);\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n\n if(splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splits.length - 1]) :\n this.line.substring(splits[splits.length - 1]);\n } else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n }\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function(ch, i){\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n };\n\n this.updateBidiMap = function() {\n var textCharTypes = [], endOfLine = this.isLastRow ? this.EOF : this.EOL;\n var line = this.line + (this.showInvisibles ? endOfLine : bidiUtil.DOT);\n if (bidiUtil.hasBidiCharacters(line, textCharTypes)) {\n this.bidiMap = bidiUtil.doBidiReorder(line, textCharTypes, this.isRtlDir);\n } else {\n this.bidiMap = {};\n }\n };\n this.markAsDirty = function() {\n this.currentRow = null;\n };\n this.updateCharacterWidths = function(fontMetrics) {\n if (!this.seenBidi)\n return;\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = useragent.isChrome ? bidiCharWidth : bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = 0;\n\n this.currentRow = null;\n };\n\n this.getShowInvisibles = function() {\n return this.showInvisibles;\n };\n\n this.setShowInvisibles = function(showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n\n this.setEolChar = function(eolChar) {\n this.EOL = eolChar;\n };\n\n this.setTextDir = function(isRtlDir) {\n this.isRtlDir = isRtlDir;\n };\n this.getPosLeft = function(col) {\n col -= this.wrapIndent;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(col > 0 ? col - 1 : 0, this.bidiMap),\n levels = this.bidiMap.bidiLevels, left = 0;\n\n if (col === 0 && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n\n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n\n if (col !== 0 && levels[visualIdx] % 2 === 0)\n left += this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent)\n left += this.wrapIndent * this.charWidths[bidiUtil.L];\n\n return left;\n };\n this.getSelections = function(startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, offset = this.wrapIndent * this.charWidths[bidiUtil.L], selections = [],\n selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent,\n isSelected = false, isSelectedPrev = false, selectionStart = 0;\n\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n } else if (!isSelected && isSelectedPrev) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n\n if (isSelected && (visIdx === levels.length)) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n\n return selections;\n };\n this.offsetToCol = function(posX) {\n var logicalIdx = 0, posX = Math.max(posX, 0),\n offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels,\n charWidth = this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent) {\n posX -= this.wrapIndent * this.charWidths[bidiUtil.L];\n }\n\n while(posX > offset + charWidth/2) {\n offset += charWidth;\n if(visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)){\n if(posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n\n } else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)){\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n\n } else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))){\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n } else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n\n return (logicalIdx + this.wrapIndent);\n };\n\n}).call(BidiHandler.prototype);\n\nexports.BidiHandler = BidiHandler;\n});\n\nace.define(\"ace/range\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nvar comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nvar Range = function(startRow, startColumn, endRow, endColumn) {\n this.start = {\n row: startRow,\n column: startColumn\n };\n\n this.end = {\n row: endRow,\n column: endColumn\n };\n};\n\n(function() {\n this.isEqual = function(range) {\n return this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column;\n };\n this.toString = function() {\n return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n\n this.contains = function(row, column) {\n return this.compare(row, column) == 0;\n };\n this.compareRange = function(range) {\n var cmp,\n end = range.end,\n start = range.start;\n\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n } else if (cmp == 0) {\n return 1;\n } else {\n return 0;\n }\n } else if (cmp == -1) {\n return -2;\n } else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n } else if (cmp == 1) {\n return 42;\n } else {\n return 0;\n }\n }\n };\n this.comparePoint = function(p) {\n return this.compare(p.row, p.column);\n };\n this.containsRange = function(range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n this.intersects = function(range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n this.isEnd = function(row, column) {\n return this.end.row == row && this.end.column == column;\n };\n this.isStart = function(row, column) {\n return this.start.row == row && this.start.column == column;\n };\n this.setStart = function(row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n } else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n this.setEnd = function(row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n } else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n this.inside = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideStart = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideEnd = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.compare = function(row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n\n if (row < this.start.row)\n return -1;\n\n if (row > this.end.row)\n return 1;\n\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n\n return 0;\n };\n this.compareStart = function(row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareEnd = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareInside = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.clipRows = function(firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = {row: lastRow + 1, column: 0};\n else if (this.end.row < firstRow)\n var end = {row: firstRow, column: 0};\n\n if (this.start.row > lastRow)\n var start = {row: lastRow + 1, column: 0};\n else if (this.start.row < firstRow)\n var start = {row: firstRow, column: 0};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n this.extend = function(row, column) {\n var cmp = this.compare(row, column);\n\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = {row: row, column: column};\n else\n var end = {row: row, column: column};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n\n this.isEmpty = function() {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n this.isMultiLine = function() {\n return (this.start.row !== this.end.row);\n };\n this.clone = function() {\n return Range.fromPoints(this.start, this.end);\n };\n this.collapseRows = function() {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n this.toScreenRange = function(session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n\n return new Range(\n screenPosStart.row, screenPosStart.column,\n screenPosEnd.row, screenPosEnd.column\n );\n };\n this.moveBy = function(row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n\n}).call(Range.prototype);\nRange.fromPoints = function(start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\n\nRange.comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\n\n\nexports.Range = Range;\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar lang = acequire(\"./lib/lang\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar Range = acequire(\"./range\").Range;\nvar Selection = function(session) {\n this.session = session;\n this.doc = session.getDocument();\n\n this.clearSelection();\n this.lead = this.selectionLead = this.doc.createAnchor(0, 0);\n this.anchor = this.selectionAnchor = this.doc.createAnchor(0, 0);\n\n var self = this;\n this.lead.on(\"change\", function(e) {\n self._emit(\"changeCursor\");\n if (!self.$isEmpty)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n\n this.selectionAnchor.on(\"change\", function() {\n if (!self.$isEmpty)\n self._emit(\"changeSelection\");\n });\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.isEmpty = function() {\n return (this.$isEmpty || (\n this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column\n ));\n };\n this.isMultiLine = function() {\n if (this.isEmpty()) {\n return false;\n }\n\n return this.getRange().isMultiLine();\n };\n this.getCursor = function() {\n return this.lead.getPosition();\n };\n this.setSelectionAnchor = function(row, column) {\n this.anchor.setPosition(row, column);\n\n if (this.$isEmpty) {\n this.$isEmpty = false;\n this._emit(\"changeSelection\");\n }\n };\n this.getSelectionAnchor = function() {\n if (this.$isEmpty)\n return this.getSelectionLead();\n else\n return this.anchor.getPosition();\n };\n this.getSelectionLead = function() {\n return this.lead.getPosition();\n };\n this.shiftSelection = function(columns) {\n if (this.$isEmpty) {\n this.moveCursorTo(this.lead.row, this.lead.column + columns);\n return;\n }\n\n var anchor = this.getSelectionAnchor();\n var lead = this.getSelectionLead();\n\n var isBackwards = this.isBackwards();\n\n if (!isBackwards || anchor.column !== 0)\n this.setSelectionAnchor(anchor.row, anchor.column + columns);\n\n if (isBackwards || lead.column !== 0) {\n this.$moveSelection(function() {\n this.moveCursorTo(lead.row, lead.column + columns);\n });\n }\n };\n this.isBackwards = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n this.getRange = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n\n if (this.isEmpty())\n return Range.fromPoints(lead, lead);\n\n if (this.isBackwards()) {\n return Range.fromPoints(lead, anchor);\n }\n else {\n return Range.fromPoints(anchor, lead);\n }\n };\n this.clearSelection = function() {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n this.selectAll = function() {\n var lastRow = this.doc.getLength() - 1;\n this.setSelectionAnchor(0, 0);\n this.moveCursorTo(lastRow, this.doc.getLine(lastRow).length);\n };\n this.setRange =\n this.setSelectionRange = function(range, reverse) {\n if (reverse) {\n this.setSelectionAnchor(range.end.row, range.end.column);\n this.selectTo(range.start.row, range.start.column);\n } else {\n this.setSelectionAnchor(range.start.row, range.start.column);\n this.selectTo(range.end.row, range.end.column);\n }\n if (this.getRange().isEmpty())\n this.$isEmpty = true;\n this.$desiredColumn = null;\n };\n\n this.$moveSelection = function(mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n\n mover.call(this);\n };\n this.selectTo = function(row, column) {\n this.$moveSelection(function() {\n this.moveCursorTo(row, column);\n });\n };\n this.selectToPosition = function(pos) {\n this.$moveSelection(function() {\n this.moveCursorToPosition(pos);\n });\n };\n this.moveTo = function(row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n this.moveToPosition = function(pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n this.selectUp = function() {\n this.$moveSelection(this.moveCursorUp);\n };\n this.selectDown = function() {\n this.$moveSelection(this.moveCursorDown);\n };\n this.selectRight = function() {\n this.$moveSelection(this.moveCursorRight);\n };\n this.selectLeft = function() {\n this.$moveSelection(this.moveCursorLeft);\n };\n this.selectLineStart = function() {\n this.$moveSelection(this.moveCursorLineStart);\n };\n this.selectLineEnd = function() {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n this.selectFileEnd = function() {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n this.selectFileStart = function() {\n this.$moveSelection(this.moveCursorFileStart);\n };\n this.selectWordRight = function() {\n this.$moveSelection(this.moveCursorWordRight);\n };\n this.selectWordLeft = function() {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n this.getWordRange = function(row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n this.selectWord = function() {\n this.setSelectionRange(this.getWordRange());\n };\n this.selectAWord = function() {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n\n this.getLineRange = function(row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n } else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n this.selectLine = function() {\n this.setSelectionRange(this.getLineRange());\n };\n this.moveCursorUp = function() {\n this.moveCursorBy(-1, 0);\n };\n this.moveCursorDown = function() {\n this.moveCursorBy(1, 0);\n };\n this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length-1 == tabSize;\n };\n this.moveCursorLeft = function() {\n var cursor = this.lead.getPosition(),\n fold;\n\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n } else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n } else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n this.moveCursorRight = function() {\n var cursor = this.lead.getPosition(),\n fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n } else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n this.moveCursorLineStart = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(\n row, null, firstColumnPosition.row,\n firstColumnPosition.column\n );\n\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n this.moveCursorLineEnd = function() {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n this.moveCursorFileEnd = function() {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n this.moveCursorFileStart = function() {\n this.moveCursorTo(0, 0);\n };\n this.moveCursorLongWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var match;\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (match = this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (match = this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n this.moveCursorLongWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n\n var leftOfCursor = lang.stringReverse(str);\n var match;\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (match = this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (match = this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n\n this.$shortWordEndIndex = function(rightOfCursor) {\n var match, index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n\n tokenRe.lastIndex = 0;\n if (match = this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index ++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n\n return index;\n };\n\n this.moveCursorShortWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n\n var index = this.$shortWordEndIndex(rightOfCursor);\n\n this.moveCursorTo(row, column + index);\n };\n\n this.moveCursorShortWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n\n return this.moveCursorTo(row, column - index);\n };\n\n this.moveCursorWordRight = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n\n this.moveCursorWordLeft = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n this.moveCursorBy = function(rows, chars) {\n var screenPos = this.session.documentToScreenPosition(\n this.lead.row,\n this.lead.column\n );\n\n var offsetX;\n\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n } else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n \n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n if (this.session.lineWidgets && this.session.lineWidgets[docPos.row]) {\n if (docPos.row > 0 || rows > 0)\n docPos.row++;\n }\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n this.moveCursorToPosition = function(position) {\n this.moveCursorTo(position.row, position.column);\n };\n this.moveCursorTo = function(row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n this.moveCursorToScreen = function(row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n this.detach = function() {\n this.lead.detach();\n this.anchor.detach();\n this.session = this.doc = null;\n };\n\n this.fromOrientedRange = function(range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n\n this.toOrientedRange = function(range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n } else {\n range = r;\n }\n\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n this.getRangeOfMovements = function(func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start,end);\n } catch(e) {\n return Range.fromPoints(start,start);\n } finally {\n this.moveCursorToPosition(start);\n }\n };\n\n this.toJSON = function() {\n if (this.rangeCount) {\n var data = this.ranges.map(function(r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n } else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n\n this.fromJSON = function(data) {\n if (data.start == undefined) {\n if (this.rangeList) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--; ) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n } else\n data = data[0];\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n\n this.isEqual = function(data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n\n for (var i = this.ranges.length; i--; ) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n\n}).call(Selection.prototype);\n\nexports.Selection = Selection;\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/config\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar config = acequire(\"./config\");\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = function(rules) {\n this.states = rules;\n\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = {defaultToken: \"text\"};\n var flag = \"g\";\n\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive)\n flag = \"gi\";\n if (rule.regex == null)\n continue;\n\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n } else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", { \n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n } else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n } else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function(match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n } else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n \n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n \n splitterRurles.forEach(function(rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n};\n\n(function() {\n this.$setMaxTokenCount = function(m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n \n this.$applyToken = function(str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{type: types, value: str}];\n\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n\n this.$arrayTokens = function(str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n\n this.removeCapturingGroups = function(src) {\n var r = src.replace(\n /\\[(?:\\\\.|[^\\]])*?\\]|\\\\.|\\(\\?[:=!]|(\\()/g,\n function(x, y) {return y ? \"(?:\" : x;}\n );\n return r;\n };\n\n this.createSplitterRegexp = function(src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function(\n m, esc, parenOpen, parenClose, square, index\n ) {\n if (inChClass) {\n inChClass = square != \"]\";\n } else if (square) {\n inChClass = true;\n } else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index+1;\n lastCapture.stack = -1;\n }\n stack--;\n } else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\") src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\") src += \"$\";\n \n return new RegExp(src, (flag||\"\").replace(\"g\", \"\"));\n };\n this.getLineTokens = function(line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n } else\n var stack = [];\n\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n\n var token = {type: null, value: \"\"};\n\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: skipped};\n }\n }\n\n for (var i = 0; i < match.length-2; i++) {\n if (match[i + 1] === undefined)\n continue;\n\n rule = state[mapping[i]];\n\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n } else {\n currentState = rule.next(currentState, stack);\n }\n \n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: value};\n }\n } else if (type) {\n if (token.type)\n tokens.push(token);\n token = {type: null, value: \"\"};\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n\n if (lastIndex == line.length)\n break;\n\n lastIndex = index;\n\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 2000),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n\n if (token.type)\n tokens.push(token);\n \n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens : tokens,\n state : stack.length ? stack : currentState\n };\n };\n \n this.reportError = config.reportError;\n \n}).call(Tokenizer.prototype);\n\nexports.Tokenizer = Tokenizer;\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"../lib/lang\");\n\nvar TextHighlightRules = function() {\n\n this.$rules = {\n \"start\" : [{\n token : \"empty_line\",\n regex : '^$'\n }, {\n defaultToken : \"text\"\n }]\n };\n};\n\n(function() {\n\n this.addRules = function(rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n\n this.getRules = function() {\n return this.$rules;\n };\n\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n } else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n\n this.addRules(embedRules, prefix);\n\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));\n }\n\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n\n this.getEmbeds = function() {\n return this.$embeds;\n };\n\n var pushState = function(currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function(currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n\n this.normalizeRules = function() {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n } else if (next == \"pop\") {\n rule.next = popState;\n }\n\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n } else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (Array.isArray(includeName))\n toInsert = includeName.map(function(x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function(x) {return !x.next;});\n state.splice.apply(state, args);\n i--;\n }\n \n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(\n rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive\n );\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n\n this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n Object.keys(map).forEach(function(className) {\n var a = map[className];\n if (ignoreCase)\n a = a.toLowerCase();\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--; )\n keywords[list[i]] = className;\n });\n if (Object.getPrototypeOf(keywords)) {\n keywords.__proto__ = null;\n }\n this.$keywordList = Object.keys(keywords);\n map = null;\n return ignoreCase\n ? function(value) {return keywords[value.toLowerCase()] || defaultToken; }\n : function(value) {return keywords[value] || defaultToken; };\n };\n\n this.getKeywords = function() {\n return this.$keywords;\n };\n\n}).call(TextHighlightRules.prototype);\n\nexports.TextHighlightRules = TextHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Behaviour = function() {\n this.$behaviours = {};\n};\n\n(function () {\n\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n \n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n \n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n \n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n } else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n \n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n } else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n\n}).call(Behaviour.prototype);\n\nexports.Behaviour = Behaviour;\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"./range\").Range;\nvar TokenIterator = function(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n};\n\n(function() { \n this.stepBackward = function() {\n this.$tokenIndex -= 1;\n \n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n \n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.stepForward = function() {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentTokenRow = function () {\n return this.$row;\n }; \n this.getCurrentTokenColumn = function() {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n \n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n \n return column; \n };\n this.getCurrentTokenPosition = function() {\n return {row: this.$row, column: this.getCurrentTokenColumn()};\n };\n this.getCurrentTokenRange = function() {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n\n}).call(TokenIterator.prototype);\n\nexports.TokenIterator = TokenIterator;\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar Behaviour = acequire(\"../behaviour\").Behaviour;\nvar TokenIterator = acequire(\"../../token_iterator\").TokenIterator;\nvar lang = acequire(\"../../lib/lang\");\n\nvar SAFE_INSERT_IN_TOKENS =\n [\"text\", \"paren.rparen\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS =\n [\"text\", \"paren.rparen\", \"punctuation.operator\", \"comment\"];\n\nvar context;\nvar contextCache = {};\nvar defaultQuotes = {'\"' : '\"', \"'\" : \"'\"};\n\nvar initContext = function(editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = {rangeCount: editor.multiSelect.rangeCount};\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\n\nvar getWrapped = function(selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\n\nvar CstyleBehaviour = function(options) {\n this.add(\"braces\", \"insertion\", function(state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n } else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n } else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n } else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n } else if (closing) {\n var next_indent = this.$getIndent(line);\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n\n this.add(\"braces\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n } else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n\n this.add(\"parens\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n } else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"parens\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"brackets\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n } else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"brackets\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"string_dquotes\", \"insertion\", function(state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1)\n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n } else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column-1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n\n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n\n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n\n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n } else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(leftChar);\n if (isWordBefore || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1,1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && (selected == '\"' || selected == \"'\")) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n};\n\n\nCstyleBehaviour.isSaneInsertion = function(editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\n\nCstyleBehaviour.$matchTokenType = function(token, types) {\n return types.indexOf(token.type || token) > -1;\n};\n\nCstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\n\nCstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\n\nCstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\n\nCstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\n\nCstyleBehaviour.popAutoInsertedClosing = function() {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\n\nCstyleBehaviour.clearMaybeInsertedClosing = function() {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\n\n\n\noop.inherits(CstyleBehaviour, Behaviour);\n\nexports.CstyleBehaviour = CstyleBehaviour;\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nexports.packages = {};\n\naddUnicodePackage({\n L: \"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",\n Ll: \"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A\",\n Lu: \"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A\",\n Lt: \"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC\",\n Lm: \"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F\",\n Lo: \"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC\",\n M: \"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26\",\n Mn: \"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26\",\n Mc: \"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC\",\n Me: \"0488048906DE20DD-20E020E2-20E4A670-A672\",\n N: \"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",\n Nd: \"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19\",\n Nl: \"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF\",\n No: \"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835\",\n P: \"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65\",\n Pd: \"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D\",\n Ps: \"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62\",\n Pe: \"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63\",\n Pi: \"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20\",\n Pf: \"00BB2019201D203A2E032E052E0A2E0D2E1D2E21\",\n Pc: \"005F203F20402054FE33FE34FE4D-FE4FFF3F\",\n Po: \"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65\",\n S: \"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD\",\n Sm: \"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC\",\n Sc: \"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6\",\n Sk: \"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3\",\n So: \"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD\",\n Z: \"002000A01680180E2000-200A20282029202F205F3000\",\n Zs: \"002000A01680180E2000-200A202F205F3000\",\n Zl: \"2028\",\n Zp: \"2029\",\n C: \"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF\",\n Cc: \"0000-001F007F-009F\",\n Cf: \"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB\",\n Co: \"E000-F8FF\",\n Cs: \"D800-DFFF\",\n Cn: \"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF\"\n});\n\nfunction addUnicodePackage (pack) {\n var codePoint = /\\w{4}/g;\n for (var name in pack)\n exports.packages[name] = pack[name].replace(codePoint, \"\\\\u$&\");\n}\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Tokenizer = acequire(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = acequire(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = acequire(\"../unicode\");\nvar lang = acequire(\"../lib/lang\");\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\nvar Range = acequire(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = TextHighlightRules;\n};\n\n(function() {\n this.$defaultBehaviour = new CstyleBehaviour();\n\n this.tokenRe = new RegExp(\"^[\"\n + unicode.packages.L\n + unicode.packages.Mn + unicode.packages.Mc\n + unicode.packages.Nd\n + unicode.packages.Pc + \"\\\\$_]+\", \"g\"\n );\n\n this.nonTokenRe = new RegExp(\"^(?:[^\"\n + unicode.packages.L\n + unicode.packages.Mn + unicode.packages.Mc\n + unicode.packages.Nd\n + unicode.packages.Pc + \"\\\\$_]|\\\\s])+\", \"g\"\n );\n\n this.getTokenizer = function() {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n\n this.toggleCommentLines = function(state, session, startRow, endRow) {\n var doc = session.doc;\n\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n\n var comment = function(line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({row: i, column: line.length}, lineCommentEnd);\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n\n var uncomment = function(line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n\n var testRemove = function(line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n } else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n } else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n \n insertAtTabStop = session.getUseSoftTabs();\n\n var uncomment = function(line, i) {\n var m = line.match(regexpStart);\n if (!m) return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function(line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({row: i, column: minIndent}, commentWithSpace);\n else\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n var testRemove = function(line, i) {\n return regexpStart.test(line);\n };\n \n var shouldInsertSpace = function(line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n return true;\n };\n }\n\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n\n\n var minEmptyLength = Infinity;\n iter(function(line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n } else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n\n iter(shouldRemove ? uncomment : comment);\n };\n\n this.toggleBlockComment = function(state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n } else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.autoOutdent = function(state, doc, row) {\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n this.$embeds.push(i);\n this.$modes[i] = new mapping[i]();\n }\n }\n\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\", \n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n\n for (var i = 0; i < delegations.length; i++) {\n (function(scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function() {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n\n this.$delegator = function(method, args, defaultHandler) {\n var state = args[0];\n if (typeof state != \"string\")\n state = state[0];\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]]) continue;\n\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n\n this.transformAction = function(state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n \n this.getKeywords = function(append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { \n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n \n this.$createKeywordList = function() {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function(word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\n\nfunction throwDeltaError(delta, errorText){\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\n\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\n\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\n\nexports.applyDelta = function(docLines, delta, doNotValidate) {\n \n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n } else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n } else {\n docLines.splice(\n row, endRow - row + 1,\n line.substring(0, startColumn) + docLines[endRow].substring(endColumn)\n );\n }\n break;\n }\n};\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\n\nvar Anchor = exports.Anchor = function(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n \n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.getPosition = function() {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n this.getDocument = function() {\n return this.document;\n };\n this.$insertRight = false;\n this.onChange = function(delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n\n if (delta.start.row > this.row)\n return;\n \n var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n \n function $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n }\n \n function $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n \n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n }\n this.setPosition = function(row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n } else {\n pos = this.$clipPositionToDocument(row, column);\n }\n\n if (this.row == pos.row && this.column == pos.column)\n return;\n\n var old = {\n row: this.row,\n column: this.column\n };\n\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n this.detach = function() {\n this.document.removeEventListener(\"change\", this.$onChange);\n };\n this.attach = function(doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n this.$clipPositionToDocument = function(row, column) {\n var pos = {};\n\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n\n if (column < 0)\n pos.column = 0;\n\n return pos;\n };\n\n}).call(Anchor.prototype);\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar applyDelta = acequire(\"./apply_delta\").applyDelta;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar Range = acequire(\"./range\").Range;\nvar Anchor = acequire(\"./anchor\").Anchor;\n\nvar Document = function(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n } else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({row: 0, column: 0}, textOrLines);\n } else {\n this.insert({row: 0, column:0}, textOrLines);\n }\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setValue = function(text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({row: 0, column: 0}, text);\n };\n this.getValue = function() {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n this.createAnchor = function(row, column) {\n return new Anchor(this, row, column);\n };\n if (\"aaa\".split(/a/).length === 0) {\n this.$split = function(text) {\n return text.replace(/\\r\\n|\\r/g, \"\\n\").split(\"\\n\");\n };\n } else {\n this.$split = function(text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n }\n\n\n this.$detectNewLine = function(text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineCharacter = function() {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n\n this.$autoNewLine = \"\";\n this.$newLineMode = \"auto\";\n this.setNewLineMode = function(newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineMode = function() {\n return this.$newLineMode;\n };\n this.isNewLine = function(text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n this.getLine = function(row) {\n return this.$lines[row] || \"\";\n };\n this.getLines = function(firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n this.getAllLines = function() {\n return this.getLines(0, this.getLength());\n };\n this.getLength = function() {\n return this.$lines.length;\n };\n this.getTextRange = function(range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n this.getLinesForRange = function(range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n } else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n this.insertLines = function(row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n this.removeLines = function(firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n this.insertNewLine = function(position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n this.insert = function(position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n \n return this.insertMergedLines(position, this.$split(text));\n };\n this.insertInLine = function(position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n \n return this.clonePos(end);\n };\n \n this.clippedPos = function(row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n } else if (row < 0) {\n row = 0;\n } else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return {row: row, column: column};\n };\n \n this.clonePos = function(pos) {\n return {row: pos.row, column: pos.column};\n };\n \n this.pos = function(row, column) {\n return {row: row, column: column};\n };\n \n this.$clipPosition = function(position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n } else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n this.insertFullLines = function(row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n } else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({row: row, column: column}, lines);\n }; \n this.insertMergedLines = function(position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n \n return this.clonePos(end);\n };\n this.remove = function(range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n });\n return this.clonePos(start);\n };\n this.removeInLine = function(row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n }, true);\n \n return this.clonePos(start);\n };\n this.removeFullLines = function(firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );\n var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );\n var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );\n var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); \n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n \n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n this.removeNewLine = function(row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n this.replace = function(range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n \n return end;\n };\n this.applyDeltas = function(deltas) {\n for (var i=0; i=0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n this.applyDelta = function(delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n \n if (isInsert && delta.lines.length > 20000)\n this.$splitAndapplyLargeDelta(delta, 20000);\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n };\n \n this.$splitAndapplyLargeDelta = function(delta, MAX) {\n var lines = delta.lines;\n var l = lines.length;\n var row = delta.start.row; \n var column = delta.start.column;\n var from = 0, to = 0;\n do {\n from = to;\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n if (to > l) {\n delta.lines = chunk;\n delta.start.row = row + from;\n delta.start.column = column;\n break;\n }\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n } while(true);\n };\n this.revertDelta = function(delta) {\n this.applyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n this.indexToPosition = function(index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return {row: i, column: index + lines[i].length + newlineLength};\n }\n return {row: l-1, column: lines[l-1].length};\n };\n this.positionToIndex = function(pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n\n return index + pos.column;\n };\n\n}).call(Document.prototype);\n\nexports.Document = Document;\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\n\nvar BackgroundTokenizer = function(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n\n var self = this;\n\n this.$worker = function() {\n if (!self.running) { return; }\n\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n \n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines ++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { \n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n \n if (endLine == -1)\n endLine = currentLine;\n\n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n this.setTokenizer = function(tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n\n this.start(0);\n };\n this.setDocument = function(doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n\n this.stop();\n };\n this.fireUpdateEvent = function(firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", {data: data});\n };\n this.start = function(startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n \n this.scheduleStart = function() {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n\n this.$updateOnChange = function(delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n this.lines[startRow] = null;\n } else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n\n this.stop();\n };\n this.stop = function() {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n this.getTokens = function(row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n this.getState = function(row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n\n this.$tokenizeRow = function(row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n\n var data = this.tokenizer.getLineTokens(line, state, row);\n\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n } else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n\n return this.lines[row] = data.tokens;\n };\n\n}).call(BackgroundTokenizer.prototype);\n\nexports.BackgroundTokenizer = BackgroundTokenizer;\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"./lib/lang\");\nvar oop = acequire(\"./lib/oop\");\nvar Range = acequire(\"./range\").Range;\n\nvar SearchHighlight = function(regExp, clazz, type) {\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type || \"text\";\n};\n\n(function() {\n this.MAX_RANGES = 500;\n \n this.setRegexp = function(regExp) {\n if (this.regExp+\"\" == regExp+\"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n\n this.update = function(html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function(match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n\n for (var j = ranges.length; j --; ) {\n markerLayer.drawSingleLineMarker(\n html, ranges[j].toScreenRange(session), this.clazz, config);\n }\n }\n };\n\n}).call(SearchHighlight.prototype);\n\nexports.SearchHighlight = SearchHighlight;\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nfunction FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n } else {\n folds = this.folds = [ folds ];\n }\n\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column,\n last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n\n this.folds.forEach(function(fold) {\n fold.setFoldLine(this);\n }, this);\n}\n\n(function() {\n this.shiftRow = function(shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function(fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n\n this.addFold = function(fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function(a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n } else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n } else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n\n this.containsRow = function(row) {\n return row >= this.start.row && row <= this.end.row;\n };\n\n this.walk = function(callback, endRow, endColumn) {\n var lastEnd = 0,\n folds = this.folds,\n fold,\n cmp, stop, isNewRow = true;\n\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n\n this.getNextFoldTo = function(row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n } else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n\n this.addRemoveChars = function(row, column, len) {\n var ret = this.getNextFoldTo(row, column),\n fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row)\n {\n window.console && window.console.log(row, column, fold);\n } else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n\n this.split = function(row, column) {\n var pos = this.getNextFoldTo(row, column);\n \n if (!pos || pos.kind == \"inside\")\n return null;\n \n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n \n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n\n this.merge = function(foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n\n this.toString = function() {\n var ret = [this.range.toString() + \": [\" ];\n\n this.folds.forEach(function(fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n\n this.idxToPosition = function(idx) {\n var lastFoldEndColumn = 0;\n\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n\n lastFoldEndColumn = fold.end.column;\n }\n\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n}).call(FoldLine.prototype);\n\nexports.FoldLine = FoldLine;\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\nvar Range = acequire(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\n\nvar RangeList = function() {\n this.ranges = [];\n};\n\n(function() {\n this.comparePoints = comparePoints;\n\n this.pointIndex = function(pos, excludeEdges, startIndex) {\n var list = this.ranges;\n\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i-2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n\n return -i-1;\n }\n return -i - 1;\n };\n\n this.add = function(range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n\n this.addList = function(list) {\n var removed = [];\n for (var i = list.length; i--; ) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n\n this.substractPoint = function(pos) {\n var i = this.pointIndex(pos);\n\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n this.merge = function() {\n var removed = [];\n var list = this.ranges;\n \n list = list.sort(function(a, b) {\n return comparePoints(a.start, b.start);\n });\n \n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n \n this.ranges = list;\n\n return removed;\n };\n\n this.contains = function(row, column) {\n return this.pointIndex({row: row, column: column}) >= 0;\n };\n\n this.containsPoint = function(pos) {\n return this.pointIndex(pos) >= 0;\n };\n\n this.rangeAtPoint = function(pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n\n\n this.clipRows = function(startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n\n var startIndex = this.pointIndex({row: startRow, column: 0});\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n\n this.removeAll = function() {\n return this.ranges.splice(0, this.ranges.length);\n };\n\n this.attach = function(session) {\n if (this.session)\n this.detach();\n\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n\n this.session.on('change', this.onChange);\n };\n\n this.detach = function() {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n\n this.$onChange = function(delta) {\n if (delta.action == \"insert\"){\n var start = delta.start;\n var end = delta.end;\n } else {\n var end = delta.start;\n var start = delta.end;\n }\n var startRow = start.row;\n var endRow = end.row;\n var lineDif = endRow - startRow;\n\n var colDiff = -start.column + end.column;\n var ranges = this.ranges;\n\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row < startRow)\n continue;\n if (r.start.row > startRow)\n break;\n\n if (r.start.row == startRow && r.start.column >= start.column ) {\n if (r.start.column == start.column && this.$insertRight) {\n } else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$insertRight) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) { \n if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n\n}).call(RangeList.prototype);\n\nexports.RangeList = RangeList;\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/range_list\",\"ace/lib/oop\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nvar RangeList = acequire(\"../range_list\").RangeList;\nvar oop = acequire(\"../lib/oop\");\nvar Fold = exports.Fold = function(range, placeholder) {\n this.foldLine = null;\n this.placeholder = placeholder;\n this.range = range;\n this.start = range.start;\n this.end = range.end;\n\n this.sameRow = range.start.row == range.end.row;\n this.subFolds = this.ranges = [];\n};\n\noop.inherits(Fold, RangeList);\n\n(function() {\n\n this.toString = function() {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n\n this.setFoldLine = function(foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function(fold) {\n fold.setFoldLine(foldLine);\n });\n };\n\n this.clone = function() {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function(subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n\n this.addSubFold = function(fold) {\n if (this.range.isEqual(fold))\n return;\n\n if (!this.range.containsRange(fold))\n throw new Error(\"A fold can't intersect already existing fold\" + fold.range + this.range);\n consumeRange(fold, this.start);\n\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n\n if (cmp == 0)\n return afterStart.addSubFold(fold);\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterEnd = this.subFolds[j];\n\n if (cmp == 0)\n throw new Error(\"A fold can't intersect already existing fold\" + fold.range + this.range);\n\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n fold.setFoldLine(this.foldLine);\n\n return fold;\n };\n \n this.restoreRange = function(range) {\n return restoreRange(range, this.start);\n };\n\n}).call(Fold.prototype);\n\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nvar FoldLine = acequire(\"./fold_line\").FoldLine;\nvar Fold = acequire(\"./fold\").Fold;\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\n\nfunction Folding() {\n this.getFoldAt = function(row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var fold = folds[i];\n if (fold.range.contains(row, column)) {\n if (side == 1 && fold.range.isEnd(row, column)) {\n continue;\n } else if (side == -1 && fold.range.isStart(row, column)) {\n continue;\n }\n return fold;\n }\n }\n };\n this.getFoldsInRange = function(range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n\n start.column += 1;\n end.column -= 1;\n\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n } else if (cmp == 2) {\n continue;\n } else\n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n\n return foundFolds;\n };\n\n this.getFoldsInRangeList = function(ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function(range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n } else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function() {\n var folds = [];\n var foldLines = this.$foldData;\n \n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n\n return folds;\n };\n this.getFoldStringAt = function(row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n\n this.getFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n } else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n\n this.getFoldedRowCount = function(first, last) {\n var foldData = this.$foldData, rowCount = last-first+1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i],\n end = foldLine.end.row,\n start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last-start;\n else\n rowCount = 0; // in one fold\n }\n break;\n } else if (end >= first){\n if (start >= first) // fold inside range\n rowCount -= end-start;\n else\n rowCount -= end-first+1;\n }\n }\n return rowCount;\n };\n\n this.$addFoldLine = function(foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function(a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function(placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n \n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n if (!(startRow < endRow || \n startRow == endRow && startColumn <= endColumn - 2))\n throw new Error(\"The range has to be at least 2 characters width\");\n\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n \n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n folds.forEach(function(subFold) {\n fold.addSubFold(subFold);\n });\n }\n\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n } else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n } else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n\n return fold;\n };\n\n this.addFolds = function(folds) {\n folds.forEach(function(fold) {\n this.addFold(fold);\n }, this);\n };\n\n this.removeFold = function(fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n } else\n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n } else\n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n } else\n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n } else\n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n\n this.removeFolds = function(folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n\n cloneFolds.forEach(function(fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n\n this.expandFold = function(fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function(subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1);\n }\n fold.subFolds = [];\n };\n\n this.expandFolds = function(folds) {\n folds.forEach(function(fold) {\n this.expandFold(fold);\n }, this);\n };\n\n this.unfold = function(location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n expandInner = true;\n } else if (typeof location == \"number\")\n range = new Range(location, 0, location, this.getLine(location).length);\n else if (\"row\" in location)\n range = Range.fromPoints(location, location);\n else\n range = location;\n \n folds = this.getFoldsInRangeList(range);\n if (expandInner) {\n this.removeFolds(folds);\n } else {\n var subFolds = folds;\n while (subFolds.length) {\n this.expandFolds(subFolds);\n subFolds = this.getFoldsInRangeList(range);\n }\n }\n if (folds.length)\n return folds;\n };\n this.isRowFolded = function(docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n\n this.getRowFoldEnd = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n\n this.getRowFoldStart = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n\n this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n\n if (placeholder != null) {\n textLine += placeholder;\n } else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n\n this.getDisplayLine = function(row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n } else {\n return this.getFoldDisplayLine(\n foldLine, row, endColumn, startRow, startColumn);\n }\n };\n\n this.$cloneFoldData = function() {\n var fd = [];\n fd = this.$foldData.map(function(foldLine) {\n var folds = foldLine.folds.map(function(fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n\n return fd;\n };\n\n this.toggleFold = function(tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n\n if (fold) {\n this.expandFold(fold);\n return;\n } else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n } else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n\n range.start.column++;\n } else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n } else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n } else if (folds.length == 1 ) {\n fold = folds[0];\n }\n }\n\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n\n this.addFold(placeholder, range);\n };\n\n this.getCommentFoldRange = function(row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type));\n iterator.stepForward();\n }\n \n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + 2;\n\n iterator = new TokenIterator(this, row, column);\n \n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n } else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type));\n token = iterator.stepBackward();\n } else\n token = iterator.getCurrentToken();\n\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2;\n return range;\n }\n };\n\n this.foldAll = function(startRow, endRow, depth) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow\n ) {\n row = range.end.row;\n try {\n var fold = this.addFold(\"...\", range);\n if (fold)\n fold.collapseChildren = depth;\n } catch(e) {}\n }\n }\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function(style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n \n if (this.$foldStyle == style)\n return;\n\n this.$foldStyle = style;\n \n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n\n this.$setFolding = function(foldMode) {\n if (this.$foldMode == foldMode)\n return;\n \n this.$foldMode = foldMode;\n \n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n \n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n \n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n \n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n\n this.onFoldWidgetClick = function(row, e) {\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n \n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n \n this.$toggleFoldWidget = function(row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n \n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n } else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n } else if (range) {\n if (options.all) \n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n \n return range;\n };\n \n \n \n this.toggleFoldWidget = function(toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n \n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n \n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n\n if (fold) {\n this.removeFold(fold);\n } else {\n this.addFold(\"...\", range);\n }\n }\n };\n\n this.updateFoldWidgets = function(delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n } else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function(e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\n\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar TokenIterator = acequire(\"../token_iterator\").TokenIterator;\nvar Range = acequire(\"../range\").Range;\n\n\nfunction BracketMatch() {\n\n this.findMatchingBracket = function(position, chr) {\n if (position.column == 0) return null;\n\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1);\n if (charBeforeCursor == \"\") return null;\n\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n \n this.getBracketRange = function(pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n\n var chr = line.charAt(pos.column-1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n } else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n \n return range;\n };\n\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\"\n };\n\n this.$findOpeningBracket = function(bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n \n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n \n while (true) {\n \n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n \n value = token.value;\n valueIndex = value.length - 1;\n }\n \n return null;\n };\n\n this.$findClosingBracket = function(bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n\n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n\n while (true) {\n\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n\n valueIndex = 0;\n }\n \n return null;\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar lang = acequire(\"./lib/lang\");\nvar BidiHandler = acequire(\"./bidihandler\").BidiHandler;\nvar config = acequire(\"./config\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar Selection = acequire(\"./selection\").Selection;\nvar TextMode = acequire(\"./mode/text\").Mode;\nvar Range = acequire(\"./range\").Range;\nvar Document = acequire(\"./document\").Document;\nvar BackgroundTokenizer = acequire(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = acequire(\"./search_highlight\").SearchHighlight;\n\nvar EditSession = function(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function() {\n return this.join(\"\\n\");\n };\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n\n this.$bidiHandler = new BidiHandler(this);\n this.setDocument(text);\n this.selection = new Selection(this);\n\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n};\n\n\nEditSession.$uid = 0;\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setDocument = function(doc) {\n if (this.doc)\n this.doc.removeListener(\"change\", this.$onChange);\n\n this.doc = doc;\n doc.on(\"change\", this.$onChange);\n\n if (this.bgTokenizer)\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.resetCaches();\n };\n this.getDocument = function() {\n return this.doc;\n };\n this.$resetRowCache = function(docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n\n this.$getRowCacheIndex = function(cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n\n return low -1;\n };\n\n this.resetCaches = function() {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (this.bgTokenizer)\n this.bgTokenizer.start(0);\n };\n\n this.onChangeFold = function(e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n\n this.onChange = function(delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager && !delta.ignore) {\n this.$deltasDoc.push(delta);\n if (removedFolds && removedFolds.length != 0) {\n this.$deltasFold.push({\n action: \"removeFolds\",\n folds: removedFolds\n });\n }\n\n this.$informUndoManager.schedule();\n }\n\n this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n this.setValue = function(text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n\n this.$resetRowCache(0);\n this.$deltas = [];\n this.$deltasDoc = [];\n this.$deltasFold = [];\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n this.getValue =\n this.toString = function() {\n return this.doc.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.getState = function(row) {\n return this.bgTokenizer.getState(row);\n };\n this.getTokens = function(row) {\n return this.bgTokenizer.getTokens(row);\n };\n this.getTokenAt = function(row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n } else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n this.setUndoManager = function(undoManager) {\n this.$undoManager = undoManager;\n this.$deltas = [];\n this.$deltasDoc = [];\n this.$deltasFold = [];\n\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n\n if (undoManager) {\n var self = this;\n\n this.$syncInformUndoManager = function() {\n self.$informUndoManager.cancel();\n\n if (self.$deltasFold.length) {\n self.$deltas.push({\n group: \"fold\",\n deltas: self.$deltasFold\n });\n self.$deltasFold = [];\n }\n\n if (self.$deltasDoc.length) {\n self.$deltas.push({\n group: \"doc\",\n deltas: self.$deltasDoc\n });\n self.$deltasDoc = [];\n }\n\n if (self.$deltas.length > 0) {\n undoManager.execute({\n action: \"aceupdate\",\n args: [self.$deltas, self],\n merge: self.mergeUndoDeltas\n });\n }\n self.mergeUndoDeltas = false;\n self.$deltas = [];\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n };\n this.markUndoGroup = function() {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n \n this.$defaultUndoManager = {\n undo: function() {},\n redo: function() {},\n reset: function() {}\n };\n this.getUndoManager = function() {\n return this.$undoManager || this.$defaultUndoManager;\n };\n this.getTabString = function() {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n } else {\n return \"\\t\";\n }\n };\n this.setUseSoftTabs = function(val) {\n this.setOption(\"useSoftTabs\", val);\n };\n this.getUseSoftTabs = function() {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n this.setTabSize = function(tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n this.getTabSize = function() {\n return this.$tabSize;\n };\n this.isTabStop = function(position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n this.getNavigateWithinSoftTabs = function() {\n return this.$navigateWithinSoftTabs;\n };\n\n this.$overwrite = false;\n this.setOverwrite = function(overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n this.getOverwrite = function() {\n return this.$overwrite;\n };\n this.toggleOverwrite = function() {\n this.setOverwrite(!this.$overwrite);\n };\n this.addGutterDecoration = function(row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n this.removeGutterDecoration = function(row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n this.getBreakpoints = function() {\n return this.$breakpoints;\n };\n this.setBreakpoints = function(rows) {\n this.$breakpoints = [];\n for (var i=0; i 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column-1, column+1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n\n var start = column;\n if (start > 0) {\n do {\n start--;\n }\n while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n\n return new Range(row, start, row, end);\n };\n this.getAWordRange = function(row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n this.setNewLineMode = function(newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n this.getNewLineMode = function() {\n return this.doc.getNewLineMode();\n };\n this.setUseWorker = function(useWorker) { this.setOption(\"useWorker\", useWorker); };\n this.getUseWorker = function() { return this.$useWorker; };\n this.onReloadTokenizer = function(e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n\n this.$modes = {};\n this.$mode = null;\n this.$modeId = null;\n this.setMode = function(mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n } else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function(m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n } else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n\n this.$onChangeMode = function(mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode) \n return;\n\n this.$mode = mode;\n\n this.$stopWorker();\n\n if (this.$useWorker)\n this.$startWorker();\n\n var tokenizer = mode.getTokenizer();\n\n if(tokenizer.addEventListener !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.addEventListener(\"update\", onReloadTokenizer);\n }\n\n if (!this.bgTokenizer) {\n this.bgTokenizer = new BackgroundTokenizer(tokenizer);\n var _self = this;\n this.bgTokenizer.addEventListener(\"update\", function(e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n } else {\n this.bgTokenizer.setTokenizer(tokenizer);\n }\n\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n\n \n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\");\n }\n };\n\n this.$stopWorker = function() {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n\n this.$startWorker = function() {\n try {\n this.$worker = this.$mode.createWorker(this);\n } catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n this.getMode = function() {\n return this.$mode;\n };\n\n this.$scrollTop = 0;\n this.setScrollTop = function(scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n this.getScrollTop = function() {\n return this.$scrollTop;\n };\n\n this.$scrollLeft = 0;\n this.setScrollLeft = function(scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n this.getScrollLeft = function() {\n return this.$scrollLeft;\n };\n this.getScreenWidth = function() {\n this.$computeWidth();\n if (this.lineWidgets) \n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n \n this.getLineWidgetMaxWidth = function() {\n if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function(w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n\n this.$computeWidth = function(force) {\n if (this.$modified || force) {\n this.$modified = false;\n\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n this.getLine = function(row) {\n return this.doc.getLine(row);\n };\n this.getLines = function(firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n this.getLength = function() {\n return this.doc.getLength();\n };\n this.getTextRange = function(range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n this.insert = function(position, text) {\n return this.doc.insert(position, text);\n };\n this.remove = function(range) {\n return this.doc.remove(range);\n };\n this.removeFullLines = function(firstRow, lastRow){\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n this.undoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n var lastUndoRange = null;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.group == \"doc\") {\n this.doc.revertDeltas(delta.deltas);\n lastUndoRange =\n this.$getUndoSelection(delta.deltas, true, lastUndoRange);\n } else {\n delta.deltas.forEach(function(foldDelta) {\n this.addFolds(foldDelta.folds);\n }, this);\n }\n }\n this.$fromUndo = false;\n lastUndoRange &&\n this.$undoSelect &&\n !dontSelect &&\n this.selection.setSelectionRange(lastUndoRange);\n return lastUndoRange;\n };\n this.redoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n var lastUndoRange = null;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.group == \"doc\") {\n this.doc.applyDeltas(delta.deltas);\n lastUndoRange =\n this.$getUndoSelection(delta.deltas, false, lastUndoRange);\n }\n }\n this.$fromUndo = false;\n lastUndoRange &&\n this.$undoSelect &&\n !dontSelect &&\n this.selection.setSelectionRange(lastUndoRange);\n return lastUndoRange;\n };\n this.setUndoSelect = function(enable) {\n this.$undoSelect = enable;\n };\n\n this.$getUndoSelection = function(deltas, isUndo, lastUndoRange) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n\n var delta = deltas[0];\n var range, point;\n var lastDeltaIsInsert = false;\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n lastDeltaIsInsert = true;\n } else {\n range = Range.fromPoints(delta.start, delta.start);\n lastDeltaIsInsert = false;\n }\n\n for (var i = 1; i < deltas.length; i++) {\n delta = deltas[i];\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n lastDeltaIsInsert = true;\n } else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n lastDeltaIsInsert = false;\n }\n }\n if (lastUndoRange != null) {\n if (Range.comparePoints(lastUndoRange.start, range.start) === 0) {\n lastUndoRange.start.column += range.end.column - range.start.column;\n lastUndoRange.end.column += range.end.column - range.start.column;\n }\n\n var cmp = lastUndoRange.compareRange(range);\n if (cmp == 1) {\n range.setStart(lastUndoRange.start);\n } else if (cmp == -1) {\n range.setEnd(lastUndoRange.end);\n }\n }\n\n return range;\n };\n this.replace = function(range, text) {\n return this.doc.replace(range, text);\n };\n this.moveText = function(fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function(x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n\n return toRange;\n };\n this.indentRows = function(startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row=startRow; row<=endRow; row++)\n this.doc.insertInLine({row: row, column: 0}, indentString);\n };\n this.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n } else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n\n this.$moveLines = function(firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0) return 0;\n var diff = row-firstRow;\n } else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength()-1) return 0;\n var diff = row-lastRow;\n } else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function(x){\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n \n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow+diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n this.moveLinesUp = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n this.moveLinesDown = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n this.duplicateLines = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n\n\n this.$clipRowToDocument = function(row) {\n return Math.max(0, Math.min(row, this.doc.getLength()-1));\n };\n\n this.$clipColumnToRow = function(row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n\n\n this.$clipPositionToDocument = function(row, column) {\n column = Math.max(0, column);\n\n if (row < 0) {\n row = 0;\n column = 0;\n } else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len-1).length;\n } else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n\n return {\n row: row,\n column: column\n };\n };\n\n this.$clipRangeToDocument = function(range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n } else {\n range.start.column = this.$clipColumnToRow(\n range.start.row,\n range.start.column\n );\n }\n\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n } else {\n range.end.column = this.$clipColumnToRow(\n range.end.row,\n range.end.column\n );\n }\n return range;\n };\n this.$wrapLimit = 80;\n this.$useWrapMode = false;\n this.$wrapLimitRange = {\n min : null,\n max : null\n };\n this.setUseWrapMode = function(useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n\n this._signal(\"changeWrapMode\");\n }\n };\n this.getUseWrapMode = function() {\n return this.$useWrapMode;\n };\n this.setWrapLimitRange = function(min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n this.adjustWrapLimit = function(desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = {min: $printMargin, max: $printMargin};\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n\n this.$constrainWrapLimit = function(wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n\n return wrapLimit;\n };\n this.getWrapLimit = function() {\n return this.$wrapLimit;\n };\n this.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n this.getWrapLimitRange = function() {\n return {\n min : this.$wrapLimitRange.min,\n max : this.$wrapLimitRange.max\n };\n };\n\n this.$updateInternalDataOnChange = function(delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n \n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n\n lastRow = firstRow;\n } else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n } else\n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n } else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n\n return removedFolds;\n };\n\n this.$updateRowLengthCache = function(firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n\n this.$updateWrapData = function(firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row ++;\n } else {\n tokens = [];\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(\n placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n } else {\n walkTokens = this.$getDisplayTokens(\n lines[row].substring(lastColumn, column),\n tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this),\n foldLine.end.row,\n lines[foldLine.end.row].length + 1\n );\n\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n var CHAR = 1,\n CHAR_EXT = 2,\n PLACEHOLDER_START = 3,\n PLACEHOLDER_BODY = 4,\n PUNCTUATION = 9,\n SPACE = 10,\n TAB = 11,\n TAB_SPACE = 12;\n\n\n this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n\n var isCode = this.$wrapAsCode;\n\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var displayed = tokens.slice(lastSplit, screenPos);\n var len = displayed.length;\n displayed.join(\"\")\n .replace(/12/g, function() {\n len -= 1;\n })\n .replace(/2/g, function() {\n len -= 1;\n });\n\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split --;\n }\n } else {\n while (split > minSplit && tokens[split] < SPACE) {\n split --;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n this.$getDisplayTokens = function(str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n } else if((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n } else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n } else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n\n return [screenColumn, column];\n };\n\n this.lineWidgets = null;\n this.getRowLength = function(row) {\n if (this.lineWidgets)\n var h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n this.getRowLineCount = function(row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n } else {\n return this.$wrapData[row].length + 1;\n }\n };\n\n this.getRowWrapIndent = function(screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n } else {\n return 0;\n }\n };\n this.getScreenLastRowColumn = function(screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n this.getDocumentLastRowColumn = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n this.getRowSplitData = function(row) {\n if (!this.$useWrapMode) {\n return undefined;\n } else {\n return this.$wrapData[row];\n }\n };\n this.getScreenTabSize = function(screenColumn) {\n return this.$tabSize - screenColumn % this.$tabSize;\n };\n\n\n this.screenToDocumentRow = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n\n\n this.screenToDocumentColumn = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n this.screenToDocumentPosition = function(screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return {row: 0, column: 0};\n\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n } else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row+1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n } else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n } else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if(splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n\n return {row: docRow, column: docColumn};\n };\n this.documentToScreenPosition = function(docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n\n docRow = pos.row;\n docColumn = pos.column;\n\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n\n var rowEnd, row = 0;\n\n\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ?foldLine.start.row :Infinity;\n\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ?foldLine.start.row :Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n\n screenRow += this.getRowLength(row);\n row = rowEnd;\n\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n } else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow ++;\n screenRowOffset++;\n }\n textLine = textLine.substring(\n wrapRow[screenRowOffset - 1] || 0, textLine.length\n );\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n this.documentToScreenColumn = function(row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n this.documentToScreenRow = function(docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n this.getScreenLength = function() {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n } else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row :Infinity;\n\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row ++;\n if (row > foldStart) {\n row = fold.end.row+1;\n fold = this.$foldData[i++];\n foldStart = fold ?fold.start.row :Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n\n return screenRows;\n };\n this.$setFontMetrics = function(fm) {\n if (!this.$enableVarChar) return;\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n \n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n } else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n \n return [screenColumn, column];\n };\n };\n \n this.destroy = function() {\n if (this.bgTokenizer) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer = null;\n }\n this.$stopWorker();\n };\n\n this.isFullWidth = isFullWidth;\n function isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n }\n\n}).call(EditSession.prototype);\n\nacequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nacequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\n\n\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function(value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n } else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function() {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n }, \n wrapMethod: {\n set: function(val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$modified = true;\n this.$resetRowCache(0);\n this.$updateWrapData(0, this.getLength() - 1);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: { initialValue: true },\n firstLineNumber: {\n set: function() {this._signal(\"changeBreakpoint\");},\n initialValue: 1\n },\n useWorker: {\n set: function(useWorker) {\n this.$useWorker = useWorker;\n\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: {initialValue: true},\n tabSize: {\n set: function(tabSize) {\n if (isNaN(tabSize) || this.$tabSize === tabSize) return;\n\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: {initialValue: false},\n overwrite: {\n set: function(val) {this._signal(\"changeOverwrite\");},\n initialValue: false\n },\n newLineMode: {\n set: function(val) {this.doc.setNewLineMode(val);},\n get: function() {return this.doc.getNewLineMode();},\n handlesSet: true\n },\n mode: {\n set: function(val) { this.setMode(val); },\n get: function() { return this.$modeId; }\n }\n});\n\nexports.EditSession = EditSession;\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"./lib/lang\");\nvar oop = acequire(\"./lib/oop\");\nvar Range = acequire(\"./range\").Range;\n\nvar Search = function() {\n this.$options = {};\n};\n\n(function() {\n this.set = function(options) {\n oop.mixin(this.$options, options);\n return this;\n };\n this.getOptions = function() {\n return lang.copyObject(this.$options);\n };\n this.setOptions = function(options) {\n this.$options = options;\n };\n this.find = function(session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n\n var firstRange = null;\n iterator.forEach(function(sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)\n ) {\n firstRange = null;\n return false;\n }\n\n return true;\n });\n\n return firstRange;\n };\n this.findAll = function(session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n \n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n \n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex\n ) {\n continue;\n }\n ranges.push(prevRange = new Range(\n row, startIndex, row + len - 1, endIndex\n ));\n if (len > 2)\n row = row + len - 2;\n }\n } else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.start.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)\n i++;\n\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)\n j--;\n \n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n\n return ranges;\n };\n this.replace = function(input, replacement) {\n var options = this.$options;\n\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n\n if (!re)\n return;\n\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n \n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--; ) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n \n return replacement;\n };\n\n this.$assembleRegExp = function(options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n\n var needle = options.needle;\n\n if (!options.needle)\n return options.re = false;\n\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n\n try {\n var re = new RegExp(needle, modifier);\n } catch(e) {\n re = false;\n }\n return options.re = re;\n };\n\n this.$assembleMultilineRegExp = function(needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++) try {\n re.push(new RegExp(parts[i], modifier));\n } catch(e) {\n return false;\n }\n return re;\n };\n\n this.$matchIterator = function(session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n \n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n\n if (backwards) {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n \n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function(row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0) return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1) return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset) return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function(row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length) break;\n re.lastIndex = last += 1;\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function(row, startIndex, callback) {\n var line = session.getLine(row);\n var m;\n var last = startIndex;\n re.lastIndex = startIndex;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row,last + length))\n return true;\n if (!length) {\n re.lastIndex = last += 1;\n if (last >= line.length) return false;\n }\n }\n };\n }\n return {forEach: forEach};\n };\n\n}).call(Search.prototype);\n\nfunction addWordBoundary(needle, options) {\n function wordBoundary(c) {\n if (/\\w/.test(c) || options.regExp) return \"\\\\b\";\n return \"\";\n }\n return wordBoundary(needle[0]) + needle\n + wordBoundary(needle[needle.length - 1]);\n}\n\nexports.Search = Search;\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar keyUtil = acequire(\"../lib/keys\");\nvar useragent = acequire(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\n\nfunction HashHandler(config, platform) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = true;\n}\n\nfunction MultiHashHandler(config, platform) {\n HashHandler.call(this, config, platform);\n this.$singleCommand = false;\n}\n\nMultiHashHandler.prototype = HashHandler.prototype;\n\n(function() {\n \n\n this.addCommand = function(command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n\n this.commands[command.name] = command;\n\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n\n this.removeCommand = function(command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n } else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n\n this.bindKey = function(key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({exec: command, bindKey: key, name: command.name || key});\n \n key.split(\"|\").forEach(function(keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function(keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n \n function getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position\n || (command.isDefault ? -100 : 0);\n }\n this._addCommandToBinding = function(keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n } else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n } else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n } else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n\n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n\n this.addCommands = function(commands) {\n commands && Object.keys(commands).forEach(function(name) {\n var command = commands[name];\n if (!command)\n return;\n \n if (typeof command === \"string\")\n return this.bindKey(command, name);\n\n if (typeof command === \"function\")\n command = { exec: command };\n\n if (typeof command !== \"object\")\n return;\n\n if (!command.name)\n command.name = name;\n\n this.addCommand(command);\n }, this);\n };\n\n this.removeCommands = function(commands) {\n Object.keys(commands).forEach(function(name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n\n this.bindKeys = function(keyList) {\n Object.keys(keyList).forEach(function(key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n\n this._buildKeyHash = function(command) {\n this.bindKey(command.bindKey, command);\n };\n this.parseKeys = function(keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x;});\n var key = parts.pop();\n\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return {key: key, hashId: -1};\n else if (parts.length == 1 && parts[0] == \"shift\")\n return {key: key.toUpperCase(), hashId: -1};\n\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return {key: key, hashId: hashId};\n };\n\n this.findKeyCommand = function findKeyCommand(hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n\n this.handleKeyboard = function(data, hashId, keyString, keyCode) {\n if (keyCode < 0) return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n \n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return {command: \"null\"};\n }\n }\n \n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return {command: command};\n };\n \n this.getStatusText = function(editor, data) {\n return data.$keyChain || \"\";\n };\n\n}).call(HashHandler.prototype);\n\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar MultiHashHandler = acequire(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar CommandManager = function(platform, commands) {\n MultiHashHandler.call(this, commands, platform);\n this.byName = this.commands;\n this.setDefaultHandler(\"exec\", function(e) {\n return e.command.exec(e.editor, e.args || {});\n });\n};\n\noop.inherits(CommandManager, MultiHashHandler);\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.exec = function(command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--; ) {\n if (this.exec(command[i], editor, args)) return true;\n }\n return false;\n }\n\n if (typeof command === \"string\")\n command = this.commands[command];\n\n if (!command)\n return false;\n\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n\n if (command.isAvailable && !command.isAvailable(editor))\n return false;\n\n var e = {editor: editor, command: command, args: args};\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n\n return e.returnValue === false ? false : true;\n };\n\n this.toggleRecording = function(editor) {\n if (this.$inReplay)\n return;\n\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.removeEventListener(\"exec\", this.$addCommandToMacro);\n\n if (!this.macro.length)\n this.macro = this.oldMacro;\n\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function(e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n\n this.replay = function(editor) {\n if (this.$inReplay || !this.macro)\n return;\n\n if (this.recording)\n return this.toggleRecording(editor);\n\n try {\n this.$inReplay = true;\n this.macro.forEach(function(x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n } finally {\n this.$inReplay = false;\n }\n };\n\n this.trimMacro = function(m) {\n return m.map(function(x){\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n\n}).call(CommandManager.prototype);\n\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar lang = acequire(\"../lib/lang\");\nvar config = acequire(\"../config\");\nvar Range = acequire(\"../range\").Range;\n\nfunction bindKey(win, mac) {\n return {win: win, mac: mac};\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/settings_menu\", function(module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n}, {\n name: \"goToNextError\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/error_marker\", function(module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"goToPreviousError\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/error_marker\", function(module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selectall\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function(editor) { editor.selectAll(); },\n readOnly: true\n}, {\n name: \"centerselection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function(editor) { editor.centerSelection(); },\n readOnly: true\n}, {\n name: \"gotoline\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function(editor) {\n var line = parseInt(prompt(\"Enter line number:\"), 10);\n if (!isNaN(line)) {\n editor.gotoLine(line);\n }\n },\n readOnly: true\n}, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function(editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function(editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleFoldWidget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleParentFoldWidget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldall\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function(editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldOther\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function(editor) { \n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfoldall\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function(editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findnext\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function(editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findprevious\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function(editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"selectOrFindNext\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function(editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext(); \n },\n readOnly: true\n}, {\n name: \"selectOrFindPrevious\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function(editor) { \n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n}, {\n name: \"find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor);});\n },\n readOnly: true\n}, {\n name: \"overwrite\",\n bindKey: \"Insert\",\n exec: function(editor) { editor.toggleOverwrite(); },\n readOnly: true\n}, {\n name: \"selecttostart\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function(editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotostart\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function(editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectup\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function(editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golineup\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function(editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttoend\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function(editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotoend\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function(editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectdown\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function(editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golinedown\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function(editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordleft\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function(editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordleft\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function(editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolinestart\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolinestart\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function(editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectleft\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function(editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoleft\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function(editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordright\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordright\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function(editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolineend\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolineend\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function(editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectright\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoright\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function(editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectpagedown\",\n bindKey: \"Shift-PageDown\",\n exec: function(editor) { editor.selectPageDown(); },\n readOnly: true\n}, {\n name: \"pagedown\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function(editor) { editor.scrollPageDown(); },\n readOnly: true\n}, {\n name: \"gotopagedown\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function(editor) { editor.gotoPageDown(); },\n readOnly: true\n}, {\n name: \"selectpageup\",\n bindKey: \"Shift-PageUp\",\n exec: function(editor) { editor.selectPageUp(); },\n readOnly: true\n}, {\n name: \"pageup\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function(editor) { editor.scrollPageUp(); },\n readOnly: true\n}, {\n name: \"gotopageup\",\n bindKey: \"PageUp\",\n exec: function(editor) { editor.gotoPageUp(); },\n readOnly: true\n}, {\n name: \"scrollup\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"scrolldown\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"selectlinestart\",\n bindKey: \"Shift-Home\",\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectlineend\",\n bindKey: \"Shift-End\",\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"togglerecording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function(editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n}, {\n name: \"replaymacro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function(editor) { editor.commands.replay(editor); },\n readOnly: true\n}, {\n name: \"jumptomatching\",\n bindKey: bindKey(\"Ctrl-P\", \"Ctrl-P\"),\n exec: function(editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selecttomatching\",\n bindKey: bindKey(\"Ctrl-Shift-P\", \"Ctrl-Shift-P\"),\n exec: function(editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"expandToMatching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function(editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"passKeysToBrowser\",\n bindKey: bindKey(null, null),\n exec: function() {},\n passEvent: true,\n readOnly: true\n}, {\n name: \"copy\",\n exec: function(editor) {\n },\n readOnly: true\n},\n{\n name: \"cut\",\n exec: function(editor) {\n var range = editor.getSelectionRange();\n editor._emit(\"cut\", range);\n\n if (!editor.selection.isEmpty()) {\n editor.session.remove(range);\n editor.clearSelection();\n }\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"paste\",\n exec: function(editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n}, {\n name: \"removeline\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function(editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"duplicateSelection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function(editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"sortlines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function(editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"togglecomment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function(editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"toggleBlockComment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function(editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"modifyNumberUp\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function(editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"modifyNumberDown\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function(editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor, true);});\n }\n}, {\n name: \"undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function(editor) { editor.undo(); }\n}, {\n name: \"redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function(editor) { editor.redo(); }\n}, {\n name: \"copylinesup\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function(editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesup\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function(editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"copylinesdown\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function(editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesdown\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function(editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"del\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function(editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"backspace\",\n bindKey: bindKey(\n \"Shift-Backspace|Backspace\",\n \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"\n ),\n exec: function(editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"cut_or_delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function(editor) { \n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n } else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestart\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function(editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineend\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function(editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestarthard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineendhard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordleft\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function(editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordright\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function(editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function(editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockoutdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockindent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function(editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"insertstring\",\n exec: function(editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"inserttext\",\n exec: function(editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"splitline\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function(editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"transposeletters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function(editor) { editor.transposeLetters(); },\n multiSelectAction: function(editor) {editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"touppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function(editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"tolowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function(editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"expandtoline\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function(editor) {\n var range = editor.selection.getRange();\n\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"joinlines\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n } else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n}, {\n name: \"invertSelection\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n } else {\n newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n\n editor.exitMultiSelectMode();\n editor.clearSelection();\n\n for(var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n}];\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./lib/fixoldbrowsers\");\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar lang = acequire(\"./lib/lang\");\nvar useragent = acequire(\"./lib/useragent\");\nvar TextInput = acequire(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = acequire(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = acequire(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = acequire(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = acequire(\"./edit_session\").EditSession;\nvar Search = acequire(\"./search\").Search;\nvar Range = acequire(\"./range\").Range;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = acequire(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = acequire(\"./commands/default_commands\").commands;\nvar config = acequire(\"./config\");\nvar TokenIterator = acequire(\"./token_iterator\").TokenIterator;\nvar Editor = function(renderer, session) {\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n\n this.keyBinding = new KeyBinding(this);\n\n this.$blockScrolling = 0;\n this.$search = new Search().set({\n wrap: true\n });\n\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n\n this.$initOperationListeners();\n \n this._$emitInputEvent = lang.delayedCall(function() {\n this._signal(\"input\", {});\n if (this.session && this.session.bgTokenizer)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n \n this.on(\"change\", function(_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n\n this.setSession(session || new EditSession(\"\"));\n config.resetOptions(this);\n config._signal(\"editor\", this);\n};\n\nEditor.$uid = 0;\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$initOperationListeners = function() {\n function last(a) {return a[a.length - 1];}\n\n this.selections = [];\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this));\n\n this.on(\"change\", function() {\n this.curOp || this.startOperation();\n this.curOp.docChanged = true;\n }.bind(this), true);\n\n this.on(\"changeSelection\", function() {\n this.curOp || this.startOperation();\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n\n this.curOp = null;\n this.prevOp = {};\n this.startOperation = function(commadEvent) {\n if (this.curOp) {\n if (!commadEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commadEvent) {\n this.previousCommand = null;\n commadEvent = {};\n }\n\n this.$opResetTimer.schedule();\n this.curOp = {\n command: commadEvent.command || {},\n args: commadEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n if (this.curOp.command.name && this.curOp.command.scrollIntoView !== undefined)\n this.$blockScrolling++;\n };\n\n this.endOperation = function(e) {\n if (this.curOp) {\n if (e && e.returnValue === false)\n return this.curOp = null;\n this._signal(\"beforeEndOperation\");\n var command = this.curOp.command;\n if (command.name && this.$blockScrolling > 0)\n this.$blockScrolling--;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n \n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n this.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\n this.$historyTracker = function(e) {\n if (!this.$mergeUndoDeltas)\n return;\n\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n\n this.mergeNextCommand = true;\n } else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n\n if (\n this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000\n ) {\n shouldMerge = false; // the sequence is too long\n }\n\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n this.setKeyboardHandler = function(keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function(module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n } else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n this.getKeyboardHandler = function() {\n return this.keyBinding.getKeyboardHandler();\n };\n this.setSession = function(session) {\n if (this.session == session)\n return;\n if (this.curOp) this.endOperation();\n this.curOp = {};\n\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n \n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n \n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n \n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n \n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n \n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n \n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n \n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n \n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n \n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n \n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n \n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n \n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n \n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n \n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n \n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n \n this.onChangeMode();\n \n this.$blockScrolling += 1;\n this.onCursorChange();\n this.$blockScrolling -= 1;\n \n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n } else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n \n this.curOp = null;\n \n oldSession && oldSession._signal(\"changeEditor\", {oldEditor: this});\n session && session._signal(\"changeEditor\", {editor: this});\n\n if (session && session.bgTokenizer)\n session.bgTokenizer.scheduleStart();\n };\n this.getSession = function() {\n return this.session;\n };\n this.setValue = function(val, cursorPos) {\n this.session.doc.setValue(val);\n\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n\n return val;\n };\n this.getValue = function() {\n return this.session.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.resize = function(force) {\n this.renderer.onResize(force);\n };\n this.setTheme = function(theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n this.getTheme = function() {\n return this.renderer.getTheme();\n };\n this.setStyle = function(style) {\n this.renderer.setStyle(style);\n };\n this.unsetStyle = function(style) {\n this.renderer.unsetStyle(style);\n };\n this.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container, \"fontSize\");\n };\n this.setFontSize = function(size) {\n this.setOption(\"fontSize\", size);\n };\n\n this.$highlightBrackets = function() {\n if (this.session.$bracketHighlight) {\n this.session.removeMarker(this.session.$bracketHighlight);\n this.session.$bracketHighlight = null;\n }\n\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function() {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n var pos = session.findMatchingBracket(self.getCursorPosition());\n if (pos) {\n var range = new Range(pos.row, pos.column, pos.row, pos.column + 1);\n } else if (session.$mode.getMatching) {\n var range = session.$mode.getMatching(self.session);\n }\n if (range)\n session.$bracketHighlight = session.addMarker(range, \"ace_bracket\", \"text\");\n }, 50);\n };\n this.$highlightTags = function() {\n if (this.$highlightTagPending)\n return;\n var self = this;\n this.$highlightTagPending = true;\n setTimeout(function() {\n self.$highlightTagPending = false;\n \n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n \n var pos = self.getCursorPosition();\n var iterator = new TokenIterator(self.session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n \n if (!token || !/\\b(?:tag-open|tag-name)/.test(token.type)) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n if (token.type.indexOf(\"tag-open\") != -1) {\n token = iterator.stepForward();\n if (!token)\n return;\n }\n \n var tag = token.value;\n var depth = 0;\n var prevToken = iterator.stepBackward();\n \n if (prevToken.value == '<'){\n do {\n prevToken = token;\n token = iterator.stepForward();\n \n if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) {\n if (prevToken.value === '<'){\n depth++;\n } else if (prevToken.value === '= 0);\n } else {\n do {\n token = prevToken;\n prevToken = iterator.stepBackward();\n \n if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) {\n if (prevToken.value === '<') {\n depth++;\n } else if (prevToken.value === ' 1))\n highlight = false;\n }\n\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n } else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n } else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n\n this.onSelectionChange = function(e) {\n var session = this.session;\n\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n } else {\n this.$updateHighlightActiveLine();\n }\n\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n\n this._signal(\"changeSelection\");\n };\n\n this.$getSelectionHighLightRegexp = function() {\n var session = this.session;\n\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n\n var startOuter = selection.start.column - 1;\n var endOuter = selection.end.column + 1;\n var line = session.getLine(selection.start.row);\n var lineCols = line.length;\n var needle = line.substring(Math.max(startOuter, 0),\n Math.min(endOuter, lineCols));\n if ((startOuter >= 0 && /^[\\w\\d]/.test(needle)) ||\n (endOuter <= lineCols && /[\\w\\d]$/.test(needle)))\n return;\n\n needle = line.substring(selection.start.column, selection.end.column);\n if (!/^[\\w\\d]+$/.test(needle))\n return;\n\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n\n return re;\n };\n\n\n this.onChangeFrontMarker = function() {\n this.renderer.updateFrontMarkers();\n };\n\n this.onChangeBackMarker = function() {\n this.renderer.updateBackMarkers();\n };\n\n\n this.onChangeBreakpoint = function() {\n this.renderer.updateBreakpoints();\n };\n\n this.onChangeAnnotation = function() {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n\n\n this.onChangeMode = function(e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n\n\n this.onChangeWrapLimit = function() {\n this.renderer.updateFull();\n };\n\n this.onChangeWrapMode = function() {\n this.renderer.onResize(true);\n };\n\n\n this.onChangeFold = function() {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n this.getSelectedText = function() {\n return this.session.getTextRange(this.getSelectionRange());\n };\n this.getCopyText = function() {\n var text = this.getSelectedText();\n this._signal(\"copy\", text);\n return text;\n };\n this.onCopy = function() {\n this.commands.exec(\"copy\", this);\n };\n this.onCut = function() {\n this.commands.exec(\"cut\", this);\n };\n this.onPaste = function(text, event) {\n var e = {text: text, event: event};\n this.commands.exec(\"paste\", this, e);\n };\n \n this.$handlePaste = function(e) {\n if (typeof e == \"string\") \n e = {text: e};\n this._signal(\"paste\", e);\n var text = e.text;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n this.insert(text);\n } else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n \n if (lines.length > ranges.length || lines.length < 2 || !lines[1])\n return this.commands.exec(\"insertstring\", this, text);\n \n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n this.session.remove(range);\n \n this.session.insert(range.start, lines[i]);\n }\n }\n };\n\n this.execCommand = function(command, args) {\n return this.commands.exec(command, this, args);\n };\n this.insert = function(text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n this.session.mergeUndoDeltas = false;\n this.$mergeNextCommand = false;\n }\n text = transform.text;\n\n }\n }\n \n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n var end = session.insert(cursor, text);\n\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(\n new Range(cursor.row, start + transform.selection[0],\n cursor.row, start + transform.selection[1]));\n } else { // Transform relative to the current row.\n this.selection.setSelectionRange(\n new Range(cursor.row + transform.selection[0],\n transform.selection[1],\n cursor.row + transform.selection[2],\n transform.selection[3]));\n }\n }\n\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n\n session.insert({row: cursor.row+1, column: 0}, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n };\n\n this.onTextInput = function(text) {\n this.keyBinding.onTextInput(text);\n };\n\n this.onCommandKey = function(e, hashId, keyCode) {\n this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n this.setOverwrite = function(overwrite) {\n this.session.setOverwrite(overwrite);\n };\n this.getOverwrite = function() {\n return this.session.getOverwrite();\n };\n this.toggleOverwrite = function() {\n this.session.toggleOverwrite();\n };\n this.setScrollSpeed = function(speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n this.getScrollSpeed = function() {\n return this.getOption(\"scrollSpeed\");\n };\n this.setDragDelay = function(dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n this.getDragDelay = function() {\n return this.getOption(\"dragDelay\");\n };\n this.setSelectionStyle = function(val) {\n this.setOption(\"selectionStyle\", val);\n };\n this.getSelectionStyle = function() {\n return this.getOption(\"selectionStyle\");\n };\n this.setHighlightActiveLine = function(shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n this.getHighlightActiveLine = function() {\n return this.getOption(\"highlightActiveLine\");\n };\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n this.setHighlightSelectedWord = function(shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n this.getHighlightSelectedWord = function() {\n return this.$highlightSelectedWord;\n };\n\n this.setAnimatedScroll = function(shouldAnimate){\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n\n this.getAnimatedScroll = function(){\n return this.renderer.getAnimatedScroll();\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.renderer.getShowInvisibles();\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n\n this.getDisplayIndentGuides = function() {\n return this.renderer.getDisplayIndentGuides();\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.renderer.getShowPrintMargin();\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.renderer.getPrintMarginColumn();\n };\n this.setReadOnly = function(readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n this.getReadOnly = function() {\n return this.getOption(\"readOnly\");\n };\n this.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n this.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n this.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n this.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n this.setShowFoldWidgets = function(show) {\n this.setOption(\"showFoldWidgets\", show);\n\n };\n this.getShowFoldWidgets = function() {\n return this.getOption(\"showFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n\n this.getFadeFoldWidgets = function() {\n return this.getOption(\"fadeFoldWidgets\");\n };\n this.remove = function(dir) {\n if (this.selection.isEmpty()){\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.removeWordRight = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeWordLeft = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineStart = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineEnd = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.splitLine = function() {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n this.transposeLetters = function() {\n if (!this.selection.isEmpty()) {\n return;\n }\n\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column-1);\n range = new Range(cursor.row, column-1, cursor.row, column+1);\n }\n else {\n swap = line.charAt(column-1) + line.charAt(column-2);\n range = new Range(cursor.row, column-2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n this.toLowerCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.toUpperCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.indent = function() {\n var session = this.session;\n var range = this.getSelectionRange();\n\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n } else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n \n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n } else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n this.blockIndent = function() {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n this.blockOutdent = function() {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n this.sortLines = function() {\n var rows = this.$getSelectedRows();\n var session = this.session;\n\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n\n lines.sort(function(a, b) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n return 0;\n });\n\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i-rows.first]);\n }\n };\n this.toggleCommentLines = function() {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n\n this.toggleBlockComment = function() {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n this.getNumberAt = function(row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if(m.index <= column && m.index+m[0].length >= column){\n var number = {\n value: m[0],\n start: m.index,\n end: m.index+m[0].length\n };\n return number;\n }\n }\n return null;\n };\n this.modifyNumber = function(amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column-1, row, column);\n\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n\n\n if(fp !== nr.end && column < fp){\n amount *= Math.pow(10, nr.end - column - 1);\n } else {\n amount *= Math.pow(10, nr.end - column);\n }\n\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length));\n\n }\n }\n };\n this.removeLines = function() {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n\n this.duplicateSelection = function() {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n } else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n\n sel.setSelectionRange(range, reverse);\n }\n };\n this.moveLinesDown = function() {\n this.$moveLines(1, false);\n };\n this.moveLinesUp = function() {\n this.$moveLines(-1, false);\n };\n this.moveText = function(range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n this.copyLinesUp = function() {\n this.$moveLines(-1, true);\n };\n this.copyLinesDown = function() {\n this.$moveLines(1, true);\n };\n this.$moveLines = function(dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1) moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n } else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n \n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff) ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1) rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy) diff = 0;\n totalDiff += diff;\n }\n \n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n this.$getSelectedRows = function(range) {\n range = (range || this.getSelectionRange()).collapseRows();\n\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n\n this.onCompositionStart = function(text) {\n this.renderer.showComposition(this.getCursorPosition());\n };\n\n this.onCompositionUpdate = function(text) {\n this.renderer.setCompositionText(text);\n };\n\n this.onCompositionEnd = function() {\n this.renderer.hideComposition();\n };\n this.getFirstVisibleRow = function() {\n return this.renderer.getFirstVisibleRow();\n };\n this.getLastVisibleRow = function() {\n return this.renderer.getLastVisibleRow();\n };\n this.isRowVisible = function(row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n this.isRowFullyVisible = function(row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n this.$getVisibleRowCount = function() {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n\n this.$moveByPage = function(dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n\n this.$blockScrolling++;\n if (select === true) {\n this.selection.$moveSelection(function(){\n this.moveCursorBy(rows, 0);\n });\n } else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n this.$blockScrolling--;\n\n var scrollTop = renderer.scrollTop;\n\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n\n renderer.animateScrolling(scrollTop);\n };\n this.selectPageDown = function() {\n this.$moveByPage(1, true);\n };\n this.selectPageUp = function() {\n this.$moveByPage(-1, true);\n };\n this.gotoPageDown = function() {\n this.$moveByPage(1, false);\n };\n this.gotoPageUp = function() {\n this.$moveByPage(-1, false);\n };\n this.scrollPageDown = function() {\n this.$moveByPage(1);\n };\n this.scrollPageUp = function() {\n this.$moveByPage(-1);\n };\n this.scrollToRow = function(row) {\n this.renderer.scrollToRow(row);\n };\n this.scrollToLine = function(line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n this.centerSelection = function() {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n this.getCursorPosition = function() {\n return this.selection.getCursor();\n };\n this.getCursorPositionScreen = function() {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n this.getSelectionRange = function() {\n return this.selection.getRange();\n };\n this.selectAll = function() {\n this.$blockScrolling += 1;\n this.selection.selectAll();\n this.$blockScrolling -= 1;\n };\n this.clearSelection = function() {\n this.selection.clearSelection();\n };\n this.moveCursorTo = function(row, column) {\n this.selection.moveCursorTo(row, column);\n };\n this.moveCursorToPosition = function(pos) {\n this.selection.moveCursorToPosition(pos);\n };\n this.jumpToMatching = function(select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var token = prevToken || iterator.stepForward();\n\n if (!token) return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n \n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token && token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n \n if (prevToken.value === '<') {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if(this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n\n this.selection.setSelectionRange(selection);\n this.$blockScrolling -= 1;\n\n return replaced;\n };\n\n this.$tryReplace = function(range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n } else {\n return null;\n }\n };\n this.getLastSearchOptions = function() {\n return this.$search.getOptions();\n };\n this.find = function(needle, options, animate) {\n if (!options)\n options = {};\n\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({needle: needle});\n }\n\n this.$search.set(options);\n if (!options.start)\n this.$search.set({start: range});\n\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n this.findNext = function(options, animate) {\n this.find({skipCurrent: true, backwards: false}, options, animate);\n };\n this.findPrevious = function(options, animate) {\n this.find(options, {skipCurrent: true, backwards: true}, animate);\n };\n\n this.revealRange = function(range, animate) {\n this.$blockScrolling += 1;\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n this.$blockScrolling -= 1;\n\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n this.undo = function() {\n this.$blockScrolling++;\n this.session.getUndoManager().undo();\n this.$blockScrolling--;\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.redo = function() {\n this.$blockScrolling++;\n this.session.getUndoManager().redo();\n this.$blockScrolling--;\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.destroy = function() {\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session) {\n this.session.destroy();\n }\n };\n this.setAutoScrollEditorIntoView = function(enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function() {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function() {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function() {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())\n ) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n } else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n } else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function(enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n\n\n this.$resetCursorStyle = function() {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n\n}).call(Editor.prototype);\n\n\n\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function(style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", {data: style});\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function() {this.$updateHighlightActiveLine();},\n initialValue: true\n },\n highlightSelectedWord: {\n set: function(shouldHighlight) {this.$onSelectionChange();},\n initialValue: true\n },\n readOnly: {\n set: function(readOnly) {\n this.$resetCursorStyle(); \n },\n initialValue: false\n },\n cursorStyle: {\n set: function(val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: {initialValue: true},\n wrapBehavioursEnabled: {initialValue: true},\n autoScrollEditorIntoView: {\n set: function(val) {this.setAutoScrollEditorIntoView(val);}\n },\n keyboardHandler: {\n set: function(val) { this.setKeyboardHandler(val); },\n get: function() { return this.keybindingId; },\n handlesSet: true\n },\n\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n showLineNumbers: \"renderer\",\n showGutter: \"renderer\",\n displayIndentGuides: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\n\nexports.Editor = Editor;\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\"], function(acequire, exports, module) {\n\"use strict\";\nvar UndoManager = function() {\n this.reset();\n};\n\n(function() {\n this.execute = function(options) {\n var deltaSets = options.args[0];\n this.$doc = options.args[1];\n if (options.merge && this.hasUndo()){\n this.dirtyCounter--;\n deltaSets = this.$undoStack.pop().concat(deltaSets);\n }\n this.$undoStack.push(deltaSets);\n this.$redoStack = [];\n if (this.dirtyCounter < 0) {\n this.dirtyCounter = NaN;\n }\n this.dirtyCounter++;\n };\n this.undo = function(dontSelect) {\n var deltaSets = this.$undoStack.pop();\n var undoSelectionRange = null;\n if (deltaSets) {\n undoSelectionRange = this.$doc.undoChanges(deltaSets, dontSelect);\n this.$redoStack.push(deltaSets);\n this.dirtyCounter--;\n }\n\n return undoSelectionRange;\n };\n this.redo = function(dontSelect) {\n var deltaSets = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSets) {\n redoSelectionRange =\n this.$doc.redoChanges(this.$deserializeDeltas(deltaSets), dontSelect);\n this.$undoStack.push(deltaSets);\n this.dirtyCounter++;\n }\n return redoSelectionRange;\n };\n this.reset = function() {\n this.$undoStack = [];\n this.$redoStack = [];\n this.dirtyCounter = 0;\n };\n this.hasUndo = function() {\n return this.$undoStack.length > 0;\n };\n this.hasRedo = function() {\n return this.$redoStack.length > 0;\n };\n this.markClean = function() {\n this.dirtyCounter = 0;\n };\n this.isClean = function() {\n return this.dirtyCounter === 0;\n };\n this.$serializeDeltas = function(deltaSets) {\n return cloneDeltaSetsObj(deltaSets, $serializeDelta);\n };\n this.$deserializeDeltas = function(deltaSets) {\n return cloneDeltaSetsObj(deltaSets, $deserializeDelta);\n };\n \n function $serializeDelta(delta){\n return {\n action: delta.action,\n start: delta.start,\n end: delta.end,\n lines: delta.lines.length == 1 ? null : delta.lines,\n text: delta.lines.length == 1 ? delta.lines[0] : null\n };\n }\n \n function $deserializeDelta(delta) {\n return {\n action: delta.action,\n start: delta.start,\n end: delta.end,\n lines: delta.lines || [delta.text]\n };\n }\n \n function cloneDeltaSetsObj(deltaSets_old, fnGetModifiedDelta) {\n var deltaSets_new = new Array(deltaSets_old.length);\n for (var i = 0; i < deltaSets_old.length; i++) {\n var deltaSet_old = deltaSets_old[i];\n var deltaSet_new = { group: deltaSet_old.group, deltas: new Array(deltaSet_old.length)};\n \n for (var j = 0; j < deltaSet_old.deltas.length; j++) {\n var delta_old = deltaSet_old.deltas[j];\n deltaSet_new.deltas[j] = fnGetModifiedDelta(delta_old);\n }\n \n deltaSets_new[i] = deltaSet_new;\n }\n return deltaSets_new;\n }\n \n}).call(UndoManager.prototype);\n\nexports.UndoManager = UndoManager;\n});\n\nace.define(\"ace/layer/gutter\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar oop = acequire(\"../lib/oop\");\nvar lang = acequire(\"../lib/lang\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar Gutter = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_gutter-layer\";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n \n this.gutterWidth = 0;\n\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n\n this.$cells = [];\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.setSession = function(session) {\n if (this.session)\n this.session.removeEventListener(\"change\", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on(\"change\", this.$updateAnnotations);\n };\n\n this.addGutterDecoration = function(row, className){\n if (window.console)\n console.warn && console.warn(\"deprecated use session.addGutterDecoration\");\n this.session.addGutterDecoration(row, className);\n };\n\n this.removeGutterDecoration = function(row, className){\n if (window.console)\n console.warn && console.warn(\"deprecated use session.removeGutterDecoration\");\n this.session.removeGutterDecoration(row, className);\n };\n\n this.setAnnotations = function(annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = {text: []};\n \n var annoText = annotation.text;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || \"\";\n\n if (rowInfo.text.indexOf(annoText) === -1)\n rowInfo.text.push(annoText);\n\n var type = annotation.type;\n if (type == \"error\")\n rowInfo.className = \" ace_error\";\n else if (type == \"warning\" && rowInfo.className != \" ace_error\")\n rowInfo.className = \" ace_warning\";\n else if (type == \"info\" && (!rowInfo.className))\n rowInfo.className = \" ace_info\";\n }\n };\n\n this.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n } else if (delta.action == 'remove') {\n this.$annotations.splice(firstRow, len + 1, null);\n } else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n\n this.update = function(config) {\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineNumber = 0;\n \n var gutterRenderer = session.gutterRenderer || this.$renderer;\n\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$cells.length > index + 1) {\n cell = this.$cells.pop();\n this.element.removeChild(cell.element);\n }\n break;\n }\n\n cell = this.$cells[++index];\n if (!cell) {\n cell = {element: null, textNode: null, foldWidget: null};\n cell.element = dom.createElement(\"div\");\n cell.textNode = document.createTextNode('');\n cell.element.appendChild(cell.textNode);\n this.element.appendChild(cell.element);\n this.$cells[index] = cell;\n }\n\n var className = \"ace_gutter-cell \";\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row])\n className += this.$annotations[row].className;\n if (cell.element.className != className)\n cell.element.className = className;\n\n var height = session.getRowLength(row) * config.lineHeight + \"px\";\n if (height != cell.element.style.height)\n cell.element.style.height = height;\n\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n\n if (c) {\n if (!cell.foldWidget) {\n cell.foldWidget = dom.createElement(\"span\");\n cell.element.appendChild(cell.foldWidget);\n }\n var className = \"ace_fold-widget ace_\" + c;\n if (c == \"start\" && row == foldStart && row < fold.end.row)\n className += \" ace_closed\";\n else\n className += \" ace_open\";\n if (cell.foldWidget.className != className)\n cell.foldWidget.className = className;\n\n var height = config.lineHeight + \"px\";\n if (cell.foldWidget.style.height != height)\n cell.foldWidget.style.height = height;\n } else {\n if (cell.foldWidget) {\n cell.element.removeChild(cell.foldWidget);\n cell.foldWidget = null;\n }\n }\n \n var text = lastLineNumber = gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber;\n if (text !== cell.textNode.data)\n cell.textNode.data = text;\n\n row++;\n }\n\n this.element.style.height = config.minHeight + \"px\";\n\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineNumber = session.getLength() + firstLineNumber;\n\n var gutterWidth = gutterRenderer \n ? gutterRenderer.getWidth(session, lastLineNumber, config)\n : lastLineNumber.toString().length * config.characterWidth;\n \n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._emit(\"changeGutterWidth\", gutterWidth);\n }\n };\n\n this.$fixedWidth = false;\n \n this.$showLineNumbers = true;\n this.$renderer = \"\";\n this.setShowLineNumbers = function(show) {\n this.$renderer = !show && {\n getWidth: function() {return \"\";},\n getText: function() {return \"\";}\n };\n };\n \n this.getShowLineNumbers = function() {\n return this.$showLineNumbers;\n };\n \n this.$showFoldWidgets = true;\n this.setShowFoldWidgets = function(show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n \n this.getShowFoldWidgets = function() {\n return this.$showFoldWidgets;\n };\n\n this.$computePadding = function() {\n if (!this.element.firstChild)\n return {left: 0, right: 0};\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = parseInt(style.paddingLeft) + 1 || 0;\n this.$padding.right = parseInt(style.paddingRight) || 0;\n return this.$padding;\n };\n\n this.getRegion = function(point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n\n}).call(Gutter.prototype);\n\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../range\").Range;\nvar dom = acequire(\"../lib/dom\");\n\nvar Marker = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n};\n\n(function() {\n\n this.$padding = 0;\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n this.setSession = function(session) {\n this.session = session;\n };\n \n this.setMarkers = function(markers) {\n this.markers = markers;\n };\n\n this.update = function(config) {\n if (!config) return;\n\n this.config = config;\n\n\n var html = [];\n for (var key in this.markers) {\n var marker = this.markers[key];\n\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty()) continue;\n\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + (this.session.$bidiHandler.isBidiRow(range.start.row)\n ? this.session.$bidiHandler.getPosLeft(range.start.column)\n : range.start.column * config.characterWidth);\n marker.renderer(html, range, left, top, config);\n } else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n } else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n } else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n } else {\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n this.drawBidiSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n } else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n }\n this.element.innerHTML = html.join(\"\");\n };\n\n this.$getTop = function(row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n\n function getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n }\n this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0; \n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var clazzModified = null;\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n clazzModified = clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end);\n\n if (this.session.$bidiHandler.isBidiRow(row)) {\n this.drawBidiSingleLineMarker(stringBuilder, lineRange, clazzModified,\n layerConfig, row == end ? 0 : 1, extraStyle);\n } else {\n this.drawSingleLineMarker(stringBuilder, lineRange, clazzModified,\n layerConfig, row == end ? 0 : 1, extraStyle);\n }\n }\n };\n this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height, top, left;\n extraStyle = extraStyle || \"\";\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n } else {\n height = config.lineHeight;\n top = this.$getTop(range.start.row, config);\n left = padding + range.start.column * config.characterWidth;\n stringBuilder.push(\n \"
\"\n );\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n } else {\n var width = range.end.column * config.characterWidth;\n height = config.lineHeight;\n top = this.$getTop(range.end.row, config);\n stringBuilder.push(\n \"
\"\n );\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n \n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n\n stringBuilder.push(\n \"
\"\n );\n };\n this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n\n stringBuilder.push(\n \"
\"\n );\n };\n this.drawBidiSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n\n selections.forEach(function(selection) {\n stringBuilder.push(\n \"
\"\n );\n });\n };\n\n this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n\n stringBuilder.push(\n \"
\"\n );\n };\n \n this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n\n stringBuilder.push(\n \"
\"\n );\n };\n\n}).call(Marker.prototype);\n\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar dom = acequire(\"../lib/dom\");\nvar lang = acequire(\"../lib/lang\");\nvar useragent = acequire(\"../lib/useragent\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar Text = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.EOF_CHAR = \"\\xB6\";\n this.EOL_CHAR_LF = \"\\xAC\";\n this.EOL_CHAR_CRLF = \"\\xa4\";\n this.EOL_CHAR = this.EOL_CHAR_LF;\n this.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\n this.SPACE_CHAR = \"\\xB7\";\n this.$padding = 0;\n\n this.$updateEolChar = function() {\n var EOL_CHAR = this.session.doc.getNewLineCharacter() == \"\\n\"\n ? this.EOL_CHAR_LF\n : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.element.style.padding = \"0 \" + padding + \"px\";\n };\n\n this.getLineHeight = function() {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n\n this.getCharacterWidth = function() {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n \n this.$setFontMetrics = function(measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function(e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n\n this.checkForSizeChanges = function() {\n this.$fontMetrics.checkForSizeChanges();\n };\n this.$pollSizeChanges = function() {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n this.setSession = function(session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n\n this.showInvisibles = false;\n this.setShowInvisibles = function(showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n\n this.showInvisibles = showInvisibles;\n this.$computeTabString();\n return true;\n };\n\n this.displayIndentGuides = true;\n this.setDisplayIndentGuides = function(display) {\n if (this.displayIndentGuides == display)\n return false;\n\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n\n this.$tabStrings = [];\n this.onChangeTabSize =\n this.$computeTabString = function() {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showInvisibles) {\n tabStr.push(\"\"\n + lang.stringRepeat(this.TAB_CHAR, i)\n + \"\");\n } else {\n tabStr.push(lang.stringRepeat(\" \", i));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = \"\";\n var tabClass = \"\";\n if (this.showInvisibles) {\n className += \" ace_invisible\";\n spaceClass = \" ace_invisible_space\";\n tabClass = \" ace_invisible_tab\";\n var spaceContent = lang.stringRepeat(this.SPACE_CHAR, this.tabSize);\n var tabContent = lang.stringRepeat(this.TAB_CHAR, this.tabSize);\n } else{\n var spaceContent = lang.stringRepeat(\" \", this.tabSize);\n var tabContent = spaceContent;\n }\n\n this.$tabStrings[\" \"] = \"\" + spaceContent + \"\";\n this.$tabStrings[\"\\t\"] = \"\" + tabContent + \"\";\n }\n };\n\n this.updateLines = function(config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n this.scrollLines(config);\n }\n this.config = config;\n\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n } else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx ++;\n }\n\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > last)\n break;\n\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n var html = [];\n this.$renderLine(\n html, row, !this.$useLineGroups(), row == foldStart ? foldLine : false\n );\n lineElement.style.height = config.lineHeight * this.session.getRowLength(row) + \"px\";\n lineElement.innerHTML = html.join(\"\");\n }\n row++;\n }\n };\n\n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n\n var el = this.element;\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n el.removeChild(el.firstChild);\n\n if (oldConfig.lastRow > config.lastRow)\n for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)\n el.removeChild(el.lastChild);\n\n if (config.firstRow < oldConfig.firstRow) {\n var fragment = this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1);\n if (el.firstChild)\n el.insertBefore(fragment, el.firstChild);\n else\n el.appendChild(fragment);\n }\n\n if (config.lastRow > oldConfig.lastRow) {\n var fragment = this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow);\n el.appendChild(fragment);\n }\n };\n\n this.$renderLinesFragment = function(config, firstRow, lastRow) {\n var fragment = this.element.ownerDocument.createDocumentFragment();\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var container = dom.createElement(\"div\");\n\n var html = [];\n this.$renderLine(html, row, false, row == foldStart ? foldLine : false);\n container.innerHTML = html.join(\"\");\n if (this.$useLineGroups()) {\n container.className = 'ace_line_group';\n fragment.appendChild(container);\n container.style.height = config.lineHeight * this.session.getRowLength(row) + \"px\";\n\n } else {\n while(container.firstChild)\n fragment.appendChild(container.firstChild);\n }\n\n row++;\n }\n return fragment;\n };\n\n this.update = function(config) {\n this.config = config;\n\n var html = [];\n var firstRow = config.firstRow, lastRow = config.lastRow;\n\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > lastRow)\n break;\n\n if (this.$useLineGroups())\n html.push(\"
\");\n\n this.$renderLine(html, row, false, row == foldStart ? foldLine : false);\n\n if (this.$useLineGroups())\n html.push(\"
\"); // end the line group\n\n row++;\n }\n this.element.innerHTML = html.join(\"\");\n };\n\n this.$textToken = {\n \"text\": true,\n \"rparen\": true,\n \"lparen\": true\n };\n\n this.$renderToken = function(stringBuilder, screenColumn, token, value) {\n var self = this;\n var replaceReg = /\\t|&|<|>|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF\\uFFF9-\\uFFFC])|[\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3000-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n var replaceFunc = function(c, a, b, tabIdx, idx4) {\n if (a) {\n return self.showInvisibles\n ? \"\" + lang.stringRepeat(self.SPACE_CHAR, c.length) + \"\"\n : c;\n } else if (c == \"&\") {\n return \"&\";\n } else if (c == \"<\") {\n return \"<\";\n } else if (c == \">\") {\n return \">\";\n } else if (c == \"\\t\") {\n var tabSize = self.session.getScreenTabSize(screenColumn + tabIdx);\n screenColumn += tabSize - 1;\n return self.$tabStrings[tabSize];\n } else if (c == \"\\u3000\") {\n var classToUse = self.showInvisibles ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n var space = self.showInvisibles ? self.SPACE_CHAR : \"\";\n screenColumn += 1;\n return \"\" + space + \"\";\n } else if (b) {\n return \"\" + self.SPACE_CHAR + \"\";\n } else {\n screenColumn += 1;\n return \"\" + c + \"\";\n }\n };\n\n var output = value.replace(replaceReg, replaceFunc);\n\n if (!this.$textToken[token.type]) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var style = \"\";\n if (token.type == \"fold\")\n style = \" style='width:\" + (token.value.length * this.config.characterWidth) + \"px;' \";\n stringBuilder.push(\"\", output, \"\");\n }\n else {\n stringBuilder.push(output);\n }\n return screenColumn + value.length;\n };\n\n this.renderIndentGuide = function(stringBuilder, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n stringBuilder.push(lang.stringRepeat(this.$tabStrings[\" \"], cols/this.tabSize));\n return value.substr(cols);\n } else if (value[0] == \"\\t\") {\n stringBuilder.push(lang.stringRepeat(this.$tabStrings[\"\\t\"], cols));\n return value.substr(cols);\n }\n return value;\n };\n\n this.$renderWrappedLine = function(stringBuilder, tokens, splits, onlyContents) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(stringBuilder, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n chars += value.length;\n } else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(\n stringBuilder, screenColumn,\n token, value.substring(0, splitChars - chars)\n );\n value = value.substring(splitChars - chars);\n chars = splitChars;\n\n if (!onlyContents) {\n stringBuilder.push(\"\",\n \"
\"\n );\n }\n\n stringBuilder.push(lang.stringRepeat(\"\\xa0\", splits.indent));\n\n split ++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(\n stringBuilder, screenColumn, token, value\n );\n }\n }\n }\n };\n\n this.$renderSimpleLine = function(stringBuilder, tokens) {\n var screenColumn = 0;\n var token = tokens[0];\n var value = token.value;\n if (this.displayIndentGuides)\n value = this.renderIndentGuide(stringBuilder, value);\n if (value)\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n for (var i = 1; i < tokens.length; i++) {\n token = tokens[i];\n value = token.value;\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n }\n };\n this.$renderLine = function(stringBuilder, row, onlyContents, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n\n\n if (!onlyContents) {\n stringBuilder.push(\n \"
\"\n );\n }\n\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length)\n this.$renderWrappedLine(stringBuilder, tokens, splits, onlyContents);\n else\n this.$renderSimpleLine(stringBuilder, tokens);\n }\n\n if (this.showInvisibles) {\n if (foldLine)\n row = foldLine.end.row;\n\n stringBuilder.push(\n \"\",\n row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR,\n \"\"\n );\n }\n if (!onlyContents)\n stringBuilder.push(\"
\");\n };\n\n this.$getFoldLineTokens = function(row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n\n col = from + value.length;\n idx += 1;\n }\n\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n } else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n\n var tokens = session.getTokens(row);\n foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n } else {\n if (isNewRow)\n tokens = session.getTokens(row);\n\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n\n return renderTokens;\n };\n\n this.$useLineGroups = function() {\n return this.session.getUseWrapMode();\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$measureNode)\n this.$measureNode.parentNode.removeChild(this.$measureNode);\n delete this.$measureNode;\n };\n\n}).call(Text.prototype);\n\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar dom = acequire(\"../lib/dom\");\nvar isIE8;\n\nvar Cursor = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n \n if (isIE8 === undefined)\n isIE8 = !(\"opacity\" in this.element.style);\n\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = (isIE8\n ? this.$updateVisibility\n : this.$updateOpacity).bind(this);\n};\n\n(function() {\n \n this.$updateVisibility = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.visibility = val ? \"\" : \"hidden\";\n };\n this.$updateOpacity = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.opacity = val ? \"\" : \"0\";\n };\n \n\n this.$padding = 0;\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n\n this.setSession = function(session) {\n this.session = session;\n };\n\n this.setBlinking = function(blinking) {\n if (blinking != this.isBlinking){\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n\n this.setBlinkInterval = function(blinkInterval) {\n if (blinkInterval != this.blinkInterval){\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n\n this.setSmoothBlinking = function(smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking && !isIE8) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.$updateCursors = (this.$updateOpacity).bind(this);\n this.restartTimer();\n }\n };\n\n this.addCursor = function() {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n\n this.removeCursor = function() {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n\n this.hideCursor = function() {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.showCursor = function() {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.restartTimer = function() {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n if (this.smoothBlinking) {\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n \n update(true);\n\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible)\n return;\n\n if (this.smoothBlinking) {\n setTimeout(function(){\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }.bind(this));\n }\n \n var blink = function(){\n this.timeoutId = setTimeout(function() {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n\n this.intervalId = setInterval(function() {\n update(true);\n blink();\n }, this.blinkInterval);\n\n blink();\n };\n\n this.getPixelPosition = function(position, onScreen) {\n if (!this.config || !this.session)\n return {left : 0, top : 0};\n\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n\n return {left : cursorLeft, top : cursorTop};\n };\n\n this.update = function(config) {\n this.config = config;\n\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n\n if (selections === undefined || selections.length === 0){\n selections = [{cursor: null}];\n }\n\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n\n var style = (this.cursors[cursorIndex++] || this.addCursor()).style;\n \n if (!this.drawCursor) {\n style.left = pixelPos.left + \"px\";\n style.top = pixelPos.top + \"px\";\n style.width = config.characterWidth + \"px\";\n style.height = config.lineHeight + \"px\";\n } else {\n this.drawCursor(style, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n \n this.drawCursor = null;\n\n this.$setOverwrite = function(overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n\n this.destroy = function() {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n\n}).call(Cursor.prototype);\n\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar event = acequire(\"./lib/event\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar ScrollBar = function(parent) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + this.classSuffix;\n\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.element.appendChild(this.inner);\n\n parent.appendChild(this.element);\n\n this.setVisible(false);\n this.skipEvent = false;\n\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n};\n\n(function() {\n oop.implement(this, EventEmitter);\n\n this.setVisible = function(isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n}).call(ScrollBar.prototype);\nvar VScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollTop = 0;\n this.scrollHeight = 0;\n renderer.$scrollbarWidth = \n this.width = dom.scrollbarWidth(parent.ownerDocument);\n this.inner.style.width =\n this.element.style.width = (this.width || 15) + 5 + \"px\";\n this.$minWidth = 0;\n};\n\noop.inherits(VScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-v';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", {data: this.scrollTop});\n }\n this.skipEvent = false;\n };\n this.getWidth = function() {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n this.setHeight = function(height) {\n this.element.style.height = height + \"px\";\n };\n this.setInnerHeight =\n this.setScrollHeight = function(height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n } else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n this.setScrollTop = function(scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n\n}).call(VScrollBar.prototype);\nvar HScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollLeft = 0;\n this.height = renderer.$scrollbarWidth;\n this.inner.style.height =\n this.element.style.height = (this.height || 15) + 5 + \"px\";\n};\n\noop.inherits(HScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-h';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", {data: this.scrollLeft});\n }\n this.skipEvent = false;\n };\n this.getHeight = function() {\n return this.isVisible ? this.height : 0;\n };\n this.setWidth = function(width) {\n this.element.style.width = width + \"px\";\n };\n this.setInnerWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollLeft = function(scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n\n}).call(HScrollBar.prototype);\n\n\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\n\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar event = acequire(\"./lib/event\");\n\n\nvar RenderLoop = function(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.window = win || window;\n};\n\n(function() {\n\n\n this.schedule = function(change) {\n this.changes = this.changes | change;\n if (!this.pending && this.changes) {\n this.pending = true;\n var _self = this;\n event.nextFrame(function() {\n _self.pending = false;\n var changes;\n while (changes = _self.changes) {\n _self.changes = 0;\n _self.onRender(changes);\n }\n }, this.window);\n }\n };\n\n}).call(RenderLoop.prototype);\n\nexports.RenderLoop = RenderLoop;\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\nvar oop = acequire(\"../lib/oop\");\nvar dom = acequire(\"../lib/dom\");\nvar lang = acequire(\"../lib/lang\");\nvar useragent = acequire(\"../lib/useragent\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\n\nvar CHAR_COUNT = 0;\n\nvar FontMetrics = exports.FontMetrics = function(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n \n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n \n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n \n \n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n \n if (!CHAR_COUNT)\n this.$testFractionalRect();\n this.$measureNode.innerHTML = lang.stringRepeat(\"X\", CHAR_COUNT);\n \n this.$characterSize = {width: 0, height: 0};\n this.checkForSizeChanges();\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n \n this.$characterSize = {width: 0, height: 0};\n \n this.$testFractionalRect = function() {\n var el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(el.style);\n el.style.width = \"0.2px\";\n document.documentElement.appendChild(el);\n var w = el.getBoundingClientRect().width;\n if (w > 0 && w < 1)\n CHAR_COUNT = 50;\n else\n CHAR_COUNT = 100;\n el.parentNode.removeChild(el);\n };\n \n this.$setMeasureNodeStyles = function(style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n } else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n\n this.checkForSizeChanges = function() {\n var size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", {data: size});\n }\n };\n\n this.$pollSizeChanges = function() {\n if (this.$pollSizeChangesTimer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = setInterval(function() {\n self.checkForSizeChanges();\n }, 500);\n };\n \n this.setPolling = function(val) {\n if (val) {\n this.$pollSizeChanges();\n } else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n\n this.$measureSizes = function() {\n if (CHAR_COUNT === 50) {\n var rect = null;\n try { \n rect = this.$measureNode.getBoundingClientRect();\n } catch(e) {\n rect = {width: 0, height:0 };\n }\n var size = {\n height: rect.height,\n width: rect.width / CHAR_COUNT\n };\n } else {\n var size = {\n height: this.$measureNode.clientHeight,\n width: this.$measureNode.clientWidth / CHAR_COUNT\n };\n }\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n\n this.$measureCharWidth = function(ch) {\n this.$main.innerHTML = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n \n this.getCharacterWidth = function(ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n\n}).call(FontMetrics.prototype);\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/config\",\"ace/lib/useragent\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar config = acequire(\"./config\");\nvar useragent = acequire(\"./lib/useragent\");\nvar GutterLayer = acequire(\"./layer/gutter\").Gutter;\nvar MarkerLayer = acequire(\"./layer/marker\").Marker;\nvar TextLayer = acequire(\"./layer/text\").Text;\nvar CursorLayer = acequire(\"./layer/cursor\").Cursor;\nvar HScrollBar = acequire(\"./scrollbar\").HScrollBar;\nvar VScrollBar = acequire(\"./scrollbar\").VScrollBar;\nvar RenderLoop = acequire(\"./renderloop\").RenderLoop;\nvar FontMetrics = acequire(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = \".ace_editor {\\\nposition: relative;\\\noverflow: hidden;\\\nfont: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\\\ndirection: ltr;\\\ntext-align: left;\\\n-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\\n}\\\n.ace_scroller {\\\nposition: absolute;\\\noverflow: hidden;\\\ntop: 0;\\\nbottom: 0;\\\nbackground-color: inherit;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncursor: text;\\\n}\\\n.ace_content {\\\nposition: absolute;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nmin-width: 100%;\\\n}\\\n.ace_dragging .ace_scroller:before{\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\nbottom: 0;\\\ncontent: '';\\\nbackground: rgba(250, 250, 250, 0.01);\\\nz-index: 1000;\\\n}\\\n.ace_dragging.ace_dark .ace_scroller:before{\\\nbackground: rgba(0, 0, 0, 0.01);\\\n}\\\n.ace_selecting, .ace_selecting * {\\\ncursor: text !important;\\\n}\\\n.ace_gutter {\\\nposition: absolute;\\\noverflow : hidden;\\\nwidth: auto;\\\ntop: 0;\\\nbottom: 0;\\\nleft: 0;\\\ncursor: default;\\\nz-index: 4;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\n}\\\n.ace_gutter-active-line {\\\nposition: absolute;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_scroller.ace_scroll-left {\\\nbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\\\n}\\\n.ace_gutter-cell {\\\npadding-left: 19px;\\\npadding-right: 6px;\\\nbackground-repeat: no-repeat;\\\n}\\\n.ace_gutter-cell.ace_error {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_warning {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_dark .ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_scrollbar {\\\nposition: absolute;\\\nright: 0;\\\nbottom: 0;\\\nz-index: 6;\\\n}\\\n.ace_scrollbar-inner {\\\nposition: absolute;\\\ncursor: text;\\\nleft: 0;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-v{\\\noverflow-x: hidden;\\\noverflow-y: scroll;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-h {\\\noverflow-x: scroll;\\\noverflow-y: hidden;\\\nleft: 0;\\\n}\\\n.ace_print-margin {\\\nposition: absolute;\\\nheight: 100%;\\\n}\\\n.ace_text-input {\\\nposition: absolute;\\\nz-index: 0;\\\nwidth: 0.5em;\\\nheight: 1em;\\\nopacity: 0;\\\nbackground: transparent;\\\n-moz-appearance: none;\\\nappearance: none;\\\nborder: none;\\\nresize: none;\\\noutline: none;\\\noverflow: hidden;\\\nfont: inherit;\\\npadding: 0 1px;\\\nmargin: 0 -1px;\\\ntext-indent: -1em;\\\n-ms-user-select: text;\\\n-moz-user-select: text;\\\n-webkit-user-select: text;\\\nuser-select: text;\\\nwhite-space: pre!important;\\\n}\\\n.ace_text-input.ace_composition {\\\nbackground: inherit;\\\ncolor: inherit;\\\nz-index: 1000;\\\nopacity: 1;\\\ntext-indent: 0;\\\n}\\\n.ace_layer {\\\nz-index: 1;\\\nposition: absolute;\\\noverflow: hidden;\\\nword-wrap: normal;\\\nwhite-space: pre;\\\nheight: 100%;\\\nwidth: 100%;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\npointer-events: none;\\\n}\\\n.ace_gutter-layer {\\\nposition: relative;\\\nwidth: auto;\\\ntext-align: right;\\\npointer-events: auto;\\\n}\\\n.ace_text-layer {\\\nfont: inherit !important;\\\n}\\\n.ace_cjk {\\\ndisplay: inline-block;\\\ntext-align: center;\\\n}\\\n.ace_cursor-layer {\\\nz-index: 4;\\\n}\\\n.ace_cursor {\\\nz-index: 4;\\\nposition: absolute;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nborder-left: 2px solid;\\\ntransform: translatez(0);\\\n}\\\n.ace_multiselect .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_slim-cursors .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_overwrite-cursors .ace_cursor {\\\nborder-left-width: 0;\\\nborder-bottom: 1px solid;\\\n}\\\n.ace_hidden-cursors .ace_cursor {\\\nopacity: 0.2;\\\n}\\\n.ace_smooth-blinking .ace_cursor {\\\n-webkit-transition: opacity 0.18s;\\\ntransition: opacity 0.18s;\\\n}\\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\\nposition: absolute;\\\nz-index: 3;\\\n}\\\n.ace_marker-layer .ace_selection {\\\nposition: absolute;\\\nz-index: 5;\\\n}\\\n.ace_marker-layer .ace_bracket {\\\nposition: absolute;\\\nz-index: 6;\\\n}\\\n.ace_marker-layer .ace_active-line {\\\nposition: absolute;\\\nz-index: 2;\\\n}\\\n.ace_marker-layer .ace_selected-word {\\\nposition: absolute;\\\nz-index: 4;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\n}\\\n.ace_line .ace_fold {\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\ndisplay: inline-block;\\\nheight: 11px;\\\nmargin-top: -2px;\\\nvertical-align: middle;\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\\nbackground-repeat: no-repeat, repeat-x;\\\nbackground-position: center center, top left;\\\ncolor: transparent;\\\nborder: 1px solid black;\\\nborder-radius: 2px;\\\ncursor: pointer;\\\npointer-events: auto;\\\n}\\\n.ace_dark .ace_fold {\\\n}\\\n.ace_fold:hover{\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_tooltip {\\\nbackground-color: #FFF;\\\nbackground-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));\\\nbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\\\nborder: 1px solid gray;\\\nborder-radius: 1px;\\\nbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\\ncolor: black;\\\nmax-width: 100%;\\\npadding: 3px 4px;\\\nposition: fixed;\\\nz-index: 999999;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\ncursor: default;\\\nwhite-space: pre;\\\nword-wrap: break-word;\\\nline-height: normal;\\\nfont-style: normal;\\\nfont-weight: normal;\\\nletter-spacing: normal;\\\npointer-events: none;\\\n}\\\n.ace_folding-enabled > .ace_gutter-cell {\\\npadding-right: 13px;\\\n}\\\n.ace_fold-widget {\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nmargin: 0 -12px 0 1px;\\\ndisplay: none;\\\nwidth: 11px;\\\nvertical-align: top;\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: center;\\\nborder-radius: 3px;\\\nborder: 1px solid transparent;\\\ncursor: pointer;\\\n}\\\n.ace_folding-enabled .ace_fold-widget {\\\ndisplay: inline-block; \\\n}\\\n.ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\\n}\\\n.ace_fold-widget:hover {\\\nborder: 1px solid rgba(0, 0, 0, 0.3);\\\nbackground-color: rgba(255, 255, 255, 0.2);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\\n}\\\n.ace_fold-widget:active {\\\nborder: 1px solid rgba(0, 0, 0, 0.4);\\\nbackground-color: rgba(0, 0, 0, 0.05);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\\n}\\\n.ace_dark .ace_fold-widget {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget:hover {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\nbackground-color: rgba(255, 255, 255, 0.1);\\\n}\\\n.ace_dark .ace_fold-widget:active {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\n}\\\n.ace_fold-widget.ace_invalid {\\\nbackground-color: #FFB4B4;\\\nborder-color: #DE5555;\\\n}\\\n.ace_fade-fold-widgets .ace_fold-widget {\\\n-webkit-transition: opacity 0.4s ease 0.05s;\\\ntransition: opacity 0.4s ease 0.05s;\\\nopacity: 0;\\\n}\\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\\n-webkit-transition: opacity 0.05s ease 0.05s;\\\ntransition: opacity 0.05s ease 0.05s;\\\nopacity:1;\\\n}\\\n.ace_underline {\\\ntext-decoration: underline;\\\n}\\\n.ace_bold {\\\nfont-weight: bold;\\\n}\\\n.ace_nobold .ace_bold {\\\nfont-weight: normal;\\\n}\\\n.ace_italic {\\\nfont-style: italic;\\\n}\\\n.ace_error-marker {\\\nbackground-color: rgba(255, 0, 0,0.2);\\\nposition: absolute;\\\nz-index: 9;\\\n}\\\n.ace_highlight-marker {\\\nbackground-color: rgba(255, 255, 0,0.2);\\\nposition: absolute;\\\nz-index: 8;\\\n}\\\n.ace_br1 {border-top-left-radius : 3px;}\\\n.ace_br2 {border-top-right-radius : 3px;}\\\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\\\n.ace_br4 {border-bottom-right-radius: 3px;}\\\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\\\n.ace_br8 {border-bottom-left-radius : 3px;}\\\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_text-input-ios {\\\nposition: absolute !important;\\\ntop: -100000px !important;\\\nleft: -100000px !important;\\\n}\\\n\";\n\ndom.importCssString(editorCss, \"ace_editor.css\");\n\nvar VirtualRenderer = function(container, theme) {\n var _self = this;\n\n this.container = container || dom.createElement(\"div\");\n this.$keepTextAreaAtCursor = !useragent.isOldIE;\n\n dom.addCssClass(this.container, \"ace_editor\");\n\n this.setTheme(theme);\n\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n this.container.appendChild(this.scroller);\n\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n\n this.$markerBack = new MarkerLayer(this.content);\n\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n\n this.$markerFront = new MarkerLayer(this.content);\n\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n\n this.scrollBar = \n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n\n this.scrollTop = 0;\n this.scrollLeft = 0;\n\n this.cursorPos = {\n row : 0,\n column : 0\n };\n\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.addEventListener(\"changeCharacterSize\", function(e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n\n this.layerConfig = {\n width : 1,\n padding : 0,\n firstRow : 0,\n firstRowScreen: 0,\n lastRow : 0,\n lineHeight : 0,\n characterWidth : 0,\n minHeight : 1,\n maxHeight : 1,\n offset : 0,\n height : 1,\n gutterOffset: 1\n };\n \n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n\n this.$loop = new RenderLoop(\n this.$renderChanges.bind(this),\n this.container.ownerDocument.defaultView\n );\n this.$loop.schedule(this.CHANGE_FULL);\n\n this.updateCharacterSize();\n this.setPadding(4);\n config.resetOptions(this);\n config._emit(\"renderer\", this);\n};\n\n(function() {\n\n this.CHANGE_CURSOR = 1;\n this.CHANGE_MARKER = 2;\n this.CHANGE_GUTTER = 4;\n this.CHANGE_SCROLL = 8;\n this.CHANGE_LINES = 16;\n this.CHANGE_TEXT = 32;\n this.CHANGE_SIZE = 64;\n this.CHANGE_MARKER_BACK = 128;\n this.CHANGE_MARKER_FRONT = 256;\n this.CHANGE_FULL = 512;\n this.CHANGE_H_SCROLL = 1024;\n\n oop.implement(this, EventEmitter);\n\n this.updateCharacterSize = function() {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n };\n this.setSession = function(session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n \n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n \n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n \n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n this.updateLines = function(firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n\n this.onChangeNewLineMode = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n \n this.onChangeTabSize = function() {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n this.updateText = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n this.updateFull = function(force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n this.updateFontSize = function() {\n this.$textLayer.checkForSizeChanges();\n };\n\n this.$changes = 0;\n this.$updateSizeAsync = function() {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n this.onResize = function(force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n\n \n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n\n if (force)\n this.$gutterLayer.$padding = null;\n\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null;\n };\n \n this.$updateCachedSize = function(force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n\n changes = changes | this.CHANGE_SCROLL;\n }\n\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n \n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n \n this.gutterWidth = gutterWidth;\n \n this.scrollBarH.element.style.left = \n this.scroller.style.left = gutterWidth + \"px\";\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth()); \n \n this.scrollBarH.element.style.right = \n this.scroller.style.right = this.scrollBarV.getWidth() + \"px\";\n this.scroller.style.bottom = this.scrollBarH.getHeight() + \"px\";\n\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force)\n changes |= this.CHANGE_FULL;\n }\n \n size.$dirty = !width || !height;\n\n if (changes)\n this._signal(\"resize\", oldSize);\n\n return changes;\n };\n\n this.onGutterResize = function() {\n var gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else {\n this.$computeLayerConfig();\n this.$loop.schedule(this.CHANGE_MARKER);\n }\n };\n this.adjustWrapLimit = function() {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n this.setAnimatedScroll = function(shouldAnimate){\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n this.getAnimatedScroll = function() {\n return this.$animatedScroll;\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.getOption(\"showInvisibles\");\n };\n this.getDisplayIndentGuides = function() {\n return this.getOption(\"displayIndentGuides\");\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.getOption(\"showPrintMargin\");\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.getOption(\"printMarginColumn\");\n };\n this.getShowGutter = function(){\n return this.getOption(\"showGutter\");\n };\n this.setShowGutter = function(show){\n return this.setOption(\"showGutter\", show);\n };\n\n this.getFadeFoldWidgets = function(){\n return this.getOption(\"fadeFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n\n this.$updateGutterLineHighlight = function() {\n var pos = this.$cursorLayer.$pixelPos;\n var height = this.layerConfig.lineHeight;\n if (this.session.getUseWrapMode()) {\n var cursor = this.session.selection.getCursor();\n cursor.column = 0;\n pos = this.$cursorLayer.getPixelPosition(cursor, true);\n height *= this.session.getRowLength(cursor.row);\n }\n this.$gutterLineHighlight.style.top = pos.top - this.layerConfig.offset + \"px\";\n this.$gutterLineHighlight.style.height = height + \"px\";\n };\n\n this.$updatePrintMargin = function() {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n\n var style = this.$printMarginEl.style;\n style.left = ((this.characterWidth * this.$printMarginColumn) + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n \n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n this.getContainerElement = function() {\n return this.container;\n };\n this.getMouseEventTarget = function() {\n return this.scroller;\n };\n this.getTextAreaContainer = function() {\n return this.container;\n };\n this.$moveTextAreaToCursor = function() {\n if (!this.$keepTextAreaAtCursor)\n return;\n var config = this.layerConfig;\n var posTop = this.$cursorLayer.$pixelPos.top;\n var posLeft = this.$cursorLayer.$pixelPos.left;\n posTop -= config.offset;\n\n var style = this.textarea.style;\n var h = this.lineHeight;\n if (posTop < 0 || posTop > config.height - h) {\n style.top = style.left = \"0\";\n return;\n }\n\n var w = this.characterWidth;\n if (this.$composition) {\n var val = this.textarea.value.replace(/^\\x01+/, \"\");\n w *= (this.session.$getStringScreenWidth(val)[0]+2);\n h += 2;\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n\n posLeft += this.gutterWidth;\n style.height = h + \"px\";\n style.width = w + \"px\";\n style.left = Math.min(posLeft, this.$size.scrollerWidth - w) + \"px\";\n style.top = Math.min(posTop, this.$size.height - h) + \"px\";\n };\n this.getFirstVisibleRow = function() {\n return this.layerConfig.firstRow;\n };\n this.getFirstFullyVisibleRow = function() {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n this.getLastFullyVisibleRow = function() {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n this.getLastVisibleRow = function() {\n return this.layerConfig.lastRow;\n };\n\n this.$padding = null;\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n \n this.setScrollMargin = function(top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n this.getHScrollBarAlwaysVisible = function() {\n return this.$hScrollBarAlwaysVisible;\n };\n this.setHScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n this.getVScrollBarAlwaysVisible = function() {\n return this.$vScrollBarAlwaysVisible;\n };\n this.setVScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n\n this.$updateScrollBarV = function() {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n this.$updateScrollBarH = function() {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n \n this.$frozen = false;\n this.freeze = function() {\n this.$frozen = true;\n };\n \n this.unfreeze = function() {\n this.$frozen = false;\n };\n\n this.$renderChanges = function(changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return; \n } \n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n \n this._signal(\"beforeRender\");\n\n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL\n ) {\n changes |= this.$computeLayerConfig();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n this.$gutterLayer.element.style.marginTop = (-config.offset) + \"px\";\n this.content.style.marginTop = (-config.offset) + \"px\";\n this.content.style.width = config.width + 2 * this.$padding + \"px\";\n this.content.style.height = config.minHeight + \"px\";\n }\n if (changes & this.CHANGE_H_SCROLL) {\n this.content.style.marginLeft = -this.scrollLeft + \"px\";\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller\" : \"ace_scroller ace_scroll-left\";\n }\n if (changes & this.CHANGE_FULL) {\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n this._signal(\"afterRender\");\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\");\n return;\n }\n\n if (changes & this.CHANGE_TEXT) {\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n\n this._signal(\"afterRender\");\n };\n\n \n this.$autosize = function() {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight,\n Math.max((this.$minLines || 1) * this.lineHeight, height)\n ) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n var vScroll = height > maxHeight;\n \n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n \n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n \n this._signal(\"autosize\");\n }\n };\n \n this.$computeLayerConfig = function() {\n var session = this.session;\n var size = this.$size;\n \n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n\n var longestLine = this.$getLongestLine();\n \n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n\n var offset = this.scrollTop % this.lineHeight;\n var minHeight = size.scrollerHeight + this.lineHeight;\n \n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n \n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top,\n Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, \n longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n \n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n\n offset = this.scrollTop - firstRowScreen * lineHeight;\n\n var changes = 0;\n if (this.layerConfig.width != longestLine) \n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes = this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n \n this.layerConfig = {\n width : longestLine,\n padding : this.$padding,\n firstRow : firstRow,\n firstRowScreen: firstRowScreen,\n lastRow : lastRow,\n lineHeight : lineHeight,\n characterWidth : this.characterWidth,\n minHeight : minHeight,\n maxHeight : maxHeight,\n offset : offset,\n gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height : this.$size.scrollerHeight\n };\n\n return changes;\n };\n\n this.$updateLines = function() {\n if (!this.$changedLines) return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n\n var layerConfig = this.layerConfig;\n\n if (firstRow > layerConfig.lastRow + 1) { return; }\n if (lastRow < layerConfig.firstRow) { return; }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n\n this.$getLongestLine = function() {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n this.updateFrontMarkers = function() {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n this.updateBackMarkers = function() {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n this.addGutterDecoration = function(row, className){\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n this.removeGutterDecoration = function(row, className){\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n this.updateBreakpoints = function(rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.setAnnotations = function(annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.updateCursor = function() {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n this.hideCursor = function() {\n this.$cursorLayer.hideCursor();\n };\n this.showCursor = function() {\n this.$cursorLayer.showCursor();\n };\n\n this.scrollSelectionIntoView = function(anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n this.scrollCursorIntoView = function(cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n\n var left = pos.left;\n var top = pos.top;\n \n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n \n var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n \n if (scrollTop + topMargin > top) {\n if (offset && scrollTop + topMargin > top + this.lineHeight)\n top -= offset * this.$size.scrollerHeight;\n if (top === 0)\n top = -this.scrollMargin.top;\n this.session.setScrollTop(top);\n } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) {\n if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight)\n top += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(top + this.lineHeight - this.$size.scrollerHeight);\n }\n\n var scrollLeft = this.scrollLeft;\n\n if (scrollLeft > left) {\n if (left < this.$padding + 2 * this.layerConfig.characterWidth)\n left = -this.scrollMargin.left;\n this.session.setScrollLeft(left);\n } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) {\n this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth));\n } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n };\n this.getScrollTop = function() {\n return this.session.getScrollTop();\n };\n this.getScrollLeft = function() {\n return this.session.getScrollLeft();\n };\n this.getScrollTopRow = function() {\n return this.scrollTop / this.lineHeight;\n };\n this.getScrollBottomRow = function() {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n this.scrollToRow = function(row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n\n this.alignCursor = function(cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = {row: cursor, column: 0};\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n\n this.session.setScrollTop(offset);\n return offset;\n };\n\n this.STEPS = 8;\n this.$calcSteps = function(fromValue, toValue){\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n\n var func = function(t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n\n return steps;\n };\n this.scrollToLine = function(line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0});\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n\n this.animateScrolling = function(fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n \n if (fromValue == toValue)\n return;\n \n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n \n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps};\n\n clearInterval(this.$timer);\n\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n this.$timer = setInterval(function() {\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n } else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n } else {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n callback && callback();\n }\n }, 10);\n };\n this.scrollToY = function(scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n this.scrollToX = function(scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n this.scrollTo = function(x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(y);\n };\n this.scrollBy = function(deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n this.isScrollableBy = function(deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n\n this.pixelToScreenCoordinates = function(x, y) {\n var canvasPos = this.scroller.getBoundingClientRect();\n\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = Math.round(offset);\n\n return {row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX};\n };\n\n this.screenToTextCoordinates = function(x, y) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n\n var col = Math.round(offsetX / this.characterWidth);\n\n var row = (y + this.scrollTop - canvasPos.top) / this.lineHeight;\n\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n this.textToScreenCoordinates = function(row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n\n var y = pos.row * this.lineHeight;\n\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n this.visualizeFocus = function() {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n this.visualizeBlur = function() {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n this.showComposition = function(position) {\n if (!this.$composition)\n this.$composition = {\n keepTextAreaAtCursor: this.$keepTextAreaAtCursor,\n cssText: this.textarea.style.cssText\n };\n\n this.$keepTextAreaAtCursor = true;\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n };\n this.setCompositionText = function(text) {\n this.$moveTextAreaToCursor();\n };\n this.hideComposition = function() {\n if (!this.$composition)\n return;\n\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.$keepTextAreaAtCursor = this.$composition.keepTextAreaAtCursor;\n this.textarea.style.cssText = this.$composition.cssText;\n this.$composition = null;\n };\n this.setTheme = function(theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange',{theme:theme});\n\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n } else {\n afterLoad(theme);\n }\n\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n dom.importCssString(\n module.cssText,\n module.cssClass,\n _self.container.ownerDocument\n );\n\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n\n var padding = \"padding\" in module ? module.padding \n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n\n _self._dispatchEvent('themeLoaded', {theme:module});\n cb && cb();\n }\n };\n this.getTheme = function() {\n return this.$themeId;\n };\n this.setStyle = function(style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n this.unsetStyle = function(style) {\n dom.removeCssClass(this.container, style);\n };\n \n this.setCursorStyle = function(style) {\n if (this.scroller.style.cursor != style)\n this.scroller.style.cursor = style;\n };\n this.setMouseCursor = function(cursorStyle) {\n this.scroller.style.cursor = cursorStyle;\n };\n this.destroy = function() {\n this.$textLayer.destroy();\n this.$cursorLayer.destroy();\n };\n\n}).call(VirtualRenderer.prototype);\n\n\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n animatedScroll: {initialValue: false},\n showInvisibles: {\n set: function(value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function(val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function() {\n return this.$showPrintMargin && this.$printMarginColumn; \n }\n },\n showGutter: {\n set: function(show){\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n fadeFoldWidgets: {\n set: function(show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function(show) {this.$gutterLayer.setShowFoldWidgets(show);},\n initialValue: true\n },\n showLineNumbers: {\n set: function(show) {\n this.$gutterLayer.setShowLineNumbers(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function(show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function(shouldHighlight) {\n if (!this.$gutterLineHighlight) {\n this.$gutterLineHighlight = dom.createElement(\"div\");\n this.$gutterLineHighlight.className = \"ace_gutter-active-line\";\n this.$gutter.appendChild(this.$gutterLineHighlight);\n return;\n }\n\n this.$gutterLineHighlight.style.display = shouldHighlight ? \"\" : \"none\";\n if (this.$cursorLayer.$pixelPos)\n this.$updateGutterLineHighlight();\n },\n initialValue: false,\n value: true\n },\n hScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function(size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function(name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function(val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function(val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function(val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n theme: {\n set: function(val) { this.setTheme(val); },\n get: function() { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n }\n});\n\nexports.VirtualRenderer = VirtualRenderer;\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar net = acequire(\"../lib/net\");\nvar EventEmitter = acequire(\"../lib/event_emitter\").EventEmitter;\nvar config = acequire(\"../config\");\n\nfunction $workerBlob(workerUrl, mod) {\n var script = mod.src;\"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl, mod) {\n var blob = $workerBlob(workerUrl, mod);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n}\n\nvar WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n if (acequire.nameToUrl && !acequire.toUrl)\n acequire.toUrl = acequire.nameToUrl;\n \n if (config.get(\"packaged\") || !acequire.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod.id, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(acequire.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(acequire.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl, mod);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod.id,\n classname : classname\n });\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.callbackId = 1;\n this.callbacks = {};\n this.messageBuffer = [];\n\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n var _self = this;\n\n this.$worker = {};\n this.$worker.terminate = function() {};\n this.$worker.postMessage = function(e) {\n _self.messageBuffer.push(e);\n if (main) {\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n };\n this.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = _self.messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n _self.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (_self.messageBuffer.length)\n processNext();\n });\n};\n\nUIWorkerClient.prototype = WorkerClient.prototype;\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"./range\").Range;\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar oop = acequire(\"./lib/oop\");\n\nvar PlaceHolder = function(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate);\n this.$others = others;\n \n this.$onCursorChange = function() {\n setTimeout(function() {\n _self.onCursorChange();\n });\n };\n \n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1};\n this.$undoStackDepth = undoStack.length;\n this.setup();\n\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setup = function() {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n \n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function(other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n this.showOtherMarkers = function() {\n if (this.othersActive) return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function(anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false);\n });\n };\n this.hideOtherMarkers = function() {\n if (!this.othersActive) return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n this.onUpdate = function(delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n \n var range = delta;\n if (range.start.row !== range.end.row) return;\n if (range.start.row !== this.pos.row) return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n \n this.updateAnchors(delta);\n \n if (inMainRange)\n this.length += lengthDiff;\n\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n } else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n \n this.$updating = false;\n this.updateMarkers();\n };\n \n this.updateAnchors = function(delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n \n this.updateMarkers = function() {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function(pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column+_self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n\n this.onCursorChange = function(event) {\n if (this.$updating || !this.session) return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n } else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n }; \n this.detach = function() {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.removeEventListener(\"change\", this.$onUpdate);\n this.session.selection.removeEventListener(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n this.cancel = function() {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n}).call(PlaceHolder.prototype);\n\n\nexports.PlaceHolder = PlaceHolder;\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(acequire, exports, module) {\n\nvar event = acequire(\"../lib/event\");\nvar useragent = acequire(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\n\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n \n if (ctrl && useragent.isMac)\n button = ev.button;\n\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n \n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n \n if (button !== 0)\n return;\n\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function(e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n \n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n \n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n } else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n } else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n \n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n \n \n editor.$blockScrolling++;\n editor.inVirtualSelectionMode = true;\n \n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function() {\n var tmpSel = selection.toOrientedRange();\n\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n } else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.$blockScrolling--;\n editor.inVirtualSelectionMode = false;\n });\n\n } else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true; \n var initialRange;\n var rectSel = [];\n var blockSelect = function() {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n \n editor.$blockScrolling++;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n editor.$blockScrolling--;\n };\n editor.$blockScrolling++;\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n } else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n \n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead); \n else\n selection.moveToPosition(pos);\n editor.$blockScrolling--;\n \n screenCursor = {row: -1, column: -1};\n\n var onMouseSelectionEnd = function(e) {\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n editor.$blockScrolling++;\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n editor.$blockScrolling--;\n };\n\n var onSelectionInterval = blockSelect;\n\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function() {onSelectionInterval();}, 20);\n\n return e.preventDefault();\n }\n}\n\n\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(acequire, exports, module) {\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n exec: function(editor) { editor.selectMoreLines(-1); },\n bindKey: {win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelow\",\n exec: function(editor) { editor.selectMoreLines(1); },\n bindKey: {win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorAboveSkipCurrent\",\n exec: function(editor) { editor.selectMoreLines(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelowSkipCurrent\",\n exec: function(editor) { editor.selectMoreLines(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreBefore\",\n exec: function(editor) { editor.selectMore(-1); },\n bindKey: {win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreAfter\",\n exec: function(editor) { editor.selectMore(1); },\n bindKey: {win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextBefore\",\n exec: function(editor) { editor.selectMore(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextAfter\",\n exec: function(editor) { editor.selectMore(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"splitIntoLines\",\n exec: function(editor) { editor.multiSelect.splitIntoLines(); },\n bindKey: {win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\"},\n readOnly: true\n}, {\n name: \"alignCursors\",\n exec: function(editor) { editor.alignCursors(); },\n bindKey: {win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\"},\n scrollIntoView: \"cursor\"\n}, {\n name: \"findAll\",\n exec: function(editor) { editor.findAll(); },\n bindKey: {win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n bindKey: \"esc\",\n exec: function(editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function(editor) {return editor && editor.inMultiSelectMode;}\n}];\n\nvar HashHandler = acequire(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(acequire, exports, module) {\n\nvar RangeList = acequire(\"./range_list\").RangeList;\nvar Range = acequire(\"./range\").Range;\nvar Selection = acequire(\"./selection\").Selection;\nvar onMouseDown = acequire(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = acequire(\"./lib/event\");\nvar lang = acequire(\"./lib/lang\");\nvar commands = acequire(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = acequire(\"./search\").Search;\nvar search = new Search();\n\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = acequire(\"./edit_session\").EditSession;\n(function() {\n this.getSelectionMarkers = function() {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function() {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function(range, $blockChangeEvents) {\n if (!range)\n return;\n\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n\n if (!range.cursor)\n range.cursor = range.end;\n\n var removed = this.rangeList.add(range);\n\n this.$onAddRange(range);\n\n if (removed.length)\n this.$onRemoveRange(removed);\n\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n\n this.toSingleRange = function(range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function(pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function() {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n else if(this.ranges[0])\n this.fromOrientedRange(this.ranges[0]);\n };\n\n this.$onAddRange = function(range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", {range: range});\n };\n\n this.$onRemoveRange = function(removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n\n for (var i = removed.length; i--; ) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n\n this._signal(\"removeRange\", {ranges: removed});\n\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function() {\n if (this.rangeList)\n return;\n\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function() {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n\n this.splitIntoLines = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var range = this.getRange();\n var isBackwards = this.isBackwards();\n var startRow = range.start.row;\n var endRow = range.end.row;\n if (startRow == endRow) {\n if (isBackwards)\n var start = range.end, end = range.start;\n else\n var start = range.start, end = range.end;\n \n this.addRange(Range.fromPoints(end, end));\n this.addRange(Range.fromPoints(start, start));\n return;\n }\n\n var rectSel = [];\n var r = this.getLineRange(startRow, true);\n r.start.column = range.start.column;\n rectSel.push(r);\n\n for (var i = startRow + 1; i < endRow; i++)\n rectSel.push(this.getLineRange(i, true));\n\n r = this.getLineRange(endRow, true);\n r.end.column = range.end.column;\n rectSel.push(r);\n\n rectSel.forEach(this.addRange, this);\n }\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var cursor = this.session.documentToScreenPosition(this.selectionLead);\n var anchor = this.session.documentToScreenPosition(this.selectionAnchor);\n\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n } else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n } else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n\n if (startRow == endRow)\n includeEmptyLines = true;\n\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(\n this.session.screenToDocumentPosition(row, startColumn, startOffsetX),\n this.session.screenToDocumentPosition(row, endColumn, endOffsetX)\n );\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n var docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n\n if (yBackwards)\n rectSel.reverse();\n\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = acequire(\"./editor\").Editor;\n(function() {\n this.updateSelectionMarkers = function() {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function(orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function(range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n\n this.removeSelectionMarkers = function(ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--; ) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n\n this.$onAddRange = function(e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onRemoveRange = function(e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onMultiSelect = function(e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onSingleSelect = function(e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n\n this.$onMultiSelectExec = function(e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n } else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n } else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n } else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n } else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n }; \n this.forEachSelection = function(cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n \n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n \n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n \n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n \n return result;\n };\n this.exitMultiSelectMode = function() {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n\n this.getSelectedText = function() {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n } else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n \n this.$checkMultiselectChange = function(e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row \n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n }\n };\n this.findAll = function(needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n } \n this.$search.set(options);\n \n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n\n this.$blockScrolling += 1;\n var selection = this.multiSelect;\n\n if (!additive)\n selection.toSingleRange(ranges[0]);\n\n for (var i = ranges.length; i--; )\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n \n this.$blockScrolling -= 1;\n\n return ranges.length;\n };\n this.selectMoreLines = function(dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n } else {\n var anchor = lead;\n }\n\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n } else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n } else {\n if (skip)\n var toRemove = range.cursor;\n }\n\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function(dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n\n var words = [];\n for (var i = all.length; i--; ) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n };\n this.selectMore = function(dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.$blockScrolling += 1;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.$blockScrolling -= 1;\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function() {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function(r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n \n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n \n if (fr < 0) fr = 0;\n if (lr >= max) lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({row: fr, column: 0}, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n } else {\n sameRowRanges.forEach(function(r) {\n sel.substractPoint(r.cursor);\n });\n\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function(r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function(r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n\n this.$reAlignText = function(lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n\n return lines.map(function(line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW, \" \")\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\n\n\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function(e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n\n addAltCursorListeners(editor);\n}\n\nfunction addAltCursorListeners(editor){\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function(e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n } else if (altCursor) {\n reset();\n }\n });\n\n event.addListener(el, \"keyup\", reset);\n event.addListener(el, \"blur\", reset);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\n\nexports.MultiSelect = MultiSelect;\n\n\nacequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function(val) {\n MultiSelect(this);\n if (val) {\n this.on(\"changeSession\", this.$multiselectOnSessionChange);\n this.on(\"mousedown\", onMouseDown);\n } else {\n this.off(\"changeSession\", this.$multiselectOnSessionChange);\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function(val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\n\n(function() {\n\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n return null;\n };\n\n this.indentationBlock = function(session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n\n if (level == -1)\n continue;\n\n if (level <= startLevel)\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n this.openingBracketBlock = function(session, bracket, row, column, typeRe) {\n var start = {row: row, column: column + 1};\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n\n if (fw == \"start\" && end.row > start.row) {\n end.row --;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n\n this.closingBracketBlock = function(session, bracket, row, column, typeRe) {\n var end = {row: row, column: column};\n var start = session.$findOpeningBracket(bracket, end);\n\n if (!start)\n return;\n\n start.column++;\n end.column--;\n\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(acequire, exports, module) {\n\"use strict\";\n\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = \".ace-tm .ace_gutter {\\\nbackground: #f0f0f0;\\\ncolor: #333;\\\n}\\\n.ace-tm .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #e8e8e8;\\\n}\\\n.ace-tm .ace_fold {\\\nbackground-color: #6B72E6;\\\n}\\\n.ace-tm {\\\nbackground-color: #FFFFFF;\\\ncolor: black;\\\n}\\\n.ace-tm .ace_cursor {\\\ncolor: black;\\\n}\\\n.ace-tm .ace_invisible {\\\ncolor: rgb(191, 191, 191);\\\n}\\\n.ace-tm .ace_storage,\\\n.ace-tm .ace_keyword {\\\ncolor: blue;\\\n}\\\n.ace-tm .ace_constant {\\\ncolor: rgb(197, 6, 11);\\\n}\\\n.ace-tm .ace_constant.ace_buildin {\\\ncolor: rgb(88, 72, 246);\\\n}\\\n.ace-tm .ace_constant.ace_language {\\\ncolor: rgb(88, 92, 246);\\\n}\\\n.ace-tm .ace_constant.ace_library {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_invalid {\\\nbackground-color: rgba(255, 0, 0, 0.1);\\\ncolor: red;\\\n}\\\n.ace-tm .ace_support.ace_function {\\\ncolor: rgb(60, 76, 114);\\\n}\\\n.ace-tm .ace_support.ace_constant {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_support.ace_type,\\\n.ace-tm .ace_support.ace_class {\\\ncolor: rgb(109, 121, 222);\\\n}\\\n.ace-tm .ace_keyword.ace_operator {\\\ncolor: rgb(104, 118, 135);\\\n}\\\n.ace-tm .ace_string {\\\ncolor: rgb(3, 106, 7);\\\n}\\\n.ace-tm .ace_comment {\\\ncolor: rgb(76, 136, 107);\\\n}\\\n.ace-tm .ace_comment.ace_doc {\\\ncolor: rgb(0, 102, 255);\\\n}\\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\\ncolor: rgb(128, 159, 191);\\\n}\\\n.ace-tm .ace_constant.ace_numeric {\\\ncolor: rgb(0, 0, 205);\\\n}\\\n.ace-tm .ace_variable {\\\ncolor: rgb(49, 132, 149);\\\n}\\\n.ace-tm .ace_xml-pe {\\\ncolor: rgb(104, 104, 91);\\\n}\\\n.ace-tm .ace_entity.ace_name.ace_function {\\\ncolor: #0000A2;\\\n}\\\n.ace-tm .ace_heading {\\\ncolor: rgb(12, 7, 255);\\\n}\\\n.ace-tm .ace_list {\\\ncolor:rgb(185, 6, 144);\\\n}\\\n.ace-tm .ace_meta.ace_tag {\\\ncolor:rgb(0, 22, 142);\\\n}\\\n.ace-tm .ace_string.ace_regex {\\\ncolor: rgb(255, 0, 0)\\\n}\\\n.ace-tm .ace_marker-layer .ace_selection {\\\nbackground: rgb(181, 213, 255);\\\n}\\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px white;\\\n}\\\n.ace-tm .ace_marker-layer .ace_step {\\\nbackground: rgb(252, 255, 0);\\\n}\\\n.ace-tm .ace_marker-layer .ace_stack {\\\nbackground: rgb(164, 229, 101);\\\n}\\\n.ace-tm .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgb(192, 192, 192);\\\n}\\\n.ace-tm .ace_marker-layer .ace_active-line {\\\nbackground: rgba(0, 0, 0, 0.07);\\\n}\\\n.ace-tm .ace_gutter-active-line {\\\nbackground-color : #dcdcdc;\\\n}\\\n.ace-tm .ace_marker-layer .ace_selected-word {\\\nbackground: rgb(250, 250, 255);\\\nborder: 1px solid rgb(200, 200, 250);\\\n}\\\n.ace-tm .ace_indent-guide {\\\nbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\\n}\\\n\";\n\nvar dom = acequire(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass);\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"./lib/oop\");\nvar dom = acequire(\"./lib/dom\");\nvar Range = acequire(\"./range\").Range;\n\n\nfunction LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n \n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n}\n\n(function() {\n this.getRowLength = function(row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n\n this.$getWidgetScreenLength = function() {\n var screenRows = 0;\n this.lineWidgets.forEach(function(w){\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n }; \n \n this.$onChangeEditor = function(e) {\n this.attach(e.editor);\n };\n \n this.attach = function(editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n\n if (this.editor == editor)\n return;\n\n this.detach();\n this.editor = editor;\n \n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n this.detach = function(e) {\n var editor = this.editor;\n if (!editor)\n return;\n \n this.editor = null;\n editor.widgetManager = null;\n \n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function(w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n\n this.updateOnFold = function(e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n } else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n \n this.updateOnChange = function(delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n \n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n } else if (delta.action == 'remove') {\n var removed = lineWidgets.splice(startRow + 1, len);\n removed.forEach(function(w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n } else {\n var args = new Array(len);\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n \n this.$updateRows = function() {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n var noWidgets = true;\n lineWidgets.forEach(function(w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n\n this.addLineWidget = function(w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n \n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n \n this.session.lineWidgets[w.row] = w;\n \n w.session = this.session;\n \n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n }\n \n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n \n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n \n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n \n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n \n this.removeLineWidget = function(w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy) try {\n w.editor.destroy();\n } catch(e){}\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n } else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n this.$updateRows();\n };\n \n this.getWidgetsAtRow = function(row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n \n this.onWidgetChanged = function(w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n \n this.measureWidgets = function(e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n \n if (!changedWidgets || !changedWidgets.length) return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el) continue;\n if (w.session != this.session) continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n \n w.h = w.el.offsetHeight;\n \n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n \n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", {data:{start:{row: min}}});\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n \n this.renderWidgets = function(e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n \n while (first > 0 && !lineWidgets[first])\n first--;\n \n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el) continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n \n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n \n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n \n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n } else {\n w.el.style.right = \"\";\n }\n }\n };\n \n}).call(LineWidgets.prototype);\n\n\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\nvar LineWidgets = acequire(\"../line_widgets\").LineWidgets;\nvar dom = acequire(\"../lib/dom\");\nvar Range = acequire(\"../range\").Range;\n\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\n\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n \n var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n \n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n \n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n \n \n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\n\nexports.showErrorMarker = function(editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n \n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n } else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n } else if (oldWidget) {\n return;\n } else {\n gutterAnno = {\n text: [\"Looks good!\"],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n \n var w = {\n row: pos.row, \n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n \n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n \n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
\");\n \n el.appendChild(dom.createElement(\"div\"));\n \n var kb = function(_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return {command: \"null\"};\n }\n };\n \n w.destroy = function() {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n \n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n \n editor.session.widgetManager.addLineWidget(w);\n \n w.el.onmousedown = editor.focus.bind(editor);\n \n editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight});\n};\n\n\ndom.importCssString(\"\\\n .error_widget_wrapper {\\\n background: inherit;\\\n color: inherit;\\\n border:none\\\n }\\\n .error_widget {\\\n border-top: solid 2px;\\\n border-bottom: solid 2px;\\\n margin: 5px 0;\\\n padding: 10px 40px;\\\n white-space: pre-wrap;\\\n }\\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\\n border-color: #ff5a5a\\\n }\\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\\n border-color: #F1D817\\\n }\\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\\n border-color: #5a5a5a\\\n }\\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\\n border-color: #5aaa5a\\\n }\\\n .error_widget_arrow {\\\n position: absolute;\\\n border: solid 5px;\\\n border-top-color: transparent!important;\\\n border-right-color: transparent!important;\\\n border-left-color: transparent!important;\\\n top: -5px;\\\n }\\\n\", \"\");\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\"], function(acequire, exports, module) {\n\"use strict\";\n\nacequire(\"./lib/fixoldbrowsers\");\n\nvar dom = acequire(\"./lib/dom\");\nvar event = acequire(\"./lib/event\");\n\nvar Editor = acequire(\"./editor\").Editor;\nvar EditSession = acequire(\"./edit_session\").EditSession;\nvar UndoManager = acequire(\"./undomanager\").UndoManager;\nvar Renderer = acequire(\"./virtual_renderer\").VirtualRenderer;\nacequire(\"./worker/worker_client\");\nacequire(\"./keyboard/hash_handler\");\nacequire(\"./placeholder\");\nacequire(\"./multi_select\");\nacequire(\"./mode/folding/fold_mode\");\nacequire(\"./theme/textmate\");\nacequire(\"./ext/error_marker\");\n\nexports.config = acequire(\"./config\");\nexports.acequire = acequire;\n\nif (typeof define === \"function\")\n exports.define = define;\nexports.edit = function(el) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n } else if (el) {\n value = dom.getInnerText(el);\n el.innerHTML = \"\";\n }\n\n var doc = exports.createEditSession(value);\n\n var editor = new Editor(new Renderer(el));\n editor.setSession(doc);\n\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode) env.textarea = oldNode;\n event.addListener(window, \"resize\", env.onResize);\n editor.on(\"destroy\", function() {\n event.removeListener(window, \"resize\", env.onResize);\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function(text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.version = \"1.2.9\";\n});\n (function() {\n ace.acequire([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n if (!window.ace)\n window.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n window.ace[key] = a[key];\n });\n })();\n \nmodule.exports = window.ace.acequire(\"ace/ace\");","!function(e){function t(n){if(o[n])return o[n].exports;var r=o[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var o={};t.m=e,t.c=o,t.d=function(e,o,n){t.o(e,o)||Object.defineProperty(e,o,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(o,\"a\",o),o},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=0)}([function(e,t,o){\"use strict\";var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},r=o(1),u={passive:!0,capture:!1},i=[\"scroll\",\"wheel\",\"touchstart\",\"touchmove\",\"touchenter\",\"touchend\",\"touchleave\",\"mouseout\",\"mouseleave\",\"mouseup\",\"mousedown\",\"mousemove\",\"mouseenter\",\"mousewheel\",\"mouseover\"],s=function(e,t){return void 0!==e?e:-1!==i.indexOf(t)&&u.passive},c=function(e){var t=Object.getOwnPropertyDescriptor(e,\"passive\");return t&&!0!==t.writable&&void 0===t.set?Object.assign({},e):e};if((0,r.eventListenerOptionsSupported)()){var p=EventTarget.prototype.addEventListener;!function(e){EventTarget.prototype.addEventListener=function(t,o,r){var i=\"object\"===(void 0===r?\"undefined\":n(r))&&null!==r,p=i?r.capture:r;r=i?c(r):{},r.passive=s(r.passive,t),r.capture=void 0===p?u.capture:p,e.call(this,t,o,r)},EventTarget.prototype.addEventListener._original=e}(p)}},function(e,t,o){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});t.eventListenerOptionsSupported=function(){var e=!1;try{var t=Object.defineProperty({},\"passive\",{get:function(){e=!0}});window.addEventListener(\"test\",null,t),window.removeEventListener(\"test\",null,t)}catch(e){}return e}}]);\n//# sourceMappingURL=index.js.map","var ace = require('brace');\n\nmodule.exports = {\n render: function (h) {\n var height = this.height ? this.px(this.height) : '100%'\n var width = this.width ? this.px(this.width) : '100%'\n return h('div',{\n attrs: {\n style: \"height: \" + height + '; width: ' + width,\n }\n })\n },\n props:{\n value:{\n type:String,\n required:true\n },\n lang:String,\n theme:String,\n height:true,\n width:true,\n options:Object\n },\n data: function () {\n return {\n editor:null,\n contentBackup:\"\"\n }\n },\n methods: {\n px:function (n) {\n if( /^\\d*$/.test(n) ){\n return n+\"px\";\n }\n return n;\n }\n },\n watch:{\n value:function (val) {\n if(this.contentBackup !== val){\n this.editor.session.setValue(val,1);\n this.contentBackup = val;\n }\n },\n theme:function (newTheme) {\n this.editor.setTheme('ace/theme/'+newTheme);\n },\n lang:function (newLang) {\n this.editor.getSession().setMode('ace/mode/'+newLang);\n },\n options:function(newOption){\n this.editor.setOptions(newOption);\n },\n height:function(){\n this.$nextTick(function(){\n this.editor.resize()\n })\n },\n width:function(){\n this.$nextTick(function(){\n this.editor.resize()\n })\n }\n },\n beforeDestroy: function() {\n this.editor.destroy();\n this.editor.container.remove();\n },\n mounted: function () {\n var vm = this;\n var lang = this.lang||'text';\n var theme = this.theme||'chrome';\n\n require('brace/ext/emmet');\n\n var editor = vm.editor = ace.edit(this.$el);\n\n this.$emit('init',editor);\n \n editor.$blockScrolling = Infinity;\n //editor.setOption(\"enableEmmet\", true);\n editor.getSession().setMode('ace/mode/'+lang);\n editor.setTheme('ace/theme/'+theme);\n editor.setValue(this.value,1);\n this.contentBackup = this.value;\n\n editor.on('change',function () {\n var content = editor.getValue();\n vm.$emit('input',content);\n vm.contentBackup = content;\n });\n if(vm.options)\n editor.setOptions(vm.options);\n }\n}\n","ace.define(\"ace/mode/elixir_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text_highlight_rules\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextHighlightRules = acequire(\"./text_highlight_rules\").TextHighlightRules;\n\nvar ElixirHighlightRules = function() {\n\n this.$rules = { start: \n [ { token: \n [ 'meta.module.elixir',\n 'keyword.control.module.elixir',\n 'meta.module.elixir',\n 'entity.name.type.module.elixir' ],\n regex: '^(\\\\s*)(defmodule)(\\\\s+)((?:[A-Z]\\\\w*\\\\s*\\\\.\\\\s*)*[A-Z]\\\\w*)' },\n { token: 'comment.documentation.heredoc',\n regex: '@(?:module|type)?doc (?:~[a-z])?\"\"\"',\n push: \n [ { token: 'comment.documentation.heredoc',\n regex: '\\\\s*\"\"\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'comment.documentation.heredoc' } ],\n comment: '@doc with heredocs is treated as documentation' },\n { token: 'comment.documentation.heredoc',\n regex: '@(?:module|type)?doc ~[A-Z]\"\"\"',\n push: \n [ { token: 'comment.documentation.heredoc',\n regex: '\\\\s*\"\"\"',\n next: 'pop' },\n { defaultToken: 'comment.documentation.heredoc' } ],\n comment: '@doc with heredocs is treated as documentation' },\n { token: 'comment.documentation.heredoc',\n regex: '@(?:module|type)?doc (?:~[a-z])?\\'\\'\\'',\n push: \n [ { token: 'comment.documentation.heredoc',\n regex: '\\\\s*\\'\\'\\'',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'comment.documentation.heredoc' } ],\n comment: '@doc with heredocs is treated as documentation' },\n { token: 'comment.documentation.heredoc',\n regex: '@(?:module|type)?doc ~[A-Z]\\'\\'\\'',\n push: \n [ { token: 'comment.documentation.heredoc',\n regex: '\\\\s*\\'\\'\\'',\n next: 'pop' },\n { defaultToken: 'comment.documentation.heredoc' } ],\n comment: '@doc with heredocs is treated as documentation' },\n { token: 'comment.documentation.false',\n regex: '@(?:module|type)?doc false',\n comment: '@doc false is treated as documentation' },\n { token: 'comment.documentation.string',\n regex: '@(?:module|type)?doc \"',\n push: \n [ { token: 'comment.documentation.string',\n regex: '\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'comment.documentation.string' } ],\n comment: '@doc with string is treated as documentation' },\n { token: 'keyword.control.elixir',\n regex: '\\\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|acequire|alias|use|quote|unquote|super)\\\\b(?![?!])',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?_?\\\\h)*|\\\\d(?>_?\\\\d)*(\\\\.(?![^[:space:][:digit:]])(?>_?\\\\d)*)?([eE][-+]?\\\\d(?>_?\\\\d)*)?|0b[01]+|0o[0-7]+)\\\\b' },\n { token: 'punctuation.definition.constant.elixir',\n regex: ':\\'',\n push: \n [ { token: 'punctuation.definition.constant.elixir',\n regex: '\\'',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'constant.other.symbol.single-quoted.elixir' } ] },\n { token: 'punctuation.definition.constant.elixir',\n regex: ':\"',\n push: \n [ { token: 'punctuation.definition.constant.elixir',\n regex: '\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'constant.other.symbol.double-quoted.elixir' } ] },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '(?:\\'\\'\\')',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?>\\'\\'\\')',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '^\\\\s*\\'\\'\\'',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' } ],\n comment: 'Single-quoted heredocs' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '\\'',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\'',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'support.function.variable.quoted.single.elixir' } ],\n comment: 'single quoted string (allows for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '(?:\"\"\")',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?>\"\"\")',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '^\\\\s*\"\"\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.quoted.double.heredoc.elixir' } ],\n comment: 'Double-quoted heredocs' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '\"',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.quoted.double.elixir' } ],\n comment: 'double quoted string (allows for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z](?:\"\"\")',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '~[a-z](?>\"\"\")',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '^\\\\s*\"\"\"',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.quoted.double.heredoc.elixir' } ],\n comment: 'Double-quoted heredocs sigils' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z]\\\\{',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\}[a-z]*',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.interpolated.elixir' } ],\n comment: 'sigil (allow for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z]\\\\[',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\][a-z]*',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.interpolated.elixir' } ],\n comment: 'sigil (allow for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z]\\\\<',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\>[a-z]*',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.interpolated.elixir' } ],\n comment: 'sigil (allow for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z]\\\\(',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\)[a-z]*',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { defaultToken: 'string.interpolated.elixir' } ],\n comment: 'sigil (allow for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[a-z][^\\\\w]',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '[^\\\\w][a-z]*',\n next: 'pop' },\n { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { include: '#escaped_char' },\n { defaultToken: 'string.interpolated.elixir' } ],\n comment: 'sigil (allow for interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z](?:\"\"\")',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '~[A-Z](?>\"\"\")',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '^\\\\s*\"\"\"',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'Double-quoted heredocs sigils' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z]\\\\{',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\}[a-z]*',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'sigil (without interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z]\\\\[',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\][a-z]*',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'sigil (without interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z]\\\\<',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\>[a-z]*',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'sigil (without interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z]\\\\(',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '\\\\)[a-z]*',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'sigil (without interpolation)' },\n { token: 'punctuation.definition.string.begin.elixir',\n regex: '~[A-Z][^\\\\w]',\n push: \n [ { token: 'punctuation.definition.string.end.elixir',\n regex: '[^\\\\w][a-z]*',\n next: 'pop' },\n { defaultToken: 'string.quoted.other.literal.upper.elixir' } ],\n comment: 'sigil (without interpolation)' },\n { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'],\n regex: '(:)([a-zA-Z_][\\\\w@]*(?:[?!]|=(?![>=]))?|\\\\<\\\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\\\-|\\\\|>|=>|~|~=|=|/|\\\\\\\\\\\\\\\\|\\\\*\\\\*?|\\\\.\\\\.?\\\\.?|>=?|<=?|&&?&?|\\\\+\\\\+?|\\\\-\\\\-?|\\\\|\\\\|?\\\\|?|\\\\!|@|\\\\%?\\\\{\\\\}|%|\\\\[\\\\]|\\\\^(?:\\\\^\\\\^)?)',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?[a-zA-Z_][\\\\w@]*(?>[?!]|=(?![>=]))?|\\\\<\\\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\\\-|\\\\|>|=>|~|~=|=|/|\\\\\\\\\\\\\\\\|\\\\*\\\\*?|\\\\.\\\\.?\\\\.?|>=?|<=?|&&?&?|\\\\+\\\\+?|\\\\-\\\\-?|\\\\|\\\\|?\\\\|?|\\\\!|@|\\\\%?\\\\{\\\\}|%|\\\\[\\\\]|\\\\^(\\\\^\\\\^)?)',\n comment: 'symbols' },\n { token: 'punctuation.definition.constant.elixir',\n regex: '(?:[a-zA-Z_][\\\\w@]*(?:[?!])?):(?!:)',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?>[a-zA-Z_][\\\\w@]*(?>[?!])?)(:)(?!:)',\n comment: 'symbols' },\n { token: \n [ 'punctuation.definition.comment.elixir',\n 'comment.line.number-sign.elixir' ],\n regex: '(#)(.*)' },\n { token: 'constant.numeric.elixir',\n regex: '\\\\?(?:\\\\\\\\(?:x[\\\\da-fA-F]{1,2}(?![\\\\da-fA-F])\\\\b|[^xMC])|[^\\\\s\\\\\\\\])',\n TODO: 'FIXME: regexp doesn\\'t have js equivalent',\n originalRegex: '(?=?' },\n { token: 'keyword.operator.bitwise.elixir',\n regex: '\\\\|{3}|&{3}|\\\\^{3}|<{3}|>{3}|~{3}' },\n { token: 'keyword.operator.logical.elixir',\n regex: '!+|\\\\bnot\\\\b|&&|\\\\band\\\\b|\\\\|\\\\||\\\\bor\\\\b|\\\\bxor\\\\b',\n originalRegex: '(?<=[ \\\\t])!+|\\\\bnot\\\\b|&&|\\\\band\\\\b|\\\\|\\\\||\\\\bor\\\\b|\\\\bxor\\\\b' },\n { token: 'keyword.operator.arithmetic.elixir',\n regex: '\\\\*|\\\\+|\\\\-|/' },\n { token: 'keyword.operator.other.elixir',\n regex: '\\\\||\\\\+\\\\+|\\\\-\\\\-|\\\\*\\\\*|\\\\\\\\\\\\\\\\|\\\\<\\\\-|\\\\<\\\\>|\\\\<\\\\<|\\\\>\\\\>|\\\\:\\\\:|\\\\.\\\\.|\\\\|>|~|=>' },\n { token: 'keyword.operator.assignment.elixir', regex: '=' },\n { token: 'punctuation.separator.other.elixir', regex: ':' },\n { token: 'punctuation.separator.statement.elixir',\n regex: '\\\\;' },\n { token: 'punctuation.separator.object.elixir', regex: ',' },\n { token: 'punctuation.separator.method.elixir', regex: '\\\\.' },\n { token: 'punctuation.section.scope.elixir', regex: '\\\\{|\\\\}' },\n { token: 'punctuation.section.array.elixir', regex: '\\\\[|\\\\]' },\n { token: 'punctuation.section.function.elixir',\n regex: '\\\\(|\\\\)' } ],\n '#escaped_char': \n [ { token: 'constant.character.escape.elixir',\n regex: '\\\\\\\\(?:x[\\\\da-fA-F]{1,2}|.)' } ],\n '#interpolated_elixir': \n [ { token: \n [ 'source.elixir.embedded.source',\n 'source.elixir.embedded.source.empty' ],\n regex: '(#\\\\{)(\\\\})' },\n { todo: \n { token: 'punctuation.section.embedded.elixir',\n regex: '#\\\\{',\n push: \n [ { token: 'punctuation.section.embedded.elixir',\n regex: '\\\\}',\n next: 'pop' },\n { include: '#nest_curly_and_self' },\n { include: '$self' },\n { defaultToken: 'source.elixir.embedded.source' } ] } } ],\n '#nest_curly_and_self': \n [ { token: 'punctuation.section.scope.elixir',\n regex: '\\\\{',\n push: \n [ { token: 'punctuation.section.scope.elixir',\n regex: '\\\\}',\n next: 'pop' },\n { include: '#nest_curly_and_self' } ] },\n { include: '$self' } ],\n '#regex_sub': \n [ { include: '#interpolated_elixir' },\n { include: '#escaped_char' },\n { token: \n [ 'punctuation.definition.arbitrary-repitition.elixir',\n 'string.regexp.arbitrary-repitition.elixir',\n 'string.regexp.arbitrary-repitition.elixir',\n 'punctuation.definition.arbitrary-repitition.elixir' ],\n regex: '(\\\\{)(\\\\d+)((?:,\\\\d+)?)(\\\\})' },\n { token: 'punctuation.definition.character-class.elixir',\n regex: '\\\\[(?:\\\\^?\\\\])?',\n push: \n [ { token: 'punctuation.definition.character-class.elixir',\n regex: '\\\\]',\n next: 'pop' },\n { include: '#escaped_char' },\n { defaultToken: 'string.regexp.character-class.elixir' } ] },\n { token: 'punctuation.definition.group.elixir',\n regex: '\\\\(',\n push: \n [ { token: 'punctuation.definition.group.elixir',\n regex: '\\\\)',\n next: 'pop' },\n { include: '#regex_sub' },\n { defaultToken: 'string.regexp.group.elixir' } ] },\n { token: \n [ 'punctuation.definition.comment.elixir',\n 'comment.line.number-sign.elixir' ],\n regex: '(?:^|\\\\s)(#)(\\\\s[[a-zA-Z0-9,. \\\\t?!-][^\\\\x00-\\\\x7F]]*$)',\n originalRegex: '(?<=^|\\\\s)(#)\\\\s[[a-zA-Z0-9,. \\\\t?!-][^\\\\x{00}-\\\\x{7F}]]*$',\n comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' } ] };\n \n this.normalizeRules();\n};\n\nElixirHighlightRules.metaData = { comment: 'Textmate bundle for Elixir Programming Language.',\n fileTypes: [ 'ex', 'exs' ],\n firstLineMatch: '^#!/.*\\\\belixir',\n foldingStartMarker: '(after|else|catch|rescue|\\\\-\\\\>|\\\\{|\\\\[|do)\\\\s*$',\n foldingStopMarker: '^\\\\s*((\\\\}|\\\\]|after|else|catch|rescue)\\\\s*$|end\\\\b)',\n keyEquivalent: '^~E',\n name: 'Elixir',\n scopeName: 'source.elixir' };\n\n\noop.inherits(ElixirHighlightRules, TextHighlightRules);\n\nexports.ElixirHighlightRules = ElixirHighlightRules;\n});\n\nace.define(\"ace/mode/folding/coffee\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/folding/fold_mode\",\"ace/range\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../../lib/oop\");\nvar BaseFoldMode = acequire(\"./fold_mode\").FoldMode;\nvar Range = acequire(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\noop.inherits(FoldMode, BaseFoldMode);\n\n(function() {\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n var range = this.indentationBlock(session, row);\n if (range)\n return range;\n\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1 || line[startLevel] != \"#\")\n return;\n\n var startColumn = line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n line = session.getLine(row);\n var level = line.search(re);\n\n if (level == -1)\n continue;\n\n if (line[level] != \"#\")\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n var indent = line.search(/\\S/);\n var next = session.getLine(row + 1);\n var prev = session.getLine(row - 1);\n var prevIndent = prev.search(/\\S/);\n var nextIndent = next.search(/\\S/);\n\n if (indent == -1) {\n session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? \"start\" : \"\";\n return \"\";\n }\n if (prevIndent == -1) {\n if (indent == nextIndent && line[indent] == \"#\" && next[indent] == \"#\") {\n session.foldWidgets[row - 1] = \"\";\n session.foldWidgets[row + 1] = \"\";\n return \"start\";\n }\n } else if (prevIndent == indent && line[indent] == \"#\" && prev[indent] == \"#\") {\n if (session.getLine(row - 2).search(/\\S/) == -1) {\n session.foldWidgets[row - 1] = \"start\";\n session.foldWidgets[row + 1] = \"\";\n return \"\";\n }\n }\n\n if (prevIndent!= -1 && prevIndent < indent)\n session.foldWidgets[row - 1] = \"start\";\n else\n session.foldWidgets[row - 1] = \"\";\n\n if (indent < nextIndent)\n return \"start\";\n else\n return \"\";\n };\n\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/mode/elixir\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/text\",\"ace/mode/elixir_highlight_rules\",\"ace/mode/folding/coffee\"], function(acequire, exports, module) {\n\"use strict\";\n\nvar oop = acequire(\"../lib/oop\");\nvar TextMode = acequire(\"./text\").Mode;\nvar ElixirHighlightRules = acequire(\"./elixir_highlight_rules\").ElixirHighlightRules;\nvar FoldMode = acequire(\"./folding/coffee\").FoldMode;\n\nvar Mode = function() {\n this.HighlightRules = ElixirHighlightRules;\n this.foldingRules = new FoldMode();\n this.$behaviour = this.$defaultBehaviour;\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.lineCommentStart = \"#\";\n this.$id = \"ace/mode/elixir\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n","ace.define(\"ace/snippets\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\",\"ace/lib/lang\",\"ace/range\",\"ace/anchor\",\"ace/keyboard/hash_handler\",\"ace/tokenizer\",\"ace/lib/dom\",\"ace/editor\"], function(acequire, exports, module) {\n\"use strict\";\nvar oop = acequire(\"./lib/oop\");\nvar EventEmitter = acequire(\"./lib/event_emitter\").EventEmitter;\nvar lang = acequire(\"./lib/lang\");\nvar Range = acequire(\"./range\").Range;\nvar Anchor = acequire(\"./anchor\").Anchor;\nvar HashHandler = acequire(\"./keyboard/hash_handler\").HashHandler;\nvar Tokenizer = acequire(\"./tokenizer\").Tokenizer;\nvar comparePoints = Range.comparePoints;\n\nvar SnippetManager = function() {\n this.snippetMap = {};\n this.snippetNameMap = {};\n};\n\n(function() {\n oop.implement(this, EventEmitter);\n \n this.getTokenizer = function() {\n function TabstopToken(str, _, stack) {\n str = str.substr(1);\n if (/^\\d+$/.test(str) && !stack.inFormatString)\n return [{tabstopId: parseInt(str, 10)}];\n return [{text: str}];\n }\n function escape(ch) {\n return \"(?:[^\\\\\\\\\" + ch + \"]|\\\\\\\\.)\";\n }\n SnippetManager.$tokenizer = new Tokenizer({\n start: [\n {regex: /:/, onMatch: function(val, state, stack) {\n if (stack.length && stack[0].expectIf) {\n stack[0].expectIf = false;\n stack[0].elseBranch = stack[0];\n return [stack[0]];\n }\n return \":\";\n }},\n {regex: /\\\\./, onMatch: function(val, state, stack) {\n var ch = val[1];\n if (ch == \"}\" && stack.length) {\n val = ch;\n }else if (\"`$\\\\\".indexOf(ch) != -1) {\n val = ch;\n } else if (stack.inFormatString) {\n if (ch == \"n\")\n val = \"\\n\";\n else if (ch == \"t\")\n val = \"\\n\";\n else if (\"ulULE\".indexOf(ch) != -1) {\n val = {changeCase: ch, local: ch > \"a\"};\n }\n }\n\n return [val];\n }},\n {regex: /}/, onMatch: function(val, state, stack) {\n return [stack.length ? stack.shift() : val];\n }},\n {regex: /\\$(?:\\d+|\\w+)/, onMatch: TabstopToken},\n {regex: /\\$\\{[\\dA-Z_a-z]+/, onMatch: function(str, state, stack) {\n var t = TabstopToken(str.substr(1), state, stack);\n stack.unshift(t[0]);\n return t;\n }, next: \"snippetVar\"},\n {regex: /\\n/, token: \"newline\", merge: false}\n ],\n snippetVar: [\n {regex: \"\\\\|\" + escape(\"\\\\|\") + \"*\\\\|\", onMatch: function(val, state, stack) {\n stack[0].choices = val.slice(1, -1).split(\",\");\n }, next: \"start\"},\n {regex: \"/(\" + escape(\"/\") + \"+)/(?:(\" + escape(\"/\") + \"*)/)(\\\\w*):?\",\n onMatch: function(val, state, stack) {\n var ts = stack[0];\n ts.fmtString = val;\n\n val = this.splitRegex.exec(val);\n ts.guard = val[1];\n ts.fmt = val[2];\n ts.flag = val[3];\n return \"\";\n }, next: \"start\"},\n {regex: \"`\" + escape(\"`\") + \"*`\", onMatch: function(val, state, stack) {\n stack[0].code = val.splice(1, -1);\n return \"\";\n }, next: \"start\"},\n {regex: \"\\\\?\", onMatch: function(val, state, stack) {\n if (stack[0])\n stack[0].expectIf = true;\n }, next: \"start\"},\n {regex: \"([^:}\\\\\\\\]|\\\\\\\\.)*:?\", token: \"\", next: \"start\"}\n ],\n formatString: [\n {regex: \"/(\" + escape(\"/\") + \"+)/\", token: \"regex\"},\n {regex: \"\", onMatch: function(val, state, stack) {\n stack.inFormatString = true;\n }, next: \"start\"}\n ]\n });\n SnippetManager.prototype.getTokenizer = function() {\n return SnippetManager.$tokenizer;\n };\n return SnippetManager.$tokenizer;\n };\n\n this.tokenizeTmSnippet = function(str, startState) {\n return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) {\n return x.value || x;\n });\n };\n\n this.$getDefaultValue = function(editor, name) {\n if (/^[A-Z]\\d+$/.test(name)) {\n var i = name.substr(1);\n return (this.variables[name[0] + \"__\"] || {})[i];\n }\n if (/^\\d+$/.test(name)) {\n return (this.variables.__ || {})[name];\n }\n name = name.replace(/^TM_/, \"\");\n\n if (!editor)\n return;\n var s = editor.session;\n switch(name) {\n case \"CURRENT_WORD\":\n var r = s.getWordRange();\n case \"SELECTION\":\n case \"SELECTED_TEXT\":\n return s.getTextRange(r);\n case \"CURRENT_LINE\":\n return s.getLine(editor.getCursorPosition().row);\n case \"PREV_LINE\": // not possible in textmate\n return s.getLine(editor.getCursorPosition().row - 1);\n case \"LINE_INDEX\":\n return editor.getCursorPosition().column;\n case \"LINE_NUMBER\":\n return editor.getCursorPosition().row + 1;\n case \"SOFT_TABS\":\n return s.getUseSoftTabs() ? \"YES\" : \"NO\";\n case \"TAB_SIZE\":\n return s.getTabSize();\n case \"FILENAME\":\n case \"FILEPATH\":\n return \"\";\n case \"FULLNAME\":\n return \"Ace\";\n }\n };\n this.variables = {};\n this.getVariableValue = function(editor, varName) {\n if (this.variables.hasOwnProperty(varName))\n return this.variables[varName](editor, varName) || \"\";\n return this.$getDefaultValue(editor, varName) || \"\";\n };\n this.tmStrFormat = function(str, ch, editor) {\n var flag = ch.flag || \"\";\n var re = ch.guard;\n re = new RegExp(re, flag.replace(/[^gi]/, \"\"));\n var fmtTokens = this.tokenizeTmSnippet(ch.fmt, \"formatString\");\n var _self = this;\n var formatted = str.replace(re, function() {\n _self.variables.__ = arguments;\n var fmtParts = _self.resolveVariables(fmtTokens, editor);\n var gChangeCase = \"E\";\n for (var i = 0; i < fmtParts.length; i++) {\n var ch = fmtParts[i];\n if (typeof ch == \"object\") {\n fmtParts[i] = \"\";\n if (ch.changeCase && ch.local) {\n var next = fmtParts[i + 1];\n if (next && typeof next == \"string\") {\n if (ch.changeCase == \"u\")\n fmtParts[i] = next[0].toUpperCase();\n else\n fmtParts[i] = next[0].toLowerCase();\n fmtParts[i + 1] = next.substr(1);\n }\n } else if (ch.changeCase) {\n gChangeCase = ch.changeCase;\n }\n } else if (gChangeCase == \"U\") {\n fmtParts[i] = ch.toUpperCase();\n } else if (gChangeCase == \"L\") {\n fmtParts[i] = ch.toLowerCase();\n }\n }\n return fmtParts.join(\"\");\n });\n this.variables.__ = null;\n return formatted;\n };\n\n this.resolveVariables = function(snippet, editor) {\n var result = [];\n for (var i = 0; i < snippet.length; i++) {\n var ch = snippet[i];\n if (typeof ch == \"string\") {\n result.push(ch);\n } else if (typeof ch != \"object\") {\n continue;\n } else if (ch.skip) {\n gotoNext(ch);\n } else if (ch.processed < i) {\n continue;\n } else if (ch.text) {\n var value = this.getVariableValue(editor, ch.text);\n if (value && ch.fmtString)\n value = this.tmStrFormat(value, ch);\n ch.processed = i;\n if (ch.expectIf == null) {\n if (value) {\n result.push(value);\n gotoNext(ch);\n }\n } else {\n if (value) {\n ch.skip = ch.elseBranch;\n } else\n gotoNext(ch);\n }\n } else if (ch.tabstopId != null) {\n result.push(ch);\n } else if (ch.changeCase != null) {\n result.push(ch);\n }\n }\n function gotoNext(ch) {\n var i1 = snippet.indexOf(ch, i + 1);\n if (i1 != -1)\n i = i1;\n }\n return result;\n };\n\n this.insertSnippetForSelection = function(editor, snippetText) {\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var tabString = editor.session.getTabString();\n var indentString = line.match(/^\\s*/)[0];\n \n if (cursor.column < indentString.length)\n indentString = indentString.slice(0, cursor.column);\n\n snippetText = snippetText.replace(/\\r/g, \"\");\n var tokens = this.tokenizeTmSnippet(snippetText);\n tokens = this.resolveVariables(tokens, editor);\n tokens = tokens.map(function(x) {\n if (x == \"\\n\")\n return x + indentString;\n if (typeof x == \"string\")\n return x.replace(/\\t/g, tabString);\n return x;\n });\n var tabstops = [];\n tokens.forEach(function(p, i) {\n if (typeof p != \"object\")\n return;\n var id = p.tabstopId;\n var ts = tabstops[id];\n if (!ts) {\n ts = tabstops[id] = [];\n ts.index = id;\n ts.value = \"\";\n }\n if (ts.indexOf(p) !== -1)\n return;\n ts.push(p);\n var i1 = tokens.indexOf(p, i + 1);\n if (i1 === -1)\n return;\n\n var value = tokens.slice(i + 1, i1);\n var isNested = value.some(function(t) {return typeof t === \"object\";});\n if (isNested && !ts.value) {\n ts.value = value;\n } else if (value.length && (!ts.value || typeof ts.value !== \"string\")) {\n ts.value = value.join(\"\");\n }\n });\n tabstops.forEach(function(ts) {ts.length = 0;});\n var expanding = {};\n function copyValue(val) {\n var copy = [];\n for (var i = 0; i < val.length; i++) {\n var p = val[i];\n if (typeof p == \"object\") {\n if (expanding[p.tabstopId])\n continue;\n var j = val.lastIndexOf(p, i - 1);\n p = copy[j] || {tabstopId: p.tabstopId};\n }\n copy[i] = p;\n }\n return copy;\n }\n for (var i = 0; i < tokens.length; i++) {\n var p = tokens[i];\n if (typeof p != \"object\")\n continue;\n var id = p.tabstopId;\n var i1 = tokens.indexOf(p, i + 1);\n if (expanding[id]) {\n if (expanding[id] === p)\n expanding[id] = null;\n continue;\n }\n \n var ts = tabstops[id];\n var arg = typeof ts.value == \"string\" ? [ts.value] : copyValue(ts.value);\n arg.unshift(i + 1, Math.max(0, i1 - i));\n arg.push(p);\n expanding[id] = p;\n tokens.splice.apply(tokens, arg);\n\n if (ts.indexOf(p) === -1)\n ts.push(p);\n }\n var row = 0, column = 0;\n var text = \"\";\n tokens.forEach(function(t) {\n if (typeof t === \"string\") {\n var lines = t.split(\"\\n\");\n if (lines.length > 1){\n column = lines[lines.length - 1].length;\n row += lines.length - 1;\n } else\n column += t.length;\n text += t;\n } else {\n if (!t.start)\n t.start = {row: row, column: column};\n else\n t.end = {row: row, column: column};\n }\n });\n var range = editor.getSelectionRange();\n var end = editor.session.replace(range, text);\n\n var tabstopManager = new TabstopManager(editor);\n var selectionId = editor.inVirtualSelectionMode && editor.selection.index;\n tabstopManager.addTabstops(tabstops, range.start, end, selectionId);\n };\n \n this.insertSnippet = function(editor, snippetText) {\n var self = this;\n if (editor.inVirtualSelectionMode)\n return self.insertSnippetForSelection(editor, snippetText);\n \n editor.forEachSelection(function() {\n self.insertSnippetForSelection(editor, snippetText);\n }, null, {keepOrder: true});\n \n if (editor.tabstopManager)\n editor.tabstopManager.tabNext();\n };\n\n this.$getScope = function(editor) {\n var scope = editor.session.$mode.$id || \"\";\n scope = scope.split(\"/\").pop();\n if (scope === \"html\" || scope === \"php\") {\n if (scope === \"php\" && !editor.session.$mode.inlinePhp) \n scope = \"html\";\n var c = editor.getCursorPosition();\n var state = editor.session.getState(c.row);\n if (typeof state === \"object\") {\n state = state[0];\n }\n if (state.substring) {\n if (state.substring(0, 3) == \"js-\")\n scope = \"javascript\";\n else if (state.substring(0, 4) == \"css-\")\n scope = \"css\";\n else if (state.substring(0, 4) == \"php-\")\n scope = \"php\";\n }\n }\n \n return scope;\n };\n\n this.getActiveScopes = function(editor) {\n var scope = this.$getScope(editor);\n var scopes = [scope];\n var snippetMap = this.snippetMap;\n if (snippetMap[scope] && snippetMap[scope].includeScopes) {\n scopes.push.apply(scopes, snippetMap[scope].includeScopes);\n }\n scopes.push(\"_\");\n return scopes;\n };\n\n this.expandWithTab = function(editor, options) {\n var self = this;\n var result = editor.forEachSelection(function() {\n return self.expandSnippetForSelection(editor, options);\n }, null, {keepOrder: true});\n if (result && editor.tabstopManager)\n editor.tabstopManager.tabNext();\n return result;\n };\n \n this.expandSnippetForSelection = function(editor, options) {\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var before = line.substring(0, cursor.column);\n var after = line.substr(cursor.column);\n\n var snippetMap = this.snippetMap;\n var snippet;\n this.getActiveScopes(editor).some(function(scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = this.findMatchingSnippet(snippets, before, after);\n return !!snippet;\n }, this);\n if (!snippet)\n return false;\n if (options && options.dryRun)\n return true;\n editor.session.doc.removeInLine(cursor.row,\n cursor.column - snippet.replaceBefore.length,\n cursor.column + snippet.replaceAfter.length\n );\n\n this.variables.M__ = snippet.matchBefore;\n this.variables.T__ = snippet.matchAfter;\n this.insertSnippetForSelection(editor, snippet.content);\n\n this.variables.M__ = this.variables.T__ = null;\n return true;\n };\n\n this.findMatchingSnippet = function(snippetList, before, after) {\n for (var i = snippetList.length; i--;) {\n var s = snippetList[i];\n if (s.startRe && !s.startRe.test(before))\n continue;\n if (s.endRe && !s.endRe.test(after))\n continue;\n if (!s.startRe && !s.endRe)\n continue;\n\n s.matchBefore = s.startRe ? s.startRe.exec(before) : [\"\"];\n s.matchAfter = s.endRe ? s.endRe.exec(after) : [\"\"];\n s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : \"\";\n s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : \"\";\n return s;\n }\n };\n\n this.snippetMap = {};\n this.snippetNameMap = {};\n this.register = function(snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n var self = this;\n \n if (!snippets) \n snippets = [];\n \n function wrapRegexp(src) {\n if (src && !/^\\^?\\(.*\\)\\$?$|^\\\\b$/.test(src))\n src = \"(?:\" + src + \")\";\n\n return src || \"\";\n }\n function guardedRegexp(re, guard, opening) {\n re = wrapRegexp(re);\n guard = wrapRegexp(guard);\n if (opening) {\n re = guard + re;\n if (re && re[re.length - 1] != \"$\")\n re = re + \"$\";\n } else {\n re = re + guard;\n if (re && re[0] != \"^\")\n re = \"^\" + re;\n }\n return new RegExp(re);\n }\n\n function addSnippet(s) {\n if (!s.scope)\n s.scope = scope || \"_\";\n scope = s.scope;\n if (!snippetMap[scope]) {\n snippetMap[scope] = [];\n snippetNameMap[scope] = {};\n }\n\n var map = snippetNameMap[scope];\n if (s.name) {\n var old = map[s.name];\n if (old)\n self.unregister(old);\n map[s.name] = s;\n }\n snippetMap[scope].push(s);\n\n if (s.tabTrigger && !s.trigger) {\n if (!s.guard && /^\\w/.test(s.tabTrigger))\n s.guard = \"\\\\b\";\n s.trigger = lang.escapeRegExp(s.tabTrigger);\n }\n \n if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard)\n return;\n \n s.startRe = guardedRegexp(s.trigger, s.guard, true);\n s.triggerRe = new RegExp(s.trigger, \"\", true);\n\n s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true);\n s.endTriggerRe = new RegExp(s.endTrigger, \"\", true);\n }\n\n if (snippets && snippets.content)\n addSnippet(snippets);\n else if (Array.isArray(snippets))\n snippets.forEach(addSnippet);\n \n this._signal(\"registerSnippets\", {scope: scope});\n };\n this.unregister = function(snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n\n function removeSnippet(s) {\n var nameMap = snippetNameMap[s.scope||scope];\n if (nameMap && nameMap[s.name]) {\n delete nameMap[s.name];\n var map = snippetMap[s.scope||scope];\n var i = map && map.indexOf(s);\n if (i >= 0)\n map.splice(i, 1);\n }\n }\n if (snippets.content)\n removeSnippet(snippets);\n else if (Array.isArray(snippets))\n snippets.forEach(removeSnippet);\n };\n this.parseSnippetFile = function(str) {\n str = str.replace(/\\r/g, \"\");\n var list = [], snippet = {};\n var re = /^#.*|^({[\\s\\S]*})\\s*$|^(\\S+) (.*)$|^((?:\\n*\\t.*)+)/gm;\n var m;\n while (m = re.exec(str)) {\n if (m[1]) {\n try {\n snippet = JSON.parse(m[1]);\n list.push(snippet);\n } catch (e) {}\n } if (m[4]) {\n snippet.content = m[4].replace(/^\\t/gm, \"\");\n list.push(snippet);\n snippet = {};\n } else {\n var key = m[2], val = m[3];\n if (key == \"regex\") {\n var guardRe = /\\/((?:[^\\/\\\\]|\\\\.)*)|$/g;\n snippet.guard = guardRe.exec(val)[1];\n snippet.trigger = guardRe.exec(val)[1];\n snippet.endTrigger = guardRe.exec(val)[1];\n snippet.endGuard = guardRe.exec(val)[1];\n } else if (key == \"snippet\") {\n snippet.tabTrigger = val.match(/^\\S*/)[0];\n if (!snippet.name)\n snippet.name = val;\n } else {\n snippet[key] = val;\n }\n }\n }\n return list;\n };\n this.getSnippetByName = function(name, editor) {\n var snippetMap = this.snippetNameMap;\n var snippet;\n this.getActiveScopes(editor).some(function(scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = snippets[name];\n return !!snippet;\n }, this);\n return snippet;\n };\n\n}).call(SnippetManager.prototype);\n\n\nvar TabstopManager = function(editor) {\n if (editor.tabstopManager)\n return editor.tabstopManager;\n editor.tabstopManager = this;\n this.$onChange = this.onChange.bind(this);\n this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule;\n this.$onChangeSession = this.onChangeSession.bind(this);\n this.$onAfterExec = this.onAfterExec.bind(this);\n this.attach(editor);\n};\n(function() {\n this.attach = function(editor) {\n this.index = 0;\n this.ranges = [];\n this.tabstops = [];\n this.$openTabstops = null;\n this.selectedTabstop = null;\n\n this.editor = editor;\n this.editor.on(\"change\", this.$onChange);\n this.editor.on(\"changeSelection\", this.$onChangeSelection);\n this.editor.on(\"changeSession\", this.$onChangeSession);\n this.editor.commands.on(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n };\n this.detach = function() {\n this.tabstops.forEach(this.removeTabstopMarkers, this);\n this.ranges = null;\n this.tabstops = null;\n this.selectedTabstop = null;\n this.editor.removeListener(\"change\", this.$onChange);\n this.editor.removeListener(\"changeSelection\", this.$onChangeSelection);\n this.editor.removeListener(\"changeSession\", this.$onChangeSession);\n this.editor.commands.removeListener(\"afterExec\", this.$onAfterExec);\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.tabstopManager = null;\n this.editor = null;\n };\n\n this.onChange = function(delta) {\n var changeRange = delta;\n var isRemove = delta.action[0] == \"r\";\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var lineDif = endRow - startRow;\n var colDiff = end.column - start.column;\n\n if (isRemove) {\n lineDif = -lineDif;\n colDiff = -colDiff;\n }\n if (!this.$inChange && isRemove) {\n var ts = this.selectedTabstop;\n var changedOutside = ts && !ts.some(function(r) {\n return comparePoints(r.start, start) <= 0 && comparePoints(r.end, end) >= 0;\n });\n if (changedOutside)\n return this.detach();\n }\n var ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var r = ranges[i];\n if (r.end.row < start.row)\n continue;\n\n if (isRemove && comparePoints(start, r.start) < 0 && comparePoints(end, r.end) > 0) {\n this.removeRange(r);\n i--;\n continue;\n }\n\n if (r.start.row == startRow && r.start.column > start.column)\n r.start.column += colDiff;\n if (r.end.row == startRow && r.end.column >= start.column)\n r.end.column += colDiff;\n if (r.start.row >= startRow)\n r.start.row += lineDif;\n if (r.end.row >= startRow)\n r.end.row += lineDif;\n\n if (comparePoints(r.start, r.end) > 0)\n this.removeRange(r);\n }\n if (!ranges.length)\n this.detach();\n };\n this.updateLinkedFields = function() {\n var ts = this.selectedTabstop;\n if (!ts || !ts.hasLinkedRanges)\n return;\n this.$inChange = true;\n var session = this.editor.session;\n var text = session.getTextRange(ts.firstNonLinked);\n for (var i = ts.length; i--;) {\n var range = ts[i];\n if (!range.linked)\n continue;\n var fmt = exports.snippetManager.tmStrFormat(text, range.original);\n session.replace(range, fmt);\n }\n this.$inChange = false;\n };\n this.onAfterExec = function(e) {\n if (e.command && !e.command.readOnly)\n this.updateLinkedFields();\n };\n this.onChangeSelection = function() {\n if (!this.editor)\n return;\n var lead = this.editor.selection.lead;\n var anchor = this.editor.selection.anchor;\n var isEmpty = this.editor.selection.isEmpty();\n for (var i = this.ranges.length; i--;) {\n if (this.ranges[i].linked)\n continue;\n var containsLead = this.ranges[i].contains(lead.row, lead.column);\n var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column);\n if (containsLead && containsAnchor)\n return;\n }\n this.detach();\n };\n this.onChangeSession = function() {\n this.detach();\n };\n this.tabNext = function(dir) {\n var max = this.tabstops.length;\n var index = this.index + (dir || 1);\n index = Math.min(Math.max(index, 1), max);\n if (index == max)\n index = 0;\n this.selectTabstop(index);\n if (index === 0)\n this.detach();\n };\n this.selectTabstop = function(index) {\n this.$openTabstops = null;\n var ts = this.tabstops[this.index];\n if (ts)\n this.addTabstopMarkers(ts);\n this.index = index;\n ts = this.tabstops[this.index];\n if (!ts || !ts.length)\n return;\n \n this.selectedTabstop = ts;\n if (!this.editor.inVirtualSelectionMode) { \n var sel = this.editor.multiSelect;\n sel.toSingleRange(ts.firstNonLinked.clone());\n for (var i = ts.length; i--;) {\n if (ts.hasLinkedRanges && ts[i].linked)\n continue;\n sel.addRange(ts[i].clone(), true);\n }\n if (sel.ranges[0])\n sel.addRange(sel.ranges[0].clone());\n } else {\n this.editor.selection.setRange(ts.firstNonLinked);\n }\n \n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n };\n this.addTabstops = function(tabstops, start, end) {\n if (!this.$openTabstops)\n this.$openTabstops = [];\n if (!tabstops[0]) {\n var p = Range.fromPoints(end, end);\n moveRelative(p.start, start);\n moveRelative(p.end, start);\n tabstops[0] = [p];\n tabstops[0].index = 0;\n }\n\n var i = this.index;\n var arg = [i + 1, 0];\n var ranges = this.ranges;\n tabstops.forEach(function(ts, index) {\n var dest = this.$openTabstops[index] || ts;\n \n for (var i = ts.length; i--;) {\n var p = ts[i];\n var range = Range.fromPoints(p.start, p.end || p.start);\n movePoint(range.start, start);\n movePoint(range.end, start);\n range.original = p;\n range.tabstop = dest;\n ranges.push(range);\n if (dest != ts)\n dest.unshift(range);\n else\n dest[i] = range;\n if (p.fmtString) {\n range.linked = true;\n dest.hasLinkedRanges = true;\n } else if (!dest.firstNonLinked)\n dest.firstNonLinked = range;\n }\n if (!dest.firstNonLinked)\n dest.hasLinkedRanges = false;\n if (dest === ts) {\n arg.push(dest);\n this.$openTabstops[index] = dest;\n }\n this.addTabstopMarkers(dest);\n }, this);\n \n if (arg.length > 2) {\n if (this.tabstops.length)\n arg.push(arg.splice(2, 1)[0]);\n this.tabstops.splice.apply(this.tabstops, arg);\n }\n };\n\n this.addTabstopMarkers = function(ts) {\n var session = this.editor.session;\n ts.forEach(function(range) {\n if (!range.markerId)\n range.markerId = session.addMarker(range, \"ace_snippet-marker\", \"text\");\n });\n };\n this.removeTabstopMarkers = function(ts) {\n var session = this.editor.session;\n ts.forEach(function(range) {\n session.removeMarker(range.markerId);\n range.markerId = null;\n });\n };\n this.removeRange = function(range) {\n var i = range.tabstop.indexOf(range);\n range.tabstop.splice(i, 1);\n i = this.ranges.indexOf(range);\n this.ranges.splice(i, 1);\n this.editor.session.removeMarker(range.markerId);\n if (!range.tabstop.length) {\n i = this.tabstops.indexOf(range.tabstop);\n if (i != -1)\n this.tabstops.splice(i, 1);\n if (!this.tabstops.length)\n this.detach();\n }\n };\n\n this.keyboardHandler = new HashHandler();\n this.keyboardHandler.bindKeys({\n \"Tab\": function(ed) {\n if (exports.snippetManager && exports.snippetManager.expandWithTab(ed)) {\n return;\n }\n\n ed.tabstopManager.tabNext(1);\n },\n \"Shift-Tab\": function(ed) {\n ed.tabstopManager.tabNext(-1);\n },\n \"Esc\": function(ed) {\n ed.tabstopManager.detach();\n },\n \"Return\": function(ed) {\n return false;\n }\n });\n}).call(TabstopManager.prototype);\n\n\n\nvar changeTracker = {};\nchangeTracker.onChange = Anchor.prototype.onChange;\nchangeTracker.setPosition = function(row, column) {\n this.pos.row = row;\n this.pos.column = column;\n};\nchangeTracker.update = function(pos, delta, $insertRight) {\n this.$insertRight = $insertRight;\n this.pos = pos; \n this.onChange(delta);\n};\n\nvar movePoint = function(point, diff) {\n if (point.row == 0)\n point.column += diff.column;\n point.row += diff.row;\n};\n\nvar moveRelative = function(point, start) {\n if (point.row == start.row)\n point.column -= start.column;\n point.row -= start.row;\n};\n\n\nacequire(\"./lib/dom\").importCssString(\"\\\n.ace_snippet-marker {\\\n -moz-box-sizing: border-box;\\\n box-sizing: border-box;\\\n background: rgba(194, 193, 208, 0.09);\\\n border: 1px dotted rgba(211, 208, 235, 0.62);\\\n position: absolute;\\\n}\");\n\nexports.snippetManager = new SnippetManager();\n\n\nvar Editor = acequire(\"./editor\").Editor;\n(function() {\n this.insertSnippet = function(content, options) {\n return exports.snippetManager.insertSnippet(this, content, options);\n };\n this.expandSnippet = function(options) {\n return exports.snippetManager.expandWithTab(this, options);\n };\n}).call(Editor.prototype);\n\n});\n\nace.define(\"ace/ext/emmet\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\",\"ace/editor\",\"ace/snippets\",\"ace/range\",\"resources\",\"resources\",\"tabStops\",\"resources\",\"utils\",\"actions\",\"ace/config\",\"ace/config\"], function(acequire, exports, module) {\n\"use strict\";\nvar HashHandler = acequire(\"ace/keyboard/hash_handler\").HashHandler;\nvar Editor = acequire(\"ace/editor\").Editor;\nvar snippetManager = acequire(\"ace/snippets\").snippetManager;\nvar Range = acequire(\"ace/range\").Range;\nvar emmet, emmetPath;\nfunction AceEmmetEditor() {}\n\nAceEmmetEditor.prototype = {\n setupContext: function(editor) {\n this.ace = editor;\n this.indentation = editor.session.getTabString();\n if (!emmet)\n emmet = window.emmet;\n var resources = emmet.resources || emmet.require(\"resources\");\n resources.setVariable(\"indentation\", this.indentation);\n this.$syntax = null;\n this.$syntax = this.getSyntax();\n },\n getSelectionRange: function() {\n var range = this.ace.getSelectionRange();\n var doc = this.ace.session.doc;\n return {\n start: doc.positionToIndex(range.start),\n end: doc.positionToIndex(range.end)\n };\n },\n createSelection: function(start, end) {\n var doc = this.ace.session.doc;\n this.ace.selection.setRange({\n start: doc.indexToPosition(start),\n end: doc.indexToPosition(end)\n });\n },\n getCurrentLineRange: function() {\n var ace = this.ace;\n var row = ace.getCursorPosition().row;\n var lineLength = ace.session.getLine(row).length;\n var index = ace.session.doc.positionToIndex({row: row, column: 0});\n return {\n start: index,\n end: index + lineLength\n };\n },\n getCaretPos: function(){\n var pos = this.ace.getCursorPosition();\n return this.ace.session.doc.positionToIndex(pos);\n },\n setCaretPos: function(index){\n var pos = this.ace.session.doc.indexToPosition(index);\n this.ace.selection.moveToPosition(pos);\n },\n getCurrentLine: function() {\n var row = this.ace.getCursorPosition().row;\n return this.ace.session.getLine(row);\n },\n replaceContent: function(value, start, end, noIndent) {\n if (end == null)\n end = start == null ? this.getContent().length : start;\n if (start == null)\n start = 0; \n \n var editor = this.ace;\n var doc = editor.session.doc;\n var range = Range.fromPoints(doc.indexToPosition(start), doc.indexToPosition(end));\n editor.session.remove(range);\n \n range.end = range.start;\n \n value = this.$updateTabstops(value);\n snippetManager.insertSnippet(editor, value);\n },\n getContent: function(){\n return this.ace.getValue();\n },\n getSyntax: function() {\n if (this.$syntax)\n return this.$syntax;\n var syntax = this.ace.session.$modeId.split(\"/\").pop();\n if (syntax == \"html\" || syntax == \"php\") {\n var cursor = this.ace.getCursorPosition();\n var state = this.ace.session.getState(cursor.row);\n if (typeof state != \"string\")\n state = state[0];\n if (state) {\n state = state.split(\"-\");\n if (state.length > 1)\n syntax = state[0];\n else if (syntax == \"php\")\n syntax = \"html\";\n }\n }\n return syntax;\n },\n getProfileName: function() {\n var resources = emmet.resources || emmet.require(\"resources\");\n switch (this.getSyntax()) {\n case \"css\": return \"css\";\n case \"xml\":\n case \"xsl\":\n return \"xml\";\n case \"html\":\n var profile = resources.getVariable(\"profile\");\n if (!profile)\n profile = this.ace.session.getLines(0,2).join(\"\").search(/]+XHTML/i) != -1 ? \"xhtml\": \"html\";\n return profile;\n default:\n var mode = this.ace.session.$mode;\n return mode.emmetConfig && mode.emmetConfig.profile || \"xhtml\";\n }\n },\n prompt: function(title) {\n return prompt(title);\n },\n getSelection: function() {\n return this.ace.session.getTextRange();\n },\n getFilePath: function() {\n return \"\";\n },\n $updateTabstops: function(value) {\n var base = 1000;\n var zeroBase = 0;\n var lastZero = null;\n var ts = emmet.tabStops || emmet.require('tabStops');\n var resources = emmet.resources || emmet.require(\"resources\");\n var settings = resources.getVocabulary(\"user\");\n var tabstopOptions = {\n tabstop: function(data) {\n var group = parseInt(data.group, 10);\n var isZero = group === 0;\n if (isZero)\n group = ++zeroBase;\n else\n group += base;\n\n var placeholder = data.placeholder;\n if (placeholder) {\n placeholder = ts.processText(placeholder, tabstopOptions);\n }\n\n var result = '${' + group + (placeholder ? ':' + placeholder : '') + '}';\n\n if (isZero) {\n lastZero = [data.start, result];\n }\n\n return result;\n },\n escape: function(ch) {\n if (ch == '$') return '\\\\$';\n if (ch == '\\\\') return '\\\\\\\\';\n return ch;\n }\n };\n\n value = ts.processText(value, tabstopOptions);\n\n if (settings.variables['insert_final_tabstop'] && !/\\$\\{0\\}$/.test(value)) {\n value += '${0}';\n } else if (lastZero) {\n var common = emmet.utils ? emmet.utils.common : emmet.require('utils');\n value = common.replaceSubstring(value, '${0}', lastZero[0], lastZero[1]);\n }\n \n return value;\n }\n};\n\n\nvar keymap = {\n expand_abbreviation: {\"mac\": \"ctrl+alt+e\", \"win\": \"alt+e\"},\n match_pair_outward: {\"mac\": \"ctrl+d\", \"win\": \"ctrl+,\"},\n match_pair_inward: {\"mac\": \"ctrl+j\", \"win\": \"ctrl+shift+0\"},\n matching_pair: {\"mac\": \"ctrl+alt+j\", \"win\": \"alt+j\"},\n next_edit_point: \"alt+right\",\n prev_edit_point: \"alt+left\",\n toggle_comment: {\"mac\": \"command+/\", \"win\": \"ctrl+/\"},\n split_join_tag: {\"mac\": \"shift+command+'\", \"win\": \"shift+ctrl+`\"},\n remove_tag: {\"mac\": \"command+'\", \"win\": \"shift+ctrl+;\"},\n evaluate_math_expression: {\"mac\": \"shift+command+y\", \"win\": \"shift+ctrl+y\"},\n increment_number_by_1: \"ctrl+up\",\n decrement_number_by_1: \"ctrl+down\",\n increment_number_by_01: \"alt+up\",\n decrement_number_by_01: \"alt+down\",\n increment_number_by_10: {\"mac\": \"alt+command+up\", \"win\": \"shift+alt+up\"},\n decrement_number_by_10: {\"mac\": \"alt+command+down\", \"win\": \"shift+alt+down\"},\n select_next_item: {\"mac\": \"shift+command+.\", \"win\": \"shift+ctrl+.\"},\n select_previous_item: {\"mac\": \"shift+command+,\", \"win\": \"shift+ctrl+,\"},\n reflect_css_value: {\"mac\": \"shift+command+r\", \"win\": \"shift+ctrl+r\"},\n\n encode_decode_data_url: {\"mac\": \"shift+ctrl+d\", \"win\": \"ctrl+'\"},\n expand_abbreviation_with_tab: \"Tab\",\n wrap_with_abbreviation: {\"mac\": \"shift+ctrl+a\", \"win\": \"shift+ctrl+a\"}\n};\n\nvar editorProxy = new AceEmmetEditor();\nexports.commands = new HashHandler();\nexports.runEmmetCommand = function runEmmetCommand(editor) {\n try {\n editorProxy.setupContext(editor);\n var actions = emmet.actions || emmet.require(\"actions\");\n \n if (this.action == \"expand_abbreviation_with_tab\") {\n if (!editor.selection.isEmpty())\n return false;\n var pos = editor.selection.lead;\n var token = editor.session.getTokenAt(pos.row, pos.column);\n if (token && /\\btag\\b/.test(token.type))\n return false;\n }\n \n if (this.action == \"wrap_with_abbreviation\") {\n return setTimeout(function() {\n actions.run(\"wrap_with_abbreviation\", editorProxy);\n }, 0);\n }\n \n var result = actions.run(this.action, editorProxy);\n } catch(e) {\n if (!emmet) {\n load(runEmmetCommand.bind(this, editor));\n return true;\n }\n editor._signal(\"changeStatus\", typeof e == \"string\" ? e : e.message);\n console.log(e);\n result = false;\n }\n return result;\n};\n\nfor (var command in keymap) {\n exports.commands.addCommand({\n name: \"emmet:\" + command,\n action: command,\n bindKey: keymap[command],\n exec: exports.runEmmetCommand,\n multiSelectAction: \"forEach\"\n });\n}\n\nexports.updateCommands = function(editor, enabled) {\n if (enabled) {\n editor.keyBinding.addKeyboardHandler(exports.commands);\n } else {\n editor.keyBinding.removeKeyboardHandler(exports.commands);\n }\n};\n\nexports.isSupportedMode = function(mode) {\n if (!mode) return false;\n if (mode.emmetConfig) return true;\n var id = mode.$id || mode;\n return /css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(id);\n};\n\nexports.isAvailable = function(editor, command) {\n if (/(evaluate_math_expression|expand_abbreviation)$/.test(command))\n return true;\n var mode = editor.session.$mode;\n var isSupported = exports.isSupportedMode(mode);\n if (isSupported && mode.$modes) {\n try {\n editorProxy.setupContext(editor);\n if (/js|php/.test(editorProxy.getSyntax()))\n isSupported = false;\n } catch(e) {}\n }\n return isSupported;\n};\n\nvar onChangeMode = function(e, target) {\n var editor = target;\n if (!editor)\n return;\n var enabled = exports.isSupportedMode(editor.session.$mode);\n if (e.enableEmmet === false)\n enabled = false;\n if (enabled)\n load();\n exports.updateCommands(editor, enabled);\n};\n\nvar load = function(cb) {\n if (typeof emmetPath == \"string\") {\n acequire(\"ace/config\").loadModule(emmetPath, function() {\n emmetPath = null;\n cb && cb();\n });\n }\n};\n\nexports.AceEmmetEditor = AceEmmetEditor;\nacequire(\"ace/config\").defineOptions(Editor.prototype, \"editor\", {\n enableEmmet: {\n set: function(val) {\n this[val ? \"on\" : \"removeListener\"](\"changeMode\", onChangeMode);\n onChangeMode({enableEmmet: !!val}, this);\n },\n value: true\n }\n});\n\nexports.setCore = function(e) {\n if (typeof e == \"string\")\n emmetPath = e;\n else\n emmet = e;\n};\n});\n (function() {\n ace.acequire([\"ace/ext/emmet\"], function() {});\n })();\n "],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-8b70.46525646.js b/priv/static/adminfe/static/js/chunk-8b70.46525646.js deleted file mode 100644 index 68b7ea1a3..000000000 --- a/priv/static/adminfe/static/js/chunk-8b70.46525646.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-8b70"],{K3CD:function(e,t,s){},ZvHC:function(e,t,s){"use strict";var n=s("K3CD");s.n(n).a},c11S:function(e,t,s){"use strict";var n=s("gTgX");s.n(n).a},gTgX:function(e,t,s){},ntYl:function(e,t,s){"use strict";s.r(t);var n=s("J4zp"),o=s.n(n),a=s("XJYT"),r=s("wAo7"),i=s("mSNy"),l={name:"Login",components:{"svg-icon":r.a},data:function(){return{loginForm:{username:"",password:""},passwordType:"password",loading:!1,showDialog:!1,redirect:void 0}},watch:{$route:{handler:function(e){this.redirect=e.query&&e.query.redirect},immediate:!0}},methods:{showPwd:function(){"password"===this.passwordType?this.passwordType="":this.passwordType="password"},handleLogin:function(){var e=this;if(this.loading=!0,this.checkUsername()){var t=this.getLoginData();this.$store.dispatch("LoginByUsername",t).then(function(){e.loading=!1,e.$router.push({path:e.redirect||"/users/index"})}).catch(function(){e.loading=!1})}else Object(a.Message)({message:i.a.t("login.errorMessage"),type:"error",duration:7e3}),this.$store.dispatch("addErrorLog",{message:i.a.t("login.errorMessage")}),this.loading=!1},checkUsername:function(){return this.loginForm.username.includes("@")},getLoginData:function(){var e=this.loginForm.username.split("@"),t=o()(e,2),s=t[0],n=t[1];return{username:s.trim(),authHost:n.trim(),password:this.loginForm.password}}}},c=(s("c11S"),s("ZvHC"),s("KHd+")),p=Object(c.a)(l,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"login-container"},[s("el-form",{ref:"loginForm",staticClass:"login-form",attrs:{model:e.loginForm,"auto-complete":"on","label-position":"left"}},[s("div",{staticClass:"title-container"},[s("h3",{staticClass:"title"},[e._v("\n "+e._s(e.$t("login.title"))+"\n ")])]),e._v(" "),s("el-form-item",{attrs:{prop:"username"}},[s("span",{staticClass:"svg-container"},[s("svg-icon",{attrs:{"icon-class":"user"}})],1),e._v(" "),s("el-input",{attrs:{placeholder:e.$t("login.username"),name:"username",type:"text","auto-complete":"on"},model:{value:e.loginForm.username,callback:function(t){e.$set(e.loginForm,"username",t)},expression:"loginForm.username"}})],1),e._v(" "),s("el-form-item",{attrs:{prop:"password"}},[s("span",{staticClass:"svg-container"},[s("svg-icon",{attrs:{"icon-class":"password"}})],1),e._v(" "),s("el-input",{attrs:{type:e.passwordType,placeholder:e.$t("login.password"),name:"password","auto-complete":"on"},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleLogin(t)}},model:{value:e.loginForm.password,callback:function(t){e.$set(e.loginForm,"password",t)},expression:"loginForm.password"}}),e._v(" "),s("span",{staticClass:"show-pwd",on:{click:e.showPwd}},[s("svg-icon",{attrs:{"icon-class":"password"===e.passwordType?"eye":"eye-open"}})],1)],1),e._v(" "),s("el-button",{staticStyle:{width:"100%","margin-bottom":"30px"},attrs:{loading:e.loading,type:"primary"},nativeOn:{click:function(t){return t.preventDefault(),e.handleLogin(t)}}},[e._v("\n "+e._s(e.$t("login.logIn"))+"\n ")])],1)],1)},[],!1,null,"57350b8e",null);p.options.__file="index.vue";t.default=p.exports}}]); \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js b/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js new file mode 100644 index 000000000..c6c4b82ee --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-df62"],{"+s0g":function(e,t,a){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),s=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],n=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},"//9w":function(e,t,a){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},"/X5v":function(e,t,a){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},"0mo+":function(e,t,a){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},a={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,a){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(a("wd/R"))},"0tRk":function(e,t,a){!function(e){"use strict";e.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(a("wd/R"))},"1rYy":function(e,t,a){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(a("wd/R"))},"1xZ4":function(e,t,a){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var a=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(a="a"),e+a},week:{dow:1,doy:4}})}(a("wd/R"))},"2fjn":function(e,t,a){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(a("wd/R"))},"2ykv":function(e,t,a){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),s=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],n=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},"3E1r":function(e,t,a){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(a("wd/R"))},"4MV3":function(e,t,a){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},a={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(a("wd/R"))},"4dOw":function(e,t,a){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},"6+QB":function(e,t,a){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(a("wd/R"))},"6B0Y":function(e,t,a){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},a={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,a){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},week:{dow:1,doy:4}})}(a("wd/R"))},"7BjC":function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?n[a][2]?n[a][2]:n[a][1]:s?n[a][0]:n[a][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},"7aV9":function(e,t,a){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,a){return e>11?a?"ප.ව.":"පස් වරු":a?"පෙ.ව.":"පෙර වරු"}})}(a("wd/R"))},"8/+R":function(e,t,a){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},a={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(a("wd/R"))},"8mBD":function(e,t,a){!function(e){"use strict";e.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},"9rRi":function(e,t,a){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){var t=1===e?"d":e%10==2?"na":"mh";return e+t},week:{dow:1,doy:4}})}(a("wd/R"))},"A+xa":function(e,t,a){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){var t=/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран";return e+t},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(a("wd/R"))},AQ68:function(e,t,a){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(a("wd/R"))},AvvY:function(e,t,a){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,a){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(a("wd/R"))},B55N:function(e,t,a){!function(e){"use strict";e.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,a){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"rati":e<12?"sokalli":e<16?"donparam":e<20?"sanje":"rati"}})}(a("wd/R"))},Dkky:function(e,t,a){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(a("wd/R"))},Dmvi:function(e,t,a){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},DoHr:function(e,t,a){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var s=e%10,n=e%100-s,r=e>=100?100:null;return e+(t[s]||t[n]||t[r])}},week:{dow:1,doy:7}})}(a("wd/R"))},DxQv:function(e,t,a){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},Dzi0:function(e,t,a){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(a("wd/R"))},"E+lV":function(e,t,a){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,s){var n=t.words[s];return 1===s.length?a?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},EOgW:function(e,t,a){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,a){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(a("wd/R"))},G0Uy:function(e,t,a){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},H8ED:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===a?t?"хвіліна":"хвіліну":"h"===a?t?"гадзіна":"гадзіну":e+" "+function(e,t){var a=e.split("_");return t%10==1&&t%100!=11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}(s[a],+e)}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(a("wd/R"))},HP3h:function(e,t,a){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},a=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},s={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},n=function(e){return function(t,n,r,d){var i=a(t),_=s[e][a(t)];return 2===i&&(_=_[n?0:1]),_.replace(/%d/i,t)}},r=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:n("s"),ss:n("s"),m:n("m"),mm:n("m"),h:n("h"),hh:n("h"),d:n("d"),dd:n("d"),M:n("M"),MM:n("M"),y:n("y"),yy:n("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(a("wd/R"))},IBtZ:function(e,t,a){!function(e){"use strict";e.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,"ში"):e+"ში"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(a("wd/R"))},"Ivi+":function(e,t,a){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,a){return e<12?"오전":"오후"}})}(a("wd/R"))},"JCF/":function(e,t,a){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},s=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:s,monthsShort:s,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(e){return/ئێواره‌/.test(e)},meridiem:function(e,t,a){return e<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(a("wd/R"))},JVSJ:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s=e+" ";switch(a){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},JvlW:function(e,t,a){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function a(e,t,a,s){return t?n(a)[0]:s?n(a)[1]:n(a)[2]}function s(e){return e%10==0||e>10&&e<20}function n(e){return t[e].split("_")}function r(e,t,r,d){var i=e+" ";return 1===e?i+a(0,t,r[0],d):t?i+(s(e)?n(r)[1]:n(r)[0]):d?i+n(r)[1]:i+(s(e)?n(r)[1]:n(r)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,a,s){return t?"kelios sekundės":s?"kelių sekundžių":"kelias sekundes"},ss:r,m:a,mm:r,h:a,hh:r,d:a,dd:r,M:a,MM:r,y:a,yy:r},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(a("wd/R"))},"K/tc":function(e,t,a){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,a){return e<12?a?"vm":"VM":a?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},KSF8:function(e,t,a){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,a){return e<12?a?"sa":"SA":a?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(a("wd/R"))},KTz0:function(e,t,a){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,s){var n=t.words[s];return 1===s.length?a?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},Loxo:function(e,t,a){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(a("wd/R"))},OIYi:function(e,t,a){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}})}(a("wd/R"))},Oaa7:function(e,t,a){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},Ob0Z:function(e,t,a){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function s(e,t,a,s){var n="";if(t)switch(a){case"s":n="काही सेकंद";break;case"ss":n="%d सेकंद";break;case"m":n="एक मिनिट";break;case"mm":n="%d मिनिटे";break;case"h":n="एक तास";break;case"hh":n="%d तास";break;case"d":n="एक दिवस";break;case"dd":n="%d दिवस";break;case"M":n="एक महिना";break;case"MM":n="%d महिने";break;case"y":n="एक वर्ष";break;case"yy":n="%d वर्षे"}else switch(a){case"s":n="काही सेकंदां";break;case"ss":n="%d सेकंदां";break;case"m":n="एका मिनिटा";break;case"mm":n="%d मिनिटां";break;case"h":n="एका तासा";break;case"hh":n="%d तासां";break;case"d":n="एका दिवसा";break;case"dd":n="%d दिवसां";break;case"M":n="एका महिन्या";break;case"MM":n="%d महिन्यां";break;case"y":n="एका वर्षा";break;case"yy":n="%d वर्षां"}return n.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात्री"===t?e<4?e:e+12:"सकाळी"===t?e:"दुपारी"===t?e>=10?e:e+12:"सायंकाळी"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"रात्री":e<10?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(a("wd/R"))},OjkT:function(e,t,a){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,a){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(a("wd/R"))},Oxv6:function(e,t,a){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){var a=e%10,s=e>=100?100:null;return e+(t[e]||t[a]||t[s])},week:{dow:1,doy:7}})}(a("wd/R"))},PA2r:function(e,t,a){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),a="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),s=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],n=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function r(e){return e>1&&e<5&&1!=~~(e/10)}function d(e,t,a,s){var n=e+" ";switch(a){case"s":return t||s?"pár sekund":"pár sekundami";case"ss":return t||s?n+(r(e)?"sekundy":"sekund"):n+"sekundami";case"m":return t?"minuta":s?"minutu":"minutou";case"mm":return t||s?n+(r(e)?"minuty":"minut"):n+"minutami";case"h":return t?"hodina":s?"hodinu":"hodinou";case"hh":return t||s?n+(r(e)?"hodiny":"hodin"):n+"hodinami";case"d":return t||s?"den":"dnem";case"dd":return t||s?n+(r(e)?"dny":"dní"):n+"dny";case"M":return t||s?"měsíc":"měsícem";case"MM":return t||s?n+(r(e)?"měsíce":"měsíců"):n+"měsíci";case"y":return t||s?"rok":"rokem";case"yy":return t||s?n+(r(e)?"roky":"let"):n+"lety"}}e.defineLocale("cs",{months:t,monthsShort:a,monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:d,ss:d,m:d,mm:d,h:d,hh:d,d:d,dd:d,M:d,MM:d,y:d,yy:d},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},PeUW:function(e,t,a){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},a={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,a){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t?e:"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(a("wd/R"))},PpIw:function(e,t,a){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},a={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(a("wd/R"))},Qj4J:function(e,t,a){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(a("wd/R"))},RAwQ:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?n[a][0]:n[a][1]}function a(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10,s=e/10;return a(0===t?s:t)}if(e<1e4){for(;e>=10;)e/=10;return a(e)}return a(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return a(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return a(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},S6ln:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s=e+" ";switch(a){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},SFxW:function(e,t,a){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,a){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var a=e%10,s=e%100-a,n=e>=100?100:null;return e+(t[a]||t[s]||t[n])},week:{dow:1,doy:7}})}(a("wd/R"))},SatO:function(e,t,a){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,a){var s=100*e+t;return s<600?"凌晨":s<900?"早上":s<1130?"上午":s<1230?"中午":s<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(a("wd/R"))},UDhR:function(e,t,a){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(a("wd/R"))},USCx:function(e,t,a){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],monthsShort:["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],weekdaysShort:["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],weekdaysMin:["Do","Lu","Má","Ce","Dé","hA","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){var t=1===e?"d":e%10==2?"na":"mh";return e+t},week:{dow:1,doy:4}})}(a("wd/R"))},UpQW:function(e,t,a){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],a=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,a){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(a("wd/R"))},Ur1D:function(e,t,a){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,a){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(a("wd/R"))},V2x9:function(e,t,a){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},Vclq:function(e,t,a){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),a="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),s=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(a("wd/R"))},WYrj:function(e,t,a){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],a=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,a){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(a("wd/R"))},WxRl:function(e,t,a){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function a(e,t,a,s){var n=e;switch(a){case"s":return s||t?"néhány másodperc":"néhány másodperce";case"ss":return n+(s||t)?" másodperc":" másodperce";case"m":return"egy"+(s||t?" perc":" perce");case"mm":return n+(s||t?" perc":" perce");case"h":return"egy"+(s||t?" óra":" órája");case"hh":return n+(s||t?" óra":" órája");case"d":return"egy"+(s||t?" nap":" napja");case"dd":return n+(s||t?" nap":" napja");case"M":return"egy"+(s||t?" hónap":" hónapja");case"MM":return n+(s||t?" hónap":" hónapja");case"y":return"egy"+(s||t?" év":" éve");case"yy":return n+(s||t?" év":" éve")}return""}function s(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,a){return e<12?!0===a?"de":"DE":!0===a?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return s.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return s.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},X709:function(e,t,a){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"e":1===t?"a":2===t?"a":"e";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},XDpg:function(e,t,a){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,a){var s=100*e+t;return s<600?"凌晨":s<900?"早上":s<1130?"上午":s<1230?"中午":s<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(a("wd/R"))},XLvN:function(e,t,a){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(a("wd/R"))},YRex:function(e,t,a){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,a){var s=100*e+t;return s<600?"يېرىم كېچە":s<900?"سەھەر":s<1130?"چۈشتىن بۇرۇن":s<1230?"چۈش":s<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(a("wd/R"))},Z4QM:function(e,t,a){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],a=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,a){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(a("wd/R"))},ZAMP:function(e,t,a){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(a("wd/R"))},Zduo:function(e,t,a){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,a){return e>11?a?"p.t.m.":"P.T.M.":a?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(a("wd/R"))},aIdf:function(e,t,a){!function(e){"use strict";function t(e,t,a){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[a],e)}e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(function e(t){return t>9?e(t%10):t}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){var t=1===e?"añ":"vet";return e+t},week:{dow:1,doy:4}})}(a("wd/R"))},aIsn:function(e,t,a){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},aQkU:function(e,t,a){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-ев":0===a?e+"-ен":a>10&&a<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(a("wd/R"))},b1Dy:function(e,t,a){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},bOMt:function(e,t,a){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},bXm7:function(e,t,a){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var a=e%10,s=e>=100?100:null;return e+(t[e]||t[a]||t[s])},week:{dow:1,doy:7}})}(a("wd/R"))},bYM6:function(e,t,a){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(a("wd/R"))},bpih:function(e,t,a){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},bxKX:function(e,t,a){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},cRix:function(e,t,a){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),a="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(a("wd/R"))},czMo:function(e,t,a){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}})}(a("wd/R"))},dNwA:function(e,t,a){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(a("wd/R"))},"e+ae":function(e,t,a){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),a="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function s(e){return e>1&&e<5}function n(e,t,a,n){var r=e+" ";switch(a){case"s":return t||n?"pár sekúnd":"pár sekundami";case"ss":return t||n?r+(s(e)?"sekundy":"sekúnd"):r+"sekundami";case"m":return t?"minúta":n?"minútu":"minútou";case"mm":return t||n?r+(s(e)?"minúty":"minút"):r+"minútami";case"h":return t?"hodina":n?"hodinu":"hodinou";case"hh":return t||n?r+(s(e)?"hodiny":"hodín"):r+"hodinami";case"d":return t||n?"deň":"dňom";case"dd":return t||n?r+(s(e)?"dni":"dní"):r+"dňami";case"M":return t||n?"mesiac":"mesiacom";case"MM":return t||n?r+(s(e)?"mesiace":"mesiacov"):r+"mesiacmi";case"y":return t||n?"rok":"rokom";case"yy":return t||n?r+(s(e)?"roky":"rokov"):r+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:a,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},fzPg:function(e,t,a){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(a("wd/R"))},gVVK:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n=e+" ";switch(a){case"s":return t||s?"nekaj sekund":"nekaj sekundami";case"ss":return n+=1===e?t?"sekundo":"sekundi":2===e?t||s?"sekundi":"sekundah":e<5?t||s?"sekunde":"sekundah":"sekund";case"m":return t?"ena minuta":"eno minuto";case"mm":return n+=1===e?t?"minuta":"minuto":2===e?t||s?"minuti":"minutama":e<5?t||s?"minute":"minutami":t||s?"minut":"minutami";case"h":return t?"ena ura":"eno uro";case"hh":return n+=1===e?t?"ura":"uro":2===e?t||s?"uri":"urama":e<5?t||s?"ure":"urami":t||s?"ur":"urami";case"d":return t||s?"en dan":"enim dnem";case"dd":return n+=1===e?t||s?"dan":"dnem":2===e?t||s?"dni":"dnevoma":t||s?"dni":"dnevi";case"M":return t||s?"en mesec":"enim mesecem";case"MM":return n+=1===e?t||s?"mesec":"mesecem":2===e?t||s?"meseca":"mesecema":e<5?t||s?"mesece":"meseci":t||s?"mesecev":"meseci";case"y":return t||s?"eno leto":"enim letom";case"yy":return n+=1===e?t||s?"leto":"letom":2===e?t||s?"leti":"letoma":e<5?t||s?"leta":"leti":t||s?"let":"leti"}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))},gekB:function(e,t,a){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),a=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function s(e,s,n,r){var d="";switch(n){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"ss":return r?"sekunnin":"sekuntia";case"m":return r?"minuutin":"minuutti";case"mm":d=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":d=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":d=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":d=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":d=r?"vuoden":"vuotta"}return d=function(e,s){return e<10?s?a[e]:t[e]:e}(e,r)+" "+d}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},gjCT:function(e,t,a){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:0,doy:6}})}(a("wd/R"))},hKrs:function(e,t,a){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-ев":0===a?e+"-ен":a>10&&a<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(a("wd/R"))},honF:function(e,t,a){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},a={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},week:{dow:1,doy:4}})}(a("wd/R"))},iEDd:function(e,t,a){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},iYuL:function(e,t,a){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),a="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),s=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,s){return e?/-MMM-/.test(s)?a[e.month()]:t[e.month()]:t},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a("wd/R"))},jUeY:function(e,t,a){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,a){return e>11?a?"μμ":"ΜΜ":a?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var a=this._calendarEl[e],s=t&&t.hours();return function(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}(a)&&(a=a.apply(t)),a.replace("{}",s%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(a("wd/R"))},jVdC:function(e,t,a){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),a="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function s(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function n(e,t,a){var n=e+" ";switch(a){case"ss":return n+(s(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return n+(s(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return n+(s(e)?"godziny":"godzin");case"MM":return n+(s(e)?"miesiące":"miesięcy");case"yy":return n+(s(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,s){return e?""===s?"("+a[e.month()]+"|"+t[e.month()]+")":/D MMMM/.test(s)?a[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:n,m:n,mm:n,h:n,hh:n,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:n,y:"rok",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},jfSC:function(e,t,a){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},a={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,a){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(a("wd/R"))},jnO4:function(e,t,a){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},s=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,a,r,d){var i=s(t),_=n[e][s(t)];return 2===i&&(_=_[a?0:1]),_.replace(/%d/i,t)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(a("wd/R"))},kEOa:function(e,t,a){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},a={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,a){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(a("wd/R"))},kOpN:function(e,t,a){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,a){var s=100*e+t;return s<600?"凌晨":s<900?"早上":s<1130?"上午":s<1230?"中午":s<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(a("wd/R"))},l5ep:function(e,t,a){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t=e,a="";return t>20?a=40===t||50===t||60===t||80===t||100===t?"fed":"ain":t>0&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][t]),e+a},week:{dow:1,doy:4}})}(a("wd/R"))},lXzo:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===a?t?"минута":"минуту":e+" "+function(e,t){var a=e.split("_");return t%10==1&&t%100!=11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}(s[a],+e)}var a=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:a,longMonthsParse:a,shortMonthsParse:a,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(a("wd/R"))},lYtQ:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){switch(a){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,a){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(a("wd/R"))},lgnt:function(e,t,a){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){var a=e%10,s=e>=100?100:null;return e+(t[e]||t[a]||t[s])},week:{dow:1,doy:7}})}(a("wd/R"))},lyxo:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s=" ";return(e%100>=20||e>=100&&e%100==0)&&(s=" de "),e+s+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[a]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(a("wd/R"))},nyYc:function(e,t,a){!function(e){"use strict";e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(a("wd/R"))},o1bE:function(e,t,a){!function(e){"use strict";e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})}(a("wd/R"))},"p/rL":function(e,t,a){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(a("wd/R"))},raLr:function(e,t,a){!function(e){"use strict";function t(e,t,a){var s={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===a?t?"хвилина":"хвилину":"h"===a?t?"година":"годину":e+" "+function(e,t){var a=e.split("_");return t%10==1&&t%100!=11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}(s[a],+e)}function a(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var a={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};if(!0===e)return a.nominative.slice(1,7).concat(a.nominative.slice(0,1));if(!e)return a.nominative;var s=/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative";return a[s][e.day()]},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:a("[Сьогодні "),nextDay:a("[Завтра "),lastDay:a("[Вчора "),nextWeek:a("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return a("[Минулої] dddd [").call(this);case 1:case 2:case 4:return a("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(a("wd/R"))},"s+uk":function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},sp3z:function(e,t,a){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,a){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(a("wd/R"))},tGlX:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},tT3J:function(e,t,a){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(a("wd/R"))},tUCv:function(e,t,a){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(a("wd/R"))},u3GI:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?n[a][0]:n[a][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},uEye:function(e,t,a){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},uXwI:function(e,t,a){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function a(e,t,a){return a?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function s(e,s,n){return e+" "+a(t[n],e,s)}function n(e,s,n){return a(t[n],e,s)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},wQk9:function(e,t,a){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(a("wd/R"))},"wd/R":function(e,t,a){(function(e){e.exports=function(){"use strict";var t,s;function n(){return t.apply(null,arguments)}function r(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function d(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function i(e){return void 0===e}function _(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function o(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function u(e,t){var a,s=[];for(a=0;a>>0,s=0;s0)for(a=0;a=0;return(r?a?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+s}var J=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,N=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,C={},I={};function U(e,t,a,s){var n=s;"string"==typeof s&&(n=function(){return this[s]()}),e&&(I[e]=n),t&&(I[t[0]]=function(){return z(n.apply(this,arguments),t[1],t[2])}),a&&(I[a]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function G(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function V(e,t){return e.isValid()?(t=K(t,e.localeData()),C[t]=C[t]||function(e){var t,a,s=e.match(J);for(t=0,a=s.length;t=0&&N.test(e);)e=e.replace(N,s),N.lastIndex=0,a-=1;return e}var Z=/\d/,B=/\d\d/,$=/\d{3}/,q=/\d{4}/,Q=/[+-]?\d{6}/,X=/\d\d?/,ee=/\d\d\d\d?/,te=/\d\d\d\d\d\d?/,ae=/\d{1,3}/,se=/\d{1,4}/,ne=/[+-]?\d{1,6}/,re=/\d+/,de=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,_e=/Z|[+-]\d\d(?::?\d\d)?/gi,oe=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ue={};function me(e,t,a){ue[e]=j(t)?t:function(e,s){return e&&a?a:t}}function le(e,t){return m(ue,e)?ue[e](t._strict,t._locale):new RegExp(function(e){return Me(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,a,s,n){return t||a||s||n}))}(e))}function Me(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var he={};function ce(e,t){var a,s=t;for("string"==typeof e&&(e=[e]),_(t)&&(s=function(e,a){a[t]=T(e)}),a=0;a68?1900:2e3)};var be,je=xe("FullYear",!0);function xe(e,t){return function(a){return null!=a?(Pe(this,e,a),n.updateOffset(this,t),this):Oe(this,e)}}function Oe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Pe(e,t,a){e.isValid()&&!isNaN(a)&&("FullYear"===t&&He(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](a,e.month(),We(a,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](a))}function We(e,t){if(isNaN(e)||isNaN(t))return NaN;var a=function(e,t){return(e%t+t)%t}(t,12);return e+=(t-a)/12,1===a?He(e)?29:28:31-a%7%2}be=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t=0){var a=Array.prototype.slice.call(arguments);a[0]=e+400,t=new Date(Date.UTC.apply(null,a)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Ue(e,t,a){var s=7+t-a,n=(7+Ie(e,0,s).getUTCDay()-t)%7;return-n+s-1}function Ge(e,t,a,s,n){var r,d,i=(7+a-s)%7,_=Ue(e,s,n),o=1+7*(t-1)+i+_;return o<=0?d=Se(r=e-1)+o:o>Se(e)?(r=e+1,d=o-Se(e)):(r=e,d=o),{year:r,dayOfYear:d}}function Ve(e,t,a){var s,n,r=Ue(e.year(),t,a),d=Math.floor((e.dayOfYear()-r-1)/7)+1;return d<1?(n=e.year()-1,s=d+Ke(n,t,a)):d>Ke(e.year(),t,a)?(s=d-Ke(e.year(),t,a),n=e.year()+1):(n=e.year(),s=d),{week:s,year:n}}function Ke(e,t,a){var s=Ue(e,t,a),n=Ue(e+1,t,a);return(Se(e)-s+n)/7}function Ze(e,t){return e.slice(t,7).concat(e.slice(0,t))}U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),W("week","w"),W("isoWeek","W"),R("week",5),R("isoWeek",5),me("w",X),me("ww",X,B),me("W",X),me("WW",X,B),Le(["w","ww","W","WW"],function(e,t,a,s){t[s.substr(0,1)]=T(e)}),U("d",0,"do","day"),U("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),U("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),U("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),W("day","d"),W("weekday","e"),W("isoWeekday","E"),R("day",11),R("weekday",11),R("isoWeekday",11),me("d",X),me("e",X),me("E",X),me("dd",function(e,t){return t.weekdaysMinRegex(e)}),me("ddd",function(e,t){return t.weekdaysShortRegex(e)}),me("dddd",function(e,t){return t.weekdaysRegex(e)}),Le(["dd","ddd","dddd"],function(e,t,a,s){var n=a._locale.weekdaysParse(e,s,a._strict);null!=n?t.d=n:h(a).invalidWeekday=e}),Le(["d","e","E"],function(e,t,a,s){t[s]=T(e)});var Be="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),$e="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),qe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Qe=oe,Xe=oe,et=oe;function tt(){function e(e,t){return t.length-e.length}var t,a,s,n,r,d=[],i=[],_=[],o=[];for(t=0;t<7;t++)a=M([2e3,1]).day(t),s=this.weekdaysMin(a,""),n=this.weekdaysShort(a,""),r=this.weekdays(a,""),d.push(s),i.push(n),_.push(r),o.push(s),o.push(n),o.push(r);for(d.sort(e),i.sort(e),_.sort(e),o.sort(e),t=0;t<7;t++)i[t]=Me(i[t]),_[t]=Me(_[t]),o[t]=Me(o[t]);this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+d.join("|")+")","i")}function at(){return this.hours()%12||12}function st(e,t){U(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function nt(e,t){return t._meridiemParse}U("H",["HH",2],0,"hour"),U("h",["hh",2],0,at),U("k",["kk",2],0,function(){return this.hours()||24}),U("hmm",0,0,function(){return""+at.apply(this)+z(this.minutes(),2)}),U("hmmss",0,0,function(){return""+at.apply(this)+z(this.minutes(),2)+z(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+z(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+z(this.minutes(),2)+z(this.seconds(),2)}),st("a",!0),st("A",!1),W("hour","h"),R("hour",13),me("a",nt),me("A",nt),me("H",X),me("h",X),me("k",X),me("HH",X,B),me("hh",X,B),me("kk",X,B),me("hmm",ee),me("hmmss",te),me("Hmm",ee),me("Hmmss",te),ce(["H","HH"],ke),ce(["k","kk"],function(e,t,a){var s=T(e);t[ke]=24===s?0:s}),ce(["a","A"],function(e,t,a){a._isPm=a._locale.isPM(e),a._meridiem=e}),ce(["h","hh"],function(e,t,a){t[ke]=T(e),h(a).bigHour=!0}),ce("hmm",function(e,t,a){var s=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s)),h(a).bigHour=!0}),ce("hmmss",function(e,t,a){var s=e.length-4,n=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s,2)),t[Te]=T(e.substr(n)),h(a).bigHour=!0}),ce("Hmm",function(e,t,a){var s=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s))}),ce("Hmmss",function(e,t,a){var s=e.length-4,n=e.length-2;t[ke]=T(e.substr(0,s)),t[De]=T(e.substr(s,2)),t[Te]=T(e.substr(n))});var rt,dt=xe("Hours",!0),it={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ee,monthsShort:Fe,week:{dow:0,doy:6},weekdays:Be,weekdaysMin:qe,weekdaysShort:$e,meridiemParse:/[ap]\.?m?\.?/i},_t={},ot={};function ut(e){return e?e.toLowerCase().replace("_","-"):e}function mt(t){var s=null;if(!_t[t]&&void 0!==e&&e&&e.exports)try{s=rt._abbr,a("RnhZ")("./"+t),lt(s)}catch(e){}return _t[t]}function lt(e,t){var a;return e&&((a=i(t)?ht(e):Mt(e,t))?rt=a:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),rt._abbr}function Mt(e,t){if(null!==t){var a,s=it;if(t.abbr=e,null!=_t[e])b("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=_t[e]._config;else if(null!=t.parentLocale)if(null!=_t[t.parentLocale])s=_t[t.parentLocale]._config;else{if(null==(a=mt(t.parentLocale)))return ot[t.parentLocale]||(ot[t.parentLocale]=[]),ot[t.parentLocale].push({name:e,config:t}),null;s=a._config}return _t[e]=new O(x(s,t)),ot[e]&&ot[e].forEach(function(e){Mt(e.name,e.config)}),lt(e),_t[e]}return delete _t[e],null}function ht(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return rt;if(!r(e)){if(t=mt(e))return t;e=[e]}return function(e){for(var t,a,s,n,r=0;r0;){if(s=mt(n.slice(0,t).join("-")))return s;if(a&&a.length>=t&&w(n,a,!0)>=t-1)break;t--}r++}return rt}(e)}function ct(e){var t,a=e._a;return a&&-2===h(e).overflow&&(t=a[fe]<0||a[fe]>11?fe:a[pe]<1||a[pe]>We(a[ye],a[fe])?pe:a[ke]<0||a[ke]>24||24===a[ke]&&(0!==a[De]||0!==a[Te]||0!==a[we])?ke:a[De]<0||a[De]>59?De:a[Te]<0||a[Te]>59?Te:a[we]<0||a[we]>999?we:-1,h(e)._overflowDayOfYear&&(tpe)&&(t=pe),h(e)._overflowWeeks&&-1===t&&(t=ge),h(e)._overflowWeekday&&-1===t&&(t=ve),h(e).overflow=t),e}function Lt(e,t,a){return null!=e?e:null!=t?t:a}function Yt(e){var t,a,s,r,d,i=[];if(!e._d){for(s=function(e){var t=new Date(n.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[pe]&&null==e._a[fe]&&function(e){var t,a,s,n,r,d,i,_;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,d=4,a=Lt(t.GG,e._a[ye],Ve(Ot(),1,4).year),s=Lt(t.W,1),((n=Lt(t.E,1))<1||n>7)&&(_=!0);else{r=e._locale._week.dow,d=e._locale._week.doy;var o=Ve(Ot(),r,d);a=Lt(t.gg,e._a[ye],o.year),s=Lt(t.w,o.week),null!=t.d?((n=t.d)<0||n>6)&&(_=!0):null!=t.e?(n=t.e+r,(t.e<0||t.e>6)&&(_=!0)):n=r}s<1||s>Ke(a,r,d)?h(e)._overflowWeeks=!0:null!=_?h(e)._overflowWeekday=!0:(i=Ge(a,s,n,r,d),e._a[ye]=i.year,e._dayOfYear=i.dayOfYear)}(e),null!=e._dayOfYear&&(d=Lt(e._a[ye],s[ye]),(e._dayOfYear>Se(d)||0===e._dayOfYear)&&(h(e)._overflowDayOfYear=!0),a=Ie(d,0,e._dayOfYear),e._a[fe]=a.getUTCMonth(),e._a[pe]=a.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=i[t]=s[t];for(;t<7;t++)e._a[t]=i[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ke]&&0===e._a[De]&&0===e._a[Te]&&0===e._a[we]&&(e._nextDay=!0,e._a[ke]=0),e._d=(e._useUTC?Ie:function(e,t,a,s,n,r,d){var i;return e<100&&e>=0?(i=new Date(e+400,t,a,s,n,r,d),isFinite(i.getFullYear())&&i.setFullYear(e)):i=new Date(e,t,a,s,n,r,d),i}).apply(null,i),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ke]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(h(e).weekdayMismatch=!0)}}var yt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ft=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,pt=/Z|[+-]\d\d(?::?\d\d)?/,kt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Dt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Tt=/^\/?Date\((\-?\d+)/i;function wt(e){var t,a,s,n,r,d,i=e._i,_=yt.exec(i)||ft.exec(i);if(_){for(h(e).iso=!0,t=0,a=kt.length;t0&&h(e).unusedInput.push(d),i=i.slice(i.indexOf(a)+a.length),o+=a.length),I[r]?(a?h(e).empty=!1:h(e).unusedTokens.push(r),Ye(r,a,e)):e._strict&&!a&&h(e).unusedTokens.push(r);h(e).charsLeftOver=_-o,i.length>0&&h(e).unusedInput.push(i),e._a[ke]<=12&&!0===h(e).bigHour&&e._a[ke]>0&&(h(e).bigHour=void 0),h(e).parsedDateParts=e._a.slice(0),h(e).meridiem=e._meridiem,e._a[ke]=function(e,t,a){var s;return null==a?t:null!=e.meridiemHour?e.meridiemHour(t,a):null!=e.isPM?((s=e.isPM(a))&&t<12&&(t+=12),s||12!==t||(t=0),t):t}(e._locale,e._a[ke],e._meridiem),Yt(e),ct(e)}else Ht(e);else wt(e)}function jt(e){var t=e._i,a=e._f;return e._locale=e._locale||ht(e._l),null===t||void 0===a&&""===t?L({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),k(t)?new p(ct(t)):(o(t)?e._d=t:r(a)?function(e){var t,a,s,n,r;if(0===e._f.length)return h(e).invalidFormat=!0,void(e._d=new Date(NaN));for(n=0;nthis?this:e:L()});function At(e,t){var a,s;if(1===t.length&&r(t[0])&&(t=t[0]),!t.length)return Ot();for(a=t[0],s=1;s=0?new Date(e+400,t,a)-_a:new Date(e,t,a).valueOf()}function ma(e,t,a){return e<100&&e>=0?Date.UTC(e+400,t,a)-_a:Date.UTC(e,t,a)}function la(e,t){U(0,[e,e.length],0,t)}function Ma(e,t,a,s,n){var r;return null==e?Ve(this,s,n).year:(r=Ke(e,s,n),t>r&&(t=r),function(e,t,a,s,n){var r=Ge(e,t,a,s,n),d=Ie(r.year,0,r.dayOfYear);return this.year(d.getUTCFullYear()),this.month(d.getUTCMonth()),this.date(d.getUTCDate()),this}.call(this,e,t,a,s,n))}U(0,["gg",2],0,function(){return this.weekYear()%100}),U(0,["GG",2],0,function(){return this.isoWeekYear()%100}),la("gggg","weekYear"),la("ggggg","weekYear"),la("GGGG","isoWeekYear"),la("GGGGG","isoWeekYear"),W("weekYear","gg"),W("isoWeekYear","GG"),R("weekYear",1),R("isoWeekYear",1),me("G",de),me("g",de),me("GG",X,B),me("gg",X,B),me("GGGG",se,q),me("gggg",se,q),me("GGGGG",ne,Q),me("ggggg",ne,Q),Le(["gggg","ggggg","GGGG","GGGGG"],function(e,t,a,s){t[s.substr(0,2)]=T(e)}),Le(["gg","GG"],function(e,t,a,s){t[s]=n.parseTwoDigitYear(e)}),U("Q",0,"Qo","quarter"),W("quarter","Q"),R("quarter",7),me("Q",Z),ce("Q",function(e,t){t[fe]=3*(T(e)-1)}),U("D",["DD",2],"Do","date"),W("date","D"),R("date",9),me("D",X),me("DD",X,B),me("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],pe),ce("Do",function(e,t){t[pe]=T(e.match(X)[0])});var ha=xe("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),W("dayOfYear","DDD"),R("dayOfYear",4),me("DDD",ae),me("DDDD",$),ce(["DDD","DDDD"],function(e,t,a){a._dayOfYear=T(e)}),U("m",["mm",2],0,"minute"),W("minute","m"),R("minute",14),me("m",X),me("mm",X,B),ce(["m","mm"],De);var ca=xe("Minutes",!1);U("s",["ss",2],0,"second"),W("second","s"),R("second",15),me("s",X),me("ss",X,B),ce(["s","ss"],Te);var La,Ya=xe("Seconds",!1);for(U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return 10*this.millisecond()}),U(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),U(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),U(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),U(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),U(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),W("millisecond","ms"),R("millisecond",16),me("S",ae,Z),me("SS",ae,B),me("SSS",ae,$),La="SSSS";La.length<=9;La+="S")me(La,re);function ya(e,t){t[we]=T(1e3*("0."+e))}for(La="S";La.length<=9;La+="S")ce(La,ya);var fa=xe("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var pa=p.prototype;function ka(e){return e}pa.add=Xt,pa.calendar=function(e,t){var a=e||Ot(),s=It(a,this).startOf("day"),r=n.calendarFormat(this,s)||"sameElse",d=t&&(j(t[r])?t[r].call(this,a):t[r]);return this.format(d||this.localeData().calendar(r,this,Ot(a)))},pa.clone=function(){return new p(this)},pa.diff=function(e,t,a){var s,n,r;if(!this.isValid())return NaN;if(!(s=It(e,this)).isValid())return NaN;switch(n=6e4*(s.utcOffset()-this.utcOffset()),t=A(t)){case"year":r=ta(this,s)/12;break;case"month":r=ta(this,s);break;case"quarter":r=ta(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-n)/864e5;break;case"week":r=(this-s-n)/6048e5;break;default:r=this-s}return a?r:D(r)},pa.endOf=function(e){var t;if(void 0===(e=A(e))||"millisecond"===e||!this.isValid())return this;var a=this._isUTC?ma:ua;switch(e){case"year":t=a(this.year()+1,0,1)-1;break;case"quarter":t=a(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=a(this.year(),this.month()+1,1)-1;break;case"week":t=a(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=a(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=ia-oa(t+(this._isUTC?0:this.utcOffset()*da),ia)-1;break;case"minute":t=this._d.valueOf(),t+=da-oa(t,da)-1;break;case"second":t=this._d.valueOf(),t+=ra-oa(t,ra)-1}return this._d.setTime(t),n.updateOffset(this,!0),this},pa.format=function(e){e||(e=this.isUtc()?n.defaultFormatUtc:n.defaultFormat);var t=V(this,e);return this.localeData().postformat(t)},pa.from=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||Ot(e).isValid())?Zt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pa.fromNow=function(e){return this.from(Ot(),e)},pa.to=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||Ot(e).isValid())?Zt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},pa.toNow=function(e){return this.to(Ot(),e)},pa.get=function(e){return j(this[e=A(e)])?this[e]():this},pa.invalidAt=function(){return h(this).overflow},pa.isAfter=function(e,t){var a=k(e)?e:Ot(e);return!(!this.isValid()||!a.isValid())&&("millisecond"===(t=A(t)||"millisecond")?this.valueOf()>a.valueOf():a.valueOf()9999?V(a,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):j(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",V(a,"Z")):V(a,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},pa.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var a="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=t+'[")]';return this.format(a+s+"-MM-DD[T]HH:mm:ss.SSS"+n)},pa.toJSON=function(){return this.isValid()?this.toISOString():null},pa.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},pa.unix=function(){return Math.floor(this.valueOf()/1e3)},pa.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},pa.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},pa.year=je,pa.isLeapYear=function(){return He(this.year())},pa.weekYear=function(e){return Ma.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},pa.isoWeekYear=function(e){return Ma.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},pa.quarter=pa.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},pa.month=ze,pa.daysInMonth=function(){return We(this.year(),this.month())},pa.week=pa.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},pa.isoWeek=pa.isoWeeks=function(e){var t=Ve(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},pa.weeksInYear=function(){var e=this.localeData()._week;return Ke(this.year(),e.dow,e.doy)},pa.isoWeeksInYear=function(){return Ke(this.year(),1,4)},pa.date=ha,pa.day=pa.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},pa.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},pa.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},pa.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},pa.hour=pa.hours=dt,pa.minute=pa.minutes=ca,pa.second=pa.seconds=Ya,pa.millisecond=pa.milliseconds=fa,pa.utcOffset=function(e,t,a){var s,r=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Ct(_e,e)))return this}else Math.abs(e)<16&&!a&&(e*=60);return!this._isUTC&&t&&(s=Ut(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),r!==e&&(!t||this._changeInProgress?Qt(this,Zt(e-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,n.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:Ut(this)},pa.utc=function(e){return this.utcOffset(0,e)},pa.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Ut(this),"m")),this},pa.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Ct(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},pa.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Ot(e).utcOffset():0,(this.utcOffset()-e)%60==0)},pa.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},pa.isLocal=function(){return!!this.isValid()&&!this._isUTC},pa.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},pa.isUtc=Gt,pa.isUTC=Gt,pa.zoneAbbr=function(){return this._isUTC?"UTC":""},pa.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},pa.dates=v("dates accessor is deprecated. Use date instead.",ha),pa.months=v("months accessor is deprecated. Use month instead",ze),pa.years=v("years accessor is deprecated. Use year instead",je),pa.zone=v("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),pa.isDSTShifted=v("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!i(this._isDSTShifted))return this._isDSTShifted;var e={};if(y(e,this),(e=jt(e))._a){var t=e._isUTC?M(e._a):Ot(e._a);this._isDSTShifted=this.isValid()&&w(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var Da=O.prototype;function Ta(e,t,a,s){var n=ht(),r=M().set(s,t);return n[a](r,e)}function wa(e,t,a){if(_(e)&&(t=e,e=void 0),e=e||"",null!=t)return Ta(e,t,a,"month");var s,n=[];for(s=0;s<12;s++)n[s]=Ta(e,s,a,"month");return n}function ga(e,t,a,s){"boolean"==typeof e?(_(t)&&(a=t,t=void 0),t=t||""):(a=t=e,e=!1,_(t)&&(a=t,t=void 0),t=t||"");var n,r=ht(),d=e?r._week.dow:0;if(null!=a)return Ta(t,(a+d)%7,s,"day");var i=[];for(n=0;n<7;n++)i[n]=Ta(t,(n+d)%7,s,"day");return i}Da.calendar=function(e,t,a){var s=this._calendar[e]||this._calendar.sameElse;return j(s)?s.call(t,a):s},Da.longDateFormat=function(e){var t=this._longDateFormat[e],a=this._longDateFormat[e.toUpperCase()];return t||!a?t:(this._longDateFormat[e]=a.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},Da.invalidDate=function(){return this._invalidDate},Da.ordinal=function(e){return this._ordinal.replace("%d",e)},Da.preparse=ka,Da.postformat=ka,Da.relativeTime=function(e,t,a,s){var n=this._relativeTime[a];return j(n)?n(e,t,a,s):n.replace(/%d/i,e)},Da.pastFuture=function(e,t){var a=this._relativeTime[e>0?"future":"past"];return j(a)?a(t):a.replace(/%s/i,t)},Da.set=function(e){var t,a;for(a in e)j(t=e[a])?this[a]=t:this["_"+a]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Da.months=function(e,t){return e?r(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Ae).test(t)?"format":"standalone"][e.month()]:r(this._months)?this._months:this._months.standalone},Da.monthsShort=function(e,t){return e?r(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Ae.test(t)?"format":"standalone"][e.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Da.monthsParse=function(e,t,a){var s,n,r;if(this._monthsParseExact)return function(e,t,a){var s,n,r,d=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=M([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return a?"MMM"===t?-1!==(n=be.call(this._shortMonthsParse,d))?n:null:-1!==(n=be.call(this._longMonthsParse,d))?n:null:"MMM"===t?-1!==(n=be.call(this._shortMonthsParse,d))?n:-1!==(n=be.call(this._longMonthsParse,d))?n:null:-1!==(n=be.call(this._longMonthsParse,d))?n:-1!==(n=be.call(this._shortMonthsParse,d))?n:null}.call(this,e,t,a);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(n=M([2e3,s]),a&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),a||this._monthsParse[s]||(r="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),a&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(a&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!a&&this._monthsParse[s].test(e))return s}},Da.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ce.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Ne),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Da.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ce.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Je),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Da.week=function(e){return Ve(e,this._week.dow,this._week.doy).week},Da.firstDayOfYear=function(){return this._week.doy},Da.firstDayOfWeek=function(){return this._week.dow},Da.weekdays=function(e,t){var a=r(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Ze(a,this._week.dow):e?a[e.day()]:a},Da.weekdaysMin=function(e){return!0===e?Ze(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Da.weekdaysShort=function(e){return!0===e?Ze(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Da.weekdaysParse=function(e,t,a){var s,n,r;if(this._weekdaysParseExact)return function(e,t,a){var s,n,r,d=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=M([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return a?"dddd"===t?-1!==(n=be.call(this._weekdaysParse,d))?n:null:"ddd"===t?-1!==(n=be.call(this._shortWeekdaysParse,d))?n:null:-1!==(n=be.call(this._minWeekdaysParse,d))?n:null:"dddd"===t?-1!==(n=be.call(this._weekdaysParse,d))?n:-1!==(n=be.call(this._shortWeekdaysParse,d))?n:-1!==(n=be.call(this._minWeekdaysParse,d))?n:null:"ddd"===t?-1!==(n=be.call(this._shortWeekdaysParse,d))?n:-1!==(n=be.call(this._weekdaysParse,d))?n:-1!==(n=be.call(this._minWeekdaysParse,d))?n:null:-1!==(n=be.call(this._minWeekdaysParse,d))?n:-1!==(n=be.call(this._weekdaysParse,d))?n:-1!==(n=be.call(this._shortWeekdaysParse,d))?n:null}.call(this,e,t,a);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(n=M([2e3,1]).day(s),a&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),a&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(a&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(a&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!a&&this._weekdaysParse[s].test(e))return s}},Da.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||tt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=Qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},Da.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||tt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Xe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Da.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||tt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=et),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Da.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Da.meridiem=function(e,t,a){return e>11?a?"pm":"PM":a?"am":"AM"},lt("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,a=1===T(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}}),n.lang=v("moment.lang is deprecated. Use moment.locale instead.",lt),n.langData=v("moment.langData is deprecated. Use moment.localeData instead.",ht);var va=Math.abs;function Sa(e,t,a,s){var n=Zt(t,a);return e._milliseconds+=s*n._milliseconds,e._days+=s*n._days,e._months+=s*n._months,e._bubble()}function Ha(e){return e<0?Math.floor(e):Math.ceil(e)}function ba(e){return 4800*e/146097}function ja(e){return 146097*e/4800}function xa(e){return function(){return this.as(e)}}var Oa=xa("ms"),Pa=xa("s"),Wa=xa("m"),Aa=xa("h"),Ea=xa("d"),Fa=xa("w"),Ra=xa("M"),za=xa("Q"),Ja=xa("y");function Na(e){return function(){return this.isValid()?this._data[e]:NaN}}var Ca=Na("milliseconds"),Ia=Na("seconds"),Ua=Na("minutes"),Ga=Na("hours"),Va=Na("days"),Ka=Na("months"),Za=Na("years"),Ba=Math.round,$a={ss:44,s:45,m:45,h:22,d:26,M:11},qa=Math.abs;function Qa(e){return(e>0)-(e<0)||+e}function Xa(){if(!this.isValid())return this.localeData().invalidDate();var e,t,a=qa(this._milliseconds)/1e3,s=qa(this._days),n=qa(this._months);e=D(a/60),t=D(e/60),a%=60,e%=60;var r=D(n/12),d=n%=12,i=s,_=t,o=e,u=a?a.toFixed(3).replace(/\.?0+$/,""):"",m=this.asSeconds();if(!m)return"P0D";var l=m<0?"-":"",M=Qa(this._months)!==Qa(m)?"-":"",h=Qa(this._days)!==Qa(m)?"-":"",c=Qa(this._milliseconds)!==Qa(m)?"-":"";return l+"P"+(r?M+r+"Y":"")+(d?M+d+"M":"")+(i?h+i+"D":"")+(_||o||u?"T":"")+(_?c+_+"H":"")+(o?c+o+"M":"")+(u?c+u+"S":"")}var es=Ft.prototype;return es.isValid=function(){return this._isValid},es.abs=function(){var e=this._data;return this._milliseconds=va(this._milliseconds),this._days=va(this._days),this._months=va(this._months),e.milliseconds=va(e.milliseconds),e.seconds=va(e.seconds),e.minutes=va(e.minutes),e.hours=va(e.hours),e.months=va(e.months),e.years=va(e.years),this},es.add=function(e,t){return Sa(this,e,t,1)},es.subtract=function(e,t){return Sa(this,e,t,-1)},es.as=function(e){if(!this.isValid())return NaN;var t,a,s=this._milliseconds;if("month"===(e=A(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,a=this._months+ba(t),e){case"month":return a;case"quarter":return a/3;case"year":return a/12}else switch(t=this._days+Math.round(ja(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},es.asMilliseconds=Oa,es.asSeconds=Pa,es.asMinutes=Wa,es.asHours=Aa,es.asDays=Ea,es.asWeeks=Fa,es.asMonths=Ra,es.asQuarters=za,es.asYears=Ja,es.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*T(this._months/12):NaN},es._bubble=function(){var e,t,a,s,n,r=this._milliseconds,d=this._days,i=this._months,_=this._data;return r>=0&&d>=0&&i>=0||r<=0&&d<=0&&i<=0||(r+=864e5*Ha(ja(i)+d),d=0,i=0),_.milliseconds=r%1e3,e=D(r/1e3),_.seconds=e%60,t=D(e/60),_.minutes=t%60,a=D(t/60),_.hours=a%24,d+=D(a/24),n=D(ba(d)),i+=n,d-=Ha(ja(n)),s=D(i/12),i%=12,_.days=d,_.months=i,_.years=s,this},es.clone=function(){return Zt(this)},es.get=function(e){return e=A(e),this.isValid()?this[e+"s"]():NaN},es.milliseconds=Ca,es.seconds=Ia,es.minutes=Ua,es.hours=Ga,es.days=Va,es.weeks=function(){return D(this.days()/7)},es.months=Ka,es.years=Za,es.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),a=function(e,t,a){var s=Zt(e).abs(),n=Ba(s.as("s")),r=Ba(s.as("m")),d=Ba(s.as("h")),i=Ba(s.as("d")),_=Ba(s.as("M")),o=Ba(s.as("y")),u=n<=$a.ss&&["s",n]||n<$a.s&&["ss",n]||r<=1&&["m"]||r<$a.m&&["mm",r]||d<=1&&["h"]||d<$a.h&&["hh",d]||i<=1&&["d"]||i<$a.d&&["dd",i]||_<=1&&["M"]||_<$a.M&&["MM",_]||o<=1&&["y"]||["yy",o];return u[2]=t,u[3]=+e>0,u[4]=a,function(e,t,a,s,n){return n.relativeTime(t||1,!!a,e,s)}.apply(null,u)}(this,!e,t);return e&&(a=t.pastFuture(+this,a)),t.postformat(a)},es.toISOString=Xa,es.toString=Xa,es.toJSON=Xa,es.locale=aa,es.localeData=na,es.toIsoString=v("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Xa),es.lang=sa,U("X",0,0,"unix"),U("x",0,0,"valueOf"),me("x",de),me("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,a){a._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,a){a._d=new Date(T(e))}),n.version="2.24.0",function(e){t=e}(Ot),n.fn=pa,n.min=function(){return At("isBefore",[].slice.call(arguments,0))},n.max=function(){return At("isAfter",[].slice.call(arguments,0))},n.now=function(){return Date.now?Date.now():+new Date},n.utc=M,n.unix=function(e){return Ot(1e3*e)},n.months=function(e,t){return wa(e,t,"months")},n.isDate=o,n.locale=lt,n.invalid=L,n.duration=Zt,n.isMoment=k,n.weekdays=function(e,t,a){return ga(e,t,a,"weekdays")},n.parseZone=function(){return Ot.apply(null,arguments).parseZone()},n.localeData=ht,n.isDuration=Rt,n.monthsShort=function(e,t){return wa(e,t,"monthsShort")},n.weekdaysMin=function(e,t,a){return ga(e,t,a,"weekdaysMin")},n.defineLocale=Mt,n.updateLocale=function(e,t){if(null!=t){var a,s,n=it;null!=(s=mt(e))&&(n=s._config),t=x(n,t),(a=new O(t)).parentLocale=_t[e],_t[e]=a,lt(e)}else null!=_t[e]&&(null!=_t[e].parentLocale?_t[e]=_t[e].parentLocale:null!=_t[e]&&delete _t[e]);return _t[e]},n.locales=function(){return S(_t)},n.weekdaysShort=function(e,t,a){return ga(e,t,a,"weekdaysShort")},n.normalizeUnits=A,n.relativeTimeRounding=function(e){return void 0===e?Ba:"function"==typeof e&&(Ba=e,!0)},n.relativeTimeThreshold=function(e,t){return void 0!==$a[e]&&(void 0===t?$a[e]:($a[e]=t,"s"===e&&($a.ss=t-1),!0))},n.calendarFormat=function(e,t){var a=e.diff(t,"days",!0);return a<-6?"sameElse":a<-1?"lastWeek":a<0?"lastDay":a<1?"sameDay":a<2?"nextDay":a<7?"nextWeek":"sameElse"},n.prototype=pa,n.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},n}()}).call(this,a("YuTi")(e))},x6pH:function(e,t,a){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,a){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?a?'לפנה"צ':"לפני הצהריים":e<18?a?'אחה"צ':"אחרי הצהריים":"בערב"}})}(a("wd/R"))},yPMs:function(e,t,a){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,a){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},z1FC:function(e,t,a){!function(e){"use strict";function t(e,t,a,s){var n={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s?n[a][0]:t?n[a][0]:n[a][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,a){return e>11?a?"d'o":"D'O":a?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},z3Vd:function(e,t,a){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function a(e,a,s,n){var r=function(e){var a=Math.floor(e%1e3/100),s=Math.floor(e%100/10),n=e%10,r="";return a>0&&(r+=t[a]+"vatlh"),s>0&&(r+=(""!==r?" ":"")+t[s]+"maH"),n>0&&(r+=(""!==r?" ":"")+t[n]),""===r?"pagh":r}(e);switch(s){case"ss":return r+" lup";case"mm":return r+" tup";case"hh":return r+" rep";case"dd":return r+" jaj";case"MM":return r+" jar";case"yy":return r+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:a,m:"wa’ tup",mm:a,h:"wa’ rep",hh:a,d:"wa’ jaj",dd:a,M:"wa’ jar",MM:a,y:"wa’ DIS",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a("wd/R"))},zavE:function(e,t,a){!function(e){"use strict";e.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}})}(a("wd/R"))},zx6S:function(e,t,a){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,s){var n=t.words[s];return 1===s.length?a?n[0]:n[1]:e+" "+t.correctGrammaticalCase(e,n)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(a("wd/R"))}}]); +//# sourceMappingURL=chunk-df62.6c5105a6.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js.map b/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js.map new file mode 100644 index 000000000..a2380c4cd --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-df62.6c5105a6.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/en-SG.js","webpack:///./node_modules/moment/locale/sr.js"],"names":["moment","monthsShortWithDots","split","monthsShortWithoutDots","monthsParse","monthsRegex","defineLocale","months","monthsShort","m","format","test","month","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","mm","h","hh","d","dd","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","factory","__webpack_require__","monthsParseExact","b","output","symbolMap","1","2","3","4","5","6","7","8","9","0","numberMap","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","preparse","string","replace","match","postformat","meridiemParse","meridiemHour","hour","meridiem","minute","isLower","this","day","standalone","isPM","input","period","isFormat","ll","lll","llll","hours","१","२","३","४","५","६","७","८","९","०","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","minutes","១","២","៣","៤","៥","៦","៧","៨","៩","០","processRelativeTime","withoutSuffix","key","isFuture","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","affix","exec","l","now","plural","n","translate","result","monthsShortDot","suffixes","70","80","20","50","100","10","30","60","90","a","c","translator","words","correctGrammaticalCase","wordKey","length","relativeTimeWithPlural","word","num","forms","pluralForm","plurals","pluralize","u","f","str","token","isUpper","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","units","translateSingular","special","relativeTimeMr","12","13","40","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","eifelerRegelAppliesToNumber","parseInt","isNaN","lastDigit","firstDigit","substr","indexOf","hm","days","weekEndings","charAt","toLowerCase","call","relativeTimeWithMutation","text","mutationTable","undefined","substring","softMutation","mutation","lastNumber","last2Digits","numbersPast","numbersFuture","verbalNumber","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","Function","Object","prototype","toString","isFunction","apply","monthsNominative","monthsSubjective","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","১","২","৩","৪","৫","৬","৭","৮","৯","০","separator","processHoursFunction","nominative","accusative","genitive","slice","concat","nounCase","relativeTimeWithSingular","module","exports","hookCallback","some","hooks","arguments","isArray","Array","isObject","isUndefined","isNumber","isDate","Date","map","arr","fn","i","res","push","hasOwnProp","hasOwnProperty","extend","valueOf","createUTC","locale","strict","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","rfc2822","weekdayMismatch","isValid","_isValid","flags","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","t","len","momentProperties","copyConfig","to","from","prop","val","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","updateInProgress","Moment","config","updateOffset","isMoment","obj","absFloor","Math","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","compareArrays","array1","array2","dontConvert","min","lengthDiff","abs","diffs","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","join","Error","stack","keys","deprecations","deprecateSimple","name","mergeConfigs","parentConfig","childConfig","Locale","set","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","zeroFill","targetLength","forceSign","absNumber","zerosToFill","sign","pow","max","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","callback","func","localeData","removeFormattingTokens","formatMoment","expandFormat","array","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","lastIndex","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","unescapeFormat","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","year","isLeapYear","parseTwoDigitYear","getSetYear","makeGetSet","keepTime","set$1","get","date","daysInMonth","modMonth","x","mod","o","MONTHS_IN_FORMAT","defaultLocaleMonths","defaultLocaleMonthsShort","setMonth","dayOfMonth","getSetMonth","defaultMonthsShortRegex","defaultMonthsRegex","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","fwdlw","getUTCDay","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","localWeekday","weekOffset","dayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","_meridiem","pos","pos1","pos2","globalLocale","getSetHour","baseConfig","locales","localeFamilies","normalizeLocale","loadLocale","oldLocale","_abbr","getSetGlobalLocale","e","values","data","getLocale","abbr","_config","parentLocale","forEach","names","j","next","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","defaults","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getFullYear","getMonth","getDate","currentDateArray","w","weekYear","temp","weekdayOverflow","GG","W","E","createLocal","_week","curWeek","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ms","setFullYear","getDay","setUTCMinutes","getUTCMinutes","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromRFC2822","preprocessRFC2822","parsedArray","weekdayStr","parsedInput","weekdayProvided","weekdayActual","checkWeekday","obsOffset","militaryOffset","numOffset","calculateOffset","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemFixWrap","prepareConfig","tempConfig","bestMoment","scoreToBeat","currentScore","score","configFromStringAndArray","createFromInputFallback","configFromString","second","millisecond","configFromObject","configFromInput","isUTC","getOwnPropertyNames","k","isObjectEmpty","add","createFromConfig","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","milliseconds","unitHasDecimal","parseFloat","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","utcOffset","offsetFromString","chunkOffset","matcher","matches","chunk","parts","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","base","isBefore","positiveMomentsDifference","momentsDifference","inp","isAfter","createAdder","direction","tmp","addSubtract","isAdding","invalid","subtract","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","dayOfYearData","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","isoWeekday","inputString","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","toArray","toObject","toDate","toISOString","keepOffset","inspect","zone","isLocal","prefix","suffix","toJSON","unix","creationData","isoWeeks","weekInfo","isoWeeksInYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","_invalidDate","_ordinal","_relativeTime","pastFuture","source","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","abs$1","toISOString$1","Y","D","toFixed","total","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","withSuffix","posNegDuration","relativeTime$1","toIsoString","version","setHookCallback","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","numbersNouns","numberNoun","hundred","ten","one","numberAsNoun"],"mappings":"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","file":"static/js/chunk-df62.6c5105a6.js","sourcesContent":["//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n ss : '%d seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var se = moment.defineLocale('se', {\n months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'MMMM D. [b.] YYYY',\n LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n },\n calendar : {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s geažes',\n past : 'maŋit %s',\n s : 'moadde sekunddat',\n ss: '%d sekunddat',\n m : 'okta minuhta',\n mm : '%d minuhtat',\n h : 'okta diimmu',\n hh : '%d diimmut',\n d : 'okta beaivi',\n dd : '%d beaivvit',\n M : 'okta mánnu',\n MM : '%d mánut',\n y : 'okta jahki',\n yy : '%d jagit'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact : true,\n weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[T~ódá~ý át] LT',\n nextDay : '[T~ómó~rró~w át] LT',\n nextWeek : 'dddd [át] LT',\n lastDay : '[Ý~ést~érdá~ý át] LT',\n lastWeek : '[L~ást] dddd [át] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'í~ñ %s',\n past : '%s á~gó',\n s : 'á ~féw ~sécó~ñds',\n ss : '%d s~écóñ~ds',\n m : 'á ~míñ~úté',\n mm : '%d m~íñú~tés',\n h : 'á~ñ hó~úr',\n hh : '%d h~óúrs',\n d : 'á ~dáý',\n dd : '%d d~áýs',\n M : 'á ~móñ~th',\n MM : '%d m~óñt~hs',\n y : 'á ~ýéár',\n yy : '%d ý~éárs'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠'\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0'\n };\n\n var bo = moment.defineLocale('bo', {\n months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[དི་རིང] LT',\n nextDay : '[སང་ཉིན] LT',\n nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay : '[ཁ་སང] LT',\n lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ལ་',\n past : '%s སྔན་ལ',\n s : 'ལམ་སང',\n ss : '%d སྐར་ཆ།',\n m : 'སྐར་མ་གཅིག',\n mm : '%d སྐར་མ',\n h : 'ཆུ་ཚོད་གཅིག',\n hh : '%d ཆུ་ཚོད',\n d : 'ཉིན་གཅིག',\n dd : '%d ཉིན་',\n M : 'ཟླ་བ་གཅིག',\n MM : '%d ཟླ་བ',\n y : 'ལོ་གཅིག',\n yy : '%d ལོ'\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ptBr = moment.defineLocale('pt-br', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : 'há %s',\n s : 'poucos segundos',\n ss : '%d segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal : '%dº'\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var hyAm = moment.defineLocale('hy-am', {\n months : {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\n },\n monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY թ.',\n LLL : 'D MMMM YYYY թ., HH:mm',\n LLLL : 'dddd, D MMMM YYYY թ., HH:mm'\n },\n calendar : {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s հետո',\n past : '%s առաջ',\n s : 'մի քանի վայրկյան',\n ss : '%d վայրկյան',\n m : 'րոպե',\n mm : '%d րոպե',\n h : 'ժամ',\n hh : '%d ժամ',\n d : 'օր',\n dd : '%d օր',\n M : 'ամիս',\n MM : '%d ամիս',\n y : 'տարի',\n yy : '%d տարի'\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem : function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ca = moment.defineLocale('ca', {\n months : {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n format: 'de gener_de febrer_de març_d\\'abril_de maig_de juny_de juliol_d\\'agost_de setembre_d\\'octubre_de novembre_de desembre'.split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM [de] YYYY',\n ll : 'D MMM YYYY',\n LLL : 'D MMMM [de] YYYY [a les] H:mm',\n lll : 'D MMM YYYY, H:mm',\n LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll : 'ddd D MMM YYYY, H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextDay : function () {\n return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastDay : function () {\n return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'd\\'aquí %s',\n past : 'fa %s',\n s : 'uns segons',\n ss : '%d segons',\n m : 'un minut',\n mm : '%d minuts',\n h : 'una hora',\n hh : '%d hores',\n d : 'un dia',\n dd : '%d dies',\n M : 'un mes',\n MM : '%d mesos',\n y : 'un any',\n yy : '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal : function (number, period) {\n var output = (number === 1) ? 'r' :\n (number === 2) ? 'n' :\n (number === 3) ? 'r' :\n (number === 4) ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var frCa = moment.defineLocale('fr-ca', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n ss : '%d secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n }\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n ss : '%d seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\n var hi = moment.defineLocale('hi', {\n months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n monthsParseExact: true,\n weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm बजे',\n LTS : 'A h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[कल] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[कल] LT',\n lastWeek : '[पिछले] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s में',\n past : '%s पहले',\n s : 'कुछ ही क्षण',\n ss : '%d सेकंड',\n m : 'एक मिनट',\n mm : '%d मिनट',\n h : 'एक घंटा',\n hh : '%d घंटे',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महीने',\n MM : '%d महीने',\n y : 'एक वर्ष',\n yy : '%d वर्ष'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '૧',\n '2': '૨',\n '3': '૩',\n '4': '૪',\n '5': '૫',\n '6': '૬',\n '7': '૭',\n '8': '૮',\n '9': '૯',\n '0': '૦'\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0'\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પેહલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ'\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enIe = moment.defineLocale('en-ie', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ms = moment.defineLocale('ms', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n ss : '%d saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '១',\n '2': '២',\n '3': '៣',\n '4': '៤',\n '5': '៥',\n '6': '៦',\n '7': '៧',\n '8': '៨',\n '9': '៩',\n '0': '០'\n }, numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0'\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ'\n },\n dayOfMonthOrdinalParse : /ទី\\d{1,2}/,\n ordinal : 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n 'ss': [number + 'sekundi', number + 'sekundit'],\n 'm' : ['ühe minuti', 'üks minut'],\n 'mm': [number + ' minuti', number + ' minutit'],\n 'h' : ['ühe tunni', 'tund aega', 'üks tund'],\n 'hh': [number + ' tunni', number + ' tundi'],\n 'd' : ['ühe päeva', 'üks päev'],\n 'M' : ['kuu aja', 'kuu aega', 'üks kuu'],\n 'MM': [number + ' kuu', number + ' kuud'],\n 'y' : ['ühe aasta', 'aasta', 'üks aasta'],\n 'yy': [number + ' aasta', number + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Täna,] LT',\n nextDay : '[Homme,] LT',\n nextWeek : '[Järgmine] dddd LT',\n lastDay : '[Eile,] LT',\n lastWeek : '[Eelmine] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s pärast',\n past : '%s tagasi',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : '%d päeva',\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'a h:mm',\n LTS : 'a h:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY MMMM D',\n LLL : 'YYYY MMMM D, a h:mm',\n LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n },\n calendar : {\n sameDay : '[අද] LT[ට]',\n nextDay : '[හෙට] LT[ට]',\n nextWeek : 'dddd LT[ට]',\n lastDay : '[ඊයේ] LT[ට]',\n lastWeek : '[පසුගිය] dddd LT[ට]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sකින්',\n past : '%sකට පෙර',\n s : 'තත්පර කිහිපය',\n ss : 'තත්පර %d',\n m : 'මිනිත්තුව',\n mm : 'මිනිත්තු %d',\n h : 'පැය',\n hh : 'පැය %d',\n d : 'දිනය',\n dd : 'දින %d',\n M : 'මාසය',\n MM : 'මාස %d',\n y : 'වසර',\n yy : 'වසර %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal : function (number) {\n return number + ' වැනි';\n },\n meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM : function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n }\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '੧',\n '2': '੨',\n '3': '੩',\n '4': '੪',\n '5': '੫',\n '6': '੬',\n '7': '੭',\n '8': '੮',\n '9': '੯',\n '0': '੦'\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0'\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm ਵਜੇ',\n LTS : 'A h:mm:ss ਵਜੇ',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n },\n calendar : {\n sameDay : '[ਅਜ] LT',\n nextDay : '[ਕਲ] LT',\n nextWeek : '[ਅਗਲਾ] dddd, LT',\n lastDay : '[ਕਲ] LT',\n lastWeek : '[ਪਿਛਲੇ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ਵਿੱਚ',\n past : '%s ਪਿਛਲੇ',\n s : 'ਕੁਝ ਸਕਿੰਟ',\n ss : '%d ਸਕਿੰਟ',\n m : 'ਇਕ ਮਿੰਟ',\n mm : '%d ਮਿੰਟ',\n h : 'ਇੱਕ ਘੰਟਾ',\n hh : '%d ਘੰਟੇ',\n d : 'ਇੱਕ ਦਿਨ',\n dd : '%d ਦਿਨ',\n M : 'ਇੱਕ ਮਹੀਨਾ',\n MM : '%d ਮਹੀਨੇ',\n y : 'ਇੱਕ ਸਾਲ',\n yy : '%d ਸਾਲ'\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var pt = moment.defineLocale('pt', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : 'há %s',\n s : 'segundos',\n ss : '%d segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'\n ];\n\n var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];\n\n var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];\n\n var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];\n\n var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months : months,\n monthsShort : monthsShort,\n monthsParseExact : true,\n weekdays : weekdays,\n weekdaysShort : weekdaysShort,\n weekdaysMin : weekdaysMin,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[An-diugh aig] LT',\n nextDay : '[A-màireach aig] LT',\n nextWeek : 'dddd [aig] LT',\n lastDay : '[An-dè aig] LT',\n lastWeek : 'dddd [seo chaidh] [aig] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ann an %s',\n past : 'bho chionn %s',\n s : 'beagan diogan',\n ss : '%d diogan',\n m : 'mionaid',\n mm : '%d mionaidean',\n h : 'uair',\n hh : '%d uairean',\n d : 'latha',\n dd : '%d latha',\n M : 'mìos',\n MM : '%d mìosan',\n y : 'bliadhna',\n yy : '%d bliadhna'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(d|na|mh)/,\n ordinal : function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var cv = moment.defineLocale('cv', {\n months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n },\n calendar : {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L'\n },\n relativeTime : {\n future : function (output) {\n var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n return output + affix;\n },\n past : '%s каялла',\n s : 'пӗр-ик ҫеккунт',\n ss : '%d ҫеккунт',\n m : 'пӗр минут',\n mm : '%d минут',\n h : 'пӗр сехет',\n hh : '%d сехет',\n d : 'пӗр кун',\n dd : '%d кун',\n M : 'пӗр уйӑх',\n MM : '%d уйӑх',\n y : 'пӗр ҫул',\n yy : '%d ҫул'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal : '%d-мӗш',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'D MMMM YYYY, dddd HH:mm'\n },\n calendar : {\n sameDay : '[Bugun soat] LT [da]',\n nextDay : '[Ertaga] LT [da]',\n nextWeek : 'dddd [kuni soat] LT [da]',\n lastDay : '[Kecha soat] LT [da]',\n lastWeek : '[O\\'tgan] dddd [kuni soat] LT [da]',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'Yaqin %s ichida',\n past : 'Bir necha %s oldin',\n s : 'soniya',\n ss : '%d soniya',\n m : 'bir daqiqa',\n mm : '%d daqiqa',\n h : 'bir soat',\n hh : '%d soat',\n d : 'bir kun',\n dd : '%d kun',\n M : 'bir oy',\n MM : '%d oy',\n y : 'bir yil',\n yy : '%d yil'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ml = moment.defineLocale('ml', {\n months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm -നു',\n LTS : 'A h:mm:ss -നു',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm -നു',\n LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\n },\n calendar : {\n sameDay : '[ഇന്ന്] LT',\n nextDay : '[നാളെ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ഇന്നലെ] LT',\n lastWeek : '[കഴിഞ്ഞ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s കഴിഞ്ഞ്',\n past : '%s മുൻപ്',\n s : 'അൽപ നിമിഷങ്ങൾ',\n ss : '%d സെക്കൻഡ്',\n m : 'ഒരു മിനിറ്റ്',\n mm : '%d മിനിറ്റ്',\n h : 'ഒരു മണിക്കൂർ',\n hh : '%d മണിക്കൂർ',\n d : 'ഒരു ദിവസം',\n dd : '%d ദിവസം',\n M : 'ഒരു മാസം',\n MM : '%d മാസം',\n y : 'ഒരു വർഷം',\n yy : '%d വർഷം'\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n }\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ja = moment.defineLocale('ja', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日 dddd HH:mm',\n l : 'YYYY/MM/DD',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日(ddd) HH:mm'\n },\n meridiemParse: /午前|午後/i,\n isPM : function (input) {\n return input === '午後';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar : {\n sameDay : '[今日] LT',\n nextDay : '[明日] LT',\n nextWeek : function (now) {\n if (now.week() < this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay : '[昨日] LT',\n lastWeek : function (now) {\n if (this.week() < now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}日/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s後',\n past : '%s前',\n s : '数秒',\n ss : '%d秒',\n m : '1分',\n mm : '%d分',\n h : '1時間',\n hh : '%d時間',\n d : '1日',\n dd : '%d日',\n M : '1ヶ月',\n MM : '%dヶ月',\n y : '1年',\n yy : '%d年'\n }\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'\n },\n calendar : {\n sameDay : '[í dag kl.] LT',\n nextDay : '[á morgun kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[í gær kl.] LT',\n lastWeek : '[síðasta] dddd [kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'eftir %s',\n past : 'fyrir %s síðan',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : 'klukkustund',\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var fo = moment.defineLocale('fo', {\n months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D. MMMM, YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Í dag kl.] LT',\n nextDay : '[Í morgin kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[Í gjár kl.] LT',\n lastWeek : '[síðstu] dddd [kl] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'um %s',\n past : '%s síðani',\n s : 'fá sekund',\n ss : '%d sekundir',\n m : 'ein minuttur',\n mm : '%d minuttir',\n h : 'ein tími',\n hh : '%d tímar',\n d : 'ein dagur',\n dd : '%d dagar',\n M : 'ein mánaður',\n MM : '%d mánaðir',\n y : 'eitt ár',\n yy : '%d ár'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY h:mm A',\n LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arMa = moment.defineLocale('ar-ma', {\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var eu = moment.defineLocale('eu', {\n months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact : true,\n weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY[ko] MMMM[ren] D[a]',\n LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l : 'YYYY-M-D',\n ll : 'YYYY[ko] MMM D[a]',\n lll : 'YYYY[ko] MMM D[a] HH:mm',\n llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'\n },\n calendar : {\n sameDay : '[gaur] LT[etan]',\n nextDay : '[bihar] LT[etan]',\n nextWeek : 'dddd LT[etan]',\n lastDay : '[atzo] LT[etan]',\n lastWeek : '[aurreko] dddd LT[etan]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s barru',\n past : 'duela %s',\n s : 'segundo batzuk',\n ss : '%d segundo',\n m : 'minutu bat',\n mm : '%d minutu',\n h : 'ordu bat',\n hh : '%d ordu',\n d : 'egun bat',\n dd : '%d egun',\n M : 'hilabete bat',\n MM : '%d hilabete',\n y : 'urte bat',\n yy : '%d urte'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's': ['thodde secondanim', 'thodde second'],\n 'ss': [number + ' secondanim', number + ' second'],\n 'm': ['eka mintan', 'ek minute'],\n 'mm': [number + ' mintanim', number + ' mintam'],\n 'h': ['eka voran', 'ek vor'],\n 'hh': [number + ' voranim', number + ' voram'],\n 'd': ['eka disan', 'ek dis'],\n 'dd': [number + ' disanim', number + ' dis'],\n 'M': ['eka mhoinean', 'ek mhoino'],\n 'MM': [number + ' mhoineanim', number + ' mhoine'],\n 'y': ['eka vorsan', 'ek voros'],\n 'yy': [number + ' vorsanim', number + ' vorsam']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\\'var'.split('_'),\n weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'A h:mm [vazta]',\n LTS : 'A h:mm:ss [vazta]',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY A h:mm [vazta]',\n LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n },\n calendar : {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Ieta to] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fatlo] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s',\n past : '%s adim',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(er)/,\n ordinal : function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /rati|sokalli|donparam|sanje/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokalli') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokalli';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n }\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var frCh = moment.defineLocale('fr-ch', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n ss : '%d secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enAu = moment.defineLocale('en-au', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enAu;\n\n})));\n","\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n var suffixes = {\n 1: '\\'inci',\n 5: '\\'inci',\n 8: '\\'inci',\n 70: '\\'inci',\n 80: '\\'inci',\n 2: '\\'nci',\n 7: '\\'nci',\n 20: '\\'nci',\n 50: '\\'nci',\n 3: '\\'üncü',\n 4: '\\'üncü',\n 100: '\\'üncü',\n 6: '\\'ncı',\n 9: '\\'uncu',\n 10: '\\'uncu',\n 30: '\\'uncu',\n 60: '\\'ıncı',\n 90: '\\'ıncı'\n };\n\n var tr = moment.defineLocale('tr', {\n months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[yarın saat] LT',\n nextWeek : '[gelecek] dddd [saat] LT',\n lastDay : '[dün] LT',\n lastWeek : '[geçen] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s önce',\n s : 'birkaç saniye',\n ss : '%d saniye',\n m : 'bir dakika',\n mm : '%d dakika',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir yıl',\n yy : '%d yıl'\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) { // special case for zero\n return number + '\\'ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var da = moment.defineLocale('da', {\n months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay : '[i dag kl.] LT',\n nextDay : '[i morgen kl.] LT',\n nextWeek : 'på dddd [kl.] LT',\n lastDay : '[i går kl.] LT',\n lastWeek : '[i] dddd[s kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'få sekunder',\n ss : '%d sekunder',\n m : 'et minut',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dage',\n M : 'en måned',\n MM : '%d måneder',\n y : 'et år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tlPh = moment.defineLocale('tl-ph', {\n months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'MM/D/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY HH:mm',\n LLLL : 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar : {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'sa loob ng %s',\n past : '%s ang nakalipas',\n s : 'ilang segundo',\n ss : '%d segundo',\n m : 'isang minuto',\n mm : '%d minuto',\n h : 'isang oras',\n hh : '%d oras',\n d : 'isang araw',\n dd : '%d araw',\n M : 'isang buwan',\n MM : '%d buwan',\n y : 'isang taon',\n yy : '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var translator = {\n words: { //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay : '[јуче у] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : 'пре %s',\n s : 'неколико секунди',\n ss : translator.translate,\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'дан',\n dd : translator.translate,\n M : 'месец',\n MM : translator.translate,\n y : 'годину',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var th = moment.defineLocale('th', {\n months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY เวลา H:mm',\n LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar : {\n sameDay : '[วันนี้ เวลา] LT',\n nextDay : '[พรุ่งนี้ เวลา] LT',\n nextWeek : 'dddd[หน้า เวลา] LT',\n lastDay : '[เมื่อวานนี้ เวลา] LT',\n lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'อีก %s',\n past : '%sที่แล้ว',\n s : 'ไม่กี่วินาที',\n ss : '%d วินาที',\n m : '1 นาที',\n mm : '%d นาที',\n h : '1 ชั่วโมง',\n hh : '%d ชั่วโมง',\n d : '1 วัน',\n dd : '%d วัน',\n M : '1 เดือน',\n MM : '%d เดือน',\n y : '1 ปี',\n yy : '%d ปี'\n }\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var mt = moment.defineLocale('mt', {\n months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),\n monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),\n weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Illum fil-]LT',\n nextDay : '[Għada fil-]LT',\n nextWeek : 'dddd [fil-]LT',\n lastDay : '[Il-bieraħ fil-]LT',\n lastWeek : 'dddd [li għadda] [fil-]LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'f’ %s',\n past : '%s ilu',\n s : 'ftit sekondi',\n ss : '%d sekondi',\n m : 'minuta',\n mm : '%d minuti',\n h : 'siegħa',\n hh : '%d siegħat',\n d : 'ġurnata',\n dd : '%d ġranet',\n M : 'xahar',\n MM : '%d xhur',\n y : 'sena',\n yy : '%d sni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n 'dd': 'дзень_дні_дзён',\n 'MM': 'месяц_месяцы_месяцаў',\n 'yy': 'год_гады_гадоў'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months : {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n },\n monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays : {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/\n },\n weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., HH:mm',\n LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar : {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'праз %s',\n past : '%s таму',\n s : 'некалькі секунд',\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : relativeTimeWithPlural,\n hh : relativeTimeWithPlural,\n d : 'дзень',\n dd : relativeTimeWithPlural,\n M : 'месяц',\n MM : relativeTimeWithPlural,\n y : 'год',\n yy : relativeTimeWithPlural\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM : function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0'\n }, pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n }, plurals = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n }, pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n }, months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months : months,\n monthsShort : months,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize('s'),\n ss : pluralize('s'),\n m : pluralize('m'),\n mm : pluralize('m'),\n h : pluralize('h'),\n hh : pluralize('h'),\n d : pluralize('d'),\n dd : pluralize('d'),\n M : pluralize('M'),\n MM : pluralize('M'),\n y : pluralize('y'),\n yy : pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ka = moment.defineLocale('ka', {\n months : {\n standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')\n },\n monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays : {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[დღეს] LT[-ზე]',\n nextDay : '[ხვალ] LT[-ზე]',\n lastDay : '[გუშინ] LT[-ზე]',\n nextWeek : '[შემდეგ] dddd LT[-ზე]',\n lastWeek : '[წინა] dddd LT-ზე',\n sameElse : 'L'\n },\n relativeTime : {\n future : function (s) {\n return (/(წამი|წუთი|საათი|წელი)/).test(s) ?\n s.replace(/ი$/, 'ში') :\n s + 'ში';\n },\n past : function (s) {\n if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if ((/წელი/).test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n },\n s : 'რამდენიმე წამი',\n ss : '%d წამი',\n m : 'წუთი',\n mm : '%d წუთი',\n h : 'საათი',\n hh : '%d საათი',\n d : 'დღე',\n dd : '%d დღე',\n M : 'თვე',\n MM : '%d თვე',\n y : 'წელი',\n yy : '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal : function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week : {\n dow : 1,\n doy : 7\n }\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ko = moment.defineLocale('ko', {\n months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'YYYY.MM.DD.',\n LL : 'YYYY년 MMMM D일',\n LLL : 'YYYY년 MMMM D일 A h:mm',\n LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\n l : 'YYYY.MM.DD.',\n ll : 'YYYY년 MMMM D일',\n lll : 'YYYY년 MMMM D일 A h:mm',\n llll : 'YYYY년 MMMM D일 dddd A h:mm'\n },\n calendar : {\n sameDay : '오늘 LT',\n nextDay : '내일 LT',\n nextWeek : 'dddd LT',\n lastDay : '어제 LT',\n lastWeek : '지난주 dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s 후',\n past : '%s 전',\n s : '몇 초',\n ss : '%d초',\n m : '1분',\n mm : '%d분',\n h : '한 시간',\n hh : '%d시간',\n d : '하루',\n dd : '%d일',\n M : '한 달',\n MM : '%d달',\n y : '일 년',\n yy : '%d년'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(일|월|주)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse : /오전|오후/,\n isPM : function (token) {\n return token === '오후';\n },\n meridiem : function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n }, numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم'\n ];\n\n\n var ku = moment.defineLocale('ku', {\n months : months,\n monthsShort : months,\n weekdays : 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysShort : 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin : 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar : {\n sameDay : '[ئه‌مرۆ كاتژمێر] LT',\n nextDay : '[به‌یانی كاتژمێر] LT',\n nextWeek : 'dddd [كاتژمێر] LT',\n lastDay : '[دوێنێ كاتژمێر] LT',\n lastWeek : 'dddd [كاتژمێر] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'له‌ %s',\n past : '%s',\n s : 'چه‌ند چركه‌یه‌ك',\n ss : 'چركه‌ %d',\n m : 'یه‌ك خوله‌ك',\n mm : '%d خوله‌ك',\n h : 'یه‌ك كاتژمێر',\n hh : '%d كاتژمێر',\n d : 'یه‌ك ڕۆژ',\n dd : '%d ڕۆژ',\n M : 'یه‌ك مانگ',\n MM : '%d مانگ',\n y : 'یه‌ك ساڵ',\n yy : '%d ساڵ'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : 'dan',\n dd : translate,\n M : 'mjesec',\n MM : translate,\n y : 'godinu',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var units = {\n 'ss' : 'sekundė_sekundžių_sekundes',\n 'm' : 'minutė_minutės_minutę',\n 'mm': 'minutės_minučių_minutes',\n 'h' : 'valanda_valandos_valandą',\n 'hh': 'valandos_valandų_valandas',\n 'd' : 'diena_dienos_dieną',\n 'dd': 'dienos_dienų_dienas',\n 'M' : 'mėnuo_mėnesio_mėnesį',\n 'MM': 'mėnesiai_mėnesių_mėnesius',\n 'y' : 'metai_metų_metus',\n 'yy': 'metai_metų_metus'\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months : {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays : {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY [m.] MMMM D [d.]',\n LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l : 'YYYY-MM-DD',\n ll : 'YYYY [m.] MMMM D [d.]',\n lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar : {\n sameDay : '[Šiandien] LT',\n nextDay : '[Rytoj] LT',\n nextWeek : 'dddd LT',\n lastDay : '[Vakar] LT',\n lastWeek : '[Praėjusį] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'po %s',\n past : 'prieš %s',\n s : translateSeconds,\n ss : translate,\n m : translateSingular,\n mm : translate,\n h : translateSingular,\n hh : translate,\n d : translateSingular,\n dd : translate,\n M : translateSingular,\n MM : translate,\n y : translateSingular,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal : function (number) {\n return number + '-oji';\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var af = moment.defineLocale('af', {\n months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM : function (input) {\n return /^nm$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Vandag om] LT',\n nextDay : '[Môre om] LT',\n nextWeek : 'dddd [om] LT',\n lastDay : '[Gister om] LT',\n lastWeek : '[Laas] dddd [om] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'oor %s',\n past : '%s gelede',\n s : '\\'n paar sekondes',\n ss : '%d sekondes',\n m : '\\'n minuut',\n mm : '%d minute',\n h : '\\'n uur',\n hh : '%d ure',\n d : '\\'n dag',\n dd : '%d dae',\n M : '\\'n maand',\n MM : '%d maande',\n y : '\\'n jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week : {\n dow : 1, // Maandag is die eerste dag van die week.\n doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n }\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var vi = moment.defineLocale('vi', {\n months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n monthsParseExact : true,\n weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /sa|ch/i,\n isPM : function (input) {\n return /^ch$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM [năm] YYYY',\n LLL : 'D MMMM [năm] YYYY HH:mm',\n LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n l : 'DD/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần rồi lúc] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s tới',\n past : '%s trước',\n s : 'vài giây',\n ss : '%d giây' ,\n m : 'một phút',\n mm : '%d phút',\n h : 'một giờ',\n hh : '%d giờ',\n d : 'một ngày',\n dd : '%d ngày',\n M : 'một tháng',\n MM : '%d tháng',\n y : 'một năm',\n yy : '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var translator = {\n words: { //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact : true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'nekoliko sekundi',\n ss : translator.translate,\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'dan',\n dd : translator.translate,\n M : 'mjesec',\n MM : translator.translate,\n y : 'godinu',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var uz = moment.defineLocale('uz', {\n months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'D MMMM YYYY, dddd HH:mm'\n },\n calendar : {\n sameDay : '[Бугун соат] LT [да]',\n nextDay : '[Эртага] LT [да]',\n nextWeek : 'dddd [куни соат] LT [да]',\n lastDay : '[Кеча соат] LT [да]',\n lastWeek : '[Утган] dddd [куни соат] LT [да]',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'Якин %s ичида',\n past : 'Бир неча %s олдин',\n s : 'фурсат',\n ss : '%d фурсат',\n m : 'бир дакика',\n mm : '%d дакика',\n h : 'бир соат',\n hh : '%d соат',\n d : 'бир кун',\n dd : '%d кун',\n M : 'бир ой',\n MM : '%d ой',\n y : 'бир йил',\n yy : '%d йил'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enCa = moment.defineLocale('en-ca', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'YYYY-MM-DD',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enGb = moment.defineLocale('en-gb', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture)\n {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's': output = 'काही सेकंद'; break;\n case 'ss': output = '%d सेकंद'; break;\n case 'm': output = 'एक मिनिट'; break;\n case 'mm': output = '%d मिनिटे'; break;\n case 'h': output = 'एक तास'; break;\n case 'hh': output = '%d तास'; break;\n case 'd': output = 'एक दिवस'; break;\n case 'dd': output = '%d दिवस'; break;\n case 'M': output = 'एक महिना'; break;\n case 'MM': output = '%d महिने'; break;\n case 'y': output = 'एक वर्ष'; break;\n case 'yy': output = '%d वर्षे'; break;\n }\n }\n else {\n switch (string) {\n case 's': output = 'काही सेकंदां'; break;\n case 'ss': output = '%d सेकंदां'; break;\n case 'm': output = 'एका मिनिटा'; break;\n case 'mm': output = '%d मिनिटां'; break;\n case 'h': output = 'एका तासा'; break;\n case 'hh': output = '%d तासां'; break;\n case 'd': output = 'एका दिवसा'; break;\n case 'dd': output = '%d दिवसां'; break;\n case 'M': output = 'एका महिन्या'; break;\n case 'MM': output = '%d महिन्यां'; break;\n case 'y': output = 'एका वर्षा'; break;\n case 'yy': output = '%d वर्षां'; break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n monthsParseExact : true,\n weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm वाजता',\n LTS : 'A h:mm:ss वाजता',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm वाजता',\n LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[उद्या] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात्री') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळी') {\n return hour;\n } else if (meridiem === 'दुपारी') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'सायंकाळी') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात्री';\n } else if (hour < 10) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n\n var ne = moment.defineLocale('ne', {\n months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n monthsParseExact : true,\n weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'Aको h:mm बजे',\n LTS : 'Aको h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, Aको h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[भोलि] LT',\n nextWeek : '[आउँदो] dddd[,] LT',\n lastDay : '[हिजो] LT',\n lastWeek : '[गएको] dddd[,] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sमा',\n past : '%s अगाडि',\n s : 'केही क्षण',\n ss : '%d सेकेण्ड',\n m : 'एक मिनेट',\n mm : '%d मिनेट',\n h : 'एक घण्टा',\n hh : '%d घण्टा',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महिना',\n MM : '%d महिना',\n y : 'एक बर्ष',\n yy : '%d बर्ष'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум'\n };\n\n var tg = moment.defineLocale('tg', {\n months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Имрӯз соати] LT',\n nextDay : '[Пагоҳ соати] LT',\n lastDay : '[Дирӯз соати] LT',\n nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'баъди %s',\n past : '%s пеш',\n s : 'якчанд сония',\n m : 'як дақиқа',\n mm : '%d дақиқа',\n h : 'як соат',\n hh : '%d соат',\n d : 'як рӯз',\n dd : '%d рӯз',\n M : 'як моҳ',\n MM : '%d моҳ',\n y : 'як сол',\n yy : '%d сол'\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1th is the first week of the year.\n }\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\n\n var monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i];\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n var monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return (n > 1) && (n < 5) && (~~(n / 10) !== 1);\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n break;\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n break;\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months : months,\n monthsShort : monthsShort,\n monthsRegex : monthsRegex,\n monthsShortRegex : monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex : /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex : /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm',\n l : 'D. M. YYYY'\n },\n calendar : {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'před %s',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse : /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦'\n }, numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0'\n };\n\n var ta = moment.defineLocale('ta', {\n months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, HH:mm',\n LLLL : 'dddd, D MMMM YYYY, HH:mm'\n },\n calendar : {\n sameDay : '[இன்று] LT',\n nextDay : '[நாளை] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[நேற்று] LT',\n lastWeek : '[கடந்த வாரம்] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s இல்',\n past : '%s முன்',\n s : 'ஒரு சில விநாடிகள்',\n ss : '%d விநாடிகள்',\n m : 'ஒரு நிமிடம்',\n mm : '%d நிமிடங்கள்',\n h : 'ஒரு மணி நேரம்',\n hh : '%d மணி நேரம்',\n d : 'ஒரு நாள்',\n dd : '%d நாட்கள்',\n M : 'ஒரு மாதம்',\n MM : '%d மாதங்கள்',\n y : 'ஒரு வருடம்',\n yy : '%d ஆண்டுகள்'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal : function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem : function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '೧',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': '೭',\n '8': '೮',\n '9': '೯',\n '0': '೦'\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0'\n };\n\n var kn = moment.defineLocale('kn', {\n months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n monthsParseExact: true,\n weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[ಇಂದು] LT',\n nextDay : '[ನಾಳೆ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ನಿನ್ನೆ] LT',\n lastWeek : '[ಕೊನೆಯ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ನಂತರ',\n past : '%s ಹಿಂದೆ',\n s : 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss : '%d ಸೆಕೆಂಡುಗಳು',\n m : 'ಒಂದು ನಿಮಿಷ',\n mm : '%d ನಿಮಿಷ',\n h : 'ಒಂದು ಗಂಟೆ',\n hh : '%d ಗಂಟೆ',\n d : 'ಒಂದು ದಿನ',\n dd : '%d ದಿನ',\n M : 'ಒಂದು ತಿಂಗಳು',\n MM : '%d ತಿಂಗಳು',\n y : 'ಒಂದು ವರ್ಷ',\n yy : '%d ವರ್ಷ'\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal : function (number) {\n return number + 'ನೇ';\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arKw = moment.defineLocale('ar-kw', {\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eng Minutt', 'enger Minutt'],\n 'h': ['eng Stonn', 'enger Stonn'],\n 'd': ['een Dag', 'engem Dag'],\n 'M': ['ee Mount', 'engem Mount'],\n 'y': ['ee Joer', 'engem Joer']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10, firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n }\n },\n relativeTime : {\n future : processFutureTime,\n past : processPastTime,\n s : 'e puer Sekonnen',\n ss : '%d Sekonnen',\n m : processRelativeTime,\n mm : '%d Minutten',\n h : processRelativeTime,\n hh : '%d Stonnen',\n d : processRelativeTime,\n dd : '%d Deeg',\n M : processRelativeTime,\n MM : '%d Méint',\n y : processRelativeTime,\n yy : '%d Joer'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months : {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : 'dan',\n dd : translate,\n M : 'mjesec',\n MM : translate,\n y : 'godinu',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı'\n };\n\n var az = moment.defineLocale('az', {\n months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[sabah saat] LT',\n nextWeek : '[gələn həftə] dddd [saat] LT',\n lastDay : '[dünən] LT',\n lastWeek : '[keçən həftə] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s əvvəl',\n s : 'birneçə saniyə',\n ss : '%d saniyə',\n m : 'bir dəqiqə',\n mm : '%d dəqiqə',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir il',\n yy : '%d il'\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM : function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal : function (number) {\n if (number === 0) { // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var zhHk = moment.defineLocale('zh-hk', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日dddd HH:mm',\n l : 'YYYY/M/D',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + '日';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%s內',\n past : '%s前',\n s : '幾秒',\n ss : '%d 秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 年',\n yy : '%d 年'\n }\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var id = moment.defineLocale('id', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Besok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kemarin pukul] LT',\n lastWeek : 'dddd [lalu pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lalu',\n s : 'beberapa detik',\n ss : '%d detik',\n m : 'semenit',\n mm : '%d menit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n\n var months = [\n 'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig'\n ];\n\n var monthsShort = ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll'];\n\n var weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn'];\n\n var weekdaysShort = ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat'];\n\n var weekdaysMin = ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné aig] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d mí',\n y: 'bliain',\n yy: '%d bliain'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر'\n ];\n var days = [\n 'اتوار',\n 'پیر',\n 'منگل',\n 'بدھ',\n 'جمعرات',\n 'جمعہ',\n 'ہفتہ'\n ];\n\n var ur = moment.defineLocale('ur', {\n months : months,\n monthsShort : months,\n weekdays : days,\n weekdaysShort : days,\n weekdaysMin : days,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM : function (input) {\n return 'شام' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar : {\n sameDay : '[آج بوقت] LT',\n nextDay : '[کل بوقت] LT',\n nextWeek : 'dddd [بوقت] LT',\n lastDay : '[گذشتہ روز بوقت] LT',\n lastWeek : '[گذشتہ] dddd [بوقت] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s بعد',\n past : '%s قبل',\n s : 'چند سیکنڈ',\n ss : '%d سیکنڈ',\n m : 'ایک منٹ',\n mm : '%d منٹ',\n h : 'ایک گھنٹہ',\n hh : '%d گھنٹے',\n d : 'ایک دن',\n dd : '%d دن',\n M : 'ایک ماہ',\n MM : '%d ماہ',\n y : 'ایک سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ss = moment.defineLocale('ss', {\n months : \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Namuhla nga] LT',\n nextDay : '[Kusasa nga] LT',\n nextWeek : 'dddd [nga] LT',\n lastDay : '[Itolo nga] LT',\n lastWeek : 'dddd [leliphelile] [nga] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'nga %s',\n past : 'wenteka nga %s',\n s : 'emizuzwana lomcane',\n ss : '%d mzuzwana',\n m : 'umzuzu',\n mm : '%d emizuzu',\n h : 'lihora',\n hh : '%d emahora',\n d : 'lilanga',\n dd : '%d emalanga',\n M : 'inyanga',\n MM : '%d tinyanga',\n y : 'umnyaka',\n yy : '%d iminyaka'\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : '%d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tet = moment.defineLocale('tet', {\n months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'iha %s',\n past : '%s liuba',\n s : 'minutu balun',\n ss : 'minutu %d',\n m : 'minutu ida',\n mm : 'minutu %d',\n h : 'oras ida',\n hh : 'oras %d',\n d : 'loron ida',\n dd : 'loron %d',\n M : 'fulan ida',\n MM : 'fulan %d',\n y : 'tinan ida',\n yy : 'tinan %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'MM/DD/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY h:mm A',\n LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު'\n ], weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު'\n ];\n\n var dv = moment.defineLocale('dv', {\n months : months,\n monthsShort : months,\n weekdays : weekdays,\n weekdaysShort : weekdays,\n weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat : {\n\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/M/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /މކ|މފ/,\n isPM : function (input) {\n return 'މފ' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar : {\n sameDay : '[މިއަދު] LT',\n nextDay : '[މާދަމާ] LT',\n nextWeek : 'dddd LT',\n lastDay : '[އިއްޔެ] LT',\n lastWeek : '[ފާއިތުވި] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ތެރޭގައި %s',\n past : 'ކުރިން %s',\n s : 'ސިކުންތުކޮޅެއް',\n ss : 'd% ސިކުންތު',\n m : 'މިނިޓެއް',\n mm : 'މިނިޓު %d',\n h : 'ގަޑިއިރެއް',\n hh : 'ގަޑިއިރު %d',\n d : 'ދުވަހެއް',\n dd : 'ދުވަސް %d',\n M : 'މަހެއް',\n MM : 'މަސް %d',\n y : 'އަހަރެއް',\n yy : 'އަހަރު %d'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 7, // Sunday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n }\n\n var hu = moment.defineLocale('hu', {\n months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'YYYY.MM.DD.',\n LL : 'YYYY. MMMM D.',\n LLL : 'YYYY. MMMM D. H:mm',\n LLLL : 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar : {\n sameDay : '[ma] LT[-kor]',\n nextDay : '[holnap] LT[-kor]',\n nextWeek : function () {\n return week.call(this, true);\n },\n lastDay : '[tegnap] LT[-kor]',\n lastWeek : function () {\n return week.call(this, false);\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s múlva',\n past : '%s',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var sv = moment.defineLocale('sv', {\n months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : 'för %s sedan',\n s : 'några sekunder',\n ss : '%d sekunder',\n m : 'en minut',\n mm : '%d minuter',\n h : 'en timme',\n hh : '%d timmar',\n d : 'en dag',\n dd : '%d dagar',\n M : 'en månad',\n MM : '%d månader',\n y : 'ett år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'e' :\n (b === 1) ? 'a' :\n (b === 2) ? 'a' :\n (b === 3) ? 'e' : 'e';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var zhCn = moment.defineLocale('zh-cn', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日Ah点mm分',\n LLLL : 'YYYY年M月D日ddddAh点mm分',\n l : 'YYYY/M/D',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' ||\n meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s内',\n past : '%s前',\n s : '几秒',\n ss : '%d 秒',\n m : '1 分钟',\n mm : '%d 分钟',\n h : '1 小时',\n hh : '%d 小时',\n d : '1 天',\n dd : '%d 天',\n M : '1 个月',\n MM : '%d 个月',\n y : '1 年',\n yy : '%d 年'\n },\n week : {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var te = moment.defineLocale('te', {\n months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[నేడు] LT',\n nextDay : '[రేపు] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[నిన్న] LT',\n lastWeek : '[గత] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s లో',\n past : '%s క్రితం',\n s : 'కొన్ని క్షణాలు',\n ss : '%d సెకన్లు',\n m : 'ఒక నిమిషం',\n mm : '%d నిమిషాలు',\n h : 'ఒక గంట',\n hh : '%d గంటలు',\n d : 'ఒక రోజు',\n dd : '%d రోజులు',\n M : 'ఒక నెల',\n MM : '%d నెలలు',\n y : 'ఒక సంవత్సరం',\n yy : '%d సంవత్సరాలు'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}వ/,\n ordinal : '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return te;\n\n})));\n","//! moment.js language configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل'\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر'\n ];\n var days = [\n 'آچر',\n 'سومر',\n 'اڱارو',\n 'اربع',\n 'خميس',\n 'جمع',\n 'ڇنڇر'\n ];\n\n var sd = moment.defineLocale('sd', {\n months : months,\n monthsShort : months,\n weekdays : days,\n weekdaysShort : days,\n weekdaysMin : days,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd، D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM : function (input) {\n return 'شام' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar : {\n sameDay : '[اڄ] LT',\n nextDay : '[سڀاڻي] LT',\n nextWeek : 'dddd [اڳين هفتي تي] LT',\n lastDay : '[ڪالهه] LT',\n lastWeek : '[گزريل هفتي] dddd [تي] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s پوء',\n past : '%s اڳ',\n s : 'چند سيڪنڊ',\n ss : '%d سيڪنڊ',\n m : 'هڪ منٽ',\n mm : '%d منٽ',\n h : 'هڪ ڪلاڪ',\n hh : '%d ڪلاڪ',\n d : 'هڪ ڏينهن',\n dd : '%d ڏينهن',\n M : 'هڪ مهينو',\n MM : '%d مهينا',\n y : 'هڪ سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var msMy = moment.defineLocale('ms-my', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n ss : '%d saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var eo = moment.defineLocale('eo', {\n months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),\n weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D[-a de] MMMM, YYYY',\n LLL : 'D[-a de] MMMM, YYYY HH:mm',\n LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar : {\n sameDay : '[Hodiaŭ je] LT',\n nextDay : '[Morgaŭ je] LT',\n nextWeek : 'dddd [je] LT',\n lastDay : '[Hieraŭ je] LT',\n lastWeek : '[pasinta] dddd [je] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'post %s',\n past : 'antaŭ %s',\n s : 'sekundoj',\n ss : '%d sekundoj',\n m : 'minuto',\n mm : '%d minutoj',\n h : 'horo',\n hh : '%d horoj',\n d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo\n dd : '%d tagoj',\n M : 'monato',\n MM : '%d monatoj',\n y : 'jaro',\n yy : '%d jaroj'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal : '%da',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n 'mm': 'munutenn',\n 'MM': 'miz',\n 'dd': 'devezh'\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n 'm': 'v',\n 'b': 'v',\n 'd': 'z'\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var br = moment.defineLocale('br', {\n months : 'Genver_C\\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n monthsShort : 'Gen_C\\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays : 'Sul_Lun_Meurzh_Merc\\'her_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h[e]mm A',\n LTS : 'h[e]mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [a viz] MMMM YYYY',\n LLL : 'D [a viz] MMMM YYYY h[e]mm A',\n LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'\n },\n calendar : {\n sameDay : '[Hiziv da] LT',\n nextDay : '[Warc\\'hoazh da] LT',\n nextWeek : 'dddd [da] LT',\n lastDay : '[Dec\\'h da] LT',\n lastWeek : 'dddd [paset da] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'a-benn %s',\n past : '%s \\'zo',\n s : 'un nebeud segondennoù',\n ss : '%d eilenn',\n m : 'ur vunutenn',\n mm : relativeTimeWithMutation,\n h : 'un eur',\n hh : '%d eur',\n d : 'un devezh',\n dd : relativeTimeWithMutation,\n M : 'ur miz',\n MM : relativeTimeWithMutation,\n y : 'ur bloaz',\n yy : specialMutationForYears\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal : function (number) {\n var output = (number === 1) ? 'añ' : 'vet';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var mk = moment.defineLocale('mk', {\n months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Денес во] LT',\n nextDay : '[Утре во] LT',\n nextWeek : '[Во] dddd [во] LT',\n lastDay : '[Вчера во] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'после %s',\n past : 'пред %s',\n s : 'неколку секунди',\n ss : '%d секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дена',\n M : 'месец',\n MM : '%d месеци',\n y : 'година',\n yy : '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enNz = moment.defineLocale('en-nz', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var nb = moment.defineLocale('nb', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'noen sekunder',\n ss : '%d sekunder',\n m : 'ett minutt',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dager',\n M : 'en måned',\n MM : '%d måneder',\n y : 'ett år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n };\n\n var kk = moment.defineLocale('kk', {\n months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгін сағат] LT',\n nextDay : '[Ертең сағат] LT',\n nextWeek : 'dddd [сағат] LT',\n lastDay : '[Кеше сағат] LT',\n lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ішінде',\n past : '%s бұрын',\n s : 'бірнеше секунд',\n ss : '%d секунд',\n m : 'бір минут',\n mm : '%d минут',\n h : 'бір сағат',\n hh : '%d сағат',\n d : 'бір күн',\n dd : '%d күн',\n M : 'бір ай',\n MM : '%d ай',\n y : 'бір жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss : '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var it = moment.defineLocale('it', {\n months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : function (s) {\n return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past : '%s fa',\n s : 'alcuni secondi',\n ss : '%d secondi',\n m : 'un minuto',\n mm : '%d minuti',\n h : 'un\\'ora',\n hh : '%d ore',\n d : 'un giorno',\n dd : '%d giorni',\n M : 'un mese',\n MM : '%d mesi',\n y : 'un anno',\n yy : '%d anni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var itCh = moment.defineLocale('it-ch', {\n months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : function (s) {\n return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past : '%s fa',\n s : 'alcuni secondi',\n ss : '%d secondi',\n m : 'un minuto',\n mm : '%d minuti',\n h : 'un\\'ora',\n hh : '%d ore',\n d : 'un giorno',\n dd : '%d giorni',\n M : 'un mese',\n MM : '%d mesi',\n y : 'un anno',\n yy : '%d anni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'oer %s',\n past : '%s lyn',\n s : 'in pear sekonden',\n ss : '%d sekonden',\n m : 'ien minút',\n mm : '%d minuten',\n h : 'ien oere',\n hh : '%d oeren',\n d : 'ien dei',\n dd : '%d dagen',\n M : 'ien moanne',\n MM : '%d moannen',\n y : 'ien jier',\n yy : '%d jierren'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enIl = moment.defineLocale('en-il', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var sw = moment.defineLocale('sw', {\n months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[leo saa] LT',\n nextDay : '[kesho saa] LT',\n nextWeek : '[wiki ijayo] dddd [saat] LT',\n lastDay : '[jana] LT',\n lastWeek : '[wiki iliyopita] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s baadaye',\n past : 'tokea %s',\n s : 'hivi punde',\n ss : 'sekunde %d',\n m : 'dakika moja',\n mm : 'dakika %d',\n h : 'saa limoja',\n hh : 'masaa %d',\n d : 'siku moja',\n dd : 'masiku %d',\n M : 'mwezi mmoja',\n MM : 'miezi %d',\n y : 'mwaka mmoja',\n yy : 'miaka %d'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return (n > 1) && (n < 5);\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n break;\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n break;\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months : months,\n monthsShort : monthsShort,\n weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pred %s',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var yo = moment.defineLocale('yo', {\n months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Ònì ni] LT',\n nextDay : '[Ọ̀la ni] LT',\n nextWeek : 'dddd [Ọsẹ̀ tón\\'bọ] [ni] LT',\n lastDay : '[Àna ni] LT',\n lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ní %s',\n past : '%s kọjá',\n s : 'ìsẹjú aayá die',\n ss :'aayá %d',\n m : 'ìsẹjú kan',\n mm : 'ìsẹjú %d',\n h : 'wákati kan',\n hh : 'wákati %d',\n d : 'ọjọ́ kan',\n dd : 'ọjọ́ %d',\n M : 'osù kan',\n MM : 'osù %d',\n y : 'ọdún kan',\n yy : 'ọdún %d'\n },\n dayOfMonthOrdinalParse : /ọjọ́\\s\\d{1,2}/,\n ordinal : 'ọjọ́ %d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danes ob] LT',\n nextDay : '[jutri ob] LT',\n\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay : '[včeraj ob] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'čez %s',\n past : 'pred %s',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n numbersFuture = [\n 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n numbersPast[7], numbersPast[8], numbersPast[9]\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n return isFuture ? 'sekunnin' : 'sekuntia';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'Do MMMM[ta] YYYY',\n LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l : 'D.M.YYYY',\n ll : 'Do MMM YYYY',\n lll : 'Do MMM YYYY, [klo] HH.mm',\n llll : 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar : {\n sameDay : '[tänään] [klo] LT',\n nextDay : '[huomenna] [klo] LT',\n nextWeek : 'dddd [klo] LT',\n lastDay : '[eilen] [klo] LT',\n lastWeek : '[viime] dddd[na] [klo] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s päästä',\n past : '%s sitten',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n }, numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var bg = moment.defineLocale('bg', {\n months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Днес в] LT',\n nextDay : '[Утре в] LT',\n nextWeek : 'dddd [в] LT',\n lastDay : '[Вчера в] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[В изминалата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[В изминалия] dddd [в] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'след %s',\n past : 'преди %s',\n s : 'няколко секунди',\n ss : '%d секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дни',\n M : 'месец',\n MM : '%d месеца',\n y : 'година',\n yy : '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀'\n }, numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0'\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss : '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်'\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var gl = moment.defineLocale('gl', {\n months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextDay : function () {\n return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n lastDay : function () {\n return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';\n },\n lastWeek : function () {\n return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past : 'hai %s',\n s : 'uns segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'unha hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex : monthsRegex,\n monthsShortRegex : monthsRegex,\n monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex : /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n ss : '%d segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n months : function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM : function (input) {\n return ((input + '').toLowerCase()[0] === 'μ');\n },\n meridiemParse : /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendarEl : {\n sameDay : '[Σήμερα {}] LT',\n nextDay : '[Αύριο {}] LT',\n nextWeek : 'dddd [{}] LT',\n lastDay : '[Χθες {}] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse : 'L'\n },\n calendar : function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));\n },\n relativeTime : {\n future : 'σε %s',\n past : '%s πριν',\n s : 'λίγα δευτερόλεπτα',\n ss : '%d δευτερόλεπτα',\n m : 'ένα λεπτό',\n mm : '%d λεπτά',\n h : 'μία ώρα',\n hh : '%d ώρες',\n d : 'μία μέρα',\n dd : '%d μέρες',\n M : 'ένας μήνας',\n MM : '%d μήνες',\n y : 'ένας χρόνος',\n yy : '%d χρόνια'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4st is the first week of the year.\n }\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\n function plural(n) {\n return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months : function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : '%s temu',\n s : 'kilka sekund',\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : '1 dzień',\n dd : '%d dni',\n M : 'miesiąc',\n MM : translate,\n y : 'rok',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '۱',\n '2': '۲',\n '3': '۳',\n '4': '۴',\n '5': '۵',\n '6': '۶',\n '7': '۷',\n '8': '۸',\n '9': '۹',\n '0': '۰'\n }, numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0'\n };\n\n var fa = moment.defineLocale('fa', {\n months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysShort : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar : {\n sameDay : '[امروز ساعت] LT',\n nextDay : '[فردا ساعت] LT',\n nextWeek : 'dddd [ساعت] LT',\n lastDay : '[دیروز ساعت] LT',\n lastWeek : 'dddd [پیش] [ساعت] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'در %s',\n past : '%s پیش',\n s : 'چند ثانیه',\n ss : 'ثانیه d%',\n m : 'یک دقیقه',\n mm : '%d دقیقه',\n h : 'یک ساعت',\n hh : '%d ساعت',\n d : 'یک روز',\n dd : '%d روز',\n M : 'یک ماه',\n MM : '%d ماه',\n y : 'یک سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal : '%dم',\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '١',\n '2': '٢',\n '3': '٣',\n '4': '٤',\n '5': '٥',\n '6': '٦',\n '7': '٧',\n '8': '٨',\n '9': '٩',\n '0': '٠'\n }, numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0'\n }, pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n }, plurals = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n }, pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n }, months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n ];\n\n var ar = moment.defineLocale('ar', {\n months : months,\n monthsShort : months,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|م/,\n isPM : function (input) {\n return 'م' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize('s'),\n ss : pluralize('s'),\n m : pluralize('m'),\n mm : pluralize('m'),\n h : pluralize('h'),\n hh : pluralize('h'),\n d : pluralize('d'),\n dd : pluralize('d'),\n M : pluralize('M'),\n MM : pluralize('M'),\n y : pluralize('y'),\n yy : pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, '،');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var symbolMap = {\n '1': '১',\n '2': '২',\n '3': '৩',\n '4': '৪',\n '5': '৫',\n '6': '৬',\n '7': '৭',\n '8': '৮',\n '9': '৯',\n '0': '০'\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n };\n\n var bn = moment.defineLocale('bn', {\n months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n longDateFormat : {\n LT : 'A h:mm সময়',\n LTS : 'A h:mm:ss সময়',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm সময়',\n LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar : {\n sameDay : '[আজ] LT',\n nextDay : '[আগামীকাল] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[গতকাল] LT',\n lastWeek : '[গত] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s পরে',\n past : '%s আগে',\n s : 'কয়েক সেকেন্ড',\n ss : '%d সেকেন্ড',\n m : 'এক মিনিট',\n mm : '%d মিনিট',\n h : 'এক ঘন্টা',\n hh : '%d ঘন্টা',\n d : 'এক দিন',\n dd : '%d দিন',\n M : 'এক মাস',\n MM : '%d মাস',\n y : 'এক বছর',\n yy : '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var zhTw = moment.defineLocale('zh-tw', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY年M月D日',\n LLL : 'YYYY年M月D日 HH:mm',\n LLLL : 'YYYY年M月D日dddd HH:mm',\n l : 'YYYY/M/D',\n ll : 'YYYY年M月D日',\n lll : 'YYYY年M月D日 HH:mm',\n llll : 'YYYY年M月D日dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天] LT',\n nextDay : '[明天] LT',\n nextWeek : '[下]dddd LT',\n lastDay : '[昨天] LT',\n lastWeek : '[上]dddd LT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + '日';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%s內',\n past : '%s前',\n s : '幾秒',\n ss : '%d 秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 年',\n yy : '%d 年'\n }\n });\n\n return zhTw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS : 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n 'hh': 'час_часа_часов',\n 'dd': 'день_дня_дней',\n 'MM': 'месяц_месяца_месяцев',\n 'yy': 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months : {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort : {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays : {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n },\n weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., H:mm',\n LLLL : 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar : {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'через %s',\n past : '%s назад',\n s : 'несколько секунд',\n ss : relativeTimeWithPlural,\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : 'час',\n hh : relativeTimeWithPlural,\n d : 'день',\n dd : relativeTimeWithPlural,\n M : 'месяц',\n MM : relativeTimeWithPlural,\n y : 'год',\n yy : relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM : function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n monthsParseExact : true,\n weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY оны MMMMын D',\n LLL : 'YYYY оны MMMMын D HH:mm',\n LLLL : 'dddd, YYYY оны MMMMын D HH:mm'\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM : function (input) {\n return input === 'ҮХ';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar : {\n sameDay : '[Өнөөдөр] LT',\n nextDay : '[Маргааш] LT',\n nextWeek : '[Ирэх] dddd LT',\n lastDay : '[Өчигдөр] LT',\n lastWeek : '[Өнгөрсөн] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s дараа',\n past : '%s өмнө',\n s : translate,\n ss : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n }\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү'\n };\n\n var ky = moment.defineLocale('ky', {\n months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгүн саат] LT',\n nextDay : '[Эртең саат] LT',\n nextWeek : 'dddd [саат] LT',\n lastDay : '[Кечээ саат] LT',\n lastWeek : '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ичинде',\n past : '%s мурун',\n s : 'бирнече секунд',\n ss : '%d секунд',\n m : 'бир мүнөт',\n mm : '%d мүнөт',\n h : 'бир саат',\n hh : '%d саат',\n d : 'бир күн',\n dd : '%d күн',\n M : 'бир ай',\n MM : '%d ай',\n y : 'бир жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': 'secunde',\n 'mm': 'minute',\n 'hh': 'ore',\n 'dd': 'zile',\n 'MM': 'luni',\n 'yy': 'ani'\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'peste %s',\n past : '%s în urmă',\n s : 'câteva secunde',\n ss : relativeTimeWithPlural,\n m : 'un minut',\n mm : relativeTimeWithPlural,\n h : 'o oră',\n hh : relativeTimeWithPlural,\n d : 'o zi',\n dd : relativeTimeWithPlural,\n M : 'o lună',\n MM : relativeTimeWithPlural,\n y : 'un an',\n yy : relativeTimeWithPlural\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var fr = moment.defineLocale('fr', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n ss : '%d secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal : function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var arDz = moment.defineLocale('ar-dz', {\n months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n ss : '%d ثانية',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var bm = moment.defineLocale('bm', {\n months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),\n monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'MMMM [tile] D [san] YYYY',\n LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'\n },\n calendar : {\n sameDay : '[Bi lɛrɛ] LT',\n nextDay : '[Sini lɛrɛ] LT',\n nextWeek : 'dddd [don lɛrɛ] LT',\n lastDay : '[Kunu lɛrɛ] LT',\n lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s kɔnɔ',\n past : 'a bɛ %s bɔ',\n s : 'sanga dama dama',\n ss : 'sekondi %d',\n m : 'miniti kelen',\n mm : 'miniti %d',\n h : 'lɛrɛ kelen',\n hh : 'lɛrɛ %d',\n d : 'tile kelen',\n dd : 'tile %d',\n M : 'kalo kelen',\n MM : 'kalo %d',\n y : 'san kelen',\n yy : 'san %d'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n 'dd': 'день_дні_днів',\n 'MM': 'місяць_місяці_місяців',\n 'yy': 'рік_роки_років'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n };\n\n if (m === true) {\n return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n var nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n 'accusative' :\n ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n 'genitive' :\n 'nominative');\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months : {\n 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n weekdays : weekdaysCaseReplace,\n weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY р.',\n LLL : 'D MMMM YYYY р., HH:mm',\n LLLL : 'dddd, D MMMM YYYY р., HH:mm'\n },\n calendar : {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : '%s тому',\n s : 'декілька секунд',\n ss : relativeTimeWithPlural,\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : 'годину',\n hh : relativeTimeWithPlural,\n d : 'день',\n dd : relativeTimeWithPlural,\n M : 'місяць',\n MM : relativeTimeWithPlural,\n y : 'рік',\n yy : relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n ss : '%d Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var lo = moment.defineLocale('lo', {\n months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar : {\n sameDay : '[ມື້ນີ້ເວລາ] LT',\n nextDay : '[ມື້ອື່ນເວລາ] LT',\n nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay : '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ອີກ %s',\n past : '%sຜ່ານມາ',\n s : 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss : '%d ວິນາທີ' ,\n m : '1 ນາທີ',\n mm : '%d ນາທີ',\n h : '1 ຊົ່ວໂມງ',\n hh : '%d ຊົ່ວໂມງ',\n d : '1 ມື້',\n dd : '%d ມື້',\n M : '1 ເດືອນ',\n MM : '%d ເດືອນ',\n y : '1 ປີ',\n yy : '%d ປີ'\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal : function (number) {\n return 'ທີ່' + number;\n }\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n ss : '%d Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'dadkh s yan %s',\n past : 'yan %s',\n s : 'imik',\n ss : '%d imik',\n m : 'minuḍ',\n mm : '%d minuḍ',\n h : 'saɛa',\n hh : '%d tassaɛin',\n d : 'ass',\n dd : '%d ossan',\n M : 'ayowr',\n MM : '%d iyyirn',\n y : 'asgas',\n yy : '%d isgasn'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var jv = moment.defineLocale('jv', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar : {\n sameDay : '[Dinten puniko pukul] LT',\n nextDay : '[Mbenjang pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kala wingi pukul] LT',\n lastWeek : 'dddd [kepengker pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'wonten ing %s',\n past : '%s ingkang kepengker',\n s : 'sawetawis detik',\n ss : '%d detik',\n m : 'setunggal menit',\n mm : '%d menit',\n h : 'setunggal jam',\n hh : '%d jam',\n d : 'sedinten',\n dd : '%d dinten',\n M : 'sewulan',\n MM : '%d wulan',\n y : 'setaun',\n yy : '%d taun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n ss : '%d Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var nn = moment.defineLocale('nn', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\n weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s sidan',\n s : 'nokre sekund',\n ss : '%d sekund',\n m : 'eit minutt',\n mm : '%d minutt',\n h : 'ein time',\n hh : '%d timar',\n d : 'ein dag',\n dd : '%d dagar',\n M : 'ein månad',\n MM : '%d månader',\n y : 'eit år',\n yy : '%d år'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var units = {\n 'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n 'h': 'stundas_stundām_stunda_stundas'.split('_'),\n 'hh': 'stundas_stundām_stunda_stundas'.split('_'),\n 'd': 'dienas_dienām_diena_dienas'.split('_'),\n 'dd': 'dienas_dienām_diena_dienas'.split('_'),\n 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n 'y': 'gada_gadiem_gads_gadi'.split('_'),\n 'yy': 'gada_gadiem_gads_gadi'.split('_')\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY.',\n LL : 'YYYY. [gada] D. MMMM',\n LLL : 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n },\n calendar : {\n sameDay : '[Šodien pulksten] LT',\n nextDay : '[Rīt pulksten] LT',\n nextWeek : 'dddd [pulksten] LT',\n lastDay : '[Vakar pulksten] LT',\n lastWeek : '[Pagājušā] dddd [pulksten] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'pēc %s',\n past : 'pirms %s',\n s : relativeSeconds,\n ss : relativeTimeWithPlural,\n m : relativeTimeWithSingular,\n mm : relativeTimeWithPlural,\n h : relativeTimeWithSingular,\n hh : relativeTimeWithPlural,\n d : relativeTimeWithSingular,\n dd : relativeTimeWithPlural,\n M : relativeTimeWithSingular,\n MM : relativeTimeWithPlural,\n y : relativeTimeWithSingular,\n yy : relativeTimeWithPlural\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var tzm = moment.defineLocale('tzm', {\n months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past : 'ⵢⴰⵏ %s',\n s : 'ⵉⵎⵉⴽ',\n ss : '%d ⵉⵎⵉⴽ',\n m : 'ⵎⵉⵏⵓⴺ',\n mm : '%d ⵎⵉⵏⵓⴺ',\n h : 'ⵙⴰⵄⴰ',\n hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d : 'ⴰⵙⵙ',\n dd : '%d oⵙⵙⴰⵏ',\n M : 'ⴰⵢoⵓⵔ',\n MM : '%d ⵉⵢⵢⵉⵔⵏ',\n y : 'ⴰⵙⴳⴰⵙ',\n yy : '%d ⵉⵙⴳⴰⵙⵏ'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return tzm;\n\n})));\n","//! moment.js\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate (y) {\n var date;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n var args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays (ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays :\n this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];\n return (m === true) ? shiftWeekdays(weekdays, this._week.dow)\n : (m) ? weekdays[m.day()] : weekdays;\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000;\n var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf (units) {\n var time;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month': return months;\n case 'quarter': return months / 3;\n case 'year': return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asQuarters = makeAs('Q');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.24.0';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var he = moment.defineLocale('he', {\n months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [ב]MMMM YYYY',\n LLL : 'D [ב]MMMM YYYY HH:mm',\n LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',\n l : 'D/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[היום ב־]LT',\n nextDay : '[מחר ב־]LT',\n nextWeek : 'dddd [בשעה] LT',\n lastDay : '[אתמול ב־]LT',\n lastWeek : '[ביום] dddd [האחרון בשעה] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'בעוד %s',\n past : 'לפני %s',\n s : 'מספר שניות',\n ss : '%d שניות',\n m : 'דקה',\n mm : '%d דקות',\n h : 'שעה',\n hh : function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d : 'יום',\n dd : function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M : 'חודש',\n MM : function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y : 'שנה',\n yy : function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM : function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n }\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var sq = moment.defineLocale('sq', {\n months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem : function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Sot në] LT',\n nextDay : '[Nesër në] LT',\n nextWeek : 'dddd [në] LT',\n lastDay : '[Dje në] LT',\n lastWeek : 'dddd [e kaluar në] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'në %s',\n past : '%s më parë',\n s : 'disa sekonda',\n ss : '%d sekonda',\n m : 'një minutë',\n mm : '%d minuta',\n h : 'një orë',\n hh : '%d orë',\n d : 'një ditë',\n dd : '%d ditë',\n M : 'një muaj',\n MM : '%d muaj',\n y : 'një vit',\n yy : '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM [dallas] YYYY',\n LLL : 'D. MMMM [dallas] YYYY HH.mm',\n LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM : function (input) {\n return 'd\\'o' === input.toLowerCase();\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'd\\'o' : 'D\\'O';\n } else {\n return isLower ? 'd\\'a' : 'D\\'A';\n }\n },\n calendar : {\n sameDay : '[oxhi à] LT',\n nextDay : '[demà à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[ieiri à] LT',\n lastWeek : '[sür el] dddd [lasteu à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'osprei %s',\n past : 'ja%s',\n s : processRelativeTime,\n ss : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's': ['viensas secunds', '\\'iensas secunds'],\n 'ss': [number + ' secunds', '' + number + ' secunds'],\n 'm': ['\\'n míut', '\\'iens míut'],\n 'mm': [number + ' míuts', '' + number + ' míuts'],\n 'h': ['\\'n þora', '\\'iensa þora'],\n 'hh': [number + ' þoras', '' + number + ' þoras'],\n 'd': ['\\'n ziua', '\\'iensa ziua'],\n 'dd': [number + ' ziuas', '' + number + ' ziuas'],\n 'M': ['\\'n mes', '\\'iens mes'],\n 'MM': [number + ' mesen', '' + number + ' mesen'],\n 'y': ['\\'n ar', '\\'iens ar'],\n 'yy': [number + ' ars', '' + number + ' ars']\n };\n return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'leS' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'waQ' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'nem' :\n time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'Hu’' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'wen' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'ben' :\n time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[one];\n }\n return (word === '') ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n monthsParseExact : true,\n weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L'\n },\n relativeTime : {\n future : translateFuture,\n past : translatePast,\n s : 'puS lup',\n ss : translate,\n m : 'wa’ tup',\n mm : translate,\n h : 'wa’ rep',\n hh : translate,\n d : 'wa’ jaj',\n dd : translate,\n M : 'wa’ jar',\n MM : translate,\n y : 'wa’ DIS',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enSG = moment.defineLocale('en-SG', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enSG;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var translator = {\n words: { //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pre %s',\n s : 'nekoliko sekundi',\n ss : translator.translate,\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'dan',\n dd : translator.translate,\n M : 'mesec',\n MM : translator.translate,\n y : 'godinu',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sr;\n\n})));\n"],"sourceRoot":""} \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-e547.d57d1b91.js b/priv/static/adminfe/static/js/chunk-e547.d57d1b91.js deleted file mode 100644 index 788164466..000000000 --- a/priv/static/adminfe/static/js/chunk-e547.d57d1b91.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-e547"],{"/Z02":function(t,e,s){},"4ZhH":function(t,e,s){"use strict";var r=s("YDhJ");s.n(r).a},DPTh:function(t,e,s){"use strict";var r=s("vg5t");s.n(r).a},DVld:function(t,e,s){"use strict";var r=s("/Z02");s.n(r).a},Oofb:function(t,e,s){},R3mQ:function(t,e,s){"use strict";var r=s("Oofb");s.n(r).a},RGjw:function(t,e,s){"use strict";s.r(e);var r=s("9/5/"),i=s.n(r),n=s("ZhIB"),a=s.n(n),o=s("lSNA"),l=s.n(o),c=s("MVZn"),u=s.n(c),d={data:function(){return{value:[]}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{removeOppositeFilters:function(){var t=Object.keys(this.$store.state.users.filters).length,e=this.$data.value.slice(),s=e.indexOf("local"),r=e.indexOf("external"),i=e.indexOf("active"),n=e.indexOf("deactivated");if(e.length===t)return[];if(s>-1&&r>-1){var a=s>r?r:s;e.splice(a,1)}else if(i>-1&&n>-1){var o=i>n?n:i;e.splice(o,1)}return e},toggleFilters:function(){this.$data.value=this.removeOppositeFilters();var t=this.$data.value.reduce(function(t,e){return u()({},t,l()({},e,!0))},{});this.$store.dispatch("ToggleUsersFilter",t)}}},p=(s("DVld"),s("KHd+")),v=Object(p.a)(d,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-select",{staticClass:"select-field",attrs:{clearable:t.isDesktop,placeholder:t.$t("usersFilter.inputPlaceholder"),multiple:""},on:{change:t.toggleFilters},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}},[s("el-option-group",{attrs:{label:t.$t("usersFilter.byUserType")}},[s("el-option",{attrs:{value:"local"}},[t._v(t._s(t.$t("usersFilter.local")))]),t._v(" "),s("el-option",{attrs:{value:"external"}},[t._v(t._s(t.$t("usersFilter.external")))])],1),t._v(" "),s("el-option-group",{attrs:{label:t.$t("usersFilter.byStatus")}},[s("el-option",{attrs:{value:"active"}},[t._v(t._s(t.$t("usersFilter.active")))]),t._v(" "),s("el-option",{attrs:{value:"deactivated"}},[t._v(t._s(t.$t("usersFilter.deactivated")))])],1)],1)},[],!1,null,"71bc6b38",null);v.options.__file="UsersFilter.vue";var m=v.exports,g={props:{selectedUsers:{type:Array,default:function(){return[]}}},computed:{showDropdownForMultipleUsers:function(){return this.$props.selectedUsers.length>0},isDesktop:function(){return"desktop"===this.$store.state.app.device}},methods:{mappers:function(){var t=this;return{grantRight:function(e){return function(){return t.selectedUsers.filter(function(s){return s.local&&!s.roles[e]&&t.$store.state.user.id!==s.id}).map(function(s){return t.$store.dispatch("ToggleRight",{user:s,right:e})})}},revokeRight:function(e){return function(){return t.selectedUsers.filter(function(s){return s.local&&s.roles[e]&&t.$store.state.user.id!==s.id}).map(function(s){return t.$store.dispatch("ToggleRight",{user:s,right:e})})}},activate:function(){return t.selectedUsers.filter(function(e){return e.deactivated&&t.$store.state.user.id!==e.id}).map(function(e){return t.$store.dispatch("ToggleUserActivation",e.nickname)})},deactivate:function(){return t.selectedUsers.filter(function(e){return!e.deactivated&&t.$store.state.user.id!==e.id}).map(function(e){return t.$store.dispatch("ToggleUserActivation",e.nickname)})},remove:function(){return t.selectedUsers.filter(function(e){return t.$store.state.user.id!==e.id}).map(function(e){return t.$store.dispatch("DeleteUser",e)})},addTag:function(e){return function(){var s=t.selectedUsers.filter(function(t){return"disable_remote_subscription"===e||"disable_any_subscription"===e?t.local&&!t.tags.includes(e):!t.tags.includes(e)});t.$store.dispatch("AddTag",{users:s,tag:e})}},removeTag:function(e){return function(){var s=t.selectedUsers.filter(function(t){return"disable_remote_subscription"===e||"disable_any_subscription"===e?t.local&&t.tags.includes(e):t.tags.includes(e)});t.$store.dispatch("RemoveTag",{users:s,tag:e})}}}},grantRightToMultipleUsers:function(t){var e=this.mappers().grantRight;this.confirmMessage(this.$t("users.grantRightConfirmation",{right:t}),e(t))},revokeRightFromMultipleUsers:function(t){var e=this.mappers().revokeRight;this.confirmMessage(this.$t("users.revokeRightConfirmation",{right:t}),e(t))},activateMultipleUsers:function(){var t=this.mappers().activate;this.confirmMessage(this.$t("users.activateMultipleUsersConfirmation"),t)},deactivateMultipleUsers:function(){var t=this.mappers().deactivate;this.confirmMessage(this.$t("users.deactivateMultipleUsersConfirmation"),t)},deleteMultipleUsers:function(){var t=this.mappers().remove;this.confirmMessage(this.$t("users.deleteMultipleUsersConfirmation"),t)},addTagForMultipleUsers:function(t){var e=this.mappers().addTag;this.confirmMessage(this.$t("users.addTagForMultipleUsersConfirmation"),e(t))},removeTagFromMultipleUsers:function(t){var e=this.mappers().removeTag;this.confirmMessage(this.$t("users.removeTagFromMultipleUsersConfirmation"),e(t))},confirmMessage:function(t,e){var s=this;this.$confirm(t,{confirmButtonText:this.$t("users.ok"),cancelButtonText:this.$t("users.cancel"),type:"warning"}).then(function(){e(),s.$emit("apply-action"),s.$message({type:"success",message:s.$t("users.completed")})}).catch(function(){s.$message({type:"info",message:s.$t("users.canceled")})})}}},f=(s("4ZhH"),Object(p.a)(g,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-dropdown",{attrs:{size:"small",trigger:"click",placement:"bottom-start"}},[t.isDesktop?s("el-button",{staticClass:"actions-button"},[s("span",{staticClass:"actions-button-container"},[s("span",[s("i",{staticClass:"el-icon-edit"}),t._v("\n "+t._s(t.$t("users.moderateUsers"))+"\n ")]),t._v(" "),s("i",{staticClass:"el-icon-arrow-down el-icon--right"})])]):t._e(),t._v(" "),t.showDropdownForMultipleUsers?s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[s("el-dropdown-item",{nativeOn:{click:function(e){return t.grantRightToMultipleUsers("admin")}}},[t._v("\n "+t._s(t.$t("users.grantAdmin"))+"\n ")]),t._v(" "),s("el-dropdown-item",{nativeOn:{click:function(e){return t.revokeRightFromMultipleUsers("admin")}}},[t._v("\n "+t._s(t.$t("users.revokeAdmin"))+"\n ")]),t._v(" "),s("el-dropdown-item",{nativeOn:{click:function(e){return t.grantRightToMultipleUsers("moderator")}}},[t._v("\n "+t._s(t.$t("users.grantModerator"))+"\n ")]),t._v(" "),s("el-dropdown-item",{nativeOn:{click:function(e){return t.revokeRightFromMultipleUsers("moderator")}}},[t._v("\n "+t._s(t.$t("users.revokeModerator"))+"\n ")]),t._v(" "),s("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(e){return t.activateMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.activateAccounts"))+"\n ")]),t._v(" "),s("el-dropdown-item",{nativeOn:{click:function(e){return t.deactivateMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.deactivateAccounts"))+"\n ")]),t._v(" "),s("el-dropdown-item",{nativeOn:{click:function(e){return t.deleteMultipleUsers(e)}}},[t._v("\n "+t._s(t.$t("users.deleteAccounts"))+"\n ")]),t._v(" "),s("el-dropdown-item",{staticClass:"no-hover",attrs:{divided:""}},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.forceNsfw")))]),t._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),s("el-dropdown-item",{staticClass:"no-hover"},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.stripMedia")))]),t._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("strip_media")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("strip_media")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),s("el-dropdown-item",{staticClass:"no-hover"},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.forceUnlisted")))]),t._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),s("el-dropdown-item",{staticClass:"no-hover"},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.sandbox")))]),t._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("sandbox")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("sandbox")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),s("el-dropdown-item",{staticClass:"no-hover"},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.disableRemoteSubscriptionForMultiple")))]),t._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)]),t._v(" "),s("el-dropdown-item",{staticClass:"no-hover"},[s("div",{staticClass:"tag-container"},[s("span",{staticClass:"tag-text"},[t._v(t._s(t.$t("users.disableAnySubscriptionForMultiple")))]),t._v(" "),s("el-button-group",{staticClass:"tag-button-group"},[s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.addTagForMultipleUsers("disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.apply"))+"\n ")]),t._v(" "),s("el-button",{attrs:{size:"mini"},nativeOn:{click:function(e){return t.removeTagFromMultipleUsers("disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.remove"))+"\n ")])],1)],1)])],1):s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[s("el-dropdown-item",[t._v("\n "+t._s(t.$t("users.selectUsers"))+"\n ")])],1)],1)},[],!1,null,"94227b1e",null));f.options.__file="MultipleUsersMenu.vue";var _=f.exports,h={name:"NewAccountDialog",props:{dialogFormVisible:{type:Boolean,default:function(){return!1}}},data:function(){return{form:{nickname:"",email:"",password:""},rules:{nickname:[{validator:this.validateUsername,trigger:"blur"}],email:[{validator:this.validateEmail,trigger:"blur"}],password:[{validator:this.validatePassword,trigger:"blur"}]}}},computed:{isDesktop:function(){return"desktop"===this.$store.state.app.device},isVisible:{get:function(){return this.$props.dialogFormVisible},set:function(){this.closeDialogWindow()}},getLabelWidth:function(){return this.isDesktop?"120px":"80px"}},methods:{closeDialogWindow:function(){this.$emit("closeWindow")},resetForm:function(){var t=this;this.$nextTick(function(){t.$refs.form.resetFields()})},submitForm:function(t){var e=this;this.$refs[t].validate(function(t){if(!t)return e.$message({type:"error",message:e.$t("users.submitFormError")}),!1;e.$emit("createNewAccount",e.$data.form),e.closeDialogWindow(),e.$message({type:"success",message:e.$t("users.completed")})})},validateEmail:function(t,e,s){return""===e?s(new Error(this.$t("users.emptyEmailError"))):this.validEmail(e)?s():s(new Error(this.$t("users.invalidEmailError")))},validatePassword:function(t,e,s){return""===e?s(new Error(this.$t("users.emptyPasswordError"))):s()},validateUsername:function(t,e,s){return""===e?s(new Error(this.$t("users.emptyNicknameError"))):this.validNickname(e)?s():s(new Error(this.$t("users.invalidNicknameError")))},validEmail:function(t){return/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(t)},validNickname:function(t){return/^[a-zA-Z\d]+$/.test(t)}}},w=(s("DPTh"),Object(p.a)(h,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("el-dialog",{attrs:{visible:t.isVisible,"show-close":!1,title:t.$t("users.createAccount"),"custom-class":"create-user-dialog"},on:{"update:visible":function(e){t.isVisible=e},open:t.resetForm}},[s("el-form",{ref:"form",attrs:{model:t.form,rules:t.rules,"label-width":t.getLabelWidth,"status-icon":""}},[s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:t.$t("users.username"),prop:"nickname"}},[s("el-input",{attrs:{name:"nickname",autofocus:""},model:{value:t.form.nickname,callback:function(e){t.$set(t.form,"nickname",e)},expression:"form.nickname"}})],1),t._v(" "),s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:t.$t("users.email"),prop:"email"}},[s("el-input",{attrs:{name:"email",type:"email"},model:{value:t.form.email,callback:function(e){t.$set(t.form,"email",e)},expression:"form.email"}})],1),t._v(" "),s("el-form-item",{staticClass:"create-account-form-item",attrs:{label:t.$t("users.password"),prop:"password"}},[s("el-input",{attrs:{type:"password",name:"password",autocomplete:"off"},model:{value:t.form.password,callback:function(e){t.$set(t.form,"password",e)},expression:"form.password"}})],1)],1),t._v(" "),s("span",{attrs:{slot:"footer"},slot:"footer"},[s("el-button",{on:{click:t.closeDialogWindow}},[t._v(t._s(t.$t("users.cancel")))]),t._v(" "),s("el-button",{attrs:{type:"primary"},on:{click:function(e){return t.submitForm("form")}}},[t._v(t._s(t.$t("users.create")))])],1)],1)},[],!1,null,null,null));w.options.__file="NewAccountDialog.vue";var $={name:"Users",components:{UsersFilter:m,MultipleUsersMenu:_,NewAccountDialog:w.exports},data:function(){return{search:"",selectedUsers:[],dialogFormVisible:!1}},computed:{loading:function(){return this.$store.state.users.loading},normalizedUsersCount:function(){return a()(this.$store.state.users.totalUsersCount).format("0a")},users:function(){return this.$store.state.users.fetchedUsers},usersCount:function(){return this.$store.state.users.totalUsersCount},pageSize:function(){return this.$store.state.users.pageSize},currentPage:function(){return this.$store.state.users.currentPage},isDesktop:function(){return"desktop"===this.$store.state.app.device},isMobile:function(){return"mobile"===this.$store.state.app.device},width:function(){return!!this.isMobile&&55}},created:function(){var t=this;this.handleDebounceSearchInput=i()(function(e){t.$store.dispatch("SearchUsers",{query:e,page:1})},500)},mounted:function(){this.$store.dispatch("FetchUsers",{page:1})},methods:{activationIcon:function(t){return t?"el-icon-error":"el-icon-success"},clearSelection:function(){this.$refs.usersTable.clearSelection()},createNewAccount:function(t){this.$store.dispatch("CreateNewAccount",t)},getFirstLetter:function(t){return t.charAt(0).toUpperCase()},handleDeactivation:function(t){var e=t.nickname;this.$store.dispatch("ToggleUserActivation",e)},handleDeletion:function(t){this.$store.dispatch("DeleteUser",t)},handlePageChange:function(t){var e=this.$store.state.users.searchQuery;""===e?this.$store.dispatch("FetchUsers",{page:t}):this.$store.dispatch("SearchUsers",{query:e,page:t})},handleSelectionChange:function(t){this.$data.selectedUsers=t},showAdminAction:function(t){var e=t.local,s=t.id;return e&&this.showDeactivatedButton(s)},showDeactivatedButton:function(t){return this.$store.state.user.id!==t},toggleTag:function(t,e){t.tags.includes(e)?this.$store.dispatch("RemoveTag",{users:[t],tag:e}):this.$store.dispatch("AddTag",{users:[t],tag:e})},toggleUserRight:function(t,e){this.$store.dispatch("ToggleRight",{user:t,right:e})}}},b=(s("R3mQ"),Object(p.a)($,function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"users-container"},[s("h1",[t._v("\n "+t._s(t.$t("users.users"))+"\n "),s("span",{staticClass:"user-count"},[t._v("("+t._s(t.normalizedUsersCount)+")")])]),t._v(" "),s("div",{staticClass:"filter-container"},[s("users-filter"),t._v(" "),s("el-input",{staticClass:"search",attrs:{placeholder:t.$t("users.search")},on:{input:t.handleDebounceSearchInput},model:{value:t.search,callback:function(e){t.search=e},expression:"search"}})],1),t._v(" "),s("div",{staticClass:"actions-container"},[s("el-button",{staticClass:"actions-button create-account",on:{click:function(e){t.dialogFormVisible=!0}}},[s("span",[s("i",{staticClass:"el-icon-plus"}),t._v("\n "+t._s(t.$t("users.createAccount"))+"\n ")])]),t._v(" "),s("multiple-users-menu",{attrs:{"selected-users":t.selectedUsers},on:{"apply-action":t.clearSelection}})],1),t._v(" "),s("new-account-dialog",{attrs:{"dialog-form-visible":t.dialogFormVisible},on:{createNewAccount:t.createNewAccount,closeWindow:function(e){t.dialogFormVisible=!1}}}),t._v(" "),s("el-table",{directives:[{name:"loading",rawName:"v-loading",value:t.loading,expression:"loading"}],ref:"usersTable",staticStyle:{width:"100%"},attrs:{data:t.users,"row-key":"id"},on:{"selection-change":t.handleSelectionChange}},[t.isDesktop?s("el-table-column",{attrs:{type:"selection","reserve-selection":"",width:"44",align:"center"}}):t._e(),t._v(" "),s("el-table-column",{attrs:{"min-width":t.width,label:t.$t("users.id"),prop:"id"}}),t._v(" "),s("el-table-column",{attrs:{label:t.$t("users.name"),prop:"nickname"},scopedSlots:t._u([{key:"default",fn:function(e){return[s("router-link",{attrs:{to:{name:"UsersShow",params:{id:e.row.id}}}},[t._v(t._s(e.row.nickname))]),t._v(" "),t.isDesktop?s("el-tag",{attrs:{type:"info",size:"mini"}},[s("span",[t._v(t._s(e.row.local?t.$t("users.local"):t.$t("users.external")))])]):t._e()]}}])}),t._v(" "),s("el-table-column",{attrs:{"min-width":t.width,label:t.$t("users.status")},scopedSlots:t._u([{key:"default",fn:function(e){return[s("el-tag",{attrs:{type:e.row.deactivated?"danger":"success"}},[t.isDesktop?s("span",[t._v(t._s(e.row.deactivated?t.$t("users.deactivated"):t.$t("users.active")))]):s("i",{class:t.activationIcon(e.row.deactivated)})]),t._v(" "),e.row.roles.admin?s("el-tag",[s("span",[t._v(t._s(t.isDesktop?t.$t("users.admin"):t.getFirstLetter(t.$t("users.admin"))))])]):t._e(),t._v(" "),e.row.roles.moderator?s("el-tag",[s("span",[t._v(t._s(t.isDesktop?t.$t("users.moderator"):t.getFirstLetter(t.$t("users.moderator"))))])]):t._e()]}}])}),t._v(" "),s("el-table-column",{attrs:{label:t.$t("users.actions"),fixed:"right"},scopedSlots:t._u([{key:"default",fn:function(e){return[s("el-dropdown",{attrs:{size:"small",trigger:"click"}},[s("span",{staticClass:"el-dropdown-link"},[t._v("\n "+t._s(t.$t("users.moderation"))+"\n "),t.isDesktop?s("i",{staticClass:"el-icon-arrow-down el-icon--right"}):t._e()]),t._v(" "),s("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t.showAdminAction(e.row)?s("el-dropdown-item",{nativeOn:{click:function(s){return t.toggleUserRight(e.row,"admin")}}},[t._v("\n "+t._s(e.row.roles.admin?t.$t("users.revokeAdmin"):t.$t("users.grantAdmin"))+"\n ")]):t._e(),t._v(" "),t.showAdminAction(e.row)?s("el-dropdown-item",{nativeOn:{click:function(s){return t.toggleUserRight(e.row,"moderator")}}},[t._v("\n "+t._s(e.row.roles.moderator?t.$t("users.revokeModerator"):t.$t("users.grantModerator"))+"\n ")]):t._e(),t._v(" "),t.showDeactivatedButton(e.row.id)?s("el-dropdown-item",{attrs:{divided:t.showAdminAction(e.row)},nativeOn:{click:function(s){return t.handleDeactivation(e.row)}}},[t._v("\n "+t._s(e.row.deactivated?t.$t("users.activateAccount"):t.$t("users.deactivateAccount"))+"\n ")]):t._e(),t._v(" "),t.showDeactivatedButton(e.row.id)?s("el-dropdown-item",{nativeOn:{click:function(s){return t.handleDeletion(e.row)}}},[t._v("\n "+t._s(t.$t("users.deleteAccount"))+"\n ")]):t._e(),t._v(" "),s("el-dropdown-item",{class:{"active-tag":e.row.tags.includes("force_nsfw")},attrs:{divided:t.showAdminAction(e.row)},nativeOn:{click:function(s){return t.toggleTag(e.row,"force_nsfw")}}},[t._v("\n "+t._s(t.$t("users.forceNsfw"))+"\n "),e.row.tags.includes("force_nsfw")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":e.row.tags.includes("strip_media")},nativeOn:{click:function(s){return t.toggleTag(e.row,"strip_media")}}},[t._v("\n "+t._s(t.$t("users.stripMedia"))+"\n "),e.row.tags.includes("strip_media")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":e.row.tags.includes("force_unlisted")},nativeOn:{click:function(s){return t.toggleTag(e.row,"force_unlisted")}}},[t._v("\n "+t._s(t.$t("users.forceUnlisted"))+"\n "),e.row.tags.includes("force_unlisted")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),s("el-dropdown-item",{class:{"active-tag":e.row.tags.includes("sandbox")},nativeOn:{click:function(s){return t.toggleTag(e.row,"sandbox")}}},[t._v("\n "+t._s(t.$t("users.sandbox"))+"\n "),e.row.tags.includes("sandbox")?s("i",{staticClass:"el-icon-check"}):t._e()]),t._v(" "),e.row.local?s("el-dropdown-item",{class:{"active-tag":e.row.tags.includes("disable_remote_subscription")},nativeOn:{click:function(s){return t.toggleTag(e.row,"disable_remote_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableRemoteSubscription"))+"\n "),e.row.tags.includes("disable_remote_subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e(),t._v(" "),e.row.local?s("el-dropdown-item",{class:{"active-tag":e.row.tags.includes("disable_any_subscription")},nativeOn:{click:function(s){return t.toggleTag(e.row,"disable_any_subscription")}}},[t._v("\n "+t._s(t.$t("users.disableAnySubscription"))+"\n "),e.row.tags.includes("disable_any_subscription")?s("i",{staticClass:"el-icon-check"}):t._e()]):t._e()],1)],1)]}}])})],1),t._v(" "),0===t.users.length?s("div",{staticClass:"no-users-message"},[s("p",[t._v("There are no users to display")])]):t._e(),t._v(" "),t.loading?t._e():s("div",{staticClass:"pagination"},[s("el-pagination",{attrs:{total:t.usersCount,"current-page":t.currentPage,"page-size":t.pageSize,background:"",layout:"prev, pager, next"},on:{"current-change":t.handlePageChange}})],1)],1)},[],!1,null,"c51cd8ee",null));b.options.__file="index.vue";e.default=b.exports},YDhJ:function(t,e,s){},vg5t:function(t,e,s){}}]); \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-elementUI.1911151b.js b/priv/static/adminfe/static/js/chunk-elementUI.708d6b68.js similarity index 99% rename from priv/static/adminfe/static/js/chunk-elementUI.1911151b.js rename to priv/static/adminfe/static/js/chunk-elementUI.708d6b68.js index d11c13e49..9ead2e763 100644 --- a/priv/static/adminfe/static/js/chunk-elementUI.1911151b.js +++ b/priv/static/adminfe/static/js/chunk-elementUI.708d6b68.js @@ -1 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-elementUI"],{"05c+":function(e,t,i){"use strict";t.__esModule=!0,t.isDef=function(e){return void 0!==e&&null!==e},t.isKorean=function(e){return/([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(e)}},"0BDH":function(e,t,i){"use strict";t.__esModule=!0,t.default={methods:{dispatch:function(e,t,i){for(var n=this.$parent||this.$root,s=n.$options.componentName;n&&(!s||s!==e);)(n=n.$parent)&&(s=n.$options.componentName);n&&n.$emit.apply(n,[t].concat(i))},broadcast:function(e,t,i){(function e(t,i,n){this.$children.forEach(function(s){s.$options.componentName===t?s.$emit.apply(s,[i].concat(n)):e.apply(s,[t,i].concat([n]))})}).call(this,e,t,i)}}}},"19FS":function(e,t,i){"use strict";var n;!function(s){var r={},a=/d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,o="[^\\s]+",l=/\[([^]*?)\]/gm,c=function(){};function u(e,t){for(var i=[],n=0,s=e.length;n3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return d(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return d(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return d(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return d(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return d(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return d(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},b={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+o,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var i=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?i-1:i)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",c],ddd:[o,c],MMM:[o,h("monthNamesShort")],MMMM:[o,h("monthNames")],a:[o,function(e,t,i){var n=t.toLowerCase();n===i.amPm[0]?e.isPm=!1:n===i.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var i,n=(t+"").match(/([+-]|\d\d)/gi);n&&(i=60*n[1]+parseInt(n[2],10),e.timezoneOffset="+"===n[0]?i:-i)}]};b.dd=b.d,b.dddd=b.ddd,b.DD=b.D,b.mm=b.m,b.hh=b.H=b.HH=b.h,b.MM=b.M,b.ss=b.s,b.A=b.a,r.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},r.format=function(e,t,i){var n=i||r.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");var s=[];return(t=(t=(t=r.masks[t]||t||r.masks.default).replace(l,function(e,t){return s.push(t),"@@@"})).replace(a,function(t){return t in g?g[t](e,n):t.slice(1,t.length-1)})).replace(/@@@/g,function(){return s.shift()})},r.parse=function(e,t,i){var n=i||r.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=r.masks[t]||t,e.length>1e3)return null;var s={},o=[],c=[],u=function(e){return e.replace(/[|\\{()[^$+*?.-]/g,"\\$&")}(t=t.replace(l,function(e,t){return c.push(t),"@@@"})).replace(a,function(e){if(b[e]){var t=b[e];return o.push(t[1]),"("+t[0]+")"}return e});u=u.replace(/@@@/g,function(){return c.shift()});var h=e.match(new RegExp(u,"i"));if(!h)return null;for(var d=1;d1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()-t)});t.nextDate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)},t.getStartDateOfMonth=function(e,t){var i=new Date(e,t,1),n=i.getDay();return d(i,0===n?7:n)},t.getWeekNumber=function(e){if(!c(e))return null;var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var i=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-i.getTime())/864e5-3+(i.getDay()+6)%7)/7)},t.getRangeHours=function(e){var t=[],i=[];if((e||[]).forEach(function(e){var t=e.map(function(e){return e.getHours()});i=i.concat(function(e,t){for(var i=[],n=e;n<=t;n++)i.push(n);return i}(t[0],t[1]))}),i.length)for(var n=0;n<24;n++)t[n]=-1===i.indexOf(n);else for(var s=0;s<24;s++)t[s]=!1;return t},t.getPrevMonthLastDays=function(e,t){if(t<=0)return[];var i=new Date(e.getTime());i.setDate(0);var n=i.getDate();return f(t).map(function(e,i){return n-(t-i-1)})},t.getMonthDays=function(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0).getDate();return f(t).map(function(e,t){return t+1})};function p(e,t,i,n){for(var s=t;s0?e.forEach(function(e){var n=e[0],s=e[1],r=n.getHours(),a=n.getMinutes(),o=s.getHours(),l=s.getMinutes();r===t&&o!==t?p(i,a,60,!0):r===t&&o===t?p(i,a,l+1,!0):r!==t&&o===t?p(i,0,l+1,!0):rt&&p(i,0,60,!0)}):p(i,0,60,!0),i};var f=t.range=function(e){return Array.apply(null,{length:e}).map(function(e,t){return t})},m=t.modifyDate=function(e,t,i,n){return new Date(t,i,n,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())},v=t.modifyTime=function(e,t,i,n){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),t,i,n,e.getMilliseconds())},g=(t.modifyWithTimeString=function(e,t){return null!=e&&t?(t=u(t,"HH:mm:ss"),v(e,t.getHours(),t.getMinutes(),t.getSeconds())):e},t.clearTime=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())},t.clearMilliseconds=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),0)},t.limitTimeRange=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"HH:mm:ss";if(0===t.length)return e;var s=function(e){return n.default.parse(n.default.format(e,i),i)},r=s(e),a=t.map(function(e){return e.map(s)});if(a.some(function(e){return r>=e[0]&&r<=e[1]}))return e;var o=a[0][0],l=a[0][0];return a.forEach(function(e){o=new Date(Math.min(e[0],o)),l=new Date(Math.max(e[1],o))}),m(r1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return b(e,i-t,n)},t.nextYear=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return b(e,i+t,n)},t.extractDateFormat=function(e){return e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim()},t.extractTimeFormat=function(e){return e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g,"").trim()},t.validateRangeInOneMonth=function(e,t){return e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}},"3Nwd":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=105)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},105:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{role:"checkbox","aria-checked":e.indeterminate?"mixed":e.isChecked,"aria-disabled":e.isDisabled,id:e.id}},[i("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{"aria-checked":"mixed"}},[i("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,s=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var r=e._i(i,null);n.checked?r<0&&(e.model=i.concat([null])):r>-1&&(e.model=i.slice(0,r).concat(i.slice(r+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,s=!!n.checked;if(Array.isArray(i)){var r=e.label,a=e._i(i,r);n.checked?a<0&&(e.model=i.concat([r])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};n._withStripped=!0;var s=i(4),r={name:"ElCheckbox",mixins:[i.n(s).a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},a=i(0),o=Object(a.a)(r,n,[],!1,null,null,null);o.options.__file="packages/checkbox/src/checkbox.vue";var l=o.exports;l.install=function(e){e.component(l.name,l)};t.default=l},4:function(e,t){e.exports=i("0BDH")}})},"53J1":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=52)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},3:function(e,t){e.exports=i("gSIQ")},33:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};n._withStripped=!0;var s=i(4),r=i.n(s),a=i(3),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l={mixins:[r.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,s=i.valueKey;if(!this.created&&!n){if(s&&"object"===(void 0===e?"undefined":o(e))&&"object"===(void 0===t?"undefined":o(t))&&e[s]===t[s])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some(function(e){return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(a.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){this.select.onOptionDestroy(this.select.options.indexOf(this))}},c=i(0),u=Object(c.a)(l,n,[],!1,null,null,null);u.options.__file="packages/select/src/option.vue";t.a=u.exports},4:function(e,t){e.exports=i("0BDH")},52:function(e,t,i){"use strict";i.r(t);var n=i(33);n.a.install=function(e){e.component(n.a.name,n.a)},t.default=n.a}})},"5FBR":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=92)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},10:function(e,t){e.exports=i("8606")},2:function(e,t){e.exports=i("WST1")},21:function(e,t){e.exports=i("EvI9")},30:function(e,t,i){"use strict";var n=i(2);t.a={bind:function(e,t,i){var s=null,r=void 0,a=function(){return i.context[t.expression].apply()},o=function(){Date.now()-r<100&&a(),clearInterval(s),s=null};Object(n.on)(e,"mousedown",function(e){0===e.button&&(r=Date.now(),Object(n.once)(document,"mouseup",o),clearInterval(s),s=setInterval(a,100))})}}},92:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["el-input-number",e.inputNumberSize?"el-input-number--"+e.inputNumberSize:"",{"is-disabled":e.inputNumberDisabled},{"is-without-controls":!e.controls},{"is-controls-right":e.controlsAtRight}],on:{dragstart:function(e){e.preventDefault()}}},[e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-input-number__decrease",class:{"is-disabled":e.minDisabled},attrs:{role:"button"},on:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.decrease(t):null}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-down":"minus")})]):e._e(),e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-input-number__increase",class:{"is-disabled":e.maxDisabled},attrs:{role:"button"},on:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.increase(t):null}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-up":"plus")})]):e._e(),i("el-input",{ref:"input",attrs:{value:e.displayValue,placeholder:e.placeholder,disabled:e.inputNumberDisabled,size:e.inputNumberSize,max:e.max,min:e.min,name:e.name,label:e.label},on:{blur:e.handleBlur,focus:e.handleFocus,input:e.handleInput,change:e.handleInputChange},nativeOn:{keydown:[function(t){return"button"in t||!e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?(t.preventDefault(),e.increase(t)):null},function(t){return"button"in t||!e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?(t.preventDefault(),e.decrease(t)):null}]}})],1)};n._withStripped=!0;var s=i(10),r=i.n(s),a=i(21),o=i.n(a),l=i(30),c={name:"ElInputNumber",mixins:[o()("input")],inject:{elForm:{default:""},elFormItem:{default:""}},directives:{repeatClick:l.a},components:{ElInput:r.a},props:{step:{type:Number,default:1},stepStrictly:{type:Boolean,default:!1},max:{type:Number,default:1/0},min:{type:Number,default:-1/0},value:{},disabled:Boolean,size:String,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:""},name:String,label:String,placeholder:String,precision:{type:Number,validator:function(e){return e>=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,s=i(t);return void 0!==n?(s>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),s)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},u=i(0),h=Object(u.a)(c,n,[],!1,null,null,null);h.options.__file="packages/input-number/src/input-number.vue";var d=h.exports;d.install=function(e){e.component(d.name,d)};t.default=d}})},"5FLJ":function(e,t,i){"use strict";t.__esModule=!0;var n=n||{};n.Utils=n.Utils||{},n.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var i=e.childNodes[t];if(n.Utils.attemptFocus(i)||n.Utils.focusLastDescendant(i))return!0}return!1},n.Utils.attemptFocus=function(e){if(!n.Utils.isFocusable(e))return!1;n.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return n.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},n.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},n.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),s=arguments.length,r=Array(s>2?s-2:0),a=2;a-1?"center "+t:t+" center"}},appendArrow:function(e){var t=void 0;if(!this.appended){for(var i in this.appended=!0,e.attributes)if(/^_v-/.test(e.attributes[i].name)){t=e.attributes[i].name;break}var n=document.createElement("div");t&&n.setAttribute(t,""),n.setAttribute("x-arrow",""),n.className="popper__arrow",e.appendChild(n)}}},beforeDestroy:function(){this.doDestroy(!0),this.popperElm&&this.popperElm.parentNode===document.body&&(this.popperElm.removeEventListener("click",a),document.body.removeChild(this.popperElm))},deactivated:function(){this.$options.beforeDestroy[0].call(this)}}},"7t/g":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=85)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},85:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?i("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",[e._t("default")],2):e._e()])};n._withStripped=!0;var s={name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},r=i(0),a=Object(r.a)(s,n,[],!1,null,null,null);a.options.__file="packages/button/src/button.vue";var o=a.exports;o.install=function(e){e.component(o.name,o)};t.default=o}})},8606:function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=75)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},11:function(e,t){e.exports=i("K7XR")},4:function(e,t){e.exports=i("0BDH")},75:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)};n._withStripped=!0;var s=i(4),r=i.n(s),a=i(11),o=i.n(a),l=void 0,c="\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",u=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;l||(l=document.createElement("textarea"),document.body.appendChild(l));var n=function(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),s=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:u.map(function(e){return e+":"+t.getPropertyValue(e)}).join(";"),paddingSize:n,borderSize:s,boxSizing:i}}(e),s=n.paddingSize,r=n.borderSize,a=n.boxSizing,o=n.contextStyle;l.setAttribute("style",o+";"+c),l.value=e.value||e.placeholder||"";var h=l.scrollHeight,d={};"border-box"===a?h+=r:"content-box"===a&&(h-=s),l.value="";var p=l.scrollHeight-s;if(null!==t){var f=p*t;"border-box"===a&&(f=f+s+r),h=Math.max(f,h),d.minHeight=f+"px"}if(null!==i){var m=p*i;"border-box"===a&&(m=m+s+r),h=Math.min(m,h)}return d.height=h+"px",l.parentNode&&l.parentNode.removeChild(l),l=null,d}var d=i(9),p=i.n(d),f={name:"ElInput",componentName:"ElInput",mixins:[r.a,o.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return p()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=h(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:h(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionEnd:function(e){this.isComposing=!1,this.handleInput(e)},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;il&&(e.scrollTop=a-e.clientHeight)};var n=function(e){return e&&e.__esModule?e:{default:e}}(i("Kw5r"))},PtZe:function(e,t,i){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"Confirmar",clear:"Despejar"},datepicker:{now:"Ahora",today:"Hoy",cancel:"Cancelar",clear:"Despejar",confirm:"Confirmar",selectDate:"Seleccionar fecha",selectTime:"Seleccionar hora",startDate:"Fecha Incial",startTime:"Hora Inicial",endDate:"Fecha Final",endTime:"Hora Final",prevYear:"Año Anterior",nextYear:"Próximo Año",prevMonth:"Mes Anterior",nextMonth:"Próximo Mes",year:"",month1:"enero",month2:"febrero",month3:"marzo",month4:"abril",month5:"mayo",month6:"junio",month7:"julio",month8:"agosto",month9:"septiembre",month10:"octubre",month11:"noviembre",month12:"diciembre",weeks:{sun:"dom",mon:"lun",tue:"mar",wed:"mié",thu:"jue",fri:"vie",sat:"sáb"},months:{jan:"ene",feb:"feb",mar:"mar",apr:"abr",may:"may",jun:"jun",jul:"jul",aug:"ago",sep:"sep",oct:"oct",nov:"nov",dec:"dic"}},select:{loading:"Cargando",noMatch:"No hay datos que coincidan",noData:"Sin datos",placeholder:"Seleccionar"},cascader:{noMatch:"No hay datos que coincidan",loading:"Cargando",placeholder:"Seleccionar",noData:"Sin datos"},pagination:{goto:"Ir a",pagesize:"/página",total:"Total {total}",pageClassifier:""},messagebox:{confirm:"Aceptar",cancel:"Cancelar",error:"Entrada inválida"},upload:{deleteTip:"Pulse Eliminar para retirar",delete:"Eliminar",preview:"Vista Previa",continue:"Continuar"},table:{emptyText:"Sin Datos",confirmFilter:"Confirmar",resetFilter:"Reiniciar",clearFilter:"Despejar",sumText:"Suma"},tree:{emptyText:"Sin Datos"},transfer:{noMatch:"No hay datos que coincidan",noData:"Sin datos",titles:["Lista 1","Lista 2"],filterPlaceholder:"Ingresar palabra clave",noCheckedFormat:"{total} artículos",hasCheckedFormat:"{checked}/{total} revisados"},image:{error:"FAILED"},pageHeader:{title:"Back"}}}},QBBo:function(e,t,i){"use strict";t.__esModule=!0,t.removeResizeListener=t.addResizeListener=void 0;var n=function(e){return e&&e.__esModule?e:{default:e}}(i("bdgK"));var s="undefined"==typeof window,r=function(e){var t=e,i=Array.isArray(t),n=0;for(t=i?t:t[Symbol.iterator]();;){var s;if(i){if(n>=t.length)break;s=t[n++]}else{if((n=t.next()).done)break;s=n.value}var r=s.target.__resizeListeners__||[];r.length&&r.forEach(function(e){e()})}};t.addResizeListener=function(e,t){s||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new n.default(r),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},t.removeResizeListener=function(e,t){e&&e.__resizeListeners__&&(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||e.__ro__.disconnect())}},"QX/b":function(e,t,i){"use strict";t.__esModule=!0;var n=function(e){return e&&e.__esModule?e:{default:e}}(i("Kw5r")),s=i("WST1");var r=[],a="@@clickoutsideContext",o=void 0,l=0;function c(e,t,i){return function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!(i&&i.context&&n.target&&s.target)||e.contains(n.target)||e.contains(s.target)||e===n.target||i.context.popperElm&&(i.context.popperElm.contains(n.target)||i.context.popperElm.contains(s.target))||(t.expression&&e[a].methodName&&i.context[e[a].methodName]?i.context[e[a].methodName]():e[a].bindingFn&&e[a].bindingFn())}}!n.default.prototype.$isServer&&(0,s.on)(document,"mousedown",function(e){return o=e}),!n.default.prototype.$isServer&&(0,s.on)(document,"mouseup",function(e){r.forEach(function(t){return t[a].documentHandler(e,o)})}),t.default={bind:function(e,t,i){r.push(e);var n=l++;e[a]={id:n,documentHandler:c(e,t,i),methodName:t.expression,bindingFn:t.value}},update:function(e,t,i){e[a].documentHandler=c(e,t,i),e[a].methodName=t.expression,e[a].bindingFn=t.value},unbind:function(e){for(var t=r.length,i=0;i\n \n '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var s=this.nodes.map(function(i,s){var a=i.hasChildren;return e("cascader-node",r()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+s,"aria-haspopup":a,"aria-owns":a?t:null}},n]))});return[].concat(s,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",r()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},x=Object(m.a)(y,void 0,void 0,!1,null,null,null);x.options.__file="packages/cascader-panel/src/cascader-menu.vue";var _=x.exports,C=i(22),w=function(){function e(e,t){for(var i=0;i1?t-1:0),n=1;n1?n-1:0),r=1;r0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},w(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,s=i.checkStrictly;return e[n]||!s&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,s=this.config,r=s.lazy,a=s.leaf;if(r){var o=Object(C.isDef)(e[a])?e[a]:!!t&&!n.length;return this.hasChildren=!o,o}return!i}}]),e}();var D=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(d.coerceTruthyValueToArray)(e),this.nodes=e.map(function(e){return new S(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new S(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=Object(d.coerceTruthyValueToArray)(e)).forEach(function(e){return i.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:function e(t,i){return t.reduce(function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t},[])}(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){e=Array.isArray(e)?e[e.length-1]:e;var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return t.value===e});return t&&t.length?t[0]:null}return null},e}(),$=i(9),O=i.n($),E=i(39),T=i.n(E),M=i(31),P=i.n(M),I=Object.assign||function(e){for(var t=1;t0){var n=t[t.length-1];if(n.id===e){if(n.modalClass)n.modalClass.trim().split(/\s+/).forEach(function(e){return(0,s.removeClass)(i,e)});t.pop(),t.length>0&&(i.style.zIndex=t[t.length-1].zIndex)}else for(var r=t.length-1;r>=0;r--)if(t[r].id===e){t.splice(r,1);break}}0===t.length&&(this.modalFade&&(0,s.addClass)(i,"v-modal-leave"),setTimeout(function(){0===t.length&&(i.parentNode&&i.parentNode.removeChild(i),i.style.display="none",u.modalDom=void 0),(0,s.removeClass)(i,"v-modal-leave")},200))}};Object.defineProperty(u,"zIndex",{configurable:!0,get:function(){return a||(o=o||(n.default.prototype.$ELEMENT||{}).zIndex||2e3,a=!0),o},set:function(e){o=e}});n.default.prototype.$isServer||window.addEventListener("keydown",function(e){if(27===e.keyCode){var t=function(){if(!n.default.prototype.$isServer&&u.modalStack.length>0){var e=u.modalStack[u.modalStack.length-1];if(!e)return;return u.getInstance(e.id)}}();t&&t.closeOnPressEscape&&(t.handleClose?t.handleClose():t.handleAction?t.handleAction("cancel"):t.close())}}),t.default=u},TkuN:function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=59)}([function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},,,function(e,t){e.exports=i("gSIQ")},function(e,t){e.exports=i("0BDH")},function(e,t){e.exports=i("6XTx")},function(e,t){e.exports=i("a3zo")},,,,function(e,t){e.exports=i("8606")},,function(e,t){e.exports=i("QX/b")},function(e,t){e.exports=i("QBBo")},function(e,t){e.exports=i("DhVD")},function(e,t){e.exports=i("FOnU")},,,,,function(e,t){e.exports=i("SJdT")},function(e,t){e.exports=i("EvI9")},function(e,t){e.exports=i("05c+")},,,,,,,,,function(e,t){e.exports=i("Kl55")},,function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};n._withStripped=!0;var s=i(4),r=i.n(s),a=i(3),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l={mixins:[r.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,s=i.valueKey;if(!this.created&&!n){if(s&&"object"===(void 0===e?"undefined":o(e))&&"object"===(void 0===t?"undefined":o(t))&&e[s]===t[s])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some(function(e){return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(a.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){this.select.onOptionDestroy(this.select.options.indexOf(this))}},c=i(0),u=Object(c.a)(l,n,[],!1,null,null,null);u.options.__file="packages/select/src/option.vue";t.a=u.exports},,,function(e,t){e.exports=i("i7wE")},,,,,,,,,,,,,,,,,,,,,,,function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},click:function(e){e.stopPropagation()},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.deletePrevTag(t):null}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)};n._withStripped=!0;var s=i(4),r=i.n(s),a=i(21),o=i.n(a),l=i(6),c=i.n(l),u=i(10),h=i.n(u),d=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};d._withStripped=!0;var p=i(5),f={name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[i.n(p).a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",function(){e.$parent.visible&&e.updatePopper()}),this.$on("destroyPopper",this.destroyPopper)}},m=i(0),v=Object(m.a)(f,d,[],!1,null,null,null);v.options.__file="packages/select/src/select-dropdown.vue";var g=v.exports,b=i(33),y=i(36),x=i.n(y),_=i(15),C=i.n(_),w=i(14),k=i.n(w),S=i(12),D=i.n(S),$=i(13),O=i(20),E=i(31),T=i.n(E),M=i(3),P=i(22),I={mixins:[r.a,c.a,o()("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(M.isIE)()&&!Object(M.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"}},components:{ElInput:h.a,ElSelectMenu:g,ElOption:b.a,ElTag:x.a,ElScrollbar:C.a},directives:{Clickoutside:D.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,default:function(){return Object(O.t)("el.select.placeholder")}},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},placeholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(M.valueEquals)(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast("ElSelectDropdown","updatePopper")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick(function(e){return t.handleQueryChange(i)});else{var n=i[i.length-1]||"";this.isOnComposition=!Object(P.isKorean)(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var i=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");T()(i,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){Object(M.valueEquals)(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),s="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),r=this.cachedOptions.length-1;r>=0;r--){var a=this.cachedOptions[r];if(i?Object(M.getValueByPath)(a.value,this.valueKey)===Object(M.getValueByPath)(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var o={value:e,currentLabel:i||n||s?"":e};return this.multiple&&(o.hitState=!1),o},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach(function(t){i.push(e.getOption(t))}),this.selected=i,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.menuVisibleOnFocus=!0),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,function(e){return"INPUT"===e.tagName})[0],n=e.$refs.tags,s=e.initialInputHeight||40;i.style.height=0===e.selected.length?s+"px":Math.max(n?n.clientHeight+(n.clientHeight>s?6:0):0,s)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),s=this.getValueIndex(n,e.value);s>-1?n.splice(s,1):(this.multipleLimit<=0||n.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if("[object object]"===Object.prototype.toString.call(t).toLowerCase()){var i=this.valueKey,n=-1;return e.some(function(e,s){return Object(M.getValueByPath)(e,i)===Object(M.getValueByPath)(t,i)&&(n=s,!0)}),n}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(M.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.placeholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=k()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=k()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object($.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object($.removeResizeListener)(this.$el,this.handleResize)}},N=Object(m.a)(I,n,[],!1,null,null,null);N.options.__file="packages/select/src/select.vue";var j=N.exports;j.install=function(e){e.component(j.name,j)};t.default=j}])},UShQ:function(e,t,i){"use strict";t.__esModule=!0,t.PopupManager=void 0;var n=l(i("Kw5r")),s=l(i("f03z")),r=l(i("Syab")),a=l(i("5i1c")),o=i("WST1");function l(e){return e&&e.__esModule?e:{default:e}}var c=1,u=void 0;t.default={props:{visible:{type:Boolean,default:!1},openDelay:{},closeDelay:{},zIndex:{},modal:{type:Boolean,default:!1},modalFade:{type:Boolean,default:!0},modalClass:{},modalAppendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!1}},beforeMount:function(){this._popupId="popup-"+c++,r.default.register(this._popupId,this)},beforeDestroy:function(){r.default.deregister(this._popupId),r.default.closeModal(this._popupId),this.restoreBodyStyle()},data:function(){return{opened:!1,bodyPaddingRight:null,computedBodyPaddingRight:0,withoutHiddenClass:!0,rendered:!1}},watch:{visible:function(e){var t=this;if(e){if(this._opening)return;this.rendered?this.open():(this.rendered=!0,n.default.nextTick(function(){t.open()}))}else this.close()}},methods:{open:function(e){var t=this;this.rendered||(this.rendered=!0);var i=(0,s.default)({},this.$props||this,e);this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null),clearTimeout(this._openTimer);var n=Number(i.openDelay);n>0?this._openTimer=setTimeout(function(){t._openTimer=null,t.doOpen(i)},n):this.doOpen(i)},doOpen:function(e){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0;var t=this.$el,i=e.modal,n=e.zIndex;if(n&&(r.default.zIndex=n),i&&(this._closing&&(r.default.closeModal(this._popupId),this._closing=!1),r.default.openModal(this._popupId,r.default.nextZIndex(),this.modalAppendToBody?void 0:t,e.modalClass,e.modalFade),e.lockScroll)){this.withoutHiddenClass=!(0,o.hasClass)(document.body,"el-popup-parent--hidden"),this.withoutHiddenClass&&(this.bodyPaddingRight=document.body.style.paddingRight,this.computedBodyPaddingRight=parseInt((0,o.getStyle)(document.body,"paddingRight"),10)),u=(0,a.default)();var s=document.documentElement.clientHeight0&&(s||"scroll"===l)&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.computedBodyPaddingRight+u+"px"),(0,o.addClass)(document.body,"el-popup-parent--hidden")}"static"===getComputedStyle(t).position&&(t.style.position="absolute"),t.style.zIndex=r.default.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var e=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var t=Number(this.closeDelay);t>0?this._closeTimer=setTimeout(function(){e._closeTimer=null,e.doClose()},t):this.doClose()}},doClose:function(){this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose()},doAfterClose:function(){r.default.closeModal(this._popupId),this._closing=!1},restoreBodyStyle:function(){this.modal&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.bodyPaddingRight,(0,o.removeClass)(document.body,"el-popup-parent--hidden")),this.withoutHiddenClass=!0}}},t.PopupManager=r.default},VIiR:function(e,t,i){"use strict";t.__esModule=!0;var n=i("WST1");var s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.beforeEnter=function(e){(0,n.addClass)(e,"collapse-transition"),e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height="0",e.style.paddingTop=0,e.style.paddingBottom=0},e.prototype.enter=function(e){e.dataset.oldOverflow=e.style.overflow,0!==e.scrollHeight?(e.style.height=e.scrollHeight+"px",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom):(e.style.height="",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom),e.style.overflow="hidden"},e.prototype.afterEnter=function(e){(0,n.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow},e.prototype.beforeLeave=function(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.height=e.scrollHeight+"px",e.style.overflow="hidden"},e.prototype.leave=function(e){0!==e.scrollHeight&&((0,n.addClass)(e,"collapse-transition"),e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0)},e.prototype.afterLeave=function(e){(0,n.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},e}();t.default={name:"ElCollapseTransition",functional:!0,render:function(e,t){var i=t.children;return e("transition",{on:new s},i)}}},WST1:function(e,t,i){"use strict";t.__esModule=!0,t.isInContainer=t.getScrollContainer=t.isScroll=t.getStyle=t.once=t.off=t.on=void 0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.hasClass=d,t.addClass=function(e,t){if(!e)return;for(var i=e.className,n=(t||"").split(" "),s=0,r=n.length;s-1}var p=t.getStyle=o<9?function(e,t){if(!s){if(!e||!t)return null;"float"===(t=c(t))&&(t="styleFloat");try{switch(t){case"opacity":try{return e.filters.item("alpha").opacity/100}catch(e){return 1}default:return e.style[t]||e.currentStyle?e.currentStyle[t]:null}}catch(i){return e.style[t]}}}:function(e,t){if(!s){if(!e||!t)return null;"float"===(t=c(t))&&(t="cssFloat");try{var i=document.defaultView.getComputedStyle(e,"");return e.style[t]||i?i[t]:null}catch(i){return e.style[t]}}};var f=t.isScroll=function(e,t){if(!s)return p(e,null!==t||void 0!==t?t?"overflow-y":"overflow-x":"overflow").match(/(scroll|auto)/)};t.getScrollContainer=function(e,t){if(!s){for(var i=e;i;){if([window,document,document.documentElement].includes(i))return window;if(f(i,t))return i;i=i.parentNode}return i}},t.isInContainer=function(e,t){if(s||!e||!t)return!1;var i=e.getBoundingClientRect(),n=void 0;return n=[window,document,document.documentElement,null,void 0].includes(t)?{top:0,right:window.innerWidth,bottom:window.innerHeight,left:0}:t.getBoundingClientRect(),i.topn.top&&i.right>n.left&&i.left0?i("li",{staticClass:"number",class:{active:1===e.currentPage,disabled:e.disabled}},[e._v("1")]):e._e(),e.showPrevMore?i("li",{staticClass:"el-icon more btn-quickprev",class:[e.quickprevIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("left")},mouseleave:function(t){e.quickprevIconClass="el-icon-more"}}}):e._e(),e._l(e.pagers,function(t){return i("li",{key:t,staticClass:"number",class:{active:e.currentPage===t,disabled:e.disabled}},[e._v(e._s(t))])}),e.showNextMore?i("li",{staticClass:"el-icon more btn-quicknext",class:[e.quicknextIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("right")},mouseleave:function(t){e.quicknextIconClass="el-icon-more"}}}):e._e(),e.pageCount>1?i("li",{staticClass:"number",class:{active:e.currentPage===e.pageCount,disabled:e.disabled}},[e._v(e._s(e.pageCount))]):e._e()],2)};function s(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}n._withStripped=!0;var r=s({name:"ElPager",props:{currentPage:Number,pageCount:Number,pagerCount:Number,disabled:Boolean},watch:{showPrevMore:function(e){e||(this.quickprevIconClass="el-icon-more")},showNextMore:function(e){e||(this.quicknextIconClass="el-icon-more")}},methods:{onPagerClick:function(e){var t=e.target;if("UL"!==t.tagName&&!this.disabled){var i=Number(e.target.textContent),n=this.pageCount,s=this.currentPage,r=this.pagerCount-2;-1!==t.className.indexOf("more")&&(-1!==t.className.indexOf("quickprev")?i=s-r:-1!==t.className.indexOf("quicknext")&&(i=s+r)),isNaN(i)||(i<1&&(i=1),i>n&&(i=n)),i!==s&&this.$emit("change",i)}},onMouseenter:function(e){this.disabled||("left"===e?this.quickprevIconClass="el-icon-d-arrow-left":this.quicknextIconClass="el-icon-d-arrow-right")}},computed:{pagers:function(){var e=this.pagerCount,t=(e-1)/2,i=Number(this.currentPage),n=Number(this.pageCount),s=!1,r=!1;n>e&&(i>e-t&&(s=!0),i4&&e<22&&e%2==1},default:7},currentPage:{type:Number,default:1},layout:{default:"prev, pager, next, jumper, ->, total"},pageSizes:{type:Array,default:function(){return[10,20,30,40,50,100]}},popperClass:String,prevText:String,nextText:String,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean},data:function(){return{internalCurrentPage:1,internalPageSize:0,lastEmittedPage:-1,userChangePageSize:!1}},render:function(e){var t=this.layout;if(!t)return null;if(this.hideOnSinglePage&&(!this.internalPageCount||1===this.internalPageCount))return null;var i=e("div",{class:["el-pagination",{"is-background":this.background,"el-pagination--small":this.small}]}),n={prev:e("prev"),jumper:e("jumper"),pager:e("pager",{attrs:{currentPage:this.internalCurrentPage,pageCount:this.internalPageCount,pagerCount:this.pagerCount,disabled:this.disabled},on:{change:this.handleCurrentChange}}),next:e("next"),sizes:e("sizes",{attrs:{pageSizes:this.pageSizes}}),slot:e("slot",[this.$slots.default?this.$slots.default:""]),total:e("total")},s=t.split(",").map(function(e){return e.trim()}),r=e("div",{class:"el-pagination__rightwrapper"}),a=!1;return i.children=i.children||[],r.children=r.children||[],s.forEach(function(e){"->"!==e?a?r.children.push(n[e]):i.children.push(n[e]):a=!0}),a&&i.children.unshift(r),i},components:{Prev:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage<=1},class:"btn-prev",on:{click:this.$parent.prev}},[this.$parent.prevText?e("span",[this.$parent.prevText]):e("i",{class:"el-icon el-icon-arrow-left"})])}},Next:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage===this.$parent.internalPageCount||0===this.$parent.internalPageCount},class:"btn-next",on:{click:this.$parent.next}},[this.$parent.nextText?e("span",[this.$parent.nextText]):e("i",{class:"el-icon el-icon-arrow-right"})])}},Sizes:{mixins:[f.a],props:{pageSizes:Array},watch:{pageSizes:{immediate:!0,handler:function(e,t){Object(m.valueEquals)(e,t)||Array.isArray(e)&&(this.$parent.internalPageSize=e.indexOf(this.$parent.pageSize)>-1?this.$parent.pageSize:this.pageSizes[0])}}},render:function(e){var t=this;return e("span",{class:"el-pagination__sizes"},[e("el-select",{attrs:{value:this.$parent.internalPageSize,popperClass:this.$parent.popperClass||"",size:"mini",disabled:this.$parent.disabled},on:{input:this.handleChange}},[this.pageSizes.map(function(i){return e("el-option",{attrs:{value:i,label:i+t.t("el.pagination.pagesize")}})})])])},components:{ElSelect:l.a,ElOption:u.a},methods:{handleChange:function(e){e!==this.$parent.internalPageSize&&(this.$parent.internalPageSize=e=parseInt(e,10),this.$parent.userChangePageSize=!0,this.$parent.$emit("update:pageSize",e),this.$parent.$emit("size-change",e))}}},Jumper:{mixins:[f.a],components:{ElInput:d.a},data:function(){return{userInput:null}},watch:{"$parent.internalCurrentPage":function(){this.userInput=null}},methods:{handleKeyup:function(e){var t=e.keyCode,i=e.target;13===t&&this.handleChange(i.value)},handleInput:function(e){this.userInput=e},handleChange:function(e){this.$parent.internalCurrentPage=this.$parent.getValidCurrentPage(e),this.$parent.emitChange(),this.userInput=null}},render:function(e){return e("span",{class:"el-pagination__jump"},[this.t("el.pagination.goto"),e("el-input",{class:"el-pagination__editor is-in-pagination",attrs:{min:1,max:this.$parent.internalPageCount,value:null!==this.userInput?this.userInput:this.$parent.internalCurrentPage,type:"number",disabled:this.$parent.disabled},nativeOn:{keyup:this.handleKeyup},on:{input:this.handleInput,change:this.handleChange}}),this.t("el.pagination.pageClassifier")])}},Total:{mixins:[f.a],render:function(e){return"number"==typeof this.$parent.total?e("span",{class:"el-pagination__total"},[this.t("el.pagination.total",{total:this.$parent.total})]):""}},Pager:a},methods:{handleCurrentChange:function(e){this.internalCurrentPage=this.getValidCurrentPage(e),this.userChangePageSize=!0,this.emitChange()},prev:function(){if(!this.disabled){var e=this.internalCurrentPage-1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("prev-click",this.internalCurrentPage),this.emitChange()}},next:function(){if(!this.disabled){var e=this.internalCurrentPage+1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("next-click",this.internalCurrentPage),this.emitChange()}},getValidCurrentPage:function(e){e=parseInt(e,10);var t=void 0;return"number"==typeof this.internalPageCount?e<1?t=1:e>this.internalPageCount&&(t=this.internalPageCount):(isNaN(e)||e<1)&&(t=1),void 0===t&&isNaN(e)?t=1:0===t&&(t=1),void 0===t?e:t},emitChange:function(){var e=this;this.$nextTick(function(){(e.internalCurrentPage!==e.lastEmittedPage||e.userChangePageSize)&&(e.$emit("current-change",e.internalCurrentPage),e.lastEmittedPage=e.internalCurrentPage,e.userChangePageSize=!1)})}},computed:{internalPageCount:function(){return"number"==typeof this.total?Math.max(1,Math.ceil(this.total/this.internalPageSize)):"number"==typeof this.pageCount?Math.max(1,this.pageCount):null}},watch:{currentPage:{immediate:!0,handler:function(e){this.internalCurrentPage=this.getValidCurrentPage(e)}},pageSize:{immediate:!0,handler:function(e){this.internalPageSize=isNaN(e)?10:e}},internalCurrentPage:{immediate:!0,handler:function(e){this.$emit("update:currentPage",e),this.lastEmittedPage=-1}},internalPageCount:function(e){var t=this.internalCurrentPage;e>0&&0===t?this.internalCurrentPage=1:t>e&&(this.internalCurrentPage=0===e?1:e,this.userChangePageSize&&this.emitChange()),this.userChangePageSize=!1}},install:function(e){e.component(v.name,v)}},g=v,b=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"dialog-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-dialog__wrapper",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{ref:"dialog",staticClass:"el-dialog",class:[{"is-fullscreen":e.fullscreen,"el-dialog--center":e.center},e.customClass],style:e.style,attrs:{role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"}},[i("div",{staticClass:"el-dialog__header"},[e._t("title",[i("span",{staticClass:"el-dialog__title"},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-dialog__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:e.handleClose}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2),e.rendered?i("div",{staticClass:"el-dialog__body"},[e._t("default")],2):e._e(),e.$slots.footer?i("div",{staticClass:"el-dialog__footer"},[e._t("footer")],2):e._e()])])])};b._withStripped=!0;var y=i(15),x=i.n(y),_=i(9),C=i.n(_),w=i(3),k=i.n(w),S=s({name:"ElDialog",mixins:[x.a,k.a,C.a],props:{title:{type:String,default:""},modal:{type:Boolean,default:!0},modalAppendToBody:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},width:String,fullscreen:Boolean,customClass:{type:String,default:""},top:{type:String,default:"15vh"},beforeClose:Function,center:{type:Boolean,default:!1}},data:function(){return{closed:!1}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.$el.addEventListener("scroll",this.updatePopper),this.$nextTick(function(){t.$refs.dialog.scrollTop=0}),this.appendToBody&&document.body.appendChild(this.$el)):(this.$el.removeEventListener("scroll",this.updatePopper),this.closed||this.$emit("close"))}},computed:{style:function(){var e={};return this.fullscreen||(e.marginTop=this.top,this.width&&(e.width=this.width)),e}},methods:{getMigratingConfig:function(){return{props:{size:"size is removed."}}},handleWrapperClick:function(){this.closeOnClickModal&&this.handleClose()},handleClose:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),this.closed=!0)},updatePopper:function(){this.broadcast("ElSelectDropdown","updatePopper"),this.broadcast("ElDropdownMenu","updatePopper")},afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")}},mounted:function(){this.visible&&(this.rendered=!0,this.open(),this.appendToBody&&document.body.appendChild(this.$el))},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},b,[],!1,null,null,null);S.options.__file="packages/dialog/src/component.vue";var D=S.exports;D.install=function(e){e.component(D.name,D)};var $=D,O=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.close,expression:"close"}],staticClass:"el-autocomplete",attrs:{"aria-haspopup":"listbox",role:"combobox","aria-expanded":e.suggestionVisible,"aria-owns":e.id}},[i("el-input",e._b({ref:"input",on:{input:e.handleChange,focus:e.handleFocus,blur:e.handleBlur,clear:e.handleClear},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex-1)},function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex+1)},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleKeyEnter(t):null},function(t){return"button"in t||!e._k(t.keyCode,"tab",9,t.key,"Tab")?e.close(t):null}]}},"el-input",[e.$props,e.$attrs],!1),[e.$slots.prepend?i("template",{slot:"prepend"},[e._t("prepend")],2):e._e(),e.$slots.append?i("template",{slot:"append"},[e._t("append")],2):e._e(),e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),e.$slots.suffix?i("template",{slot:"suffix"},[e._t("suffix")],2):e._e()],2),i("el-autocomplete-suggestions",{ref:"suggestions",class:[e.popperClass?e.popperClass:""],attrs:{"visible-arrow":"","popper-options":e.popperOptions,"append-to-body":e.popperAppendToBody,placement:e.placement,id:e.id}},e._l(e.suggestions,function(t,n){return i("li",{key:n,class:{highlighted:e.highlightedIndex===n},attrs:{id:e.id+"-item-"+n,role:"option","aria-selected":e.highlightedIndex===n},on:{click:function(i){e.select(t)}}},[e._t("default",[e._v("\n "+e._s(t[e.valueKey])+"\n ")],{item:t})],2)}),0)],1)};O._withStripped=!0;var E=i(12),T=i.n(E),M=i(10),P=i.n(M),I=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-autocomplete-suggestion el-popper",class:{"is-loading":!e.parent.hideLoading&&e.parent.loading},style:{width:e.dropdownWidth},attrs:{role:"region"}},[i("el-scrollbar",{attrs:{tag:"ul","wrap-class":"el-autocomplete-suggestion__wrap","view-class":"el-autocomplete-suggestion__list"}},[!e.parent.hideLoading&&e.parent.loading?i("li",[i("i",{staticClass:"el-icon-loading"})]):e._t("default")],2)],1)])};I._withStripped=!0;var N=i(5),j=i.n(N),F=i(18),L=i.n(F),A=s({components:{ElScrollbar:L.a},mixins:[j.a,k.a],componentName:"ElAutocompleteSuggestions",data:function(){return{parent:this.$parent,dropdownWidth:""}},props:{options:{default:function(){return{gpuAcceleration:!1}}},id:String},methods:{select:function(e){this.dispatch("ElAutocomplete","item-click",e)}},updated:function(){var e=this;this.$nextTick(function(t){e.popperJS&&e.updatePopper()})},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$refs.input.$refs.input,this.referenceList=this.$el.querySelector(".el-autocomplete-suggestion__list"),this.referenceList.setAttribute("role","listbox"),this.referenceList.setAttribute("id",this.id)},created:function(){var e=this;this.$on("visible",function(t,i){e.dropdownWidth=i+"px",e.showPopper=t})}},I,[],!1,null,null,null);A.options.__file="packages/autocomplete/src/autocomplete-suggestions.vue";var V=A.exports,z=i(21),B=i.n(z),R=s({name:"ElAutocomplete",mixins:[k.a,B()("input"),C.a],inheritAttrs:!1,componentName:"ElAutocomplete",components:{ElInput:d.a,ElAutocompleteSuggestions:V},directives:{Clickoutside:P.a},props:{valueKey:{type:String,default:"value"},popperClass:String,popperOptions:Object,placeholder:String,clearable:{type:Boolean,default:!1},disabled:Boolean,name:String,size:String,value:String,maxlength:Number,minlength:Number,autofocus:Boolean,fetchSuggestions:Function,triggerOnFocus:{type:Boolean,default:!0},customItem:String,selectWhenUnmatched:{type:Boolean,default:!1},prefixIcon:String,suffixIcon:String,label:String,debounce:{type:Number,default:300},placement:{type:String,default:"bottom-start"},hideLoading:Boolean,popperAppendToBody:{type:Boolean,default:!0},highlightFirstItem:{type:Boolean,default:!1}},data:function(){return{activated:!1,suggestions:[],loading:!1,highlightedIndex:-1,suggestionDisabled:!1}},computed:{suggestionVisible:function(){var e=this.suggestions;return(Array.isArray(e)&&e.length>0||this.loading)&&this.activated},id:function(){return"el-autocomplete-"+Object(m.generateId)()}},watch:{suggestionVisible:function(e){var t=this.getInput();t&&this.broadcast("ElAutocompleteSuggestions","visible",[e,t.offsetWidth])}},methods:{getMigratingConfig:function(){return{props:{"custom-item":"custom-item is removed, use scoped slot instead.",props:"props is removed, use value-key instead."}}},getData:function(e){var t=this;this.suggestionDisabled||(this.loading=!0,this.fetchSuggestions(e,function(e){t.loading=!1,t.suggestionDisabled||(Array.isArray(e)?(t.suggestions=e,t.highlightedIndex=t.highlightFirstItem?0:-1):console.error("[Element Error][Autocomplete]autocomplete suggestions must be an array"))}))},handleChange:function(e){if(this.$emit("input",e),this.suggestionDisabled=!1,!this.triggerOnFocus&&!e)return this.suggestionDisabled=!0,void(this.suggestions=[]);this.debouncedGetData(e)},handleFocus:function(e){this.activated=!0,this.$emit("focus",e),this.triggerOnFocus&&this.debouncedGetData(this.value)},handleBlur:function(e){this.$emit("blur",e)},handleClear:function(){this.activated=!1,this.$emit("clear")},close:function(e){this.activated=!1},handleKeyEnter:function(e){var t=this;this.suggestionVisible&&this.highlightedIndex>=0&&this.highlightedIndex=this.suggestions.length&&(e=this.suggestions.length-1);var t=this.$refs.suggestions.$el.querySelector(".el-autocomplete-suggestion__wrap"),i=t.querySelectorAll(".el-autocomplete-suggestion__list li")[e],n=t.scrollTop,s=i.offsetTop;s+i.scrollHeight>n+t.clientHeight&&(t.scrollTop+=i.scrollHeight),s=0&&this.resetTabindex(this.triggerElm),clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.visible=!1},"click"===this.trigger?0:this.hideTimeout))},handleClick:function(){this.triggerElm.disabled||(this.visible?this.hide():this.show())},handleTriggerKeyDown:function(e){var t=e.keyCode;[38,40].indexOf(t)>-1?(this.removeTabindex(),this.resetTabindex(this.menuItems[0]),this.menuItems[0].focus(),e.preventDefault(),e.stopPropagation()):13===t?this.handleClick():[9,27].indexOf(t)>-1&&this.hide()},handleItemKeyDown:function(e){var t=e.keyCode,i=e.target,n=this.menuItemsArray.indexOf(i),s=this.menuItemsArray.length-1,r=void 0;[38,40].indexOf(t)>-1?(r=38===t?0!==n?n-1:0:n-1&&(this.hide(),this.triggerElmFocus())},resetTabindex:function(e){this.removeTabindex(),e.setAttribute("tabindex","0")},removeTabindex:function(){this.triggerElm.setAttribute("tabindex","-1"),this.menuItemsArray.forEach(function(e){e.setAttribute("tabindex","-1")})},initAria:function(){this.dropdownElm.setAttribute("id",this.listId),this.triggerElm.setAttribute("aria-haspopup","list"),this.triggerElm.setAttribute("aria-controls",this.listId),this.splitButton||(this.triggerElm.setAttribute("role","button"),this.triggerElm.setAttribute("tabindex",this.tabindex),this.triggerElm.setAttribute("class",(this.triggerElm.getAttribute("class")||"")+" el-dropdown-selfdefine"))},initEvent:function(){var e=this,t=this.trigger,i=this.show,n=this.hide,s=this.handleClick,r=this.splitButton,a=this.handleTriggerKeyDown,o=this.handleItemKeyDown;this.triggerElm=r?this.$refs.trigger.$el:this.$slots.default[0].elm;var l=this.dropdownElm;this.triggerElm.addEventListener("keydown",a),l.addEventListener("keydown",o,!0),r||(this.triggerElm.addEventListener("focus",function(){e.focusing=!0}),this.triggerElm.addEventListener("blur",function(){e.focusing=!1}),this.triggerElm.addEventListener("click",function(){e.focusing=!1})),"hover"===t?(this.triggerElm.addEventListener("mouseenter",i),this.triggerElm.addEventListener("mouseleave",n),l.addEventListener("mouseenter",i),l.addEventListener("mouseleave",n)):"click"===t&&this.triggerElm.addEventListener("click",s)},handleMenuItemClick:function(e,t){this.hideOnClick&&(this.visible=!1),this.$emit("command",e,t)},triggerElmFocus:function(){this.triggerElm.focus&&this.triggerElm.focus()},initDomOperation:function(){this.dropdownElm=this.popperElm,this.menuItems=this.dropdownElm.querySelectorAll("[tabindex='-1']"),this.menuItemsArray=[].slice.call(this.menuItems),this.initEvent(),this.initAria()}},render:function(e){var t=this,i=this.hide,n=this.splitButton,s=this.type,r=this.dropdownSize,a=n?e("el-button-group",[e("el-button",{attrs:{type:s,size:r},nativeOn:{click:function(e){t.$emit("click",e),i()}}},[this.$slots.default]),e("el-button",{ref:"trigger",attrs:{type:s,size:r},class:"el-dropdown__caret-button"},[e("i",{class:"el-dropdown__icon el-icon-arrow-down"})])]):this.$slots.default;return e("div",{class:"el-dropdown",directives:[{name:"clickoutside",value:i}]},[a,this.$slots.dropdown])}},void 0,void 0,!1,null,null,null);G.options.__file="packages/dropdown/src/dropdown.vue";var X=G.exports;X.install=function(e){e.component(X.name,X)};var Q=X,J=function(){var e=this.$createElement,t=this._self._c||e;return t("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":this.doDestroy}},[t("ul",{directives:[{name:"show",rawName:"v-show",value:this.showPopper,expression:"showPopper"}],staticClass:"el-dropdown-menu el-popper",class:[this.size&&"el-dropdown-menu--"+this.size]},[this._t("default")],2)])};J._withStripped=!0;var Z=s({name:"ElDropdownMenu",componentName:"ElDropdownMenu",mixins:[j.a],props:{visibleArrow:{type:Boolean,default:!0},arrowOffset:{type:Number,default:0}},data:function(){return{size:this.dropdown.dropdownSize}},inject:["dropdown"],created:function(){var e=this;this.$on("updatePopper",function(){e.showPopper&&e.updatePopper()}),this.$on("visible",function(t){e.showPopper=t})},mounted:function(){this.dropdown.popperElm=this.popperElm=this.$el,this.referenceElm=this.dropdown.$el,this.dropdown.initDomOperation()},watch:{"dropdown.placement":{immediate:!0,handler:function(e){this.currentPlacement=e}}}},J,[],!1,null,null,null);Z.options.__file="packages/dropdown/src/dropdown-menu.vue";var ee=Z.exports;ee.install=function(e){e.component(ee.name,ee)};var te=ee,ie=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-dropdown-menu__item",class:{"is-disabled":e.disabled,"el-dropdown-menu__item--divided":e.divided},attrs:{"aria-disabled":e.disabled,tabindex:e.disabled?null:-1},on:{click:e.handleClick}},[e.icon?i("i",{class:e.icon}):e._e(),e._t("default")],2)};ie._withStripped=!0;var ne=s({name:"ElDropdownItem",mixins:[k.a],props:{command:{},disabled:Boolean,divided:Boolean,icon:String},methods:{handleClick:function(e){this.dispatch("ElDropdown","menu-item-click",[this.command,this])}}},ie,[],!1,null,null,null);ne.options.__file="packages/dropdown/src/dropdown-item.vue";var se=ne.exports;se.install=function(e){e.component(se.name,se)};var re=se,ae=ae||{};ae.Utils=ae.Utils||{},ae.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var i=e.childNodes[t];if(ae.Utils.attemptFocus(i)||ae.Utils.focusLastDescendant(i))return!0}return!1},ae.Utils.attemptFocus=function(e){if(!ae.Utils.isFocusable(e))return!1;ae.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return ae.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},ae.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},ae.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),s=arguments.length,r=Array(s>2?s-2:0),a=2;a=0;t--)e.splice(t,0,e[t]);e=e.join("")}return/^[0-9a-fA-F]{6}$/.test(e)?{red:parseInt(e.slice(0,2),16),green:parseInt(e.slice(2,4),16),blue:parseInt(e.slice(4,6),16)}:{red:255,green:255,blue:255}},mixColor:function(e,t){var i=this.getColorChannels(e),n=i.red,s=i.green,r=i.blue;return t>0?(n*=1-t,s*=1-t,r*=1-t):(n+=(255-n)*t,s+=(255-s)*t,r+=(255-r)*t),"rgb("+Math.round(n)+", "+Math.round(s)+", "+Math.round(r)+")"},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},openMenu:function(e,t){var i=this.openedMenus;-1===i.indexOf(e)&&(this.uniqueOpened&&(this.openedMenus=i.filter(function(e){return-1!==t.indexOf(e)})),this.openedMenus.push(e))},closeMenu:function(e){var t=this.openedMenus.indexOf(e);-1!==t&&this.openedMenus.splice(t,1)},handleSubmenuClick:function(e){var t=e.index,i=e.indexPath;-1!==this.openedMenus.indexOf(t)?(this.closeMenu(t),this.$emit("close",t,i)):(this.openMenu(t,i),this.$emit("open",t,i))},handleItemClick:function(e){var t=this,i=e.index,n=e.indexPath,s=this.activeIndex,r=null!==e.index;r&&(this.activeIndex=e.index),this.$emit("select",i,n,e),("horizontal"===this.mode||this.collapse)&&(this.openedMenus=[]),this.router&&r&&this.routeToItem(e,function(e){t.activeIndex=s,e&&console.error(e)})},initOpenedMenu:function(){var e=this,t=this.activeIndex,i=this.items[t];i&&"horizontal"!==this.mode&&!this.collapse&&i.indexPath.forEach(function(t){var i=e.submenus[t];i&&e.openMenu(t,i.indexPath)})},routeToItem:function(e,t){var i=e.route||e.index;try{this.$router.push(i,function(){},t)}catch(e){console.error(e)}},open:function(e){var t=this,i=this.submenus[e.toString()].indexPath;i.forEach(function(e){return t.openMenu(e,i)})},close:function(e){this.closeMenu(e)}},mounted:function(){this.initOpenedMenu(),this.$on("item-click",this.handleItemClick),this.$on("submenu-click",this.handleSubmenuClick),"horizontal"===this.mode&&new pe(this.$el),this.$watch("items",this.updateActiveIndex)}},void 0,void 0,!1,null,null,null);me.options.__file="packages/menu/src/menu.vue";var ve=me.exports;ve.install=function(e){e.component(ve.name,ve)};var ge=ve,be=i(20),ye=i.n(be),xe={inject:["rootMenu"],computed:{indexPath:function(){for(var e=[this.index],t=this.$parent;"ElMenu"!==t.$options.componentName;)t.index&&e.unshift(t.index),t=t.$parent;return e},parentMenu:function(){for(var e=this.$parent;e&&-1===["ElMenu","ElSubmenu"].indexOf(e.$options.componentName);)e=e.$parent;return e},paddingStyle:function(){if("vertical"!==this.rootMenu.mode)return{};var e=20,t=this.$parent;if(this.rootMenu.collapse)e=20;else for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return{paddingLeft:e+"px"}}}},_e={props:{transformOrigin:{type:[Boolean,String],default:!1},offset:j.a.props.offset,boundariesPadding:j.a.props.boundariesPadding,popperOptions:j.a.props.popperOptions},data:j.a.data,methods:j.a.methods,beforeDestroy:j.a.beforeDestroy,deactivated:j.a.deactivated},Ce=s({name:"ElSubmenu",componentName:"ElSubmenu",mixins:[xe,k.a,_e],components:{ElCollapseTransition:ye.a},props:{index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0}},data:function(){return{popperJS:null,timeout:null,items:{},submenus:{},mouseInChild:!1}},watch:{opened:function(e){var t=this;this.isMenuPopup&&this.$nextTick(function(e){t.updatePopper()})}},computed:{appendToBody:function(){return void 0===this.popperAppendToBody?this.isFirstLevel:this.popperAppendToBody},menuTransitionName:function(){return this.rootMenu.collapse?"el-zoom-in-left":"el-zoom-in-top"},opened:function(){return this.rootMenu.openedMenus.indexOf(this.index)>-1},active:function(){var e=!1,t=this.submenus,i=this.items;return Object.keys(i).forEach(function(t){i[t].active&&(e=!0)}),Object.keys(t).forEach(function(i){t[i].active&&(e=!0)}),e},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},isMenuPopup:function(){return this.rootMenu.isMenuPopup},titleStyle:function(){return"horizontal"!==this.mode?{color:this.textColor}:{borderBottomColor:this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent",color:this.active?this.activeTextColor:this.textColor}},isFirstLevel:function(){for(var e=!0,t=this.$parent;t&&t!==this.rootMenu;){if(["ElSubmenu","ElMenuItemGroup"].indexOf(t.$options.componentName)>-1){e=!1;break}t=t.$parent}return e}},methods:{handleCollapseToggle:function(e){e?this.initPopper():this.doDestroy()},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},handleClick:function(){var e=this.rootMenu,t=this.disabled;"hover"===e.menuTrigger&&"horizontal"===e.mode||e.collapse&&"vertical"===e.mode||t||this.dispatch("ElMenu","submenu-click",this)},handleMouseenter:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.showTimeout;if("ActiveXObject"in window||"focus"!==e.type||e.relatedTarget){var n=this.rootMenu,s=this.disabled;"click"===n.menuTrigger&&"horizontal"===n.mode||!n.collapse&&"vertical"===n.mode||s||(this.dispatch("ElSubmenu","mouse-enter-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){t.rootMenu.openMenu(t.index,t.indexPath)},i))}},handleMouseleave:function(){var e=this,t=this.rootMenu;"click"===t.menuTrigger&&"horizontal"===t.mode||!t.collapse&&"vertical"===t.mode||(this.dispatch("ElSubmenu","mouse-leave-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.appendToBody&&(e.rootMenu.openedMenus=[]),!e.mouseInChild&&e.rootMenu.closeMenu(e.index)},this.hideTimeout))},handleTitleMouseenter:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.hoverBackground)}},handleTitleMouseleave:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.backgroundColor||"")}},updatePlacement:function(){this.currentPlacement="horizontal"===this.mode&&this.isFirstLevel?"bottom-start":"right-start"},initPopper:function(){this.referenceElm=this.$el,this.popperElm=this.$refs.menu,this.updatePlacement()}},created:function(){var e=this;this.$on("toggle-collapse",this.handleCollapseToggle),this.$on("mouse-enter-child",function(){e.mouseInChild=!0,clearTimeout(e.timeout)}),this.$on("mouse-leave-child",function(){e.mouseInChild=!1,clearTimeout(e.timeout)})},mounted:function(){this.parentMenu.addSubmenu(this),this.rootMenu.addSubmenu(this),this.initPopper()},beforeDestroy:function(){this.parentMenu.removeSubmenu(this),this.rootMenu.removeSubmenu(this)},render:function(e){var t=this,i=this.active,n=this.opened,s=this.paddingStyle,r=this.titleStyle,a=this.backgroundColor,o=this.rootMenu,l=this.currentPlacement,c=this.menuTransitionName,u=this.mode,h=this.disabled,d=this.popperClass,p=this.$slots,f=this.isFirstLevel,m=e("transition",{attrs:{name:c}},[e("div",{ref:"menu",directives:[{name:"show",value:n}],class:["el-menu--"+u,d],on:{mouseenter:function(e){return t.handleMouseenter(e,100)},mouseleave:this.handleMouseleave,focus:function(e){return t.handleMouseenter(e,100)}}},[e("ul",{attrs:{role:"menu"},class:["el-menu el-menu--popup","el-menu--popup-"+l],style:{backgroundColor:o.backgroundColor||""}},[p.default])])]),v=e("el-collapse-transition",[e("ul",{attrs:{role:"menu"},class:"el-menu el-menu--inline",directives:[{name:"show",value:n}],style:{backgroundColor:o.backgroundColor||""}},[p.default])]),g="horizontal"===o.mode&&f||"vertical"===o.mode&&!o.collapse?"el-icon-arrow-down":"el-icon-arrow-right";return e("li",{class:{"el-submenu":!0,"is-active":i,"is-opened":n,"is-disabled":h},attrs:{role:"menuitem","aria-haspopup":"true","aria-expanded":n},on:{mouseenter:this.handleMouseenter,mouseleave:this.handleMouseleave,focus:this.handleMouseenter}},[e("div",{class:"el-submenu__title",ref:"submenu-title",on:{click:this.handleClick,mouseenter:this.handleTitleMouseenter,mouseleave:this.handleTitleMouseleave},style:[s,r,{backgroundColor:a}]},[p.title,e("i",{class:["el-submenu__icon-arrow",g]})]),this.isMenuPopup?m:v])}},void 0,void 0,!1,null,null,null);Ce.options.__file="packages/menu/src/submenu.vue";var we=Ce.exports;we.install=function(e){e.component(we.name,we)};var ke=we,Se=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-menu-item",class:{"is-active":e.active,"is-disabled":e.disabled},style:[e.paddingStyle,e.itemStyle,{backgroundColor:e.backgroundColor}],attrs:{role:"menuitem",tabindex:"-1"},on:{click:e.handleClick,mouseenter:e.onMouseEnter,focus:e.onMouseEnter,blur:e.onMouseLeave,mouseleave:e.onMouseLeave}},["ElMenu"===e.parentMenu.$options.componentName&&e.rootMenu.collapse&&e.$slots.title?i("el-tooltip",{attrs:{effect:"dark",placement:"right"}},[i("div",{attrs:{slot:"content"},slot:"content"},[e._t("title")],2),i("div",{staticStyle:{position:"absolute",left:"0",top:"0",height:"100%",width:"100%",display:"inline-block","box-sizing":"border-box",padding:"0 20px"}},[e._t("default")],2)]):[e._t("default"),e._t("title")]],2)};Se._withStripped=!0;var De=i(26),$e=i.n(De),Oe=s({name:"ElMenuItem",componentName:"ElMenuItem",mixins:[xe,k.a],components:{ElTooltip:$e.a},props:{index:{default:null,validator:function(e){return"string"==typeof e||null===e}},route:[String,Object],disabled:Boolean},computed:{active:function(){return this.index===this.rootMenu.activeIndex},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},itemStyle:function(){var e={color:this.active?this.activeTextColor:this.textColor};return"horizontal"!==this.mode||this.isNested||(e.borderBottomColor=this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent"),e},isNested:function(){return this.parentMenu!==this.rootMenu}},methods:{onMouseEnter:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.hoverBackground)},onMouseLeave:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.backgroundColor)},handleClick:function(){this.disabled||(this.dispatch("ElMenu","item-click",this),this.$emit("click",this))}},mounted:function(){this.parentMenu.addItem(this),this.rootMenu.addItem(this)},beforeDestroy:function(){this.parentMenu.removeItem(this),this.rootMenu.removeItem(this)}},Se,[],!1,null,null,null);Oe.options.__file="packages/menu/src/menu-item.vue";var Ee=Oe.exports;Ee.install=function(e){e.component(Ee.name,Ee)};var Te=Ee,Me=function(){var e=this.$createElement,t=this._self._c||e;return t("li",{staticClass:"el-menu-item-group"},[t("div",{staticClass:"el-menu-item-group__title",style:{paddingLeft:this.levelPadding+"px"}},[this.$slots.title?this._t("title"):[this._v(this._s(this.title))]],2),t("ul",[this._t("default")],2)])};Me._withStripped=!0;var Pe=s({name:"ElMenuItemGroup",componentName:"ElMenuItemGroup",inject:["rootMenu"],props:{title:{type:String}},data:function(){return{paddingLeft:20}},computed:{levelPadding:function(){var e=20,t=this.$parent;if(this.rootMenu.collapse)return 20;for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return e}}},Me,[],!1,null,null,null);Pe.options.__file="packages/menu/src/menu-item-group.vue";var Ie=Pe.exports;Ie.install=function(e){e.component(Ie.name,Ie)};var Ne=Ie,je=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)};je._withStripped=!0;var Fe=void 0,Le="\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",Ae=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function Ve(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;Fe||(Fe=document.createElement("textarea"),document.body.appendChild(Fe));var n=function(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),s=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:Ae.map(function(e){return e+":"+t.getPropertyValue(e)}).join(";"),paddingSize:n,borderSize:s,boxSizing:i}}(e),s=n.paddingSize,r=n.borderSize,a=n.boxSizing,o=n.contextStyle;Fe.setAttribute("style",o+";"+Le),Fe.value=e.value||e.placeholder||"";var l=Fe.scrollHeight,c={};"border-box"===a?l+=r:"content-box"===a&&(l-=s),Fe.value="";var u=Fe.scrollHeight-s;if(null!==t){var h=u*t;"border-box"===a&&(h=h+s+r),l=Math.max(h,l),c.minHeight=h+"px"}if(null!==i){var d=u*i;"border-box"===a&&(d=d+s+r),l=Math.min(d,l)}return c.height=l+"px",Fe.parentNode&&Fe.parentNode.removeChild(Fe),Fe=null,c}var ze=i(7),Be=i.n(ze),Re=s({name:"ElInput",componentName:"ElInput",mixins:[k.a,C.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return Be()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=Ve(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:Ve(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionEnd:function(e){this.isComposing=!1,this.handleInput(e)},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,s=i(t);return void 0!==n?(s>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),s)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},qe,[],!1,null,null,null);Ye.options.__file="packages/input-number/src/input-number.vue";var Ue=Ye.exports;Ue.install=function(e){e.component(Ue.name,Ue)};var Ge=Ue,Xe=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio",class:[e.border&&e.radioSize?"el-radio--"+e.radioSize:"",{"is-disabled":e.isDisabled},{"is-focus":e.focus},{"is-bordered":e.border},{"is-checked":e.model===e.label}],attrs:{role:"radio","aria-checked":e.model===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[i("span",{staticClass:"el-radio__input",class:{"is-disabled":e.isDisabled,"is-checked":e.model===e.label}},[i("span",{staticClass:"el-radio__inner"}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],ref:"radio",staticClass:"el-radio__original",attrs:{type:"radio","aria-hidden":"true",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),i("span",{staticClass:"el-radio__label",on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};Xe._withStripped=!0;var Qe=s({name:"ElRadio",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElRadio",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch("ElRadioGroup","input",[e]):this.$emit("input",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.model),e.isGroup&&e.dispatch("ElRadioGroup","handleChange",e.model)})}}},Xe,[],!1,null,null,null);Qe.options.__file="packages/radio/src/radio.vue";var Je=Qe.exports;Je.install=function(e){e.component(Je.name,Je)};var Ze=Je,et=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-radio-group",attrs:{role:"radiogroup"},on:{keydown:this.handleKeydown}},[this._t("default")],2)};et._withStripped=!0;var tt=Object.freeze({LEFT:37,UP:38,RIGHT:39,DOWN:40}),it=s({name:"ElRadioGroup",componentName:"ElRadioGroup",inject:{elFormItem:{default:""}},mixins:[k.a],props:{value:{},size:String,fill:String,textColor:String,disabled:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},created:function(){var e=this;this.$on("handleChange",function(t){e.$emit("change",t)})},mounted:function(){var e=this.$el.querySelectorAll("[type=radio]"),t=this.$el.querySelectorAll("[role=radio]")[0];![].some.call(e,function(e){return e.checked})&&t&&(t.tabIndex=0)},methods:{handleKeydown:function(e){var t=e.target,i="INPUT"===t.nodeName?"[type=radio]":"[role=radio]",n=this.$el.querySelectorAll(i),s=n.length,r=[].indexOf.call(n,t),a=this.$el.querySelectorAll("[role=radio]");switch(e.keyCode){case tt.LEFT:case tt.UP:e.stopPropagation(),e.preventDefault(),0===r?(a[s-1].click(),a[s-1].focus()):(a[r-1].click(),a[r-1].focus());break;case tt.RIGHT:case tt.DOWN:r===s-1?(e.stopPropagation(),e.preventDefault(),a[0].click(),a[0].focus()):(a[r+1].click(),a[r+1].focus())}}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[this.value])}}},et,[],!1,null,null,null);it.options.__file="packages/radio/src/radio-group.vue";var nt=it.exports;nt.install=function(e){e.component(nt.name,nt)};var st=nt,rt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio-button",class:[e.size?"el-radio-button--"+e.size:"",{"is-active":e.value===e.label},{"is-disabled":e.isDisabled},{"is-focus":e.focus}],attrs:{role:"radio","aria-checked":e.value===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.value=e.isDisabled?e.value:e.label}}},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.value,expression:"value"}],staticClass:"el-radio-button__orig-radio",attrs:{type:"radio",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.value,e.label)},on:{change:[function(t){e.value=e.label},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),i("span",{staticClass:"el-radio-button__inner",style:e.value===e.label?e.activeStyle:null,on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};rt._withStripped=!0;var at=s({name:"ElRadioButton",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},props:{label:{},disabled:Boolean,name:String},data:function(){return{focus:!1}},computed:{value:{get:function(){return this._radioGroup.value},set:function(e){this._radioGroup.$emit("input",e)}},_radioGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return e;e=e.$parent}return!1},activeStyle:function(){return{backgroundColor:this._radioGroup.fill||"",borderColor:this._radioGroup.fill||"",boxShadow:this._radioGroup.fill?"-1px 0 0 0 "+this._radioGroup.fill:"",color:this._radioGroup.textColor||""}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._radioGroup.radioGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isDisabled:function(){return this.disabled||this._radioGroup.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this._radioGroup&&this.value!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.dispatch("ElRadioGroup","handleChange",e.value)})}}},rt,[],!1,null,null,null);at.options.__file="packages/radio/src/radio-button.vue";var ot=at.exports;ot.install=function(e){e.component(ot.name,ot)};var lt=ot,ct=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{role:"checkbox","aria-checked":e.indeterminate?"mixed":e.isChecked,"aria-disabled":e.isDisabled,id:e.id}},[i("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{"aria-checked":"mixed"}},[i("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,s=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var r=e._i(i,null);n.checked?r<0&&(e.model=i.concat([null])):r>-1&&(e.model=i.slice(0,r).concat(i.slice(r+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,s=!!n.checked;if(Array.isArray(i)){var r=e.label,a=e._i(i,r);n.checked?a<0&&(e.model=i.concat([r])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};ct._withStripped=!0;var ut=s({name:"ElCheckbox",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},ct,[],!1,null,null,null);ut.options.__file="packages/checkbox/src/checkbox.vue";var ht=ut.exports;ht.install=function(e){e.component(ht.name,ht)};var dt=ht,pt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox-button",class:[e.size?"el-checkbox-button--"+e.size:"",{"is-disabled":e.isDisabled},{"is-checked":e.isChecked},{"is-focus":e.focus}],attrs:{role:"checkbox","aria-checked":e.isChecked,"aria-disabled":e.isDisabled}},[e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,s=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var r=e._i(i,null);n.checked?r<0&&(e.model=i.concat([null])):r>-1&&(e.model=i.slice(0,r).concat(i.slice(r+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,s=!!n.checked;if(Array.isArray(i)){var r=e.label,a=e._i(i,r);n.checked?a<0&&(e.model=i.concat([r])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox-button__inner",style:e.isChecked?e.activeStyle:null},[e._t("default",[e._v(e._s(e.label))])],2):e._e()])};pt._withStripped=!0;var ft=s({name:"ElCheckboxButton",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},props:{value:{},label:{},disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number]},computed:{model:{get:function(){return this._checkboxGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this._checkboxGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):void 0!==this.value?this.$emit("input",e):this.selfModel=e}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},_checkboxGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return e;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},activeStyle:function(){return{backgroundColor:this._checkboxGroup.fill||"",borderColor:this._checkboxGroup.fill||"",color:this._checkboxGroup.textColor||"","box-shadow":"-1px 0 0 0 "+this._checkboxGroup.fill}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._checkboxGroup.checkboxGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this._checkboxGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled}},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t._checkboxGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()}},pt,[],!1,null,null,null);ft.options.__file="packages/checkbox/src/checkbox-button.vue";var mt=ft.exports;mt.install=function(e){e.component(mt.name,mt)};var vt=mt,gt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-checkbox-group",attrs:{role:"group","aria-label":"checkbox-group"}},[this._t("default")],2)};gt._withStripped=!0;var bt=s({name:"ElCheckboxGroup",componentName:"ElCheckboxGroup",mixins:[k.a],inject:{elFormItem:{default:""}},props:{value:{},disabled:Boolean,min:Number,max:Number,size:String,fill:String,textColor:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[e])}}},gt,[],!1,null,null,null);bt.options.__file="packages/checkbox/src/checkbox-group.vue";var yt=bt.exports;yt.install=function(e){e.component(yt.name,yt)};var xt=yt,_t=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-switch",class:{"is-disabled":e.switchDisabled,"is-checked":e.checked},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.switchDisabled},on:{click:function(t){return t.preventDefault(),e.switchValue(t)}}},[i("input",{ref:"input",staticClass:"el-switch__input",attrs:{type:"checkbox",id:e.id,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:e.switchDisabled},on:{change:e.handleChange,keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.switchValue(t):null}}}),e.inactiveIconClass||e.inactiveText?i("span",{class:["el-switch__label","el-switch__label--left",e.checked?"":"is-active"]},[e.inactiveIconClass?i("i",{class:[e.inactiveIconClass]}):e._e(),!e.inactiveIconClass&&e.inactiveText?i("span",{attrs:{"aria-hidden":e.checked}},[e._v(e._s(e.inactiveText))]):e._e()]):e._e(),i("span",{ref:"core",staticClass:"el-switch__core",style:{width:e.coreWidth+"px"}}),e.activeIconClass||e.activeText?i("span",{class:["el-switch__label","el-switch__label--right",e.checked?"is-active":""]},[e.activeIconClass?i("i",{class:[e.activeIconClass]}):e._e(),!e.activeIconClass&&e.activeText?i("span",{attrs:{"aria-hidden":!e.checked}},[e._v(e._s(e.activeText))]):e._e()]):e._e()])};_t._withStripped=!0;var Ct=s({name:"ElSwitch",mixins:[B()("input"),C.a,k.a],inject:{elForm:{default:""}},props:{value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:Number,default:40},activeIconClass:{type:String,default:""},inactiveIconClass:{type:String,default:""},activeText:String,inactiveText:String,activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},id:String},data:function(){return{coreWidth:this.width}},created:function(){~[this.activeValue,this.inactiveValue].indexOf(this.value)||this.$emit("input",this.inactiveValue)},computed:{checked:function(){return this.value===this.activeValue},switchDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{checked:function(){this.$refs.input.checked=this.checked,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[this.value])}},methods:{handleChange:function(e){var t=this,i=this.checked?this.inactiveValue:this.activeValue;this.$emit("input",i),this.$emit("change",i),this.$nextTick(function(){t.$refs.input.checked=t.checked})},setBackgroundColor:function(){var e=this.checked?this.activeColor:this.inactiveColor;this.$refs.core.style.borderColor=e,this.$refs.core.style.backgroundColor=e},switchValue:function(){!this.switchDisabled&&this.handleChange()},getMigratingConfig:function(){return{props:{"on-color":"on-color is renamed to active-color.","off-color":"off-color is renamed to inactive-color.","on-text":"on-text is renamed to active-text.","off-text":"off-text is renamed to inactive-text.","on-value":"on-value is renamed to active-value.","off-value":"off-value is renamed to inactive-value.","on-icon-class":"on-icon-class is renamed to active-icon-class.","off-icon-class":"off-icon-class is renamed to inactive-icon-class."}}}},mounted:function(){this.coreWidth=this.width||40,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.$refs.input.checked=this.checked}},_t,[],!1,null,null,null);Ct.options.__file="packages/switch/src/component.vue";var wt=Ct.exports;wt.install=function(e){e.component(wt.name,wt)};var kt=wt,St=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},click:function(e){e.stopPropagation()},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.deletePrevTag(t):null}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)};St._withStripped=!0;var Dt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};Dt._withStripped=!0;var $t=s({name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[j.a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",function(){e.$parent.visible&&e.updatePopper()}),this.$on("destroyPopper",this.destroyPopper)}},Dt,[],!1,null,null,null);$t.options.__file="packages/select/src/select-dropdown.vue";var Ot=$t.exports,Et=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};Et._withStripped=!0;var Tt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Mt=s({mixins:[k.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,s=i.valueKey;if(!this.created&&!n){if(s&&"object"===(void 0===e?"undefined":Tt(e))&&"object"===(void 0===t?"undefined":Tt(t))&&e[s]===t[s])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some(function(e){return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(m.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){this.select.onOptionDestroy(this.select.options.indexOf(this))}},Et,[],!1,null,null,null);Mt.options.__file="packages/select/src/option.vue";var Pt=Mt.exports,It=i(28),Nt=i.n(It),jt=i(11),Ft=i(14),Lt=i.n(Ft),At=i(27),Vt=i.n(At),zt=i(22),Bt=s({mixins:[k.a,f.a,B()("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(m.isIE)()&&!Object(m.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"}},components:{ElInput:d.a,ElSelectMenu:Ot,ElOption:Pt,ElTag:Nt.a,ElScrollbar:L.a},directives:{Clickoutside:P.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,default:function(){return Object(Ft.t)("el.select.placeholder")}},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},placeholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(m.valueEquals)(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast("ElSelectDropdown","updatePopper")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick(function(e){return t.handleQueryChange(i)});else{var n=i[i.length-1]||"";this.isOnComposition=!Object(zt.isKorean)(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var i=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");Vt()(i,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){Object(m.valueEquals)(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),s="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),r=this.cachedOptions.length-1;r>=0;r--){var a=this.cachedOptions[r];if(i?Object(m.getValueByPath)(a.value,this.valueKey)===Object(m.getValueByPath)(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var o={value:e,currentLabel:i||n||s?"":e};return this.multiple&&(o.hitState=!1),o},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach(function(t){i.push(e.getOption(t))}),this.selected=i,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.menuVisibleOnFocus=!0),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,function(e){return"INPUT"===e.tagName})[0],n=e.$refs.tags,s=e.initialInputHeight||40;i.style.height=0===e.selected.length?s+"px":Math.max(n?n.clientHeight+(n.clientHeight>s?6:0):0,s)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),s=this.getValueIndex(n,e.value);s>-1?n.splice(s,1):(this.multipleLimit<=0||n.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if("[object object]"===Object.prototype.toString.call(t).toLowerCase()){var i=this.valueKey,n=-1;return e.some(function(e,s){return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)&&(n=s,!0)}),n}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(m.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.placeholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=T()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=T()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object(jt.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object(jt.removeResizeListener)(this.$el,this.handleResize)}},St,[],!1,null,null,null);Bt.options.__file="packages/select/src/select.vue";var Rt=Bt.exports;Rt.install=function(e){e.component(Rt.name,Rt)};var Ht=Rt;Pt.install=function(e){e.component(Pt.name,Pt)};var Wt=Pt,qt=function(){var e=this.$createElement,t=this._self._c||e;return t("ul",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],staticClass:"el-select-group__wrap"},[t("li",{staticClass:"el-select-group__title"},[this._v(this._s(this.label))]),t("li",[t("ul",{staticClass:"el-select-group"},[this._t("default")],2)])])};qt._withStripped=!0;var Kt=s({mixins:[k.a],name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},data:function(){return{visible:!0}},watch:{disabled:function(e){this.broadcast("ElOption","handleGroupDisabled",e)}},methods:{queryChange:function(){this.visible=this.$children&&Array.isArray(this.$children)&&this.$children.some(function(e){return!0===e.visible})}},created:function(){this.$on("queryChange",this.queryChange)},mounted:function(){this.disabled&&this.broadcast("ElOption","handleGroupDisabled",this.disabled)}},qt,[],!1,null,null,null);Kt.options.__file="packages/select/src/option-group.vue";var Yt=Kt.exports;Yt.install=function(e){e.component(Yt.name,Yt)};var Ut=Yt,Gt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?i("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",[e._t("default")],2):e._e()])};Gt._withStripped=!0;var Xt=s({name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},Gt,[],!1,null,null,null);Xt.options.__file="packages/button/src/button.vue";var Qt=Xt.exports;Qt.install=function(e){e.component(Qt.name,Qt)};var Jt=Qt,Zt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-button-group"},[this._t("default")],2)};Zt._withStripped=!0;var ei=s({name:"ElButtonGroup"},Zt,[],!1,null,null,null);ei.options.__file="packages/button/src/button-group.vue";var ti=ei.exports;ti.install=function(e){e.component(ti.name,ti)};var ii=ti,ni=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-table",class:[{"el-table--fit":e.fit,"el-table--striped":e.stripe,"el-table--border":e.border||e.isGroup,"el-table--hidden":e.isHidden,"el-table--group":e.isGroup,"el-table--fluid-height":e.maxHeight,"el-table--scrollable-x":e.layout.scrollX,"el-table--scrollable-y":e.layout.scrollY,"el-table--enable-row-hover":!e.store.states.isComplex,"el-table--enable-row-transition":0!==(e.store.states.data||[]).length&&(e.store.states.data||[]).length<100},e.tableSize?"el-table--"+e.tableSize:""],on:{mouseleave:function(t){e.handleMouseLeave(t)}}},[i("div",{ref:"hiddenColumns",staticClass:"hidden-columns"},[e._t("default")],2),e.showHeader?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"headerWrapper",staticClass:"el-table__header-wrapper"},[i("table-header",{ref:"tableHeader",style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"default-sort":e.defaultSort}})],1):e._e(),i("div",{ref:"bodyWrapper",staticClass:"el-table__body-wrapper",class:[e.layout.scrollX?"is-scrolling-"+e.scrollPosition:"is-scrolling-none"],style:[e.bodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{context:e.context,store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.data&&0!==e.data.length?e._e():i("div",{ref:"emptyBlock",staticClass:"el-table__empty-block",style:{width:e.bodyWidth}},[i("span",{staticClass:"el-table__empty-text"},[e._t("empty",[e._v(e._s(e.emptyText||e.t("el.table.emptyText")))])],2)]),e.$slots.append?i("div",{ref:"appendWrapper",staticClass:"el-table__append-wrapper"},[e._t("append")],2):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"},{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"footerWrapper",staticClass:"el-table__footer-wrapper"},[i("table-footer",{style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,"default-sort":e.defaultSort}})],1):e._e(),e.fixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"fixedWrapper",staticClass:"el-table__fixed",style:[{width:e.layout.fixedWidth?e.layout.fixedWidth+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"fixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"fixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"fixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"left",store:e.store,stripe:e.stripe,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"row-style":e.rowStyle}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"fixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"rightFixedWrapper",staticClass:"el-table__fixed-right",style:[{width:e.layout.rightFixedWidth?e.layout.rightFixedWidth+"px":"",right:e.layout.scrollY?(e.border?e.layout.gutterWidth:e.layout.gutterWidth||0)+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"rightFixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"rightFixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"rightFixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"right",store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}})],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"rightFixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{ref:"rightFixedPatch",staticClass:"el-table__fixed-right-patch",style:{width:e.layout.scrollY?e.layout.gutterWidth+"px":"0",height:e.layout.headerHeight+"px"}}):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.resizeProxyVisible,expression:"resizeProxyVisible"}],ref:"resizeProxy",staticClass:"el-table__column-resize-proxy"})])};ni._withStripped=!0;var si=i(13),ri=i.n(si),ai=i(34),oi=i(38),li=i.n(oi),ci="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>-1,ui={bind:function(e,t){!function(e,t){e&&e.addEventListener&&e.addEventListener(ci?"DOMMouseScroll":"mousewheel",function(e){var i=li()(e);t&&t.apply(this,[e,i])})}(e,t.value)}},hi=i(6),di=i.n(hi),pi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},fi=function(e){for(var t=e.target;t&&"HTML"!==t.tagName.toUpperCase();){if("TD"===t.tagName.toUpperCase())return t;t=t.parentNode}return null},mi=function(e){return null!==e&&"object"===(void 0===e?"undefined":pi(e))},vi=function(e,t,i,n,s){if(!t&&!n&&(!s||Array.isArray(s)&&!s.length))return e;i="string"==typeof i?"descending"===i?-1:1:i&&i<0?-1:1;var r=n?null:function(i,n){return s?(Array.isArray(s)||(s=[s]),s.map(function(t){return"string"==typeof t?Object(m.getValueByPath)(i,t):t(i,n,e)})):("$key"!==t&&mi(i)&&"$value"in i&&(i=i.$value),[mi(i)?Object(m.getValueByPath)(i,t):i])};return e.map(function(e,t){return{value:e,index:t,key:r?r(e,t):null}}).sort(function(e,t){var s=function(e,t){if(n)return n(e.value,t.value);for(var i=0,s=e.key.length;it.key[i])return 1}return 0}(e,t);return s||(s=e.index-t.index),s*i}).map(function(e){return e.value})},gi=function(e,t){var i=null;return e.columns.forEach(function(e){e.id===t&&(i=e)}),i},bi=function(e,t){var i=(t.className||"").match(/el-table_[^\s]+/gm);return i?gi(e,i[0]):null},yi=function(e,t){if(!e)throw new Error("row is required when get row identity");if("string"==typeof t){if(t.indexOf(".")<0)return e[t];for(var i=t.split("."),n=e,s=0;s2&&void 0!==arguments[2]?arguments[2]:"children",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"hasChildren",s=function(e){return!(Array.isArray(e)&&e.length)};e.forEach(function(e){if(e[n])t(e,null,0);else{var r=e[i];s(r)||function e(r,a,o){t(r,a,o),a.forEach(function(r){if(r[n])t(r,null,o+1);else{var a=r[i];s(a)||e(r,a,o+1)}})}(e,r,0)}})}var Di={data:function(){return{states:{defaultExpandAll:!1,expandRows:[]}}},methods:{updateExpandRows:function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.rowKey,s=e.defaultExpandAll,r=e.expandRows;if(s)this.states.expandRows=i.slice();else if(n){var a=xi(r,n);this.states.expandRows=i.reduce(function(e,t){var i=yi(t,n);return a[i]&&e.push(t),e},[])}else this.states.expandRows=[]},toggleRowExpansion:function(e,t){ki(this.states.expandRows,e,t)&&(this.table.$emit("expand-change",e,this.states.expandRows.slice()),this.scheduleLayout())},setExpandRowKeys:function(e){this.assertRowKey();var t=this.states,i=t.data,n=t.rowKey,s=xi(i,n);this.states.expandRows=e.reduce(function(e,t){var i=s[t];return i&&e.push(i.row),e},[])},isRowExpanded:function(e){var t=this.states,i=t.expandRows,n=void 0===i?[]:i,s=t.rowKey;return s?!!xi(n,s)[yi(e,s)]:-1!==n.indexOf(e)}}},$i={data:function(){return{states:{_currentRowKey:null,currentRow:null}}},methods:{setCurrentRowKey:function(e){this.assertRowKey(),this.states._currentRowKey=e,this.setCurrentRowByKey(e)},restoreCurrentRowKey:function(){this.states._currentRowKey=null},setCurrentRowByKey:function(e){var t=this.states,i=t.data,n=void 0===i?[]:i,s=t.rowKey,r=null;s&&(r=Object(m.arrayFind)(n,function(t){return yi(t,s)===e})),t.currentRow=r},updateCurrentRow:function(e){var t=this.states,i=this.table,n=t.rowKey,s=t._currentRowKey,r=t.data||[],a=t.currentRow;if(e)this.restoreCurrentRowKey(),t.currentRow=e,a!==e&&this.table.$emit("current-change",e,a);else if(-1===r.indexOf(a)&&a){if(this.restoreCurrentRowKey(),n){var o=yi(a,n);this.setCurrentRowByKey(o)}else t.currentRow=null;t.currentRow!==a&&i.$emit("current-change",null,a)}else s&&this.setCurrentRowByKey(s)}}},Oi=Object.assign||function(e){for(var t=1;t0&&t[0]&&"selection"===t[0].type&&!t[0].fixed&&(t[0].fixed=!0,e.fixedColumns.unshift(t[0]));var i=t.filter(function(e){return!e.fixed});e.originColumns=[].concat(e.fixedColumns).concat(i).concat(e.rightFixedColumns);var n=Ti(i),s=Ti(e.fixedColumns),r=Ti(e.rightFixedColumns);e.leafColumnsLength=n.length,e.fixedLeafColumnsLength=s.length,e.rightFixedLeafColumnsLength=r.length,e.columns=[].concat(s).concat(n).concat(r),e.isComplex=e.fixedColumns.length>0||e.rightFixedColumns.length>0},scheduleLayout:function(e){e&&this.updateColumns(),this.table.debouncedUpdateLayout()},isSelected:function(e){var t=this.states.selection;return(void 0===t?[]:t).indexOf(e)>-1},clearSelection:function(){var e=this.states;e.isAllSelected=!1,e.selection.length&&(e.selection=[],this.table.$emit("selection-change",[]))},cleanSelection:function(){var e=this.states,t=e.data,i=e.rowKey,n=e.selection,s=void 0;if(i){s=[];var r=xi(n,i),a=xi(t,i);for(var o in r)r.hasOwnProperty(o)&&!a[o]&&s.push(r[o].row)}else s=n.filter(function(e){return-1===t.indexOf(e)});if(s.length){var l=n.filter(function(e){return-1===s.indexOf(e)});e.selection=l,this.table.$emit("selection-change",l.slice())}},toggleRowSelection:function(e,t){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(ki(this.states.selection,e,t)){var n=(this.states.selection||[]).slice();i&&this.table.$emit("select",n,e),this.table.$emit("selection-change",n)}},toggleAllSelection:T()(10,function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.selection,s=e.selectOnIndeterminate?!e.isAllSelected:!(e.isAllSelected||n.length);e.isAllSelected=s;var r=!1;i.forEach(function(t,i){e.selectable?e.selectable.call(null,t,i)&&ki(n,t,s)&&(r=!0):ki(n,t,s)&&(r=!0)}),r&&this.table.$emit("selection-change",n?n.slice():[]),this.table.$emit("select-all",n)}),updateSelectionByRowKey:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.data,s=xi(t,i);n.forEach(function(e){var n=yi(e,i),r=s[n];r&&(t[r.index]=e)})},updateAllSelected:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.selectable,s=e.data||[];if(0!==s.length){var r=void 0;i&&(r=xi(t,i));for(var a=function(e){return r?!!r[yi(e,i)]:-1!==t.indexOf(e)},o=!0,l=0,c=0,u=s.length;c1?i-1:0),s=1;sthis.bodyHeight;return this.scrollY=n,i!==n}return!1},e.prototype.setHeight=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"height";if(!di.a.prototype.$isServer){var n=this.table.$el;if(e=wi(e),this.height=e,!n&&(e||0===e))return di.a.nextTick(function(){return t.setHeight(e,i)});"number"==typeof e?(n.style[i]=e+"px",this.updateElsHeight()):"string"==typeof e&&(n.style[i]=e,this.updateElsHeight())}},e.prototype.setMaxHeight=function(e){this.setHeight(e,"max-height")},e.prototype.getFlattenColumns=function(){var e=[];return this.table.columns.forEach(function(t){t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)}),e},e.prototype.updateElsHeight=function(){var e=this;if(!this.table.$ready)return di.a.nextTick(function(){return e.updateElsHeight()});var t=this.table.$refs,i=t.headerWrapper,n=t.appendWrapper,s=t.footerWrapper;if(this.appendHeight=n?n.offsetHeight:0,!this.showHeader||i){var r=this.headerHeight=this.showHeader?i.offsetHeight:0;if(this.showHeader&&i.offsetWidth>0&&(this.table.columns||[]).length>0&&r<2)return di.a.nextTick(function(){return e.updateElsHeight()});var a=this.tableHeight=this.table.$el.clientHeight,o=this.footerHeight=s?s.offsetHeight:0;null!==this.height&&(this.bodyHeight=a-r-o+(s?1:0)),this.fixedBodyHeight=this.scrollX?this.bodyHeight-this.gutterWidth:this.bodyHeight;var l=!this.table.data||0===this.table.data.length;this.viewportHeight=this.scrollX?a-(l?0:this.gutterWidth):a,this.updateScrollY(),this.notifyObservers("scrollable")}},e.prototype.updateColumnsWidth=function(){if(!di.a.prototype.$isServer){var e=this.fit,t=this.table.$el.clientWidth,i=0,n=this.getFlattenColumns(),s=n.filter(function(e){return"number"!=typeof e.width});if(n.forEach(function(e){"number"==typeof e.width&&e.realWidth&&(e.realWidth=null)}),s.length>0&&e){n.forEach(function(e){i+=e.width||e.minWidth||80});var r=this.scrollY?this.gutterWidth:0;if(i<=t-r){this.scrollX=!1;var a=t-r-i;if(1===s.length)s[0].realWidth=(s[0].minWidth||80)+a;else{var o=a/s.reduce(function(e,t){return e+(t.minWidth||80)},0),l=0;s.forEach(function(e,t){if(0!==t){var i=Math.floor((e.minWidth||80)*o);l+=i,e.realWidth=(e.minWidth||80)+i}}),s[0].realWidth=(s[0].minWidth||80)+a-l}}else this.scrollX=!0,s.forEach(function(e){e.realWidth=e.minWidth});this.bodyWidth=Math.max(i,t),this.table.resizeState.width=this.bodyWidth}else n.forEach(function(e){e.width||e.minWidth?e.realWidth=e.width||e.minWidth:e.realWidth=80,i+=e.realWidth}),this.scrollX=i>t,this.bodyWidth=i;var c=this.store.states.fixedColumns;if(c.length>0){var u=0;c.forEach(function(e){u+=e.realWidth||e.width}),this.fixedWidth=u}var h=this.store.states.rightFixedColumns;if(h.length>0){var d=0;h.forEach(function(e){d+=e.realWidth||e.width}),this.rightFixedWidth=d}this.notifyObservers("columns")}},e.prototype.addObserver=function(e){this.observers.push(e)},e.prototype.removeObserver=function(e){var t=this.observers.indexOf(e);-1!==t&&this.observers.splice(t,1)},e.prototype.notifyObservers=function(e){var t=this;this.observers.forEach(function(i){switch(e){case"columns":i.onColumnsChange(t);break;case"scrollable":i.onScrollableChange(t);break;default:throw new Error("Table Layout don't have event "+e+".")}})},e}(),Li={created:function(){this.tableLayout.addObserver(this)},destroyed:function(){this.tableLayout.removeObserver(this)},computed:{tableLayout:function(){var e=this.layout;if(!e&&this.table&&(e=this.table.layout),!e)throw new Error("Can not find table layout.");return e}},mounted:function(){this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout)},updated:function(){this.__updated__||(this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout),this.__updated__=!0)},methods:{onColumnsChange:function(){var e=this.$el.querySelectorAll("colgroup > col");if(e.length){var t={};this.tableLayout.getFlattenColumns().forEach(function(e){t[e.id]=e});for(var i=0,n=e.length;i col[name=gutter]"),i=0,n=t.length;i=this.leftFixedLeafCount:"right"===this.fixed?e=this.columnsCount-this.rightFixedLeafCount},getSpan:function(e,t,i,n){var s=1,r=1,a=this.table.spanMethod;if("function"==typeof a){var o=a({row:e,column:t,rowIndex:i,columnIndex:n});Array.isArray(o)?(s=o[0],r=o[1]):"object"===(void 0===o?"undefined":Ai(o))&&(s=o.rowspan,r=o.colspan)}return{rowspan:s,colspan:r}},getRowStyle:function(e,t){var i=this.table.rowStyle;return"function"==typeof i?i.call(null,{row:e,rowIndex:t}):i||null},getRowClass:function(e,t){var i=["el-table__row"];this.table.highlightCurrentRow&&e===this.store.states.currentRow&&i.push("current-row"),this.stripe&&t%2==1&&i.push("el-table__row--striped");var n=this.table.rowClassName;return"string"==typeof n?i.push(n):"function"==typeof n&&i.push(n.call(null,{row:e,rowIndex:t})),this.store.states.expandRows.indexOf(e)>-1&&i.push("expanded"),i},getCellStyle:function(e,t,i,n){var s=this.table.cellStyle;return"function"==typeof s?s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):s},getCellClass:function(e,t,i,n){var s=[n.id,n.align,n.className];this.isColumnHidden(t)&&s.push("is-hidden");var r=this.table.cellClassName;return"string"==typeof r?s.push(r):"function"==typeof r&&s.push(r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),s.join(" ")},getColspanRealWidth:function(e,t,i){return t<1?e[i].realWidth:e.map(function(e){return e.realWidth}).slice(i,i+t).reduce(function(e,t){return e+t},-1)},handleCellMouseEnter:function(e,t){var i=this.table,n=fi(e);if(n){var s=bi(i,n),r=i.hoverState={cell:n,column:s,row:t};i.$emit("cell-mouse-enter",r.row,r.column,r.cell,e)}var a=e.target.querySelector(".cell");if(Object(fe.hasClass)(a,"el-tooltip")&&a.childNodes.length){var o=document.createRange();if(o.setStart(a,0),o.setEnd(a,a.childNodes.length),(o.getBoundingClientRect().width+((parseInt(Object(fe.getStyle)(a,"paddingLeft"),10)||0)+(parseInt(Object(fe.getStyle)(a,"paddingRight"),10)||0))>a.offsetWidth||a.scrollWidth>a.offsetWidth)&&this.$refs.tooltip){var l=this.$refs.tooltip;this.tooltipContent=n.innerText||n.textContent,l.referenceElm=n,l.$refs.popper&&(l.$refs.popper.style.display="none"),l.doDestroy(),l.setExpectedState(!0),this.activateTooltip(l)}}},handleCellMouseLeave:function(e){var t=this.$refs.tooltip;if(t&&(t.setExpectedState(!1),t.handleClosePopper()),fi(e)){var i=this.table.hoverState||{};this.table.$emit("cell-mouse-leave",i.row,i.column,i.cell,e)}},handleMouseEnter:T()(30,function(e){this.store.commit("setHoverRow",e)}),handleMouseLeave:T()(30,function(){this.store.commit("setHoverRow",null)}),handleContextMenu:function(e,t){this.handleEvent(e,t,"contextmenu")},handleDoubleClick:function(e,t){this.handleEvent(e,t,"dblclick")},handleClick:function(e,t){this.store.commit("setCurrentRow",t),this.handleEvent(e,t,"click")},handleEvent:function(e,t,i){var n=this.table,s=fi(e),r=void 0;s&&(r=bi(n,s))&&n.$emit("cell-"+i,t,r,s,e),n.$emit("row-"+i,t,r,e)},rowRender:function(e,t,i){var n=this,s=this.$createElement,r=this.treeIndent,a=this.columns,o=this.firstDefaultColumnIndex,l=a.map(function(e,t){return n.isColumnHidden(t)}),c=this.getRowClass(e,t),u=!0;return i&&(c.push("el-table__row--level-"+i.level),u=i.display),s("tr",{directives:[{name:"show",value:u}],style:this.getRowStyle(e,t),class:c,key:this.getKeyOfRow(e,t),on:{dblclick:function(t){return n.handleDoubleClick(t,e)},click:function(t){return n.handleClick(t,e)},contextmenu:function(t){return n.handleContextMenu(t,e)},mouseenter:function(e){return n.handleMouseEnter(t)},mouseleave:this.handleMouseLeave}},[a.map(function(c,u){var h=n.getSpan(e,c,t,u),d=h.rowspan,p=h.colspan;if(!d||!p)return null;var f=Vi({},c);f.realWidth=n.getColspanRealWidth(a,p,u);var m={store:n.store,_self:n.context||n.table.$vnode.context,column:f,row:e,$index:t};return u===o&&i&&(m.treeNode={indent:i.level*r,level:i.level},"boolean"==typeof i.expanded&&(m.treeNode.expanded=i.expanded,"loading"in i&&(m.treeNode.loading=i.loading),"noLazyChildren"in i&&(m.treeNode.noLazyChildren=i.noLazyChildren))),s("td",{style:n.getCellStyle(t,u,e,c),class:n.getCellClass(t,u,e,c),attrs:{rowspan:d,colspan:p},on:{mouseenter:function(t){return n.handleCellMouseEnter(t,e)},mouseleave:n.handleCellMouseLeave}},[c.renderCell.call(n._renderProxy,n.$createElement,m,l[u])])})])},wrappedRowRender:function(e,t){var i=this,n=this.$createElement,s=this.store,r=s.isRowExpanded,a=s.assertRowKey,o=s.states,l=o.treeData,c=o.lazyTreeNodeMap,u=o.childrenColumnName,h=o.rowKey;if(this.hasExpandColumn&&r(e)){var d=this.table.renderExpanded,p=this.rowRender(e,t);return d?[[p,n("tr",{key:"expanded-row__"+p.key},[n("td",{attrs:{colspan:this.columnsCount},class:"el-table__expanded-cell"},[d(this.$createElement,{row:e,$index:t,store:this.store})])])]]:(console.error("[Element Error]renderExpanded is required."),p)}if(Object.keys(l).length){a();var f=yi(e,h),m=l[f],v=null;m&&(v={expanded:m.expanded,level:m.level,display:!0},"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(v.noLazyChildren=!(m.children&&m.children.length)),v.loading=m.loading));var g=[this.rowRender(e,t,v)];if(m){var b=0;m.display=!0,function e(n,s){n&&n.length&&s&&n.forEach(function(n){var r={display:s.display&&s.expanded,level:s.level+1},a=yi(n,h);if(void 0===a||null===a)throw new Error("for nested data item, row-key is required.");if((m=Vi({},l[a]))&&(r.expanded=m.expanded,m.level=m.level||r.level,m.display=!(!m.expanded||!r.display),"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(r.noLazyChildren=!(m.children&&m.children.length)),r.loading=m.loading)),b++,g.push(i.rowRender(n,t+b,r)),m){var o=c[a]||n[u];e(o,m)}})}(c[f]||e[u],m)}return g}return this.rowRender(e,t)}}},Bi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"}},[e.multiple?i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("div",{staticClass:"el-table-filter__content"},[i("el-scrollbar",{attrs:{"wrap-class":"el-table-filter__wrap"}},[i("el-checkbox-group",{staticClass:"el-table-filter__checkbox-group",model:{value:e.filteredValue,callback:function(t){e.filteredValue=t},expression:"filteredValue"}},e._l(e.filters,function(t){return i("el-checkbox",{key:t.value,attrs:{label:t.value}},[e._v(e._s(t.text))])}),1)],1)],1),i("div",{staticClass:"el-table-filter__bottom"},[i("button",{class:{"is-disabled":0===e.filteredValue.length},attrs:{disabled:0===e.filteredValue.length},on:{click:e.handleConfirm}},[e._v(e._s(e.t("el.table.confirmFilter")))]),i("button",{on:{click:e.handleReset}},[e._v(e._s(e.t("el.table.resetFilter")))])])]):i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("ul",{staticClass:"el-table-filter__list"},[i("li",{staticClass:"el-table-filter__list-item",class:{"is-active":void 0===e.filterValue||null===e.filterValue},on:{click:function(t){e.handleSelect(null)}}},[e._v(e._s(e.t("el.table.clearFilter")))]),e._l(e.filters,function(t){return i("li",{key:t.value,staticClass:"el-table-filter__list-item",class:{"is-active":e.isActive(t)},attrs:{label:t.value},on:{click:function(i){e.handleSelect(t.value)}}},[e._v(e._s(t.text))])})],2)])])};Bi._withStripped=!0;var Ri=[];!di.a.prototype.$isServer&&document.addEventListener("click",function(e){Ri.forEach(function(t){var i=e.target;t&&t.$el&&(i===t.$el||t.$el.contains(i)||t.handleOutsideClick&&t.handleOutsideClick(e))})});var Hi=function(e){e&&Ri.push(e)},Wi=function(e){-1!==Ri.indexOf(e)&&Ri.splice(e,1)},qi=i(30),Ki=i.n(qi),Yi=s({name:"ElTableFilterPanel",mixins:[j.a,f.a],directives:{Clickoutside:P.a},components:{ElCheckbox:ri.a,ElCheckboxGroup:Ki.a},props:{placement:{type:String,default:"bottom-end"}},methods:{isActive:function(e){return e.value===this.filterValue},handleOutsideClick:function(){var e=this;setTimeout(function(){e.showPopper=!1},16)},handleConfirm:function(){this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleReset:function(){this.filteredValue=[],this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleSelect:function(e){this.filterValue=e,void 0!==e&&null!==e?this.confirmFilter(this.filteredValue):this.confirmFilter([]),this.handleOutsideClick()},confirmFilter:function(e){this.table.store.commit("filterChange",{column:this.column,values:e}),this.table.store.updateAllSelected()}},data:function(){return{table:null,cell:null,column:null}},computed:{filters:function(){return this.column&&this.column.filters},filterValue:{get:function(){return(this.column.filteredValue||[])[0]},set:function(e){this.filteredValue&&(void 0!==e&&null!==e?this.filteredValue.splice(0,1,e):this.filteredValue.splice(0,1))}},filteredValue:{get:function(){return this.column&&this.column.filteredValue||[]},set:function(e){this.column&&(this.column.filteredValue=e)}},multiple:function(){return!this.column||this.column.filterMultiple}},mounted:function(){var e=this;this.popperElm=this.$el,this.referenceElm=this.cell,this.table.bodyWrapper.addEventListener("scroll",function(){e.updatePopper()}),this.$watch("showPopper",function(t){e.column&&(e.column.filterOpened=t),t?Hi(e):Wi(e)})},watch:{showPopper:function(e){!0===e&&parseInt(this.popperJS._popper.style.zIndex,10)1;return s&&(this.$parent.isGroup=!0),e("table",{class:"el-table__header",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map(function(t){return e("col",{attrs:{name:t.id},key:t.id})}),this.hasGutter?e("col",{attrs:{name:"gutter"}}):""]),e("thead",{class:[{"is-group":s,"has-gutter":this.hasGutter}]},[this._l(n,function(i,n){return e("tr",{style:t.getHeaderRowStyle(n),class:t.getHeaderRowClass(n)},[i.map(function(s,r){return e("th",{attrs:{colspan:s.colSpan,rowspan:s.rowSpan},on:{mousemove:function(e){return t.handleMouseMove(e,s)},mouseout:t.handleMouseOut,mousedown:function(e){return t.handleMouseDown(e,s)},click:function(e){return t.handleHeaderClick(e,s)},contextmenu:function(e){return t.handleHeaderContextMenu(e,s)}},style:t.getHeaderCellStyle(n,r,i,s),class:t.getHeaderCellClass(n,r,i,s),key:s.id},[e("div",{class:["cell",s.filteredValue&&s.filteredValue.length>0?"highlight":"",s.labelClassName]},[s.renderHeader?s.renderHeader.call(t._renderProxy,e,{column:s,$index:r,store:t.store,_self:t.$parent.$vnode.context}):s.label,s.sortable?e("span",{class:"caret-wrapper",on:{click:function(e){return t.handleSortClick(e,s)}}},[e("i",{class:"sort-caret ascending",on:{click:function(e){return t.handleSortClick(e,s,"ascending")}}}),e("i",{class:"sort-caret descending",on:{click:function(e){return t.handleSortClick(e,s,"descending")}}})]):"",s.filterable?e("span",{class:"el-table__column-filter-trigger",on:{click:function(e){return t.handleFilterClick(e,s)}}},[e("i",{class:["el-icon-arrow-down",s.filterOpened?"el-icon-arrow-up":""]})]):""])])}),t.hasGutter?e("th",{class:"gutter"}):""])})])])},props:{fixed:String,store:{required:!0},border:Boolean,defaultSort:{type:Object,default:function(){return{prop:"",order:""}}}},components:{ElCheckbox:ri.a},computed:Gi({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},Ii({columns:"columns",isAllSelected:"isAllSelected",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),created:function(){this.filterPanels={}},mounted:function(){var e=this;this.$nextTick(function(){var t=e.defaultSort,i=t.prop,n=t.order;e.store.commit("sort",{prop:i,order:n,init:!0})})},beforeDestroy:function(){var e=this.filterPanels;for(var t in e)e.hasOwnProperty(t)&&e[t]&&e[t].$destroy(!0)},methods:{isCellHidden:function(e,t){for(var i=0,n=0;n=this.leftFixedLeafCount:"right"===this.fixed?i=this.columnsCount-this.rightFixedLeafCount},getHeaderRowStyle:function(e){var t=this.table.headerRowStyle;return"function"==typeof t?t.call(null,{rowIndex:e}):t},getHeaderRowClass:function(e){var t=[],i=this.table.headerRowClassName;return"string"==typeof i?t.push(i):"function"==typeof i&&t.push(i.call(null,{rowIndex:e})),t.join(" ")},getHeaderCellStyle:function(e,t,i,n){var s=this.table.headerCellStyle;return"function"==typeof s?s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):s},getHeaderCellClass:function(e,t,i,n){var s=[n.id,n.order,n.headerAlign,n.className,n.labelClassName];0===e&&this.isCellHidden(t,i)&&s.push("is-hidden"),n.children||s.push("is-leaf"),n.sortable&&s.push("is-sortable");var r=this.table.headerCellClassName;return"string"==typeof r?s.push(r):"function"==typeof r&&s.push(r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),s.join(" ")},toggleAllSelection:function(e){e.stopPropagation(),this.store.commit("toggleAllSelection")},handleFilterClick:function(e,t){e.stopPropagation();var i=e.target,n="TH"===i.tagName?i:i.parentNode;n=n.querySelector(".el-table__column-filter-trigger")||n;var s=this.$parent,r=this.filterPanels[t.id];r&&t.filterOpened?r.showPopper=!1:(r||(r=new di.a(Ui),this.filterPanels[t.id]=r,t.filterPlacement&&(r.placement=t.filterPlacement),r.table=s,r.cell=n,r.column=t,!this.$isServer&&r.$mount(document.createElement("div"))),setTimeout(function(){r.showPopper=!0},16))},handleHeaderClick:function(e,t){!t.filters&&t.sortable?this.handleSortClick(e,t):t.filterable&&!t.sortable&&this.handleFilterClick(e,t),this.$parent.$emit("header-click",t,e)},handleHeaderContextMenu:function(e,t){this.$parent.$emit("header-contextmenu",t,e)},handleMouseDown:function(e,t){var i=this;if(!this.$isServer&&!(t.children&&t.children.length>0)&&this.draggingColumn&&this.border){this.dragging=!0,this.$parent.resizeProxyVisible=!0;var n=this.$parent,s=n.$el.getBoundingClientRect().left,r=this.$el.querySelector("th."+t.id),a=r.getBoundingClientRect(),o=a.left-s+30;Object(fe.addClass)(r,"noclick"),this.dragState={startMouseLeft:e.clientX,startLeft:a.right-s,startColumnLeft:a.left-s,tableLeft:s};var l=n.$refs.resizeProxy;l.style.left=this.dragState.startLeft+"px",document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};var c=function(e){var t=e.clientX-i.dragState.startMouseLeft,n=i.dragState.startLeft+t;l.style.left=Math.max(o,n)+"px"};document.addEventListener("mousemove",c),document.addEventListener("mouseup",function s(){if(i.dragging){var a=i.dragState,o=a.startColumnLeft,u=a.startLeft,h=parseInt(l.style.left,10)-o;t.width=t.realWidth=h,n.$emit("header-dragend",t.width,u-o,t,e),i.store.scheduleLayout(),document.body.style.cursor="",i.dragging=!1,i.draggingColumn=null,i.dragState={},n.resizeProxyVisible=!1}document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",s),document.onselectstart=null,document.ondragstart=null,setTimeout(function(){Object(fe.removeClass)(r,"noclick")},0)})}},handleMouseMove:function(e,t){if(!(t.children&&t.children.length>0)){for(var i=e.target;i&&"TH"!==i.tagName;)i=i.parentNode;if(t&&t.resizable&&!this.dragging&&this.border){var n=i.getBoundingClientRect(),s=document.body.style;n.width>12&&n.right-e.pageX<8?(s.cursor="col-resize",Object(fe.hasClass)(i,"is-sortable")&&(i.style.cursor="col-resize"),this.draggingColumn=t):this.dragging||(s.cursor="",Object(fe.hasClass)(i,"is-sortable")&&(i.style.cursor="pointer"),this.draggingColumn=null)}}},handleMouseOut:function(){this.$isServer||(document.body.style.cursor="")},toggleOrder:function(e){var t=e.order,i=e.sortOrders;if(""===t)return i[0];var n=i.indexOf(t||null);return i[n>i.length-2?0:n+1]},handleSortClick:function(e,t,i){e.stopPropagation();for(var n=t.order===i?null:i||this.toggleOrder(t),s=e.target;s&&"TH"!==s.tagName;)s=s.parentNode;if(s&&"TH"===s.tagName&&Object(fe.hasClass)(s,"noclick"))Object(fe.removeClass)(s,"noclick");else if(t.sortable){var r=this.store.states,a=r.sortProp,o=void 0,l=r.sortingColumn;(l!==t||l===t&&null===l.order)&&(l&&(l.order=null),r.sortingColumn=t,a=t.property),o=t.order=n||null,r.sortProp=a,r.sortOrder=o,this.store.commit("changeSortCondition")}}},data:function(){return{draggingColumn:null,dragging:!1,dragState:{}}}},Ji=Object.assign||function(e){for(var t=1;t=this.leftFixedLeafCount;if("right"===this.fixed){for(var n=0,s=0;s=this.columnsCount-this.rightFixedCount)},getRowClasses:function(e,t){var i=[e.id,e.align,e.labelClassName];return e.className&&i.push(e.className),this.isCellHidden(t,this.columns,e)&&i.push("is-hidden"),e.children||i.push("is-leaf"),i}}},en=Object.assign||function(e){for(var t=1;t0){var n=i.scrollTop;t.pixelY<0&&0!==n&&e.preventDefault(),t.pixelY>0&&i.scrollHeight-i.clientHeight>n&&e.preventDefault(),i.scrollTop+=Math.ceil(t.pixelY/5)}else i.scrollLeft+=Math.ceil(t.pixelX/5)},handleHeaderFooterMousewheel:function(e,t){var i=t.pixelX,n=t.pixelY;Math.abs(i)>=Math.abs(n)&&(this.bodyWrapper.scrollLeft+=t.pixelX/5)},syncPostion:Object(ai.throttle)(20,function(){var e=this.bodyWrapper,t=e.scrollLeft,i=e.scrollTop,n=e.offsetWidth,s=e.scrollWidth,r=this.$refs,a=r.headerWrapper,o=r.footerWrapper,l=r.fixedBodyWrapper,c=r.rightFixedBodyWrapper;a&&(a.scrollLeft=t),o&&(o.scrollLeft=t),l&&(l.scrollTop=i),c&&(c.scrollTop=i);var u=s-n-1;this.scrollPosition=t>=u?"right":0===t?"left":"middle"}),bindEvents:function(){this.bodyWrapper.addEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(jt.addResizeListener)(this.$el,this.resizeListener)},unbindEvents:function(){this.bodyWrapper.removeEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(jt.removeResizeListener)(this.$el,this.resizeListener)},resizeListener:function(){if(this.$ready){var e=!1,t=this.$el,i=this.resizeState,n=i.width,s=i.height,r=t.offsetWidth;n!==r&&(e=!0);var a=t.offsetHeight;(this.height||this.shouldUpdateHeight)&&s!==a&&(e=!0),e&&(this.resizeState.width=r,this.resizeState.height=a,this.doLayout())}},doLayout:function(){this.shouldUpdateHeight&&this.layout.updateElsHeight(),this.layout.updateColumnsWidth()},sort:function(e,t){this.store.commit("sort",{prop:e,order:t})},toggleAllSelection:function(){this.store.commit("toggleAllSelection")}},computed:en({tableSize:function(){return this.size||(this.$ELEMENT||{}).size},bodyWrapper:function(){return this.$refs.bodyWrapper},shouldUpdateHeight:function(){return this.height||this.maxHeight||this.fixedColumns.length>0||this.rightFixedColumns.length>0},bodyWidth:function(){var e=this.layout,t=e.bodyWidth,i=e.scrollY,n=e.gutterWidth;return t?t-(i?n:0)+"px":""},bodyHeight:function(){var e=this.layout,t=e.headerHeight,i=void 0===t?0:t,n=e.bodyHeight,s=e.footerHeight,r=void 0===s?0:s;if(this.height)return{height:n?n+"px":""};if(this.maxHeight){var a=wi(this.maxHeight);if("number"==typeof a)return{"max-height":a-r-(this.showHeader?i:0)+"px"}}return{}},fixedBodyHeight:function(){if(this.height)return{height:this.layout.fixedBodyHeight?this.layout.fixedBodyHeight+"px":""};if(this.maxHeight){var e=wi(this.maxHeight);if("number"==typeof e)return e=this.layout.scrollX?e-this.layout.gutterWidth:e,this.showHeader&&(e-=this.layout.headerHeight),{"max-height":(e-=this.layout.footerHeight)+"px"}}return{}},fixedHeight:function(){return this.maxHeight?this.showSummary?{bottom:0}:{bottom:this.layout.scrollX&&this.data.length?this.layout.gutterWidth+"px":""}:this.showSummary?{height:this.layout.tableHeight?this.layout.tableHeight+"px":""}:{height:this.layout.viewportHeight?this.layout.viewportHeight+"px":""}}},Ii({selection:"selection",columns:"columns",tableData:"data",fixedColumns:"fixedColumns",rightFixedColumns:"rightFixedColumns"})),watch:{height:{immediate:!0,handler:function(e){this.layout.setHeight(e)}},maxHeight:{immediate:!0,handler:function(e){this.layout.setMaxHeight(e)}},currentRowKey:{immediate:!0,handler:function(e){this.rowKey&&this.store.setCurrentRowKey(e)}},data:{immediate:!0,handler:function(e){this.store.commit("setData",e)}},expandRowKeys:{immediate:!0,handler:function(e){e&&this.store.setExpandRowKeysAdapter(e)}}},created:function(){var e=this;this.tableId="el-table_"+tn++,this.debouncedUpdateLayout=Object(ai.debounce)(50,function(){return e.doLayout()})},mounted:function(){var e=this;this.bindEvents(),this.store.updateColumns(),this.doLayout(),this.resizeState={width:this.$el.offsetWidth,height:this.$el.offsetHeight},this.store.states.columns.forEach(function(t){t.filteredValue&&t.filteredValue.length&&e.store.commit("filterChange",{column:t,values:t.filteredValue,silent:!0})}),this.$ready=!0},destroyed:function(){this.unbindEvents()},data:function(){var e=this.treeProps,t=e.hasChildren,i=void 0===t?"hasChildren":t,n=e.children,s=void 0===n?"children":n;return this.store=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error("Table is required.");var i=new Pi;return i.table=e,Object.keys(t).forEach(function(e){i.states[e]=t[e]}),i}(this,{rowKey:this.rowKey,defaultExpandAll:this.defaultExpandAll,selectOnIndeterminate:this.selectOnIndeterminate,indent:this.indent,lazy:this.lazy,lazyColumnIdentifier:i,childrenColumnName:s}),{layout:new Fi({store:this.store,table:this,fit:this.fit,showHeader:this.showHeader}),isHidden:!1,renderExpanded:null,resizeProxyVisible:!1,resizeState:{width:null,height:null},isGroup:!1,scrollPosition:"left"}}},ni,[],!1,null,null,null);nn.options.__file="packages/table/src/table.vue";var sn=nn.exports;sn.install=function(e){e.component(sn.name,sn)};var rn=sn,an={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:"",className:"el-table-column--selection"},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},on={selection:{renderHeader:function(e,t){var i=t.store;return e("el-checkbox",{attrs:{disabled:i.states.data&&0===i.states.data.length,indeterminate:i.states.selection.length>0&&!this.isAllSelected,value:this.isAllSelected},nativeOn:{click:this.toggleAllSelection}})},renderCell:function(e,t){var i=t.row,n=t.column,s=t.store,r=t.$index;return e("el-checkbox",{nativeOn:{click:function(e){return e.stopPropagation()}},attrs:{value:s.isSelected(i),disabled:!!n.selectable&&!n.selectable.call(null,i,r)},on:{input:function(){s.commit("rowSelectedChanged",i)}}})},sortable:!1,resizable:!1},index:{renderHeader:function(e,t){return t.column.label||"#"},renderCell:function(e,t){var i=t.$index,n=i+1,s=t.column.index;return"number"==typeof s?n=i+s:"function"==typeof s&&(n=s(i)),e("div",[n])},sortable:!1},expand:{renderHeader:function(e,t){return t.column.label||""},renderCell:function(e,t){var i=t.row,n=t.store,s=["el-table__expand-icon"];n.states.expandRows.indexOf(i)>-1&&s.push("el-table__expand-icon--expanded");return e("div",{class:s,on:{click:function(e){e.stopPropagation(),n.toggleRowExpansion(i)}}},[e("i",{class:"el-icon el-icon-arrow-right"})])},sortable:!1,resizable:!1,className:"el-table__expand-column"}};function ln(e,t){var i=t.row,n=t.column,s=t.$index,r=n.property,a=r&&Object(m.getPropByPath)(i,r).v;return n&&n.formatter?n.formatter(i,n,a,s):a}var cn=Object.assign||function(e){for(var t=1;t-1})}}},data:function(){return{isSubColumn:!1,columns:[]}},computed:{owner:function(){for(var e=this.$parent;e&&!e.tableId;)e=e.$parent;return e},columnOrTableParent:function(){for(var e=this.$parent;e&&!e.tableId&&!e.columnId;)e=e.$parent;return e},realWidth:function(){return Ci(this.width)},realMinWidth:function(){return function(e){return void 0!==e&&(e=Ci(e),isNaN(e)&&(e=80)),e}(this.minWidth)},realAlign:function(){return this.align?"is-"+this.align:null},realHeaderAlign:function(){return this.headerAlign?"is-"+this.headerAlign:this.realAlign}},methods:{getPropsData:function(){for(var e=this,t=arguments.length,i=Array(t),n=0;n3&&void 0!==arguments[3]?arguments[3]:"-";return e?(0,(Cn[i]||Cn.default).parser)(e,t||vn[i],n):null},Sn=function(e,t,i){return e?(0,(Cn[i]||Cn.default).formatter)(e,t||vn[i]):null},Dn=function(e,t){var i=function(e,t){var i=e instanceof Date,n=t instanceof Date;return i&&n?e.getTime()===t.getTime():!i&&!n&&e===t},n=e instanceof Array,s=t instanceof Array;return n&&s?e.length===t.length&&e.every(function(e,n){return i(e,t[n])}):!n&&!s&&i(e,t)},$n=function(e){return"string"==typeof e||e instanceof String},On=function(e){return null===e||void 0===e||$n(e)||Array.isArray(e)&&2===e.length&&e.every($n)},En=s({mixins:[k.a,mn],inject:{elForm:{default:""},elFormItem:{default:""}},props:{size:String,format:String,valueFormat:String,readonly:Boolean,placeholder:String,startPlaceholder:String,endPlaceholder:String,prefixIcon:String,clearIcon:{type:String,default:"el-icon-circle-close"},name:{default:"",validator:On},disabled:Boolean,clearable:{type:Boolean,default:!0},id:{default:"",validator:On},popperClass:String,editable:{type:Boolean,default:!0},align:{type:String,default:"left"},value:{},defaultValue:{},defaultTime:{},rangeSeparator:{default:"-"},pickerOptions:{},unlinkPanels:Boolean,validateEvent:{type:Boolean,default:!0}},components:{ElInput:d.a},directives:{Clickoutside:P.a},data:function(){return{pickerVisible:!1,showClose:!1,userInput:null,valueOnOpen:null,unwatchPickerOptions:null}},watch:{pickerVisible:function(e){this.readonly||this.pickerDisabled||(e?(this.showPicker(),this.valueOnOpen=Array.isArray(this.value)?[].concat(this.value):this.value):(this.hidePicker(),this.emitChange(this.value),this.userInput=null,this.validateEvent&&this.dispatch("ElFormItem","el.form.blur"),this.$emit("blur",this),this.blur()))},parsedValue:{immediate:!0,handler:function(e){this.picker&&(this.picker.value=e)}},defaultValue:function(e){this.picker&&(this.picker.defaultValue=e)},value:function(e,t){Dn(e,t)||this.pickerVisible||!this.validateEvent||this.dispatch("ElFormItem","el.form.change",e)}},computed:{ranged:function(){return this.type.indexOf("range")>-1},reference:function(){var e=this.$refs.reference;return e.$el||e},refInput:function(){return this.reference?[].slice.call(this.reference.querySelectorAll("input")):[]},valueIsEmpty:function(){var e=this.value;if(Array.isArray(e)){for(var t=0,i=e.length;t0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.userInput=null,e.pickerVisible=e.picker.visible=i,e.emitInput(t),e.picker.resetView&&e.picker.resetView()}),this.picker.$on("select-range",function(t,i,n){0!==e.refInput.length&&(n&&"min"!==n?"max"===n&&(e.refInput[1].setSelectionRange(t,i),e.refInput[1].focus()):(e.refInput[0].setSelectionRange(t,i),e.refInput[0].focus()))})},unmountPicker:function(){this.picker&&(this.picker.$destroy(),this.picker.$off(),"function"==typeof this.unwatchPickerOptions&&this.unwatchPickerOptions(),this.picker.$el.parentNode.removeChild(this.picker.$el))},emitChange:function(e){Dn(e,this.valueOnOpen)||(this.$emit("change",e),this.valueOnOpen=e,this.validateEvent&&this.dispatch("ElFormItem","el.form.change",e))},emitInput:function(e){var t=this.formatToValue(e);Dn(this.value,t)||this.$emit("input",t)},isValidValue:function(e){return this.picker||this.mountPicker(),!this.picker.isValidValue||e&&this.picker.isValidValue(e)}}},pn,[],!1,null,null,null);En.options.__file="packages/date-picker/src/picker.vue";var Tn=En.exports,Mn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-enter":e.handleEnter,"after-leave":e.handleLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-picker__time-header"},[i("span",{staticClass:"el-date-picker__editor-wrap"},[i("el-input",{attrs:{placeholder:e.t("el.datepicker.selectDate"),value:e.visibleDate,size:"small"},on:{input:function(t){return e.userInputDate=t},change:e.handleVisibleDateChange}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleTimePickClose,expression:"handleTimePickClose"}],staticClass:"el-date-picker__editor-wrap"},[i("el-input",{ref:"input",attrs:{placeholder:e.t("el.datepicker.selectTime"),value:e.visibleTime,size:"small"},on:{focus:function(t){e.timePickerVisible=!0},input:function(t){return e.userInputTime=t},change:e.handleVisibleTimeChange}}),i("time-picker",{ref:"timepicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.timePickerVisible},on:{pick:e.handleTimePick,mounted:e.proxyTimePickerDataProperties}})],1)]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:"time"!==e.currentView,expression:"currentView !== 'time'"}],staticClass:"el-date-picker__header",class:{"el-date-picker__header--bordered":"year"===e.currentView||"month"===e.currentView}},[i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevYear")},on:{click:e.prevYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevMonth")},on:{click:e.prevMonth}}),i("span",{staticClass:"el-date-picker__header-label",attrs:{role:"button"},on:{click:e.showYearPicker}},[e._v(e._s(e.yearLabel))]),i("span",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-date-picker__header-label",class:{active:"month"===e.currentView},attrs:{role:"button"},on:{click:e.showMonthPicker}},[e._v(e._s(e.t("el.datepicker.month"+(e.month+1))))]),i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextYear")},on:{click:e.nextYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextMonth")},on:{click:e.nextMonth}})]),i("div",{staticClass:"el-picker-panel__content"},[i("date-table",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],attrs:{"selection-mode":e.selectionMode,"first-day-of-week":e.firstDayOfWeek,value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleDatePick}}),i("year-table",{directives:[{name:"show",rawName:"v-show",value:"year"===e.currentView,expression:"currentView === 'year'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleYearPick}}),i("month-table",{directives:[{name:"show",rawName:"v-show",value:"month"===e.currentView,expression:"currentView === 'month'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleMonthPick}})],1)])],2),i("div",{directives:[{name:"show",rawName:"v-show",value:e.footerVisible&&"date"===e.currentView,expression:"footerVisible && currentView === 'date'"}],staticClass:"el-picker-panel__footer"},[i("el-button",{directives:[{name:"show",rawName:"v-show",value:"dates"!==e.selectionMode,expression:"selectionMode !== 'dates'"}],staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.changeToNow}},[e._v("\n "+e._s(e.t("el.datepicker.now"))+"\n ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini"},on:{click:e.confirm}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1)])])};Mn._withStripped=!0;var Pn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-panel__content",class:{"has-seconds":e.showSeconds}},[i("time-spinner",{ref:"spinner",attrs:{"arrow-control":e.useArrow,"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,date:e.date},on:{change:e.handleChange,"select-range":e.setSelectionRange}})],1),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:e.handleCancel}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn",class:{confirm:!e.disabled},attrs:{type:"button"},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};Pn._withStripped=!0;var In=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-time-spinner",class:{"has-seconds":e.showSeconds}},[e.arrowControl?e._e():[i("el-scrollbar",{ref:"hours",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("hours")},mousemove:function(t){e.adjustCurrentSpinner("hours")}}},e._l(e.hoursList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.hours,disabled:t},on:{click:function(i){e.handleClick("hours",{value:n,disabled:t})}}},[e._v(e._s(("0"+(e.amPmMode?n%12||12:n)).slice(-2))+e._s(e.amPm(n)))])}),0),i("el-scrollbar",{ref:"minutes",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("minutes")},mousemove:function(t){e.adjustCurrentSpinner("minutes")}}},e._l(e.minutesList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.minutes,disabled:!t},on:{click:function(t){e.handleClick("minutes",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])}),0),i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.showSeconds,expression:"showSeconds"}],ref:"seconds",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("seconds")},mousemove:function(t){e.adjustCurrentSpinner("seconds")}}},e._l(60,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.seconds},on:{click:function(t){e.handleClick("seconds",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])}),0)],e.arrowControl?[i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("hours")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"hours",staticClass:"el-time-spinner__list"},e._l(e.arrowHourList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.hours,disabled:e.hoursList[t]}},[e._v(e._s(void 0===t?"":("0"+(e.amPmMode?t%12||12:t)).slice(-2)+e.amPm(t)))])}),0)]),i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("minutes")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"minutes",staticClass:"el-time-spinner__list"},e._l(e.arrowMinuteList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.minutes}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])}),0)]),e.showSeconds?i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("seconds")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"seconds",staticClass:"el-time-spinner__list"},e._l(e.arrowSecondList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.seconds}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])}),0)]):e._e()]:e._e()],2)};In._withStripped=!0;var Nn=s({components:{ElScrollbar:L.a},directives:{repeatClick:Ke},props:{date:{},defaultValue:{},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:""}},computed:{hours:function(){return this.date.getHours()},minutes:function(){return this.date.getMinutes()},seconds:function(){return this.date.getSeconds()},hoursList:function(){return Object(fn.getRangeHours)(this.selectableRange)},minutesList:function(){return Object(fn.getRangeMinutes)(this.selectableRange,this.hours)},arrowHourList:function(){var e=this.hours;return[e>0?e-1:void 0,e,e<23?e+1:void 0]},arrowMinuteList:function(){var e=this.minutes;return[e>0?e-1:void 0,e,e<59?e+1:void 0]},arrowSecondList:function(){var e=this.seconds;return[e>0?e-1:void 0,e,e<59?e+1:void 0]}},data:function(){return{selectableRange:[],currentScrollbar:null}},mounted:function(){var e=this;this.$nextTick(function(){!e.arrowControl&&e.bindScrollEvent()})},methods:{increase:function(){this.scrollDown(1)},decrease:function(){this.scrollDown(-1)},modifyDateField:function(e,t){switch(e){case"hours":this.$emit("change",Object(fn.modifyTime)(this.date,t,this.minutes,this.seconds));break;case"minutes":this.$emit("change",Object(fn.modifyTime)(this.date,this.hours,t,this.seconds));break;case"seconds":this.$emit("change",Object(fn.modifyTime)(this.date,this.hours,this.minutes,t))}},handleClick:function(e,t){var i=t.value;t.disabled||(this.modifyDateField(e,i),this.emitSelectRange(e),this.adjustSpinner(e,i))},emitSelectRange:function(e){"hours"===e?this.$emit("select-range",0,2):"minutes"===e?this.$emit("select-range",3,5):"seconds"===e&&this.$emit("select-range",6,8),this.currentScrollbar=e},bindScrollEvent:function(){var e=this,t=function(t){e.$refs[t].wrap.onscroll=function(i){e.handleScroll(t,i)}};t("hours"),t("minutes"),t("seconds")},handleScroll:function(e){var t=Math.min(Math.floor((this.$refs[e].wrap.scrollTop-(.5*this.scrollBarHeight(e)-10)/this.typeItemHeight(e)+3)/this.typeItemHeight(e)),"hours"===e?23:59);this.modifyDateField(e,t)},adjustSpinners:function(){this.adjustSpinner("hours",this.hours),this.adjustSpinner("minutes",this.minutes),this.adjustSpinner("seconds",this.seconds)},adjustCurrentSpinner:function(e){this.adjustSpinner(e,this[e])},adjustSpinner:function(e,t){if(!this.arrowControl){var i=this.$refs[e].wrap;i&&(i.scrollTop=Math.max(0,t*this.typeItemHeight(e)))}},scrollDown:function(e){this.currentScrollbar||this.emitSelectRange("hours");var t=this.currentScrollbar,i=this.hoursList,n=this[t];if("hours"===this.currentScrollbar){var s=Math.abs(e);e=e>0?1:-1;for(var r=i.length;r--&&s;)i[n=(n+e+i.length)%i.length]||s--;if(i[n])return}else n=(n+e+60)%60;this.modifyDateField(t,n),this.adjustSpinner(t,n)},amPm:function(e){if(!("a"===this.amPmMode.toLowerCase()))return"";var t="A"===this.amPmMode,i=e<12?" am":" pm";return t&&(i=i.toUpperCase()),i},typeItemHeight:function(e){return this.$refs[e].$el.querySelector("li").offsetHeight},scrollBarHeight:function(e){return this.$refs[e].$el.offsetHeight}}},In,[],!1,null,null,null);Nn.options.__file="packages/date-picker/src/basic/time-spinner.vue";var jn=Nn.exports,Fn=s({mixins:[f.a],components:{TimeSpinner:jn},props:{visible:Boolean,timeArrowControl:Boolean},watch:{visible:function(e){var t=this;e?(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.spinner.emitSelectRange("hours")})):this.needInitAdjust=!0},value:function(e){var t=this,i=void 0;e instanceof Date?i=Object(fn.limitTimeRange)(e,this.selectableRange,this.format):e||(i=this.defaultValue?new Date(this.defaultValue):new Date),this.date=i,this.visible&&this.needInitAdjust&&(this.$nextTick(function(e){return t.adjustSpinners()}),this.needInitAdjust=!1)},selectableRange:function(e){this.$refs.spinner.selectableRange=e},defaultValue:function(e){Object(fn.isDate)(this.value)||(this.date=e?new Date(e):new Date)}},data:function(){return{popperClass:"",format:"HH:mm:ss",value:"",defaultValue:null,date:new Date,oldValue:new Date,selectableRange:[],selectionRange:[0,2],disabled:!1,arrowControl:!1,needInitAdjust:!0}},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},useArrow:function(){return this.arrowControl||this.timeArrowControl||!1},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},methods:{handleCancel:function(){this.$emit("pick",this.oldValue,!1)},handleChange:function(e){this.visible&&(this.date=Object(fn.clearMilliseconds)(e),this.isValidValue(this.date)&&this.$emit("pick",this.date,!0))},setSelectionRange:function(e,t){this.$emit("select-range",e,t),this.selectionRange=[e,t]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments[1];if(!t){var i=Object(fn.clearMilliseconds)(Object(fn.limitTimeRange)(this.date,this.selectableRange,this.format));this.$emit("pick",i,e,t)}},handleKeydown:function(e){var t=e.keyCode,i={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var n=i[t];return this.changeSelectionRange(n),void e.preventDefault()}if(38===t||40===t){var s=i[t];return this.$refs.spinner.scrollDown(s),void e.preventDefault()}},isValidValue:function(e){return Object(fn.timeWithinRange)(e,this.selectableRange,this.format)},adjustSpinners:function(){return this.$refs.spinner.adjustSpinners()},changeSelectionRange:function(e){var t=[0,3].concat(this.showSeconds?[6]:[]),i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length;this.$refs.spinner.emitSelectRange(i[n])}},mounted:function(){var e=this;this.$nextTick(function(){return e.handleConfirm(!0,!0)}),this.$emit("mounted")}},Pn,[],!1,null,null,null);Fn.options.__file="packages/date-picker/src/panel/time.vue";var Ln=Fn.exports,An=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-year-table",on:{click:e.handleYearTableClick}},[i("tbody",[i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+0)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+1)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+1))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+2)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+2))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+3)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+3))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+4)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+4))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+5)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+5))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+6)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+6))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+7)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+7))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+8)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+8))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+9)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+9))])]),i("td"),i("td")])])])};An._withStripped=!0;var Vn=s({props:{disabledDate:{},value:{},defaultValue:{validator:function(e){return null===e||e instanceof Date&&Object(fn.isDate)(e)}},date:{}},computed:{startYear:function(){return 10*Math.floor(this.date.getFullYear()/10)}},methods:{getCellStyle:function(e){var t={},i=new Date;return t.disabled="function"==typeof this.disabledDate&&function(e){var t=Object(fn.getDayCountOfYear)(e),i=new Date(e,0,1);return Object(fn.range)(t).map(function(e){return Object(fn.nextDate)(i,e)})}(e).every(this.disabledDate),t.current=Object(m.arrayFindIndex)(Object(m.coerceTruthyValueToArray)(this.value),function(t){return t.getFullYear()===e})>=0,t.today=i.getFullYear()===e,t.default=this.defaultValue&&this.defaultValue.getFullYear()===e,t},handleYearTableClick:function(e){var t=e.target;if("A"===t.tagName){if(Object(fe.hasClass)(t.parentNode,"disabled"))return;var i=t.textContent||t.innerText;this.$emit("pick",Number(i))}}}},An,[],!1,null,null,null);Vn.options.__file="packages/date-picker/src/basic/year-table.vue";var zn=Vn.exports,Bn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-month-table",on:{click:e.handleMonthTableClick,mousemove:e.handleMouseMove}},[i("tbody",e._l(e.rows,function(t,n){return i("tr",{key:n},e._l(t,function(t,n){return i("td",{key:n,class:e.getCellStyle(t)},[i("div",[i("a",{staticClass:"cell"},[e._v(e._s(e.t("el.datepicker.months."+e.months[t.text])))])])])}),0)}),0)])};Bn._withStripped=!0;var Rn=function(e){return new Date(e.getFullYear(),e.getMonth())},Hn=function(e){return"number"==typeof e||"string"==typeof e?Rn(new Date(e)).getTime():e instanceof Date?Rn(e).getTime():NaN},Wn=s({props:{disabledDate:{},value:{},selectionMode:{default:"month"},minDate:{},maxDate:{},defaultValue:{validator:function(e){return null===e||Object(fn.isDate)(e)||Array.isArray(e)&&e.every(fn.isDate)}},date:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},mixins:[f.a],watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Hn(e)!==Hn(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Hn(e)!==Hn(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{months:["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],tableRows:[[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.date.getFullYear()===i.getFullYear()&&Number(e.text)===i.getMonth()},getCellStyle:function(e){var t=this,i={},n=this.date.getFullYear(),s=new Date,r=e.text,a=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[];return i.disabled="function"==typeof this.disabledDate&&function(e,t){var i=Object(fn.getDayCountOfMonth)(e,t),n=new Date(e,t,1);return Object(fn.range)(i).map(function(e){return Object(fn.nextDate)(n,e)})}(n,r).every(this.disabledDate),i.current=Object(m.arrayFindIndex)(Object(m.coerceTruthyValueToArray)(this.value),function(e){return e.getFullYear()===n&&e.getMonth()===r})>=0,i.today=s.getFullYear()===n&&s.getMonth()===r,i.default=a.some(function(i){return t.cellMatchesDate(e,i)}),e.inRange&&(i["in-range"]=!0,e.start&&(i["start-date"]=!0),e.end&&(i["end-date"]=!0)),i},getMonthOfCell:function(e){var t=this.date.getFullYear();return new Date(t,e,1)},markRange:function(e,t){e=Hn(e),t=Hn(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.rows,s=0,r=n.length;s=e&&h<=t,c.start=e&&h===e,c.end=t&&h===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getMonthOfCell(4*i+n)}}))}}},handleMonthTableClick:function(e){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName&&!Object(fe.hasClass)(t,"disabled")){var i=t.cellIndex,n=4*t.parentNode.rowIndex+i,s=this.getMonthOfCell(n);"range"===this.selectionMode?this.rangeState.selecting?(s>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:s}):this.$emit("pick",{minDate:s,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:s,maxDate:null}),this.rangeState.selecting=!0):this.$emit("pick",n)}}},computed:{rows:function(){for(var e=this,t=this.tableRows,i=this.disabledDate,n=[],s=Hn(new Date),r=0;r<3;r++)for(var a=t[r],o=function(t){var o=a[t];o||(o={row:r,column:t,type:"normal",inRange:!1,start:!1,end:!1}),o.type="normal";var l=4*r+t,c=new Date(e.date.getFullYear(),l).getTime();o.inRange=c>=Hn(e.minDate)&&c<=Hn(e.maxDate),o.start=e.minDate&&c===Hn(e.minDate),o.end=e.maxDate&&c===Hn(e.maxDate),c===s&&(o.type="today"),o.text=l;var u=new Date(c);o.disabled="function"==typeof i&&i(u),o.selected=Object(m.arrayFind)(n,function(e){return e.getTime()===u.getTime()}),e.$set(a,t,o)},l=0;l<4;l++)o(l);return t}}},Bn,[],!1,null,null,null);Wn.options.__file="packages/date-picker/src/basic/month-table.vue";var qn=Wn.exports,Kn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-date-table",class:{"is-week-mode":"week"===e.selectionMode},attrs:{cellspacing:"0",cellpadding:"0"},on:{click:e.handleClick,mousemove:e.handleMouseMove}},[i("tbody",[i("tr",[e.showWeekNumber?i("th",[e._v(e._s(e.t("el.datepicker.week")))]):e._e(),e._l(e.WEEKS,function(t,n){return i("th",{key:n},[e._v(e._s(e.t("el.datepicker.weeks."+t)))])})],2),e._l(e.rows,function(t,n){return i("tr",{key:n,staticClass:"el-date-table__row",class:{current:e.isWeekActive(t[1])}},e._l(t,function(t,n){return i("td",{key:n,class:e.getCellClasses(t)},[i("div",[i("span",[e._v("\n "+e._s(t.text)+"\n ")])])])}),0)})],2)])};Kn._withStripped=!0;var Yn=["sun","mon","tue","wed","thu","fri","sat"],Un=function(e){return"number"==typeof e||"string"==typeof e?Object(fn.clearTime)(new Date(e)).getTime():e instanceof Date?Object(fn.clearTime)(e).getTime():NaN},Gn=s({mixins:[f.a],props:{firstDayOfWeek:{default:7,type:Number,validator:function(e){return e>=1&&e<=7}},value:{},defaultValue:{validator:function(e){return null===e||Object(fn.isDate)(e)||Array.isArray(e)&&e.every(fn.isDate)}},date:{},selectionMode:{default:"day"},showWeekNumber:{type:Boolean,default:!1},disabledDate:{},minDate:{},maxDate:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},computed:{offsetDay:function(){var e=this.firstDayOfWeek;return e>3?7-e:-e},WEEKS:function(){var e=this.firstDayOfWeek;return Yn.concat(Yn).slice(e,e+7)},year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},startDate:function(){return Object(fn.getStartDateOfMonth)(this.year,this.month)},rows:function(){var e=this,t=new Date(this.year,this.month,1),i=Object(fn.getFirstDayOfMonth)(t),n=Object(fn.getDayCountOfMonth)(t.getFullYear(),t.getMonth()),s=Object(fn.getDayCountOfMonth)(t.getFullYear(),0===t.getMonth()?11:t.getMonth()-1);i=0===i?7:i;for(var r=this.offsetDay,a=this.tableRows,o=1,l=this.startDate,c=this.disabledDate,u="dates"===this.selectionMode?Object(m.coerceTruthyValueToArray)(this.value):[],h=Un(new Date),d=0;d<6;d++){var p=a[d];this.showWeekNumber&&(p[0]||(p[0]={type:"week",text:Object(fn.getWeekNumber)(Object(fn.nextDate)(l,7*d+1))}));for(var f=function(t){var a=p[e.showWeekNumber?t+1:t];a||(a={row:d,column:t,type:"normal",inRange:!1,start:!1,end:!1}),a.type="normal";var f=7*d+t,v=Object(fn.nextDate)(l,f-r).getTime();if(a.inRange=v>=Un(e.minDate)&&v<=Un(e.maxDate),a.start=e.minDate&&v===Un(e.minDate),a.end=e.maxDate&&v===Un(e.maxDate),v===h&&(a.type="today"),d>=0&&d<=1){var g=i+r<0?7+i+r:i+r;t+7*d>=g?a.text=o++:(a.text=s-(g-t%7)+1+7*d,a.type="prev-month")}else o<=n?a.text=o++:(a.text=o++-n,a.type="next-month");var b=new Date(v);a.disabled="function"==typeof c&&c(b),a.selected=Object(m.arrayFind)(u,function(e){return e.getTime()===b.getTime()}),e.$set(p,e.showWeekNumber?t+1:t,a)},v=0;v<7;v++)f(v);if("week"===this.selectionMode){var g=this.showWeekNumber?1:0,b=this.showWeekNumber?7:6,y=this.isWeekActive(p[g+1]);p[g].inRange=y,p[g].start=y,p[b].inRange=y,p[b].end=y}}return a}},watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Un(e)!==Un(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Un(e)!==Un(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{tableRows:[[],[],[],[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.year===i.getFullYear()&&this.month===i.getMonth()&&Number(e.text)===i.getDate()},getCellClasses:function(e){var t=this,i=this.selectionMode,n=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[],s=[];return"normal"!==e.type&&"today"!==e.type||e.disabled?s.push(e.type):(s.push("available"),"today"===e.type&&s.push("today")),"normal"===e.type&&n.some(function(i){return t.cellMatchesDate(e,i)})&&s.push("default"),"day"!==i||"normal"!==e.type&&"today"!==e.type||!this.cellMatchesDate(e,this.value)||s.push("current"),!e.inRange||"normal"!==e.type&&"today"!==e.type&&"week"!==this.selectionMode||(s.push("in-range"),e.start&&s.push("start-date"),e.end&&s.push("end-date")),e.disabled&&s.push("disabled"),e.selected&&s.push("selected"),s.join(" ")},getDateOfCell:function(e,t){var i=7*e+(t-(this.showWeekNumber?1:0))-this.offsetDay;return Object(fn.nextDate)(this.startDate,i)},isWeekActive:function(e){if("week"!==this.selectionMode)return!1;var t=new Date(this.year,this.month,1),i=t.getFullYear(),n=t.getMonth();if("prev-month"===e.type&&(t.setMonth(0===n?11:n-1),t.setFullYear(0===n?i-1:i)),"next-month"===e.type&&(t.setMonth(11===n?0:n+1),t.setFullYear(11===n?i+1:i)),t.setDate(parseInt(e.text,10)),Object(fn.isDate)(this.value)){var s=(this.value.getDay()-this.firstDayOfWeek+7)%7-1;return Object(fn.prevDate)(this.value,s).getTime()===t.getTime()}return!1},markRange:function(e,t){e=Un(e),t=Un(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.startDate,s=this.rows,r=0,a=s.length;r=e&&d<=t,u.start=e&&d===e,u.end=t&&d===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getDateOfCell(i,n)}}))}}},handleClick:function(e){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n="week"===this.selectionMode?1:t.cellIndex,s=this.rows[i][n];if(!s.disabled&&"week"!==s.type){var r=this.getDateOfCell(i,n);if("range"===this.selectionMode)this.rangeState.selecting?(r>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:r}):this.$emit("pick",{minDate:r,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:r,maxDate:null}),this.rangeState.selecting=!0);else if("day"===this.selectionMode)this.$emit("pick",r);else if("week"===this.selectionMode){var a=Object(fn.getWeekNumber)(r),o=r.getFullYear()+"w"+a;this.$emit("pick",{year:r.getFullYear(),week:a,value:o,date:r})}else if("dates"===this.selectionMode){var l=this.value||[],c=s.selected?function(e,t){var i="function"==typeof t?Object(m.arrayFindIndex)(e,t):e.indexOf(t);return i>=0?[].concat(e.slice(0,i),e.slice(i+1)):e}(l,function(e){return e.getTime()===r.getTime()}):[].concat(l,[r]);this.$emit("pick",c)}}}}}},Kn,[],!1,null,null,null);Gn.options.__file="packages/date-picker/src/basic/date-table.vue";var Xn=Gn.exports,Qn=s({mixins:[f.a],directives:{Clickoutside:P.a},watch:{showTime:function(e){var t=this;e&&this.$nextTick(function(e){var i=t.$refs.input.$el;i&&(t.pickerWidth=i.getBoundingClientRect().width+10)})},value:function(e){"dates"===this.selectionMode&&this.value||(Object(fn.isDate)(e)?this.date=new Date(e):this.date=this.getDefaultValue())},defaultValue:function(e){Object(fn.isDate)(this.value)||(this.date=e?new Date(e):new Date)},timePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){return t.$refs.timepicker.adjustSpinners()})},selectionMode:function(e){"month"===e?"year"===this.currentView&&"month"===this.currentView||(this.currentView="month"):"dates"===e&&(this.currentView="date")}},methods:{proxyTimePickerDataProperties:function(){var e=this,t=function(t){e.$refs.timepicker.value=t},i=function(t){e.$refs.timepicker.date=t},n=function(t){e.$refs.timepicker.selectableRange=t};this.$watch("value",t),this.$watch("date",i),this.$watch("selectableRange",n),function(t){e.$refs.timepicker.format=t}(this.timeFormat),t(this.value),i(this.date),n(this.selectableRange)},handleClear:function(){this.date=this.getDefaultValue(),this.$emit("pick",null)},emit:function(e){for(var t=this,i=arguments.length,n=Array(i>1?i-1:0),s=1;s0)||Object(fn.timeWithinRange)(e,this.selectableRange,this.format||"HH:mm:ss")}},components:{TimePicker:Ln,YearTable:zn,MonthTable:qn,DateTable:Xn,ElInput:d.a,ElButton:K.a},data:function(){return{popperClass:"",date:new Date,value:"",defaultValue:null,defaultTime:null,showTime:!1,selectionMode:"day",shortcuts:"",visible:!1,currentView:"date",disabledDate:"",selectableRange:[],firstDayOfWeek:7,showWeekNumber:!1,timePickerVisible:!1,format:"",arrowControl:!1,userInputDate:null,userInputTime:null}},computed:{year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},week:function(){return Object(fn.getWeekNumber)(this.date)},monthDate:function(){return this.date.getDate()},footerVisible:function(){return this.showTime||"dates"===this.selectionMode},visibleTime:function(){return null!==this.userInputTime?this.userInputTime:Object(fn.formatDate)(this.value||this.defaultValue,this.timeFormat)},visibleDate:function(){return null!==this.userInputDate?this.userInputDate:Object(fn.formatDate)(this.value||this.defaultValue,this.dateFormat)},yearLabel:function(){var e=this.t("el.datepicker.year");if("year"===this.currentView){var t=10*Math.floor(this.year/10);return e?t+" "+e+" - "+(t+9)+" "+e:t+" - "+(t+9)}return this.year+" "+e},timeFormat:function(){return this.format?Object(fn.extractTimeFormat)(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(fn.extractDateFormat)(this.format):"yyyy-MM-dd"}}},Mn,[],!1,null,null,null);Qn.options.__file="packages/date-picker/src/panel/date.vue";var Jn=Qn.exports,Zn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-range-picker__time-header"},[i("span",{staticClass:"el-date-range-picker__editors-wrap"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{ref:"minInput",staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startDate"),value:e.minVisibleDate},on:{input:function(t){return e.handleDateInput(t,"min")},change:function(t){return e.handleDateChange(t,"min")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMinTimeClose,expression:"handleMinTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startTime"),value:e.minVisibleTime},on:{focus:function(t){e.minTimePickerVisible=!0},input:function(t){return e.handleTimeInput(t,"min")},change:function(t){return e.handleTimeChange(t,"min")}}}),i("time-picker",{ref:"minTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.minTimePickerVisible},on:{pick:e.handleMinTimePick,mounted:function(t){e.$refs.minTimePicker.format=e.timeFormat}}})],1)]),i("span",{staticClass:"el-icon-arrow-right"}),i("span",{staticClass:"el-date-range-picker__editors-wrap is-right"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endDate"),value:e.maxVisibleDate,readonly:!e.minDate},on:{input:function(t){return e.handleDateInput(t,"max")},change:function(t){return e.handleDateChange(t,"max")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMaxTimeClose,expression:"handleMaxTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endTime"),value:e.maxVisibleTime,readonly:!e.minDate},on:{focus:function(t){e.minDate&&(e.maxTimePickerVisible=!0)},input:function(t){return e.handleTimeInput(t,"max")},change:function(t){return e.handleTimeChange(t,"max")}}}),i("time-picker",{ref:"maxTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.maxTimePickerVisible},on:{pick:e.handleMaxTimePick,mounted:function(t){e.$refs.maxTimePicker.format=e.timeFormat}}})],1)])]):e._e(),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevMonth}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.leftNextMonth}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.rightPrevMonth}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",attrs:{type:"button"},on:{click:e.rightNextMonth}}),i("div",[e._v(e._s(e.rightLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2),e.showTime?i("div",{staticClass:"el-picker-panel__footer"},[i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.handleClear}},[e._v("\n "+e._s(e.t("el.datepicker.clear"))+"\n ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm(!1)}}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1):e._e()])])};Zn._withStripped=!0;var es=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(fn.nextDate)(new Date(e),1)]:[new Date,Object(fn.nextDate)(new Date,1)]},ts=s({mixins:[f.a],directives:{Clickoutside:P.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.leftDate.getMonth()+1))},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.rightDate.getMonth()+1))},leftYear:function(){return this.leftDate.getFullYear()},leftMonth:function(){return this.leftDate.getMonth()},leftMonthDate:function(){return this.leftDate.getDate()},rightYear:function(){return this.rightDate.getFullYear()},rightMonth:function(){return this.rightDate.getMonth()},rightMonthDate:function(){return this.rightDate.getDate()},minVisibleDate:function(){return null!==this.dateUserInput.min?this.dateUserInput.min:this.minDate?Object(fn.formatDate)(this.minDate,this.dateFormat):""},maxVisibleDate:function(){return null!==this.dateUserInput.max?this.dateUserInput.max:this.maxDate||this.minDate?Object(fn.formatDate)(this.maxDate||this.minDate,this.dateFormat):""},minVisibleTime:function(){return null!==this.timeUserInput.min?this.timeUserInput.min:this.minDate?Object(fn.formatDate)(this.minDate,this.timeFormat):""},maxVisibleTime:function(){return null!==this.timeUserInput.max?this.timeUserInput.max:this.maxDate||this.minDate?Object(fn.formatDate)(this.maxDate||this.minDate,this.timeFormat):""},timeFormat:function(){return this.format?Object(fn.extractTimeFormat)(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(fn.extractDateFormat)(this.format):"yyyy-MM-dd"},enableMonthArrow:function(){var e=(this.leftMonth+1)%12,t=this.leftMonth+1>=12?1:0;return this.unlinkPanels&&new Date(this.leftYear+t,e)=12}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(fn.nextMonth)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},showTime:!1,shortcuts:"",visible:"",disabledDate:"",firstDayOfWeek:7,minTimePickerVisible:!1,maxTimePickerVisible:!1,format:"",arrowControl:!1,unlinkPanels:!1,dateUserInput:{min:null,max:null},timeUserInput:{min:null,max:null}}},watch:{minDate:function(e){var t=this;this.dateUserInput.min=null,this.timeUserInput.min=null,this.$nextTick(function(){if(t.$refs.maxTimePicker&&t.maxDate&&t.maxDatethis.maxDate&&(this.maxDate=this.minDate)):(this.maxDate=Object(fn.modifyDate)(this.maxDate,i.getFullYear(),i.getMonth(),i.getDate()),this.maxDatethis.maxDate&&(this.maxDate=this.minDate),this.$refs.minTimePicker.value=this.minDate,this.minTimePickerVisible=!1):(this.maxDate=Object(fn.modifyTime)(this.maxDate,i.getHours(),i.getMinutes(),i.getSeconds()),this.maxDate1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],s=Object(fn.modifyWithTimeString)(e.minDate,n[0]),r=Object(fn.modifyWithTimeString)(e.maxDate,n[1]);this.maxDate===r&&this.minDate===s||(this.onPick&&this.onPick(e),this.maxDate=r,this.minDate=s,setTimeout(function(){t.maxDate=r,t.minDate=s},10),i&&!this.showTime&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleMinTimePick:function(e,t,i){this.minDate=this.minDate||new Date,e&&(this.minDate=Object(fn.modifyTime)(this.minDate,e.getHours(),e.getMinutes(),e.getSeconds())),i||(this.minTimePickerVisible=t),(!this.maxDate||this.maxDate&&this.maxDate.getTime()this.maxDate.getTime()&&(this.minDate=new Date(this.maxDate))},handleMaxTimeClose:function(){this.maxTimePickerVisible=!1},leftPrevYear:function(){this.leftDate=Object(fn.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(fn.nextMonth)(this.leftDate))},leftPrevMonth:function(){this.leftDate=Object(fn.prevMonth)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(fn.nextMonth)(this.leftDate))},rightNextYear:function(){this.unlinkPanels?this.rightDate=Object(fn.nextYear)(this.rightDate):(this.leftDate=Object(fn.nextYear)(this.leftDate),this.rightDate=Object(fn.nextMonth)(this.leftDate))},rightNextMonth:function(){this.unlinkPanels?this.rightDate=Object(fn.nextMonth)(this.rightDate):(this.leftDate=Object(fn.nextMonth)(this.leftDate),this.rightDate=Object(fn.nextMonth)(this.leftDate))},leftNextYear:function(){this.leftDate=Object(fn.nextYear)(this.leftDate)},leftNextMonth:function(){this.leftDate=Object(fn.nextMonth)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(fn.prevYear)(this.rightDate)},rightPrevMonth:function(){this.rightDate=Object(fn.prevMonth)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(fn.isDate)(e[0])&&Object(fn.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{TimePicker:Ln,DateTable:Xn,ElInput:d.a,ElButton:K.a}},Zn,[],!1,null,null,null);ts.options.__file="packages/date-picker/src/panel/date-range.vue";var is=ts.exports,ns=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("div",[e._v(e._s(e.rightLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2)])])};ns._withStripped=!0;var ss=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(fn.nextMonth)(new Date(e))]:[new Date,Object(fn.nextMonth)(new Date)]},rs=s({mixins:[f.a],directives:{Clickoutside:P.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")},leftYear:function(){return this.leftDate.getFullYear()},rightYear:function(){return this.rightDate.getFullYear()===this.leftDate.getFullYear()?this.leftDate.getFullYear()+1:this.rightDate.getFullYear()},enableYearArrow:function(){return this.unlinkPanels&&this.rightYear>this.leftYear+1}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(fn.nextYear)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},shortcuts:"",visible:"",disabledDate:"",format:"",arrowControl:!1,unlinkPanels:!1}},watch:{value:function(e){if(e){if(Array.isArray(e))if(this.minDate=Object(fn.isDate)(e[0])?new Date(e[0]):null,this.maxDate=Object(fn.isDate)(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),i=this.maxDate.getFullYear();this.rightDate=t===i?Object(fn.nextYear)(this.maxDate):this.maxDate}else this.rightDate=Object(fn.nextYear)(this.leftDate);else this.leftDate=ss(this.defaultValue)[0],this.rightDate=Object(fn.nextYear)(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=ss(e),i=t[0],n=t[1];this.leftDate=i,this.rightDate=e&&e[1]&&i.getFullYear()!==n.getFullYear()&&this.unlinkPanels?n:Object(fn.nextYear)(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=ss(this.defaultValue)[0],this.rightDate=Object(fn.nextYear)(this.leftDate),this.$emit("pick",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleRangePick:function(e){var t=this,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],s=Object(fn.modifyWithTimeString)(e.minDate,n[0]),r=Object(fn.modifyWithTimeString)(e.maxDate,n[1]);this.maxDate===r&&this.minDate===s||(this.onPick&&this.onPick(e),this.maxDate=r,this.minDate=s,setTimeout(function(){t.maxDate=r,t.minDate=s},10),i&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},leftPrevYear:function(){this.leftDate=Object(fn.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(fn.prevYear)(this.rightDate))},rightNextYear:function(){this.unlinkPanels||(this.leftDate=Object(fn.nextYear)(this.leftDate)),this.rightDate=Object(fn.nextYear)(this.rightDate)},leftNextYear:function(){this.leftDate=Object(fn.nextYear)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(fn.prevYear)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(fn.isDate)(e[0])&&Object(fn.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{MonthTable:qn,ElInput:d.a,ElButton:K.a}},ns,[],!1,null,null,null);rs.options.__file="packages/date-picker/src/panel/month-range.vue";var as=rs.exports,os=function(e){return"daterange"===e||"datetimerange"===e?is:"monthrange"===e?as:Jn},ls={mixins:[Tn],name:"ElDatePicker",props:{type:{type:String,default:"date"},timeArrowControl:Boolean},watch:{type:function(e){this.picker?(this.unmountPicker(),this.panel=os(e),this.mountPicker()):this.panel=os(e)}},created:function(){this.panel=os(this.type)},install:function(e){e.component(ls.name,ls)}},cs=ls,us=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],ref:"popper",staticClass:"el-picker-panel time-select el-popper",class:e.popperClass,style:{width:e.width+"px"}},[i("el-scrollbar",{attrs:{noresize:"","wrap-class":"el-picker-panel__content"}},e._l(e.items,function(t){return i("div",{key:t.value,staticClass:"time-select-item",class:{selected:e.value===t.value,disabled:t.disabled,default:t.value===e.defaultValue},attrs:{disabled:t.disabled},on:{click:function(i){e.handleClick(t)}}},[e._v(e._s(t.value))])}),0)],1)])};us._withStripped=!0;var hs=function(e){var t=(e||"").split(":");return t.length>=2?{hours:parseInt(t[0],10),minutes:parseInt(t[1],10)}:null},ds=function(e,t){var i=hs(e),n=hs(t),s=i.minutes+60*i.hours,r=n.minutes+60*n.hours;return s===r?0:s>r?1:-1},ps=function(e,t){var i=hs(e),n=hs(t),s={hours:i.hours,minutes:i.minutes};return s.minutes+=n.minutes,s.hours+=n.hours,s.hours+=Math.floor(s.minutes/60),s.minutes=s.minutes%60,function(e){return(e.hours<10?"0"+e.hours:e.hours)+":"+(e.minutes<10?"0"+e.minutes:e.minutes)}(s)},fs=s({components:{ElScrollbar:L.a},watch:{value:function(e){var t=this;e&&this.$nextTick(function(){return t.scrollToOption()})}},methods:{handleClick:function(e){e.disabled||this.$emit("pick",e.value)},handleClear:function(){this.$emit("pick",null)},scrollToOption:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:".selected",t=this.$refs.popper.querySelector(".el-picker-panel__content");Vt()(t,t.querySelector(e))},handleMenuEnter:function(){var e=this,t=-1!==this.items.map(function(e){return e.value}).indexOf(this.value),i=-1!==this.items.map(function(e){return e.value}).indexOf(this.defaultValue),n=(t?".selected":i&&".default")||".time-select-item:not(.disabled)";this.$nextTick(function(){return e.scrollToOption(n)})},scrollDown:function(e){for(var t=this.items,i=t.length,n=t.length,s=t.map(function(e){return e.value}).indexOf(this.value);n--;)if(!t[s=(s+e+i)%i].disabled)return void this.$emit("pick",t[s].value,!0)},isValidValue:function(e){return-1!==this.items.filter(function(e){return!e.disabled}).map(function(e){return e.value}).indexOf(e)},handleKeydown:function(e){var t=e.keyCode;if(38===t||40===t){var i={40:1,38:-1}[t.toString()];return this.scrollDown(i),void e.stopPropagation()}}},data:function(){return{popperClass:"",start:"09:00",end:"18:00",step:"00:30",value:"",defaultValue:"",visible:!1,minTime:"",maxTime:"",width:0}},computed:{items:function(){var e=this.start,t=this.end,i=this.step,n=[];if(e&&t&&i)for(var s=e;ds(s,t)<=0;)n.push({value:s,disabled:ds(s,this.minTime||"-1:-1")<=0||ds(s,this.maxTime||"100:100")>=0}),s=ps(s,i);return n}}},us,[],!1,null,null,null);fs.options.__file="packages/date-picker/src/panel/time-select.vue";var ms=fs.exports,vs={mixins:[Tn],name:"ElTimeSelect",componentName:"ElTimeSelect",props:{type:{type:String,default:"time-select"}},beforeCreate:function(){this.panel=ms},install:function(e){e.component(vs.name,vs)}},gs=vs,bs=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-range-picker el-picker-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-range-picker__content"},[i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.startTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"minSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.minDate},on:{change:e.handleMinChange,"select-range":e.setMinSelectionRange}})],1)]),i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.endTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"maxSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.maxDate},on:{change:e.handleMaxChange,"select-range":e.setMaxSelectionRange}})],1)])]),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:function(t){e.handleCancel()}}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn confirm",attrs:{type:"button",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};bs._withStripped=!0;var ys=Object(fn.parseDate)("00:00:00","HH:mm:ss"),xs=Object(fn.parseDate)("23:59:59","HH:mm:ss"),_s=function(e){return Object(fn.modifyDate)(xs,e.getFullYear(),e.getMonth(),e.getDate())},Cs=function(e,t){return new Date(Math.min(e.getTime()+t,_s(e).getTime()))},ws=s({mixins:[f.a],components:{TimeSpinner:jn},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},offset:function(){return this.showSeconds?11:8},spinner:function(){return this.selectionRange[0]this.maxDate.getTime()},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},data:function(){return{popperClass:"",minDate:new Date,maxDate:new Date,value:[],oldValue:[new Date,new Date],defaultValue:null,format:"HH:mm:ss",visible:!1,selectionRange:[0,2],arrowControl:!1}},watch:{value:function(e){Array.isArray(e)?(this.minDate=new Date(e[0]),this.maxDate=new Date(e[1])):Array.isArray(this.defaultValue)?(this.minDate=new Date(this.defaultValue[0]),this.maxDate=new Date(this.defaultValue[1])):this.defaultValue?(this.minDate=new Date(this.defaultValue),this.maxDate=Cs(new Date(this.defaultValue),36e5)):(this.minDate=new Date,this.maxDate=Cs(new Date,36e5))},visible:function(e){var t=this;e&&(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.minSpinner.emitSelectRange("hours")}))}},methods:{handleClear:function(){this.$emit("pick",null)},handleCancel:function(){this.$emit("pick",this.oldValue)},handleMinChange:function(e){this.minDate=Object(fn.clearMilliseconds)(e),this.handleChange()},handleMaxChange:function(e){this.maxDate=Object(fn.clearMilliseconds)(e),this.handleChange()},handleChange:function(){this.isValidValue([this.minDate,this.maxDate])&&(this.$refs.minSpinner.selectableRange=[[function(e){return Object(fn.modifyDate)(ys,e.getFullYear(),e.getMonth(),e.getDate())}(this.minDate),this.maxDate]],this.$refs.maxSpinner.selectableRange=[[this.minDate,_s(this.maxDate)]],this.$emit("pick",[this.minDate,this.maxDate],!0))},setMinSelectionRange:function(e,t){this.$emit("select-range",e,t,"min"),this.selectionRange=[e,t]},setMaxSelectionRange:function(e,t){this.$emit("select-range",e,t,"max"),this.selectionRange=[e+this.offset,t+this.offset]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$refs.minSpinner.selectableRange,i=this.$refs.maxSpinner.selectableRange;this.minDate=Object(fn.limitTimeRange)(this.minDate,t,this.format),this.maxDate=Object(fn.limitTimeRange)(this.maxDate,i,this.format),this.$emit("pick",[this.minDate,this.maxDate],e)},adjustSpinners:function(){this.$refs.minSpinner.adjustSpinners(),this.$refs.maxSpinner.adjustSpinners()},changeSelectionRange:function(e){var t=this.showSeconds?[0,3,6,11,14,17]:[0,3,8,11],i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length,s=t.length/2;n-1}},openDelay:{type:Number,default:0},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+Object(m.generateId)()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),t&&(Object(fe.addClass)(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),i.setAttribute("tabindex",0),"click"!==this.trigger&&(Object(fe.on)(t,"focusin",function(){e.handleFocus();var i=t.__vue__;i&&"function"==typeof i.focus&&i.focus()}),Object(fe.on)(i,"focusin",this.handleFocus),Object(fe.on)(t,"focusout",this.handleBlur),Object(fe.on)(i,"focusout",this.handleBlur)),Object(fe.on)(t,"keydown",this.handleKeydown),Object(fe.on)(t,"click",this.handleClick)),"click"===this.trigger?(Object(fe.on)(t,"click",this.doToggle),Object(fe.on)(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(Object(fe.on)(t,"mouseenter",this.handleMouseEnter),Object(fe.on)(i,"mouseenter",this.handleMouseEnter),Object(fe.on)(t,"mouseleave",this.handleMouseLeave),Object(fe.on)(i,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(Object(fe.on)(t,"focusin",this.doShow),Object(fe.on)(t,"focusout",this.doClose)):(Object(fe.on)(t,"mousedown",this.doShow),Object(fe.on)(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(fe.addClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(fe.removeClass)(this.referenceElm,"focusing")},handleBlur:function(){Object(fe.removeClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout(function(){e.showPopper=!0},this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this._timer=setTimeout(function(){e.showPopper=!1},200)},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&i&&!i.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){this.openDelay&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(fe.off)(e,"click",this.doToggle),Object(fe.off)(e,"mouseup",this.doClose),Object(fe.off)(e,"mousedown",this.doShow),Object(fe.off)(e,"focusin",this.doShow),Object(fe.off)(e,"focusout",this.doClose),Object(fe.off)(e,"mousedown",this.doShow),Object(fe.off)(e,"mouseup",this.doClose),Object(fe.off)(e,"mouseleave",this.handleMouseLeave),Object(fe.off)(e,"mouseenter",this.handleMouseEnter),Object(fe.off)(document,"click",this.handleDocumentClick)}},$s,[],!1,null,null,null);Os.options.__file="packages/popover/src/main.vue";var Es=Os.exports,Ts=function(e,t,i){var n=t.expression?t.value:t.arg,s=i.context.$refs[n];s&&(Array.isArray(s)?s[0].$refs.reference=e:s.$refs.reference=e)},Ms={bind:function(e,t,i){Ts(e,t,i)},inserted:function(e,t,i){Ts(e,t,i)}};di.a.directive("popover",Ms),Es.install=function(e){e.directive("popover",Ms),e.component(Es.name,Es)},Es.directive=Ms;var Ps=Es,Is={name:"ElTooltip",mixins:[j.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+Object(m.generateId)(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new di.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=T()(200,function(){return e.handleClosePopper()}))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var i=this.getFirstElement();if(!i)return null;var n=i.data=i.data||{};return n.staticClass=this.addTooltipClass(n.staticClass),i},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),Object(fe.on)(this.referenceElm,"mouseenter",this.show),Object(fe.on)(this.referenceElm,"mouseleave",this.hide),Object(fe.on)(this.referenceElm,"focus",function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()}),Object(fe.on)(this.referenceElm,"blur",this.handleBlur),Object(fe.on)(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick(function(){e.value&&e.updatePopper()})},watch:{focusing:function(e){e?Object(fe.addClass)(this.referenceElm,"focusing"):Object(fe.removeClass)(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.showPopper=!0},this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;i0){var t=(Ks=Us.shift()).options;for(var i in t)t.hasOwnProperty(i)&&(Ys[i]=t[i]);void 0===t.callback&&(Ys.callback=Gs);var n=Ys.callback;Ys.callback=function(t,i){n(t,i),e()},Object(Rs.isVNode)(Ys.message)?(Ys.$slots.default=[Ys.message],Ys.message=null):delete Ys.$slots.default,["modal","showClose","closeOnClickModal","closeOnPressEscape","closeOnHashChange"].forEach(function(e){void 0===Ys[e]&&(Ys[e]=!0)}),document.body.appendChild(Ys.$el),di.a.nextTick(function(){Ys.visible=!0})}},Qs=function e(t,i){if(!di.a.prototype.$isServer){if("string"==typeof t||Object(Rs.isVNode)(t)?(t={message:t},"string"==typeof arguments[1]&&(t.title=arguments[1])):t.callback&&!i&&(i=t.callback),"undefined"!=typeof Promise)return new Promise(function(n,s){Us.push({options:Be()({},Ws,e.defaults,t),callback:i,resolve:n,reject:s}),Xs()});Us.push({options:Be()({},Ws,e.defaults,t),callback:i}),Xs()}};Qs.setDefaults=function(e){Qs.defaults=e},Qs.alert=function(e,t,i){return"object"===(void 0===t?"undefined":Hs(t))?(i=t,t=""):void 0===t&&(t=""),Qs(Be()({title:t,message:e,$type:"alert",closeOnPressEscape:!1,closeOnClickModal:!1},i))},Qs.confirm=function(e,t,i){return"object"===(void 0===t?"undefined":Hs(t))?(i=t,t=""):void 0===t&&(t=""),Qs(Be()({title:t,message:e,$type:"confirm",showCancelButton:!0},i))},Qs.prompt=function(e,t,i){return"object"===(void 0===t?"undefined":Hs(t))?(i=t,t=""):void 0===t&&(t=""),Qs(Be()({title:t,message:e,showCancelButton:!0,showInput:!0,$type:"prompt"},i))},Qs.close=function(){Ys.doClose(),Ys.visible=!1,Us=[],Ks=null};var Js=Qs,Zs=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-breadcrumb",attrs:{"aria-label":"Breadcrumb",role:"navigation"}},[this._t("default")],2)};Zs._withStripped=!0;var er=s({name:"ElBreadcrumb",props:{separator:{type:String,default:"/"},separatorClass:{type:String,default:""}},provide:function(){return{elBreadcrumb:this}},mounted:function(){var e=this.$el.querySelectorAll(".el-breadcrumb__item");e.length&&e[e.length-1].setAttribute("aria-current","page")}},Zs,[],!1,null,null,null);er.options.__file="packages/breadcrumb/src/breadcrumb.vue";var tr=er.exports;tr.install=function(e){e.component(tr.name,tr)};var ir=tr,nr=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-breadcrumb__item"},[t("span",{ref:"link",class:["el-breadcrumb__inner",this.to?"is-link":""],attrs:{role:"link"}},[this._t("default")],2),this.separatorClass?t("i",{staticClass:"el-breadcrumb__separator",class:this.separatorClass}):t("span",{staticClass:"el-breadcrumb__separator",attrs:{role:"presentation"}},[this._v(this._s(this.separator))])])};nr._withStripped=!0;var sr=s({name:"ElBreadcrumbItem",props:{to:{},replace:Boolean},data:function(){return{separator:"",separatorClass:""}},inject:["elBreadcrumb"],mounted:function(){var e=this;this.separator=this.elBreadcrumb.separator,this.separatorClass=this.elBreadcrumb.separatorClass;var t=this.$refs.link;t.setAttribute("role","link"),t.addEventListener("click",function(t){var i=e.to,n=e.$router;i&&n&&(e.replace?n.replace(i):n.push(i))})}},nr,[],!1,null,null,null);sr.options.__file="packages/breadcrumb/src/breadcrumb-item.vue";var rr=sr.exports;rr.install=function(e){e.component(rr.name,rr)};var ar=rr,or=function(){var e=this.$createElement;return(this._self._c||e)("form",{staticClass:"el-form",class:[this.labelPosition?"el-form--label-"+this.labelPosition:"",{"el-form--inline":this.inline}]},[this._t("default")],2)};or._withStripped=!0;var lr=s({name:"ElForm",componentName:"ElForm",provide:function(){return{elForm:this}},props:{model:Object,rules:Object,labelPosition:String,labelWidth:String,labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:String,disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1}},watch:{rules:function(){this.fields.forEach(function(e){e.removeValidateEvents(),e.addValidateEvents()}),this.validateOnRuleChange&&this.validate(function(){})}},computed:{autoLabelWidth:function(){if(!this.potentialLabelWidthArr.length)return 0;var e=Math.max.apply(Math,this.potentialLabelWidthArr);return e?e+"px":""}},data:function(){return{fields:[],potentialLabelWidthArr:[]}},created:function(){var e=this;this.$on("el.form.addField",function(t){t&&e.fields.push(t)}),this.$on("el.form.removeField",function(t){t.prop&&e.fields.splice(e.fields.indexOf(t),1)})},methods:{resetFields:function(){this.model?this.fields.forEach(function(e){e.resetField()}):console.warn("[Element Warn][Form]model is required for resetFields to work.")},clearValidate:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];(e.length?"string"==typeof e?this.fields.filter(function(t){return e===t.prop}):this.fields.filter(function(t){return e.indexOf(t.prop)>-1}):this.fields).forEach(function(e){e.clearValidate()})},validate:function(e){var t=this;if(this.model){var i=void 0;"function"!=typeof e&&window.Promise&&(i=new window.Promise(function(t,i){e=function(e){e?t(e):i(e)}}));var n=!0,s=0;0===this.fields.length&&e&&e(!0);var r={};return this.fields.forEach(function(i){i.validate("",function(i,a){i&&(n=!1),r=Be()({},r,a),"function"==typeof e&&++s===t.fields.length&&e(n,r)})}),i||void 0}console.warn("[Element Warn][Form]model is required for validate to work!")},validateField:function(e,t){e=[].concat(e);var i=this.fields.filter(function(t){return-1!==e.indexOf(t.prop)});i.length?i.forEach(function(e){e.validate("",t)}):console.warn("[Element Warn]please pass correct props!")},getLabelWidthIndex:function(e){var t=this.potentialLabelWidthArr.indexOf(e);if(-1===t)throw new Error("[ElementForm]unpected width ",e);return t},registerLabelWidth:function(e,t){if(e&&t){var i=this.getLabelWidthIndex(t);this.potentialLabelWidthArr.splice(i,1,e)}else e&&this.potentialLabelWidthArr.push(e)},deregisterLabelWidth:function(e){var t=this.getLabelWidthIndex(e);this.potentialLabelWidthArr.splice(t,1)}}},or,[],!1,null,null,null);lr.options.__file="packages/form/src/form.vue";var cr=lr.exports;cr.install=function(e){e.component(cr.name,cr)};var ur=cr,hr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-form-item",class:[{"el-form-item--feedback":e.elForm&&e.elForm.statusIcon,"is-error":"error"===e.validateState,"is-validating":"validating"===e.validateState,"is-success":"success"===e.validateState,"is-required":e.isRequired||e.required,"is-no-asterisk":e.elForm&&e.elForm.hideRequiredAsterisk},e.sizeClass?"el-form-item--"+e.sizeClass:""]},[i("label-wrap",{attrs:{"is-auto-width":e.labelStyle&&"auto"===e.labelStyle.width,"update-all":"auto"===e.form.labelWidth}},[e.label||e.$slots.label?i("label",{staticClass:"el-form-item__label",style:e.labelStyle,attrs:{for:e.labelFor}},[e._t("label",[e._v(e._s(e.label+e.form.labelSuffix))])],2):e._e()]),i("div",{staticClass:"el-form-item__content",style:e.contentStyle},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-top"}},["error"===e.validateState&&e.showMessage&&e.form.showMessage?e._t("error",[i("div",{staticClass:"el-form-item__error",class:{"el-form-item__error--inline":"boolean"==typeof e.inlineMessage?e.inlineMessage:e.elForm&&e.elForm.inlineMessage||!1}},[e._v("\n "+e._s(e.validateMessage)+"\n ")])],{error:e.validateMessage}):e._e()],2)],2)],1)};hr._withStripped=!0;var dr=i(40),pr=i.n(dr),fr=s({props:{isAutoWidth:Boolean,updateAll:Boolean},inject:["elForm","elFormItem"],render:function(){var e=arguments[0],t=this.$slots.default;if(!t)return null;if(this.isAutoWidth){var i=this.elForm.autoLabelWidth,n={};if(i&&"auto"!==i){var s=parseInt(i,10)-this.computedWidth;s&&(n.marginLeft=s+"px")}return e("div",{class:"el-form-item__label-wrap",style:n},[t])}return t[0]},methods:{getLabelWidth:function(){if(this.$el&&this.$el.firstElementChild){var e=window.getComputedStyle(this.$el.firstElementChild).width;return Math.ceil(parseFloat(e))}return 0},updateLabelWidth:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"update";this.$slots.default&&this.isAutoWidth&&this.$el.firstElementChild&&("update"===e?this.computedWidth=this.getLabelWidth():"remove"===e&&this.elForm.deregisterLabelWidth(this.computedWidth))}},watch:{computedWidth:function(e,t){this.updateAll&&(this.elForm.registerLabelWidth(e,t),this.elFormItem.updateComputedLabelWidth(e))}},data:function(){return{computedWidth:0}},mounted:function(){this.updateLabelWidth("update")},updated:function(){this.updateLabelWidth("update")},beforeDestroy:function(){this.updateLabelWidth("remove")}},void 0,void 0,!1,null,null,null);fr.options.__file="packages/form/src/label-wrap.vue";var mr=fr.exports,vr=s({name:"ElFormItem",componentName:"ElFormItem",mixins:[k.a],provide:function(){return{elFormItem:this}},inject:["elForm"],props:{label:String,labelWidth:String,prop:String,required:{type:Boolean,default:void 0},rules:[Object,Array],error:String,validateStatus:String,for:String,inlineMessage:{type:[String,Boolean],default:""},showMessage:{type:Boolean,default:!0},size:String},components:{LabelWrap:mr},watch:{error:{immediate:!0,handler:function(e){this.validateMessage=e,this.validateState=e?"error":""}},validateStatus:function(e){this.validateState=e}},computed:{labelFor:function(){return this.for||this.prop},labelStyle:function(){var e={};if("top"===this.form.labelPosition)return e;var t=this.labelWidth||this.form.labelWidth;return t&&(e.width=t),e},contentStyle:function(){var e={},t=this.label;if("top"===this.form.labelPosition||this.form.inline)return e;if(!t&&!this.labelWidth&&this.isNested)return e;var i=this.labelWidth||this.form.labelWidth;return"auto"===i?"auto"===this.labelWidth?e.marginLeft=this.computedLabelWidth:"auto"===this.form.labelWidth&&(e.marginLeft=this.elForm.autoLabelWidth):e.marginLeft=i,e},form:function(){for(var e=this.$parent,t=e.$options.componentName;"ElForm"!==t;)"ElFormItem"===t&&(this.isNested=!0),t=(e=e.$parent).$options.componentName;return e},fieldValue:function(){var e=this.form.model;if(e&&this.prop){var t=this.prop;return-1!==t.indexOf(":")&&(t=t.replace(/:/,".")),Object(m.getPropByPath)(e,t,!0).v}},isRequired:function(){var e=this.getRules(),t=!1;return e&&e.length&&e.every(function(e){return!e.required||(t=!0,!1)}),t},_formSize:function(){return this.elForm.size},elFormItemSize:function(){return this.size||this._formSize},sizeClass:function(){return this.elFormItemSize||(this.$ELEMENT||{}).size}},data:function(){return{validateState:"",validateMessage:"",validateDisabled:!1,validator:{},isNested:!1,computedLabelWidth:""}},methods:{validate:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:m.noop;this.validateDisabled=!1;var n=this.getFilteredRule(e);if((!n||0===n.length)&&void 0===this.required)return i(),!0;this.validateState="validating";var s={};n&&n.length>0&&n.forEach(function(e){delete e.trigger}),s[this.prop]=n;var r=new pr.a(s),a={};a[this.prop]=this.fieldValue,r.validate(a,{firstFields:!0},function(e,n){t.validateState=e?"error":"success",t.validateMessage=e?e[0].message:"",i(t.validateMessage,n),t.elForm&&t.elForm.$emit("validate",t.prop,!e,t.validateMessage||null)})},clearValidate:function(){this.validateState="",this.validateMessage="",this.validateDisabled=!1},resetField:function(){var e=this;this.validateState="",this.validateMessage="";var t=this.form.model,i=this.fieldValue,n=this.prop;-1!==n.indexOf(":")&&(n=n.replace(/:/,"."));var s=Object(m.getPropByPath)(t,n,!0);this.validateDisabled=!0,Array.isArray(i)?s.o[s.k]=[].concat(this.initialValue):s.o[s.k]=this.initialValue,this.$nextTick(function(){e.validateDisabled=!1}),this.broadcast("ElTimeSelect","fieldReset",this.initialValue)},getRules:function(){var e=this.form.rules,t=this.rules,i=void 0!==this.required?{required:!!this.required}:[],n=Object(m.getPropByPath)(e,this.prop||"");return e=e?n.o[this.prop||""]||n.v:[],[].concat(t||e||[]).concat(i)},getFilteredRule:function(e){return this.getRules().filter(function(t){return!t.trigger||""===e||(Array.isArray(t.trigger)?t.trigger.indexOf(e)>-1:t.trigger===e)}).map(function(e){return Be()({},e)})},onFieldBlur:function(){this.validate("blur")},onFieldChange:function(){this.validateDisabled?this.validateDisabled=!1:this.validate("change")},updateComputedLabelWidth:function(e){this.computedLabelWidth=e?e+"px":""},addValidateEvents:function(){(this.getRules().length||void 0!==this.required)&&(this.$on("el.form.blur",this.onFieldBlur),this.$on("el.form.change",this.onFieldChange))},removeValidateEvents:function(){this.$off()}},mounted:function(){if(this.prop){this.dispatch("ElForm","el.form.addField",[this]);var e=this.fieldValue;Array.isArray(e)&&(e=[].concat(e)),Object.defineProperty(this,"initialValue",{value:e}),this.addValidateEvents()}},beforeDestroy:function(){this.dispatch("ElForm","el.form.removeField",[this])}},hr,[],!1,null,null,null);vr.options.__file="packages/form/src/form-item.vue";var gr=vr.exports;gr.install=function(e){e.component(gr.name,gr)};var br=gr,yr=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-tabs__active-bar",class:"is-"+this.rootTabs.tabPosition,style:this.barStyle})};yr._withStripped=!0;var xr=s({name:"TabBar",props:{tabs:Array},inject:["rootTabs"],computed:{barStyle:{get:function(){var e=this,t={},i=0,n=0,s=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height",r="width"===s?"x":"y",a=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})};this.tabs.every(function(t,r){var o=Object(m.arrayFind)(e.$parent.$refs.tabs||[],function(e){return e.id.replace("tab-","")===t.paneName});return!!o&&(t.active?(n=o["client"+a(s)],"width"===s&&e.tabs.length>1&&(n-=0===r||r===e.tabs.length-1?20:40),!1):(i+=o["client"+a(s)],!0))}),"width"===s&&0!==i&&(i+=20);var o="translate"+a(r)+"("+i+"px)";return t[s]=n+"px",t.transform=o,t.msTransform=o,t.webkitTransform=o,t}}}},yr,[],!1,null,null,null);function _r(){}xr.options.__file="packages/tabs/src/tab-bar.vue";var Cr=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})},wr=s({name:"TabNav",components:{TabBar:xr.exports},inject:["rootTabs"],props:{panes:Array,currentName:String,editable:Boolean,onTabClick:{type:Function,default:_r},onTabRemove:{type:Function,default:_r},type:String,stretch:Boolean},data:function(){return{scrollable:!1,navOffset:0,isFocus:!1,focusable:!0}},computed:{navStyle:function(){return{transform:"translate"+(-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"X":"Y")+"(-"+this.navOffset+"px)"}},sizeName:function(){return-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height"}},methods:{scrollPrev:function(){var e=this.$refs.navScroll["offset"+Cr(this.sizeName)],t=this.navOffset;if(t){var i=t>e?t-e:0;this.navOffset=i}},scrollNext:function(){var e=this.$refs.nav["offset"+Cr(this.sizeName)],t=this.$refs.navScroll["offset"+Cr(this.sizeName)],i=this.navOffset;if(!(e-i<=t)){var n=e-i>2*t?i+t:e-t;this.navOffset=n}},scrollToActiveTab:function(){if(this.scrollable){var e=this.$refs.nav,t=this.$el.querySelector(".is-active");if(t){var i=this.$refs.navScroll,n=t.getBoundingClientRect(),s=i.getBoundingClientRect(),r=e.offsetWidth-s.width,a=this.navOffset,o=a;n.lefts.right&&(o=a+n.right-s.right),o=Math.max(o,0),this.navOffset=Math.min(o,r)}}},update:function(){if(this.$refs.nav){var e=this.sizeName,t=this.$refs.nav["offset"+Cr(e)],i=this.$refs.navScroll["offset"+Cr(e)],n=this.navOffset;if(i0&&(this.navOffset=0)}},changeTab:function(e){var t=e.keyCode,i=void 0,n=void 0,s=void 0;-1!==[37,38,39,40].indexOf(t)&&(s=e.currentTarget.querySelectorAll("[role=tab]"),n=Array.prototype.indexOf.call(s,e.target),s[i=37===t||38===t?0===n?s.length-1:n-1:n0&&void 0!==arguments[0]&&arguments[0];if(this.$slots.default){var i=this.$slots.default.filter(function(e){return e.tag&&e.componentOptions&&"ElTabPane"===e.componentOptions.Ctor.options.name}).map(function(e){return e.componentInstance}),n=!(i.length===this.panes.length&&i.every(function(t,i){return t===e.panes[i]}));(t||n)&&(this.panes=i)}else 0!==this.panes.length&&(this.panes=[])},handleTabClick:function(e,t,i){e.disabled||(this.setCurrentName(t),this.$emit("tab-click",e,i))},handleTabRemove:function(e,t){e.disabled||(t.stopPropagation(),this.$emit("edit",e.name,"remove"),this.$emit("tab-remove",e.name))},handleTabAdd:function(){this.$emit("edit",null,"add"),this.$emit("tab-add")},setCurrentName:function(e){var t=this,i=function(){t.currentName=e,t.$emit("input",e)};if(this.currentName!==e&&this.beforeLeave){var n=this.beforeLeave(e,this.currentName);n&&n.then?n.then(function(){i(),t.$refs.nav&&t.$refs.nav.removeFocus()},function(){}):!1!==n&&i()}else i()}},render:function(e){var t,i=this.type,n=this.handleTabClick,s=this.handleTabRemove,r=this.handleTabAdd,a=this.currentName,o=this.panes,l=this.editable,c=this.addable,u=this.tabPosition,h=this.stretch,d=e("div",{class:["el-tabs__header","is-"+u]},[l||c?e("span",{class:"el-tabs__new-tab",on:{click:r,keydown:function(e){13===e.keyCode&&r()}},attrs:{tabindex:"0"}},[e("i",{class:"el-icon-plus"})]):null,e("tab-nav",{props:{currentName:a,onTabClick:n,onTabRemove:s,editable:l,type:i,panes:o,stretch:h},ref:"nav"})]),p=e("div",{class:"el-tabs__content"},[this.$slots.default]);return e("div",{class:(t={"el-tabs":!0,"el-tabs--card":"card"===i},t["el-tabs--"+u]=!0,t["el-tabs--border-card"]="border-card"===i,t)},["bottom"!==u?[d,p]:[p,d]])},created:function(){this.currentName||this.setCurrentName("0"),this.$on("tab-nav-update",this.calcPaneInstances.bind(null,!0))},mounted:function(){this.calcPaneInstances()},updated:function(){this.calcPaneInstances()}},void 0,void 0,!1,null,null,null);kr.options.__file="packages/tabs/src/tabs.vue";var Sr=kr.exports;Sr.install=function(e){e.component(Sr.name,Sr)};var Dr=Sr,$r=function(){var e=this,t=e.$createElement,i=e._self._c||t;return!e.lazy||e.loaded||e.active?i("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],staticClass:"el-tab-pane",attrs:{role:"tabpanel","aria-hidden":!e.active,id:"pane-"+e.paneName,"aria-labelledby":"tab-"+e.paneName}},[e._t("default")],2):e._e()};$r._withStripped=!0;var Or=s({name:"ElTabPane",componentName:"ElTabPane",props:{label:String,labelContent:Function,name:String,closable:Boolean,disabled:Boolean,lazy:Boolean},data:function(){return{index:null,loaded:!1}},computed:{isClosable:function(){return this.closable||this.$parent.closable},active:function(){var e=this.$parent.currentName===(this.name||this.index);return e&&(this.loaded=!0),e},paneName:function(){return this.name||this.index}},updated:function(){this.$parent.$emit("tab-nav-update")}},$r,[],!1,null,null,null);Or.options.__file="packages/tabs/src/tab-pane.vue";var Er=Or.exports;Er.install=function(e){e.component(Er.name,Er)};var Tr=Er,Mr=s({name:"ElTag",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:"light",validator:function(e){return["dark","light","plain"].includes(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit("close",e)},handleClick:function(e){this.$emit("click",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,i=this.tagSize,n=this.hit,s=this.effect,r=e("span",{class:["el-tag",t?"el-tag--"+t:"",i?"el-tag--"+i:"",s?"el-tag--"+s:"",n&&"is-hit"],style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e("i",{class:"el-tag__close el-icon-close",on:{click:this.handleClose}})]);return this.disableTransitions?r:e("transition",{attrs:{name:"el-zoom-in-center"}},[r])}},void 0,void 0,!1,null,null,null);Mr.options.__file="packages/tag/src/tag.vue";var Pr=Mr.exports;Pr.install=function(e){e.component(Pr.name,Pr)};var Ir=Pr,Nr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-tree",class:{"el-tree--highlight-current":e.highlightCurrent,"is-dragging":!!e.dragState.draggingNode,"is-drop-not-allow":!e.dragState.allowDrop,"is-drop-inner":"inner"===e.dragState.dropType},attrs:{role:"tree"}},[e._l(e.root.childNodes,function(t){return i("el-tree-node",{key:e.getNodeKey(t),attrs:{node:t,props:e.props,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent},on:{"node-expand":e.handleNodeExpand}})}),e.isEmpty?i("div",{staticClass:"el-tree__empty-block"},[i("span",{staticClass:"el-tree__empty-text"},[e._v(e._s(e.emptyText))])]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.dragState.showDropIndicator,expression:"dragState.showDropIndicator"}],ref:"dropIndicator",staticClass:"el-tree__drop-indicator"})],2)};Nr._withStripped=!0;var jr="$treeNodeId",Fr=function(e,t){t&&!t[jr]&&Object.defineProperty(t,jr,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},Lr=function(e,t){return e?t[e]:t[jr]},Ar=function(){function e(e,t){for(var i=0;i0&&n.lazy&&n.defaultExpandAll&&this.expand(),Array.isArray(this.data)||Fr(this,this.data),this.data){var a=n.defaultExpandedKeys,o=n.key;o&&a&&-1!==a.indexOf(this.key)&&this.expand(null,n.autoExpandParent),o&&void 0!==n.currentNodeKey&&this.key===n.currentNodeKey&&(n.currentNode=this,n.currentNode.isCurrent=!0),n.lazy&&n._initDefaultCheckedNode(this),this.updateLeafState()}}return e.prototype.setData=function(e){Array.isArray(e)||Fr(this,e),this.data=e,this.childNodes=[];for(var t=void 0,i=0,n=(t=0===this.level&&this.data instanceof Array?this.data:Br(this,"children")||[]).length;i1&&void 0!==arguments[1])||arguments[1];return function i(n){for(var s=n.childNodes||[],r=!1,a=0,o=s.length;a-1&&t.splice(i,1);var n=this.childNodes.indexOf(e);n>-1&&(this.store&&this.store.deregisterNode(e),e.parent=null,this.childNodes.splice(n,1)),this.updateLeafState()},e.prototype.removeChildByData=function(e){for(var t=null,i=0;i0;)n.expanded=!0,n=n.parent;i.expanded=!0,e&&e()};this.shouldLoadData()?this.loadData(function(e){e instanceof Array&&(i.checked?i.setChecked(!0,!0):i.store.checkStrictly||zr(i),n())}):n()},e.prototype.doCreateChildren=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.forEach(function(e){t.insertChild(Be()({data:e},i),void 0,!0)})},e.prototype.collapse=function(){this.expanded=!1},e.prototype.shouldLoadData=function(){return!0===this.store.lazy&&this.store.load&&!this.loaded},e.prototype.updateLeafState=function(){if(!0!==this.store.lazy||!0===this.loaded||void 0===this.isLeafByUser){var e=this.childNodes;!this.store.lazy||!0===this.store.lazy&&!0===this.loaded?this.isLeaf=!e||0===e.length:this.isLeaf=!1}else this.isLeaf=this.isLeafByUser},e.prototype.setChecked=function(e,t,i,n){var s=this;if(this.indeterminate="half"===e,this.checked=!0===e,!this.store.checkStrictly){if(!this.shouldLoadData()||this.store.checkDescendants){var r=Vr(this.childNodes),a=r.all,o=r.allWithoutDisable;this.isLeaf||a||!o||(this.checked=!1,e=!1);var l=function(){if(t){for(var i=s.childNodes,r=0,a=i.length;r0&&void 0!==arguments[0]&&arguments[0];if(0===this.level)return this.data;var t=this.data;if(!t)return null;var i=this.store.props,n="children";return i&&(n=i.children||"children"),void 0===t[n]&&(t[n]=null),e&&!t[n]&&(t[n]=[]),t[n]},e.prototype.updateChildren=function(){var e=this,t=this.getChildren()||[],i=this.childNodes.map(function(e){return e.data}),n={},s=[];t.forEach(function(e,t){var r=e[jr];!!r&&Object(m.arrayFindIndex)(i,function(e){return e[jr]===r})>=0?n[r]={index:t,data:e}:s.push({index:t,data:e})}),this.store.lazy||i.forEach(function(t){n[t[jr]]||e.removeChildByData(t)}),s.forEach(function(t){var i=t.index,n=t.data;e.insertChild({data:n},i)}),this.updateLeafState()},e.prototype.loadData=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!0!==this.store.lazy||!this.store.load||this.loaded||this.loading&&!Object.keys(i).length)e&&e.call(this);else{this.loading=!0;this.store.load(this,function(n){t.loaded=!0,t.loading=!1,t.childNodes=[],t.doCreateChildren(n,i),t.updateLeafState(),e&&e.call(t,n)})}},Ar(e,[{key:"label",get:function(){return Br(this,"label")}},{key:"key",get:function(){var e=this.store.key;return this.data?this.data[e]:null}},{key:"disabled",get:function(){return Br(this,"disabled")}},{key:"nextSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return e.childNodes[t+1]}return null}},{key:"previousSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return t>0?e.childNodes[t-1]:null}return null}}]),e}(),Wr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var qr=function(){function e(t){var i=this;for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.currentNode=null,this.currentNodeKey=null,t)t.hasOwnProperty(n)&&(this[n]=t[n]);(this.nodesMap={},this.root=new Hr({data:this.data,store:this}),this.lazy&&this.load)?(0,this.load)(this.root,function(e){i.root.doCreateChildren(e),i._initDefaultCheckedNodes()}):this._initDefaultCheckedNodes()}return e.prototype.filter=function(e){var t=this.filterNodeMethod,i=this.lazy;!function n(s){var r=s.root?s.root.childNodes:s.childNodes;if(r.forEach(function(i){i.visible=t.call(i,e,i.data,i),n(i)}),!s.visible&&r.length){var a;a=!r.some(function(e){return e.visible}),s.root?s.root.visible=!1===a:s.visible=!1===a}e&&(!s.visible||s.isLeaf||i||s.expand())}(this)},e.prototype.setData=function(e){e!==this.root.data?(this.root.setData(e),this._initDefaultCheckedNodes()):this.root.updateChildren()},e.prototype.getNode=function(e){if(e instanceof Hr)return e;var t="object"!==(void 0===e?"undefined":Wr(e))?e:Lr(this.key,e);return this.nodesMap[t]||null},e.prototype.insertBefore=function(e,t){var i=this.getNode(t);i.parent.insertBefore({data:e},i)},e.prototype.insertAfter=function(e,t){var i=this.getNode(t);i.parent.insertAfter({data:e},i)},e.prototype.remove=function(e){var t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))},e.prototype.append=function(e,t){var i=t?this.getNode(t):this.root;i&&i.insertChild({data:e})},e.prototype._initDefaultCheckedNodes=function(){var e=this,t=this.defaultCheckedKeys||[],i=this.nodesMap;t.forEach(function(t){var n=i[t];n&&n.setChecked(!0,!e.checkStrictly)})},e.prototype._initDefaultCheckedNode=function(e){-1!==(this.defaultCheckedKeys||[]).indexOf(e.key)&&e.setChecked(!0,!this.checkStrictly)},e.prototype.setDefaultCheckedKey=function(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())},e.prototype.registerNode=function(e){this.key&&e&&e.data&&(void 0!==e.key&&(this.nodesMap[e.key]=e))},e.prototype.deregisterNode=function(e){var t=this;this.key&&e&&e.data&&(e.childNodes.forEach(function(e){t.deregisterNode(e)}),delete this.nodesMap[e.key])},e.prototype.getCheckedNodes=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[];return function n(s){(s.root?s.root.childNodes:s.childNodes).forEach(function(s){(s.checked||t&&s.indeterminate)&&(!e||e&&s.isLeaf)&&i.push(s.data),n(s)})}(this),i},e.prototype.getCheckedKeys=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getCheckedNodes(t).map(function(t){return(t||{})[e.key]})},e.prototype.getHalfCheckedNodes=function(){var e=[];return function t(i){(i.root?i.root.childNodes:i.childNodes).forEach(function(i){i.indeterminate&&e.push(i.data),t(i)})}(this),e},e.prototype.getHalfCheckedKeys=function(){var e=this;return this.getHalfCheckedNodes().map(function(t){return(t||{})[e.key]})},e.prototype._getAllNodes=function(){var e=[],t=this.nodesMap;for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.prototype.updateChildren=function(e,t){var i=this.nodesMap[e];if(i){for(var n=i.childNodes,s=n.length-1;s>=0;s--){var r=n[s];this.remove(r.data)}for(var a=0,o=t.length;a1&&void 0!==arguments[1]&&arguments[1],i=arguments[2],n=this._getAllNodes().sort(function(e,t){return t.level-e.level}),s=Object.create(null),r=Object.keys(i);n.forEach(function(e){return e.setChecked(!1,!1)});for(var a=0,o=n.length;a-1){for(var u=l.parent;u&&u.level>0;)s[u.data[e]]=!0,u=u.parent;l.isLeaf||this.checkStrictly?l.setChecked(!0,!1):(l.setChecked(!0,!0),t&&function(){l.setChecked(!1,!1);!function e(t){t.childNodes.forEach(function(t){t.isLeaf||t.setChecked(!1,!1),e(t)})}(l)}())}else l.checked&&!s[c]&&l.setChecked(!1,!1)}},e.prototype.setCheckedNodes=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.key,n={};e.forEach(function(e){n[(e||{})[i]]=!0}),this._setCheckedKeys(i,t,n)},e.prototype.setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.defaultCheckedKeys=e;var i=this.key,n={};e.forEach(function(e){n[e]=!0}),this._setCheckedKeys(i,t,n)},e.prototype.setDefaultExpandedKeys=function(e){var t=this;e=e||[],this.defaultExpandedKeys=e,e.forEach(function(e){var i=t.getNode(e);i&&i.expand(null,t.autoExpandParent)})},e.prototype.setChecked=function(e,t,i){var n=this.getNode(e);n&&n.setChecked(!!t,i)},e.prototype.getCurrentNode=function(){return this.currentNode},e.prototype.setCurrentNode=function(e){var t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0},e.prototype.setUserCurrentNode=function(e){var t=e[this.key],i=this.nodesMap[t];this.setCurrentNode(i)},e.prototype.setCurrentNodeKey=function(e){if(null===e)return this.currentNode.isCurrent=!1,void(this.currentNode=null);var t=this.getNode(e);t&&this.setCurrentNode(t)},e}(),Kr=function(){var e=this,t=this,i=t.$createElement,n=t._self._c||i;return n("div",{directives:[{name:"show",rawName:"v-show",value:t.node.visible,expression:"node.visible"}],ref:"node",staticClass:"el-tree-node",class:{"is-expanded":t.expanded,"is-current":t.node.isCurrent,"is-hidden":!t.node.visible,"is-focusable":!t.node.disabled,"is-checked":!t.node.disabled&&t.node.checked},attrs:{role:"treeitem",tabindex:"-1","aria-expanded":t.expanded,"aria-disabled":t.node.disabled,"aria-checked":t.node.checked,draggable:t.tree.draggable},on:{click:function(e){return e.stopPropagation(),t.handleClick(e)},contextmenu:function(t){return e.handleContextMenu(t)},dragstart:function(e){return e.stopPropagation(),t.handleDragStart(e)},dragover:function(e){return e.stopPropagation(),t.handleDragOver(e)},dragend:function(e){return e.stopPropagation(),t.handleDragEnd(e)},drop:function(e){return e.stopPropagation(),t.handleDrop(e)}}},[n("div",{staticClass:"el-tree-node__content",style:{"padding-left":(t.node.level-1)*t.tree.indent+"px"}},[n("span",{class:[{"is-leaf":t.node.isLeaf,expanded:!t.node.isLeaf&&t.expanded},"el-tree-node__expand-icon",t.tree.iconClass?t.tree.iconClass:"el-icon-caret-right"],on:{click:function(e){return e.stopPropagation(),t.handleExpandIconClick(e)}}}),t.showCheckbox?n("el-checkbox",{attrs:{indeterminate:t.node.indeterminate,disabled:!!t.node.disabled},on:{change:t.handleCheckChange},nativeOn:{click:function(e){e.stopPropagation()}},model:{value:t.node.checked,callback:function(e){t.$set(t.node,"checked",e)},expression:"node.checked"}}):t._e(),t.node.loading?n("span",{staticClass:"el-tree-node__loading-icon el-icon-loading"}):t._e(),n("node-content",{attrs:{node:t.node}})],1),n("el-collapse-transition",[!t.renderAfterExpand||t.childNodeRendered?n("div",{directives:[{name:"show",rawName:"v-show",value:t.expanded,expression:"expanded"}],staticClass:"el-tree-node__children",attrs:{role:"group","aria-expanded":t.expanded}},t._l(t.node.childNodes,function(e){return n("el-tree-node",{key:t.getNodeKey(e),attrs:{"render-content":t.renderContent,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,node:e},on:{"node-expand":t.handleChildNodeExpand}})}),1):t._e()])],1)};Kr._withStripped=!0;var Yr=s({name:"ElTreeNode",componentName:"ElTreeNode",mixins:[k.a],props:{node:{default:function(){return{}}},props:{},renderContent:Function,renderAfterExpand:{type:Boolean,default:!0},showCheckbox:{type:Boolean,default:!1}},components:{ElCollapseTransition:ye.a,ElCheckbox:ri.a,NodeContent:{props:{node:{required:!0}},render:function(e){var t=this.$parent,i=t.tree,n=this.node,s=n.data,r=n.store;return t.renderContent?t.renderContent.call(t._renderProxy,e,{_self:i.$vnode.context,node:n,data:s,store:r}):i.$scopedSlots.default?i.$scopedSlots.default({node:n,data:s}):e("span",{class:"el-tree-node__label"},[n.label])}}},data:function(){return{tree:null,expanded:!1,childNodeRendered:!1,oldChecked:null,oldIndeterminate:null}},watch:{"node.indeterminate":function(e){this.handleSelectChange(this.node.checked,e)},"node.checked":function(e){this.handleSelectChange(e,this.node.indeterminate)},"node.expanded":function(e){var t=this;this.$nextTick(function(){return t.expanded=e}),e&&(this.childNodeRendered=!0)}},methods:{getNodeKey:function(e){return Lr(this.tree.nodeKey,e.data)},handleSelectChange:function(e,t){this.oldChecked!==e&&this.oldIndeterminate!==t&&this.tree.$emit("check-change",this.node.data,e,t),this.oldChecked=e,this.indeterminate=t},handleClick:function(){var e=this.tree.store;e.setCurrentNode(this.node),this.tree.$emit("current-change",e.currentNode?e.currentNode.data:null,e.currentNode),this.tree.currentNode=this,this.tree.expandOnClickNode&&this.handleExpandIconClick(),this.tree.checkOnClickNode&&!this.node.disabled&&this.handleCheckChange(null,{target:{checked:!this.node.checked}}),this.tree.$emit("node-click",this.node.data,this.node,this)},handleContextMenu:function(e){this.tree._events["node-contextmenu"]&&this.tree._events["node-contextmenu"].length>0&&(e.stopPropagation(),e.preventDefault()),this.tree.$emit("node-contextmenu",e,this.node.data,this.node,this)},handleExpandIconClick:function(){this.node.isLeaf||(this.expanded?(this.tree.$emit("node-collapse",this.node.data,this.node,this),this.node.collapse()):(this.node.expand(),this.$emit("node-expand",this.node.data,this.node,this)))},handleCheckChange:function(e,t){var i=this;this.node.setChecked(t.target.checked,!this.tree.checkStrictly),this.$nextTick(function(){var e=i.tree.store;i.tree.$emit("check",i.node.data,{checkedNodes:e.getCheckedNodes(),checkedKeys:e.getCheckedKeys(),halfCheckedNodes:e.getHalfCheckedNodes(),halfCheckedKeys:e.getHalfCheckedKeys()})})},handleChildNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.tree.$emit("node-expand",e,t,i)},handleDragStart:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-start",e,this)},handleDragOver:function(e){this.tree.draggable&&(this.tree.$emit("tree-node-drag-over",e,this),e.preventDefault())},handleDrop:function(e){e.preventDefault()},handleDragEnd:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-end",e,this)}},created:function(){var e=this,t=this.$parent;t.isTree?this.tree=t:this.tree=t.tree;var i=this.tree;i||console.warn("Can not find node's tree.");var n=(i.props||{}).children||"children";this.$watch("node.data."+n,function(){e.node.updateChildren()}),this.node.expanded&&(this.expanded=!0,this.childNodeRendered=!0),this.tree.accordion&&this.$on("tree-node-expand",function(t){e.node!==t&&e.node.collapse()})}},Kr,[],!1,null,null,null);Yr.options.__file="packages/tree/src/tree-node.vue";var Ur=Yr.exports,Gr=s({name:"ElTree",mixins:[k.a],components:{ElTreeNode:Ur},data:function(){return{store:null,root:null,currentNode:null,treeItems:null,checkboxItems:[],dragState:{showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0}}},props:{data:{type:Array},emptyText:{type:String,default:function(){return Object(Ft.t)("el.tree.emptyText")}},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{default:function(){return{children:"children",label:"label",disabled:"disabled"}}},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},iconClass:String},computed:{children:{set:function(e){this.data=e},get:function(){return this.data}},treeItemArray:function(){return Array.prototype.slice.call(this.treeItems)},isEmpty:function(){var e=this.root.childNodes;return!e||0===e.length||e.every(function(e){return!e.visible})}},watch:{defaultCheckedKeys:function(e){this.store.setDefaultCheckedKey(e)},defaultExpandedKeys:function(e){this.store.defaultExpandedKeys=e,this.store.setDefaultExpandedKeys(e)},data:function(e){this.store.setData(e)},checkboxItems:function(e){Array.prototype.forEach.call(e,function(e){e.setAttribute("tabindex",-1)})},checkStrictly:function(e){this.store.checkStrictly=e}},methods:{filter:function(e){if(!this.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");this.store.filter(e)},getNodeKey:function(e){return Lr(this.nodeKey,e.data)},getNodePath:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");var t=this.store.getNode(e);if(!t)return[];for(var i=[t.data],n=t.parent;n&&n!==this.root;)i.push(n.data),n=n.parent;return i.reverse()},getCheckedNodes:function(e,t){return this.store.getCheckedNodes(e,t)},getCheckedKeys:function(e){return this.store.getCheckedKeys(e)},getCurrentNode:function(){var e=this.store.getCurrentNode();return e?e.data:null},getCurrentKey:function(){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");var e=this.getCurrentNode();return e?e[this.nodeKey]:null},setCheckedNodes:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");this.store.setCheckedNodes(e,t)},setCheckedKeys:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");this.store.setCheckedKeys(e,t)},setChecked:function(e,t,i){this.store.setChecked(e,t,i)},getHalfCheckedNodes:function(){return this.store.getHalfCheckedNodes()},getHalfCheckedKeys:function(){return this.store.getHalfCheckedKeys()},setCurrentNode:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");this.store.setUserCurrentNode(e)},setCurrentKey:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");this.store.setCurrentNodeKey(e)},getNode:function(e){return this.store.getNode(e)},remove:function(e){this.store.remove(e)},append:function(e,t){this.store.append(e,t)},insertBefore:function(e,t){this.store.insertBefore(e,t)},insertAfter:function(e,t){this.store.insertAfter(e,t)},handleNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.$emit("node-expand",e,t,i)},updateKeyChildren:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");this.store.updateChildren(e,t)},initTabIndex:function(){this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]");var e=this.$el.querySelectorAll(".is-checked[role=treeitem]");e.length?e[0].setAttribute("tabindex",0):this.treeItems[0]&&this.treeItems[0].setAttribute("tabindex",0)},handleKeydown:function(e){var t=e.target;if(-1!==t.className.indexOf("el-tree-node")){var i=e.keyCode;this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]");var n=this.treeItemArray.indexOf(t),s=void 0;[38,40].indexOf(i)>-1&&(e.preventDefault(),s=38===i?0!==n?n-1:0:n-1&&(e.preventDefault(),t.click());var r=t.querySelector('[type="checkbox"]');[13,32].indexOf(i)>-1&&r&&(e.preventDefault(),r.click())}}},created:function(){var e=this;this.isTree=!0,this.store=new qr({key:this.nodeKey,data:this.data,lazy:this.lazy,props:this.props,load:this.load,currentNodeKey:this.currentNodeKey,checkStrictly:this.checkStrictly,checkDescendants:this.checkDescendants,defaultCheckedKeys:this.defaultCheckedKeys,defaultExpandedKeys:this.defaultExpandedKeys,autoExpandParent:this.autoExpandParent,defaultExpandAll:this.defaultExpandAll,filterNodeMethod:this.filterNodeMethod}),this.root=this.store.root;var t=this.dragState;this.$on("tree-node-drag-start",function(i,n){if("function"==typeof e.allowDrag&&!e.allowDrag(n.node))return i.preventDefault(),!1;i.dataTransfer.effectAllowed="move";try{i.dataTransfer.setData("text/plain","")}catch(e){}t.draggingNode=n,e.$emit("node-drag-start",n.node,i)}),this.$on("tree-node-drag-over",function(i,n){var s=function(e,t){for(var i=e;i&&"BODY"!==i.tagName;){if(i.__vue__&&i.__vue__.$options.name===t)return i.__vue__;i=i.parentNode}return null}(i.target,"ElTreeNode"),r=t.dropNode;r&&r!==s&&Object(fe.removeClass)(r.$el,"is-drop-inner");var a=t.draggingNode;if(a&&s){var o=!0,l=!0,c=!0,u=!0;"function"==typeof e.allowDrop&&(o=e.allowDrop(a.node,s.node,"prev"),u=l=e.allowDrop(a.node,s.node,"inner"),c=e.allowDrop(a.node,s.node,"next")),i.dataTransfer.dropEffect=l?"move":"none",(o||l||c)&&r!==s&&(r&&e.$emit("node-drag-leave",a.node,r.node,i),e.$emit("node-drag-enter",a.node,s.node,i)),(o||l||c)&&(t.dropNode=s),s.node.nextSibling===a.node&&(c=!1),s.node.previousSibling===a.node&&(o=!1),s.node.contains(a.node,!1)&&(l=!1),(a.node===s.node||a.node.contains(s.node))&&(o=!1,l=!1,c=!1);var h=s.$el.getBoundingClientRect(),d=e.$el.getBoundingClientRect(),p=void 0,f=o?l?.25:c?.45:1:-1,m=c?l?.75:o?.55:0:1,v=-9999,g=i.clientY-h.top;p=gh.height*m?"after":l?"inner":"none";var b=s.$el.querySelector(".el-tree-node__expand-icon").getBoundingClientRect(),y=e.$refs.dropIndicator;"before"===p?v=b.top-d.top:"after"===p&&(v=b.bottom-d.top),y.style.top=v+"px",y.style.left=b.right-d.left+"px","inner"===p?Object(fe.addClass)(s.$el,"is-drop-inner"):Object(fe.removeClass)(s.$el,"is-drop-inner"),t.showDropIndicator="before"===p||"after"===p,t.allowDrop=t.showDropIndicator||u,t.dropType=p,e.$emit("node-drag-over",a.node,s.node,i)}}),this.$on("tree-node-drag-end",function(i){var n=t.draggingNode,s=t.dropType,r=t.dropNode;if(i.preventDefault(),i.dataTransfer.dropEffect="move",n&&r){var a={data:n.node.data};"none"!==s&&n.node.remove(),"before"===s?r.node.parent.insertBefore(a,r.node):"after"===s?r.node.parent.insertAfter(a,r.node):"inner"===s&&r.node.insertChild(a),"none"!==s&&e.store.registerNode(a),Object(fe.removeClass)(r.$el,"is-drop-inner"),e.$emit("node-drag-end",n.node,r.node,s,i),"none"!==s&&e.$emit("node-drop",n.node,r.node,s,i)}n&&!r&&e.$emit("node-drag-end",n.node,null,s,i),t.showDropIndicator=!1,t.draggingNode=null,t.dropNode=null,t.allowDrop=!0})},mounted:function(){this.initTabIndex(),this.$el.addEventListener("keydown",this.handleKeydown)},updated:function(){this.treeItems=this.$el.querySelectorAll("[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]")}},Nr,[],!1,null,null,null);Gr.options.__file="packages/tree/src/tree.vue";var Xr=Gr.exports;Xr.install=function(e){e.component(Xr.name,Xr)};var Qr=Xr,Jr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-alert-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-alert",class:[e.typeClass,e.center?"is-center":"","is-"+e.effect],attrs:{role:"alert"}},[e.showIcon?i("i",{staticClass:"el-alert__icon",class:[e.iconClass,e.isBigIcon]}):e._e(),i("div",{staticClass:"el-alert__content"},[e.title||e.$slots.title?i("span",{staticClass:"el-alert__title",class:[e.isBoldTitle]},[e._t("title",[e._v(e._s(e.title))])],2):e._e(),e.$slots.default&&!e.description?i("p",{staticClass:"el-alert__description"},[e._t("default")],2):e._e(),e.description&&!e.$slots.default?i("p",{staticClass:"el-alert__description"},[e._v(e._s(e.description))]):e._e(),i("i",{directives:[{name:"show",rawName:"v-show",value:e.closable,expression:"closable"}],staticClass:"el-alert__closebtn",class:{"is-customed":""!==e.closeText,"el-icon-close":""===e.closeText},on:{click:function(t){e.close()}}},[e._v(e._s(e.closeText))])])])])};Jr._withStripped=!0;var Zr={success:"el-icon-success",warning:"el-icon-warning",error:"el-icon-error"},ea=s({name:"ElAlert",props:{title:{type:String,default:""},description:{type:String,default:""},type:{type:String,default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,default:"light",validator:function(e){return-1!==["light","dark"].indexOf(e)}}},data:function(){return{visible:!0}},methods:{close:function(){this.visible=!1,this.$emit("close")}},computed:{typeClass:function(){return"el-alert--"+this.type},iconClass:function(){return Zr[this.type]||"el-icon-info"},isBigIcon:function(){return this.description||this.$slots.default?"is-big":""},isBoldTitle:function(){return this.description||this.$slots.default?"is-bold":""}}},Jr,[],!1,null,null,null);ea.options.__file="packages/alert/src/main.vue";var ta=ea.exports;ta.install=function(e){e.component(ta.name,ta)};var ia=ta,na=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-notification-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-notification",e.customClass,e.horizontalClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:function(t){e.clearTimer()},mouseleave:function(t){e.startTimer()},click:e.click}},[e.type||e.iconClass?i("i",{staticClass:"el-notification__icon",class:[e.typeClass,e.iconClass]}):e._e(),i("div",{staticClass:"el-notification__group",class:{"is-with-icon":e.typeClass||e.iconClass}},[i("h2",{staticClass:"el-notification__title",domProps:{textContent:e._s(e.title)}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.message,expression:"message"}],staticClass:"el-notification__content"},[e._t("default",[e.dangerouslyUseHTMLString?i("p",{domProps:{innerHTML:e._s(e.message)}}):i("p",[e._v(e._s(e.message))])])],2),e.showClose?i("div",{staticClass:"el-notification__closeBtn el-icon-close",on:{click:function(t){return t.stopPropagation(),e.close(t)}}}):e._e()])])])};na._withStripped=!0;var sa={success:"success",info:"info",warning:"warning",error:"error"},ra=s({data:function(){return{visible:!1,title:"",message:"",duration:4500,type:"",showClose:!0,customClass:"",iconClass:"",onClose:null,onClick:null,closed:!1,verticalOffset:0,timer:null,dangerouslyUseHTMLString:!1,position:"top-right"}},computed:{typeClass:function(){return this.type&&sa[this.type]?"el-icon-"+sa[this.type]:""},horizontalClass:function(){return this.position.indexOf("right")>-1?"right":"left"},verticalProperty:function(){return/^top-/.test(this.position)?"top":"bottom"},positionStyle:function(){var e;return(e={})[this.verticalProperty]=this.verticalOffset+"px",e}},watch:{closed:function(e){e&&(this.visible=!1,this.$el.addEventListener("transitionend",this.destroyElement))}},methods:{destroyElement:function(){this.$el.removeEventListener("transitionend",this.destroyElement),this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},click:function(){"function"==typeof this.onClick&&this.onClick()},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose()},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){46===e.keyCode||8===e.keyCode?this.clearTimer():27===e.keyCode?this.closed||this.close():this.startTimer()}},mounted:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration)),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},na,[],!1,null,null,null);ra.options.__file="packages/notification/src/main.vue";var aa=ra.exports,oa=di.a.extend(aa),la=void 0,ca=[],ua=1,ha=function e(t){if(!di.a.prototype.$isServer){var i=(t=t||{}).onClose,n="notification_"+ua++,s=t.position||"top-right";t.onClose=function(){e.close(n,i)},la=new oa({data:t}),Object(Rs.isVNode)(t.message)&&(la.$slots.default=[t.message],t.message="REPLACED_BY_VNODE"),la.id=n,la.$mount(),document.body.appendChild(la.$el),la.visible=!0,la.dom=la.$el,la.dom.style.zIndex=y.PopupManager.nextZIndex();var r=t.offset||0;return ca.filter(function(e){return e.position===s}).forEach(function(e){r+=e.$el.offsetHeight+16}),r+=16,la.verticalOffset=r,ca.push(la),la}};["success","warning","info","error"].forEach(function(e){ha[e]=function(t){return("string"==typeof t||Object(Rs.isVNode)(t))&&(t={message:t}),t.type=e,ha(t)}}),ha.close=function(e,t){var i=-1,n=ca.length,s=ca.filter(function(t,n){return t.id===e&&(i=n,!0)})[0];if(s&&("function"==typeof t&&t(s),ca.splice(i,1),!(n<=1)))for(var r=s.position,a=s.dom.offsetHeight,o=i;o=0;e--)ca[e].close()};var da=ha,pa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-slider",class:{"is-vertical":e.vertical,"el-slider--with-input":e.showInput},attrs:{role:"slider","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-orientation":e.vertical?"vertical":"horizontal","aria-disabled":e.sliderDisabled}},[e.showInput&&!e.range?i("el-input-number",{ref:"input",staticClass:"el-slider__input",attrs:{step:e.step,disabled:e.sliderDisabled,controls:e.showInputControls,min:e.min,max:e.max,debounce:e.debounce,size:e.inputSize},on:{change:e.emitChange},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}):e._e(),i("div",{ref:"slider",staticClass:"el-slider__runway",class:{"show-input":e.showInput,disabled:e.sliderDisabled},style:e.runwayStyle,on:{click:e.onSliderClick}},[i("div",{staticClass:"el-slider__bar",style:e.barStyle}),i("slider-button",{ref:"button1",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}),e.range?i("slider-button",{ref:"button2",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.secondValue,callback:function(t){e.secondValue=t},expression:"secondValue"}}):e._e(),e._l(e.stops,function(t,n){return e.showStops?i("div",{key:n,staticClass:"el-slider__stop",style:e.getStopStyle(t)}):e._e()}),e.markList.length>0?[i("div",e._l(e.markList,function(t,n){return i("div",{key:n,staticClass:"el-slider__stop el-slider__marks-stop",style:e.getStopStyle(t.position)})}),0),i("div",{staticClass:"el-slider__marks"},e._l(e.markList,function(t,n){return i("slider-marker",{key:n,style:e.getStopStyle(t.position),attrs:{mark:t.mark}})}),1)]:e._e()],2)],1)};pa._withStripped=!0;var fa=i(41),ma=i.n(fa),va=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{ref:"button",staticClass:"el-slider__button-wrapper",class:{hover:e.hovering,dragging:e.dragging},style:e.wrapperStyle,attrs:{tabindex:"0"},on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave,mousedown:e.onButtonDown,touchstart:e.onButtonDown,focus:e.handleMouseEnter,blur:e.handleMouseLeave,keydown:[function(t){return"button"in t||!e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])?"button"in t&&0!==t.button?null:e.onLeftKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])?"button"in t&&2!==t.button?null:e.onRightKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?(t.preventDefault(),e.onLeftKeyDown(t)):null},function(t){return"button"in t||!e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?(t.preventDefault(),e.onRightKeyDown(t)):null}]}},[i("el-tooltip",{ref:"tooltip",attrs:{placement:"top","popper-class":e.tooltipClass,disabled:!e.showTooltip}},[i("span",{attrs:{slot:"content"},slot:"content"},[e._v(e._s(e.formatValue))]),i("div",{staticClass:"el-slider__button",class:{hover:e.hovering,dragging:e.dragging}})])],1)};va._withStripped=!0;var ga=s({name:"ElSliderButton",components:{ElTooltip:$e.a},props:{value:{type:Number,default:0},vertical:{type:Boolean,default:!1},tooltipClass:String},data:function(){return{hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:null,oldValue:this.value}},computed:{disabled:function(){return this.$parent.sliderDisabled},max:function(){return this.$parent.max},min:function(){return this.$parent.min},step:function(){return this.$parent.step},showTooltip:function(){return this.$parent.showTooltip},precision:function(){return this.$parent.precision},currentPosition:function(){return(this.value-this.min)/(this.max-this.min)*100+"%"},enableFormat:function(){return this.$parent.formatTooltip instanceof Function},formatValue:function(){return this.enableFormat&&this.$parent.formatTooltip(this.value)||this.value},wrapperStyle:function(){return this.vertical?{bottom:this.currentPosition}:{left:this.currentPosition}}},watch:{dragging:function(e){this.$parent.dragging=e}},methods:{displayTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!0)},hideTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!1)},handleMouseEnter:function(){this.hovering=!0,this.displayTooltip()},handleMouseLeave:function(){this.hovering=!1,this.hideTooltip()},onButtonDown:function(e){this.disabled||(e.preventDefault(),this.onDragStart(e),window.addEventListener("mousemove",this.onDragging),window.addEventListener("touchmove",this.onDragging),window.addEventListener("mouseup",this.onDragEnd),window.addEventListener("touchend",this.onDragEnd),window.addEventListener("contextmenu",this.onDragEnd))},onLeftKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)-this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onRightKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)+this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onDragStart:function(e){this.dragging=!0,this.isClick=!0,"touchstart"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?this.startY=e.clientY:this.startX=e.clientX,this.startPosition=parseFloat(this.currentPosition),this.newPosition=this.startPosition},onDragging:function(e){if(this.dragging){this.isClick=!1,this.displayTooltip(),this.$parent.resetSize();var t=0;"touchmove"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?(this.currentY=e.clientY,t=(this.startY-this.currentY)/this.$parent.sliderSize*100):(this.currentX=e.clientX,t=(this.currentX-this.startX)/this.$parent.sliderSize*100),this.newPosition=this.startPosition+t,this.setPosition(this.newPosition)}},onDragEnd:function(){var e=this;this.dragging&&(setTimeout(function(){e.dragging=!1,e.hideTooltip(),e.isClick||(e.setPosition(e.newPosition),e.$parent.emitChange())},0),window.removeEventListener("mousemove",this.onDragging),window.removeEventListener("touchmove",this.onDragging),window.removeEventListener("mouseup",this.onDragEnd),window.removeEventListener("touchend",this.onDragEnd),window.removeEventListener("contextmenu",this.onDragEnd))},setPosition:function(e){var t=this;if(null!==e&&!isNaN(e)){e<0?e=0:e>100&&(e=100);var i=100/((this.max-this.min)/this.step),n=Math.round(e/i)*i*(this.max-this.min)*.01+this.min;n=parseFloat(n.toFixed(this.precision)),this.$emit("input",n),this.$nextTick(function(){t.displayTooltip(),t.$refs.tooltip&&t.$refs.tooltip.updatePopper()}),this.dragging||this.value===this.oldValue||(this.oldValue=this.value)}}}},va,[],!1,null,null,null);ga.options.__file="packages/slider/src/button.vue";var ba=ga.exports,ya={name:"ElMarker",props:{mark:{type:[String,Object]}},render:function(){var e=arguments[0],t="string"==typeof this.mark?this.mark:this.mark.label;return e("div",{class:"el-slider__marks-text",style:this.mark.style||{}},[t])}},xa=s({name:"ElSlider",mixins:[k.a],inject:{elForm:{default:""}},props:{min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},value:{type:[Number,Array],default:0},showInput:{type:Boolean,default:!1},showInputControls:{type:Boolean,default:!0},inputSize:{type:String,default:"small"},showStops:{type:Boolean,default:!1},showTooltip:{type:Boolean,default:!0},formatTooltip:Function,disabled:{type:Boolean,default:!1},range:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},height:{type:String},debounce:{type:Number,default:300},label:{type:String},tooltipClass:String,marks:Object},components:{ElInputNumber:ma.a,SliderButton:ba,SliderMarker:ya},data:function(){return{firstValue:null,secondValue:null,oldValue:null,dragging:!1,sliderSize:1}},watch:{value:function(e,t){this.dragging||Array.isArray(e)&&Array.isArray(t)&&e.every(function(e,i){return e===t[i]})||this.setValues()},dragging:function(e){e||this.setValues()},firstValue:function(e){this.range?this.$emit("input",[this.minValue,this.maxValue]):this.$emit("input",e)},secondValue:function(){this.range&&this.$emit("input",[this.minValue,this.maxValue])},min:function(){this.setValues()},max:function(){this.setValues()}},methods:{valueChanged:function(){var e=this;return this.range?![this.minValue,this.maxValue].every(function(t,i){return t===e.oldValue[i]}):this.value!==this.oldValue},setValues:function(){if(this.min>this.max)console.error("[Element Error][Slider]min should not be greater than max.");else{var e=this.value;this.range&&Array.isArray(e)?e[1]this.max?this.$emit("input",[this.max,this.max]):e[0]this.max?this.$emit("input",[e[0],this.max]):(this.firstValue=e[0],this.secondValue=e[1],this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",[this.minValue,this.maxValue]),this.oldValue=e.slice())):this.range||"number"!=typeof e||isNaN(e)||(ethis.max?this.$emit("input",this.max):(this.firstValue=e,this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",e),this.oldValue=e)))}},setPosition:function(e){var t=this.min+e*(this.max-this.min)/100;if(this.range){var i=void 0;i=Math.abs(this.minValue-t)this.secondValue?"button1":"button2",this.$refs[i].setPosition(e)}else this.$refs.button1.setPosition(e)},onSliderClick:function(e){if(!this.sliderDisabled&&!this.dragging){if(this.resetSize(),this.vertical){var t=this.$refs.slider.getBoundingClientRect().bottom;this.setPosition((t-e.clientY)/this.sliderSize*100)}else{var i=this.$refs.slider.getBoundingClientRect().left;this.setPosition((e.clientX-i)/this.sliderSize*100)}this.emitChange()}},resetSize:function(){this.$refs.slider&&(this.sliderSize=this.$refs.slider["client"+(this.vertical?"Height":"Width")])},emitChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.range?[e.minValue,e.maxValue]:e.value)})},getStopStyle:function(e){return this.vertical?{bottom:e+"%"}:{left:e+"%"}}},computed:{stops:function(){var e=this;if(!this.showStops||this.min>this.max)return[];if(0===this.step)return[];for(var t=(this.max-this.min)/this.step,i=100*this.step/(this.max-this.min),n=[],s=1;s100*(e.maxValue-e.min)/(e.max-e.min)}):n.filter(function(t){return t>100*(e.firstValue-e.min)/(e.max-e.min)})},markList:function(){var e=this;return this.marks?Object.keys(this.marks).map(parseFloat).sort(function(e,t){return e-t}).filter(function(t){return t<=e.max&&t>=e.min}).map(function(t){return{point:t,position:100*(t-e.min)/(e.max-e.min),mark:e.marks[t]}}):[]},minValue:function(){return Math.min(this.firstValue,this.secondValue)},maxValue:function(){return Math.max(this.firstValue,this.secondValue)},barSize:function(){return this.range?100*(this.maxValue-this.minValue)/(this.max-this.min)+"%":100*(this.firstValue-this.min)/(this.max-this.min)+"%"},barStart:function(){return this.range?100*(this.minValue-this.min)/(this.max-this.min)+"%":"0%"},precision:function(){var e=[this.min,this.max,this.step].map(function(e){var t=(""+e).split(".")[1];return t?t.length:0});return Math.max.apply(null,e)},runwayStyle:function(){return this.vertical?{height:this.height}:{}},barStyle:function(){return this.vertical?{height:this.barSize,bottom:this.barStart}:{width:this.barSize,left:this.barStart}},sliderDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},mounted:function(){var e=void 0;this.range?(Array.isArray(this.value)?(this.firstValue=Math.max(this.min,this.value[0]),this.secondValue=Math.min(this.max,this.value[1])):(this.firstValue=this.min,this.secondValue=this.max),this.oldValue=[this.firstValue,this.secondValue],e=this.firstValue+"-"+this.secondValue):("number"!=typeof this.value||isNaN(this.value)?this.firstValue=this.min:this.firstValue=Math.min(this.max,Math.max(this.min,this.value)),this.oldValue=this.firstValue,e=this.firstValue),this.$el.setAttribute("aria-valuetext",e),this.$el.setAttribute("aria-label",this.label?this.label:"slider between "+this.min+" and "+this.max),this.resetSize(),window.addEventListener("resize",this.resetSize)},beforeDestroy:function(){window.removeEventListener("resize",this.resetSize)}},pa,[],!1,null,null,null);xa.options.__file="packages/slider/src/main.vue";var _a=xa.exports;_a.install=function(e){e.component(_a.name,_a)};var Ca=_a,wa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-loading-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-loading-mask",class:[e.customClass,{"is-fullscreen":e.fullscreen}],style:{backgroundColor:e.background||""}},[i("div",{staticClass:"el-loading-spinner"},[e.spinner?i("i",{class:e.spinner}):i("svg",{staticClass:"circular",attrs:{viewBox:"25 25 50 50"}},[i("circle",{staticClass:"path",attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})]),e.text?i("p",{staticClass:"el-loading-text"},[e._v(e._s(e.text))]):e._e()])])])};wa._withStripped=!0;var ka=s({data:function(){return{text:null,spinner:null,background:null,fullscreen:!0,visible:!1,customClass:""}},methods:{handleAfterLeave:function(){this.$emit("after-leave")},setText:function(e){this.text=e}}},wa,[],!1,null,null,null);ka.options.__file="packages/loading/src/loading.vue";var Sa=ka.exports,Da=i(31),$a=i.n(Da),Oa=di.a.extend(Sa),Ea={install:function(e){if(!e.prototype.$isServer){var t=function(t,n){n.value?e.nextTick(function(){n.modifiers.fullscreen?(t.originalPosition=Object(fe.getStyle)(document.body,"position"),t.originalOverflow=Object(fe.getStyle)(document.body,"overflow"),t.maskStyle.zIndex=y.PopupManager.nextZIndex(),Object(fe.addClass)(t.mask,"is-fullscreen"),i(document.body,t,n)):(Object(fe.removeClass)(t.mask,"is-fullscreen"),n.modifiers.body?(t.originalPosition=Object(fe.getStyle)(document.body,"position"),["top","left"].forEach(function(e){var i="top"===e?"scrollTop":"scrollLeft";t.maskStyle[e]=t.getBoundingClientRect()[e]+document.body[i]+document.documentElement[i]-parseInt(Object(fe.getStyle)(document.body,"margin-"+e),10)+"px"}),["height","width"].forEach(function(e){t.maskStyle[e]=t.getBoundingClientRect()[e]+"px"}),i(document.body,t,n)):(t.originalPosition=Object(fe.getStyle)(t,"position"),i(t,t,n)))}):($a()(t.instance,function(e){if(t.instance.hiding){t.domVisible=!1;var i=n.modifiers.fullscreen||n.modifiers.body?document.body:t;Object(fe.removeClass)(i,"el-loading-parent--relative"),Object(fe.removeClass)(i,"el-loading-parent--hidden"),t.instance.hiding=!1}},300,!0),t.instance.visible=!1,t.instance.hiding=!0)},i=function(t,i,n){i.domVisible||"none"===Object(fe.getStyle)(i,"display")||"hidden"===Object(fe.getStyle)(i,"visibility")?i.domVisible&&!0===i.instance.hiding&&(i.instance.visible=!0,i.instance.hiding=!1):(Object.keys(i.maskStyle).forEach(function(e){i.mask.style[e]=i.maskStyle[e]}),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&Object(fe.addClass)(t,"el-loading-parent--relative"),n.modifiers.fullscreen&&n.modifiers.lock&&Object(fe.addClass)(t,"el-loading-parent--hidden"),i.domVisible=!0,t.appendChild(i.mask),e.nextTick(function(){i.instance.hiding?i.instance.$emit("after-leave"):i.instance.visible=!0}),i.domInserted=!0)};e.directive("loading",{bind:function(e,i,n){var s=e.getAttribute("element-loading-text"),r=e.getAttribute("element-loading-spinner"),a=e.getAttribute("element-loading-background"),o=e.getAttribute("element-loading-custom-class"),l=n.context,c=new Oa({el:document.createElement("div"),data:{text:l&&l[s]||s,spinner:l&&l[r]||r,background:l&&l[a]||a,customClass:l&&l[o]||o,fullscreen:!!i.modifiers.fullscreen}});e.instance=c,e.mask=c.$el,e.maskStyle={},i.value&&t(e,i)},update:function(e,i){e.instance.setText(e.getAttribute("element-loading-text")),i.oldValue!==i.value&&t(e,i)},unbind:function(e,i){e.domInserted&&(e.mask&&e.mask.parentNode&&e.mask.parentNode.removeChild(e.mask),t(e,{value:!1,modifiers:i.modifiers})),e.instance&&e.instance.$destroy()}})}}},Ta=Ea,Ma=di.a.extend(Sa),Pa={text:null,fullscreen:!0,body:!1,lock:!1,customClass:""},Ia=void 0;Ma.prototype.originalPosition="",Ma.prototype.originalOverflow="",Ma.prototype.close=function(){var e=this;this.fullscreen&&(Ia=void 0),$a()(this,function(t){var i=e.fullscreen||e.body?document.body:e.target;Object(fe.removeClass)(i,"el-loading-parent--relative"),Object(fe.removeClass)(i,"el-loading-parent--hidden"),e.$el&&e.$el.parentNode&&e.$el.parentNode.removeChild(e.$el),e.$destroy()},300),this.visible=!1};var Na=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!di.a.prototype.$isServer){if("string"==typeof(e=Be()({},Pa,e)).target&&(e.target=document.querySelector(e.target)),e.target=e.target||document.body,e.target!==document.body?e.fullscreen=!1:e.body=!0,e.fullscreen&&Ia)return Ia;var t=e.body?document.body:e.target,i=new Ma({el:document.createElement("div"),data:e});return function(e,t,i){var n={};e.fullscreen?(i.originalPosition=Object(fe.getStyle)(document.body,"position"),i.originalOverflow=Object(fe.getStyle)(document.body,"overflow"),n.zIndex=y.PopupManager.nextZIndex()):e.body?(i.originalPosition=Object(fe.getStyle)(document.body,"position"),["top","left"].forEach(function(t){var i="top"===t?"scrollTop":"scrollLeft";n[t]=e.target.getBoundingClientRect()[t]+document.body[i]+document.documentElement[i]+"px"}),["height","width"].forEach(function(t){n[t]=e.target.getBoundingClientRect()[t]+"px"})):i.originalPosition=Object(fe.getStyle)(t,"position"),Object.keys(n).forEach(function(e){i.$el.style[e]=n[e]})}(e,t,i),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&Object(fe.addClass)(t,"el-loading-parent--relative"),e.fullscreen&&e.lock&&Object(fe.addClass)(t,"el-loading-parent--hidden"),t.appendChild(i.$el),di.a.nextTick(function(){i.visible=!0}),e.fullscreen&&(Ia=i),i}},ja={install:function(e){e.use(Ta),e.prototype.$loading=Na},directive:Ta,service:Na},Fa=function(){var e=this.$createElement;return(this._self._c||e)("i",{class:"el-icon-"+this.name})};Fa._withStripped=!0;var La=s({name:"ElIcon",props:{name:String}},Fa,[],!1,null,null,null);La.options.__file="packages/icon/src/icon.vue";var Aa=La.exports;Aa.install=function(e){e.component(Aa.name,Aa)};var Va=Aa,za={name:"ElRow",componentName:"ElRow",props:{tag:{type:String,default:"div"},gutter:Number,type:String,justify:{type:String,default:"start"},align:{type:String,default:"top"}},computed:{style:function(){var e={};return this.gutter&&(e.marginLeft="-"+this.gutter/2+"px",e.marginRight=e.marginLeft),e}},render:function(e){return e(this.tag,{class:["el-row","start"!==this.justify?"is-justify-"+this.justify:"","top"!==this.align?"is-align-"+this.align:"",{"el-row--flex":"flex"===this.type}],style:this.style},this.$slots.default)},install:function(e){e.component(za.name,za)}},Ba=za,Ra="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ha={name:"ElCol",props:{span:{type:Number,default:24},tag:{type:String,default:"div"},offset:Number,pull:Number,push:Number,xs:[Number,Object],sm:[Number,Object],md:[Number,Object],lg:[Number,Object],xl:[Number,Object]},computed:{gutter:function(){for(var e=this.$parent;e&&"ElRow"!==e.$options.componentName;)e=e.$parent;return e?e.gutter:0}},render:function(e){var t=this,i=[],n={};return this.gutter&&(n.paddingLeft=this.gutter/2+"px",n.paddingRight=n.paddingLeft),["span","offset","pull","push"].forEach(function(e){(t[e]||0===t[e])&&i.push("span"!==e?"el-col-"+e+"-"+t[e]:"el-col-"+t[e])}),["xs","sm","md","lg","xl"].forEach(function(e){if("number"==typeof t[e])i.push("el-col-"+e+"-"+t[e]);else if("object"===Ra(t[e])){var n=t[e];Object.keys(n).forEach(function(t){i.push("span"!==t?"el-col-"+e+"-"+t+"-"+n[t]:"el-col-"+e+"-"+n[t])})}}),e(this.tag,{class:["el-col",i],style:n},this.$slots.default)},install:function(e){e.component(Ha.name,Ha)}},Wa=Ha,qa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition-group",{class:["el-upload-list","el-upload-list--"+e.listType,{"is-disabled":e.disabled}],attrs:{tag:"ul",name:"el-list"}},e._l(e.files,function(t){return i("li",{key:t.uid,class:["el-upload-list__item","is-"+t.status,e.focusing?"focusing":""],attrs:{tabindex:"0"},on:{keydown:function(i){if(!("button"in i)&&e._k(i.keyCode,"delete",[8,46],i.key,["Backspace","Delete","Del"]))return null;!e.disabled&&e.$emit("remove",t)},focus:function(t){e.focusing=!0},blur:function(t){e.focusing=!1},click:function(t){e.focusing=!1}}},[e._t("default",["uploading"!==t.status&&["picture-card","picture"].indexOf(e.listType)>-1?i("img",{staticClass:"el-upload-list__item-thumbnail",attrs:{src:t.url,alt:""}}):e._e(),i("a",{staticClass:"el-upload-list__item-name",on:{click:function(i){e.handleClick(t)}}},[i("i",{staticClass:"el-icon-document"}),e._v(e._s(t.name)+"\n ")]),i("label",{staticClass:"el-upload-list__item-status-label"},[i("i",{class:{"el-icon-upload-success":!0,"el-icon-circle-check":"text"===e.listType,"el-icon-check":["picture-card","picture"].indexOf(e.listType)>-1}})]),e.disabled?e._e():i("i",{staticClass:"el-icon-close",on:{click:function(i){e.$emit("remove",t)}}}),e.disabled?e._e():i("i",{staticClass:"el-icon-close-tip"},[e._v(e._s(e.t("el.upload.deleteTip")))]),"uploading"===t.status?i("el-progress",{attrs:{type:"picture-card"===e.listType?"circle":"line","stroke-width":"picture-card"===e.listType?6:2,percentage:e.parsePercentage(t.percentage)}}):e._e(),"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-actions"},[e.handlePreview&&"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-preview",on:{click:function(i){e.handlePreview(t)}}},[i("i",{staticClass:"el-icon-zoom-in"})]):e._e(),e.disabled?e._e():i("span",{staticClass:"el-upload-list__item-delete",on:{click:function(i){e.$emit("remove",t)}}},[i("i",{staticClass:"el-icon-delete"})])]):e._e()],{file:t})],2)}),0)};qa._withStripped=!0;var Ka=i(32),Ya=i.n(Ka),Ua=s({name:"ElUploadList",mixins:[f.a],data:function(){return{focusing:!1}},components:{ElProgress:Ya.a},props:{files:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},handlePreview:Function,listType:String},methods:{parsePercentage:function(e){return parseInt(e,10)},handleClick:function(e){this.handlePreview&&this.handlePreview(e)}}},qa,[],!1,null,null,null);Ua.options.__file="packages/upload/src/upload-list.vue";var Ga=Ua.exports,Xa=i(24),Qa=i.n(Xa);var Ja=function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{staticClass:"el-upload-dragger",class:{"is-dragover":e.dragover},on:{drop:function(t){return t.preventDefault(),e.onDrop(t)},dragover:function(t){return t.preventDefault(),e.onDragover(t)},dragleave:function(t){t.preventDefault(),e.dragover=!1}}},[e._t("default")],2)};Ja._withStripped=!0;var Za=s({name:"ElUploadDrag",props:{disabled:Boolean},inject:{uploader:{default:""}},data:function(){return{dragover:!1}},methods:{onDragover:function(){this.disabled||(this.dragover=!0)},onDrop:function(e){if(!this.disabled&&this.uploader){var t=this.uploader.accept;this.dragover=!1,t?this.$emit("file",[].slice.call(e.dataTransfer.files).filter(function(e){var i=e.type,n=e.name,s=n.indexOf(".")>-1?"."+n.split(".").pop():"",r=i.replace(/\/.*$/,"");return t.split(",").map(function(e){return e.trim()}).filter(function(e){return e}).some(function(e){return/\..+$/.test(e)?s===e:/\/\*$/.test(e)?r===e.replace(/\/\*$/,""):!!/^[^\/]+\/[^\/]+$/.test(e)&&i===e})})):this.$emit("file",e.dataTransfer.files)}}}},Ja,[],!1,null,null,null);Za.options.__file="packages/upload/src/upload-dragger.vue";var eo=s({inject:["uploader"],components:{UploadDragger:Za.exports},props:{type:String,action:{type:String,required:!0},name:{type:String,default:"file"},data:Object,headers:Object,withCredentials:Boolean,multiple:Boolean,accept:String,onStart:Function,onProgress:Function,onSuccess:Function,onError:Function,beforeUpload:Function,drag:Boolean,onPreview:{type:Function,default:function(){}},onRemove:{type:Function,default:function(){}},fileList:Array,autoUpload:Boolean,listType:String,httpRequest:{type:Function,default:function(e){if("undefined"!=typeof XMLHttpRequest){var t=new XMLHttpRequest,i=e.action;t.upload&&(t.upload.onprogress=function(t){t.total>0&&(t.percent=t.loaded/t.total*100),e.onProgress(t)});var n=new FormData;e.data&&Object.keys(e.data).forEach(function(t){n.append(t,e.data[t])}),n.append(e.filename,e.file,e.file.name),t.onerror=function(t){e.onError(t)},t.onload=function(){if(t.status<200||t.status>=300)return e.onError(function(e,t,i){var n=void 0;n=i.response?""+(i.response.error||i.response):i.responseText?""+i.responseText:"fail to post "+e+" "+i.status;var s=new Error(n);return s.status=i.status,s.method="post",s.url=e,s}(i,0,t));e.onSuccess(function(e){var t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(e){return t}}(t))},t.open("post",i,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);var s=e.headers||{};for(var r in s)s.hasOwnProperty(r)&&null!==s[r]&&t.setRequestHeader(r,s[r]);return t.send(n),t}}},disabled:Boolean,limit:Number,onExceed:Function},data:function(){return{mouseover:!1,reqs:{}}},methods:{isImage:function(e){return-1!==e.indexOf("image")},handleChange:function(e){var t=e.target.files;t&&this.uploadFiles(t)},uploadFiles:function(e){var t=this;if(this.limit&&this.fileList.length+e.length>this.limit)this.onExceed&&this.onExceed(e,this.fileList);else{var i=Array.prototype.slice.call(e);this.multiple||(i=i.slice(0,1)),0!==i.length&&i.forEach(function(e){t.onStart(e),t.autoUpload&&t.upload(e)})}},upload:function(e){var t=this;if(this.$refs.input.value=null,!this.beforeUpload)return this.post(e);var i=this.beforeUpload(e);i&&i.then?i.then(function(i){var n=Object.prototype.toString.call(i);if("[object File]"===n||"[object Blob]"===n){for(var s in"[object Blob]"===n&&(i=new File([i],e.name,{type:e.type})),e)e.hasOwnProperty(s)&&(i[s]=e[s]);t.post(i)}else t.post(e)},function(){t.onRemove(null,e)}):!1!==i?this.post(e):this.onRemove(null,e)},abort:function(e){var t=this.reqs;if(e){var i=e;e.uid&&(i=e.uid),t[i]&&t[i].abort()}else Object.keys(t).forEach(function(e){t[e]&&t[e].abort(),delete t[e]})},post:function(e){var t=this,i=e.uid,n={headers:this.headers,withCredentials:this.withCredentials,file:e,data:this.data,filename:this.name,action:this.action,onProgress:function(i){t.onProgress(i,e)},onSuccess:function(n){t.onSuccess(n,e),delete t.reqs[i]},onError:function(n){t.onError(n,e),delete t.reqs[i]}},s=this.httpRequest(n);this.reqs[i]=s,s&&s.then&&s.then(n.onSuccess,n.onError)},handleClick:function(){this.disabled||(this.$refs.input.value=null,this.$refs.input.click())},handleKeydown:function(e){e.target===e.currentTarget&&(13!==e.keyCode&&32!==e.keyCode||this.handleClick())}},render:function(e){var t=this.handleClick,i=this.drag,n=this.name,s=this.handleChange,r=this.multiple,a=this.accept,o=this.listType,l=this.uploadFiles,c=this.disabled,u={class:{"el-upload":!0},on:{click:t,keydown:this.handleKeydown}};return u.class["el-upload--"+o]=!0,e("div",Qa()([u,{attrs:{tabindex:"0"}}]),[i?e("upload-dragger",{attrs:{disabled:c},on:{file:l}},[this.$slots.default]):this.$slots.default,e("input",{class:"el-upload__input",attrs:{type:"file",name:n,multiple:r,accept:a},ref:"input",on:{change:s}})])}},void 0,void 0,!1,null,null,null);eo.options.__file="packages/upload/src/upload.vue";var to=eo.exports;function io(){}var no=s({name:"ElUpload",mixins:[C.a],components:{ElProgress:Ya.a,UploadList:Ga,Upload:to},provide:function(){return{uploader:this}},inject:{elForm:{default:""}},props:{action:{type:String,required:!0},headers:{type:Object,default:function(){return{}}},data:Object,multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,dragger:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:String,type:{type:String,default:"select"},beforeUpload:Function,beforeRemove:Function,onRemove:{type:Function,default:io},onChange:{type:Function,default:io},onPreview:{type:Function},onSuccess:{type:Function,default:io},onProgress:{type:Function,default:io},onError:{type:Function,default:io},fileList:{type:Array,default:function(){return[]}},autoUpload:{type:Boolean,default:!0},listType:{type:String,default:"text"},httpRequest:Function,disabled:Boolean,limit:Number,onExceed:{type:Function,default:io}},data:function(){return{uploadFiles:[],dragOver:!1,draging:!1,tempIndex:1}},computed:{uploadDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{listType:function(e){"picture-card"!==e&&"picture"!==e||(this.uploadFiles=this.uploadFiles.map(function(e){if(!e.url&&e.raw)try{e.url=URL.createObjectURL(e.raw)}catch(e){console.error("[Element Error][Upload]",e)}return e}))},fileList:{immediate:!0,handler:function(e){var t=this;this.uploadFiles=e.map(function(e){return e.uid=e.uid||Date.now()+t.tempIndex++,e.status=e.status||"success",e})}}},methods:{handleStart:function(e){e.uid=Date.now()+this.tempIndex++;var t={status:"ready",name:e.name,size:e.size,percentage:0,uid:e.uid,raw:e};if("picture-card"===this.listType||"picture"===this.listType)try{t.url=URL.createObjectURL(e)}catch(e){return void console.error("[Element Error][Upload]",e)}this.uploadFiles.push(t),this.onChange(t,this.uploadFiles)},handleProgress:function(e,t){var i=this.getFile(t);this.onProgress(e,i,this.uploadFiles),i.status="uploading",i.percentage=e.percent||0},handleSuccess:function(e,t){var i=this.getFile(t);i&&(i.status="success",i.response=e,this.onSuccess(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles))},handleError:function(e,t){var i=this.getFile(t),n=this.uploadFiles;i.status="fail",n.splice(n.indexOf(i),1),this.onError(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles)},handleRemove:function(e,t){var i=this;t&&(e=this.getFile(t));var n=function(){i.abort(e);var t=i.uploadFiles;t.splice(t.indexOf(e),1),i.onRemove(e,t)};if(this.beforeRemove){if("function"==typeof this.beforeRemove){var s=this.beforeRemove(e,this.uploadFiles);s&&s.then?s.then(function(){n()},io):!1!==s&&n()}}else n()},getFile:function(e){var t=void 0;return this.uploadFiles.every(function(i){return!(t=e.uid===i.uid?i:null)}),t},abort:function(e){this.$refs["upload-inner"].abort(e)},clearFiles:function(){this.uploadFiles=[]},submit:function(){var e=this;this.uploadFiles.filter(function(e){return"ready"===e.status}).forEach(function(t){e.$refs["upload-inner"].upload(t.raw)})},getMigratingConfig:function(){return{props:{"default-file-list":"default-file-list is renamed to file-list.","show-upload-list":"show-upload-list is renamed to show-file-list.","thumbnail-mode":"thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan"}}}},beforeDestroy:function(){this.uploadFiles.forEach(function(e){e.url&&0===e.url.indexOf("blob:")&&URL.revokeObjectURL(e.url)})},render:function(e){var t=this,i=void 0;this.showFileList&&(i=e(Ga,{attrs:{disabled:this.uploadDisabled,listType:this.listType,files:this.uploadFiles,handlePreview:this.onPreview},on:{remove:this.handleRemove}},[function(e){if(t.$scopedSlots.file)return t.$scopedSlots.file({file:e.file})}]));var n=e("upload",{props:{type:this.type,drag:this.drag,action:this.action,multiple:this.multiple,"before-upload":this.beforeUpload,"with-credentials":this.withCredentials,headers:this.headers,name:this.name,data:this.data,accept:this.accept,fileList:this.uploadFiles,autoUpload:this.autoUpload,listType:this.listType,disabled:this.uploadDisabled,limit:this.limit,"on-exceed":this.onExceed,"on-start":this.handleStart,"on-progress":this.handleProgress,"on-success":this.handleSuccess,"on-error":this.handleError,"on-preview":this.onPreview,"on-remove":this.handleRemove,"http-request":this.httpRequest},ref:"upload-inner"},[this.$slots.trigger||this.$slots.default]);return e("div",["picture-card"===this.listType?i:"",this.$slots.trigger?[n,this.$slots.default]:n,this.$slots.tip,"picture-card"!==this.listType?i:""])}},void 0,void 0,!1,null,null,null);no.options.__file="packages/upload/src/index.vue";var so=no.exports;so.install=function(e){e.component(so.name,so)};var ro=so,ao=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-progress",class:["el-progress--"+e.type,e.status?"is-"+e.status:"",{"el-progress--without-text":!e.showText,"el-progress--text-inside":e.textInside}],attrs:{role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"}},["line"===e.type?i("div",{staticClass:"el-progress-bar"},[i("div",{staticClass:"el-progress-bar__outer",style:{height:e.strokeWidth+"px"}},[i("div",{staticClass:"el-progress-bar__inner",style:e.barStyle},[e.showText&&e.textInside?i("div",{staticClass:"el-progress-bar__innerText"},[e._v(e._s(e.content))]):e._e()])])]):i("div",{staticClass:"el-progress-circle",style:{height:e.width+"px",width:e.width+"px"}},[i("svg",{attrs:{viewBox:"0 0 100 100"}},[i("path",{staticClass:"el-progress-circle__track",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:"#e5e9f2","stroke-width":e.relativeStrokeWidth,fill:"none"}}),i("path",{staticClass:"el-progress-circle__path",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":"round","stroke-width":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?i("div",{staticClass:"el-progress__text",style:{fontSize:e.progressTextSize+"px"}},[e.status?i("i",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])};ao._withStripped=!0;var oo=s({name:"ElProgress",props:{type:{type:String,default:"line",validator:function(e){return["line","circle","dashboard"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),i=0;ie)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,i){return"string"==typeof e?{color:e,progress:(i+1)*t}:e})}}},ao,[],!1,null,null,null);oo.options.__file="packages/progress/src/progress.vue";var lo=oo.exports;lo.install=function(e){e.component(lo.name,lo)};var co=lo,uo=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-spinner"},[t("svg",{staticClass:"el-spinner-inner",style:{width:this.radius/2+"px",height:this.radius/2+"px"},attrs:{viewBox:"0 0 50 50"}},[t("circle",{staticClass:"path",attrs:{cx:"25",cy:"25",r:"20",fill:"none",stroke:this.strokeColor,"stroke-width":this.strokeWidth}})])])};uo._withStripped=!0;var ho=s({name:"ElSpinner",props:{type:String,radius:{type:Number,default:100},strokeWidth:{type:Number,default:5},strokeColor:{type:String,default:"#efefef"}}},uo,[],!1,null,null,null);ho.options.__file="packages/spinner/src/spinner.vue";var po=ho.exports;po.install=function(e){e.component(po.name,po)};var fo=po,mo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-message-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-message",e.type&&!e.iconClass?"el-message--"+e.type:"",e.center?"is-center":"",e.showClose?"is-closable":"",e.customClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:e.clearTimer,mouseleave:e.startTimer}},[e.iconClass?i("i",{class:e.iconClass}):i("i",{class:e.typeClass}),e._t("default",[e.dangerouslyUseHTMLString?i("p",{staticClass:"el-message__content",domProps:{innerHTML:e._s(e.message)}}):i("p",{staticClass:"el-message__content"},[e._v(e._s(e.message))])]),e.showClose?i("i",{staticClass:"el-message__closeBtn el-icon-close",on:{click:e.close}}):e._e()],2)])};mo._withStripped=!0;var vo={success:"success",info:"info",warning:"warning",error:"error"},go=s({data:function(){return{visible:!1,message:"",duration:3e3,type:"info",iconClass:"",customClass:"",onClose:null,showClose:!1,closed:!1,verticalOffset:20,timer:null,dangerouslyUseHTMLString:!1,center:!1}},computed:{typeClass:function(){return this.type&&!this.iconClass?"el-message__icon el-icon-"+vo[this.type]:""},positionStyle:function(){return{top:this.verticalOffset+"px"}}},watch:{closed:function(e){e&&(this.visible=!1)}},methods:{handleAfterLeave:function(){this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose(this)},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){27===e.keyCode&&(this.closed||this.close())}},mounted:function(){this.startTimer(),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},mo,[],!1,null,null,null);go.options.__file="packages/message/src/main.vue";var bo=go.exports,yo=di.a.extend(bo),xo=void 0,_o=[],Co=1,wo=function e(t){if(!di.a.prototype.$isServer){"string"==typeof(t=t||{})&&(t={message:t});var i=t.onClose,n="message_"+Co++;t.onClose=function(){e.close(n,i)},(xo=new yo({data:t})).id=n,Object(Rs.isVNode)(xo.message)&&(xo.$slots.default=[xo.message],xo.message=null),xo.$mount(),document.body.appendChild(xo.$el);var s=t.offset||20;return _o.forEach(function(e){s+=e.$el.offsetHeight+16}),xo.verticalOffset=s,xo.visible=!0,xo.$el.style.zIndex=y.PopupManager.nextZIndex(),_o.push(xo),xo}};["success","warning","info","error"].forEach(function(e){wo[e]=function(t){return"string"==typeof t&&(t={message:t}),t.type=e,wo(t)}}),wo.close=function(e,t){for(var i=_o.length,n=-1,s=0;s_o.length-1))for(var r=_o[n].$el.offsetHeight,a=n;a=0;e--)_o[e].close()};var ko=wo,So=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-badge"},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-center"}},[i("sup",{directives:[{name:"show",rawName:"v-show",value:!e.hidden&&(e.content||0===e.content||e.isDot),expression:"!hidden && (content || content === 0 || isDot)"}],staticClass:"el-badge__content",class:["el-badge__content--"+e.type,{"is-fixed":e.$slots.default,"is-dot":e.isDot}],domProps:{textContent:e._s(e.content)}})])],2)};So._withStripped=!0;var Do=s({name:"ElBadge",props:{value:[String,Number],max:Number,isDot:Boolean,hidden:Boolean,type:{type:String,validator:function(e){return["primary","success","warning","info","danger"].indexOf(e)>-1}}},computed:{content:function(){if(!this.isDot){var e=this.value,t=this.max;return"number"==typeof e&&"number"==typeof t&&t0&&e-1this.value,i=this.allowHalf&&this.pointerAtLeftHalf&&e-.5<=this.currentValue&&e>this.currentValue;return t||i},getIconStyle:function(e){var t=this.rateDisabled?this.disabledVoidColor:this.voidColor;return{color:e<=this.currentValue?this.activeColor:t}},selectValue:function(e){this.rateDisabled||(this.allowHalf&&this.pointerAtLeftHalf?(this.$emit("input",this.currentValue),this.$emit("change",this.currentValue)):(this.$emit("input",e),this.$emit("change",e)))},handleKey:function(e){if(!this.rateDisabled){var t=this.currentValue,i=e.keyCode;38===i||39===i?(this.allowHalf?t+=.5:t+=1,e.stopPropagation(),e.preventDefault()):37!==i&&40!==i||(this.allowHalf?t-=.5:t-=1,e.stopPropagation(),e.preventDefault()),t=(t=t<0?0:t)>this.max?this.max:t,this.$emit("input",t),this.$emit("change",t)}},setCurrentValue:function(e,t){if(!this.rateDisabled){if(this.allowHalf){var i=t.target;Object(fe.hasClass)(i,"el-rate__item")&&(i=i.querySelector(".el-rate__icon")),Object(fe.hasClass)(i,"el-rate__decimal")&&(i=i.parentNode),this.pointerAtLeftHalf=2*t.offsetX<=i.clientWidth,this.currentValue=this.pointerAtLeftHalf?e-.5:e}else this.currentValue=e;this.hoverIndex=e}},resetCurrentValue:function(){this.rateDisabled||(this.allowHalf&&(this.pointerAtLeftHalf=this.value!==Math.floor(this.value)),this.currentValue=this.value,this.hoverIndex=-1)}},created:function(){this.value||this.$emit("input",0)}},Io,[],!1,null,null,null);jo.options.__file="packages/rate/src/main.vue";var Fo=jo.exports;Fo.install=function(e){e.component(Fo.name,Fo)};var Lo=Fo,Ao=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-steps",class:[!this.simple&&"el-steps--"+this.direction,this.simple&&"el-steps--simple"]},[this._t("default")],2)};Ao._withStripped=!0;var Vo=s({name:"ElSteps",mixins:[C.a],props:{space:[Number,String],active:Number,direction:{type:String,default:"horizontal"},alignCenter:Boolean,simple:Boolean,finishStatus:{type:String,default:"finish"},processStatus:{type:String,default:"process"}},data:function(){return{steps:[],stepOffset:0}},methods:{getMigratingConfig:function(){return{props:{center:"center is removed."}}}},watch:{active:function(e,t){this.$emit("change",e,t)},steps:function(e){e.forEach(function(e,t){e.index=t})}}},Ao,[],!1,null,null,null);Vo.options.__file="packages/steps/src/steps.vue";var zo=Vo.exports;zo.install=function(e){e.component(zo.name,zo)};var Bo=zo,Ro=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-step",class:[!e.isSimple&&"is-"+e.$parent.direction,e.isSimple&&"is-simple",e.isLast&&!e.space&&!e.isCenter&&"is-flex",e.isCenter&&!e.isVertical&&!e.isSimple&&"is-center"],style:e.style},[i("div",{staticClass:"el-step__head",class:"is-"+e.currentStatus},[i("div",{staticClass:"el-step__line",style:e.isLast?"":{marginRight:e.$parent.stepOffset+"px"}},[i("i",{staticClass:"el-step__line-inner",style:e.lineStyle})]),i("div",{staticClass:"el-step__icon",class:"is-"+(e.icon?"icon":"text")},["success"!==e.currentStatus&&"error"!==e.currentStatus?e._t("icon",[e.icon?i("i",{staticClass:"el-step__icon-inner",class:[e.icon]}):e._e(),e.icon||e.isSimple?e._e():i("div",{staticClass:"el-step__icon-inner"},[e._v(e._s(e.index+1))])]):i("i",{staticClass:"el-step__icon-inner is-status",class:["el-icon-"+("success"===e.currentStatus?"check":"close")]})],2)]),i("div",{staticClass:"el-step__main"},[i("div",{ref:"title",staticClass:"el-step__title",class:["is-"+e.currentStatus]},[e._t("title",[e._v(e._s(e.title))])],2),e.isSimple?i("div",{staticClass:"el-step__arrow"}):i("div",{staticClass:"el-step__description",class:["is-"+e.currentStatus]},[e._t("description",[e._v(e._s(e.description))])],2)])])};Ro._withStripped=!0;var Ho=s({name:"ElStep",props:{title:String,icon:String,description:String,status:String},data:function(){return{index:-1,lineStyle:{},internalStatus:""}},beforeCreate:function(){this.$parent.steps.push(this)},beforeDestroy:function(){var e=this.$parent.steps,t=e.indexOf(this);t>=0&&e.splice(t,1)},computed:{currentStatus:function(){return this.status||this.internalStatus},prevStatus:function(){var e=this.$parent.steps[this.index-1];return e?e.currentStatus:"wait"},isCenter:function(){return this.$parent.alignCenter},isVertical:function(){return"vertical"===this.$parent.direction},isSimple:function(){return this.$parent.simple},isLast:function(){var e=this.$parent;return e.steps[e.steps.length-1]===this},stepsCount:function(){return this.$parent.steps.length},space:function(){var e=this.isSimple,t=this.$parent.space;return e?"":t},style:function(){var e={},t=this.$parent.steps.length,i="number"==typeof this.space?this.space+"px":this.space?this.space:100/(t-(this.isCenter?0:1))+"%";return e.flexBasis=i,this.isVertical?e:(this.isLast?e.maxWidth=100/this.stepsCount+"%":e.marginRight=-this.$parent.stepOffset+"px",e)}},methods:{updateStatus:function(e){var t=this.$parent.$children[this.index-1];e>this.index?this.internalStatus=this.$parent.finishStatus:e===this.index&&"error"!==this.prevStatus?this.internalStatus=this.$parent.processStatus:this.internalStatus="wait",t&&t.calcProgress(this.internalStatus)},calcProgress:function(e){var t=100,i={};i.transitionDelay=150*this.index+"ms",e===this.$parent.processStatus?(this.currentStatus,t=0):"wait"===e&&(t=0,i.transitionDelay=-150*this.index+"ms"),i.borderWidth=t&&!this.isSimple?"1px":0,"vertical"===this.$parent.direction?i.height=t+"%":i.width=t+"%",this.lineStyle=i}},mounted:function(){var e=this,t=this.$watch("index",function(i){e.$watch("$parent.active",e.updateStatus,{immediate:!0}),e.$watch("$parent.processStatus",function(){var t=e.$parent.active;e.updateStatus(t)},{immediate:!0}),t()})}},Ro,[],!1,null,null,null);Ho.options.__file="packages/steps/src/step.vue";var Wo=Ho.exports;Wo.install=function(e){e.component(Wo.name,Wo)};var qo=Wo,Ko=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:e.carouselClasses,on:{mouseenter:function(t){return t.stopPropagation(),e.handleMouseEnter(t)},mouseleave:function(t){return t.stopPropagation(),e.handleMouseLeave(t)}}},[i("div",{staticClass:"el-carousel__container",style:{height:e.height}},[e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-left"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex>0),expression:"(arrow === 'always' || hover) && (loop || activeIndex > 0)"}],staticClass:"el-carousel__arrow el-carousel__arrow--left",attrs:{type:"button"},on:{mouseenter:function(t){e.handleButtonEnter("left")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex-1)}}},[i("i",{staticClass:"el-icon-arrow-left"})])]):e._e(),e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-right"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex0})},carouselClasses:function(){var e=["el-carousel","el-carousel--"+this.direction];return"card"===this.type&&e.push("el-carousel--card"),e},indicatorsClasses:function(){var e=["el-carousel__indicators","el-carousel__indicators--"+this.direction];return this.hasLabel&&e.push("el-carousel__indicators--labels"),"outside"!==this.indicatorPosition&&"card"!==this.type||e.push("el-carousel__indicators--outside"),e}},watch:{items:function(e){e.length>0&&this.setActiveItem(this.initialIndex)},activeIndex:function(e,t){this.resetItemPosition(t),this.$emit("change",e,t)},autoplay:function(e){e?this.startTimer():this.pauseTimer()},loop:function(){this.setActiveItem(this.activeIndex)}},methods:{handleMouseEnter:function(){this.hover=!0,this.pauseTimer()},handleMouseLeave:function(){this.hover=!1,this.startTimer()},itemInStage:function(e,t){var i=this.items.length;return t===i-1&&e.inStage&&this.items[0].active||e.inStage&&this.items[t+1]&&this.items[t+1].active?"left":!!(0===t&&e.inStage&&this.items[i-1].active||e.inStage&&this.items[t-1]&&this.items[t-1].active)&&"right"},handleButtonEnter:function(e){var t=this;"vertical"!==this.direction&&this.items.forEach(function(i,n){e===t.itemInStage(i,n)&&(i.hover=!0)})},handleButtonLeave:function(){"vertical"!==this.direction&&this.items.forEach(function(e){e.hover=!1})},updateItems:function(){this.items=this.$children.filter(function(e){return"ElCarouselItem"===e.$options.name})},resetItemPosition:function(e){var t=this;this.items.forEach(function(i,n){i.translateItem(n,t.activeIndex,e)})},playSlides:function(){this.activeIndex0&&(e=this.items.indexOf(t[0]))}if(e=Number(e),isNaN(e)||e!==Math.floor(e))console.warn("[Element Warn][Carousel]index must be an integer.");else{var i=this.items.length,n=this.activeIndex;this.activeIndex=e<0?this.loop?i-1:0:e>=i?this.loop?0:i-1:e,n===this.activeIndex&&this.resetItemPosition(n)}},prev:function(){this.setActiveItem(this.activeIndex-1)},next:function(){this.setActiveItem(this.activeIndex+1)},handleIndicatorClick:function(e){this.activeIndex=e},handleIndicatorHover:function(e){"hover"===this.trigger&&e!==this.activeIndex&&(this.activeIndex=e)}},created:function(){var e=this;this.throttledArrowClick=Uo()(300,!0,function(t){e.setActiveItem(t)}),this.throttledIndicatorHover=Uo()(300,function(t){e.handleIndicatorHover(t)})},mounted:function(){var e=this;this.updateItems(),this.$nextTick(function(){Object(jt.addResizeListener)(e.$el,e.resetItemPosition),e.initialIndex=0&&(e.activeIndex=e.initialIndex),e.startTimer()})},beforeDestroy:function(){this.$el&&Object(jt.removeResizeListener)(this.$el,this.resetItemPosition),this.pauseTimer()}},Ko,[],!1,null,null,null);Go.options.__file="packages/carousel/src/main.vue";var Xo=Go.exports;Xo.install=function(e){e.component(Xo.name,Xo)};var Qo=Xo,Jo={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};var Zo={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return Jo[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,i=this.move,n=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+n.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:function(e){var t=e.move,i=e.size,n=e.bar,s={},r="translate"+n.axis+"("+t+"%)";return s[n.size]=i,s.transform=r,s.msTransform=r,s.webkitTransform=r,s}({size:t,move:i,bar:n})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=100*(Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-this.$refs.thumb[this.bar.offset]/2)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=t*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(fe.on)(document,"mousemove",this.mouseMoveDocumentHandler),Object(fe.on)(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var i=100*(-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-(this.$refs.thumb[this.bar.offset]-t))/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=i*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(fe.off)(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(fe.off)(document,"mouseup",this.mouseUpDocumentHandler)}},el={name:"ElScrollbar",components:{Bar:Zo},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=ji()(),i=this.wrapStyle;if(t){var n="-"+t+"px",s="margin-bottom: "+n+"; margin-right: "+n+";";Array.isArray(this.wrapStyle)?(i=Object(m.toObject)(this.wrapStyle)).marginRight=i.marginBottom=n:"string"==typeof this.wrapStyle?i+=s:i=s}var r=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),a=e("div",{ref:"wrap",style:i,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[r]]);return e("div",{class:"el-scrollbar"},this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:i},[[r]])]:[a,e(Zo,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(Zo,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})])},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e,t,i=this.wrap;i&&(e=100*i.clientHeight/i.scrollHeight,t=100*i.clientWidth/i.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(jt.addResizeListener)(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(jt.removeResizeListener)(this.$refs.resize,this.update)},install:function(e){e.component(el.name,el)}},tl=el,il=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"show",rawName:"v-show",value:e.ready,expression:"ready"}],staticClass:"el-carousel__item",class:{"is-active":e.active,"el-carousel__item--card":"card"===e.$parent.type,"is-in-stage":e.inStage,"is-hover":e.hover,"is-animating":e.animating},style:e.itemStyle,on:{click:e.handleItemClick}},["card"===e.$parent.type?i("div",{directives:[{name:"show",rawName:"v-show",value:!e.active,expression:"!active"}],staticClass:"el-carousel__mask"}):e._e(),e._t("default")],2)};il._withStripped=!0;var nl=s({name:"ElCarouselItem",props:{name:String,label:{type:[String,Number],default:""}},data:function(){return{hover:!1,translate:0,scale:1,active:!1,ready:!1,inStage:!1,animating:!1}},methods:{processIndex:function(e,t,i){return 0===t&&e===i-1?-1:t===i-1&&0===e?i:e=i/2?i+1:e>t+1&&e-t>=i/2?-2:e},calcCardTranslate:function(e,t){var i=this.$parent.$el.offsetWidth;return this.inStage?i*(1.17*(e-t)+1)/4:e2&&this.$parent.loop&&(e=this.processIndex(e,t,r)),"card"===n)"vertical"===s&&console.warn("[Element Warn][Carousel]vertical directionis not supported in card mode"),this.inStage=Math.round(Math.abs(e-t))<=1,this.active=e===t,this.translate=this.calcCardTranslate(e,t),this.scale=this.active?1:.83;else{this.active=e===t;var a="vertical"===s;this.translate=this.calcTranslate(e,t,a)}this.ready=!0},handleItemClick:function(){var e=this.$parent;if(e&&"card"===e.type){var t=e.items.indexOf(this);e.setActiveItem(t)}}},computed:{parentDirection:function(){return this.$parent.direction},itemStyle:function(){var e={transform:("vertical"===this.parentDirection?"translateY":"translateX")+"("+this.translate+"px) scale("+this.scale+")"};return Object(m.autoprefixer)(e)}},created:function(){this.$parent&&this.$parent.updateItems()},destroyed:function(){this.$parent&&this.$parent.updateItems()}},il,[],!1,null,null,null);nl.options.__file="packages/carousel/src/item.vue";var sl=nl.exports;sl.install=function(e){e.component(sl.name,sl)};var rl=sl,al=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-collapse",attrs:{role:"tablist","aria-multiselectable":"true"}},[this._t("default")],2)};al._withStripped=!0;var ol=s({name:"ElCollapse",componentName:"ElCollapse",props:{accordion:Boolean,value:{type:[Array,String,Number],default:function(){return[]}}},data:function(){return{activeNames:[].concat(this.value)}},provide:function(){return{collapse:this}},watch:{value:function(e){this.activeNames=[].concat(e)}},methods:{setActiveNames:function(e){e=[].concat(e);var t=this.accordion?e[0]:e;this.activeNames=e,this.$emit("input",t),this.$emit("change",t)},handleItemClick:function(e){if(this.accordion)this.setActiveNames(!this.activeNames[0]&&0!==this.activeNames[0]||this.activeNames[0]!==e.name?e.name:"");else{var t=this.activeNames.slice(0),i=t.indexOf(e.name);i>-1?t.splice(i,1):t.push(e.name),this.setActiveNames(t)}}},created:function(){this.$on("item-click",this.handleItemClick)}},al,[],!1,null,null,null);ol.options.__file="packages/collapse/src/collapse.vue";var ll=ol.exports;ll.install=function(e){e.component(ll.name,ll)};var cl=ll,ul=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-collapse-item",class:{"is-active":e.isActive,"is-disabled":e.disabled}},[i("div",{attrs:{role:"tab","aria-expanded":e.isActive,"aria-controls":"el-collapse-content-"+e.id,"aria-describedby":"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__header",class:{focusing:e.focusing,"is-active":e.isActive},attrs:{role:"button",id:"el-collapse-head-"+e.id,tabindex:e.disabled?void 0:0},on:{click:e.handleHeaderClick,keyup:function(t){return"button"in t||!e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.stopPropagation(),e.handleEnterClick(t)):null},focus:e.handleFocus,blur:function(t){e.focusing=!1}}},[e._t("title",[e._v(e._s(e.title))]),i("i",{staticClass:"el-collapse-item__arrow el-icon-arrow-right",class:{"is-active":e.isActive}})],2)]),i("el-collapse-transition",[i("div",{directives:[{name:"show",rawName:"v-show",value:e.isActive,expression:"isActive"}],staticClass:"el-collapse-item__wrap",attrs:{role:"tabpanel","aria-hidden":!e.isActive,"aria-labelledby":"el-collapse-head-"+e.id,id:"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__content"},[e._t("default")],2)])])],1)};ul._withStripped=!0;var hl=s({name:"ElCollapseItem",componentName:"ElCollapseItem",mixins:[k.a],components:{ElCollapseTransition:ye.a},data:function(){return{contentWrapStyle:{height:"auto",display:"block"},contentHeight:0,focusing:!1,isClick:!1,id:Object(m.generateId)()}},inject:["collapse"],props:{title:String,name:{type:[String,Number],default:function(){return this._uid}},disabled:Boolean},computed:{isActive:function(){return this.collapse.activeNames.indexOf(this.name)>-1}},methods:{handleFocus:function(){var e=this;setTimeout(function(){e.isClick?e.isClick=!1:e.focusing=!0},50)},handleHeaderClick:function(){this.disabled||(this.dispatch("ElCollapse","item-click",this),this.focusing=!1,this.isClick=!0)},handleEnterClick:function(){this.dispatch("ElCollapse","item-click",this)}}},ul,[],!1,null,null,null);hl.options.__file="packages/collapse/src/collapse-item.vue";var dl=hl.exports;dl.install=function(e){e.component(dl.name,dl)};var pl=dl,fl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:function(){return e.toggleDropDownVisible(!1)},expression:"() => toggleDropDownVisible(false)"}],ref:"reference",class:["el-cascader",e.realSize&&"el-cascader--"+e.realSize,{"is-disabled":e.isDisabled}],on:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1},click:function(){return e.toggleDropDownVisible(!e.readonly||void 0)},keydown:e.handleKeyDown}},[i("el-input",{ref:"input",class:{"is-focus":e.dropDownVisible},attrs:{size:e.realSize,placeholder:e.placeholder,readonly:e.readonly,disabled:e.isDisabled,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.handleInput},model:{value:e.multiple?e.presentText:e.inputValue,callback:function(t){e.multiple?e.presentText:e.inputValue=t},expression:"multiple ? presentText : inputValue"}},[i("template",{slot:"suffix"},[e.clearBtnVisible?i("i",{key:"clear",staticClass:"el-input__icon el-icon-circle-close",on:{click:function(t){return t.stopPropagation(),e.handleClear(t)}}}):i("i",{key:"arrow-down",class:["el-input__icon","el-icon-arrow-down",e.dropDownVisible&&"is-reverse"],on:{click:function(t){t.stopPropagation(),e.toggleDropDownVisible()}}})])],2),e.multiple?i("div",{staticClass:"el-cascader__tags"},[e._l(e.presentTags,function(t,n){return i("el-tag",{key:t.key,attrs:{type:"info",size:e.tagSize,hit:t.hitState,closable:t.closable,"disable-transitions":""},on:{close:function(t){e.deleteTag(n)}}},[i("span",[e._v(e._s(t.text))])])}),e.filterable&&!e.isDisabled?i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.inputValue,expression:"inputValue",modifiers:{trim:!0}}],staticClass:"el-cascader__search-input",attrs:{type:"text",placeholder:e.presentTags.length?"":e.placeholder},domProps:{value:e.inputValue},on:{input:[function(t){t.target.composing||(e.inputValue=t.target.value.trim())},function(t){return e.handleInput(e.inputValue,t)}],click:function(t){t.stopPropagation(),e.toggleDropDownVisible(!0)},keydown:function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.handleDelete(t):null},blur:function(t){e.$forceUpdate()}}}):e._e()],2):e._e(),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.handleDropdownLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.dropDownVisible,expression:"dropDownVisible"}],ref:"popper",class:["el-popper","el-cascader__dropdown",e.popperClass]},[i("el-cascader-panel",{directives:[{name:"show",rawName:"v-show",value:!e.filtering,expression:"!filtering"}],ref:"panel",attrs:{options:e.options,props:e.config,border:!1,"render-label":e.$scopedSlots.default},on:{"expand-change":e.handleExpandChange,close:function(t){e.toggleDropDownVisible(!1)}},model:{value:e.checkedValue,callback:function(t){e.checkedValue=t},expression:"checkedValue"}}),e.filterable?i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.filtering,expression:"filtering"}],ref:"suggestionPanel",staticClass:"el-cascader__suggestion-panel",attrs:{tag:"ul","view-class":"el-cascader__suggestion-list"},nativeOn:{keydown:function(t){return e.handleSuggestionKeyDown(t)}}},[e.suggestions.length?e._l(e.suggestions,function(t,n){return i("li",{key:t.uid,class:["el-cascader__suggestion-item",t.checked&&"is-checked"],attrs:{tabindex:-1},on:{click:function(t){e.handleSuggestionClick(n)}}},[i("span",[e._v(e._s(t.text))]),t.checked?i("i",{staticClass:"el-icon-check"}):e._e()])}):e._t("empty",[i("li",{staticClass:"el-cascader__empty-text"},[e._v(e._s(e.t("el.cascader.noMatch")))])])],2):e._e()],1)])],1)};fl._withStripped=!0;var ml=i(42),vl=i.n(ml),gl=i(33),bl=i.n(gl),yl=bl.a.keys,xl={expandTrigger:{newProp:"expandTrigger",type:String},changeOnSelect:{newProp:"checkStrictly",type:Boolean},hoverThreshold:{newProp:"hoverThreshold",type:Number}},_l={props:{placement:{type:String,default:"bottom-start"},appendToBody:j.a.props.appendToBody,visibleArrow:{type:Boolean,default:!0},arrowOffset:j.a.props.arrowOffset,offset:j.a.props.offset,boundariesPadding:j.a.props.boundariesPadding,popperOptions:j.a.props.popperOptions},methods:j.a.methods,data:j.a.data,beforeDestroy:j.a.beforeDestroy},Cl={medium:36,small:32,mini:28},wl=s({name:"ElCascader",directives:{Clickoutside:P.a},mixins:[_l,k.a,f.a,C.a],inject:{elForm:{default:""},elFormItem:{default:""}},components:{ElInput:d.a,ElTag:Nt.a,ElScrollbar:L.a,ElCascaderPanel:vl.a},props:{value:{},options:Array,props:Object,size:String,placeholder:{type:String,default:function(){return Object(Ft.t)("el.cascader.placeholder")}},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:Function,separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,debounce:{type:Number,default:300},beforeFilter:{type:Function,default:function(){return function(){}}},popperClass:String},data:function(){return{dropDownVisible:!1,checkedValue:this.value||null,inputHover:!1,inputValue:null,presentText:null,presentTags:[],checkedNodes:[],filtering:!1,suggestions:[],inputInitialHeight:0,pressDeleteCount:0}},computed:{realSize:function(){var e=(this.elFormItem||{}).elFormItemSize;return this.size||e||(this.$ELEMENT||{}).size},tagSize:function(){return["small","mini"].indexOf(this.realSize)>-1?"mini":"small"},isDisabled:function(){return this.disabled||(this.elForm||{}).disabled},config:function(){var e=this.props||{},t=this.$attrs;return Object.keys(xl).forEach(function(i){var n=xl[i],s=n.newProp,r=n.type,a=t[i]||t[Object(m.kebabCase)(i)];Object(zt.isDef)(i)&&!Object(zt.isDef)(e[s])&&(r===Boolean&&""===a&&(a=!0),e[s]=a)}),e},multiple:function(){return this.config.multiple},leafOnly:function(){return!this.config.checkStrictly},readonly:function(){return!this.filterable||this.multiple},clearBtnVisible:function(){return!(!this.clearable||this.isDisabled||this.filtering||!this.inputHover)&&(this.multiple?!!this.checkedNodes.filter(function(e){return!e.isDisabled}).length:!!this.presentText)},panel:function(){return this.$refs.panel}},watch:{value:function(e){Object(m.isEqual)(e,this.checkedValue)||(this.checkedValue=e,this.computePresentContent())},checkedValue:function(e){var t=this.value;Object(m.isEqual)(e,t)&&!Object(No.isUndefined)(t)||(this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",[e]),this.computePresentContent())},options:{handler:function(){this.$nextTick(this.computePresentContent)},deep:!0},presentText:function(e){this.inputValue=e},presentTags:function(e,t){this.multiple&&(e.length||t.length)&&this.$nextTick(this.updateStyle)},filtering:function(e){this.$nextTick(this.updatePopper)}},mounted:function(){var e=this,t=this.$refs.input;t&&t.$el&&(this.inputInitialHeight=t.$el.offsetHeight||Cl[this.realSize]||40),Object(m.isEmpty)(this.value)||this.computePresentContent(),this.filterHandler=T()(this.debounce,function(){var t=e.inputValue;if(t){var i=e.beforeFilter(t);i&&i.then?i.then(e.getSuggestions):!1!==i?e.getSuggestions():e.filtering=!1}else e.filtering=!1}),Object(jt.addResizeListener)(this.$el,this.updateStyle)},beforeDestroy:function(){Object(jt.removeResizeListener)(this.$el,this.updateStyle)},methods:{getMigratingConfig:function(){return{props:{"expand-trigger":"expand-trigger is removed, use `props.expandTrigger` instead.","change-on-select":"change-on-select is removed, use `props.checkStrictly` instead.","hover-threshold":"hover-threshold is removed, use `props.hoverThreshold` instead"},events:{"active-item-change":"active-item-change is renamed to expand-change"}}},toggleDropDownVisible:function(e){var t=this;if(!this.isDisabled){var i=this.dropDownVisible,n=this.$refs.input;(e=Object(zt.isDef)(e)?e:!i)!==i&&(this.dropDownVisible=e,e&&this.$nextTick(function(){t.updatePopper(),t.panel.scrollIntoView()}),n.$refs.input.setAttribute("aria-expanded",e),this.$emit("visible-change",e))}},handleDropdownLeave:function(){this.filtering=!1,this.inputValue=this.presentText},handleKeyDown:function(e){switch(e.keyCode){case yl.enter:this.toggleDropDownVisible();break;case yl.down:this.toggleDropDownVisible(!0),this.focusFirstNode(),e.preventDefault();break;case yl.esc:case yl.tab:this.toggleDropDownVisible(!1)}},handleFocus:function(e){this.$emit("focus",e)},handleBlur:function(e){this.$emit("blur",e)},handleInput:function(e,t){!this.dropDownVisible&&this.toggleDropDownVisible(!0),t&&t.isComposing||(e?this.filterHandler():this.filtering=!1)},handleClear:function(){this.presentText="",this.panel.clearCheckedNodes()},handleExpandChange:function(e){this.$nextTick(this.updatePopper.bind(this)),this.$emit("expand-change",e),this.$emit("active-item-change",e)},focusFirstNode:function(){var e=this;this.$nextTick(function(){var t=e.filtering,i=e.$refs,n=i.popper,s=i.suggestionPanel,r=null;t&&s?r=s.$el.querySelector(".el-cascader__suggestion-item"):r=n.querySelector(".el-cascader-menu").querySelector('.el-cascader-node[tabindex="-1"]');r&&(r.focus(),!t&&r.click())})},computePresentContent:function(){var e=this;this.$nextTick(function(){var t=e.config,i=t.multiple,n=t.checkStrictly;i?(e.computePresentTags(),e.presentText=e.presentTags.length?" ":null):(e.computePresentText(),!n&&e.dropDownVisible&&e.toggleDropDownVisible(!1))})},computePresentText:function(){var e=this.checkedValue,t=this.config;if(!Object(m.isEmpty)(e)){var i=this.panel.getNodeByValue(e);if(i&&(t.checkStrictly||i.isLeaf))return void(this.presentText=i.getText(this.showAllLevels,this.separator))}this.presentText=null},computePresentTags:function(){var e=this.isDisabled,t=this.leafOnly,i=this.showAllLevels,n=this.separator,s=this.collapseTags,r=this.getCheckedNodes(t),a=[],o=function(t){return{node:t,key:t.uid,text:t.getText(i,n),hitState:!1,closable:!e&&!t.isDisabled}};if(r.length){var l=r[0],c=r.slice(1),u=c.length;a.push(o(l)),u&&(s?a.push({key:-1,text:"+ "+u,closable:!1}):c.forEach(function(e){return a.push(o(e))}))}this.checkedNodes=r,this.presentTags=a},getSuggestions:function(){var e=this,t=this.filterMethod;Object(No.isFunction)(t)||(t=function(e,t){return e.text.includes(t)});var i=this.panel.getFlattedNodes(this.leafOnly).filter(function(i){return!i.isDisabled&&(i.text=i.getText(e.showAllLevels,e.separator)||"",t(i,e.inputValue))});this.multiple?this.presentTags.forEach(function(e){e.hitState=!1}):i.forEach(function(t){t.checked=Object(m.isEqual)(e.checkedValue,t.getValueByOption())}),this.filtering=!0,this.suggestions=i,this.$nextTick(this.updatePopper)},handleSuggestionKeyDown:function(e){var t=e.keyCode,i=e.target;switch(t){case yl.enter:i.click();break;case yl.up:var n=i.previousElementSibling;n&&n.focus();break;case yl.down:var s=i.nextElementSibling;s&&s.focus();break;case yl.esc:case yl.tab:this.toggleDropDownVisible(!1)}},handleDelete:function(){var e=this.inputValue,t=this.pressDeleteCount,i=this.presentTags,n=i.length-1,s=i[n];this.pressDeleteCount=e?0:t+1,s&&this.pressDeleteCount&&(s.hitState?this.deleteTag(n):s.hitState=!0)},handleSuggestionClick:function(e){var t=this.multiple,i=this.suggestions[e];if(t){var n=i.checked;i.doCheck(!n),this.panel.calculateMultiCheckedValue()}else this.checkedValue=i.getValueByOption(),this.toggleDropDownVisible(!1)},deleteTag:function(e){var t=this.checkedValue,i=t[e];this.checkedValue=t.filter(function(t,i){return i!==e}),this.$emit("remove-tag",i)},updateStyle:function(){var e=this.$el,t=this.inputInitialHeight;if(!this.$isServer&&e){var i=this.$refs.suggestionPanel,n=e.querySelector(".el-input__inner");if(n){var s=e.querySelector(".el-cascader__tags"),r=null;if(i&&(r=i.$el))r.querySelector(".el-cascader__suggestion-list").style.minWidth=n.offsetWidth+"px";if(s){var a=s.offsetHeight,o=Math.max(a+6,t)+"px";n.style.height=o,this.updatePopper()}}}},getCheckedNodes:function(e){return this.panel.getCheckedNodes(e)}}},fl,[],!1,null,null,null);wl.options.__file="packages/cascader/src/cascader.vue";var kl=wl.exports;kl.install=function(e){e.component(kl.name,kl)};var Sl=kl,Dl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.hide,expression:"hide"}],class:["el-color-picker",e.colorDisabled?"is-disabled":"",e.colorSize?"el-color-picker--"+e.colorSize:""]},[e.colorDisabled?i("div",{staticClass:"el-color-picker__mask"}):e._e(),i("div",{staticClass:"el-color-picker__trigger",on:{click:e.handleTrigger}},[i("span",{staticClass:"el-color-picker__color",class:{"is-alpha":e.showAlpha}},[i("span",{staticClass:"el-color-picker__color-inner",style:{backgroundColor:e.displayedColor}}),e.value||e.showPanelColor?e._e():i("span",{staticClass:"el-color-picker__empty el-icon-close"})]),i("span",{directives:[{name:"show",rawName:"v-show",value:e.value||e.showPanelColor,expression:"value || showPanelColor"}],staticClass:"el-color-picker__icon el-icon-arrow-down"})]),i("picker-dropdown",{ref:"dropdown",class:["el-color-picker__panel",e.popperClass||""],attrs:{color:e.color,"show-alpha":e.showAlpha,predefine:e.predefine},on:{pick:e.confirmValue,clear:e.clearValue},model:{value:e.showPicker,callback:function(t){e.showPicker=t},expression:"showPicker"}})],1)};Dl._withStripped=!0;var $l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var Ol=function(e,t,i){return[e,t*i/((e=(2-t)*i)<1?e:2-e)||0,e/2]},El=function(e,t){(function(e){return"string"==typeof e&&-1!==e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var i=function(e){return"string"==typeof e&&-1!==e.indexOf("%")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),i&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},Tl={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},Ml={A:10,B:11,C:12,D:13,E:14,F:15},Pl=function(e){return 2===e.length?16*(Ml[e[0].toUpperCase()]||+e[0])+(Ml[e[1].toUpperCase()]||+e[1]):Ml[e[1].toUpperCase()]||+e[1]},Il=function(e,t,i){e=El(e,255),t=El(t,255),i=El(i,255);var n,s=Math.max(e,t,i),r=Math.min(e,t,i),a=void 0,o=s,l=s-r;if(n=0===s?0:l/s,s===r)a=0;else{switch(s){case e:a=(t-i)/l+(t2?parseFloat(e):parseInt(e,10)});if(4===n.length?this._alpha=Math.floor(100*parseFloat(n[3])):3===n.length&&(this._alpha=100),n.length>=3){var s=function(e,t,i){i/=100;var n=t/=100,s=Math.max(i,.01);return t*=(i*=2)<=1?i:2-i,n*=s<=1?s:2-s,{h:e,s:100*(0===i?2*n/(s+n):2*t/(i+t)),v:(i+t)/2*100}}(n[0],n[1],n[2]);i(s.h,s.s,s.v)}}else if(-1!==e.indexOf("hsv")){var r=e.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});4===r.length?this._alpha=Math.floor(100*parseFloat(r[3])):3===r.length&&(this._alpha=100),r.length>=3&&i(r[0],r[1],r[2])}else if(-1!==e.indexOf("rgb")){var a=e.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});if(4===a.length?this._alpha=Math.floor(100*parseFloat(a[3])):3===a.length&&(this._alpha=100),a.length>=3){var o=Il(a[0],a[1],a[2]);i(o.h,o.s,o.v)}}else if(-1!==e.indexOf("#")){var l=e.replace("#","").trim();if(!/^(?:[0-9a-fA-F]{3}){1,2}$/.test(l))return;var c=void 0,u=void 0,h=void 0;3===l.length?(c=Pl(l[0]+l[0]),u=Pl(l[1]+l[1]),h=Pl(l[2]+l[2])):6!==l.length&&8!==l.length||(c=Pl(l.substring(0,2)),u=Pl(l.substring(2,4)),h=Pl(l.substring(4,6))),8===l.length?this._alpha=Math.floor(Pl(l.substring(6))/255*100):3!==l.length&&6!==l.length||(this._alpha=100);var d=Il(c,u,h);i(d.h,d.s,d.v)}},e.prototype.compare=function(e){return Math.abs(e._hue-this._hue)<2&&Math.abs(e._saturation-this._saturation)<1&&Math.abs(e._value-this._value)<1&&Math.abs(e._alpha-this._alpha)<1},e.prototype.doOnChange=function(){var e=this._hue,t=this._saturation,i=this._value,n=this._alpha,s=this.format;if(this.enableAlpha)switch(s){case"hsl":var r=Ol(e,t/100,i/100);this.value="hsla("+e+", "+Math.round(100*r[1])+"%, "+Math.round(100*r[2])+"%, "+n/100+")";break;case"hsv":this.value="hsva("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%, "+n/100+")";break;default:var a=Nl(e,t,i),o=a.r,l=a.g,c=a.b;this.value="rgba("+o+", "+l+", "+c+", "+n/100+")"}else switch(s){case"hsl":var u=Ol(e,t/100,i/100);this.value="hsl("+e+", "+Math.round(100*u[1])+"%, "+Math.round(100*u[2])+"%)";break;case"hsv":this.value="hsv("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%)";break;case"rgb":var h=Nl(e,t,i),d=h.r,p=h.g,f=h.b;this.value="rgb("+d+", "+p+", "+f+")";break;default:this.value=function(e){var t=e.r,i=e.g,n=e.b,s=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),i=e%16;return""+(Tl[t]||t)+(Tl[i]||i)};return isNaN(t)||isNaN(i)||isNaN(n)?"":"#"+s(t)+s(i)+s(n)}(Nl(e,t,i))}},e}(),Fl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-color-dropdown"},[i("div",{staticClass:"el-color-dropdown__main-wrapper"},[i("hue-slider",{ref:"hue",staticStyle:{float:"right"},attrs:{color:e.color,vertical:""}}),i("sv-panel",{ref:"sl",attrs:{color:e.color}})],1),e.showAlpha?i("alpha-slider",{ref:"alpha",attrs:{color:e.color}}):e._e(),e.predefine?i("predefine",{attrs:{color:e.color,colors:e.predefine}}):e._e(),i("div",{staticClass:"el-color-dropdown__btns"},[i("span",{staticClass:"el-color-dropdown__value"},[i("el-input",{attrs:{"validate-event":!1,size:"mini"},on:{blur:e.handleConfirm},nativeOn:{keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleConfirm(t):null}},model:{value:e.customInput,callback:function(t){e.customInput=t},expression:"customInput"}})],1),i("el-button",{staticClass:"el-color-dropdown__link-btn",attrs:{size:"mini",type:"text"},on:{click:function(t){e.$emit("clear")}}},[e._v("\n "+e._s(e.t("el.colorpicker.clear"))+"\n ")]),i("el-button",{staticClass:"el-color-dropdown__btn",attrs:{plain:"",size:"mini"},on:{click:e.confirmValue}},[e._v("\n "+e._s(e.t("el.colorpicker.confirm"))+"\n ")])],1)],1)])};Fl._withStripped=!0;var Ll=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-svpanel",style:{backgroundColor:this.background}},[t("div",{staticClass:"el-color-svpanel__white"}),t("div",{staticClass:"el-color-svpanel__black"}),t("div",{staticClass:"el-color-svpanel__cursor",style:{top:this.cursorTop+"px",left:this.cursorLeft+"px"}},[t("div")])])};Ll._withStripped=!0;var Al=!1,Vl=function(e,t){if(!di.a.prototype.$isServer){var i=function(e){t.drag&&t.drag(e)},n=function e(n){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e),document.onselectstart=null,document.ondragstart=null,Al=!1,t.end&&t.end(n)};e.addEventListener("mousedown",function(e){Al||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},document.addEventListener("mousemove",i),document.addEventListener("mouseup",n),Al=!0,t.start&&t.start(e))})}},zl=s({name:"el-sl-panel",props:{color:{required:!0}},computed:{colorValue:function(){return{hue:this.color.get("hue"),value:this.color.get("value")}}},watch:{colorValue:function(){this.update()}},methods:{update:function(){var e=this.color.get("saturation"),t=this.color.get("value"),i=this.$el,n=i.clientWidth,s=i.clientHeight;this.cursorLeft=e*n/100,this.cursorTop=(100-t)*s/100,this.background="hsl("+this.color.get("hue")+", 100%, 50%)"},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=e.clientX-t.left,n=e.clientY-t.top;i=Math.max(0,i),i=Math.min(i,t.width),n=Math.max(0,n),n=Math.min(n,t.height),this.cursorLeft=i,this.cursorTop=n,this.color.set({saturation:i/t.width*100,value:100-n/t.height*100})}},mounted:function(){var e=this;Vl(this.$el,{drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}}),this.update()},data:function(){return{cursorTop:0,cursorLeft:0,background:"hsl(0, 100%, 50%)"}}},Ll,[],!1,null,null,null);zl.options.__file="packages/color-picker/src/components/sv-panel.vue";var Bl=zl.exports,Rl=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-hue-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-hue-slider__bar",on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-hue-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};Rl._withStripped=!0;var Hl=s({name:"el-color-hue-slider",props:{color:{required:!0},vertical:Boolean},data:function(){return{thumbLeft:0,thumbTop:0}},computed:{hueValue:function(){return this.color.get("hue")}},watch:{hueValue:function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb,n=void 0;if(this.vertical){var s=e.clientY-t.top;s=Math.min(s,t.height-i.offsetHeight/2),s=Math.max(i.offsetHeight/2,s),n=Math.round((s-i.offsetHeight/2)/(t.height-i.offsetHeight)*360)}else{var r=e.clientX-t.left;r=Math.min(r,t.width-i.offsetWidth/2),r=Math.max(i.offsetWidth/2,r),n=Math.round((r-i.offsetWidth/2)/(t.width-i.offsetWidth)*360)}this.color.set("hue",n)},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/360)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/360)},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop()}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,s={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Vl(i,s),Vl(n,s),this.update()}},Rl,[],!1,null,null,null);Hl.options.__file="packages/color-picker/src/components/hue-slider.vue";var Wl=Hl.exports,ql=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-alpha-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-alpha-slider__bar",style:{background:this.background},on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-alpha-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};ql._withStripped=!0;var Kl=s({name:"el-color-alpha-slider",props:{color:{required:!0},vertical:Boolean},watch:{"color._alpha":function(){this.update()},"color.value":function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb;if(this.vertical){var n=e.clientY-t.top;n=Math.max(i.offsetHeight/2,n),n=Math.min(n,t.height-i.offsetHeight/2),this.color.set("alpha",Math.round((n-i.offsetHeight/2)/(t.height-i.offsetHeight)*100))}else{var s=e.clientX-t.left;s=Math.max(i.offsetWidth/2,s),s=Math.min(s,t.width-i.offsetWidth/2),this.color.set("alpha",Math.round((s-i.offsetWidth/2)/(t.width-i.offsetWidth)*100))}},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/100)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/100)},getBackground:function(){if(this.color&&this.color.value){var e=this.color.toRgb(),t=e.r,i=e.g,n=e.b;return"linear-gradient(to right, rgba("+t+", "+i+", "+n+", 0) 0%, rgba("+t+", "+i+", "+n+", 1) 100%)"}return null},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop(),this.background=this.getBackground()}},data:function(){return{thumbLeft:0,thumbTop:0,background:null}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,s={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Vl(i,s),Vl(n,s),this.update()}},ql,[],!1,null,null,null);Kl.options.__file="packages/color-picker/src/components/alpha-slider.vue";var Yl=Kl.exports,Ul=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-color-predefine"},[i("div",{staticClass:"el-color-predefine__colors"},e._l(e.rgbaColors,function(t,n){return i("div",{key:e.colors[n],staticClass:"el-color-predefine__color-selector",class:{selected:t.selected,"is-alpha":t._alpha<100},on:{click:function(t){e.handleSelect(n)}}},[i("div",{style:{"background-color":t.value}})])}),0)])};Ul._withStripped=!0;var Gl=s({props:{colors:{type:Array,required:!0},color:{required:!0}},data:function(){return{rgbaColors:this.parseColors(this.colors,this.color)}},methods:{handleSelect:function(e){this.color.fromString(this.colors[e])},parseColors:function(e,t){return e.map(function(e){var i=new jl;return i.enableAlpha=!0,i.format="rgba",i.fromString(e),i.selected=i.value===t.value,i})}},watch:{"$parent.currentColor":function(e){var t=new jl;t.fromString(e),this.rgbaColors.forEach(function(e){e.selected=t.compare(e)})},colors:function(e){this.rgbaColors=this.parseColors(e,this.color)},color:function(e){this.rgbaColors=this.parseColors(this.colors,e)}}},Ul,[],!1,null,null,null);Gl.options.__file="packages/color-picker/src/components/predefine.vue";var Xl=Gl.exports,Ql=s({name:"el-color-picker-dropdown",mixins:[j.a,f.a],components:{SvPanel:Bl,HueSlider:Wl,AlphaSlider:Yl,ElInput:d.a,ElButton:K.a,Predefine:Xl},props:{color:{required:!0},showAlpha:Boolean,predefine:Array},data:function(){return{customInput:""}},computed:{currentColor:function(){var e=this.$parent;return e.value||e.showPanelColor?e.color.value:""}},methods:{confirmValue:function(){this.$emit("pick")},handleConfirm:function(){this.color.fromString(this.customInput)}},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$el},watch:{showPopper:function(e){var t=this;!0===e&&this.$nextTick(function(){var e=t.$refs,i=e.sl,n=e.hue,s=e.alpha;i&&i.update(),n&&n.update(),s&&s.update()})},currentColor:{immediate:!0,handler:function(e){this.customInput=e}}}},Fl,[],!1,null,null,null);Ql.options.__file="packages/color-picker/src/components/picker-dropdown.vue";var Jl=Ql.exports,Zl=s({name:"ElColorPicker",mixins:[k.a],props:{value:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:String,popperClass:String,predefine:Array},inject:{elForm:{default:""},elFormItem:{default:""}},directives:{Clickoutside:P.a},computed:{displayedColor:function(){return this.value||this.showPanelColor?this.displayedRgb(this.color,this.showAlpha):"transparent"},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},colorSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},colorDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){e?e&&e!==this.color.value&&this.color.fromString(e):this.showPanelColor=!1},color:{deep:!0,handler:function(){this.showPanelColor=!0}},displayedColor:function(e){if(this.showPicker){var t=new jl({enableAlpha:this.showAlpha,format:this.colorFormat});t.fromString(this.value),e!==this.displayedRgb(t,this.showAlpha)&&this.$emit("active-change",e)}}},methods:{handleTrigger:function(){this.colorDisabled||(this.showPicker=!this.showPicker)},confirmValue:function(){var e=this.color.value;this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",e),this.showPicker=!1},clearValue:function(){this.$emit("input",null),this.$emit("change",null),null!==this.value&&this.dispatch("ElFormItem","el.form.change",null),this.showPanelColor=!1,this.showPicker=!1,this.resetColor()},hide:function(){this.showPicker=!1,this.resetColor()},resetColor:function(){var e=this;this.$nextTick(function(t){e.value?e.color.fromString(e.value):e.showPanelColor=!1})},displayedRgb:function(e,t){if(!(e instanceof jl))throw Error("color should be instance of Color Class");var i=e.toRgb(),n=i.r,s=i.g,r=i.b;return t?"rgba("+n+", "+s+", "+r+", "+e.get("alpha")/100+")":"rgb("+n+", "+s+", "+r+")"}},mounted:function(){var e=this.value;e&&this.color.fromString(e),this.popperElm=this.$refs.dropdown.$el},data:function(){return{color:new jl({enableAlpha:this.showAlpha,format:this.colorFormat}),showPicker:!1,showPanelColor:!1}},components:{PickerDropdown:Jl}},Dl,[],!1,null,null,null);Zl.options.__file="packages/color-picker/src/main.vue";var ec=Zl.exports;ec.install=function(e){e.component(ec.name,ec)};var tc=ec,ic=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer"},[i("transfer-panel",e._b({ref:"leftPanel",attrs:{data:e.sourceData,title:e.titles[0]||e.t("el.transfer.titles.0"),"default-checked":e.leftDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onSourceCheckedChange}},"transfer-panel",e.$props,!1),[e._t("left-footer")],2),i("div",{staticClass:"el-transfer__buttons"},[i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.rightChecked.length},nativeOn:{click:function(t){return e.addToLeft(t)}}},[i("i",{staticClass:"el-icon-arrow-left"}),void 0!==e.buttonTexts[0]?i("span",[e._v(e._s(e.buttonTexts[0]))]):e._e()]),i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.leftChecked.length},nativeOn:{click:function(t){return e.addToRight(t)}}},[void 0!==e.buttonTexts[1]?i("span",[e._v(e._s(e.buttonTexts[1]))]):e._e(),i("i",{staticClass:"el-icon-arrow-right"})])],1),i("transfer-panel",e._b({ref:"rightPanel",attrs:{data:e.targetData,title:e.titles[1]||e.t("el.transfer.titles.1"),"default-checked":e.rightDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onTargetCheckedChange}},"transfer-panel",e.$props,!1),[e._t("right-footer")],2)],1)};ic._withStripped=!0;var nc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer-panel"},[i("p",{staticClass:"el-transfer-panel__header"},[i("el-checkbox",{attrs:{indeterminate:e.isIndeterminate},on:{change:e.handleAllCheckedChange},model:{value:e.allChecked,callback:function(t){e.allChecked=t},expression:"allChecked"}},[e._v("\n "+e._s(e.title)+"\n "),i("span",[e._v(e._s(e.checkedSummary))])])],1),i("div",{class:["el-transfer-panel__body",e.hasFooter?"is-with-footer":""]},[e.filterable?i("el-input",{staticClass:"el-transfer-panel__filter",attrs:{size:"small",placeholder:e.placeholder},nativeOn:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1}},model:{value:e.query,callback:function(t){e.query=t},expression:"query"}},[i("i",{class:["el-input__icon","el-icon-"+e.inputIcon],attrs:{slot:"prefix"},on:{click:e.clearQuery},slot:"prefix"})]):e._e(),i("el-checkbox-group",{directives:[{name:"show",rawName:"v-show",value:!e.hasNoMatch&&e.data.length>0,expression:"!hasNoMatch && data.length > 0"}],staticClass:"el-transfer-panel__list",class:{"is-filterable":e.filterable},model:{value:e.checked,callback:function(t){e.checked=t},expression:"checked"}},e._l(e.filteredData,function(t){return i("el-checkbox",{key:t[e.keyProp],staticClass:"el-transfer-panel__item",attrs:{label:t[e.keyProp],disabled:t[e.disabledProp]}},[i("option-content",{attrs:{option:t}})],1)}),1),i("p",{directives:[{name:"show",rawName:"v-show",value:e.hasNoMatch,expression:"hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noMatch")))]),i("p",{directives:[{name:"show",rawName:"v-show",value:0===e.data.length&&!e.hasNoMatch,expression:"data.length === 0 && !hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noData")))])],1),e.hasFooter?i("p",{staticClass:"el-transfer-panel__footer"},[e._t("default")],2):e._e()])};nc._withStripped=!0;var sc=s({mixins:[f.a],name:"ElTransferPanel",componentName:"ElTransferPanel",components:{ElCheckboxGroup:Ki.a,ElCheckbox:ri.a,ElInput:d.a,OptionContent:{props:{option:Object},render:function(e){var t=function e(t){return"ElTransferPanel"===t.$options.componentName?t:t.$parent?e(t.$parent):t}(this),i=t.$parent||t;return t.renderContent?t.renderContent(e,this.option):i.$scopedSlots.default?i.$scopedSlots.default({option:this.option}):e("span",[this.option[t.labelProp]||this.option[t.keyProp]])}}},props:{data:{type:Array,default:function(){return[]}},renderContent:Function,placeholder:String,title:String,filterable:Boolean,format:Object,filterMethod:Function,defaultChecked:Array,props:Object},data:function(){return{checked:[],allChecked:!1,query:"",inputHover:!1,checkChangeByUser:!0}},watch:{checked:function(e,t){if(this.updateAllChecked(),this.checkChangeByUser){var i=e.concat(t).filter(function(i){return-1===e.indexOf(i)||-1===t.indexOf(i)});this.$emit("checked-change",e,i)}else this.$emit("checked-change",e),this.checkChangeByUser=!0},data:function(){var e=this,t=[],i=this.filteredData.map(function(t){return t[e.keyProp]});this.checked.forEach(function(e){i.indexOf(e)>-1&&t.push(e)}),this.checkChangeByUser=!1,this.checked=t},checkableData:function(){this.updateAllChecked()},defaultChecked:{immediate:!0,handler:function(e,t){var i=this;if(!t||e.length!==t.length||!e.every(function(e){return t.indexOf(e)>-1})){var n=[],s=this.checkableData.map(function(e){return e[i.keyProp]});e.forEach(function(e){s.indexOf(e)>-1&&n.push(e)}),this.checkChangeByUser=!1,this.checked=n}}}},computed:{filteredData:function(){var e=this;return this.data.filter(function(t){return"function"==typeof e.filterMethod?e.filterMethod(e.query,t):(t[e.labelProp]||t[e.keyProp].toString()).toLowerCase().indexOf(e.query.toLowerCase())>-1})},checkableData:function(){var e=this;return this.filteredData.filter(function(t){return!t[e.disabledProp]})},checkedSummary:function(){var e=this.checked.length,t=this.data.length,i=this.format,n=i.noChecked,s=i.hasChecked;return n&&s?e>0?s.replace(/\${checked}/g,e).replace(/\${total}/g,t):n.replace(/\${total}/g,t):e+"/"+t},isIndeterminate:function(){var e=this.checked.length;return e>0&&e0&&0===this.filteredData.length},inputIcon:function(){return this.query.length>0&&this.inputHover?"circle-close":"search"},labelProp:function(){return this.props.label||"label"},keyProp:function(){return this.props.key||"key"},disabledProp:function(){return this.props.disabled||"disabled"},hasFooter:function(){return!!this.$slots.default}},methods:{updateAllChecked:function(){var e=this,t=this.checkableData.map(function(t){return t[e.keyProp]});this.allChecked=t.length>0&&t.every(function(t){return e.checked.indexOf(t)>-1})},handleAllCheckedChange:function(e){var t=this;this.checked=e?this.checkableData.map(function(e){return e[t.keyProp]}):[]},clearQuery:function(){"circle-close"===this.inputIcon&&(this.query="")}}},nc,[],!1,null,null,null);sc.options.__file="packages/transfer/src/transfer-panel.vue";var rc=sc.exports,ac=s({name:"ElTransfer",mixins:[k.a,f.a,C.a],components:{TransferPanel:rc,ElButton:K.a},props:{data:{type:Array,default:function(){return[]}},titles:{type:Array,default:function(){return[]}},buttonTexts:{type:Array,default:function(){return[]}},filterPlaceholder:{type:String,default:""},filterMethod:Function,leftDefaultChecked:{type:Array,default:function(){return[]}},rightDefaultChecked:{type:Array,default:function(){return[]}},renderContent:Function,value:{type:Array,default:function(){return[]}},format:{type:Object,default:function(){return{}}},filterable:Boolean,props:{type:Object,default:function(){return{label:"label",key:"key",disabled:"disabled"}}},targetOrder:{type:String,default:"original"}},data:function(){return{leftChecked:[],rightChecked:[]}},computed:{dataObj:function(){var e=this.props.key;return this.data.reduce(function(t,i){return(t[i[e]]=i)&&t},{})},sourceData:function(){var e=this;return this.data.filter(function(t){return-1===e.value.indexOf(t[e.props.key])})},targetData:function(){var e=this;return"original"===this.targetOrder?this.data.filter(function(t){return e.value.indexOf(t[e.props.key])>-1}):this.value.reduce(function(t,i){var n=e.dataObj[i];return n&&t.push(n),t},[])},hasButtonTexts:function(){return 2===this.buttonTexts.length}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}},methods:{getMigratingConfig:function(){return{props:{"footer-format":"footer-format is renamed to format."}}},onSourceCheckedChange:function(e,t){this.leftChecked=e,void 0!==t&&this.$emit("left-check-change",e,t)},onTargetCheckedChange:function(e,t){this.rightChecked=e,void 0!==t&&this.$emit("right-check-change",e,t)},addToLeft:function(){var e=this.value.slice();this.rightChecked.forEach(function(t){var i=e.indexOf(t);i>-1&&e.splice(i,1)}),this.$emit("input",e),this.$emit("change",e,"left",this.rightChecked)},addToRight:function(){var e=this,t=this.value.slice(),i=[],n=this.props.key;this.data.forEach(function(t){var s=t[n];e.leftChecked.indexOf(s)>-1&&-1===e.value.indexOf(s)&&i.push(s)}),t="unshift"===this.targetOrder?i.concat(t):t.concat(i),this.$emit("input",t),this.$emit("change",t,"right",this.leftChecked)},clearQuery:function(e){"left"===e?this.$refs.leftPanel.query="":"right"===e&&(this.$refs.rightPanel.query="")}}},ic,[],!1,null,null,null);ac.options.__file="packages/transfer/src/main.vue";var oc=ac.exports;oc.install=function(e){e.component(oc.name,oc)};var lc=oc,cc=function(){var e=this.$createElement;return(this._self._c||e)("section",{staticClass:"el-container",class:{"is-vertical":this.isVertical}},[this._t("default")],2)};cc._withStripped=!0;var uc=s({name:"ElContainer",componentName:"ElContainer",props:{direction:String},computed:{isVertical:function(){return"vertical"===this.direction||"horizontal"!==this.direction&&(!(!this.$slots||!this.$slots.default)&&this.$slots.default.some(function(e){var t=e.componentOptions&&e.componentOptions.tag;return"el-header"===t||"el-footer"===t}))}}},cc,[],!1,null,null,null);uc.options.__file="packages/container/src/main.vue";var hc=uc.exports;hc.install=function(e){e.component(hc.name,hc)};var dc=hc,pc=function(){var e=this.$createElement;return(this._self._c||e)("header",{staticClass:"el-header",style:{height:this.height}},[this._t("default")],2)};pc._withStripped=!0;var fc=s({name:"ElHeader",componentName:"ElHeader",props:{height:{type:String,default:"60px"}}},pc,[],!1,null,null,null);fc.options.__file="packages/header/src/main.vue";var mc=fc.exports;mc.install=function(e){e.component(mc.name,mc)};var vc=mc,gc=function(){var e=this.$createElement;return(this._self._c||e)("aside",{staticClass:"el-aside",style:{width:this.width}},[this._t("default")],2)};gc._withStripped=!0;var bc=s({name:"ElAside",componentName:"ElAside",props:{width:{type:String,default:"300px"}}},gc,[],!1,null,null,null);bc.options.__file="packages/aside/src/main.vue";var yc=bc.exports;yc.install=function(e){e.component(yc.name,yc)};var xc=yc,_c=function(){var e=this.$createElement;return(this._self._c||e)("main",{staticClass:"el-main"},[this._t("default")],2)};_c._withStripped=!0;var Cc=s({name:"ElMain",componentName:"ElMain"},_c,[],!1,null,null,null);Cc.options.__file="packages/main/src/main.vue";var wc=Cc.exports;wc.install=function(e){e.component(wc.name,wc)};var kc=wc,Sc=function(){var e=this.$createElement;return(this._self._c||e)("footer",{staticClass:"el-footer",style:{height:this.height}},[this._t("default")],2)};Sc._withStripped=!0;var Dc=s({name:"ElFooter",componentName:"ElFooter",props:{height:{type:String,default:"60px"}}},Sc,[],!1,null,null,null);Dc.options.__file="packages/footer/src/main.vue";var $c=Dc.exports;$c.install=function(e){e.component($c.name,$c)};var Oc=$c,Ec=s({name:"ElTimeline",props:{reverse:{type:Boolean,default:!1}},provide:function(){return{timeline:this}},render:function(){var e=arguments[0],t=this.reverse,i={"el-timeline":!0,"is-reverse":t},n=this.$slots.default||[];return t&&(n=n.reverse()),e("ul",{class:i},[n])}},void 0,void 0,!1,null,null,null);Ec.options.__file="packages/timeline/src/main.vue";var Tc=Ec.exports;Tc.install=function(e){e.component(Tc.name,Tc)};var Mc=Tc,Pc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-timeline-item"},[i("div",{staticClass:"el-timeline-item__tail"}),e.$slots.dot?e._e():i("div",{staticClass:"el-timeline-item__node",class:["el-timeline-item__node--"+(e.size||""),"el-timeline-item__node--"+(e.type||"")],style:{backgroundColor:e.color}},[e.icon?i("i",{staticClass:"el-timeline-item__icon",class:e.icon}):e._e()]),e.$slots.dot?i("div",{staticClass:"el-timeline-item__dot"},[e._t("dot")],2):e._e(),i("div",{staticClass:"el-timeline-item__wrapper"},[e.hideTimestamp||"top"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-top"},[e._v("\n "+e._s(e.timestamp)+"\n ")]),i("div",{staticClass:"el-timeline-item__content"},[e._t("default")],2),e.hideTimestamp||"bottom"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-bottom"},[e._v("\n "+e._s(e.timestamp)+"\n ")])])])};Pc._withStripped=!0;var Ic=s({name:"ElTimelineItem",inject:["timeline"],props:{timestamp:String,hideTimestamp:{type:Boolean,default:!1},placement:{type:String,default:"bottom"},type:String,color:String,size:{type:String,default:"normal"},icon:String}},Pc,[],!1,null,null,null);Ic.options.__file="packages/timeline/src/item.vue";var Nc=Ic.exports;Nc.install=function(e){e.component(Nc.name,Nc)};var jc=Nc,Fc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",e._b({class:["el-link",e.type?"el-link--"+e.type:"",e.disabled&&"is-disabled",e.underline&&!e.disabled&&"is-underline"],attrs:{href:e.disabled?null:e.href},on:{click:e.handleClick}},"a",e.$attrs,!1),[e.icon?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",{staticClass:"el-link--inner"},[e._t("default")],2):e._e(),e.$slots.icon?[e.$slots.icon?e._t("icon"):e._e()]:e._e()],2)};Fc._withStripped=!0;var Lc=s({name:"ElLink",props:{type:{type:String,default:"default"},underline:{type:Boolean,default:!0},disabled:Boolean,href:String,icon:String},methods:{handleClick:function(e){this.disabled||this.href||this.$emit("click",e)}}},Fc,[],!1,null,null,null);Lc.options.__file="packages/link/src/main.vue";var Ac=Lc.exports;Ac.install=function(e){e.component(Ac.name,Ac)};var Vc=Ac,zc={functional:!0,name:"ElDivider",props:{direction:{type:String,default:"horizontal",validator:function(e){return-1!==["horizontal","vertical"].indexOf(e)}},contentPosition:{type:String,default:"center",validator:function(e){return-1!==["left","center","right"].indexOf(e)}}},render:function(e,t){var i=t.slots(),n=t.props,s=n.direction,r=n.contentPosition;return e("div",{class:["el-divider","el-divider--"+s]},[i.default&&"vertical"!==s?e("div",{class:["el-divider__text","is-"+r]},[i.default]):null])},install:function(e){e.component(zc.name,zc)}},Bc=zc,Rc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-image"},[e.loading?e._t("placeholder",[i("div",{staticClass:"el-image__placeholder"})]):e.error?e._t("error",[i("div",{staticClass:"el-image__error"},[e._v(e._s(e.t("el.image.error")))])]):i("img",e._g(e._b({staticClass:"el-image__inner",class:{"el-image__inner--center":e.alignCenter},style:e.imageStyle,attrs:{src:e.src}},"img",e.$attrs,!1),e.$listeners))],2)};Rc._withStripped=!0;var Hc=function(){return void 0!==document.documentElement.style.objectFit},Wc="none",qc="contain",Kc="cover",Yc="fill",Uc="scale-down",Gc=s({name:"ElImage",mixins:[f.a],inheritAttrs:!1,props:{src:String,fit:String,lazy:Boolean,scrollContainer:{}},data:function(){return{loading:!0,error:!1,show:!this.lazy,imageWidth:0,imageHeight:0}},computed:{imageStyle:function(){var e=this.fit;return!this.$isServer&&e?Hc()?{"object-fit":e}:this.getImageStyle(e):{}},alignCenter:function(){return!this.$isServer&&!Hc()&&this.fit!==Yc}},watch:{src:function(e){this.show&&this.loadImage()},show:function(e){e&&this.loadImage()}},mounted:function(){this.lazy?this.addLazyLoadListener():this.loadImage()},beforeDestroy:function(){this.lazy&&this.removeLazyLoadListener()},methods:{loadImage:function(){var e=this;if(!this.$isServer){this.loading=!0,this.error=!1;var t=new Image;t.onload=function(i){return e.handleLoad(i,t)},t.onerror=this.handleError.bind(this),Object.keys(this.$attrs).forEach(function(i){var n=e.$attrs[i];t.setAttribute(i,n)}),t.src=this.src}},handleLoad:function(e,t){this.imageWidth=t.width,this.imageHeight=t.height,this.loading=!1},handleError:function(e){this.loading=!1,this.error=!0,this.$emit("error",e)},handleLazyLoad:function(){Object(fe.isInContainer)(this.$el,this._scrollContainer)&&(this.show=!0,this.removeLazyLoadListener())},addLazyLoadListener:function(){if(!this.$isServer){var e=this.scrollContainer,t=null;(t=Object(No.isHtmlElement)(e)?e:Object(No.isString)(e)?document.querySelector(e):Object(fe.getScrollContainer)(this.$el))&&(this._scrollContainer=t,this._lazyLoadHandler=Uo()(200,this.handleLazyLoad),Object(fe.on)(t,"scroll",this._lazyLoadHandler),this.handleLazyLoad())}},removeLazyLoadListener:function(){var e=this._scrollContainer,t=this._lazyLoadHandler;!this.$isServer&&e&&t&&(Object(fe.off)(e,"scroll",t),this._scrollContainer=null,this._lazyLoadHandler=null)},getImageStyle:function(e){var t=this.imageWidth,i=this.imageHeight,n=this.$el,s=n.clientWidth,r=n.clientHeight;if(!(t&&i&&s&&r))return{};var a=t/i<1;e===Uc&&(e=tr)return console.warn("[ElementCalendar]end time should be greater than start time"),[];if(Object(fn.validateRangeInOneMonth)(s,r))return[[s,r]];var a=[],o=new Date(s.getFullYear(),s.getMonth()+1,1),l=this.toDate(o.getTime()-864e5);if(!Object(fn.validateRangeInOneMonth)(o,r))return console.warn("[ElementCalendar]start time and end time interval must not exceed two months"),[];a.push([s,l]);var c=o.getDay();return c=c<=1?Math.abs(c-1):8-c,(o=this.toDate(o.getTime()+864e5*c)).getDate()6?0:Math.floor(this.firstDayOfWeek)}},data:function(){return{selectedDay:"",now:new Date}}},Jc,[],!1,null,null,null);ru.options.__file="packages/calendar/src/main.vue";var au=ru.exports;au.install=function(e){e.component(au.name,au)};var ou=au,lu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-fade-in"}},[e.visible?i("div",{staticClass:"el-backtop",style:{right:e.styleRight,bottom:e.styleBottom},on:{click:function(t){return t.stopPropagation(),e.handleClick(t)}}},[e._t("default",[i("el-icon",{attrs:{name:"caret-top"}})])],2):e._e()])};lu._withStripped=!0;var cu=s({name:"ElBacktop",props:{visibilityHeight:{type:Number,default:200},target:[String],right:{type:Number,default:40},bottom:{type:Number,default:40}},data:function(){return{el:null,container:null,visible:!1}},computed:{styleBottom:function(){return this.bottom+"px"},styleRight:function(){return this.right+"px"}},mounted:function(){this.init(),this.throttledScrollHandler=Uo()(300,this.onScroll),this.container.addEventListener("scroll",this.throttledScrollHandler)},methods:{init:function(){if(this.container=document,this.el=document.documentElement,this.target){if(this.el=document.querySelector(this.target),!this.el)throw new Error("target is not existed: "+this.target);this.container=this.el}},onScroll:function(){var e=this.el.scrollTop;this.visible=e>=this.visibilityHeight},handleClick:function(e){this.scrollToTop(),this.$emit("click",e)},scrollToTop:function(){var e=this.el,t=0,i=setInterval(function(){e.scrollTop<=0?clearInterval(i):(t+=10,e.scrollTop-=t)},20)}},beforeDestroy:function(){this.container.removeEventListener("scroll",this.throttledScrollHandler)}},lu,[],!1,null,null,null);cu.options.__file="packages/backtop/src/main.vue";var uu=cu.exports;uu.install=function(e){e.component(uu.name,uu)};var hu=uu,du=function(e,t){return e===window||e===document?document.documentElement[t]:e[t]},pu=function(e){return du(e,"offsetHeight")},fu="ElInfiniteScroll",mu={delay:{type:Number,default:200},distance:{type:Number,default:0},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},vu=function(e,t){return Object(No.isHtmlElement)(e)?function(e){return Object.keys(e||{}).map(function(t){return[t,e[t]]})}(mu).reduce(function(i,n){var s=n[0],r=n[1],a=r.type,o=r.default,l=e.getAttribute("infinite-scroll-"+s);switch(l=Object(No.isUndefined)(t[l])?l:t[l],a){case Number:l=Number(l),l=Number.isNaN(l)?o:l;break;case Boolean:l=Object(No.isDefined)(l)?"false"!==l&&Boolean(l):o;break;default:l=a(l)}return i[s]=l,i},{}):{}},gu=function(e){return e.getBoundingClientRect().top},bu=function(e){var t=this[fu],i=t.el,n=t.vm,s=t.container,r=t.observer,a=vu(i,n),o=a.distance;if(!a.disabled){var l=!1;if(s===i){var c=s.scrollTop+function(e){return du(e,"clientHeight")}(s);l=s.scrollHeight-c<=o}else{l=pu(i)+gu(i)-gu(s)-pu(s)+Number.parseFloat(function(e,t){if(e===window&&(e=document.documentElement),1!==e.nodeType)return[];var i=window.getComputedStyle(e,null);return t?i[t]:i}(s,"borderBottomWidth"))<=o}l&&Object(No.isFunction)(e)?e.call(n):r&&(r.disconnect(),this[fu].observer=null)}},yu={name:"InfiniteScroll",inserted:function(e,t,i){var n=t.value,s=i.context,r=Object(fe.getScrollContainer)(e,!0),a=vu(e,s),o=a.delay,l=a.immediate,c=T()(o,bu.bind(e,n));(e[fu]={el:e,vm:s,container:r,onScroll:c},r)&&(r.addEventListener("scroll",c),l&&((e[fu].observer=new MutationObserver(c)).observe(r,{childList:!0,subtree:!0}),c()))},unbind:function(e){var t=e[fu],i=t.container,n=t.onScroll;i&&i.removeEventListener("scroll",n)},install:function(e){e.directive(yu.name,yu)}},xu=yu,_u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-page-header"},[i("div",{staticClass:"el-page-header__left",on:{click:function(t){e.$emit("back")}}},[i("i",{staticClass:"el-icon-back"}),i("div",{staticClass:"el-page-header__title"},[e._t("title",[e._v(e._s(e.title))])],2)]),i("div",{staticClass:"el-page-header__content"},[e._t("content",[e._v(e._s(e.content))])],2)])};_u._withStripped=!0;var Cu=s({name:"ElPageHeader",props:{title:{type:String,default:function(){return Object(Ft.t)("el.pageHeader.title")}},content:String}},_u,[],!1,null,null,null);Cu.options.__file="packages/page-header/src/main.vue";var wu=Cu.exports;wu.install=function(e){e.component(wu.name,wu)};var ku=wu,Su=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{class:["el-cascader-panel",this.border&&"is-bordered"],on:{keydown:this.handleKeyDown}},this._l(this.menus,function(e,i){return t("cascader-menu",{key:i,ref:"menu",refInFor:!0,attrs:{index:i,nodes:e}})}),1)};Su._withStripped=!0;var Du=i(43),$u=i.n(Du),Ou=function(e){return e.stopPropagation()},Eu=s({inject:["panel"],components:{ElCheckbox:ri.a,ElRadio:$u.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some(function(t){return e.isInPath(t)})},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,i=this.node,n=this.isDisabled,s=this.config,r=s.multiple;!s.checkStrictly&&n||i.loading||(s.lazy&&!i.loaded?t.lazyLoad(i,function(){var t=e.isLeaf;if(t||e.handleExpand(),r){var n=!!t&&i.checked;e.handleMultiCheckChange(n)}}):t.handleExpand(i))},handleCheckChange:function(){var e=this.panel,t=this.value;e.handleCheckChange(t)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node;return(e[t.level-1]||{}).uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,i=this.isChecked,n=this.config,s=n.checkStrictly;return n.multiple?this.renderCheckbox(e):s?this.renderRadio(e):t&&i?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,i=this.isLeaf;return t.loading?this.renderLoadingIcon(e):i?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,i=this.config,n=this.isDisabled,s={on:{change:this.handleMultiCheckChange},nativeOn:{}};return i.checkStrictly&&(s.nativeOn.click=Ou),e("el-checkbox",Qa()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:n}},s]))},renderRadio:function(e){var t=this.checkedValue,i=this.value,n=this.isDisabled;return Object(m.isEqual)(i,t)&&(i=t),e("el-radio",{attrs:{value:t,label:i,disabled:n},on:{change:this.handleCheckChange},nativeOn:{click:Ou}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,i=this.node,n=t.renderLabelFn;return e("span",{class:"el-cascader-node__label"},[(n?n({node:i,data:i.data}):null)||i.label])}},render:function(e){var t=this,i=this.inActivePath,n=this.inCheckedPath,s=this.isChecked,r=this.isLeaf,a=this.isDisabled,o=this.config,l=this.nodeId,c=o.expandTrigger,u=o.checkStrictly,h=o.multiple,d=!u&&a,p={on:{}};return r?a||u||h||(p.on.click=this.handleCheckChange):"click"===c?p.on.click=this.handleExpand:(p.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},p.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),e("li",Qa()([{attrs:{role:"menuitem",id:l,"aria-expanded":i,tabindex:d?null:-1},class:{"el-cascader-node":!0,"is-selectable":u,"in-active-path":i,"in-checked-path":n,"is-active":s,"is-disabled":d}},p]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},void 0,void 0,!1,null,null,null);Eu.options.__file="packages/cascader-panel/src/cascader-node.vue";var Tu=Eu.exports,Mu=s({name:"ElCascaderMenu",mixins:[f.a],inject:["panel"],components:{ElScrollbar:L.a,CascaderNode:Tu},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(m.generateId)()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,i=this.hoverTimer,n=this.$refs.hoverZone;if(t&&n)if(t.contains(e.target)){clearTimeout(i);var s=this.$el.getBoundingClientRect().left,r=e.clientX-s,a=this.$el,o=a.offsetWidth,l=a.offsetHeight,c=t.offsetTop,u=c+t.offsetHeight;n.innerHTML='\n \n \n '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var s=this.nodes.map(function(i,s){var r=i.hasChildren;return e("cascader-node",Qa()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+s,"aria-haspopup":r,"aria-owns":r?t:null}},n]))});return[].concat(s,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",Qa()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},void 0,void 0,!1,null,null,null);Mu.options.__file="packages/cascader-panel/src/cascader-menu.vue";var Pu=Mu.exports,Iu=function(){function e(e,t){for(var i=0;i1?t-1:0),n=1;n1?n-1:0),r=1;r0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},Iu(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,s=i.checkStrictly;return e[n]||!s&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,s=this.config,r=s.lazy,a=s.leaf;if(r){var o=Object(zt.isDef)(e[a])?e[a]:!!t&&!n.length;return this.hasChildren=!o,o}return!i}}]),e}();var Fu=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(m.coerceTruthyValueToArray)(e),this.nodes=e.map(function(e){return new ju(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new ju(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=Object(m.coerceTruthyValueToArray)(e)).forEach(function(e){return i.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:function e(t,i){return t.reduce(function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t},[])}(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){e=Array.isArray(e)?e[e.length-1]:e;var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return t.value===e});return t&&t.length?t[0]:null}return null},e}(),Lu=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};Lt.a.use(t.locale),Lt.a.i18n(t.i18n),Xu.forEach(function(t){e.component(t.name,t)}),e.use(xu),e.use(ja.directive),e.prototype.$ELEMENT={size:t.size||"",zIndex:t.zIndex||2e3},e.prototype.$loading=ja.service,e.prototype.$msgbox=Js,e.prototype.$alert=Js.alert,e.prototype.$confirm=Js.confirm,e.prototype.$prompt=Js.prompt,e.prototype.$notify=da,e.prototype.$message=ko};"undefined"!=typeof window&&window.Vue&&Qu(window.Vue);t.default={version:"2.10.0",locale:Lt.a.use,i18n:Lt.a.i18n,install:Qu,CollapseTransition:ye.a,Loading:ja,Pagination:g,Dialog:$,Autocomplete:W,Dropdown:Q,DropdownMenu:te,DropdownItem:re,Menu:ge,Submenu:ke,MenuItem:Te,MenuItemGroup:Ne,Input:We,InputNumber:Ge,Radio:Ze,RadioGroup:st,RadioButton:lt,Checkbox:dt,CheckboxButton:vt,CheckboxGroup:xt,Switch:kt,Select:Ht,Option:Wt,OptionGroup:Ut,Button:Jt,ButtonGroup:ii,Table:rn,TableColumn:dn,DatePicker:cs,TimeSelect:gs,TimePicker:Ds,Popover:Ps,Tooltip:Ns,MessageBox:Js,Breadcrumb:ir,BreadcrumbItem:ar,Form:ur,FormItem:br,Tabs:Dr,TabPane:Tr,Tag:Ir,Tree:Qr,Alert:ia,Notification:da,Slider:Ca,Icon:Va,Row:Ba,Col:Wa,Upload:ro,Progress:co,Spinner:fo,Message:ko,Badge:Oo,Card:Po,Rate:Lo,Steps:Bo,Step:qo,Carousel:Qo,Scrollbar:tl,CarouselItem:rl,Collapse:cl,CollapseItem:pl,Cascader:Sl,ColorPicker:tc,Transfer:lc,Container:dc,Header:vc,Aside:xc,Main:kc,Footer:Oc,Timeline:Mc,TimelineItem:jc,Link:Vc,Divider:Bc,Image:Qc,Calendar:ou,Backtop:hu,InfiniteScroll:xu,PageHeader:ku,CascaderPanel:Ku,Avatar:Gu}}]).default},YWdi:function(e,t,i){"use strict";var n,s;"function"==typeof Symbol&&Symbol.iterator;void 0===(s="function"==typeof(n=function(){var e=window,t={placement:"bottom",gpuAcceleration:!0,offset:0,boundariesElement:"viewport",boundariesPadding:5,preventOverflowOrder:["left","right","top","bottom"],flipBehavior:"flip",arrowElement:"[x-arrow]",arrowOffset:0,modifiers:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"],modifiersIgnored:[],forceAbsolute:!1};function i(e,i,n){this._reference=e.jquery?e[0]:e,this.state={};var s=void 0===i||null===i,r=i&&"[object Object]"===Object.prototype.toString.call(i);return this._popper=s||r?this.parse(r?i:{}):i.jquery?i[0]:i,this._options=Object.assign({},t,n),this._options.modifiers=this._options.modifiers.map(function(e){if(-1===this._options.modifiersIgnored.indexOf(e))return"applyStyle"===e&&this._popper.setAttribute("x-placement",this._options.placement),this.modifiers[e]||e}.bind(this)),this.state.position=this._getPosition(this._popper,this._reference),u(this._popper,{position:this.state.position,top:0}),this.update(),this._setupEventListeners(),this}function n(t){var i=t.style.display,n=t.style.visibility;t.style.display="block",t.style.visibility="hidden",t.offsetWidth;var s=e.getComputedStyle(t),r=parseFloat(s.marginTop)+parseFloat(s.marginBottom),a=parseFloat(s.marginLeft)+parseFloat(s.marginRight),o={width:t.offsetWidth+a,height:t.offsetHeight+r};return t.style.display=i,t.style.visibility=n,o}function s(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function r(e){var t=Object.assign({},e);return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function a(e,t){var i,n=0;for(i in e){if(e[i]===t)return n;n++}return null}function o(t,i){var n=e.getComputedStyle(t,null);return n[i]}function l(t){var i=t.offsetParent;return i!==e.document.body&&i?i:e.document.documentElement}function c(t){var i=t.parentNode;return i?i===e.document?e.document.body.scrollTop||e.document.body.scrollLeft?e.document.body:e.document.documentElement:-1!==["scroll","auto"].indexOf(o(i,"overflow"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-x"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-y"))?i:c(t.parentNode):t}function u(e,t){Object.keys(t).forEach(function(i){var n="";-1!==["width","height","top","right","bottom","left"].indexOf(i)&&function(e){return""!==e&&!isNaN(parseFloat(e))&&isFinite(e)}(t[i])&&(n="px"),e.style[i]=t[i]+n})}function h(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.offsetLeft,top:e.offsetTop};return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function d(e){var t=e.getBoundingClientRect(),i=-1!=navigator.userAgent.indexOf("MSIE"),n=i&&"HTML"===e.tagName?-e.scrollTop:t.top;return{left:t.left,top:n,right:t.right,bottom:t.bottom,width:t.right-t.left,height:t.bottom-n}}function p(t){for(var i=["","ms","webkit","moz","o"],n=0;n1&&console.warn("WARNING: the given `parent` query("+t.parent+") matched more than one element, the first one will be used"),0===a.length)throw"ERROR: the given `parent` doesn't exists!";a=a[0]}return a.length>1&&a instanceof Element==0&&(console.warn("WARNING: you have passed as parent a list of elements, the first one will be used"),a=a[0]),a.appendChild(s),s;function o(e,t){t.forEach(function(t){e.classList.add(t)})}function l(e,t){t.forEach(function(t){e.setAttribute(t.split(":")[0],t.split(":")[1]||"")})}},i.prototype._getPosition=function(t,i){return l(i),this._options.forceAbsolute?"absolute":function t(i){return i!==e.document.body&&("fixed"===o(i,"position")||(i.parentNode?t(i.parentNode):i))}(i)?"fixed":"absolute"},i.prototype._getOffsets=function(e,t,i){i=i.split("-")[0];var s={};s.position=this.state.position;var r="fixed"===s.position,a=function(e,t,i){var n=d(e),s=d(t);if(i){var r=c(t);s.top+=r.scrollTop,s.bottom+=r.scrollTop,s.left+=r.scrollLeft,s.right+=r.scrollLeft}return{top:n.top-s.top,left:n.left-s.left,bottom:n.top-s.top+n.height,right:n.left-s.left+n.width,width:n.width,height:n.height}}(t,l(e),r),o=n(e);return-1!==["right","left"].indexOf(i)?(s.top=a.top+a.height/2-o.height/2,s.left="left"===i?a.left-o.width:a.right):(s.left=a.left+a.width/2-o.width/2,s.top="top"===i?a.top-o.height:a.bottom),s.width=o.width,s.height=o.height,{popper:s,reference:a}},i.prototype._setupEventListeners=function(){if(this.state.updateBound=this.update.bind(this),e.addEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement){var t=c(this._reference);t!==e.document.body&&t!==e.document.documentElement||(t=e),t.addEventListener("scroll",this.state.updateBound),this.state.scrollTarget=t}},i.prototype._removeEventListeners=function(){e.removeEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement&&this.state.scrollTarget&&(this.state.scrollTarget.removeEventListener("scroll",this.state.updateBound),this.state.scrollTarget=null),this.state.updateBound=null},i.prototype._getBoundaries=function(t,i,n){var s,r={};if("window"===n){var a=e.document.body,o=e.document.documentElement;s=Math.max(a.scrollHeight,a.offsetHeight,o.clientHeight,o.scrollHeight,o.offsetHeight),r={top:0,right:Math.max(a.scrollWidth,a.offsetWidth,o.clientWidth,o.scrollWidth,o.offsetWidth),bottom:s,left:0}}else if("viewport"===n){var u=l(this._popper),d=c(this._popper),p=h(u),f="fixed"===t.offsets.popper.position?0:function(e){return e==document.body?Math.max(document.documentElement.scrollTop,document.body.scrollTop):e.scrollTop}(d),m="fixed"===t.offsets.popper.position?0:function(e){return e==document.body?Math.max(document.documentElement.scrollLeft,document.body.scrollLeft):e.scrollLeft}(d);r={top:0-(p.top-f),right:e.document.documentElement.clientWidth-(p.left-m),bottom:e.document.documentElement.clientHeight-(p.top-f),left:0-(p.left-m)}}else r=l(this._popper)===n?{top:0,left:0,right:n.clientWidth,bottom:n.clientHeight}:h(n);return r.left+=i,r.right-=i,r.top=r.top+i,r.bottom=r.bottom-i,r},i.prototype.runModifiers=function(e,t,i){var n=t.slice();return void 0!==i&&(n=this._options.modifiers.slice(0,a(this._options.modifiers,i))),n.forEach(function(t){(function(e){return e&&"[object Function]"==={}.toString.call(e)})(t)&&(e=t.call(this,e))}.bind(this)),e},i.prototype.isModifierRequired=function(e,t){var i=a(this._options.modifiers,e);return!!this._options.modifiers.slice(0,i).filter(function(e){return e===t}).length},i.prototype.modifiers={},i.prototype.modifiers.applyStyle=function(e){var t,i={position:e.offsets.popper.position},n=Math.round(e.offsets.popper.left),s=Math.round(e.offsets.popper.top);return this._options.gpuAcceleration&&(t=p("transform"))?(i[t]="translate3d("+n+"px, "+s+"px, 0)",i.top=0,i.left=0):(i.left=n,i.top=s),Object.assign(i,e.styles),u(this._popper,i),this._popper.setAttribute("x-placement",e.placement),this.isModifierRequired(this.modifiers.applyStyle,this.modifiers.arrow)&&e.offsets.arrow&&u(e.arrowElement,e.offsets.arrow),e},i.prototype.modifiers.shift=function(e){var t=e.placement,i=t.split("-")[0],n=t.split("-")[1];if(n){var s=e.offsets.reference,a=r(e.offsets.popper),o={y:{start:{top:s.top},end:{top:s.top+s.height-a.height}},x:{start:{left:s.left},end:{left:s.left+s.width-a.width}}},l=-1!==["bottom","top"].indexOf(i)?"x":"y";e.offsets.popper=Object.assign(a,o[l][n])}return e},i.prototype.modifiers.preventOverflow=function(e){var t=this._options.preventOverflowOrder,i=r(e.offsets.popper),n={left:function(){var t=i.left;return i.lefte.boundaries.right&&(t=Math.min(i.left,e.boundaries.right-i.width)),{left:t}},top:function(){var t=i.top;return i.tope.boundaries.bottom&&(t=Math.min(i.top,e.boundaries.bottom-i.height)),{top:t}}};return t.forEach(function(t){e.offsets.popper=Object.assign(i,n[t]())}),e},i.prototype.modifiers.keepTogether=function(e){var t=r(e.offsets.popper),i=e.offsets.reference,n=Math.floor;return t.rightn(i.right)&&(e.offsets.popper.left=n(i.right)),t.bottomn(i.bottom)&&(e.offsets.popper.top=n(i.bottom)),e},i.prototype.modifiers.flip=function(e){if(!this.isModifierRequired(this.modifiers.flip,this.modifiers.preventOverflow))return console.warn("WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!"),e;if(e.flipped&&e.placement===e._originalPlacement)return e;var t=e.placement.split("-")[0],i=s(t),n=e.placement.split("-")[1]||"",a=[];return(a="flip"===this._options.flipBehavior?[t,i]:this._options.flipBehavior).forEach(function(o,l){if(t===o&&a.length!==l+1){t=e.placement.split("-")[0],i=s(t);var c=r(e.offsets.popper),u=-1!==["right","bottom"].indexOf(t);(u&&Math.floor(e.offsets.reference[t])>Math.floor(c[i])||!u&&Math.floor(e.offsets.reference[t])o[p]&&(e.offsets.popper[h]+=l[h]+f-o[p]);var m=l[h]+(i||l[u]/2-f/2)-o[h];return m=Math.max(Math.min(o[u]-f-8,m),8),s[h]=m,s[d]="",e.offsets.arrow=s,e.arrowElement=t,e},Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(void 0===e||null===e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),i=1;i0&&void 0!==arguments[0]?arguments[0]:"";return String(e).replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")};var l=t.arrayFindIndex=function(e,t){for(var i=0;i!==e.length;++i)if(t(e[i]))return i;return-1},c=(t.arrayFind=function(e,t){var i=l(e,t);return-1!==i?e[i]:void 0},t.coerceTruthyValueToArray=function(e){return Array.isArray(e)?e:e?[e]:[]},t.isIE=function(){return!s.default.prototype.$isServer&&!isNaN(Number(document.documentMode))},t.isEdge=function(){return!s.default.prototype.$isServer&&navigator.userAgent.indexOf("Edge")>-1},t.autoprefixer=function(e){if("object"!==(void 0===e?"undefined":n(e)))return e;var t=["ms-","webkit-"];return["transform","transition","animation"].forEach(function(i){var n=e[i];i&&n&&t.forEach(function(t){e[t+i]=n})}),e},t.kebabCase=function(e){var t=/([^-])([A-Z])/g;return e.replace(t,"$1-$2").replace(t,"$1-$2").toLowerCase()},t.capitalize=function(e){return(0,r.isString)(e)?e.charAt(0).toUpperCase()+e.slice(1):e},t.looseEqual=function(e,t){var i=(0,r.isObject)(e),n=(0,r.isObject)(t);return i&&n?JSON.stringify(e)===JSON.stringify(t):!i&&!n&&String(e)===String(t)}),u=t.arrayEquals=function(e,t){if(e=e||[],t=t||[],e.length!==t.length)return!1;for(var i=0;i1?t-1:0),a=1;a-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),i=0;ie)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,i){return"string"==typeof e?{color:e,progress:(i+1)*t}:e})}}},r=i(0),a=Object(r.a)(s,n,[],!1,null,null,null);a.options.__file="packages/progress/src/progress.vue";var o=a.exports;o.install=function(e){e.component(o.name,o)};t.default=o}})},xWqt:function(e,t,i){"use strict";t.__esModule=!0,t.default=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e||!t)throw new Error("instance & callback is required");var s=!1,r=function(){s||(s=!0,t&&t.apply(null,arguments))};n?e.$once("after-leave",r):e.$on("after-leave",r),setTimeout(function(){r()},i+100)}}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-elementUI"],{"05c+":function(e,t,i){"use strict";t.__esModule=!0,t.isDef=function(e){return void 0!==e&&null!==e},t.isKorean=function(e){return/([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(e)}},"0BDH":function(e,t,i){"use strict";t.__esModule=!0,t.default={methods:{dispatch:function(e,t,i){for(var n=this.$parent||this.$root,s=n.$options.componentName;n&&(!s||s!==e);)(n=n.$parent)&&(s=n.$options.componentName);n&&n.$emit.apply(n,[t].concat(i))},broadcast:function(e,t,i){(function e(t,i,n){this.$children.forEach(function(s){s.$options.componentName===t?s.$emit.apply(s,[i].concat(n)):e.apply(s,[t,i].concat([n]))})}).call(this,e,t,i)}}}},"19FS":function(e,t,i){"use strict";var n;!function(s){var r={},a=/d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,o="[^\\s]+",l=/\[([^]*?)\]/gm,c=function(){};function u(e,t){for(var i=[],n=0,s=e.length;n3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return d(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return d(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return d(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return d(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return d(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return d(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},b={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+o,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var i=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?i-1:i)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",c],ddd:[o,c],MMM:[o,h("monthNamesShort")],MMMM:[o,h("monthNames")],a:[o,function(e,t,i){var n=t.toLowerCase();n===i.amPm[0]?e.isPm=!1:n===i.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var i,n=(t+"").match(/([+-]|\d\d)/gi);n&&(i=60*n[1]+parseInt(n[2],10),e.timezoneOffset="+"===n[0]?i:-i)}]};b.dd=b.d,b.dddd=b.ddd,b.DD=b.D,b.mm=b.m,b.hh=b.H=b.HH=b.h,b.MM=b.M,b.ss=b.s,b.A=b.a,r.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},r.format=function(e,t,i){var n=i||r.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");var s=[];return(t=(t=(t=r.masks[t]||t||r.masks.default).replace(l,function(e,t){return s.push(t),"@@@"})).replace(a,function(t){return t in g?g[t](e,n):t.slice(1,t.length-1)})).replace(/@@@/g,function(){return s.shift()})},r.parse=function(e,t,i){var n=i||r.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=r.masks[t]||t,e.length>1e3)return null;var s={},o=[],c=[],u=function(e){return e.replace(/[|\\{()[^$+*?.-]/g,"\\$&")}(t=t.replace(l,function(e,t){return c.push(t),"@@@"})).replace(a,function(e){if(b[e]){var t=b[e];return o.push(t[1]),"("+t[0]+")"}return e});u=u.replace(/@@@/g,function(){return c.shift()});var h=e.match(new RegExp(u,"i"));if(!h)return null;for(var d=1;d1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()-t)});t.nextDate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)},t.getStartDateOfMonth=function(e,t){var i=new Date(e,t,1),n=i.getDay();return d(i,0===n?7:n)},t.getWeekNumber=function(e){if(!c(e))return null;var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var i=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-i.getTime())/864e5-3+(i.getDay()+6)%7)/7)},t.getRangeHours=function(e){var t=[],i=[];if((e||[]).forEach(function(e){var t=e.map(function(e){return e.getHours()});i=i.concat(function(e,t){for(var i=[],n=e;n<=t;n++)i.push(n);return i}(t[0],t[1]))}),i.length)for(var n=0;n<24;n++)t[n]=-1===i.indexOf(n);else for(var s=0;s<24;s++)t[s]=!1;return t},t.getPrevMonthLastDays=function(e,t){if(t<=0)return[];var i=new Date(e.getTime());i.setDate(0);var n=i.getDate();return f(t).map(function(e,i){return n-(t-i-1)})},t.getMonthDays=function(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0).getDate();return f(t).map(function(e,t){return t+1})};function p(e,t,i,n){for(var s=t;s0?e.forEach(function(e){var n=e[0],s=e[1],r=n.getHours(),a=n.getMinutes(),o=s.getHours(),l=s.getMinutes();r===t&&o!==t?p(i,a,60,!0):r===t&&o===t?p(i,a,l+1,!0):r!==t&&o===t?p(i,0,l+1,!0):rt&&p(i,0,60,!0)}):p(i,0,60,!0),i};var f=t.range=function(e){return Array.apply(null,{length:e}).map(function(e,t){return t})},m=t.modifyDate=function(e,t,i,n){return new Date(t,i,n,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())},v=t.modifyTime=function(e,t,i,n){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),t,i,n,e.getMilliseconds())},g=(t.modifyWithTimeString=function(e,t){return null!=e&&t?(t=u(t,"HH:mm:ss"),v(e,t.getHours(),t.getMinutes(),t.getSeconds())):e},t.clearTime=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())},t.clearMilliseconds=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),0)},t.limitTimeRange=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"HH:mm:ss";if(0===t.length)return e;var s=function(e){return n.default.parse(n.default.format(e,i),i)},r=s(e),a=t.map(function(e){return e.map(s)});if(a.some(function(e){return r>=e[0]&&r<=e[1]}))return e;var o=a[0][0],l=a[0][0];return a.forEach(function(e){o=new Date(Math.min(e[0],o)),l=new Date(Math.max(e[1],o))}),m(r1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return b(e,i-t,n)},t.nextYear=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=e.getFullYear(),n=e.getMonth();return b(e,i+t,n)},t.extractDateFormat=function(e){return e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim()},t.extractTimeFormat=function(e){return e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g,"").trim()},t.validateRangeInOneMonth=function(e,t){return e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}},"3Nwd":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=105)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},105:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{role:"checkbox","aria-checked":e.indeterminate?"mixed":e.isChecked,"aria-disabled":e.isDisabled,id:e.id}},[i("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{"aria-checked":"mixed"}},[i("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,s=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var r=e._i(i,null);n.checked?r<0&&(e.model=i.concat([null])):r>-1&&(e.model=i.slice(0,r).concat(i.slice(r+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,s=!!n.checked;if(Array.isArray(i)){var r=e.label,a=e._i(i,r);n.checked?a<0&&(e.model=i.concat([r])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};n._withStripped=!0;var s=i(4),r={name:"ElCheckbox",mixins:[i.n(s).a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},a=i(0),o=Object(a.a)(r,n,[],!1,null,null,null);o.options.__file="packages/checkbox/src/checkbox.vue";var l=o.exports;l.install=function(e){e.component(l.name,l)};t.default=l},4:function(e,t){e.exports=i("0BDH")}})},"53J1":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=52)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},3:function(e,t){e.exports=i("gSIQ")},33:function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};n._withStripped=!0;var s=i(4),r=i.n(s),a=i(3),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l={mixins:[r.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,s=i.valueKey;if(!this.created&&!n){if(s&&"object"===(void 0===e?"undefined":o(e))&&"object"===(void 0===t?"undefined":o(t))&&e[s]===t[s])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some(function(e){return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(a.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){this.select.onOptionDestroy(this.select.options.indexOf(this))}},c=i(0),u=Object(c.a)(l,n,[],!1,null,null,null);u.options.__file="packages/select/src/option.vue";t.a=u.exports},4:function(e,t){e.exports=i("0BDH")},52:function(e,t,i){"use strict";i.r(t);var n=i(33);n.a.install=function(e){e.component(n.a.name,n.a)},t.default=n.a}})},"5FBR":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=92)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},10:function(e,t){e.exports=i("8606")},2:function(e,t){e.exports=i("WST1")},21:function(e,t){e.exports=i("EvI9")},30:function(e,t,i){"use strict";var n=i(2);t.a={bind:function(e,t,i){var s=null,r=void 0,a=function(){return i.context[t.expression].apply()},o=function(){Date.now()-r<100&&a(),clearInterval(s),s=null};Object(n.on)(e,"mousedown",function(e){0===e.button&&(r=Date.now(),Object(n.once)(document,"mouseup",o),clearInterval(s),s=setInterval(a,100))})}}},92:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["el-input-number",e.inputNumberSize?"el-input-number--"+e.inputNumberSize:"",{"is-disabled":e.inputNumberDisabled},{"is-without-controls":!e.controls},{"is-controls-right":e.controlsAtRight}],on:{dragstart:function(e){e.preventDefault()}}},[e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-input-number__decrease",class:{"is-disabled":e.minDisabled},attrs:{role:"button"},on:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.decrease(t):null}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-down":"minus")})]):e._e(),e.controls?i("span",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-input-number__increase",class:{"is-disabled":e.maxDisabled},attrs:{role:"button"},on:{keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.increase(t):null}}},[i("i",{class:"el-icon-"+(e.controlsAtRight?"arrow-up":"plus")})]):e._e(),i("el-input",{ref:"input",attrs:{value:e.displayValue,placeholder:e.placeholder,disabled:e.inputNumberDisabled,size:e.inputNumberSize,max:e.max,min:e.min,name:e.name,label:e.label},on:{blur:e.handleBlur,focus:e.handleFocus,input:e.handleInput,change:e.handleInputChange},nativeOn:{keydown:[function(t){return"button"in t||!e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?(t.preventDefault(),e.increase(t)):null},function(t){return"button"in t||!e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?(t.preventDefault(),e.decrease(t)):null}]}})],1)};n._withStripped=!0;var s=i(10),r=i.n(s),a=i(21),o=i.n(a),l=i(30),c={name:"ElInputNumber",mixins:[o()("input")],inject:{elForm:{default:""},elFormItem:{default:""}},directives:{repeatClick:l.a},components:{ElInput:r.a},props:{step:{type:Number,default:1},stepStrictly:{type:Boolean,default:!1},max:{type:Number,default:1/0},min:{type:Number,default:-1/0},value:{},disabled:Boolean,size:String,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:""},name:String,label:String,placeholder:String,precision:{type:Number,validator:function(e){return e>=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,s=i(t);return void 0!==n?(s>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),s)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},u=i(0),h=Object(u.a)(c,n,[],!1,null,null,null);h.options.__file="packages/input-number/src/input-number.vue";var d=h.exports;d.install=function(e){e.component(d.name,d)};t.default=d}})},"5FLJ":function(e,t,i){"use strict";t.__esModule=!0;var n=n||{};n.Utils=n.Utils||{},n.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var i=e.childNodes[t];if(n.Utils.attemptFocus(i)||n.Utils.focusLastDescendant(i))return!0}return!1},n.Utils.attemptFocus=function(e){if(!n.Utils.isFocusable(e))return!1;n.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return n.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},n.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},n.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),s=arguments.length,r=Array(s>2?s-2:0),a=2;a-1?"center "+t:t+" center"}},appendArrow:function(e){var t=void 0;if(!this.appended){for(var i in this.appended=!0,e.attributes)if(/^_v-/.test(e.attributes[i].name)){t=e.attributes[i].name;break}var n=document.createElement("div");t&&n.setAttribute(t,""),n.setAttribute("x-arrow",""),n.className="popper__arrow",e.appendChild(n)}}},beforeDestroy:function(){this.doDestroy(!0),this.popperElm&&this.popperElm.parentNode===document.body&&(this.popperElm.removeEventListener("click",a),document.body.removeChild(this.popperElm))},deactivated:function(){this.$options.beforeDestroy[0].call(this)}}},"7t/g":function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=85)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},85:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?i("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",[e._t("default")],2):e._e()])};n._withStripped=!0;var s={name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},r=i(0),a=Object(r.a)(s,n,[],!1,null,null,null);a.options.__file="packages/button/src/button.vue";var o=a.exports;o.install=function(e){e.component(o.name,o)};t.default=o}})},8606:function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=75)}({0:function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},11:function(e,t){e.exports=i("K7XR")},4:function(e,t){e.exports=i("0BDH")},75:function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)};n._withStripped=!0;var s=i(4),r=i.n(s),a=i(11),o=i.n(a),l=void 0,c="\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",u=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;l||(l=document.createElement("textarea"),document.body.appendChild(l));var n=function(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),s=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:u.map(function(e){return e+":"+t.getPropertyValue(e)}).join(";"),paddingSize:n,borderSize:s,boxSizing:i}}(e),s=n.paddingSize,r=n.borderSize,a=n.boxSizing,o=n.contextStyle;l.setAttribute("style",o+";"+c),l.value=e.value||e.placeholder||"";var h=l.scrollHeight,d={};"border-box"===a?h+=r:"content-box"===a&&(h-=s),l.value="";var p=l.scrollHeight-s;if(null!==t){var f=p*t;"border-box"===a&&(f=f+s+r),h=Math.max(f,h),d.minHeight=f+"px"}if(null!==i){var m=p*i;"border-box"===a&&(m=m+s+r),h=Math.min(m,h)}return d.height=h+"px",l.parentNode&&l.parentNode.removeChild(l),l=null,d}var d=i(9),p=i.n(d),f={name:"ElInput",componentName:"ElInput",mixins:[r.a,o.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return p()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=h(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:h(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionEnd:function(e){this.isComposing=!1,this.handleInput(e)},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;il&&(e.scrollTop=a-e.clientHeight)};var n=function(e){return e&&e.__esModule?e:{default:e}}(i("Kw5r"))},PtZe:function(e,t,i){"use strict";t.__esModule=!0,t.default={el:{colorpicker:{confirm:"Confirmar",clear:"Despejar"},datepicker:{now:"Ahora",today:"Hoy",cancel:"Cancelar",clear:"Despejar",confirm:"Confirmar",selectDate:"Seleccionar fecha",selectTime:"Seleccionar hora",startDate:"Fecha Incial",startTime:"Hora Inicial",endDate:"Fecha Final",endTime:"Hora Final",prevYear:"Año Anterior",nextYear:"Próximo Año",prevMonth:"Mes Anterior",nextMonth:"Próximo Mes",year:"",month1:"enero",month2:"febrero",month3:"marzo",month4:"abril",month5:"mayo",month6:"junio",month7:"julio",month8:"agosto",month9:"septiembre",month10:"octubre",month11:"noviembre",month12:"diciembre",weeks:{sun:"dom",mon:"lun",tue:"mar",wed:"mié",thu:"jue",fri:"vie",sat:"sáb"},months:{jan:"ene",feb:"feb",mar:"mar",apr:"abr",may:"may",jun:"jun",jul:"jul",aug:"ago",sep:"sep",oct:"oct",nov:"nov",dec:"dic"}},select:{loading:"Cargando",noMatch:"No hay datos que coincidan",noData:"Sin datos",placeholder:"Seleccionar"},cascader:{noMatch:"No hay datos que coincidan",loading:"Cargando",placeholder:"Seleccionar",noData:"Sin datos"},pagination:{goto:"Ir a",pagesize:"/página",total:"Total {total}",pageClassifier:""},messagebox:{confirm:"Aceptar",cancel:"Cancelar",error:"Entrada inválida"},upload:{deleteTip:"Pulse Eliminar para retirar",delete:"Eliminar",preview:"Vista Previa",continue:"Continuar"},table:{emptyText:"Sin Datos",confirmFilter:"Confirmar",resetFilter:"Reiniciar",clearFilter:"Despejar",sumText:"Suma"},tree:{emptyText:"Sin Datos"},transfer:{noMatch:"No hay datos que coincidan",noData:"Sin datos",titles:["Lista 1","Lista 2"],filterPlaceholder:"Ingresar palabra clave",noCheckedFormat:"{total} artículos",hasCheckedFormat:"{checked}/{total} revisados"},image:{error:"FAILED"},pageHeader:{title:"Back"}}}},QBBo:function(e,t,i){"use strict";t.__esModule=!0,t.removeResizeListener=t.addResizeListener=void 0;var n=function(e){return e&&e.__esModule?e:{default:e}}(i("bdgK"));var s="undefined"==typeof window,r=function(e){var t=e,i=Array.isArray(t),n=0;for(t=i?t:t[Symbol.iterator]();;){var s;if(i){if(n>=t.length)break;s=t[n++]}else{if((n=t.next()).done)break;s=n.value}var r=s.target.__resizeListeners__||[];r.length&&r.forEach(function(e){e()})}};t.addResizeListener=function(e,t){s||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new n.default(r),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},t.removeResizeListener=function(e,t){e&&e.__resizeListeners__&&(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||e.__ro__.disconnect())}},"QX/b":function(e,t,i){"use strict";t.__esModule=!0;var n=function(e){return e&&e.__esModule?e:{default:e}}(i("Kw5r")),s=i("WST1");var r=[],a="@@clickoutsideContext",o=void 0,l=0;function c(e,t,i){return function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!(i&&i.context&&n.target&&s.target)||e.contains(n.target)||e.contains(s.target)||e===n.target||i.context.popperElm&&(i.context.popperElm.contains(n.target)||i.context.popperElm.contains(s.target))||(t.expression&&e[a].methodName&&i.context[e[a].methodName]?i.context[e[a].methodName]():e[a].bindingFn&&e[a].bindingFn())}}!n.default.prototype.$isServer&&(0,s.on)(document,"mousedown",function(e){return o=e}),!n.default.prototype.$isServer&&(0,s.on)(document,"mouseup",function(e){r.forEach(function(t){return t[a].documentHandler(e,o)})}),t.default={bind:function(e,t,i){r.push(e);var n=l++;e[a]={id:n,documentHandler:c(e,t,i),methodName:t.expression,bindingFn:t.value}},update:function(e,t,i){e[a].documentHandler=c(e,t,i),e[a].methodName=t.expression,e[a].bindingFn=t.value},unbind:function(e){for(var t=r.length,i=0;i\n \n '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var s=this.nodes.map(function(i,s){var a=i.hasChildren;return e("cascader-node",r()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+s,"aria-haspopup":a,"aria-owns":a?t:null}},n]))});return[].concat(s,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",r()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},x=Object(m.a)(y,void 0,void 0,!1,null,null,null);x.options.__file="packages/cascader-panel/src/cascader-menu.vue";var _=x.exports,C=i(22),w=function(){function e(e,t){for(var i=0;i1?t-1:0),n=1;n1?n-1:0),r=1;r0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},w(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,s=i.checkStrictly;return e[n]||!s&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,s=this.config,r=s.lazy,a=s.leaf;if(r){var o=Object(C.isDef)(e[a])?e[a]:!!t&&!n.length;return this.hasChildren=!o,o}return!i}}]),e}();var D=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(d.coerceTruthyValueToArray)(e),this.nodes=e.map(function(e){return new S(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new S(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=Object(d.coerceTruthyValueToArray)(e)).forEach(function(e){return i.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:function e(t,i){return t.reduce(function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t},[])}(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){e=Array.isArray(e)?e[e.length-1]:e;var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return t.value===e});return t&&t.length?t[0]:null}return null},e}(),$=i(9),O=i.n($),E=i(39),T=i.n(E),M=i(31),P=i.n(M),I=Object.assign||function(e){for(var t=1;t0){var n=t[t.length-1];if(n.id===e){if(n.modalClass)n.modalClass.trim().split(/\s+/).forEach(function(e){return(0,s.removeClass)(i,e)});t.pop(),t.length>0&&(i.style.zIndex=t[t.length-1].zIndex)}else for(var r=t.length-1;r>=0;r--)if(t[r].id===e){t.splice(r,1);break}}0===t.length&&(this.modalFade&&(0,s.addClass)(i,"v-modal-leave"),setTimeout(function(){0===t.length&&(i.parentNode&&i.parentNode.removeChild(i),i.style.display="none",u.modalDom=void 0),(0,s.removeClass)(i,"v-modal-leave")},200))}};Object.defineProperty(u,"zIndex",{configurable:!0,get:function(){return a||(o=o||(n.default.prototype.$ELEMENT||{}).zIndex||2e3,a=!0),o},set:function(e){o=e}});n.default.prototype.$isServer||window.addEventListener("keydown",function(e){if(27===e.keyCode){var t=function(){if(!n.default.prototype.$isServer&&u.modalStack.length>0){var e=u.modalStack[u.modalStack.length-1];if(!e)return;return u.getInstance(e.id)}}();t&&t.closeOnPressEscape&&(t.handleClose?t.handleClose():t.handleAction?t.handleAction("cancel"):t.close())}}),t.default=u},TkuN:function(e,t,i){e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=59)}([function(e,t,i){"use strict";function n(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}i.d(t,"a",function(){return n})},,,function(e,t){e.exports=i("gSIQ")},function(e,t){e.exports=i("0BDH")},function(e,t){e.exports=i("6XTx")},function(e,t){e.exports=i("a3zo")},,,,function(e,t){e.exports=i("8606")},,function(e,t){e.exports=i("QX/b")},function(e,t){e.exports=i("QBBo")},function(e,t){e.exports=i("DhVD")},function(e,t){e.exports=i("FOnU")},,,,,function(e,t){e.exports=i("SJdT")},function(e,t){e.exports=i("EvI9")},function(e,t){e.exports=i("05c+")},,,,,,,,,function(e,t){e.exports=i("Kl55")},,function(e,t,i){"use strict";var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};n._withStripped=!0;var s=i(4),r=i.n(s),a=i(3),o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l={mixins:[r.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,s=i.valueKey;if(!this.created&&!n){if(s&&"object"===(void 0===e?"undefined":o(e))&&"object"===(void 0===t?"undefined":o(t))&&e[s]===t[s])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some(function(e){return Object(a.getValueByPath)(e,i)===Object(a.getValueByPath)(t,i)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(a.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){this.select.onOptionDestroy(this.select.options.indexOf(this))}},c=i(0),u=Object(c.a)(l,n,[],!1,null,null,null);u.options.__file="packages/select/src/option.vue";t.a=u.exports},,,function(e,t){e.exports=i("i7wE")},,,,,,,,,,,,,,,,,,,,,,,function(e,t,i){"use strict";i.r(t);var n=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},click:function(e){e.stopPropagation()},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.deletePrevTag(t):null}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)};n._withStripped=!0;var s=i(4),r=i.n(s),a=i(21),o=i.n(a),l=i(6),c=i.n(l),u=i(10),h=i.n(u),d=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};d._withStripped=!0;var p=i(5),f={name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[i.n(p).a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",function(){e.$parent.visible&&e.updatePopper()}),this.$on("destroyPopper",this.destroyPopper)}},m=i(0),v=Object(m.a)(f,d,[],!1,null,null,null);v.options.__file="packages/select/src/select-dropdown.vue";var g=v.exports,b=i(33),y=i(36),x=i.n(y),_=i(15),C=i.n(_),w=i(14),k=i.n(w),S=i(12),D=i.n(S),$=i(13),O=i(20),E=i(31),T=i.n(E),M=i(3),P=i(22),I={mixins:[r.a,c.a,o()("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(M.isIE)()&&!Object(M.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"}},components:{ElInput:h.a,ElSelectMenu:g,ElOption:b.a,ElTag:x.a,ElScrollbar:C.a},directives:{Clickoutside:D.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,default:function(){return Object(O.t)("el.select.placeholder")}},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},placeholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(M.valueEquals)(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast("ElSelectDropdown","updatePopper")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick(function(e){return t.handleQueryChange(i)});else{var n=i[i.length-1]||"";this.isOnComposition=!Object(P.isKorean)(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var i=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");T()(i,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){Object(M.valueEquals)(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),s="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),r=this.cachedOptions.length-1;r>=0;r--){var a=this.cachedOptions[r];if(i?Object(M.getValueByPath)(a.value,this.valueKey)===Object(M.getValueByPath)(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var o={value:e,currentLabel:i||n||s?"":e};return this.multiple&&(o.hitState=!1),o},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach(function(t){i.push(e.getOption(t))}),this.selected=i,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.menuVisibleOnFocus=!0),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,function(e){return"INPUT"===e.tagName})[0],n=e.$refs.tags,s=e.initialInputHeight||40;i.style.height=0===e.selected.length?s+"px":Math.max(n?n.clientHeight+(n.clientHeight>s?6:0):0,s)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),s=this.getValueIndex(n,e.value);s>-1?n.splice(s,1):(this.multipleLimit<=0||n.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if("[object object]"===Object.prototype.toString.call(t).toLowerCase()){var i=this.valueKey,n=-1;return e.some(function(e,s){return Object(M.getValueByPath)(e,i)===Object(M.getValueByPath)(t,i)&&(n=s,!0)}),n}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(M.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.placeholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=k()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=k()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object($.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object($.removeResizeListener)(this.$el,this.handleResize)}},N=Object(m.a)(I,n,[],!1,null,null,null);N.options.__file="packages/select/src/select.vue";var j=N.exports;j.install=function(e){e.component(j.name,j)};t.default=j}])},UShQ:function(e,t,i){"use strict";t.__esModule=!0,t.PopupManager=void 0;var n=l(i("Kw5r")),s=l(i("f03z")),r=l(i("Syab")),a=l(i("5i1c")),o=i("WST1");function l(e){return e&&e.__esModule?e:{default:e}}var c=1,u=void 0;t.default={props:{visible:{type:Boolean,default:!1},openDelay:{},closeDelay:{},zIndex:{},modal:{type:Boolean,default:!1},modalFade:{type:Boolean,default:!0},modalClass:{},modalAppendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!1},closeOnClickModal:{type:Boolean,default:!1}},beforeMount:function(){this._popupId="popup-"+c++,r.default.register(this._popupId,this)},beforeDestroy:function(){r.default.deregister(this._popupId),r.default.closeModal(this._popupId),this.restoreBodyStyle()},data:function(){return{opened:!1,bodyPaddingRight:null,computedBodyPaddingRight:0,withoutHiddenClass:!0,rendered:!1}},watch:{visible:function(e){var t=this;if(e){if(this._opening)return;this.rendered?this.open():(this.rendered=!0,n.default.nextTick(function(){t.open()}))}else this.close()}},methods:{open:function(e){var t=this;this.rendered||(this.rendered=!0);var i=(0,s.default)({},this.$props||this,e);this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null),clearTimeout(this._openTimer);var n=Number(i.openDelay);n>0?this._openTimer=setTimeout(function(){t._openTimer=null,t.doOpen(i)},n):this.doOpen(i)},doOpen:function(e){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0;var t=this.$el,i=e.modal,n=e.zIndex;if(n&&(r.default.zIndex=n),i&&(this._closing&&(r.default.closeModal(this._popupId),this._closing=!1),r.default.openModal(this._popupId,r.default.nextZIndex(),this.modalAppendToBody?void 0:t,e.modalClass,e.modalFade),e.lockScroll)){this.withoutHiddenClass=!(0,o.hasClass)(document.body,"el-popup-parent--hidden"),this.withoutHiddenClass&&(this.bodyPaddingRight=document.body.style.paddingRight,this.computedBodyPaddingRight=parseInt((0,o.getStyle)(document.body,"paddingRight"),10)),u=(0,a.default)();var s=document.documentElement.clientHeight0&&(s||"scroll"===l)&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.computedBodyPaddingRight+u+"px"),(0,o.addClass)(document.body,"el-popup-parent--hidden")}"static"===getComputedStyle(t).position&&(t.style.position="absolute"),t.style.zIndex=r.default.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var e=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var t=Number(this.closeDelay);t>0?this._closeTimer=setTimeout(function(){e._closeTimer=null,e.doClose()},t):this.doClose()}},doClose:function(){this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose()},doAfterClose:function(){r.default.closeModal(this._popupId),this._closing=!1},restoreBodyStyle:function(){this.modal&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.bodyPaddingRight,(0,o.removeClass)(document.body,"el-popup-parent--hidden")),this.withoutHiddenClass=!0}}},t.PopupManager=r.default},VIiR:function(e,t,i){"use strict";t.__esModule=!0;var n=i("WST1");var s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return e.prototype.beforeEnter=function(e){(0,n.addClass)(e,"collapse-transition"),e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height="0",e.style.paddingTop=0,e.style.paddingBottom=0},e.prototype.enter=function(e){e.dataset.oldOverflow=e.style.overflow,0!==e.scrollHeight?(e.style.height=e.scrollHeight+"px",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom):(e.style.height="",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom),e.style.overflow="hidden"},e.prototype.afterEnter=function(e){(0,n.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow},e.prototype.beforeLeave=function(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.height=e.scrollHeight+"px",e.style.overflow="hidden"},e.prototype.leave=function(e){0!==e.scrollHeight&&((0,n.addClass)(e,"collapse-transition"),e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0)},e.prototype.afterLeave=function(e){(0,n.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},e}();t.default={name:"ElCollapseTransition",functional:!0,render:function(e,t){var i=t.children;return e("transition",{on:new s},i)}}},WST1:function(e,t,i){"use strict";t.__esModule=!0,t.isInContainer=t.getScrollContainer=t.isScroll=t.getStyle=t.once=t.off=t.on=void 0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.hasClass=d,t.addClass=function(e,t){if(!e)return;for(var i=e.className,n=(t||"").split(" "),s=0,r=n.length;s-1}var p=t.getStyle=o<9?function(e,t){if(!s){if(!e||!t)return null;"float"===(t=c(t))&&(t="styleFloat");try{switch(t){case"opacity":try{return e.filters.item("alpha").opacity/100}catch(e){return 1}default:return e.style[t]||e.currentStyle?e.currentStyle[t]:null}}catch(i){return e.style[t]}}}:function(e,t){if(!s){if(!e||!t)return null;"float"===(t=c(t))&&(t="cssFloat");try{var i=document.defaultView.getComputedStyle(e,"");return e.style[t]||i?i[t]:null}catch(i){return e.style[t]}}};var f=t.isScroll=function(e,t){if(!s)return p(e,null!==t||void 0!==t?t?"overflow-y":"overflow-x":"overflow").match(/(scroll|auto)/)};t.getScrollContainer=function(e,t){if(!s){for(var i=e;i;){if([window,document,document.documentElement].includes(i))return window;if(f(i,t))return i;i=i.parentNode}return i}},t.isInContainer=function(e,t){if(s||!e||!t)return!1;var i=e.getBoundingClientRect(),n=void 0;return n=[window,document,document.documentElement,null,void 0].includes(t)?{top:0,right:window.innerWidth,bottom:window.innerHeight,left:0}:t.getBoundingClientRect(),i.topn.top&&i.right>n.left&&i.left0?i("li",{staticClass:"number",class:{active:1===e.currentPage,disabled:e.disabled}},[e._v("1")]):e._e(),e.showPrevMore?i("li",{staticClass:"el-icon more btn-quickprev",class:[e.quickprevIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("left")},mouseleave:function(t){e.quickprevIconClass="el-icon-more"}}}):e._e(),e._l(e.pagers,function(t){return i("li",{key:t,staticClass:"number",class:{active:e.currentPage===t,disabled:e.disabled}},[e._v(e._s(t))])}),e.showNextMore?i("li",{staticClass:"el-icon more btn-quicknext",class:[e.quicknextIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("right")},mouseleave:function(t){e.quicknextIconClass="el-icon-more"}}}):e._e(),e.pageCount>1?i("li",{staticClass:"number",class:{active:e.currentPage===e.pageCount,disabled:e.disabled}},[e._v(e._s(e.pageCount))]):e._e()],2)};function s(e,t,i,n,s,r,a,o){var l,c="function"==typeof e?e.options:e;if(t&&(c.render=t,c.staticRenderFns=i,c._compiled=!0),n&&(c.functional=!0),r&&(c._scopeId="data-v-"+r),a?(l=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),s&&s.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},c._ssrRegister=l):s&&(l=o?function(){s.call(this,this.$root.$options.shadowRoot)}:s),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(e,t){return l.call(t),u(e,t)}}else{var h=c.beforeCreate;c.beforeCreate=h?[].concat(h,l):[l]}return{exports:e,options:c}}n._withStripped=!0;var r=s({name:"ElPager",props:{currentPage:Number,pageCount:Number,pagerCount:Number,disabled:Boolean},watch:{showPrevMore:function(e){e||(this.quickprevIconClass="el-icon-more")},showNextMore:function(e){e||(this.quicknextIconClass="el-icon-more")}},methods:{onPagerClick:function(e){var t=e.target;if("UL"!==t.tagName&&!this.disabled){var i=Number(e.target.textContent),n=this.pageCount,s=this.currentPage,r=this.pagerCount-2;-1!==t.className.indexOf("more")&&(-1!==t.className.indexOf("quickprev")?i=s-r:-1!==t.className.indexOf("quicknext")&&(i=s+r)),isNaN(i)||(i<1&&(i=1),i>n&&(i=n)),i!==s&&this.$emit("change",i)}},onMouseenter:function(e){this.disabled||("left"===e?this.quickprevIconClass="el-icon-d-arrow-left":this.quicknextIconClass="el-icon-d-arrow-right")}},computed:{pagers:function(){var e=this.pagerCount,t=(e-1)/2,i=Number(this.currentPage),n=Number(this.pageCount),s=!1,r=!1;n>e&&(i>e-t&&(s=!0),i4&&e<22&&e%2==1},default:7},currentPage:{type:Number,default:1},layout:{default:"prev, pager, next, jumper, ->, total"},pageSizes:{type:Array,default:function(){return[10,20,30,40,50,100]}},popperClass:String,prevText:String,nextText:String,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean},data:function(){return{internalCurrentPage:1,internalPageSize:0,lastEmittedPage:-1,userChangePageSize:!1}},render:function(e){var t=this.layout;if(!t)return null;if(this.hideOnSinglePage&&(!this.internalPageCount||1===this.internalPageCount))return null;var i=e("div",{class:["el-pagination",{"is-background":this.background,"el-pagination--small":this.small}]}),n={prev:e("prev"),jumper:e("jumper"),pager:e("pager",{attrs:{currentPage:this.internalCurrentPage,pageCount:this.internalPageCount,pagerCount:this.pagerCount,disabled:this.disabled},on:{change:this.handleCurrentChange}}),next:e("next"),sizes:e("sizes",{attrs:{pageSizes:this.pageSizes}}),slot:e("slot",[this.$slots.default?this.$slots.default:""]),total:e("total")},s=t.split(",").map(function(e){return e.trim()}),r=e("div",{class:"el-pagination__rightwrapper"}),a=!1;return i.children=i.children||[],r.children=r.children||[],s.forEach(function(e){"->"!==e?a?r.children.push(n[e]):i.children.push(n[e]):a=!0}),a&&i.children.unshift(r),i},components:{Prev:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage<=1},class:"btn-prev",on:{click:this.$parent.prev}},[this.$parent.prevText?e("span",[this.$parent.prevText]):e("i",{class:"el-icon el-icon-arrow-left"})])}},Next:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage===this.$parent.internalPageCount||0===this.$parent.internalPageCount},class:"btn-next",on:{click:this.$parent.next}},[this.$parent.nextText?e("span",[this.$parent.nextText]):e("i",{class:"el-icon el-icon-arrow-right"})])}},Sizes:{mixins:[f.a],props:{pageSizes:Array},watch:{pageSizes:{immediate:!0,handler:function(e,t){Object(m.valueEquals)(e,t)||Array.isArray(e)&&(this.$parent.internalPageSize=e.indexOf(this.$parent.pageSize)>-1?this.$parent.pageSize:this.pageSizes[0])}}},render:function(e){var t=this;return e("span",{class:"el-pagination__sizes"},[e("el-select",{attrs:{value:this.$parent.internalPageSize,popperClass:this.$parent.popperClass||"",size:"mini",disabled:this.$parent.disabled},on:{input:this.handleChange}},[this.pageSizes.map(function(i){return e("el-option",{attrs:{value:i,label:i+t.t("el.pagination.pagesize")}})})])])},components:{ElSelect:l.a,ElOption:u.a},methods:{handleChange:function(e){e!==this.$parent.internalPageSize&&(this.$parent.internalPageSize=e=parseInt(e,10),this.$parent.userChangePageSize=!0,this.$parent.$emit("update:pageSize",e),this.$parent.$emit("size-change",e))}}},Jumper:{mixins:[f.a],components:{ElInput:d.a},data:function(){return{userInput:null}},watch:{"$parent.internalCurrentPage":function(){this.userInput=null}},methods:{handleKeyup:function(e){var t=e.keyCode,i=e.target;13===t&&this.handleChange(i.value)},handleInput:function(e){this.userInput=e},handleChange:function(e){this.$parent.internalCurrentPage=this.$parent.getValidCurrentPage(e),this.$parent.emitChange(),this.userInput=null}},render:function(e){return e("span",{class:"el-pagination__jump"},[this.t("el.pagination.goto"),e("el-input",{class:"el-pagination__editor is-in-pagination",attrs:{min:1,max:this.$parent.internalPageCount,value:null!==this.userInput?this.userInput:this.$parent.internalCurrentPage,type:"number",disabled:this.$parent.disabled},nativeOn:{keyup:this.handleKeyup},on:{input:this.handleInput,change:this.handleChange}}),this.t("el.pagination.pageClassifier")])}},Total:{mixins:[f.a],render:function(e){return"number"==typeof this.$parent.total?e("span",{class:"el-pagination__total"},[this.t("el.pagination.total",{total:this.$parent.total})]):""}},Pager:a},methods:{handleCurrentChange:function(e){this.internalCurrentPage=this.getValidCurrentPage(e),this.userChangePageSize=!0,this.emitChange()},prev:function(){if(!this.disabled){var e=this.internalCurrentPage-1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("prev-click",this.internalCurrentPage),this.emitChange()}},next:function(){if(!this.disabled){var e=this.internalCurrentPage+1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("next-click",this.internalCurrentPage),this.emitChange()}},getValidCurrentPage:function(e){e=parseInt(e,10);var t=void 0;return"number"==typeof this.internalPageCount?e<1?t=1:e>this.internalPageCount&&(t=this.internalPageCount):(isNaN(e)||e<1)&&(t=1),void 0===t&&isNaN(e)?t=1:0===t&&(t=1),void 0===t?e:t},emitChange:function(){var e=this;this.$nextTick(function(){(e.internalCurrentPage!==e.lastEmittedPage||e.userChangePageSize)&&(e.$emit("current-change",e.internalCurrentPage),e.lastEmittedPage=e.internalCurrentPage,e.userChangePageSize=!1)})}},computed:{internalPageCount:function(){return"number"==typeof this.total?Math.max(1,Math.ceil(this.total/this.internalPageSize)):"number"==typeof this.pageCount?Math.max(1,this.pageCount):null}},watch:{currentPage:{immediate:!0,handler:function(e){this.internalCurrentPage=this.getValidCurrentPage(e)}},pageSize:{immediate:!0,handler:function(e){this.internalPageSize=isNaN(e)?10:e}},internalCurrentPage:{immediate:!0,handler:function(e){this.$emit("update:currentPage",e),this.lastEmittedPage=-1}},internalPageCount:function(e){var t=this.internalCurrentPage;e>0&&0===t?this.internalCurrentPage=1:t>e&&(this.internalCurrentPage=0===e?1:e,this.userChangePageSize&&this.emitChange()),this.userChangePageSize=!1}},install:function(e){e.component(v.name,v)}},g=v,b=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"dialog-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-dialog__wrapper",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[i("div",{ref:"dialog",staticClass:"el-dialog",class:[{"is-fullscreen":e.fullscreen,"el-dialog--center":e.center},e.customClass],style:e.style,attrs:{role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"}},[i("div",{staticClass:"el-dialog__header"},[e._t("title",[i("span",{staticClass:"el-dialog__title"},[e._v(e._s(e.title))])]),e.showClose?i("button",{staticClass:"el-dialog__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:e.handleClose}},[i("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2),e.rendered?i("div",{staticClass:"el-dialog__body"},[e._t("default")],2):e._e(),e.$slots.footer?i("div",{staticClass:"el-dialog__footer"},[e._t("footer")],2):e._e()])])])};b._withStripped=!0;var y=i(15),x=i.n(y),_=i(9),C=i.n(_),w=i(3),k=i.n(w),S=s({name:"ElDialog",mixins:[x.a,k.a,C.a],props:{title:{type:String,default:""},modal:{type:Boolean,default:!0},modalAppendToBody:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},width:String,fullscreen:Boolean,customClass:{type:String,default:""},top:{type:String,default:"15vh"},beforeClose:Function,center:{type:Boolean,default:!1}},data:function(){return{closed:!1}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.$el.addEventListener("scroll",this.updatePopper),this.$nextTick(function(){t.$refs.dialog.scrollTop=0}),this.appendToBody&&document.body.appendChild(this.$el)):(this.$el.removeEventListener("scroll",this.updatePopper),this.closed||this.$emit("close"))}},computed:{style:function(){var e={};return this.fullscreen||(e.marginTop=this.top,this.width&&(e.width=this.width)),e}},methods:{getMigratingConfig:function(){return{props:{size:"size is removed."}}},handleWrapperClick:function(){this.closeOnClickModal&&this.handleClose()},handleClose:function(){"function"==typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),this.closed=!0)},updatePopper:function(){this.broadcast("ElSelectDropdown","updatePopper"),this.broadcast("ElDropdownMenu","updatePopper")},afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")}},mounted:function(){this.visible&&(this.rendered=!0,this.open(),this.appendToBody&&document.body.appendChild(this.$el))},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},b,[],!1,null,null,null);S.options.__file="packages/dialog/src/component.vue";var D=S.exports;D.install=function(e){e.component(D.name,D)};var $=D,O=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.close,expression:"close"}],staticClass:"el-autocomplete",attrs:{"aria-haspopup":"listbox",role:"combobox","aria-expanded":e.suggestionVisible,"aria-owns":e.id}},[i("el-input",e._b({ref:"input",on:{input:e.handleChange,focus:e.handleFocus,blur:e.handleBlur,clear:e.handleClear},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex-1)},function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex+1)},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleKeyEnter(t):null},function(t){return"button"in t||!e._k(t.keyCode,"tab",9,t.key,"Tab")?e.close(t):null}]}},"el-input",[e.$props,e.$attrs],!1),[e.$slots.prepend?i("template",{slot:"prepend"},[e._t("prepend")],2):e._e(),e.$slots.append?i("template",{slot:"append"},[e._t("append")],2):e._e(),e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),e.$slots.suffix?i("template",{slot:"suffix"},[e._t("suffix")],2):e._e()],2),i("el-autocomplete-suggestions",{ref:"suggestions",class:[e.popperClass?e.popperClass:""],attrs:{"visible-arrow":"","popper-options":e.popperOptions,"append-to-body":e.popperAppendToBody,placement:e.placement,id:e.id}},e._l(e.suggestions,function(t,n){return i("li",{key:n,class:{highlighted:e.highlightedIndex===n},attrs:{id:e.id+"-item-"+n,role:"option","aria-selected":e.highlightedIndex===n},on:{click:function(i){e.select(t)}}},[e._t("default",[e._v("\n "+e._s(t[e.valueKey])+"\n ")],{item:t})],2)}),0)],1)};O._withStripped=!0;var E=i(12),T=i.n(E),M=i(10),P=i.n(M),I=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-autocomplete-suggestion el-popper",class:{"is-loading":!e.parent.hideLoading&&e.parent.loading},style:{width:e.dropdownWidth},attrs:{role:"region"}},[i("el-scrollbar",{attrs:{tag:"ul","wrap-class":"el-autocomplete-suggestion__wrap","view-class":"el-autocomplete-suggestion__list"}},[!e.parent.hideLoading&&e.parent.loading?i("li",[i("i",{staticClass:"el-icon-loading"})]):e._t("default")],2)],1)])};I._withStripped=!0;var N=i(5),j=i.n(N),F=i(18),L=i.n(F),A=s({components:{ElScrollbar:L.a},mixins:[j.a,k.a],componentName:"ElAutocompleteSuggestions",data:function(){return{parent:this.$parent,dropdownWidth:""}},props:{options:{default:function(){return{gpuAcceleration:!1}}},id:String},methods:{select:function(e){this.dispatch("ElAutocomplete","item-click",e)}},updated:function(){var e=this;this.$nextTick(function(t){e.popperJS&&e.updatePopper()})},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$refs.input.$refs.input,this.referenceList=this.$el.querySelector(".el-autocomplete-suggestion__list"),this.referenceList.setAttribute("role","listbox"),this.referenceList.setAttribute("id",this.id)},created:function(){var e=this;this.$on("visible",function(t,i){e.dropdownWidth=i+"px",e.showPopper=t})}},I,[],!1,null,null,null);A.options.__file="packages/autocomplete/src/autocomplete-suggestions.vue";var V=A.exports,z=i(21),B=i.n(z),R=s({name:"ElAutocomplete",mixins:[k.a,B()("input"),C.a],inheritAttrs:!1,componentName:"ElAutocomplete",components:{ElInput:d.a,ElAutocompleteSuggestions:V},directives:{Clickoutside:P.a},props:{valueKey:{type:String,default:"value"},popperClass:String,popperOptions:Object,placeholder:String,clearable:{type:Boolean,default:!1},disabled:Boolean,name:String,size:String,value:String,maxlength:Number,minlength:Number,autofocus:Boolean,fetchSuggestions:Function,triggerOnFocus:{type:Boolean,default:!0},customItem:String,selectWhenUnmatched:{type:Boolean,default:!1},prefixIcon:String,suffixIcon:String,label:String,debounce:{type:Number,default:300},placement:{type:String,default:"bottom-start"},hideLoading:Boolean,popperAppendToBody:{type:Boolean,default:!0},highlightFirstItem:{type:Boolean,default:!1}},data:function(){return{activated:!1,suggestions:[],loading:!1,highlightedIndex:-1,suggestionDisabled:!1}},computed:{suggestionVisible:function(){var e=this.suggestions;return(Array.isArray(e)&&e.length>0||this.loading)&&this.activated},id:function(){return"el-autocomplete-"+Object(m.generateId)()}},watch:{suggestionVisible:function(e){var t=this.getInput();t&&this.broadcast("ElAutocompleteSuggestions","visible",[e,t.offsetWidth])}},methods:{getMigratingConfig:function(){return{props:{"custom-item":"custom-item is removed, use scoped slot instead.",props:"props is removed, use value-key instead."}}},getData:function(e){var t=this;this.suggestionDisabled||(this.loading=!0,this.fetchSuggestions(e,function(e){t.loading=!1,t.suggestionDisabled||(Array.isArray(e)?(t.suggestions=e,t.highlightedIndex=t.highlightFirstItem?0:-1):console.error("[Element Error][Autocomplete]autocomplete suggestions must be an array"))}))},handleChange:function(e){if(this.$emit("input",e),this.suggestionDisabled=!1,!this.triggerOnFocus&&!e)return this.suggestionDisabled=!0,void(this.suggestions=[]);this.debouncedGetData(e)},handleFocus:function(e){this.activated=!0,this.$emit("focus",e),this.triggerOnFocus&&this.debouncedGetData(this.value)},handleBlur:function(e){this.$emit("blur",e)},handleClear:function(){this.activated=!1,this.$emit("clear")},close:function(e){this.activated=!1},handleKeyEnter:function(e){var t=this;this.suggestionVisible&&this.highlightedIndex>=0&&this.highlightedIndex=this.suggestions.length&&(e=this.suggestions.length-1);var t=this.$refs.suggestions.$el.querySelector(".el-autocomplete-suggestion__wrap"),i=t.querySelectorAll(".el-autocomplete-suggestion__list li")[e],n=t.scrollTop,s=i.offsetTop;s+i.scrollHeight>n+t.clientHeight&&(t.scrollTop+=i.scrollHeight),s=0&&this.resetTabindex(this.triggerElm),clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.visible=!1},"click"===this.trigger?0:this.hideTimeout))},handleClick:function(){this.triggerElm.disabled||(this.visible?this.hide():this.show())},handleTriggerKeyDown:function(e){var t=e.keyCode;[38,40].indexOf(t)>-1?(this.removeTabindex(),this.resetTabindex(this.menuItems[0]),this.menuItems[0].focus(),e.preventDefault(),e.stopPropagation()):13===t?this.handleClick():[9,27].indexOf(t)>-1&&this.hide()},handleItemKeyDown:function(e){var t=e.keyCode,i=e.target,n=this.menuItemsArray.indexOf(i),s=this.menuItemsArray.length-1,r=void 0;[38,40].indexOf(t)>-1?(r=38===t?0!==n?n-1:0:n-1&&(this.hide(),this.triggerElmFocus())},resetTabindex:function(e){this.removeTabindex(),e.setAttribute("tabindex","0")},removeTabindex:function(){this.triggerElm.setAttribute("tabindex","-1"),this.menuItemsArray.forEach(function(e){e.setAttribute("tabindex","-1")})},initAria:function(){this.dropdownElm.setAttribute("id",this.listId),this.triggerElm.setAttribute("aria-haspopup","list"),this.triggerElm.setAttribute("aria-controls",this.listId),this.splitButton||(this.triggerElm.setAttribute("role","button"),this.triggerElm.setAttribute("tabindex",this.tabindex),this.triggerElm.setAttribute("class",(this.triggerElm.getAttribute("class")||"")+" el-dropdown-selfdefine"))},initEvent:function(){var e=this,t=this.trigger,i=this.show,n=this.hide,s=this.handleClick,r=this.splitButton,a=this.handleTriggerKeyDown,o=this.handleItemKeyDown;this.triggerElm=r?this.$refs.trigger.$el:this.$slots.default[0].elm;var l=this.dropdownElm;this.triggerElm.addEventListener("keydown",a),l.addEventListener("keydown",o,!0),r||(this.triggerElm.addEventListener("focus",function(){e.focusing=!0}),this.triggerElm.addEventListener("blur",function(){e.focusing=!1}),this.triggerElm.addEventListener("click",function(){e.focusing=!1})),"hover"===t?(this.triggerElm.addEventListener("mouseenter",i),this.triggerElm.addEventListener("mouseleave",n),l.addEventListener("mouseenter",i),l.addEventListener("mouseleave",n)):"click"===t&&this.triggerElm.addEventListener("click",s)},handleMenuItemClick:function(e,t){this.hideOnClick&&(this.visible=!1),this.$emit("command",e,t)},triggerElmFocus:function(){this.triggerElm.focus&&this.triggerElm.focus()},initDomOperation:function(){this.dropdownElm=this.popperElm,this.menuItems=this.dropdownElm.querySelectorAll("[tabindex='-1']"),this.menuItemsArray=[].slice.call(this.menuItems),this.initEvent(),this.initAria()}},render:function(e){var t=this,i=this.hide,n=this.splitButton,s=this.type,r=this.dropdownSize,a=n?e("el-button-group",[e("el-button",{attrs:{type:s,size:r},nativeOn:{click:function(e){t.$emit("click",e),i()}}},[this.$slots.default]),e("el-button",{ref:"trigger",attrs:{type:s,size:r},class:"el-dropdown__caret-button"},[e("i",{class:"el-dropdown__icon el-icon-arrow-down"})])]):this.$slots.default;return e("div",{class:"el-dropdown",directives:[{name:"clickoutside",value:i}]},[a,this.$slots.dropdown])}},void 0,void 0,!1,null,null,null);G.options.__file="packages/dropdown/src/dropdown.vue";var X=G.exports;X.install=function(e){e.component(X.name,X)};var Q=X,J=function(){var e=this.$createElement,t=this._self._c||e;return t("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":this.doDestroy}},[t("ul",{directives:[{name:"show",rawName:"v-show",value:this.showPopper,expression:"showPopper"}],staticClass:"el-dropdown-menu el-popper",class:[this.size&&"el-dropdown-menu--"+this.size]},[this._t("default")],2)])};J._withStripped=!0;var Z=s({name:"ElDropdownMenu",componentName:"ElDropdownMenu",mixins:[j.a],props:{visibleArrow:{type:Boolean,default:!0},arrowOffset:{type:Number,default:0}},data:function(){return{size:this.dropdown.dropdownSize}},inject:["dropdown"],created:function(){var e=this;this.$on("updatePopper",function(){e.showPopper&&e.updatePopper()}),this.$on("visible",function(t){e.showPopper=t})},mounted:function(){this.dropdown.popperElm=this.popperElm=this.$el,this.referenceElm=this.dropdown.$el,this.dropdown.initDomOperation()},watch:{"dropdown.placement":{immediate:!0,handler:function(e){this.currentPlacement=e}}}},J,[],!1,null,null,null);Z.options.__file="packages/dropdown/src/dropdown-menu.vue";var ee=Z.exports;ee.install=function(e){e.component(ee.name,ee)};var te=ee,ie=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-dropdown-menu__item",class:{"is-disabled":e.disabled,"el-dropdown-menu__item--divided":e.divided},attrs:{"aria-disabled":e.disabled,tabindex:e.disabled?null:-1},on:{click:e.handleClick}},[e.icon?i("i",{class:e.icon}):e._e(),e._t("default")],2)};ie._withStripped=!0;var ne=s({name:"ElDropdownItem",mixins:[k.a],props:{command:{},disabled:Boolean,divided:Boolean,icon:String},methods:{handleClick:function(e){this.dispatch("ElDropdown","menu-item-click",[this.command,this])}}},ie,[],!1,null,null,null);ne.options.__file="packages/dropdown/src/dropdown-item.vue";var se=ne.exports;se.install=function(e){e.component(se.name,se)};var re=se,ae=ae||{};ae.Utils=ae.Utils||{},ae.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var i=e.childNodes[t];if(ae.Utils.attemptFocus(i)||ae.Utils.focusLastDescendant(i))return!0}return!1},ae.Utils.attemptFocus=function(e){if(!ae.Utils.isFocusable(e))return!1;ae.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(e){}return ae.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},ae.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},ae.Utils.triggerEvent=function(e,t){var i=void 0;i=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var n=document.createEvent(i),s=arguments.length,r=Array(s>2?s-2:0),a=2;a=0;t--)e.splice(t,0,e[t]);e=e.join("")}return/^[0-9a-fA-F]{6}$/.test(e)?{red:parseInt(e.slice(0,2),16),green:parseInt(e.slice(2,4),16),blue:parseInt(e.slice(4,6),16)}:{red:255,green:255,blue:255}},mixColor:function(e,t){var i=this.getColorChannels(e),n=i.red,s=i.green,r=i.blue;return t>0?(n*=1-t,s*=1-t,r*=1-t):(n+=(255-n)*t,s+=(255-s)*t,r+=(255-r)*t),"rgb("+Math.round(n)+", "+Math.round(s)+", "+Math.round(r)+")"},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},openMenu:function(e,t){var i=this.openedMenus;-1===i.indexOf(e)&&(this.uniqueOpened&&(this.openedMenus=i.filter(function(e){return-1!==t.indexOf(e)})),this.openedMenus.push(e))},closeMenu:function(e){var t=this.openedMenus.indexOf(e);-1!==t&&this.openedMenus.splice(t,1)},handleSubmenuClick:function(e){var t=e.index,i=e.indexPath;-1!==this.openedMenus.indexOf(t)?(this.closeMenu(t),this.$emit("close",t,i)):(this.openMenu(t,i),this.$emit("open",t,i))},handleItemClick:function(e){var t=this,i=e.index,n=e.indexPath,s=this.activeIndex,r=null!==e.index;r&&(this.activeIndex=e.index),this.$emit("select",i,n,e),("horizontal"===this.mode||this.collapse)&&(this.openedMenus=[]),this.router&&r&&this.routeToItem(e,function(e){t.activeIndex=s,e&&console.error(e)})},initOpenedMenu:function(){var e=this,t=this.activeIndex,i=this.items[t];i&&"horizontal"!==this.mode&&!this.collapse&&i.indexPath.forEach(function(t){var i=e.submenus[t];i&&e.openMenu(t,i.indexPath)})},routeToItem:function(e,t){var i=e.route||e.index;try{this.$router.push(i,function(){},t)}catch(e){console.error(e)}},open:function(e){var t=this,i=this.submenus[e.toString()].indexPath;i.forEach(function(e){return t.openMenu(e,i)})},close:function(e){this.closeMenu(e)}},mounted:function(){this.initOpenedMenu(),this.$on("item-click",this.handleItemClick),this.$on("submenu-click",this.handleSubmenuClick),"horizontal"===this.mode&&new pe(this.$el),this.$watch("items",this.updateActiveIndex)}},void 0,void 0,!1,null,null,null);me.options.__file="packages/menu/src/menu.vue";var ve=me.exports;ve.install=function(e){e.component(ve.name,ve)};var ge=ve,be=i(20),ye=i.n(be),xe={inject:["rootMenu"],computed:{indexPath:function(){for(var e=[this.index],t=this.$parent;"ElMenu"!==t.$options.componentName;)t.index&&e.unshift(t.index),t=t.$parent;return e},parentMenu:function(){for(var e=this.$parent;e&&-1===["ElMenu","ElSubmenu"].indexOf(e.$options.componentName);)e=e.$parent;return e},paddingStyle:function(){if("vertical"!==this.rootMenu.mode)return{};var e=20,t=this.$parent;if(this.rootMenu.collapse)e=20;else for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return{paddingLeft:e+"px"}}}},_e={props:{transformOrigin:{type:[Boolean,String],default:!1},offset:j.a.props.offset,boundariesPadding:j.a.props.boundariesPadding,popperOptions:j.a.props.popperOptions},data:j.a.data,methods:j.a.methods,beforeDestroy:j.a.beforeDestroy,deactivated:j.a.deactivated},Ce=s({name:"ElSubmenu",componentName:"ElSubmenu",mixins:[xe,k.a,_e],components:{ElCollapseTransition:ye.a},props:{index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0}},data:function(){return{popperJS:null,timeout:null,items:{},submenus:{},mouseInChild:!1}},watch:{opened:function(e){var t=this;this.isMenuPopup&&this.$nextTick(function(e){t.updatePopper()})}},computed:{appendToBody:function(){return void 0===this.popperAppendToBody?this.isFirstLevel:this.popperAppendToBody},menuTransitionName:function(){return this.rootMenu.collapse?"el-zoom-in-left":"el-zoom-in-top"},opened:function(){return this.rootMenu.openedMenus.indexOf(this.index)>-1},active:function(){var e=!1,t=this.submenus,i=this.items;return Object.keys(i).forEach(function(t){i[t].active&&(e=!0)}),Object.keys(t).forEach(function(i){t[i].active&&(e=!0)}),e},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},isMenuPopup:function(){return this.rootMenu.isMenuPopup},titleStyle:function(){return"horizontal"!==this.mode?{color:this.textColor}:{borderBottomColor:this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent",color:this.active?this.activeTextColor:this.textColor}},isFirstLevel:function(){for(var e=!0,t=this.$parent;t&&t!==this.rootMenu;){if(["ElSubmenu","ElMenuItemGroup"].indexOf(t.$options.componentName)>-1){e=!1;break}t=t.$parent}return e}},methods:{handleCollapseToggle:function(e){e?this.initPopper():this.doDestroy()},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},handleClick:function(){var e=this.rootMenu,t=this.disabled;"hover"===e.menuTrigger&&"horizontal"===e.mode||e.collapse&&"vertical"===e.mode||t||this.dispatch("ElMenu","submenu-click",this)},handleMouseenter:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.showTimeout;if("ActiveXObject"in window||"focus"!==e.type||e.relatedTarget){var n=this.rootMenu,s=this.disabled;"click"===n.menuTrigger&&"horizontal"===n.mode||!n.collapse&&"vertical"===n.mode||s||(this.dispatch("ElSubmenu","mouse-enter-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){t.rootMenu.openMenu(t.index,t.indexPath)},i))}},handleMouseleave:function(){var e=this,t=this.rootMenu;"click"===t.menuTrigger&&"horizontal"===t.mode||!t.collapse&&"vertical"===t.mode||(this.dispatch("ElSubmenu","mouse-leave-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.appendToBody&&(e.rootMenu.openedMenus=[]),!e.mouseInChild&&e.rootMenu.closeMenu(e.index)},this.hideTimeout))},handleTitleMouseenter:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.hoverBackground)}},handleTitleMouseleave:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.backgroundColor||"")}},updatePlacement:function(){this.currentPlacement="horizontal"===this.mode&&this.isFirstLevel?"bottom-start":"right-start"},initPopper:function(){this.referenceElm=this.$el,this.popperElm=this.$refs.menu,this.updatePlacement()}},created:function(){var e=this;this.$on("toggle-collapse",this.handleCollapseToggle),this.$on("mouse-enter-child",function(){e.mouseInChild=!0,clearTimeout(e.timeout)}),this.$on("mouse-leave-child",function(){e.mouseInChild=!1,clearTimeout(e.timeout)})},mounted:function(){this.parentMenu.addSubmenu(this),this.rootMenu.addSubmenu(this),this.initPopper()},beforeDestroy:function(){this.parentMenu.removeSubmenu(this),this.rootMenu.removeSubmenu(this)},render:function(e){var t=this,i=this.active,n=this.opened,s=this.paddingStyle,r=this.titleStyle,a=this.backgroundColor,o=this.rootMenu,l=this.currentPlacement,c=this.menuTransitionName,u=this.mode,h=this.disabled,d=this.popperClass,p=this.$slots,f=this.isFirstLevel,m=e("transition",{attrs:{name:c}},[e("div",{ref:"menu",directives:[{name:"show",value:n}],class:["el-menu--"+u,d],on:{mouseenter:function(e){return t.handleMouseenter(e,100)},mouseleave:this.handleMouseleave,focus:function(e){return t.handleMouseenter(e,100)}}},[e("ul",{attrs:{role:"menu"},class:["el-menu el-menu--popup","el-menu--popup-"+l],style:{backgroundColor:o.backgroundColor||""}},[p.default])])]),v=e("el-collapse-transition",[e("ul",{attrs:{role:"menu"},class:"el-menu el-menu--inline",directives:[{name:"show",value:n}],style:{backgroundColor:o.backgroundColor||""}},[p.default])]),g="horizontal"===o.mode&&f||"vertical"===o.mode&&!o.collapse?"el-icon-arrow-down":"el-icon-arrow-right";return e("li",{class:{"el-submenu":!0,"is-active":i,"is-opened":n,"is-disabled":h},attrs:{role:"menuitem","aria-haspopup":"true","aria-expanded":n},on:{mouseenter:this.handleMouseenter,mouseleave:this.handleMouseleave,focus:this.handleMouseenter}},[e("div",{class:"el-submenu__title",ref:"submenu-title",on:{click:this.handleClick,mouseenter:this.handleTitleMouseenter,mouseleave:this.handleTitleMouseleave},style:[s,r,{backgroundColor:a}]},[p.title,e("i",{class:["el-submenu__icon-arrow",g]})]),this.isMenuPopup?m:v])}},void 0,void 0,!1,null,null,null);Ce.options.__file="packages/menu/src/submenu.vue";var we=Ce.exports;we.install=function(e){e.component(we.name,we)};var ke=we,Se=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-menu-item",class:{"is-active":e.active,"is-disabled":e.disabled},style:[e.paddingStyle,e.itemStyle,{backgroundColor:e.backgroundColor}],attrs:{role:"menuitem",tabindex:"-1"},on:{click:e.handleClick,mouseenter:e.onMouseEnter,focus:e.onMouseEnter,blur:e.onMouseLeave,mouseleave:e.onMouseLeave}},["ElMenu"===e.parentMenu.$options.componentName&&e.rootMenu.collapse&&e.$slots.title?i("el-tooltip",{attrs:{effect:"dark",placement:"right"}},[i("div",{attrs:{slot:"content"},slot:"content"},[e._t("title")],2),i("div",{staticStyle:{position:"absolute",left:"0",top:"0",height:"100%",width:"100%",display:"inline-block","box-sizing":"border-box",padding:"0 20px"}},[e._t("default")],2)]):[e._t("default"),e._t("title")]],2)};Se._withStripped=!0;var De=i(26),$e=i.n(De),Oe=s({name:"ElMenuItem",componentName:"ElMenuItem",mixins:[xe,k.a],components:{ElTooltip:$e.a},props:{index:{default:null,validator:function(e){return"string"==typeof e||null===e}},route:[String,Object],disabled:Boolean},computed:{active:function(){return this.index===this.rootMenu.activeIndex},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},itemStyle:function(){var e={color:this.active?this.activeTextColor:this.textColor};return"horizontal"!==this.mode||this.isNested||(e.borderBottomColor=this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent"),e},isNested:function(){return this.parentMenu!==this.rootMenu}},methods:{onMouseEnter:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.hoverBackground)},onMouseLeave:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.backgroundColor)},handleClick:function(){this.disabled||(this.dispatch("ElMenu","item-click",this),this.$emit("click",this))}},mounted:function(){this.parentMenu.addItem(this),this.rootMenu.addItem(this)},beforeDestroy:function(){this.parentMenu.removeItem(this),this.rootMenu.removeItem(this)}},Se,[],!1,null,null,null);Oe.options.__file="packages/menu/src/menu-item.vue";var Ee=Oe.exports;Ee.install=function(e){e.component(Ee.name,Ee)};var Te=Ee,Me=function(){var e=this.$createElement,t=this._self._c||e;return t("li",{staticClass:"el-menu-item-group"},[t("div",{staticClass:"el-menu-item-group__title",style:{paddingLeft:this.levelPadding+"px"}},[this.$slots.title?this._t("title"):[this._v(this._s(this.title))]],2),t("ul",[this._t("default")],2)])};Me._withStripped=!0;var Pe=s({name:"ElMenuItemGroup",componentName:"ElMenuItemGroup",inject:["rootMenu"],props:{title:{type:String}},data:function(){return{paddingLeft:20}},computed:{levelPadding:function(){var e=20,t=this.$parent;if(this.rootMenu.collapse)return 20;for(;t&&"ElMenu"!==t.$options.componentName;)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return e}}},Me,[],!1,null,null,null);Pe.options.__file="packages/menu/src/menu-item-group.vue";var Ie=Pe.exports;Ie.install=function(e){e.component(Ie.name,Ie)};var Ne=Ie,je=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?i("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?i("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?i("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?i("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?i("span",{staticClass:"el-input__suffix"},[i("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?i("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?i("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{click:e.clear}}):e._e(),e.showPwdVisible?i("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?i("span",{staticClass:"el-input__count"},[i("span",{staticClass:"el-input__count-inner"},[e._v("\n "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n ")])]):e._e()],2),e.validateState?i("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?i("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:i("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?i("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)};je._withStripped=!0;var Fe=void 0,Le="\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",Ae=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function Ve(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;Fe||(Fe=document.createElement("textarea"),document.body.appendChild(Fe));var n=function(e){var t=window.getComputedStyle(e),i=t.getPropertyValue("box-sizing"),n=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),s=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:Ae.map(function(e){return e+":"+t.getPropertyValue(e)}).join(";"),paddingSize:n,borderSize:s,boxSizing:i}}(e),s=n.paddingSize,r=n.borderSize,a=n.boxSizing,o=n.contextStyle;Fe.setAttribute("style",o+";"+Le),Fe.value=e.value||e.placeholder||"";var l=Fe.scrollHeight,c={};"border-box"===a?l+=r:"content-box"===a&&(l-=s),Fe.value="";var u=Fe.scrollHeight-s;if(null!==t){var h=u*t;"border-box"===a&&(h=h+s+r),l=Math.max(h,l),c.minHeight=h+"px"}if(null!==i){var d=u*i;"border-box"===a&&(d=d+s+r),l=Math.min(d,l)}return c.height=l+"px",Fe.parentNode&&Fe.parentNode.removeChild(Fe),Fe=null,c}var ze=i(7),Be=i.n(ze),Re=s({name:"ElInput",componentName:"ElInput",mixins:[k.a,C.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return Be()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"==typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize;if("textarea"===this.type)if(e){var t=e.minRows,i=e.maxRows;this.textareaCalcStyle=Ve(this.$refs.textarea,t,i)}else this.textareaCalcStyle={minHeight:Ve(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionEnd:function(e){this.isComposing=!1,this.handleInput(e)},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var i=null,n=0;n=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var i=this.getPrecision(this.step),n=Math.pow(10,i);t=Math.round(t/this.step)*n*this.step/n}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,i=this.getPrecision,n=this.precision,s=i(t);return void 0!==n?(s>n&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),n):Math.max(i(e),s)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"==typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),i=Math.pow(10,t);e=Math.round(e/this.step)*i*this.step/i}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),i=t.indexOf("."),n=0;return-1!==i&&(n=t.length-i-1),n},_increase:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e+i*t)/i)},_decrease:function(e,t){if("number"!=typeof e&&void 0!==e)return this.currentValue;var i=Math.pow(10,this.numPrecision);return this.toPrecision((i*e-i*t)/i)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"==typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){this.$refs&&this.$refs.input&&this.$refs.input.$refs.input.setAttribute("aria-valuenow",this.currentValue)}},qe,[],!1,null,null,null);Ye.options.__file="packages/input-number/src/input-number.vue";var Ue=Ye.exports;Ue.install=function(e){e.component(Ue.name,Ue)};var Ge=Ue,Xe=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio",class:[e.border&&e.radioSize?"el-radio--"+e.radioSize:"",{"is-disabled":e.isDisabled},{"is-focus":e.focus},{"is-bordered":e.border},{"is-checked":e.model===e.label}],attrs:{role:"radio","aria-checked":e.model===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[i("span",{staticClass:"el-radio__input",class:{"is-disabled":e.isDisabled,"is-checked":e.model===e.label}},[i("span",{staticClass:"el-radio__inner"}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],ref:"radio",staticClass:"el-radio__original",attrs:{type:"radio","aria-hidden":"true",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),i("span",{staticClass:"el-radio__label",on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};Xe._withStripped=!0;var Qe=s({name:"ElRadio",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElRadio",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch("ElRadioGroup","input",[e]):this.$emit("input",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.model),e.isGroup&&e.dispatch("ElRadioGroup","handleChange",e.model)})}}},Xe,[],!1,null,null,null);Qe.options.__file="packages/radio/src/radio.vue";var Je=Qe.exports;Je.install=function(e){e.component(Je.name,Je)};var Ze=Je,et=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-radio-group",attrs:{role:"radiogroup"},on:{keydown:this.handleKeydown}},[this._t("default")],2)};et._withStripped=!0;var tt=Object.freeze({LEFT:37,UP:38,RIGHT:39,DOWN:40}),it=s({name:"ElRadioGroup",componentName:"ElRadioGroup",inject:{elFormItem:{default:""}},mixins:[k.a],props:{value:{},size:String,fill:String,textColor:String,disabled:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},created:function(){var e=this;this.$on("handleChange",function(t){e.$emit("change",t)})},mounted:function(){var e=this.$el.querySelectorAll("[type=radio]"),t=this.$el.querySelectorAll("[role=radio]")[0];![].some.call(e,function(e){return e.checked})&&t&&(t.tabIndex=0)},methods:{handleKeydown:function(e){var t=e.target,i="INPUT"===t.nodeName?"[type=radio]":"[role=radio]",n=this.$el.querySelectorAll(i),s=n.length,r=[].indexOf.call(n,t),a=this.$el.querySelectorAll("[role=radio]");switch(e.keyCode){case tt.LEFT:case tt.UP:e.stopPropagation(),e.preventDefault(),0===r?(a[s-1].click(),a[s-1].focus()):(a[r-1].click(),a[r-1].focus());break;case tt.RIGHT:case tt.DOWN:r===s-1?(e.stopPropagation(),e.preventDefault(),a[0].click(),a[0].focus()):(a[r+1].click(),a[r+1].focus())}}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[this.value])}}},et,[],!1,null,null,null);it.options.__file="packages/radio/src/radio-group.vue";var nt=it.exports;nt.install=function(e){e.component(nt.name,nt)};var st=nt,rt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-radio-button",class:[e.size?"el-radio-button--"+e.size:"",{"is-active":e.value===e.label},{"is-disabled":e.isDisabled},{"is-focus":e.focus}],attrs:{role:"radio","aria-checked":e.value===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.value=e.isDisabled?e.value:e.label}}},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.value,expression:"value"}],staticClass:"el-radio-button__orig-radio",attrs:{type:"radio",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.value,e.label)},on:{change:[function(t){e.value=e.label},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),i("span",{staticClass:"el-radio-button__inner",style:e.value===e.label?e.activeStyle:null,on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])};rt._withStripped=!0;var at=s({name:"ElRadioButton",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},props:{label:{},disabled:Boolean,name:String},data:function(){return{focus:!1}},computed:{value:{get:function(){return this._radioGroup.value},set:function(e){this._radioGroup.$emit("input",e)}},_radioGroup:function(){for(var e=this.$parent;e;){if("ElRadioGroup"===e.$options.componentName)return e;e=e.$parent}return!1},activeStyle:function(){return{backgroundColor:this._radioGroup.fill||"",borderColor:this._radioGroup.fill||"",boxShadow:this._radioGroup.fill?"-1px 0 0 0 "+this._radioGroup.fill:"",color:this._radioGroup.textColor||""}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._radioGroup.radioGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isDisabled:function(){return this.disabled||this._radioGroup.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this._radioGroup&&this.value!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.dispatch("ElRadioGroup","handleChange",e.value)})}}},rt,[],!1,null,null,null);at.options.__file="packages/radio/src/radio-button.vue";var ot=at.exports;ot.install=function(e){e.component(ot.name,ot)};var lt=ot,ct=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{role:"checkbox","aria-checked":e.indeterminate?"mixed":e.isChecked,"aria-disabled":e.isDisabled,id:e.id}},[i("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{"aria-checked":"mixed"}},[i("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,s=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var r=e._i(i,null);n.checked?r<0&&(e.model=i.concat([null])):r>-1&&(e.model=i.slice(0,r).concat(i.slice(r+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,s=!!n.checked;if(Array.isArray(i)){var r=e.label,a=e._i(i,r);n.checked?a<0&&(e.model=i.concat([r])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])};ct._withStripped=!0;var ut=s({name:"ElCheckbox",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},ct,[],!1,null,null,null);ut.options.__file="packages/checkbox/src/checkbox.vue";var ht=ut.exports;ht.install=function(e){e.component(ht.name,ht)};var dt=ht,pt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("label",{staticClass:"el-checkbox-button",class:[e.size?"el-checkbox-button--"+e.size:"",{"is-disabled":e.isDisabled},{"is-checked":e.isChecked},{"is-focus":e.focus}],attrs:{role:"checkbox","aria-checked":e.isChecked,"aria-disabled":e.isDisabled}},[e.trueLabel||e.falseLabel?i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var i=e.model,n=t.target,s=n.checked?e.trueLabel:e.falseLabel;if(Array.isArray(i)){var r=e._i(i,null);n.checked?r<0&&(e.model=i.concat([null])):r>-1&&(e.model=i.slice(0,r).concat(i.slice(r+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):i("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var i=e.model,n=t.target,s=!!n.checked;if(Array.isArray(i)){var r=e.label,a=e._i(i,r);n.checked?a<0&&(e.model=i.concat([r])):a>-1&&(e.model=i.slice(0,a).concat(i.slice(a+1)))}else e.model=s},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),e.$slots.default||e.label?i("span",{staticClass:"el-checkbox-button__inner",style:e.isChecked?e.activeStyle:null},[e._t("default",[e._v(e._s(e.label))])],2):e._e()])};pt._withStripped=!0;var ft=s({name:"ElCheckboxButton",mixins:[k.a],inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},props:{value:{},label:{},disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number]},computed:{model:{get:function(){return this._checkboxGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this._checkboxGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):void 0!==this.value?this.$emit("input",e):this.selfModel=e}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},_checkboxGroup:function(){for(var e=this.$parent;e;){if("ElCheckboxGroup"===e.$options.componentName)return e;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},activeStyle:function(){return{backgroundColor:this._checkboxGroup.fill||"",borderColor:this._checkboxGroup.fill||"",color:this._checkboxGroup.textColor||"","box-shadow":"-1px 0 0 0 "+this._checkboxGroup.fill}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._checkboxGroup.checkboxGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,i=e.min;return!(!t&&!i)&&this.model.length>=t&&!this.isChecked||this.model.length<=i&&this.isChecked},isDisabled:function(){return this._checkboxGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled}},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var i=void 0;i=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",i,e),this.$nextTick(function(){t._checkboxGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()}},pt,[],!1,null,null,null);ft.options.__file="packages/checkbox/src/checkbox-button.vue";var mt=ft.exports;mt.install=function(e){e.component(mt.name,mt)};var vt=mt,gt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-checkbox-group",attrs:{role:"group","aria-label":"checkbox-group"}},[this._t("default")],2)};gt._withStripped=!0;var bt=s({name:"ElCheckboxGroup",componentName:"ElCheckboxGroup",mixins:[k.a],inject:{elFormItem:{default:""}},props:{value:{},disabled:Boolean,min:Number,max:Number,size:String,fill:String,textColor:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[e])}}},gt,[],!1,null,null,null);bt.options.__file="packages/checkbox/src/checkbox-group.vue";var yt=bt.exports;yt.install=function(e){e.component(yt.name,yt)};var xt=yt,_t=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-switch",class:{"is-disabled":e.switchDisabled,"is-checked":e.checked},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.switchDisabled},on:{click:function(t){return t.preventDefault(),e.switchValue(t)}}},[i("input",{ref:"input",staticClass:"el-switch__input",attrs:{type:"checkbox",id:e.id,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:e.switchDisabled},on:{change:e.handleChange,keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.switchValue(t):null}}}),e.inactiveIconClass||e.inactiveText?i("span",{class:["el-switch__label","el-switch__label--left",e.checked?"":"is-active"]},[e.inactiveIconClass?i("i",{class:[e.inactiveIconClass]}):e._e(),!e.inactiveIconClass&&e.inactiveText?i("span",{attrs:{"aria-hidden":e.checked}},[e._v(e._s(e.inactiveText))]):e._e()]):e._e(),i("span",{ref:"core",staticClass:"el-switch__core",style:{width:e.coreWidth+"px"}}),e.activeIconClass||e.activeText?i("span",{class:["el-switch__label","el-switch__label--right",e.checked?"is-active":""]},[e.activeIconClass?i("i",{class:[e.activeIconClass]}):e._e(),!e.activeIconClass&&e.activeText?i("span",{attrs:{"aria-hidden":!e.checked}},[e._v(e._s(e.activeText))]):e._e()]):e._e()])};_t._withStripped=!0;var Ct=s({name:"ElSwitch",mixins:[B()("input"),C.a,k.a],inject:{elForm:{default:""}},props:{value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:Number,default:40},activeIconClass:{type:String,default:""},inactiveIconClass:{type:String,default:""},activeText:String,inactiveText:String,activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},id:String},data:function(){return{coreWidth:this.width}},created:function(){~[this.activeValue,this.inactiveValue].indexOf(this.value)||this.$emit("input",this.inactiveValue)},computed:{checked:function(){return this.value===this.activeValue},switchDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{checked:function(){this.$refs.input.checked=this.checked,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[this.value])}},methods:{handleChange:function(e){var t=this,i=this.checked?this.inactiveValue:this.activeValue;this.$emit("input",i),this.$emit("change",i),this.$nextTick(function(){t.$refs.input.checked=t.checked})},setBackgroundColor:function(){var e=this.checked?this.activeColor:this.inactiveColor;this.$refs.core.style.borderColor=e,this.$refs.core.style.backgroundColor=e},switchValue:function(){!this.switchDisabled&&this.handleChange()},getMigratingConfig:function(){return{props:{"on-color":"on-color is renamed to active-color.","off-color":"off-color is renamed to inactive-color.","on-text":"on-text is renamed to active-text.","off-text":"off-text is renamed to inactive-text.","on-value":"on-value is renamed to active-value.","off-value":"off-value is renamed to inactive-value.","on-icon-class":"on-icon-class is renamed to active-icon-class.","off-icon-class":"off-icon-class is renamed to inactive-icon-class."}}}},mounted:function(){this.coreWidth=this.width||40,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.$refs.input.checked=this.checked}},_t,[],!1,null,null,null);Ct.options.__file="packages/switch/src/component.vue";var wt=Ct.exports;wt.install=function(e){e.component(wt.name,wt)};var kt=wt,St=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?i("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?i("span",[i("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?i("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[i("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():i("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,function(t){return i("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(i){e.deleteTag(i,t)}}},[i("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?i("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},click:function(e){e.stopPropagation()},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.deletePrevTag(t):null}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),i("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?i("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),i("template",{slot:"suffix"},[i("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?i("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[i("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?i("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):i("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)};St._withStripped=!0;var Dt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":this.$parent.multiple},this.popperClass],style:{minWidth:this.minWidth}},[this._t("default")],2)};Dt._withStripped=!0;var $t=s({name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[j.a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",function(){e.$parent.visible&&e.updatePopper()}),this.$on("destroyPopper",this.destroyPopper)}},Dt,[],!1,null,null,null);$t.options.__file="packages/select/src/select-dropdown.vue";var Ot=$t.exports,Et=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[i("span",[e._v(e._s(e.currentLabel))])])],2)};Et._withStripped=!0;var Tt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Mt=s({mixins:[k.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var i=this.select,n=i.remote,s=i.valueKey;if(!this.created&&!n){if(s&&"object"===(void 0===e?"undefined":Tt(e))&&"object"===(void 0===t?"undefined":Tt(t))&&e[s]===t[s])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var i=this.select.valueKey;return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var i=this.select.valueKey;return e&&e.some(function(e){return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(m.escapeRegexpString)(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){this.select.onOptionDestroy(this.select.options.indexOf(this))}},Et,[],!1,null,null,null);Mt.options.__file="packages/select/src/option.vue";var Pt=Mt.exports,It=i(28),Nt=i.n(It),jt=i(11),Ft=i(14),Lt=i.n(Ft),At=i(27),Vt=i.n(At),zt=i(22),Bt=s({mixins:[k.a,f.a,B()("reference"),{data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;"number"==typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var i=this.options[this.hoverIndex];!0!==i.disabled&&!0!==i.groupDisabled&&i.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}}],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(m.isIE)()&&!Object(m.isEdge)()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value;return this.clearable&&!this.selectDisabled&&this.inputHovering&&e},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"}},components:{ElInput:d.a,ElSelectMenu:Ot,ElOption:Pt,ElTag:Nt.a,ElScrollbar:L.a},directives:{Clickoutside:P.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,default:function(){return Object(Ft.t)("el.select.placeholder")}},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},placeholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(m.valueEquals)(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast("ElSelectDropdown","updatePopper")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=this,i=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.$nextTick(function(e){return t.handleQueryChange(i)});else{var n=i[i.length-1]||"";this.isOnComposition=!Object(zt.isKorean)(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!=typeof this.filterMethod&&"function"!=typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&"function"==typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"==typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var i=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");Vt()(i,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){Object(m.valueEquals)(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,i="[object object]"===Object.prototype.toString.call(e).toLowerCase(),n="[object null]"===Object.prototype.toString.call(e).toLowerCase(),s="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),r=this.cachedOptions.length-1;r>=0;r--){var a=this.cachedOptions[r];if(i?Object(m.getValueByPath)(a.value,this.valueKey)===Object(m.getValueByPath)(e,this.valueKey):a.value===e){t=a;break}}if(t)return t;var o={value:e,currentLabel:i||n||s?"":e};return this.multiple&&(o.hitState=!1),o},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var i=[];Array.isArray(this.value)&&this.value.forEach(function(t){i.push(e.getOption(t))}),this.selected=i,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.menuVisibleOnFocus=!0),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,i=[].filter.call(t,function(e){return"INPUT"===e.tagName})[0],n=e.$refs.tags,s=e.initialInputHeight||40;i.style.height=0===e.selected.length?s+"px":Math.max(n?n.clientHeight+(n.clientHeight>s?6:0):0,s)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var i=this;if(this.multiple){var n=(this.value||[]).slice(),s=this.getValueIndex(n,e.value);s>-1?n.splice(s,1):(this.multipleLimit<=0||n.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if("[object object]"===Object.prototype.toString.call(t).toLowerCase()){var i=this.valueKey,n=-1;return e.some(function(e,s){return Object(m.getValueByPath)(e,i)===Object(m.getValueByPath)(t,i)&&(n=s,!0)}),n}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var i=this.selected.indexOf(t);if(i>-1&&!this.selectDisabled){var n=this.value.slice();n.splice(i,1),this.$emit("input",n),this.emitChange(n),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var i=0;i!==this.options.length;++i){var n=this.options[i];if(this.query){if(!n.disabled&&!n.groupDisabled&&n.visible){this.hoverIndex=i;break}}else if(n.itemSelected){this.hoverIndex=i;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(m.getValueByPath)(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.placeholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=T()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=T()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object(jt.addResizeListener)(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var i=t.$el.querySelector("input");this.initialInputHeight=i.getBoundingClientRect().height||{medium:36,small:32,mini:28}[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object(jt.removeResizeListener)(this.$el,this.handleResize)}},St,[],!1,null,null,null);Bt.options.__file="packages/select/src/select.vue";var Rt=Bt.exports;Rt.install=function(e){e.component(Rt.name,Rt)};var Ht=Rt;Pt.install=function(e){e.component(Pt.name,Pt)};var Wt=Pt,qt=function(){var e=this.$createElement,t=this._self._c||e;return t("ul",{directives:[{name:"show",rawName:"v-show",value:this.visible,expression:"visible"}],staticClass:"el-select-group__wrap"},[t("li",{staticClass:"el-select-group__title"},[this._v(this._s(this.label))]),t("li",[t("ul",{staticClass:"el-select-group"},[this._t("default")],2)])])};qt._withStripped=!0;var Kt=s({mixins:[k.a],name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},data:function(){return{visible:!0}},watch:{disabled:function(e){this.broadcast("ElOption","handleGroupDisabled",e)}},methods:{queryChange:function(){this.visible=this.$children&&Array.isArray(this.$children)&&this.$children.some(function(e){return!0===e.visible})}},created:function(){this.$on("queryChange",this.queryChange)},mounted:function(){this.disabled&&this.broadcast("ElOption","handleGroupDisabled",this.disabled)}},qt,[],!1,null,null,null);Kt.options.__file="packages/select/src/option-group.vue";var Yt=Kt.exports;Yt.install=function(e){e.component(Yt.name,Yt)};var Ut=Yt,Gt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?i("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",[e._t("default")],2):e._e()])};Gt._withStripped=!0;var Xt=s({name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},Gt,[],!1,null,null,null);Xt.options.__file="packages/button/src/button.vue";var Qt=Xt.exports;Qt.install=function(e){e.component(Qt.name,Qt)};var Jt=Qt,Zt=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-button-group"},[this._t("default")],2)};Zt._withStripped=!0;var ei=s({name:"ElButtonGroup"},Zt,[],!1,null,null,null);ei.options.__file="packages/button/src/button-group.vue";var ti=ei.exports;ti.install=function(e){e.component(ti.name,ti)};var ii=ti,ni=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-table",class:[{"el-table--fit":e.fit,"el-table--striped":e.stripe,"el-table--border":e.border||e.isGroup,"el-table--hidden":e.isHidden,"el-table--group":e.isGroup,"el-table--fluid-height":e.maxHeight,"el-table--scrollable-x":e.layout.scrollX,"el-table--scrollable-y":e.layout.scrollY,"el-table--enable-row-hover":!e.store.states.isComplex,"el-table--enable-row-transition":0!==(e.store.states.data||[]).length&&(e.store.states.data||[]).length<100},e.tableSize?"el-table--"+e.tableSize:""],on:{mouseleave:function(t){e.handleMouseLeave(t)}}},[i("div",{ref:"hiddenColumns",staticClass:"hidden-columns"},[e._t("default")],2),e.showHeader?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"headerWrapper",staticClass:"el-table__header-wrapper"},[i("table-header",{ref:"tableHeader",style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"default-sort":e.defaultSort}})],1):e._e(),i("div",{ref:"bodyWrapper",staticClass:"el-table__body-wrapper",class:[e.layout.scrollX?"is-scrolling-"+e.scrollPosition:"is-scrolling-none"],style:[e.bodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{context:e.context,store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.data&&0!==e.data.length?e._e():i("div",{ref:"emptyBlock",staticClass:"el-table__empty-block",style:{width:e.bodyWidth}},[i("span",{staticClass:"el-table__empty-text"},[e._t("empty",[e._v(e._s(e.emptyText||e.t("el.table.emptyText")))])],2)]),e.$slots.append?i("div",{ref:"appendWrapper",staticClass:"el-table__append-wrapper"},[e._t("append")],2):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"},{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"footerWrapper",staticClass:"el-table__footer-wrapper"},[i("table-footer",{style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,"default-sort":e.defaultSort}})],1):e._e(),e.fixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"fixedWrapper",staticClass:"el-table__fixed",style:[{width:e.layout.fixedWidth?e.layout.fixedWidth+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"fixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"fixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"fixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"left",store:e.store,stripe:e.stripe,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"row-style":e.rowStyle}}),e.$slots.append?i("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"fixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"rightFixedWrapper",staticClass:"el-table__fixed-right",style:[{width:e.layout.rightFixedWidth?e.layout.rightFixedWidth+"px":"",right:e.layout.scrollY?(e.border?e.layout.gutterWidth:e.layout.gutterWidth||0)+"px":""},e.fixedHeight]},[e.showHeader?i("div",{ref:"rightFixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[i("table-header",{ref:"rightFixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,store:e.store}})],1):e._e(),i("div",{ref:"rightFixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[i("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"right",store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}})],1),e.showSummary?i("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"rightFixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[i("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?i("div",{ref:"rightFixedPatch",staticClass:"el-table__fixed-right-patch",style:{width:e.layout.scrollY?e.layout.gutterWidth+"px":"0",height:e.layout.headerHeight+"px"}}):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.resizeProxyVisible,expression:"resizeProxyVisible"}],ref:"resizeProxy",staticClass:"el-table__column-resize-proxy"})])};ni._withStripped=!0;var si=i(13),ri=i.n(si),ai=i(34),oi=i(38),li=i.n(oi),ci="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>-1,ui={bind:function(e,t){!function(e,t){e&&e.addEventListener&&e.addEventListener(ci?"DOMMouseScroll":"mousewheel",function(e){var i=li()(e);t&&t.apply(this,[e,i])})}(e,t.value)}},hi=i(6),di=i.n(hi),pi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},fi=function(e){for(var t=e.target;t&&"HTML"!==t.tagName.toUpperCase();){if("TD"===t.tagName.toUpperCase())return t;t=t.parentNode}return null},mi=function(e){return null!==e&&"object"===(void 0===e?"undefined":pi(e))},vi=function(e,t,i,n,s){if(!t&&!n&&(!s||Array.isArray(s)&&!s.length))return e;i="string"==typeof i?"descending"===i?-1:1:i&&i<0?-1:1;var r=n?null:function(i,n){return s?(Array.isArray(s)||(s=[s]),s.map(function(t){return"string"==typeof t?Object(m.getValueByPath)(i,t):t(i,n,e)})):("$key"!==t&&mi(i)&&"$value"in i&&(i=i.$value),[mi(i)?Object(m.getValueByPath)(i,t):i])};return e.map(function(e,t){return{value:e,index:t,key:r?r(e,t):null}}).sort(function(e,t){var s=function(e,t){if(n)return n(e.value,t.value);for(var i=0,s=e.key.length;it.key[i])return 1}return 0}(e,t);return s||(s=e.index-t.index),s*i}).map(function(e){return e.value})},gi=function(e,t){var i=null;return e.columns.forEach(function(e){e.id===t&&(i=e)}),i},bi=function(e,t){var i=(t.className||"").match(/el-table_[^\s]+/gm);return i?gi(e,i[0]):null},yi=function(e,t){if(!e)throw new Error("row is required when get row identity");if("string"==typeof t){if(t.indexOf(".")<0)return e[t];for(var i=t.split("."),n=e,s=0;s2&&void 0!==arguments[2]?arguments[2]:"children",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"hasChildren",s=function(e){return!(Array.isArray(e)&&e.length)};e.forEach(function(e){if(e[n])t(e,null,0);else{var r=e[i];s(r)||function e(r,a,o){t(r,a,o),a.forEach(function(r){if(r[n])t(r,null,o+1);else{var a=r[i];s(a)||e(r,a,o+1)}})}(e,r,0)}})}var Di={data:function(){return{states:{defaultExpandAll:!1,expandRows:[]}}},methods:{updateExpandRows:function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.rowKey,s=e.defaultExpandAll,r=e.expandRows;if(s)this.states.expandRows=i.slice();else if(n){var a=xi(r,n);this.states.expandRows=i.reduce(function(e,t){var i=yi(t,n);return a[i]&&e.push(t),e},[])}else this.states.expandRows=[]},toggleRowExpansion:function(e,t){ki(this.states.expandRows,e,t)&&(this.table.$emit("expand-change",e,this.states.expandRows.slice()),this.scheduleLayout())},setExpandRowKeys:function(e){this.assertRowKey();var t=this.states,i=t.data,n=t.rowKey,s=xi(i,n);this.states.expandRows=e.reduce(function(e,t){var i=s[t];return i&&e.push(i.row),e},[])},isRowExpanded:function(e){var t=this.states,i=t.expandRows,n=void 0===i?[]:i,s=t.rowKey;return s?!!xi(n,s)[yi(e,s)]:-1!==n.indexOf(e)}}},$i={data:function(){return{states:{_currentRowKey:null,currentRow:null}}},methods:{setCurrentRowKey:function(e){this.assertRowKey(),this.states._currentRowKey=e,this.setCurrentRowByKey(e)},restoreCurrentRowKey:function(){this.states._currentRowKey=null},setCurrentRowByKey:function(e){var t=this.states,i=t.data,n=void 0===i?[]:i,s=t.rowKey,r=null;s&&(r=Object(m.arrayFind)(n,function(t){return yi(t,s)===e})),t.currentRow=r},updateCurrentRow:function(e){var t=this.states,i=this.table,n=t.rowKey,s=t._currentRowKey,r=t.data||[],a=t.currentRow;if(e)this.restoreCurrentRowKey(),t.currentRow=e,a!==e&&this.table.$emit("current-change",e,a);else if(-1===r.indexOf(a)&&a){if(this.restoreCurrentRowKey(),n){var o=yi(a,n);this.setCurrentRowByKey(o)}else t.currentRow=null;t.currentRow!==a&&i.$emit("current-change",null,a)}else s&&this.setCurrentRowByKey(s)}}},Oi=Object.assign||function(e){for(var t=1;t0&&t[0]&&"selection"===t[0].type&&!t[0].fixed&&(t[0].fixed=!0,e.fixedColumns.unshift(t[0]));var i=t.filter(function(e){return!e.fixed});e.originColumns=[].concat(e.fixedColumns).concat(i).concat(e.rightFixedColumns);var n=Ti(i),s=Ti(e.fixedColumns),r=Ti(e.rightFixedColumns);e.leafColumnsLength=n.length,e.fixedLeafColumnsLength=s.length,e.rightFixedLeafColumnsLength=r.length,e.columns=[].concat(s).concat(n).concat(r),e.isComplex=e.fixedColumns.length>0||e.rightFixedColumns.length>0},scheduleLayout:function(e){e&&this.updateColumns(),this.table.debouncedUpdateLayout()},isSelected:function(e){var t=this.states.selection;return(void 0===t?[]:t).indexOf(e)>-1},clearSelection:function(){var e=this.states;e.isAllSelected=!1,e.selection.length&&(e.selection=[],this.table.$emit("selection-change",[]))},cleanSelection:function(){var e=this.states,t=e.data,i=e.rowKey,n=e.selection,s=void 0;if(i){s=[];var r=xi(n,i),a=xi(t,i);for(var o in r)r.hasOwnProperty(o)&&!a[o]&&s.push(r[o].row)}else s=n.filter(function(e){return-1===t.indexOf(e)});if(s.length){var l=n.filter(function(e){return-1===s.indexOf(e)});e.selection=l,this.table.$emit("selection-change",l.slice())}},toggleRowSelection:function(e,t){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(ki(this.states.selection,e,t)){var n=(this.states.selection||[]).slice();i&&this.table.$emit("select",n,e),this.table.$emit("selection-change",n)}},toggleAllSelection:T()(10,function(){var e=this.states,t=e.data,i=void 0===t?[]:t,n=e.selection,s=e.selectOnIndeterminate?!e.isAllSelected:!(e.isAllSelected||n.length);e.isAllSelected=s;var r=!1;i.forEach(function(t,i){e.selectable?e.selectable.call(null,t,i)&&ki(n,t,s)&&(r=!0):ki(n,t,s)&&(r=!0)}),r&&this.table.$emit("selection-change",n?n.slice():[]),this.table.$emit("select-all",n)}),updateSelectionByRowKey:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.data,s=xi(t,i);n.forEach(function(e){var n=yi(e,i),r=s[n];r&&(t[r.index]=e)})},updateAllSelected:function(){var e=this.states,t=e.selection,i=e.rowKey,n=e.selectable,s=e.data||[];if(0!==s.length){var r=void 0;i&&(r=xi(t,i));for(var a=function(e){return r?!!r[yi(e,i)]:-1!==t.indexOf(e)},o=!0,l=0,c=0,u=s.length;c1?i-1:0),s=1;sthis.bodyHeight;return this.scrollY=n,i!==n}return!1},e.prototype.setHeight=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"height";if(!di.a.prototype.$isServer){var n=this.table.$el;if(e=wi(e),this.height=e,!n&&(e||0===e))return di.a.nextTick(function(){return t.setHeight(e,i)});"number"==typeof e?(n.style[i]=e+"px",this.updateElsHeight()):"string"==typeof e&&(n.style[i]=e,this.updateElsHeight())}},e.prototype.setMaxHeight=function(e){this.setHeight(e,"max-height")},e.prototype.getFlattenColumns=function(){var e=[];return this.table.columns.forEach(function(t){t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)}),e},e.prototype.updateElsHeight=function(){var e=this;if(!this.table.$ready)return di.a.nextTick(function(){return e.updateElsHeight()});var t=this.table.$refs,i=t.headerWrapper,n=t.appendWrapper,s=t.footerWrapper;if(this.appendHeight=n?n.offsetHeight:0,!this.showHeader||i){var r=this.headerHeight=this.showHeader?i.offsetHeight:0;if(this.showHeader&&i.offsetWidth>0&&(this.table.columns||[]).length>0&&r<2)return di.a.nextTick(function(){return e.updateElsHeight()});var a=this.tableHeight=this.table.$el.clientHeight,o=this.footerHeight=s?s.offsetHeight:0;null!==this.height&&(this.bodyHeight=a-r-o+(s?1:0)),this.fixedBodyHeight=this.scrollX?this.bodyHeight-this.gutterWidth:this.bodyHeight;var l=!this.table.data||0===this.table.data.length;this.viewportHeight=this.scrollX?a-(l?0:this.gutterWidth):a,this.updateScrollY(),this.notifyObservers("scrollable")}},e.prototype.updateColumnsWidth=function(){if(!di.a.prototype.$isServer){var e=this.fit,t=this.table.$el.clientWidth,i=0,n=this.getFlattenColumns(),s=n.filter(function(e){return"number"!=typeof e.width});if(n.forEach(function(e){"number"==typeof e.width&&e.realWidth&&(e.realWidth=null)}),s.length>0&&e){n.forEach(function(e){i+=e.width||e.minWidth||80});var r=this.scrollY?this.gutterWidth:0;if(i<=t-r){this.scrollX=!1;var a=t-r-i;if(1===s.length)s[0].realWidth=(s[0].minWidth||80)+a;else{var o=a/s.reduce(function(e,t){return e+(t.minWidth||80)},0),l=0;s.forEach(function(e,t){if(0!==t){var i=Math.floor((e.minWidth||80)*o);l+=i,e.realWidth=(e.minWidth||80)+i}}),s[0].realWidth=(s[0].minWidth||80)+a-l}}else this.scrollX=!0,s.forEach(function(e){e.realWidth=e.minWidth});this.bodyWidth=Math.max(i,t),this.table.resizeState.width=this.bodyWidth}else n.forEach(function(e){e.width||e.minWidth?e.realWidth=e.width||e.minWidth:e.realWidth=80,i+=e.realWidth}),this.scrollX=i>t,this.bodyWidth=i;var c=this.store.states.fixedColumns;if(c.length>0){var u=0;c.forEach(function(e){u+=e.realWidth||e.width}),this.fixedWidth=u}var h=this.store.states.rightFixedColumns;if(h.length>0){var d=0;h.forEach(function(e){d+=e.realWidth||e.width}),this.rightFixedWidth=d}this.notifyObservers("columns")}},e.prototype.addObserver=function(e){this.observers.push(e)},e.prototype.removeObserver=function(e){var t=this.observers.indexOf(e);-1!==t&&this.observers.splice(t,1)},e.prototype.notifyObservers=function(e){var t=this;this.observers.forEach(function(i){switch(e){case"columns":i.onColumnsChange(t);break;case"scrollable":i.onScrollableChange(t);break;default:throw new Error("Table Layout don't have event "+e+".")}})},e}(),Li={created:function(){this.tableLayout.addObserver(this)},destroyed:function(){this.tableLayout.removeObserver(this)},computed:{tableLayout:function(){var e=this.layout;if(!e&&this.table&&(e=this.table.layout),!e)throw new Error("Can not find table layout.");return e}},mounted:function(){this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout)},updated:function(){this.__updated__||(this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout),this.__updated__=!0)},methods:{onColumnsChange:function(){var e=this.$el.querySelectorAll("colgroup > col");if(e.length){var t={};this.tableLayout.getFlattenColumns().forEach(function(e){t[e.id]=e});for(var i=0,n=e.length;i col[name=gutter]"),i=0,n=t.length;i=this.leftFixedLeafCount:"right"===this.fixed?e=this.columnsCount-this.rightFixedLeafCount},getSpan:function(e,t,i,n){var s=1,r=1,a=this.table.spanMethod;if("function"==typeof a){var o=a({row:e,column:t,rowIndex:i,columnIndex:n});Array.isArray(o)?(s=o[0],r=o[1]):"object"===(void 0===o?"undefined":Ai(o))&&(s=o.rowspan,r=o.colspan)}return{rowspan:s,colspan:r}},getRowStyle:function(e,t){var i=this.table.rowStyle;return"function"==typeof i?i.call(null,{row:e,rowIndex:t}):i||null},getRowClass:function(e,t){var i=["el-table__row"];this.table.highlightCurrentRow&&e===this.store.states.currentRow&&i.push("current-row"),this.stripe&&t%2==1&&i.push("el-table__row--striped");var n=this.table.rowClassName;return"string"==typeof n?i.push(n):"function"==typeof n&&i.push(n.call(null,{row:e,rowIndex:t})),this.store.states.expandRows.indexOf(e)>-1&&i.push("expanded"),i},getCellStyle:function(e,t,i,n){var s=this.table.cellStyle;return"function"==typeof s?s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):s},getCellClass:function(e,t,i,n){var s=[n.id,n.align,n.className];this.isColumnHidden(t)&&s.push("is-hidden");var r=this.table.cellClassName;return"string"==typeof r?s.push(r):"function"==typeof r&&s.push(r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),s.join(" ")},getColspanRealWidth:function(e,t,i){return t<1?e[i].realWidth:e.map(function(e){return e.realWidth}).slice(i,i+t).reduce(function(e,t){return e+t},-1)},handleCellMouseEnter:function(e,t){var i=this.table,n=fi(e);if(n){var s=bi(i,n),r=i.hoverState={cell:n,column:s,row:t};i.$emit("cell-mouse-enter",r.row,r.column,r.cell,e)}var a=e.target.querySelector(".cell");if(Object(fe.hasClass)(a,"el-tooltip")&&a.childNodes.length){var o=document.createRange();if(o.setStart(a,0),o.setEnd(a,a.childNodes.length),(o.getBoundingClientRect().width+((parseInt(Object(fe.getStyle)(a,"paddingLeft"),10)||0)+(parseInt(Object(fe.getStyle)(a,"paddingRight"),10)||0))>a.offsetWidth||a.scrollWidth>a.offsetWidth)&&this.$refs.tooltip){var l=this.$refs.tooltip;this.tooltipContent=n.innerText||n.textContent,l.referenceElm=n,l.$refs.popper&&(l.$refs.popper.style.display="none"),l.doDestroy(),l.setExpectedState(!0),this.activateTooltip(l)}}},handleCellMouseLeave:function(e){var t=this.$refs.tooltip;if(t&&(t.setExpectedState(!1),t.handleClosePopper()),fi(e)){var i=this.table.hoverState||{};this.table.$emit("cell-mouse-leave",i.row,i.column,i.cell,e)}},handleMouseEnter:T()(30,function(e){this.store.commit("setHoverRow",e)}),handleMouseLeave:T()(30,function(){this.store.commit("setHoverRow",null)}),handleContextMenu:function(e,t){this.handleEvent(e,t,"contextmenu")},handleDoubleClick:function(e,t){this.handleEvent(e,t,"dblclick")},handleClick:function(e,t){this.store.commit("setCurrentRow",t),this.handleEvent(e,t,"click")},handleEvent:function(e,t,i){var n=this.table,s=fi(e),r=void 0;s&&(r=bi(n,s))&&n.$emit("cell-"+i,t,r,s,e),n.$emit("row-"+i,t,r,e)},rowRender:function(e,t,i){var n=this,s=this.$createElement,r=this.treeIndent,a=this.columns,o=this.firstDefaultColumnIndex,l=a.map(function(e,t){return n.isColumnHidden(t)}),c=this.getRowClass(e,t),u=!0;return i&&(c.push("el-table__row--level-"+i.level),u=i.display),s("tr",{directives:[{name:"show",value:u}],style:this.getRowStyle(e,t),class:c,key:this.getKeyOfRow(e,t),on:{dblclick:function(t){return n.handleDoubleClick(t,e)},click:function(t){return n.handleClick(t,e)},contextmenu:function(t){return n.handleContextMenu(t,e)},mouseenter:function(e){return n.handleMouseEnter(t)},mouseleave:this.handleMouseLeave}},[a.map(function(c,u){var h=n.getSpan(e,c,t,u),d=h.rowspan,p=h.colspan;if(!d||!p)return null;var f=Vi({},c);f.realWidth=n.getColspanRealWidth(a,p,u);var m={store:n.store,_self:n.context||n.table.$vnode.context,column:f,row:e,$index:t};return u===o&&i&&(m.treeNode={indent:i.level*r,level:i.level},"boolean"==typeof i.expanded&&(m.treeNode.expanded=i.expanded,"loading"in i&&(m.treeNode.loading=i.loading),"noLazyChildren"in i&&(m.treeNode.noLazyChildren=i.noLazyChildren))),s("td",{style:n.getCellStyle(t,u,e,c),class:n.getCellClass(t,u,e,c),attrs:{rowspan:d,colspan:p},on:{mouseenter:function(t){return n.handleCellMouseEnter(t,e)},mouseleave:n.handleCellMouseLeave}},[c.renderCell.call(n._renderProxy,n.$createElement,m,l[u])])})])},wrappedRowRender:function(e,t){var i=this,n=this.$createElement,s=this.store,r=s.isRowExpanded,a=s.assertRowKey,o=s.states,l=o.treeData,c=o.lazyTreeNodeMap,u=o.childrenColumnName,h=o.rowKey;if(this.hasExpandColumn&&r(e)){var d=this.table.renderExpanded,p=this.rowRender(e,t);return d?[[p,n("tr",{key:"expanded-row__"+p.key},[n("td",{attrs:{colspan:this.columnsCount},class:"el-table__expanded-cell"},[d(this.$createElement,{row:e,$index:t,store:this.store})])])]]:(console.error("[Element Error]renderExpanded is required."),p)}if(Object.keys(l).length){a();var f=yi(e,h),m=l[f],v=null;m&&(v={expanded:m.expanded,level:m.level,display:!0},"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(v.noLazyChildren=!(m.children&&m.children.length)),v.loading=m.loading));var g=[this.rowRender(e,t,v)];if(m){var b=0;m.display=!0,function e(n,s){n&&n.length&&s&&n.forEach(function(n){var r={display:s.display&&s.expanded,level:s.level+1},a=yi(n,h);if(void 0===a||null===a)throw new Error("for nested data item, row-key is required.");if((m=Vi({},l[a]))&&(r.expanded=m.expanded,m.level=m.level||r.level,m.display=!(!m.expanded||!r.display),"boolean"==typeof m.lazy&&("boolean"==typeof m.loaded&&m.loaded&&(r.noLazyChildren=!(m.children&&m.children.length)),r.loading=m.loading)),b++,g.push(i.rowRender(n,t+b,r)),m){var o=c[a]||n[u];e(o,m)}})}(c[f]||e[u],m)}return g}return this.rowRender(e,t)}}},Bi=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"}},[e.multiple?i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("div",{staticClass:"el-table-filter__content"},[i("el-scrollbar",{attrs:{"wrap-class":"el-table-filter__wrap"}},[i("el-checkbox-group",{staticClass:"el-table-filter__checkbox-group",model:{value:e.filteredValue,callback:function(t){e.filteredValue=t},expression:"filteredValue"}},e._l(e.filters,function(t){return i("el-checkbox",{key:t.value,attrs:{label:t.value}},[e._v(e._s(t.text))])}),1)],1)],1),i("div",{staticClass:"el-table-filter__bottom"},[i("button",{class:{"is-disabled":0===e.filteredValue.length},attrs:{disabled:0===e.filteredValue.length},on:{click:e.handleConfirm}},[e._v(e._s(e.t("el.table.confirmFilter")))]),i("button",{on:{click:e.handleReset}},[e._v(e._s(e.t("el.table.resetFilter")))])])]):i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[i("ul",{staticClass:"el-table-filter__list"},[i("li",{staticClass:"el-table-filter__list-item",class:{"is-active":void 0===e.filterValue||null===e.filterValue},on:{click:function(t){e.handleSelect(null)}}},[e._v(e._s(e.t("el.table.clearFilter")))]),e._l(e.filters,function(t){return i("li",{key:t.value,staticClass:"el-table-filter__list-item",class:{"is-active":e.isActive(t)},attrs:{label:t.value},on:{click:function(i){e.handleSelect(t.value)}}},[e._v(e._s(t.text))])})],2)])])};Bi._withStripped=!0;var Ri=[];!di.a.prototype.$isServer&&document.addEventListener("click",function(e){Ri.forEach(function(t){var i=e.target;t&&t.$el&&(i===t.$el||t.$el.contains(i)||t.handleOutsideClick&&t.handleOutsideClick(e))})});var Hi=function(e){e&&Ri.push(e)},Wi=function(e){-1!==Ri.indexOf(e)&&Ri.splice(e,1)},qi=i(30),Ki=i.n(qi),Yi=s({name:"ElTableFilterPanel",mixins:[j.a,f.a],directives:{Clickoutside:P.a},components:{ElCheckbox:ri.a,ElCheckboxGroup:Ki.a},props:{placement:{type:String,default:"bottom-end"}},methods:{isActive:function(e){return e.value===this.filterValue},handleOutsideClick:function(){var e=this;setTimeout(function(){e.showPopper=!1},16)},handleConfirm:function(){this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleReset:function(){this.filteredValue=[],this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleSelect:function(e){this.filterValue=e,void 0!==e&&null!==e?this.confirmFilter(this.filteredValue):this.confirmFilter([]),this.handleOutsideClick()},confirmFilter:function(e){this.table.store.commit("filterChange",{column:this.column,values:e}),this.table.store.updateAllSelected()}},data:function(){return{table:null,cell:null,column:null}},computed:{filters:function(){return this.column&&this.column.filters},filterValue:{get:function(){return(this.column.filteredValue||[])[0]},set:function(e){this.filteredValue&&(void 0!==e&&null!==e?this.filteredValue.splice(0,1,e):this.filteredValue.splice(0,1))}},filteredValue:{get:function(){return this.column&&this.column.filteredValue||[]},set:function(e){this.column&&(this.column.filteredValue=e)}},multiple:function(){return!this.column||this.column.filterMultiple}},mounted:function(){var e=this;this.popperElm=this.$el,this.referenceElm=this.cell,this.table.bodyWrapper.addEventListener("scroll",function(){e.updatePopper()}),this.$watch("showPopper",function(t){e.column&&(e.column.filterOpened=t),t?Hi(e):Wi(e)})},watch:{showPopper:function(e){!0===e&&parseInt(this.popperJS._popper.style.zIndex,10)1;return s&&(this.$parent.isGroup=!0),e("table",{class:"el-table__header",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map(function(t){return e("col",{attrs:{name:t.id},key:t.id})}),this.hasGutter?e("col",{attrs:{name:"gutter"}}):""]),e("thead",{class:[{"is-group":s,"has-gutter":this.hasGutter}]},[this._l(n,function(i,n){return e("tr",{style:t.getHeaderRowStyle(n),class:t.getHeaderRowClass(n)},[i.map(function(s,r){return e("th",{attrs:{colspan:s.colSpan,rowspan:s.rowSpan},on:{mousemove:function(e){return t.handleMouseMove(e,s)},mouseout:t.handleMouseOut,mousedown:function(e){return t.handleMouseDown(e,s)},click:function(e){return t.handleHeaderClick(e,s)},contextmenu:function(e){return t.handleHeaderContextMenu(e,s)}},style:t.getHeaderCellStyle(n,r,i,s),class:t.getHeaderCellClass(n,r,i,s),key:s.id},[e("div",{class:["cell",s.filteredValue&&s.filteredValue.length>0?"highlight":"",s.labelClassName]},[s.renderHeader?s.renderHeader.call(t._renderProxy,e,{column:s,$index:r,store:t.store,_self:t.$parent.$vnode.context}):s.label,s.sortable?e("span",{class:"caret-wrapper",on:{click:function(e){return t.handleSortClick(e,s)}}},[e("i",{class:"sort-caret ascending",on:{click:function(e){return t.handleSortClick(e,s,"ascending")}}}),e("i",{class:"sort-caret descending",on:{click:function(e){return t.handleSortClick(e,s,"descending")}}})]):"",s.filterable?e("span",{class:"el-table__column-filter-trigger",on:{click:function(e){return t.handleFilterClick(e,s)}}},[e("i",{class:["el-icon-arrow-down",s.filterOpened?"el-icon-arrow-up":""]})]):""])])}),t.hasGutter?e("th",{class:"gutter"}):""])})])])},props:{fixed:String,store:{required:!0},border:Boolean,defaultSort:{type:Object,default:function(){return{prop:"",order:""}}}},components:{ElCheckbox:ri.a},computed:Gi({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},Ii({columns:"columns",isAllSelected:"isAllSelected",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),created:function(){this.filterPanels={}},mounted:function(){var e=this;this.$nextTick(function(){var t=e.defaultSort,i=t.prop,n=t.order;e.store.commit("sort",{prop:i,order:n,init:!0})})},beforeDestroy:function(){var e=this.filterPanels;for(var t in e)e.hasOwnProperty(t)&&e[t]&&e[t].$destroy(!0)},methods:{isCellHidden:function(e,t){for(var i=0,n=0;n=this.leftFixedLeafCount:"right"===this.fixed?i=this.columnsCount-this.rightFixedLeafCount},getHeaderRowStyle:function(e){var t=this.table.headerRowStyle;return"function"==typeof t?t.call(null,{rowIndex:e}):t},getHeaderRowClass:function(e){var t=[],i=this.table.headerRowClassName;return"string"==typeof i?t.push(i):"function"==typeof i&&t.push(i.call(null,{rowIndex:e})),t.join(" ")},getHeaderCellStyle:function(e,t,i,n){var s=this.table.headerCellStyle;return"function"==typeof s?s.call(null,{rowIndex:e,columnIndex:t,row:i,column:n}):s},getHeaderCellClass:function(e,t,i,n){var s=[n.id,n.order,n.headerAlign,n.className,n.labelClassName];0===e&&this.isCellHidden(t,i)&&s.push("is-hidden"),n.children||s.push("is-leaf"),n.sortable&&s.push("is-sortable");var r=this.table.headerCellClassName;return"string"==typeof r?s.push(r):"function"==typeof r&&s.push(r.call(null,{rowIndex:e,columnIndex:t,row:i,column:n})),s.join(" ")},toggleAllSelection:function(e){e.stopPropagation(),this.store.commit("toggleAllSelection")},handleFilterClick:function(e,t){e.stopPropagation();var i=e.target,n="TH"===i.tagName?i:i.parentNode;n=n.querySelector(".el-table__column-filter-trigger")||n;var s=this.$parent,r=this.filterPanels[t.id];r&&t.filterOpened?r.showPopper=!1:(r||(r=new di.a(Ui),this.filterPanels[t.id]=r,t.filterPlacement&&(r.placement=t.filterPlacement),r.table=s,r.cell=n,r.column=t,!this.$isServer&&r.$mount(document.createElement("div"))),setTimeout(function(){r.showPopper=!0},16))},handleHeaderClick:function(e,t){!t.filters&&t.sortable?this.handleSortClick(e,t):t.filterable&&!t.sortable&&this.handleFilterClick(e,t),this.$parent.$emit("header-click",t,e)},handleHeaderContextMenu:function(e,t){this.$parent.$emit("header-contextmenu",t,e)},handleMouseDown:function(e,t){var i=this;if(!this.$isServer&&!(t.children&&t.children.length>0)&&this.draggingColumn&&this.border){this.dragging=!0,this.$parent.resizeProxyVisible=!0;var n=this.$parent,s=n.$el.getBoundingClientRect().left,r=this.$el.querySelector("th."+t.id),a=r.getBoundingClientRect(),o=a.left-s+30;Object(fe.addClass)(r,"noclick"),this.dragState={startMouseLeft:e.clientX,startLeft:a.right-s,startColumnLeft:a.left-s,tableLeft:s};var l=n.$refs.resizeProxy;l.style.left=this.dragState.startLeft+"px",document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};var c=function(e){var t=e.clientX-i.dragState.startMouseLeft,n=i.dragState.startLeft+t;l.style.left=Math.max(o,n)+"px"};document.addEventListener("mousemove",c),document.addEventListener("mouseup",function s(){if(i.dragging){var a=i.dragState,o=a.startColumnLeft,u=a.startLeft,h=parseInt(l.style.left,10)-o;t.width=t.realWidth=h,n.$emit("header-dragend",t.width,u-o,t,e),i.store.scheduleLayout(),document.body.style.cursor="",i.dragging=!1,i.draggingColumn=null,i.dragState={},n.resizeProxyVisible=!1}document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",s),document.onselectstart=null,document.ondragstart=null,setTimeout(function(){Object(fe.removeClass)(r,"noclick")},0)})}},handleMouseMove:function(e,t){if(!(t.children&&t.children.length>0)){for(var i=e.target;i&&"TH"!==i.tagName;)i=i.parentNode;if(t&&t.resizable&&!this.dragging&&this.border){var n=i.getBoundingClientRect(),s=document.body.style;n.width>12&&n.right-e.pageX<8?(s.cursor="col-resize",Object(fe.hasClass)(i,"is-sortable")&&(i.style.cursor="col-resize"),this.draggingColumn=t):this.dragging||(s.cursor="",Object(fe.hasClass)(i,"is-sortable")&&(i.style.cursor="pointer"),this.draggingColumn=null)}}},handleMouseOut:function(){this.$isServer||(document.body.style.cursor="")},toggleOrder:function(e){var t=e.order,i=e.sortOrders;if(""===t)return i[0];var n=i.indexOf(t||null);return i[n>i.length-2?0:n+1]},handleSortClick:function(e,t,i){e.stopPropagation();for(var n=t.order===i?null:i||this.toggleOrder(t),s=e.target;s&&"TH"!==s.tagName;)s=s.parentNode;if(s&&"TH"===s.tagName&&Object(fe.hasClass)(s,"noclick"))Object(fe.removeClass)(s,"noclick");else if(t.sortable){var r=this.store.states,a=r.sortProp,o=void 0,l=r.sortingColumn;(l!==t||l===t&&null===l.order)&&(l&&(l.order=null),r.sortingColumn=t,a=t.property),o=t.order=n||null,r.sortProp=a,r.sortOrder=o,this.store.commit("changeSortCondition")}}},data:function(){return{draggingColumn:null,dragging:!1,dragState:{}}}},Ji=Object.assign||function(e){for(var t=1;t=this.leftFixedLeafCount;if("right"===this.fixed){for(var n=0,s=0;s=this.columnsCount-this.rightFixedCount)},getRowClasses:function(e,t){var i=[e.id,e.align,e.labelClassName];return e.className&&i.push(e.className),this.isCellHidden(t,this.columns,e)&&i.push("is-hidden"),e.children||i.push("is-leaf"),i}}},en=Object.assign||function(e){for(var t=1;t0){var n=i.scrollTop;t.pixelY<0&&0!==n&&e.preventDefault(),t.pixelY>0&&i.scrollHeight-i.clientHeight>n&&e.preventDefault(),i.scrollTop+=Math.ceil(t.pixelY/5)}else i.scrollLeft+=Math.ceil(t.pixelX/5)},handleHeaderFooterMousewheel:function(e,t){var i=t.pixelX,n=t.pixelY;Math.abs(i)>=Math.abs(n)&&(this.bodyWrapper.scrollLeft+=t.pixelX/5)},syncPostion:Object(ai.throttle)(20,function(){var e=this.bodyWrapper,t=e.scrollLeft,i=e.scrollTop,n=e.offsetWidth,s=e.scrollWidth,r=this.$refs,a=r.headerWrapper,o=r.footerWrapper,l=r.fixedBodyWrapper,c=r.rightFixedBodyWrapper;a&&(a.scrollLeft=t),o&&(o.scrollLeft=t),l&&(l.scrollTop=i),c&&(c.scrollTop=i);var u=s-n-1;this.scrollPosition=t>=u?"right":0===t?"left":"middle"}),bindEvents:function(){this.bodyWrapper.addEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(jt.addResizeListener)(this.$el,this.resizeListener)},unbindEvents:function(){this.bodyWrapper.removeEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(jt.removeResizeListener)(this.$el,this.resizeListener)},resizeListener:function(){if(this.$ready){var e=!1,t=this.$el,i=this.resizeState,n=i.width,s=i.height,r=t.offsetWidth;n!==r&&(e=!0);var a=t.offsetHeight;(this.height||this.shouldUpdateHeight)&&s!==a&&(e=!0),e&&(this.resizeState.width=r,this.resizeState.height=a,this.doLayout())}},doLayout:function(){this.shouldUpdateHeight&&this.layout.updateElsHeight(),this.layout.updateColumnsWidth()},sort:function(e,t){this.store.commit("sort",{prop:e,order:t})},toggleAllSelection:function(){this.store.commit("toggleAllSelection")}},computed:en({tableSize:function(){return this.size||(this.$ELEMENT||{}).size},bodyWrapper:function(){return this.$refs.bodyWrapper},shouldUpdateHeight:function(){return this.height||this.maxHeight||this.fixedColumns.length>0||this.rightFixedColumns.length>0},bodyWidth:function(){var e=this.layout,t=e.bodyWidth,i=e.scrollY,n=e.gutterWidth;return t?t-(i?n:0)+"px":""},bodyHeight:function(){var e=this.layout,t=e.headerHeight,i=void 0===t?0:t,n=e.bodyHeight,s=e.footerHeight,r=void 0===s?0:s;if(this.height)return{height:n?n+"px":""};if(this.maxHeight){var a=wi(this.maxHeight);if("number"==typeof a)return{"max-height":a-r-(this.showHeader?i:0)+"px"}}return{}},fixedBodyHeight:function(){if(this.height)return{height:this.layout.fixedBodyHeight?this.layout.fixedBodyHeight+"px":""};if(this.maxHeight){var e=wi(this.maxHeight);if("number"==typeof e)return e=this.layout.scrollX?e-this.layout.gutterWidth:e,this.showHeader&&(e-=this.layout.headerHeight),{"max-height":(e-=this.layout.footerHeight)+"px"}}return{}},fixedHeight:function(){return this.maxHeight?this.showSummary?{bottom:0}:{bottom:this.layout.scrollX&&this.data.length?this.layout.gutterWidth+"px":""}:this.showSummary?{height:this.layout.tableHeight?this.layout.tableHeight+"px":""}:{height:this.layout.viewportHeight?this.layout.viewportHeight+"px":""}}},Ii({selection:"selection",columns:"columns",tableData:"data",fixedColumns:"fixedColumns",rightFixedColumns:"rightFixedColumns"})),watch:{height:{immediate:!0,handler:function(e){this.layout.setHeight(e)}},maxHeight:{immediate:!0,handler:function(e){this.layout.setMaxHeight(e)}},currentRowKey:{immediate:!0,handler:function(e){this.rowKey&&this.store.setCurrentRowKey(e)}},data:{immediate:!0,handler:function(e){this.store.commit("setData",e)}},expandRowKeys:{immediate:!0,handler:function(e){e&&this.store.setExpandRowKeysAdapter(e)}}},created:function(){var e=this;this.tableId="el-table_"+tn++,this.debouncedUpdateLayout=Object(ai.debounce)(50,function(){return e.doLayout()})},mounted:function(){var e=this;this.bindEvents(),this.store.updateColumns(),this.doLayout(),this.resizeState={width:this.$el.offsetWidth,height:this.$el.offsetHeight},this.store.states.columns.forEach(function(t){t.filteredValue&&t.filteredValue.length&&e.store.commit("filterChange",{column:t,values:t.filteredValue,silent:!0})}),this.$ready=!0},destroyed:function(){this.unbindEvents()},data:function(){var e=this.treeProps,t=e.hasChildren,i=void 0===t?"hasChildren":t,n=e.children,s=void 0===n?"children":n;return this.store=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error("Table is required.");var i=new Pi;return i.table=e,Object.keys(t).forEach(function(e){i.states[e]=t[e]}),i}(this,{rowKey:this.rowKey,defaultExpandAll:this.defaultExpandAll,selectOnIndeterminate:this.selectOnIndeterminate,indent:this.indent,lazy:this.lazy,lazyColumnIdentifier:i,childrenColumnName:s}),{layout:new Fi({store:this.store,table:this,fit:this.fit,showHeader:this.showHeader}),isHidden:!1,renderExpanded:null,resizeProxyVisible:!1,resizeState:{width:null,height:null},isGroup:!1,scrollPosition:"left"}}},ni,[],!1,null,null,null);nn.options.__file="packages/table/src/table.vue";var sn=nn.exports;sn.install=function(e){e.component(sn.name,sn)};var rn=sn,an={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:"",className:"el-table-column--selection"},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},on={selection:{renderHeader:function(e,t){var i=t.store;return e("el-checkbox",{attrs:{disabled:i.states.data&&0===i.states.data.length,indeterminate:i.states.selection.length>0&&!this.isAllSelected,value:this.isAllSelected},nativeOn:{click:this.toggleAllSelection}})},renderCell:function(e,t){var i=t.row,n=t.column,s=t.store,r=t.$index;return e("el-checkbox",{nativeOn:{click:function(e){return e.stopPropagation()}},attrs:{value:s.isSelected(i),disabled:!!n.selectable&&!n.selectable.call(null,i,r)},on:{input:function(){s.commit("rowSelectedChanged",i)}}})},sortable:!1,resizable:!1},index:{renderHeader:function(e,t){return t.column.label||"#"},renderCell:function(e,t){var i=t.$index,n=i+1,s=t.column.index;return"number"==typeof s?n=i+s:"function"==typeof s&&(n=s(i)),e("div",[n])},sortable:!1},expand:{renderHeader:function(e,t){return t.column.label||""},renderCell:function(e,t){var i=t.row,n=t.store,s=["el-table__expand-icon"];n.states.expandRows.indexOf(i)>-1&&s.push("el-table__expand-icon--expanded");return e("div",{class:s,on:{click:function(e){e.stopPropagation(),n.toggleRowExpansion(i)}}},[e("i",{class:"el-icon el-icon-arrow-right"})])},sortable:!1,resizable:!1,className:"el-table__expand-column"}};function ln(e,t){var i=t.row,n=t.column,s=t.$index,r=n.property,a=r&&Object(m.getPropByPath)(i,r).v;return n&&n.formatter?n.formatter(i,n,a,s):a}var cn=Object.assign||function(e){for(var t=1;t-1})}}},data:function(){return{isSubColumn:!1,columns:[]}},computed:{owner:function(){for(var e=this.$parent;e&&!e.tableId;)e=e.$parent;return e},columnOrTableParent:function(){for(var e=this.$parent;e&&!e.tableId&&!e.columnId;)e=e.$parent;return e},realWidth:function(){return Ci(this.width)},realMinWidth:function(){return function(e){return void 0!==e&&(e=Ci(e),isNaN(e)&&(e=80)),e}(this.minWidth)},realAlign:function(){return this.align?"is-"+this.align:null},realHeaderAlign:function(){return this.headerAlign?"is-"+this.headerAlign:this.realAlign}},methods:{getPropsData:function(){for(var e=this,t=arguments.length,i=Array(t),n=0;n3&&void 0!==arguments[3]?arguments[3]:"-";return e?(0,(Cn[i]||Cn.default).parser)(e,t||vn[i],n):null},Sn=function(e,t,i){return e?(0,(Cn[i]||Cn.default).formatter)(e,t||vn[i]):null},Dn=function(e,t){var i=function(e,t){var i=e instanceof Date,n=t instanceof Date;return i&&n?e.getTime()===t.getTime():!i&&!n&&e===t},n=e instanceof Array,s=t instanceof Array;return n&&s?e.length===t.length&&e.every(function(e,n){return i(e,t[n])}):!n&&!s&&i(e,t)},$n=function(e){return"string"==typeof e||e instanceof String},On=function(e){return null===e||void 0===e||$n(e)||Array.isArray(e)&&2===e.length&&e.every($n)},En=s({mixins:[k.a,mn],inject:{elForm:{default:""},elFormItem:{default:""}},props:{size:String,format:String,valueFormat:String,readonly:Boolean,placeholder:String,startPlaceholder:String,endPlaceholder:String,prefixIcon:String,clearIcon:{type:String,default:"el-icon-circle-close"},name:{default:"",validator:On},disabled:Boolean,clearable:{type:Boolean,default:!0},id:{default:"",validator:On},popperClass:String,editable:{type:Boolean,default:!0},align:{type:String,default:"left"},value:{},defaultValue:{},defaultTime:{},rangeSeparator:{default:"-"},pickerOptions:{},unlinkPanels:Boolean,validateEvent:{type:Boolean,default:!0}},components:{ElInput:d.a},directives:{Clickoutside:P.a},data:function(){return{pickerVisible:!1,showClose:!1,userInput:null,valueOnOpen:null,unwatchPickerOptions:null}},watch:{pickerVisible:function(e){this.readonly||this.pickerDisabled||(e?(this.showPicker(),this.valueOnOpen=Array.isArray(this.value)?[].concat(this.value):this.value):(this.hidePicker(),this.emitChange(this.value),this.userInput=null,this.validateEvent&&this.dispatch("ElFormItem","el.form.blur"),this.$emit("blur",this),this.blur()))},parsedValue:{immediate:!0,handler:function(e){this.picker&&(this.picker.value=e)}},defaultValue:function(e){this.picker&&(this.picker.defaultValue=e)},value:function(e,t){Dn(e,t)||this.pickerVisible||!this.validateEvent||this.dispatch("ElFormItem","el.form.change",e)}},computed:{ranged:function(){return this.type.indexOf("range")>-1},reference:function(){var e=this.$refs.reference;return e.$el||e},refInput:function(){return this.reference?[].slice.call(this.reference.querySelectorAll("input")):[]},valueIsEmpty:function(){var e=this.value;if(Array.isArray(e)){for(var t=0,i=e.length;t0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.userInput=null,e.pickerVisible=e.picker.visible=i,e.emitInput(t),e.picker.resetView&&e.picker.resetView()}),this.picker.$on("select-range",function(t,i,n){0!==e.refInput.length&&(n&&"min"!==n?"max"===n&&(e.refInput[1].setSelectionRange(t,i),e.refInput[1].focus()):(e.refInput[0].setSelectionRange(t,i),e.refInput[0].focus()))})},unmountPicker:function(){this.picker&&(this.picker.$destroy(),this.picker.$off(),"function"==typeof this.unwatchPickerOptions&&this.unwatchPickerOptions(),this.picker.$el.parentNode.removeChild(this.picker.$el))},emitChange:function(e){Dn(e,this.valueOnOpen)||(this.$emit("change",e),this.valueOnOpen=e,this.validateEvent&&this.dispatch("ElFormItem","el.form.change",e))},emitInput:function(e){var t=this.formatToValue(e);Dn(this.value,t)||this.$emit("input",t)},isValidValue:function(e){return this.picker||this.mountPicker(),!this.picker.isValidValue||e&&this.picker.isValidValue(e)}}},pn,[],!1,null,null,null);En.options.__file="packages/date-picker/src/picker.vue";var Tn=En.exports,Mn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-enter":e.handleEnter,"after-leave":e.handleLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-picker__time-header"},[i("span",{staticClass:"el-date-picker__editor-wrap"},[i("el-input",{attrs:{placeholder:e.t("el.datepicker.selectDate"),value:e.visibleDate,size:"small"},on:{input:function(t){return e.userInputDate=t},change:e.handleVisibleDateChange}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleTimePickClose,expression:"handleTimePickClose"}],staticClass:"el-date-picker__editor-wrap"},[i("el-input",{ref:"input",attrs:{placeholder:e.t("el.datepicker.selectTime"),value:e.visibleTime,size:"small"},on:{focus:function(t){e.timePickerVisible=!0},input:function(t){return e.userInputTime=t},change:e.handleVisibleTimeChange}}),i("time-picker",{ref:"timepicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.timePickerVisible},on:{pick:e.handleTimePick,mounted:e.proxyTimePickerDataProperties}})],1)]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:"time"!==e.currentView,expression:"currentView !== 'time'"}],staticClass:"el-date-picker__header",class:{"el-date-picker__header--bordered":"year"===e.currentView||"month"===e.currentView}},[i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevYear")},on:{click:e.prevYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevMonth")},on:{click:e.prevMonth}}),i("span",{staticClass:"el-date-picker__header-label",attrs:{role:"button"},on:{click:e.showYearPicker}},[e._v(e._s(e.yearLabel))]),i("span",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-date-picker__header-label",class:{active:"month"===e.currentView},attrs:{role:"button"},on:{click:e.showMonthPicker}},[e._v(e._s(e.t("el.datepicker.month"+(e.month+1))))]),i("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextYear")},on:{click:e.nextYear}}),i("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextMonth")},on:{click:e.nextMonth}})]),i("div",{staticClass:"el-picker-panel__content"},[i("date-table",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],attrs:{"selection-mode":e.selectionMode,"first-day-of-week":e.firstDayOfWeek,value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleDatePick}}),i("year-table",{directives:[{name:"show",rawName:"v-show",value:"year"===e.currentView,expression:"currentView === 'year'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleYearPick}}),i("month-table",{directives:[{name:"show",rawName:"v-show",value:"month"===e.currentView,expression:"currentView === 'month'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleMonthPick}})],1)])],2),i("div",{directives:[{name:"show",rawName:"v-show",value:e.footerVisible&&"date"===e.currentView,expression:"footerVisible && currentView === 'date'"}],staticClass:"el-picker-panel__footer"},[i("el-button",{directives:[{name:"show",rawName:"v-show",value:"dates"!==e.selectionMode,expression:"selectionMode !== 'dates'"}],staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.changeToNow}},[e._v("\n "+e._s(e.t("el.datepicker.now"))+"\n ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini"},on:{click:e.confirm}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1)])])};Mn._withStripped=!0;var Pn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-panel__content",class:{"has-seconds":e.showSeconds}},[i("time-spinner",{ref:"spinner",attrs:{"arrow-control":e.useArrow,"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,date:e.date},on:{change:e.handleChange,"select-range":e.setSelectionRange}})],1),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:e.handleCancel}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn",class:{confirm:!e.disabled},attrs:{type:"button"},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};Pn._withStripped=!0;var In=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-time-spinner",class:{"has-seconds":e.showSeconds}},[e.arrowControl?e._e():[i("el-scrollbar",{ref:"hours",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("hours")},mousemove:function(t){e.adjustCurrentSpinner("hours")}}},e._l(e.hoursList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.hours,disabled:t},on:{click:function(i){e.handleClick("hours",{value:n,disabled:t})}}},[e._v(e._s(("0"+(e.amPmMode?n%12||12:n)).slice(-2))+e._s(e.amPm(n)))])}),0),i("el-scrollbar",{ref:"minutes",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("minutes")},mousemove:function(t){e.adjustCurrentSpinner("minutes")}}},e._l(e.minutesList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.minutes,disabled:!t},on:{click:function(t){e.handleClick("minutes",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])}),0),i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.showSeconds,expression:"showSeconds"}],ref:"seconds",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("seconds")},mousemove:function(t){e.adjustCurrentSpinner("seconds")}}},e._l(60,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:n===e.seconds},on:{click:function(t){e.handleClick("seconds",{value:n,disabled:!1})}}},[e._v(e._s(("0"+n).slice(-2)))])}),0)],e.arrowControl?[i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("hours")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"hours",staticClass:"el-time-spinner__list"},e._l(e.arrowHourList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.hours,disabled:e.hoursList[t]}},[e._v(e._s(void 0===t?"":("0"+(e.amPmMode?t%12||12:t)).slice(-2)+e.amPm(t)))])}),0)]),i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("minutes")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"minutes",staticClass:"el-time-spinner__list"},e._l(e.arrowMinuteList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.minutes}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])}),0)]),e.showSeconds?i("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("seconds")}}},[i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),i("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),i("ul",{ref:"seconds",staticClass:"el-time-spinner__list"},e._l(e.arrowSecondList,function(t,n){return i("li",{key:n,staticClass:"el-time-spinner__item",class:{active:t===e.seconds}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])}),0)]):e._e()]:e._e()],2)};In._withStripped=!0;var Nn=s({components:{ElScrollbar:L.a},directives:{repeatClick:Ke},props:{date:{},defaultValue:{},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:""}},computed:{hours:function(){return this.date.getHours()},minutes:function(){return this.date.getMinutes()},seconds:function(){return this.date.getSeconds()},hoursList:function(){return Object(fn.getRangeHours)(this.selectableRange)},minutesList:function(){return Object(fn.getRangeMinutes)(this.selectableRange,this.hours)},arrowHourList:function(){var e=this.hours;return[e>0?e-1:void 0,e,e<23?e+1:void 0]},arrowMinuteList:function(){var e=this.minutes;return[e>0?e-1:void 0,e,e<59?e+1:void 0]},arrowSecondList:function(){var e=this.seconds;return[e>0?e-1:void 0,e,e<59?e+1:void 0]}},data:function(){return{selectableRange:[],currentScrollbar:null}},mounted:function(){var e=this;this.$nextTick(function(){!e.arrowControl&&e.bindScrollEvent()})},methods:{increase:function(){this.scrollDown(1)},decrease:function(){this.scrollDown(-1)},modifyDateField:function(e,t){switch(e){case"hours":this.$emit("change",Object(fn.modifyTime)(this.date,t,this.minutes,this.seconds));break;case"minutes":this.$emit("change",Object(fn.modifyTime)(this.date,this.hours,t,this.seconds));break;case"seconds":this.$emit("change",Object(fn.modifyTime)(this.date,this.hours,this.minutes,t))}},handleClick:function(e,t){var i=t.value;t.disabled||(this.modifyDateField(e,i),this.emitSelectRange(e),this.adjustSpinner(e,i))},emitSelectRange:function(e){"hours"===e?this.$emit("select-range",0,2):"minutes"===e?this.$emit("select-range",3,5):"seconds"===e&&this.$emit("select-range",6,8),this.currentScrollbar=e},bindScrollEvent:function(){var e=this,t=function(t){e.$refs[t].wrap.onscroll=function(i){e.handleScroll(t,i)}};t("hours"),t("minutes"),t("seconds")},handleScroll:function(e){var t=Math.min(Math.floor((this.$refs[e].wrap.scrollTop-(.5*this.scrollBarHeight(e)-10)/this.typeItemHeight(e)+3)/this.typeItemHeight(e)),"hours"===e?23:59);this.modifyDateField(e,t)},adjustSpinners:function(){this.adjustSpinner("hours",this.hours),this.adjustSpinner("minutes",this.minutes),this.adjustSpinner("seconds",this.seconds)},adjustCurrentSpinner:function(e){this.adjustSpinner(e,this[e])},adjustSpinner:function(e,t){if(!this.arrowControl){var i=this.$refs[e].wrap;i&&(i.scrollTop=Math.max(0,t*this.typeItemHeight(e)))}},scrollDown:function(e){this.currentScrollbar||this.emitSelectRange("hours");var t=this.currentScrollbar,i=this.hoursList,n=this[t];if("hours"===this.currentScrollbar){var s=Math.abs(e);e=e>0?1:-1;for(var r=i.length;r--&&s;)i[n=(n+e+i.length)%i.length]||s--;if(i[n])return}else n=(n+e+60)%60;this.modifyDateField(t,n),this.adjustSpinner(t,n)},amPm:function(e){if(!("a"===this.amPmMode.toLowerCase()))return"";var t="A"===this.amPmMode,i=e<12?" am":" pm";return t&&(i=i.toUpperCase()),i},typeItemHeight:function(e){return this.$refs[e].$el.querySelector("li").offsetHeight},scrollBarHeight:function(e){return this.$refs[e].$el.offsetHeight}}},In,[],!1,null,null,null);Nn.options.__file="packages/date-picker/src/basic/time-spinner.vue";var jn=Nn.exports,Fn=s({mixins:[f.a],components:{TimeSpinner:jn},props:{visible:Boolean,timeArrowControl:Boolean},watch:{visible:function(e){var t=this;e?(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.spinner.emitSelectRange("hours")})):this.needInitAdjust=!0},value:function(e){var t=this,i=void 0;e instanceof Date?i=Object(fn.limitTimeRange)(e,this.selectableRange,this.format):e||(i=this.defaultValue?new Date(this.defaultValue):new Date),this.date=i,this.visible&&this.needInitAdjust&&(this.$nextTick(function(e){return t.adjustSpinners()}),this.needInitAdjust=!1)},selectableRange:function(e){this.$refs.spinner.selectableRange=e},defaultValue:function(e){Object(fn.isDate)(this.value)||(this.date=e?new Date(e):new Date)}},data:function(){return{popperClass:"",format:"HH:mm:ss",value:"",defaultValue:null,date:new Date,oldValue:new Date,selectableRange:[],selectionRange:[0,2],disabled:!1,arrowControl:!1,needInitAdjust:!0}},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},useArrow:function(){return this.arrowControl||this.timeArrowControl||!1},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},methods:{handleCancel:function(){this.$emit("pick",this.oldValue,!1)},handleChange:function(e){this.visible&&(this.date=Object(fn.clearMilliseconds)(e),this.isValidValue(this.date)&&this.$emit("pick",this.date,!0))},setSelectionRange:function(e,t){this.$emit("select-range",e,t),this.selectionRange=[e,t]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments[1];if(!t){var i=Object(fn.clearMilliseconds)(Object(fn.limitTimeRange)(this.date,this.selectableRange,this.format));this.$emit("pick",i,e,t)}},handleKeydown:function(e){var t=e.keyCode,i={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var n=i[t];return this.changeSelectionRange(n),void e.preventDefault()}if(38===t||40===t){var s=i[t];return this.$refs.spinner.scrollDown(s),void e.preventDefault()}},isValidValue:function(e){return Object(fn.timeWithinRange)(e,this.selectableRange,this.format)},adjustSpinners:function(){return this.$refs.spinner.adjustSpinners()},changeSelectionRange:function(e){var t=[0,3].concat(this.showSeconds?[6]:[]),i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length;this.$refs.spinner.emitSelectRange(i[n])}},mounted:function(){var e=this;this.$nextTick(function(){return e.handleConfirm(!0,!0)}),this.$emit("mounted")}},Pn,[],!1,null,null,null);Fn.options.__file="packages/date-picker/src/panel/time.vue";var Ln=Fn.exports,An=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-year-table",on:{click:e.handleYearTableClick}},[i("tbody",[i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+0)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+1)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+1))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+2)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+2))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+3)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+3))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+4)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+4))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+5)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+5))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+6)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+6))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+7)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+7))])])]),i("tr",[i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+8)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+8))])]),i("td",{staticClass:"available",class:e.getCellStyle(e.startYear+9)},[i("a",{staticClass:"cell"},[e._v(e._s(e.startYear+9))])]),i("td"),i("td")])])])};An._withStripped=!0;var Vn=s({props:{disabledDate:{},value:{},defaultValue:{validator:function(e){return null===e||e instanceof Date&&Object(fn.isDate)(e)}},date:{}},computed:{startYear:function(){return 10*Math.floor(this.date.getFullYear()/10)}},methods:{getCellStyle:function(e){var t={},i=new Date;return t.disabled="function"==typeof this.disabledDate&&function(e){var t=Object(fn.getDayCountOfYear)(e),i=new Date(e,0,1);return Object(fn.range)(t).map(function(e){return Object(fn.nextDate)(i,e)})}(e).every(this.disabledDate),t.current=Object(m.arrayFindIndex)(Object(m.coerceTruthyValueToArray)(this.value),function(t){return t.getFullYear()===e})>=0,t.today=i.getFullYear()===e,t.default=this.defaultValue&&this.defaultValue.getFullYear()===e,t},handleYearTableClick:function(e){var t=e.target;if("A"===t.tagName){if(Object(fe.hasClass)(t.parentNode,"disabled"))return;var i=t.textContent||t.innerText;this.$emit("pick",Number(i))}}}},An,[],!1,null,null,null);Vn.options.__file="packages/date-picker/src/basic/year-table.vue";var zn=Vn.exports,Bn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-month-table",on:{click:e.handleMonthTableClick,mousemove:e.handleMouseMove}},[i("tbody",e._l(e.rows,function(t,n){return i("tr",{key:n},e._l(t,function(t,n){return i("td",{key:n,class:e.getCellStyle(t)},[i("div",[i("a",{staticClass:"cell"},[e._v(e._s(e.t("el.datepicker.months."+e.months[t.text])))])])])}),0)}),0)])};Bn._withStripped=!0;var Rn=function(e){return new Date(e.getFullYear(),e.getMonth())},Hn=function(e){return"number"==typeof e||"string"==typeof e?Rn(new Date(e)).getTime():e instanceof Date?Rn(e).getTime():NaN},Wn=s({props:{disabledDate:{},value:{},selectionMode:{default:"month"},minDate:{},maxDate:{},defaultValue:{validator:function(e){return null===e||Object(fn.isDate)(e)||Array.isArray(e)&&e.every(fn.isDate)}},date:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},mixins:[f.a],watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Hn(e)!==Hn(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Hn(e)!==Hn(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{months:["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],tableRows:[[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.date.getFullYear()===i.getFullYear()&&Number(e.text)===i.getMonth()},getCellStyle:function(e){var t=this,i={},n=this.date.getFullYear(),s=new Date,r=e.text,a=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[];return i.disabled="function"==typeof this.disabledDate&&function(e,t){var i=Object(fn.getDayCountOfMonth)(e,t),n=new Date(e,t,1);return Object(fn.range)(i).map(function(e){return Object(fn.nextDate)(n,e)})}(n,r).every(this.disabledDate),i.current=Object(m.arrayFindIndex)(Object(m.coerceTruthyValueToArray)(this.value),function(e){return e.getFullYear()===n&&e.getMonth()===r})>=0,i.today=s.getFullYear()===n&&s.getMonth()===r,i.default=a.some(function(i){return t.cellMatchesDate(e,i)}),e.inRange&&(i["in-range"]=!0,e.start&&(i["start-date"]=!0),e.end&&(i["end-date"]=!0)),i},getMonthOfCell:function(e){var t=this.date.getFullYear();return new Date(t,e,1)},markRange:function(e,t){e=Hn(e),t=Hn(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.rows,s=0,r=n.length;s=e&&h<=t,c.start=e&&h===e,c.end=t&&h===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getMonthOfCell(4*i+n)}}))}}},handleMonthTableClick:function(e){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName&&!Object(fe.hasClass)(t,"disabled")){var i=t.cellIndex,n=4*t.parentNode.rowIndex+i,s=this.getMonthOfCell(n);"range"===this.selectionMode?this.rangeState.selecting?(s>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:s}):this.$emit("pick",{minDate:s,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:s,maxDate:null}),this.rangeState.selecting=!0):this.$emit("pick",n)}}},computed:{rows:function(){for(var e=this,t=this.tableRows,i=this.disabledDate,n=[],s=Hn(new Date),r=0;r<3;r++)for(var a=t[r],o=function(t){var o=a[t];o||(o={row:r,column:t,type:"normal",inRange:!1,start:!1,end:!1}),o.type="normal";var l=4*r+t,c=new Date(e.date.getFullYear(),l).getTime();o.inRange=c>=Hn(e.minDate)&&c<=Hn(e.maxDate),o.start=e.minDate&&c===Hn(e.minDate),o.end=e.maxDate&&c===Hn(e.maxDate),c===s&&(o.type="today"),o.text=l;var u=new Date(c);o.disabled="function"==typeof i&&i(u),o.selected=Object(m.arrayFind)(n,function(e){return e.getTime()===u.getTime()}),e.$set(a,t,o)},l=0;l<4;l++)o(l);return t}}},Bn,[],!1,null,null,null);Wn.options.__file="packages/date-picker/src/basic/month-table.vue";var qn=Wn.exports,Kn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("table",{staticClass:"el-date-table",class:{"is-week-mode":"week"===e.selectionMode},attrs:{cellspacing:"0",cellpadding:"0"},on:{click:e.handleClick,mousemove:e.handleMouseMove}},[i("tbody",[i("tr",[e.showWeekNumber?i("th",[e._v(e._s(e.t("el.datepicker.week")))]):e._e(),e._l(e.WEEKS,function(t,n){return i("th",{key:n},[e._v(e._s(e.t("el.datepicker.weeks."+t)))])})],2),e._l(e.rows,function(t,n){return i("tr",{key:n,staticClass:"el-date-table__row",class:{current:e.isWeekActive(t[1])}},e._l(t,function(t,n){return i("td",{key:n,class:e.getCellClasses(t)},[i("div",[i("span",[e._v("\n "+e._s(t.text)+"\n ")])])])}),0)})],2)])};Kn._withStripped=!0;var Yn=["sun","mon","tue","wed","thu","fri","sat"],Un=function(e){return"number"==typeof e||"string"==typeof e?Object(fn.clearTime)(new Date(e)).getTime():e instanceof Date?Object(fn.clearTime)(e).getTime():NaN},Gn=s({mixins:[f.a],props:{firstDayOfWeek:{default:7,type:Number,validator:function(e){return e>=1&&e<=7}},value:{},defaultValue:{validator:function(e){return null===e||Object(fn.isDate)(e)||Array.isArray(e)&&e.every(fn.isDate)}},date:{},selectionMode:{default:"day"},showWeekNumber:{type:Boolean,default:!1},disabledDate:{},minDate:{},maxDate:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},computed:{offsetDay:function(){var e=this.firstDayOfWeek;return e>3?7-e:-e},WEEKS:function(){var e=this.firstDayOfWeek;return Yn.concat(Yn).slice(e,e+7)},year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},startDate:function(){return Object(fn.getStartDateOfMonth)(this.year,this.month)},rows:function(){var e=this,t=new Date(this.year,this.month,1),i=Object(fn.getFirstDayOfMonth)(t),n=Object(fn.getDayCountOfMonth)(t.getFullYear(),t.getMonth()),s=Object(fn.getDayCountOfMonth)(t.getFullYear(),0===t.getMonth()?11:t.getMonth()-1);i=0===i?7:i;for(var r=this.offsetDay,a=this.tableRows,o=1,l=this.startDate,c=this.disabledDate,u="dates"===this.selectionMode?Object(m.coerceTruthyValueToArray)(this.value):[],h=Un(new Date),d=0;d<6;d++){var p=a[d];this.showWeekNumber&&(p[0]||(p[0]={type:"week",text:Object(fn.getWeekNumber)(Object(fn.nextDate)(l,7*d+1))}));for(var f=function(t){var a=p[e.showWeekNumber?t+1:t];a||(a={row:d,column:t,type:"normal",inRange:!1,start:!1,end:!1}),a.type="normal";var f=7*d+t,v=Object(fn.nextDate)(l,f-r).getTime();if(a.inRange=v>=Un(e.minDate)&&v<=Un(e.maxDate),a.start=e.minDate&&v===Un(e.minDate),a.end=e.maxDate&&v===Un(e.maxDate),v===h&&(a.type="today"),d>=0&&d<=1){var g=i+r<0?7+i+r:i+r;t+7*d>=g?a.text=o++:(a.text=s-(g-t%7)+1+7*d,a.type="prev-month")}else o<=n?a.text=o++:(a.text=o++-n,a.type="next-month");var b=new Date(v);a.disabled="function"==typeof c&&c(b),a.selected=Object(m.arrayFind)(u,function(e){return e.getTime()===b.getTime()}),e.$set(p,e.showWeekNumber?t+1:t,a)},v=0;v<7;v++)f(v);if("week"===this.selectionMode){var g=this.showWeekNumber?1:0,b=this.showWeekNumber?7:6,y=this.isWeekActive(p[g+1]);p[g].inRange=y,p[g].start=y,p[b].inRange=y,p[b].end=y}}return a}},watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Un(e)!==Un(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Un(e)!==Un(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{tableRows:[[],[],[],[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var i=new Date(t);return this.year===i.getFullYear()&&this.month===i.getMonth()&&Number(e.text)===i.getDate()},getCellClasses:function(e){var t=this,i=this.selectionMode,n=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[],s=[];return"normal"!==e.type&&"today"!==e.type||e.disabled?s.push(e.type):(s.push("available"),"today"===e.type&&s.push("today")),"normal"===e.type&&n.some(function(i){return t.cellMatchesDate(e,i)})&&s.push("default"),"day"!==i||"normal"!==e.type&&"today"!==e.type||!this.cellMatchesDate(e,this.value)||s.push("current"),!e.inRange||"normal"!==e.type&&"today"!==e.type&&"week"!==this.selectionMode||(s.push("in-range"),e.start&&s.push("start-date"),e.end&&s.push("end-date")),e.disabled&&s.push("disabled"),e.selected&&s.push("selected"),s.join(" ")},getDateOfCell:function(e,t){var i=7*e+(t-(this.showWeekNumber?1:0))-this.offsetDay;return Object(fn.nextDate)(this.startDate,i)},isWeekActive:function(e){if("week"!==this.selectionMode)return!1;var t=new Date(this.year,this.month,1),i=t.getFullYear(),n=t.getMonth();if("prev-month"===e.type&&(t.setMonth(0===n?11:n-1),t.setFullYear(0===n?i-1:i)),"next-month"===e.type&&(t.setMonth(11===n?0:n+1),t.setFullYear(11===n?i+1:i)),t.setDate(parseInt(e.text,10)),Object(fn.isDate)(this.value)){var s=(this.value.getDay()-this.firstDayOfWeek+7)%7-1;return Object(fn.prevDate)(this.value,s).getTime()===t.getTime()}return!1},markRange:function(e,t){e=Un(e),t=Un(t)||e;var i=[Math.min(e,t),Math.max(e,t)];e=i[0],t=i[1];for(var n=this.startDate,s=this.rows,r=0,a=s.length;r=e&&d<=t,u.start=e&&d===e,u.end=t&&d===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n=t.cellIndex;this.rows[i][n].disabled||i===this.lastRow&&n===this.lastColumn||(this.lastRow=i,this.lastColumn=n,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getDateOfCell(i,n)}}))}}},handleClick:function(e){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var i=t.parentNode.rowIndex-1,n="week"===this.selectionMode?1:t.cellIndex,s=this.rows[i][n];if(!s.disabled&&"week"!==s.type){var r=this.getDateOfCell(i,n);if("range"===this.selectionMode)this.rangeState.selecting?(r>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:r}):this.$emit("pick",{minDate:r,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:r,maxDate:null}),this.rangeState.selecting=!0);else if("day"===this.selectionMode)this.$emit("pick",r);else if("week"===this.selectionMode){var a=Object(fn.getWeekNumber)(r),o=r.getFullYear()+"w"+a;this.$emit("pick",{year:r.getFullYear(),week:a,value:o,date:r})}else if("dates"===this.selectionMode){var l=this.value||[],c=s.selected?function(e,t){var i="function"==typeof t?Object(m.arrayFindIndex)(e,t):e.indexOf(t);return i>=0?[].concat(e.slice(0,i),e.slice(i+1)):e}(l,function(e){return e.getTime()===r.getTime()}):[].concat(l,[r]);this.$emit("pick",c)}}}}}},Kn,[],!1,null,null,null);Gn.options.__file="packages/date-picker/src/basic/date-table.vue";var Xn=Gn.exports,Qn=s({mixins:[f.a],directives:{Clickoutside:P.a},watch:{showTime:function(e){var t=this;e&&this.$nextTick(function(e){var i=t.$refs.input.$el;i&&(t.pickerWidth=i.getBoundingClientRect().width+10)})},value:function(e){"dates"===this.selectionMode&&this.value||(Object(fn.isDate)(e)?this.date=new Date(e):this.date=this.getDefaultValue())},defaultValue:function(e){Object(fn.isDate)(this.value)||(this.date=e?new Date(e):new Date)},timePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){return t.$refs.timepicker.adjustSpinners()})},selectionMode:function(e){"month"===e?"year"===this.currentView&&"month"===this.currentView||(this.currentView="month"):"dates"===e&&(this.currentView="date")}},methods:{proxyTimePickerDataProperties:function(){var e=this,t=function(t){e.$refs.timepicker.value=t},i=function(t){e.$refs.timepicker.date=t},n=function(t){e.$refs.timepicker.selectableRange=t};this.$watch("value",t),this.$watch("date",i),this.$watch("selectableRange",n),function(t){e.$refs.timepicker.format=t}(this.timeFormat),t(this.value),i(this.date),n(this.selectableRange)},handleClear:function(){this.date=this.getDefaultValue(),this.$emit("pick",null)},emit:function(e){for(var t=this,i=arguments.length,n=Array(i>1?i-1:0),s=1;s0)||Object(fn.timeWithinRange)(e,this.selectableRange,this.format||"HH:mm:ss")}},components:{TimePicker:Ln,YearTable:zn,MonthTable:qn,DateTable:Xn,ElInput:d.a,ElButton:K.a},data:function(){return{popperClass:"",date:new Date,value:"",defaultValue:null,defaultTime:null,showTime:!1,selectionMode:"day",shortcuts:"",visible:!1,currentView:"date",disabledDate:"",selectableRange:[],firstDayOfWeek:7,showWeekNumber:!1,timePickerVisible:!1,format:"",arrowControl:!1,userInputDate:null,userInputTime:null}},computed:{year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},week:function(){return Object(fn.getWeekNumber)(this.date)},monthDate:function(){return this.date.getDate()},footerVisible:function(){return this.showTime||"dates"===this.selectionMode},visibleTime:function(){return null!==this.userInputTime?this.userInputTime:Object(fn.formatDate)(this.value||this.defaultValue,this.timeFormat)},visibleDate:function(){return null!==this.userInputDate?this.userInputDate:Object(fn.formatDate)(this.value||this.defaultValue,this.dateFormat)},yearLabel:function(){var e=this.t("el.datepicker.year");if("year"===this.currentView){var t=10*Math.floor(this.year/10);return e?t+" "+e+" - "+(t+9)+" "+e:t+" - "+(t+9)}return this.year+" "+e},timeFormat:function(){return this.format?Object(fn.extractTimeFormat)(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(fn.extractDateFormat)(this.format):"yyyy-MM-dd"}}},Mn,[],!1,null,null,null);Qn.options.__file="packages/date-picker/src/panel/date.vue";var Jn=Qn.exports,Zn=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[e.showTime?i("div",{staticClass:"el-date-range-picker__time-header"},[i("span",{staticClass:"el-date-range-picker__editors-wrap"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{ref:"minInput",staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startDate"),value:e.minVisibleDate},on:{input:function(t){return e.handleDateInput(t,"min")},change:function(t){return e.handleDateChange(t,"min")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMinTimeClose,expression:"handleMinTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startTime"),value:e.minVisibleTime},on:{focus:function(t){e.minTimePickerVisible=!0},input:function(t){return e.handleTimeInput(t,"min")},change:function(t){return e.handleTimeChange(t,"min")}}}),i("time-picker",{ref:"minTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.minTimePickerVisible},on:{pick:e.handleMinTimePick,mounted:function(t){e.$refs.minTimePicker.format=e.timeFormat}}})],1)]),i("span",{staticClass:"el-icon-arrow-right"}),i("span",{staticClass:"el-date-range-picker__editors-wrap is-right"},[i("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endDate"),value:e.maxVisibleDate,readonly:!e.minDate},on:{input:function(t){return e.handleDateInput(t,"max")},change:function(t){return e.handleDateChange(t,"max")}}})],1),i("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMaxTimeClose,expression:"handleMaxTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[i("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endTime"),value:e.maxVisibleTime,readonly:!e.minDate},on:{focus:function(t){e.minDate&&(e.maxTimePickerVisible=!0)},input:function(t){return e.handleTimeInput(t,"max")},change:function(t){return e.handleTimeChange(t,"max")}}}),i("time-picker",{ref:"maxTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.maxTimePickerVisible},on:{pick:e.handleMaxTimePick,mounted:function(t){e.$refs.maxTimePicker.format=e.timeFormat}}})],1)])]):e._e(),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevMonth}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.leftNextMonth}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.rightPrevMonth}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",attrs:{type:"button"},on:{click:e.rightNextMonth}}),i("div",[e._v(e._s(e.rightLabel))])]),i("date-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2),e.showTime?i("div",{staticClass:"el-picker-panel__footer"},[i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.handleClear}},[e._v("\n "+e._s(e.t("el.datepicker.clear"))+"\n ")]),i("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm(!1)}}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1):e._e()])])};Zn._withStripped=!0;var es=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(fn.nextDate)(new Date(e),1)]:[new Date,Object(fn.nextDate)(new Date,1)]},ts=s({mixins:[f.a],directives:{Clickoutside:P.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.leftDate.getMonth()+1))},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.rightDate.getMonth()+1))},leftYear:function(){return this.leftDate.getFullYear()},leftMonth:function(){return this.leftDate.getMonth()},leftMonthDate:function(){return this.leftDate.getDate()},rightYear:function(){return this.rightDate.getFullYear()},rightMonth:function(){return this.rightDate.getMonth()},rightMonthDate:function(){return this.rightDate.getDate()},minVisibleDate:function(){return null!==this.dateUserInput.min?this.dateUserInput.min:this.minDate?Object(fn.formatDate)(this.minDate,this.dateFormat):""},maxVisibleDate:function(){return null!==this.dateUserInput.max?this.dateUserInput.max:this.maxDate||this.minDate?Object(fn.formatDate)(this.maxDate||this.minDate,this.dateFormat):""},minVisibleTime:function(){return null!==this.timeUserInput.min?this.timeUserInput.min:this.minDate?Object(fn.formatDate)(this.minDate,this.timeFormat):""},maxVisibleTime:function(){return null!==this.timeUserInput.max?this.timeUserInput.max:this.maxDate||this.minDate?Object(fn.formatDate)(this.maxDate||this.minDate,this.timeFormat):""},timeFormat:function(){return this.format?Object(fn.extractTimeFormat)(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(fn.extractDateFormat)(this.format):"yyyy-MM-dd"},enableMonthArrow:function(){var e=(this.leftMonth+1)%12,t=this.leftMonth+1>=12?1:0;return this.unlinkPanels&&new Date(this.leftYear+t,e)=12}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(fn.nextMonth)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},showTime:!1,shortcuts:"",visible:"",disabledDate:"",firstDayOfWeek:7,minTimePickerVisible:!1,maxTimePickerVisible:!1,format:"",arrowControl:!1,unlinkPanels:!1,dateUserInput:{min:null,max:null},timeUserInput:{min:null,max:null}}},watch:{minDate:function(e){var t=this;this.dateUserInput.min=null,this.timeUserInput.min=null,this.$nextTick(function(){if(t.$refs.maxTimePicker&&t.maxDate&&t.maxDatethis.maxDate&&(this.maxDate=this.minDate)):(this.maxDate=Object(fn.modifyDate)(this.maxDate,i.getFullYear(),i.getMonth(),i.getDate()),this.maxDatethis.maxDate&&(this.maxDate=this.minDate),this.$refs.minTimePicker.value=this.minDate,this.minTimePickerVisible=!1):(this.maxDate=Object(fn.modifyTime)(this.maxDate,i.getHours(),i.getMinutes(),i.getSeconds()),this.maxDate1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],s=Object(fn.modifyWithTimeString)(e.minDate,n[0]),r=Object(fn.modifyWithTimeString)(e.maxDate,n[1]);this.maxDate===r&&this.minDate===s||(this.onPick&&this.onPick(e),this.maxDate=r,this.minDate=s,setTimeout(function(){t.maxDate=r,t.minDate=s},10),i&&!this.showTime&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleMinTimePick:function(e,t,i){this.minDate=this.minDate||new Date,e&&(this.minDate=Object(fn.modifyTime)(this.minDate,e.getHours(),e.getMinutes(),e.getSeconds())),i||(this.minTimePickerVisible=t),(!this.maxDate||this.maxDate&&this.maxDate.getTime()this.maxDate.getTime()&&(this.minDate=new Date(this.maxDate))},handleMaxTimeClose:function(){this.maxTimePickerVisible=!1},leftPrevYear:function(){this.leftDate=Object(fn.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(fn.nextMonth)(this.leftDate))},leftPrevMonth:function(){this.leftDate=Object(fn.prevMonth)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(fn.nextMonth)(this.leftDate))},rightNextYear:function(){this.unlinkPanels?this.rightDate=Object(fn.nextYear)(this.rightDate):(this.leftDate=Object(fn.nextYear)(this.leftDate),this.rightDate=Object(fn.nextMonth)(this.leftDate))},rightNextMonth:function(){this.unlinkPanels?this.rightDate=Object(fn.nextMonth)(this.rightDate):(this.leftDate=Object(fn.nextMonth)(this.leftDate),this.rightDate=Object(fn.nextMonth)(this.leftDate))},leftNextYear:function(){this.leftDate=Object(fn.nextYear)(this.leftDate)},leftNextMonth:function(){this.leftDate=Object(fn.nextMonth)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(fn.prevYear)(this.rightDate)},rightPrevMonth:function(){this.rightDate=Object(fn.prevMonth)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(fn.isDate)(e[0])&&Object(fn.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{TimePicker:Ln,DateTable:Xn,ElInput:d.a,ElButton:K.a}},Zn,[],!1,null,null,null);ts.options.__file="packages/date-picker/src/panel/date-range.vue";var is=ts.exports,ns=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts},e.popperClass]},[i("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?i("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,n){return i("button",{key:n,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(i){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),i("div",{staticClass:"el-picker-panel__body"},[i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[i("div",{staticClass:"el-date-range-picker__header"},[i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),i("div",[e._v(e._s(e.leftLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),i("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[i("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),i("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),i("div",[e._v(e._s(e.rightLabel))])]),i("month-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2)])])};ns._withStripped=!0;var ss=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(fn.nextMonth)(new Date(e))]:[new Date,Object(fn.nextMonth)(new Date)]},rs=s({mixins:[f.a],directives:{Clickoutside:P.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")},leftYear:function(){return this.leftDate.getFullYear()},rightYear:function(){return this.rightDate.getFullYear()===this.leftDate.getFullYear()?this.leftDate.getFullYear()+1:this.rightDate.getFullYear()},enableYearArrow:function(){return this.unlinkPanels&&this.rightYear>this.leftYear+1}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(fn.nextYear)(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},shortcuts:"",visible:"",disabledDate:"",format:"",arrowControl:!1,unlinkPanels:!1}},watch:{value:function(e){if(e){if(Array.isArray(e))if(this.minDate=Object(fn.isDate)(e[0])?new Date(e[0]):null,this.maxDate=Object(fn.isDate)(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),i=this.maxDate.getFullYear();this.rightDate=t===i?Object(fn.nextYear)(this.maxDate):this.maxDate}else this.rightDate=Object(fn.nextYear)(this.leftDate);else this.leftDate=ss(this.defaultValue)[0],this.rightDate=Object(fn.nextYear)(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=ss(e),i=t[0],n=t[1];this.leftDate=i,this.rightDate=e&&e[1]&&i.getFullYear()!==n.getFullYear()&&this.unlinkPanels?n:Object(fn.nextYear)(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=ss(this.defaultValue)[0],this.rightDate=Object(fn.nextYear)(this.leftDate),this.$emit("pick",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleRangePick:function(e){var t=this,i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.defaultTime||[],s=Object(fn.modifyWithTimeString)(e.minDate,n[0]),r=Object(fn.modifyWithTimeString)(e.maxDate,n[1]);this.maxDate===r&&this.minDate===s||(this.onPick&&this.onPick(e),this.maxDate=r,this.minDate=s,setTimeout(function(){t.maxDate=r,t.minDate=s},10),i&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},leftPrevYear:function(){this.leftDate=Object(fn.prevYear)(this.leftDate),this.unlinkPanels||(this.rightDate=Object(fn.prevYear)(this.rightDate))},rightNextYear:function(){this.unlinkPanels||(this.leftDate=Object(fn.nextYear)(this.leftDate)),this.rightDate=Object(fn.nextYear)(this.rightDate)},leftNextYear:function(){this.leftDate=Object(fn.nextYear)(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(fn.prevYear)(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(fn.isDate)(e[0])&&Object(fn.isDate)(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!=typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(fn.isDate)(this.value[0])?new Date(this.value[1]):null}},components:{MonthTable:qn,ElInput:d.a,ElButton:K.a}},ns,[],!1,null,null,null);rs.options.__file="packages/date-picker/src/panel/month-range.vue";var as=rs.exports,os=function(e){return"daterange"===e||"datetimerange"===e?is:"monthrange"===e?as:Jn},ls={mixins:[Tn],name:"ElDatePicker",props:{type:{type:String,default:"date"},timeArrowControl:Boolean},watch:{type:function(e){this.picker?(this.unmountPicker(),this.panel=os(e),this.mountPicker()):this.panel=os(e)}},created:function(){this.panel=os(this.type)},install:function(e){e.component(ls.name,ls)}},cs=ls,us=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],ref:"popper",staticClass:"el-picker-panel time-select el-popper",class:e.popperClass,style:{width:e.width+"px"}},[i("el-scrollbar",{attrs:{noresize:"","wrap-class":"el-picker-panel__content"}},e._l(e.items,function(t){return i("div",{key:t.value,staticClass:"time-select-item",class:{selected:e.value===t.value,disabled:t.disabled,default:t.value===e.defaultValue},attrs:{disabled:t.disabled},on:{click:function(i){e.handleClick(t)}}},[e._v(e._s(t.value))])}),0)],1)])};us._withStripped=!0;var hs=function(e){var t=(e||"").split(":");return t.length>=2?{hours:parseInt(t[0],10),minutes:parseInt(t[1],10)}:null},ds=function(e,t){var i=hs(e),n=hs(t),s=i.minutes+60*i.hours,r=n.minutes+60*n.hours;return s===r?0:s>r?1:-1},ps=function(e,t){var i=hs(e),n=hs(t),s={hours:i.hours,minutes:i.minutes};return s.minutes+=n.minutes,s.hours+=n.hours,s.hours+=Math.floor(s.minutes/60),s.minutes=s.minutes%60,function(e){return(e.hours<10?"0"+e.hours:e.hours)+":"+(e.minutes<10?"0"+e.minutes:e.minutes)}(s)},fs=s({components:{ElScrollbar:L.a},watch:{value:function(e){var t=this;e&&this.$nextTick(function(){return t.scrollToOption()})}},methods:{handleClick:function(e){e.disabled||this.$emit("pick",e.value)},handleClear:function(){this.$emit("pick",null)},scrollToOption:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:".selected",t=this.$refs.popper.querySelector(".el-picker-panel__content");Vt()(t,t.querySelector(e))},handleMenuEnter:function(){var e=this,t=-1!==this.items.map(function(e){return e.value}).indexOf(this.value),i=-1!==this.items.map(function(e){return e.value}).indexOf(this.defaultValue),n=(t?".selected":i&&".default")||".time-select-item:not(.disabled)";this.$nextTick(function(){return e.scrollToOption(n)})},scrollDown:function(e){for(var t=this.items,i=t.length,n=t.length,s=t.map(function(e){return e.value}).indexOf(this.value);n--;)if(!t[s=(s+e+i)%i].disabled)return void this.$emit("pick",t[s].value,!0)},isValidValue:function(e){return-1!==this.items.filter(function(e){return!e.disabled}).map(function(e){return e.value}).indexOf(e)},handleKeydown:function(e){var t=e.keyCode;if(38===t||40===t){var i={40:1,38:-1}[t.toString()];return this.scrollDown(i),void e.stopPropagation()}}},data:function(){return{popperClass:"",start:"09:00",end:"18:00",step:"00:30",value:"",defaultValue:"",visible:!1,minTime:"",maxTime:"",width:0}},computed:{items:function(){var e=this.start,t=this.end,i=this.step,n=[];if(e&&t&&i)for(var s=e;ds(s,t)<=0;)n.push({value:s,disabled:ds(s,this.minTime||"-1:-1")<=0||ds(s,this.maxTime||"100:100")>=0}),s=ps(s,i);return n}}},us,[],!1,null,null,null);fs.options.__file="packages/date-picker/src/panel/time-select.vue";var ms=fs.exports,vs={mixins:[Tn],name:"ElTimeSelect",componentName:"ElTimeSelect",props:{type:{type:String,default:"time-select"}},beforeCreate:function(){this.panel=ms},install:function(e){e.component(vs.name,vs)}},gs=vs,bs=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-range-picker el-picker-panel el-popper",class:e.popperClass},[i("div",{staticClass:"el-time-range-picker__content"},[i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.startTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"minSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.minDate},on:{change:e.handleMinChange,"select-range":e.setMinSelectionRange}})],1)]),i("div",{staticClass:"el-time-range-picker__cell"},[i("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.endTime")))]),i("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[i("time-spinner",{ref:"maxSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.maxDate},on:{change:e.handleMaxChange,"select-range":e.setMaxSelectionRange}})],1)])]),i("div",{staticClass:"el-time-panel__footer"},[i("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:function(t){e.handleCancel()}}},[e._v(e._s(e.t("el.datepicker.cancel")))]),i("button",{staticClass:"el-time-panel__btn confirm",attrs:{type:"button",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])};bs._withStripped=!0;var ys=Object(fn.parseDate)("00:00:00","HH:mm:ss"),xs=Object(fn.parseDate)("23:59:59","HH:mm:ss"),_s=function(e){return Object(fn.modifyDate)(xs,e.getFullYear(),e.getMonth(),e.getDate())},Cs=function(e,t){return new Date(Math.min(e.getTime()+t,_s(e).getTime()))},ws=s({mixins:[f.a],components:{TimeSpinner:jn},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},offset:function(){return this.showSeconds?11:8},spinner:function(){return this.selectionRange[0]this.maxDate.getTime()},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},data:function(){return{popperClass:"",minDate:new Date,maxDate:new Date,value:[],oldValue:[new Date,new Date],defaultValue:null,format:"HH:mm:ss",visible:!1,selectionRange:[0,2],arrowControl:!1}},watch:{value:function(e){Array.isArray(e)?(this.minDate=new Date(e[0]),this.maxDate=new Date(e[1])):Array.isArray(this.defaultValue)?(this.minDate=new Date(this.defaultValue[0]),this.maxDate=new Date(this.defaultValue[1])):this.defaultValue?(this.minDate=new Date(this.defaultValue),this.maxDate=Cs(new Date(this.defaultValue),36e5)):(this.minDate=new Date,this.maxDate=Cs(new Date,36e5))},visible:function(e){var t=this;e&&(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.minSpinner.emitSelectRange("hours")}))}},methods:{handleClear:function(){this.$emit("pick",null)},handleCancel:function(){this.$emit("pick",this.oldValue)},handleMinChange:function(e){this.minDate=Object(fn.clearMilliseconds)(e),this.handleChange()},handleMaxChange:function(e){this.maxDate=Object(fn.clearMilliseconds)(e),this.handleChange()},handleChange:function(){this.isValidValue([this.minDate,this.maxDate])&&(this.$refs.minSpinner.selectableRange=[[function(e){return Object(fn.modifyDate)(ys,e.getFullYear(),e.getMonth(),e.getDate())}(this.minDate),this.maxDate]],this.$refs.maxSpinner.selectableRange=[[this.minDate,_s(this.maxDate)]],this.$emit("pick",[this.minDate,this.maxDate],!0))},setMinSelectionRange:function(e,t){this.$emit("select-range",e,t,"min"),this.selectionRange=[e,t]},setMaxSelectionRange:function(e,t){this.$emit("select-range",e,t,"max"),this.selectionRange=[e+this.offset,t+this.offset]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$refs.minSpinner.selectableRange,i=this.$refs.maxSpinner.selectableRange;this.minDate=Object(fn.limitTimeRange)(this.minDate,t,this.format),this.maxDate=Object(fn.limitTimeRange)(this.maxDate,i,this.format),this.$emit("pick",[this.minDate,this.maxDate],e)},adjustSpinners:function(){this.$refs.minSpinner.adjustSpinners(),this.$refs.maxSpinner.adjustSpinners()},changeSelectionRange:function(e){var t=this.showSeconds?[0,3,6,11,14,17]:[0,3,8,11],i=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),n=(t.indexOf(this.selectionRange[0])+e+t.length)%t.length,s=t.length/2;n-1}},openDelay:{type:Number,default:0},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+Object(m.generateId)()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),t&&(Object(fe.addClass)(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),i.setAttribute("tabindex",0),"click"!==this.trigger&&(Object(fe.on)(t,"focusin",function(){e.handleFocus();var i=t.__vue__;i&&"function"==typeof i.focus&&i.focus()}),Object(fe.on)(i,"focusin",this.handleFocus),Object(fe.on)(t,"focusout",this.handleBlur),Object(fe.on)(i,"focusout",this.handleBlur)),Object(fe.on)(t,"keydown",this.handleKeydown),Object(fe.on)(t,"click",this.handleClick)),"click"===this.trigger?(Object(fe.on)(t,"click",this.doToggle),Object(fe.on)(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(Object(fe.on)(t,"mouseenter",this.handleMouseEnter),Object(fe.on)(i,"mouseenter",this.handleMouseEnter),Object(fe.on)(t,"mouseleave",this.handleMouseLeave),Object(fe.on)(i,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(Object(fe.on)(t,"focusin",this.doShow),Object(fe.on)(t,"focusout",this.doClose)):(Object(fe.on)(t,"mousedown",this.doShow),Object(fe.on)(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(fe.addClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(fe.removeClass)(this.referenceElm,"focusing")},handleBlur:function(){Object(fe.removeClass)(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout(function(){e.showPopper=!0},this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this._timer=setTimeout(function(){e.showPopper=!1},200)},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,i=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&i&&!i.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){this.openDelay&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(fe.off)(e,"click",this.doToggle),Object(fe.off)(e,"mouseup",this.doClose),Object(fe.off)(e,"mousedown",this.doShow),Object(fe.off)(e,"focusin",this.doShow),Object(fe.off)(e,"focusout",this.doClose),Object(fe.off)(e,"mousedown",this.doShow),Object(fe.off)(e,"mouseup",this.doClose),Object(fe.off)(e,"mouseleave",this.handleMouseLeave),Object(fe.off)(e,"mouseenter",this.handleMouseEnter),Object(fe.off)(document,"click",this.handleDocumentClick)}},$s,[],!1,null,null,null);Os.options.__file="packages/popover/src/main.vue";var Es=Os.exports,Ts=function(e,t,i){var n=t.expression?t.value:t.arg,s=i.context.$refs[n];s&&(Array.isArray(s)?s[0].$refs.reference=e:s.$refs.reference=e)},Ms={bind:function(e,t,i){Ts(e,t,i)},inserted:function(e,t,i){Ts(e,t,i)}};di.a.directive("popover",Ms),Es.install=function(e){e.directive("popover",Ms),e.component(Es.name,Es)},Es.directive=Ms;var Ps=Es,Is={name:"ElTooltip",mixins:[j.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+Object(m.generateId)(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new di.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=T()(200,function(){return e.handleClosePopper()}))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var i=this.getFirstElement();if(!i)return null;var n=i.data=i.data||{};return n.staticClass=this.addTooltipClass(n.staticClass),i},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),Object(fe.on)(this.referenceElm,"mouseenter",this.show),Object(fe.on)(this.referenceElm,"mouseleave",this.hide),Object(fe.on)(this.referenceElm,"focus",function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()}),Object(fe.on)(this.referenceElm,"blur",this.handleBlur),Object(fe.on)(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick(function(){e.value&&e.updatePopper()})},watch:{focusing:function(e){e?Object(fe.addClass)(this.referenceElm,"focusing"):Object(fe.removeClass)(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.showPopper=!0},this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,i=0;i0){var t=(Ks=Us.shift()).options;for(var i in t)t.hasOwnProperty(i)&&(Ys[i]=t[i]);void 0===t.callback&&(Ys.callback=Gs);var n=Ys.callback;Ys.callback=function(t,i){n(t,i),e()},Object(Rs.isVNode)(Ys.message)?(Ys.$slots.default=[Ys.message],Ys.message=null):delete Ys.$slots.default,["modal","showClose","closeOnClickModal","closeOnPressEscape","closeOnHashChange"].forEach(function(e){void 0===Ys[e]&&(Ys[e]=!0)}),document.body.appendChild(Ys.$el),di.a.nextTick(function(){Ys.visible=!0})}},Qs=function e(t,i){if(!di.a.prototype.$isServer){if("string"==typeof t||Object(Rs.isVNode)(t)?(t={message:t},"string"==typeof arguments[1]&&(t.title=arguments[1])):t.callback&&!i&&(i=t.callback),"undefined"!=typeof Promise)return new Promise(function(n,s){Us.push({options:Be()({},Ws,e.defaults,t),callback:i,resolve:n,reject:s}),Xs()});Us.push({options:Be()({},Ws,e.defaults,t),callback:i}),Xs()}};Qs.setDefaults=function(e){Qs.defaults=e},Qs.alert=function(e,t,i){return"object"===(void 0===t?"undefined":Hs(t))?(i=t,t=""):void 0===t&&(t=""),Qs(Be()({title:t,message:e,$type:"alert",closeOnPressEscape:!1,closeOnClickModal:!1},i))},Qs.confirm=function(e,t,i){return"object"===(void 0===t?"undefined":Hs(t))?(i=t,t=""):void 0===t&&(t=""),Qs(Be()({title:t,message:e,$type:"confirm",showCancelButton:!0},i))},Qs.prompt=function(e,t,i){return"object"===(void 0===t?"undefined":Hs(t))?(i=t,t=""):void 0===t&&(t=""),Qs(Be()({title:t,message:e,showCancelButton:!0,showInput:!0,$type:"prompt"},i))},Qs.close=function(){Ys.doClose(),Ys.visible=!1,Us=[],Ks=null};var Js=Qs,Zs=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-breadcrumb",attrs:{"aria-label":"Breadcrumb",role:"navigation"}},[this._t("default")],2)};Zs._withStripped=!0;var er=s({name:"ElBreadcrumb",props:{separator:{type:String,default:"/"},separatorClass:{type:String,default:""}},provide:function(){return{elBreadcrumb:this}},mounted:function(){var e=this.$el.querySelectorAll(".el-breadcrumb__item");e.length&&e[e.length-1].setAttribute("aria-current","page")}},Zs,[],!1,null,null,null);er.options.__file="packages/breadcrumb/src/breadcrumb.vue";var tr=er.exports;tr.install=function(e){e.component(tr.name,tr)};var ir=tr,nr=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-breadcrumb__item"},[t("span",{ref:"link",class:["el-breadcrumb__inner",this.to?"is-link":""],attrs:{role:"link"}},[this._t("default")],2),this.separatorClass?t("i",{staticClass:"el-breadcrumb__separator",class:this.separatorClass}):t("span",{staticClass:"el-breadcrumb__separator",attrs:{role:"presentation"}},[this._v(this._s(this.separator))])])};nr._withStripped=!0;var sr=s({name:"ElBreadcrumbItem",props:{to:{},replace:Boolean},data:function(){return{separator:"",separatorClass:""}},inject:["elBreadcrumb"],mounted:function(){var e=this;this.separator=this.elBreadcrumb.separator,this.separatorClass=this.elBreadcrumb.separatorClass;var t=this.$refs.link;t.setAttribute("role","link"),t.addEventListener("click",function(t){var i=e.to,n=e.$router;i&&n&&(e.replace?n.replace(i):n.push(i))})}},nr,[],!1,null,null,null);sr.options.__file="packages/breadcrumb/src/breadcrumb-item.vue";var rr=sr.exports;rr.install=function(e){e.component(rr.name,rr)};var ar=rr,or=function(){var e=this.$createElement;return(this._self._c||e)("form",{staticClass:"el-form",class:[this.labelPosition?"el-form--label-"+this.labelPosition:"",{"el-form--inline":this.inline}]},[this._t("default")],2)};or._withStripped=!0;var lr=s({name:"ElForm",componentName:"ElForm",provide:function(){return{elForm:this}},props:{model:Object,rules:Object,labelPosition:String,labelWidth:String,labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:String,disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1}},watch:{rules:function(){this.fields.forEach(function(e){e.removeValidateEvents(),e.addValidateEvents()}),this.validateOnRuleChange&&this.validate(function(){})}},computed:{autoLabelWidth:function(){if(!this.potentialLabelWidthArr.length)return 0;var e=Math.max.apply(Math,this.potentialLabelWidthArr);return e?e+"px":""}},data:function(){return{fields:[],potentialLabelWidthArr:[]}},created:function(){var e=this;this.$on("el.form.addField",function(t){t&&e.fields.push(t)}),this.$on("el.form.removeField",function(t){t.prop&&e.fields.splice(e.fields.indexOf(t),1)})},methods:{resetFields:function(){this.model?this.fields.forEach(function(e){e.resetField()}):console.warn("[Element Warn][Form]model is required for resetFields to work.")},clearValidate:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];(e.length?"string"==typeof e?this.fields.filter(function(t){return e===t.prop}):this.fields.filter(function(t){return e.indexOf(t.prop)>-1}):this.fields).forEach(function(e){e.clearValidate()})},validate:function(e){var t=this;if(this.model){var i=void 0;"function"!=typeof e&&window.Promise&&(i=new window.Promise(function(t,i){e=function(e){e?t(e):i(e)}}));var n=!0,s=0;0===this.fields.length&&e&&e(!0);var r={};return this.fields.forEach(function(i){i.validate("",function(i,a){i&&(n=!1),r=Be()({},r,a),"function"==typeof e&&++s===t.fields.length&&e(n,r)})}),i||void 0}console.warn("[Element Warn][Form]model is required for validate to work!")},validateField:function(e,t){e=[].concat(e);var i=this.fields.filter(function(t){return-1!==e.indexOf(t.prop)});i.length?i.forEach(function(e){e.validate("",t)}):console.warn("[Element Warn]please pass correct props!")},getLabelWidthIndex:function(e){var t=this.potentialLabelWidthArr.indexOf(e);if(-1===t)throw new Error("[ElementForm]unpected width ",e);return t},registerLabelWidth:function(e,t){if(e&&t){var i=this.getLabelWidthIndex(t);this.potentialLabelWidthArr.splice(i,1,e)}else e&&this.potentialLabelWidthArr.push(e)},deregisterLabelWidth:function(e){var t=this.getLabelWidthIndex(e);this.potentialLabelWidthArr.splice(t,1)}}},or,[],!1,null,null,null);lr.options.__file="packages/form/src/form.vue";var cr=lr.exports;cr.install=function(e){e.component(cr.name,cr)};var ur=cr,hr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-form-item",class:[{"el-form-item--feedback":e.elForm&&e.elForm.statusIcon,"is-error":"error"===e.validateState,"is-validating":"validating"===e.validateState,"is-success":"success"===e.validateState,"is-required":e.isRequired||e.required,"is-no-asterisk":e.elForm&&e.elForm.hideRequiredAsterisk},e.sizeClass?"el-form-item--"+e.sizeClass:""]},[i("label-wrap",{attrs:{"is-auto-width":e.labelStyle&&"auto"===e.labelStyle.width,"update-all":"auto"===e.form.labelWidth}},[e.label||e.$slots.label?i("label",{staticClass:"el-form-item__label",style:e.labelStyle,attrs:{for:e.labelFor}},[e._t("label",[e._v(e._s(e.label+e.form.labelSuffix))])],2):e._e()]),i("div",{staticClass:"el-form-item__content",style:e.contentStyle},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-top"}},["error"===e.validateState&&e.showMessage&&e.form.showMessage?e._t("error",[i("div",{staticClass:"el-form-item__error",class:{"el-form-item__error--inline":"boolean"==typeof e.inlineMessage?e.inlineMessage:e.elForm&&e.elForm.inlineMessage||!1}},[e._v("\n "+e._s(e.validateMessage)+"\n ")])],{error:e.validateMessage}):e._e()],2)],2)],1)};hr._withStripped=!0;var dr=i(40),pr=i.n(dr),fr=s({props:{isAutoWidth:Boolean,updateAll:Boolean},inject:["elForm","elFormItem"],render:function(){var e=arguments[0],t=this.$slots.default;if(!t)return null;if(this.isAutoWidth){var i=this.elForm.autoLabelWidth,n={};if(i&&"auto"!==i){var s=parseInt(i,10)-this.computedWidth;s&&(n.marginLeft=s+"px")}return e("div",{class:"el-form-item__label-wrap",style:n},[t])}return t[0]},methods:{getLabelWidth:function(){if(this.$el&&this.$el.firstElementChild){var e=window.getComputedStyle(this.$el.firstElementChild).width;return Math.ceil(parseFloat(e))}return 0},updateLabelWidth:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"update";this.$slots.default&&this.isAutoWidth&&this.$el.firstElementChild&&("update"===e?this.computedWidth=this.getLabelWidth():"remove"===e&&this.elForm.deregisterLabelWidth(this.computedWidth))}},watch:{computedWidth:function(e,t){this.updateAll&&(this.elForm.registerLabelWidth(e,t),this.elFormItem.updateComputedLabelWidth(e))}},data:function(){return{computedWidth:0}},mounted:function(){this.updateLabelWidth("update")},updated:function(){this.updateLabelWidth("update")},beforeDestroy:function(){this.updateLabelWidth("remove")}},void 0,void 0,!1,null,null,null);fr.options.__file="packages/form/src/label-wrap.vue";var mr=fr.exports,vr=s({name:"ElFormItem",componentName:"ElFormItem",mixins:[k.a],provide:function(){return{elFormItem:this}},inject:["elForm"],props:{label:String,labelWidth:String,prop:String,required:{type:Boolean,default:void 0},rules:[Object,Array],error:String,validateStatus:String,for:String,inlineMessage:{type:[String,Boolean],default:""},showMessage:{type:Boolean,default:!0},size:String},components:{LabelWrap:mr},watch:{error:{immediate:!0,handler:function(e){this.validateMessage=e,this.validateState=e?"error":""}},validateStatus:function(e){this.validateState=e}},computed:{labelFor:function(){return this.for||this.prop},labelStyle:function(){var e={};if("top"===this.form.labelPosition)return e;var t=this.labelWidth||this.form.labelWidth;return t&&(e.width=t),e},contentStyle:function(){var e={},t=this.label;if("top"===this.form.labelPosition||this.form.inline)return e;if(!t&&!this.labelWidth&&this.isNested)return e;var i=this.labelWidth||this.form.labelWidth;return"auto"===i?"auto"===this.labelWidth?e.marginLeft=this.computedLabelWidth:"auto"===this.form.labelWidth&&(e.marginLeft=this.elForm.autoLabelWidth):e.marginLeft=i,e},form:function(){for(var e=this.$parent,t=e.$options.componentName;"ElForm"!==t;)"ElFormItem"===t&&(this.isNested=!0),t=(e=e.$parent).$options.componentName;return e},fieldValue:function(){var e=this.form.model;if(e&&this.prop){var t=this.prop;return-1!==t.indexOf(":")&&(t=t.replace(/:/,".")),Object(m.getPropByPath)(e,t,!0).v}},isRequired:function(){var e=this.getRules(),t=!1;return e&&e.length&&e.every(function(e){return!e.required||(t=!0,!1)}),t},_formSize:function(){return this.elForm.size},elFormItemSize:function(){return this.size||this._formSize},sizeClass:function(){return this.elFormItemSize||(this.$ELEMENT||{}).size}},data:function(){return{validateState:"",validateMessage:"",validateDisabled:!1,validator:{},isNested:!1,computedLabelWidth:""}},methods:{validate:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:m.noop;this.validateDisabled=!1;var n=this.getFilteredRule(e);if((!n||0===n.length)&&void 0===this.required)return i(),!0;this.validateState="validating";var s={};n&&n.length>0&&n.forEach(function(e){delete e.trigger}),s[this.prop]=n;var r=new pr.a(s),a={};a[this.prop]=this.fieldValue,r.validate(a,{firstFields:!0},function(e,n){t.validateState=e?"error":"success",t.validateMessage=e?e[0].message:"",i(t.validateMessage,n),t.elForm&&t.elForm.$emit("validate",t.prop,!e,t.validateMessage||null)})},clearValidate:function(){this.validateState="",this.validateMessage="",this.validateDisabled=!1},resetField:function(){var e=this;this.validateState="",this.validateMessage="";var t=this.form.model,i=this.fieldValue,n=this.prop;-1!==n.indexOf(":")&&(n=n.replace(/:/,"."));var s=Object(m.getPropByPath)(t,n,!0);this.validateDisabled=!0,Array.isArray(i)?s.o[s.k]=[].concat(this.initialValue):s.o[s.k]=this.initialValue,this.$nextTick(function(){e.validateDisabled=!1}),this.broadcast("ElTimeSelect","fieldReset",this.initialValue)},getRules:function(){var e=this.form.rules,t=this.rules,i=void 0!==this.required?{required:!!this.required}:[],n=Object(m.getPropByPath)(e,this.prop||"");return e=e?n.o[this.prop||""]||n.v:[],[].concat(t||e||[]).concat(i)},getFilteredRule:function(e){return this.getRules().filter(function(t){return!t.trigger||""===e||(Array.isArray(t.trigger)?t.trigger.indexOf(e)>-1:t.trigger===e)}).map(function(e){return Be()({},e)})},onFieldBlur:function(){this.validate("blur")},onFieldChange:function(){this.validateDisabled?this.validateDisabled=!1:this.validate("change")},updateComputedLabelWidth:function(e){this.computedLabelWidth=e?e+"px":""},addValidateEvents:function(){(this.getRules().length||void 0!==this.required)&&(this.$on("el.form.blur",this.onFieldBlur),this.$on("el.form.change",this.onFieldChange))},removeValidateEvents:function(){this.$off()}},mounted:function(){if(this.prop){this.dispatch("ElForm","el.form.addField",[this]);var e=this.fieldValue;Array.isArray(e)&&(e=[].concat(e)),Object.defineProperty(this,"initialValue",{value:e}),this.addValidateEvents()}},beforeDestroy:function(){this.dispatch("ElForm","el.form.removeField",[this])}},hr,[],!1,null,null,null);vr.options.__file="packages/form/src/form-item.vue";var gr=vr.exports;gr.install=function(e){e.component(gr.name,gr)};var br=gr,yr=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-tabs__active-bar",class:"is-"+this.rootTabs.tabPosition,style:this.barStyle})};yr._withStripped=!0;var xr=s({name:"TabBar",props:{tabs:Array},inject:["rootTabs"],computed:{barStyle:{get:function(){var e=this,t={},i=0,n=0,s=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height",r="width"===s?"x":"y",a=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})};this.tabs.every(function(t,r){var o=Object(m.arrayFind)(e.$parent.$refs.tabs||[],function(e){return e.id.replace("tab-","")===t.paneName});return!!o&&(t.active?(n=o["client"+a(s)],"width"===s&&e.tabs.length>1&&(n-=0===r||r===e.tabs.length-1?20:40),!1):(i+=o["client"+a(s)],!0))}),"width"===s&&0!==i&&(i+=20);var o="translate"+a(r)+"("+i+"px)";return t[s]=n+"px",t.transform=o,t.msTransform=o,t.webkitTransform=o,t}}}},yr,[],!1,null,null,null);function _r(){}xr.options.__file="packages/tabs/src/tab-bar.vue";var Cr=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})},wr=s({name:"TabNav",components:{TabBar:xr.exports},inject:["rootTabs"],props:{panes:Array,currentName:String,editable:Boolean,onTabClick:{type:Function,default:_r},onTabRemove:{type:Function,default:_r},type:String,stretch:Boolean},data:function(){return{scrollable:!1,navOffset:0,isFocus:!1,focusable:!0}},computed:{navStyle:function(){return{transform:"translate"+(-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"X":"Y")+"(-"+this.navOffset+"px)"}},sizeName:function(){return-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height"}},methods:{scrollPrev:function(){var e=this.$refs.navScroll["offset"+Cr(this.sizeName)],t=this.navOffset;if(t){var i=t>e?t-e:0;this.navOffset=i}},scrollNext:function(){var e=this.$refs.nav["offset"+Cr(this.sizeName)],t=this.$refs.navScroll["offset"+Cr(this.sizeName)],i=this.navOffset;if(!(e-i<=t)){var n=e-i>2*t?i+t:e-t;this.navOffset=n}},scrollToActiveTab:function(){if(this.scrollable){var e=this.$refs.nav,t=this.$el.querySelector(".is-active");if(t){var i=this.$refs.navScroll,n=t.getBoundingClientRect(),s=i.getBoundingClientRect(),r=e.offsetWidth-s.width,a=this.navOffset,o=a;n.lefts.right&&(o=a+n.right-s.right),o=Math.max(o,0),this.navOffset=Math.min(o,r)}}},update:function(){if(this.$refs.nav){var e=this.sizeName,t=this.$refs.nav["offset"+Cr(e)],i=this.$refs.navScroll["offset"+Cr(e)],n=this.navOffset;if(i0&&(this.navOffset=0)}},changeTab:function(e){var t=e.keyCode,i=void 0,n=void 0,s=void 0;-1!==[37,38,39,40].indexOf(t)&&(s=e.currentTarget.querySelectorAll("[role=tab]"),n=Array.prototype.indexOf.call(s,e.target),s[i=37===t||38===t?0===n?s.length-1:n-1:n0&&void 0!==arguments[0]&&arguments[0];if(this.$slots.default){var i=this.$slots.default.filter(function(e){return e.tag&&e.componentOptions&&"ElTabPane"===e.componentOptions.Ctor.options.name}).map(function(e){return e.componentInstance}),n=!(i.length===this.panes.length&&i.every(function(t,i){return t===e.panes[i]}));(t||n)&&(this.panes=i)}else 0!==this.panes.length&&(this.panes=[])},handleTabClick:function(e,t,i){e.disabled||(this.setCurrentName(t),this.$emit("tab-click",e,i))},handleTabRemove:function(e,t){e.disabled||(t.stopPropagation(),this.$emit("edit",e.name,"remove"),this.$emit("tab-remove",e.name))},handleTabAdd:function(){this.$emit("edit",null,"add"),this.$emit("tab-add")},setCurrentName:function(e){var t=this,i=function(){t.currentName=e,t.$emit("input",e)};if(this.currentName!==e&&this.beforeLeave){var n=this.beforeLeave(e,this.currentName);n&&n.then?n.then(function(){i(),t.$refs.nav&&t.$refs.nav.removeFocus()},function(){}):!1!==n&&i()}else i()}},render:function(e){var t,i=this.type,n=this.handleTabClick,s=this.handleTabRemove,r=this.handleTabAdd,a=this.currentName,o=this.panes,l=this.editable,c=this.addable,u=this.tabPosition,h=this.stretch,d=e("div",{class:["el-tabs__header","is-"+u]},[l||c?e("span",{class:"el-tabs__new-tab",on:{click:r,keydown:function(e){13===e.keyCode&&r()}},attrs:{tabindex:"0"}},[e("i",{class:"el-icon-plus"})]):null,e("tab-nav",{props:{currentName:a,onTabClick:n,onTabRemove:s,editable:l,type:i,panes:o,stretch:h},ref:"nav"})]),p=e("div",{class:"el-tabs__content"},[this.$slots.default]);return e("div",{class:(t={"el-tabs":!0,"el-tabs--card":"card"===i},t["el-tabs--"+u]=!0,t["el-tabs--border-card"]="border-card"===i,t)},["bottom"!==u?[d,p]:[p,d]])},created:function(){this.currentName||this.setCurrentName("0"),this.$on("tab-nav-update",this.calcPaneInstances.bind(null,!0))},mounted:function(){this.calcPaneInstances()},updated:function(){this.calcPaneInstances()}},void 0,void 0,!1,null,null,null);kr.options.__file="packages/tabs/src/tabs.vue";var Sr=kr.exports;Sr.install=function(e){e.component(Sr.name,Sr)};var Dr=Sr,$r=function(){var e=this,t=e.$createElement,i=e._self._c||t;return!e.lazy||e.loaded||e.active?i("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],staticClass:"el-tab-pane",attrs:{role:"tabpanel","aria-hidden":!e.active,id:"pane-"+e.paneName,"aria-labelledby":"tab-"+e.paneName}},[e._t("default")],2):e._e()};$r._withStripped=!0;var Or=s({name:"ElTabPane",componentName:"ElTabPane",props:{label:String,labelContent:Function,name:String,closable:Boolean,disabled:Boolean,lazy:Boolean},data:function(){return{index:null,loaded:!1}},computed:{isClosable:function(){return this.closable||this.$parent.closable},active:function(){var e=this.$parent.currentName===(this.name||this.index);return e&&(this.loaded=!0),e},paneName:function(){return this.name||this.index}},updated:function(){this.$parent.$emit("tab-nav-update")}},$r,[],!1,null,null,null);Or.options.__file="packages/tabs/src/tab-pane.vue";var Er=Or.exports;Er.install=function(e){e.component(Er.name,Er)};var Tr=Er,Mr=s({name:"ElTag",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:"light",validator:function(e){return["dark","light","plain"].includes(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit("close",e)},handleClick:function(e){this.$emit("click",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,i=this.tagSize,n=this.hit,s=this.effect,r=e("span",{class:["el-tag",t?"el-tag--"+t:"",i?"el-tag--"+i:"",s?"el-tag--"+s:"",n&&"is-hit"],style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e("i",{class:"el-tag__close el-icon-close",on:{click:this.handleClose}})]);return this.disableTransitions?r:e("transition",{attrs:{name:"el-zoom-in-center"}},[r])}},void 0,void 0,!1,null,null,null);Mr.options.__file="packages/tag/src/tag.vue";var Pr=Mr.exports;Pr.install=function(e){e.component(Pr.name,Pr)};var Ir=Pr,Nr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-tree",class:{"el-tree--highlight-current":e.highlightCurrent,"is-dragging":!!e.dragState.draggingNode,"is-drop-not-allow":!e.dragState.allowDrop,"is-drop-inner":"inner"===e.dragState.dropType},attrs:{role:"tree"}},[e._l(e.root.childNodes,function(t){return i("el-tree-node",{key:e.getNodeKey(t),attrs:{node:t,props:e.props,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent},on:{"node-expand":e.handleNodeExpand}})}),e.isEmpty?i("div",{staticClass:"el-tree__empty-block"},[i("span",{staticClass:"el-tree__empty-text"},[e._v(e._s(e.emptyText))])]):e._e(),i("div",{directives:[{name:"show",rawName:"v-show",value:e.dragState.showDropIndicator,expression:"dragState.showDropIndicator"}],ref:"dropIndicator",staticClass:"el-tree__drop-indicator"})],2)};Nr._withStripped=!0;var jr="$treeNodeId",Fr=function(e,t){t&&!t[jr]&&Object.defineProperty(t,jr,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},Lr=function(e,t){return e?t[e]:t[jr]},Ar=function(){function e(e,t){for(var i=0;i0&&n.lazy&&n.defaultExpandAll&&this.expand(),Array.isArray(this.data)||Fr(this,this.data),this.data){var a=n.defaultExpandedKeys,o=n.key;o&&a&&-1!==a.indexOf(this.key)&&this.expand(null,n.autoExpandParent),o&&void 0!==n.currentNodeKey&&this.key===n.currentNodeKey&&(n.currentNode=this,n.currentNode.isCurrent=!0),n.lazy&&n._initDefaultCheckedNode(this),this.updateLeafState()}}return e.prototype.setData=function(e){Array.isArray(e)||Fr(this,e),this.data=e,this.childNodes=[];for(var t=void 0,i=0,n=(t=0===this.level&&this.data instanceof Array?this.data:Br(this,"children")||[]).length;i1&&void 0!==arguments[1])||arguments[1];return function i(n){for(var s=n.childNodes||[],r=!1,a=0,o=s.length;a-1&&t.splice(i,1);var n=this.childNodes.indexOf(e);n>-1&&(this.store&&this.store.deregisterNode(e),e.parent=null,this.childNodes.splice(n,1)),this.updateLeafState()},e.prototype.removeChildByData=function(e){for(var t=null,i=0;i0;)n.expanded=!0,n=n.parent;i.expanded=!0,e&&e()};this.shouldLoadData()?this.loadData(function(e){e instanceof Array&&(i.checked?i.setChecked(!0,!0):i.store.checkStrictly||zr(i),n())}):n()},e.prototype.doCreateChildren=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.forEach(function(e){t.insertChild(Be()({data:e},i),void 0,!0)})},e.prototype.collapse=function(){this.expanded=!1},e.prototype.shouldLoadData=function(){return!0===this.store.lazy&&this.store.load&&!this.loaded},e.prototype.updateLeafState=function(){if(!0!==this.store.lazy||!0===this.loaded||void 0===this.isLeafByUser){var e=this.childNodes;!this.store.lazy||!0===this.store.lazy&&!0===this.loaded?this.isLeaf=!e||0===e.length:this.isLeaf=!1}else this.isLeaf=this.isLeafByUser},e.prototype.setChecked=function(e,t,i,n){var s=this;if(this.indeterminate="half"===e,this.checked=!0===e,!this.store.checkStrictly){if(!this.shouldLoadData()||this.store.checkDescendants){var r=Vr(this.childNodes),a=r.all,o=r.allWithoutDisable;this.isLeaf||a||!o||(this.checked=!1,e=!1);var l=function(){if(t){for(var i=s.childNodes,r=0,a=i.length;r0&&void 0!==arguments[0]&&arguments[0];if(0===this.level)return this.data;var t=this.data;if(!t)return null;var i=this.store.props,n="children";return i&&(n=i.children||"children"),void 0===t[n]&&(t[n]=null),e&&!t[n]&&(t[n]=[]),t[n]},e.prototype.updateChildren=function(){var e=this,t=this.getChildren()||[],i=this.childNodes.map(function(e){return e.data}),n={},s=[];t.forEach(function(e,t){var r=e[jr];!!r&&Object(m.arrayFindIndex)(i,function(e){return e[jr]===r})>=0?n[r]={index:t,data:e}:s.push({index:t,data:e})}),this.store.lazy||i.forEach(function(t){n[t[jr]]||e.removeChildByData(t)}),s.forEach(function(t){var i=t.index,n=t.data;e.insertChild({data:n},i)}),this.updateLeafState()},e.prototype.loadData=function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!0!==this.store.lazy||!this.store.load||this.loaded||this.loading&&!Object.keys(i).length)e&&e.call(this);else{this.loading=!0;this.store.load(this,function(n){t.loaded=!0,t.loading=!1,t.childNodes=[],t.doCreateChildren(n,i),t.updateLeafState(),e&&e.call(t,n)})}},Ar(e,[{key:"label",get:function(){return Br(this,"label")}},{key:"key",get:function(){var e=this.store.key;return this.data?this.data[e]:null}},{key:"disabled",get:function(){return Br(this,"disabled")}},{key:"nextSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return e.childNodes[t+1]}return null}},{key:"previousSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return t>0?e.childNodes[t-1]:null}return null}}]),e}(),Wr="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var qr=function(){function e(t){var i=this;for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.currentNode=null,this.currentNodeKey=null,t)t.hasOwnProperty(n)&&(this[n]=t[n]);(this.nodesMap={},this.root=new Hr({data:this.data,store:this}),this.lazy&&this.load)?(0,this.load)(this.root,function(e){i.root.doCreateChildren(e),i._initDefaultCheckedNodes()}):this._initDefaultCheckedNodes()}return e.prototype.filter=function(e){var t=this.filterNodeMethod,i=this.lazy;!function n(s){var r=s.root?s.root.childNodes:s.childNodes;if(r.forEach(function(i){i.visible=t.call(i,e,i.data,i),n(i)}),!s.visible&&r.length){var a;a=!r.some(function(e){return e.visible}),s.root?s.root.visible=!1===a:s.visible=!1===a}e&&(!s.visible||s.isLeaf||i||s.expand())}(this)},e.prototype.setData=function(e){e!==this.root.data?(this.root.setData(e),this._initDefaultCheckedNodes()):this.root.updateChildren()},e.prototype.getNode=function(e){if(e instanceof Hr)return e;var t="object"!==(void 0===e?"undefined":Wr(e))?e:Lr(this.key,e);return this.nodesMap[t]||null},e.prototype.insertBefore=function(e,t){var i=this.getNode(t);i.parent.insertBefore({data:e},i)},e.prototype.insertAfter=function(e,t){var i=this.getNode(t);i.parent.insertAfter({data:e},i)},e.prototype.remove=function(e){var t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))},e.prototype.append=function(e,t){var i=t?this.getNode(t):this.root;i&&i.insertChild({data:e})},e.prototype._initDefaultCheckedNodes=function(){var e=this,t=this.defaultCheckedKeys||[],i=this.nodesMap;t.forEach(function(t){var n=i[t];n&&n.setChecked(!0,!e.checkStrictly)})},e.prototype._initDefaultCheckedNode=function(e){-1!==(this.defaultCheckedKeys||[]).indexOf(e.key)&&e.setChecked(!0,!this.checkStrictly)},e.prototype.setDefaultCheckedKey=function(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())},e.prototype.registerNode=function(e){this.key&&e&&e.data&&(void 0!==e.key&&(this.nodesMap[e.key]=e))},e.prototype.deregisterNode=function(e){var t=this;this.key&&e&&e.data&&(e.childNodes.forEach(function(e){t.deregisterNode(e)}),delete this.nodesMap[e.key])},e.prototype.getCheckedNodes=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=[];return function n(s){(s.root?s.root.childNodes:s.childNodes).forEach(function(s){(s.checked||t&&s.indeterminate)&&(!e||e&&s.isLeaf)&&i.push(s.data),n(s)})}(this),i},e.prototype.getCheckedKeys=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getCheckedNodes(t).map(function(t){return(t||{})[e.key]})},e.prototype.getHalfCheckedNodes=function(){var e=[];return function t(i){(i.root?i.root.childNodes:i.childNodes).forEach(function(i){i.indeterminate&&e.push(i.data),t(i)})}(this),e},e.prototype.getHalfCheckedKeys=function(){var e=this;return this.getHalfCheckedNodes().map(function(t){return(t||{})[e.key]})},e.prototype._getAllNodes=function(){var e=[],t=this.nodesMap;for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.prototype.updateChildren=function(e,t){var i=this.nodesMap[e];if(i){for(var n=i.childNodes,s=n.length-1;s>=0;s--){var r=n[s];this.remove(r.data)}for(var a=0,o=t.length;a1&&void 0!==arguments[1]&&arguments[1],i=arguments[2],n=this._getAllNodes().sort(function(e,t){return t.level-e.level}),s=Object.create(null),r=Object.keys(i);n.forEach(function(e){return e.setChecked(!1,!1)});for(var a=0,o=n.length;a-1){for(var u=l.parent;u&&u.level>0;)s[u.data[e]]=!0,u=u.parent;l.isLeaf||this.checkStrictly?l.setChecked(!0,!1):(l.setChecked(!0,!0),t&&function(){l.setChecked(!1,!1);!function e(t){t.childNodes.forEach(function(t){t.isLeaf||t.setChecked(!1,!1),e(t)})}(l)}())}else l.checked&&!s[c]&&l.setChecked(!1,!1)}},e.prototype.setCheckedNodes=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.key,n={};e.forEach(function(e){n[(e||{})[i]]=!0}),this._setCheckedKeys(i,t,n)},e.prototype.setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.defaultCheckedKeys=e;var i=this.key,n={};e.forEach(function(e){n[e]=!0}),this._setCheckedKeys(i,t,n)},e.prototype.setDefaultExpandedKeys=function(e){var t=this;e=e||[],this.defaultExpandedKeys=e,e.forEach(function(e){var i=t.getNode(e);i&&i.expand(null,t.autoExpandParent)})},e.prototype.setChecked=function(e,t,i){var n=this.getNode(e);n&&n.setChecked(!!t,i)},e.prototype.getCurrentNode=function(){return this.currentNode},e.prototype.setCurrentNode=function(e){var t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0},e.prototype.setUserCurrentNode=function(e){var t=e[this.key],i=this.nodesMap[t];this.setCurrentNode(i)},e.prototype.setCurrentNodeKey=function(e){if(null===e)return this.currentNode.isCurrent=!1,void(this.currentNode=null);var t=this.getNode(e);t&&this.setCurrentNode(t)},e}(),Kr=function(){var e=this,t=this,i=t.$createElement,n=t._self._c||i;return n("div",{directives:[{name:"show",rawName:"v-show",value:t.node.visible,expression:"node.visible"}],ref:"node",staticClass:"el-tree-node",class:{"is-expanded":t.expanded,"is-current":t.node.isCurrent,"is-hidden":!t.node.visible,"is-focusable":!t.node.disabled,"is-checked":!t.node.disabled&&t.node.checked},attrs:{role:"treeitem",tabindex:"-1","aria-expanded":t.expanded,"aria-disabled":t.node.disabled,"aria-checked":t.node.checked,draggable:t.tree.draggable},on:{click:function(e){return e.stopPropagation(),t.handleClick(e)},contextmenu:function(t){return e.handleContextMenu(t)},dragstart:function(e){return e.stopPropagation(),t.handleDragStart(e)},dragover:function(e){return e.stopPropagation(),t.handleDragOver(e)},dragend:function(e){return e.stopPropagation(),t.handleDragEnd(e)},drop:function(e){return e.stopPropagation(),t.handleDrop(e)}}},[n("div",{staticClass:"el-tree-node__content",style:{"padding-left":(t.node.level-1)*t.tree.indent+"px"}},[n("span",{class:[{"is-leaf":t.node.isLeaf,expanded:!t.node.isLeaf&&t.expanded},"el-tree-node__expand-icon",t.tree.iconClass?t.tree.iconClass:"el-icon-caret-right"],on:{click:function(e){return e.stopPropagation(),t.handleExpandIconClick(e)}}}),t.showCheckbox?n("el-checkbox",{attrs:{indeterminate:t.node.indeterminate,disabled:!!t.node.disabled},on:{change:t.handleCheckChange},nativeOn:{click:function(e){e.stopPropagation()}},model:{value:t.node.checked,callback:function(e){t.$set(t.node,"checked",e)},expression:"node.checked"}}):t._e(),t.node.loading?n("span",{staticClass:"el-tree-node__loading-icon el-icon-loading"}):t._e(),n("node-content",{attrs:{node:t.node}})],1),n("el-collapse-transition",[!t.renderAfterExpand||t.childNodeRendered?n("div",{directives:[{name:"show",rawName:"v-show",value:t.expanded,expression:"expanded"}],staticClass:"el-tree-node__children",attrs:{role:"group","aria-expanded":t.expanded}},t._l(t.node.childNodes,function(e){return n("el-tree-node",{key:t.getNodeKey(e),attrs:{"render-content":t.renderContent,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,node:e},on:{"node-expand":t.handleChildNodeExpand}})}),1):t._e()])],1)};Kr._withStripped=!0;var Yr=s({name:"ElTreeNode",componentName:"ElTreeNode",mixins:[k.a],props:{node:{default:function(){return{}}},props:{},renderContent:Function,renderAfterExpand:{type:Boolean,default:!0},showCheckbox:{type:Boolean,default:!1}},components:{ElCollapseTransition:ye.a,ElCheckbox:ri.a,NodeContent:{props:{node:{required:!0}},render:function(e){var t=this.$parent,i=t.tree,n=this.node,s=n.data,r=n.store;return t.renderContent?t.renderContent.call(t._renderProxy,e,{_self:i.$vnode.context,node:n,data:s,store:r}):i.$scopedSlots.default?i.$scopedSlots.default({node:n,data:s}):e("span",{class:"el-tree-node__label"},[n.label])}}},data:function(){return{tree:null,expanded:!1,childNodeRendered:!1,oldChecked:null,oldIndeterminate:null}},watch:{"node.indeterminate":function(e){this.handleSelectChange(this.node.checked,e)},"node.checked":function(e){this.handleSelectChange(e,this.node.indeterminate)},"node.expanded":function(e){var t=this;this.$nextTick(function(){return t.expanded=e}),e&&(this.childNodeRendered=!0)}},methods:{getNodeKey:function(e){return Lr(this.tree.nodeKey,e.data)},handleSelectChange:function(e,t){this.oldChecked!==e&&this.oldIndeterminate!==t&&this.tree.$emit("check-change",this.node.data,e,t),this.oldChecked=e,this.indeterminate=t},handleClick:function(){var e=this.tree.store;e.setCurrentNode(this.node),this.tree.$emit("current-change",e.currentNode?e.currentNode.data:null,e.currentNode),this.tree.currentNode=this,this.tree.expandOnClickNode&&this.handleExpandIconClick(),this.tree.checkOnClickNode&&!this.node.disabled&&this.handleCheckChange(null,{target:{checked:!this.node.checked}}),this.tree.$emit("node-click",this.node.data,this.node,this)},handleContextMenu:function(e){this.tree._events["node-contextmenu"]&&this.tree._events["node-contextmenu"].length>0&&(e.stopPropagation(),e.preventDefault()),this.tree.$emit("node-contextmenu",e,this.node.data,this.node,this)},handleExpandIconClick:function(){this.node.isLeaf||(this.expanded?(this.tree.$emit("node-collapse",this.node.data,this.node,this),this.node.collapse()):(this.node.expand(),this.$emit("node-expand",this.node.data,this.node,this)))},handleCheckChange:function(e,t){var i=this;this.node.setChecked(t.target.checked,!this.tree.checkStrictly),this.$nextTick(function(){var e=i.tree.store;i.tree.$emit("check",i.node.data,{checkedNodes:e.getCheckedNodes(),checkedKeys:e.getCheckedKeys(),halfCheckedNodes:e.getHalfCheckedNodes(),halfCheckedKeys:e.getHalfCheckedKeys()})})},handleChildNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.tree.$emit("node-expand",e,t,i)},handleDragStart:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-start",e,this)},handleDragOver:function(e){this.tree.draggable&&(this.tree.$emit("tree-node-drag-over",e,this),e.preventDefault())},handleDrop:function(e){e.preventDefault()},handleDragEnd:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-end",e,this)}},created:function(){var e=this,t=this.$parent;t.isTree?this.tree=t:this.tree=t.tree;var i=this.tree;i||console.warn("Can not find node's tree.");var n=(i.props||{}).children||"children";this.$watch("node.data."+n,function(){e.node.updateChildren()}),this.node.expanded&&(this.expanded=!0,this.childNodeRendered=!0),this.tree.accordion&&this.$on("tree-node-expand",function(t){e.node!==t&&e.node.collapse()})}},Kr,[],!1,null,null,null);Yr.options.__file="packages/tree/src/tree-node.vue";var Ur=Yr.exports,Gr=s({name:"ElTree",mixins:[k.a],components:{ElTreeNode:Ur},data:function(){return{store:null,root:null,currentNode:null,treeItems:null,checkboxItems:[],dragState:{showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0}}},props:{data:{type:Array},emptyText:{type:String,default:function(){return Object(Ft.t)("el.tree.emptyText")}},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{default:function(){return{children:"children",label:"label",disabled:"disabled"}}},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},iconClass:String},computed:{children:{set:function(e){this.data=e},get:function(){return this.data}},treeItemArray:function(){return Array.prototype.slice.call(this.treeItems)},isEmpty:function(){var e=this.root.childNodes;return!e||0===e.length||e.every(function(e){return!e.visible})}},watch:{defaultCheckedKeys:function(e){this.store.setDefaultCheckedKey(e)},defaultExpandedKeys:function(e){this.store.defaultExpandedKeys=e,this.store.setDefaultExpandedKeys(e)},data:function(e){this.store.setData(e)},checkboxItems:function(e){Array.prototype.forEach.call(e,function(e){e.setAttribute("tabindex",-1)})},checkStrictly:function(e){this.store.checkStrictly=e}},methods:{filter:function(e){if(!this.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");this.store.filter(e)},getNodeKey:function(e){return Lr(this.nodeKey,e.data)},getNodePath:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");var t=this.store.getNode(e);if(!t)return[];for(var i=[t.data],n=t.parent;n&&n!==this.root;)i.push(n.data),n=n.parent;return i.reverse()},getCheckedNodes:function(e,t){return this.store.getCheckedNodes(e,t)},getCheckedKeys:function(e){return this.store.getCheckedKeys(e)},getCurrentNode:function(){var e=this.store.getCurrentNode();return e?e.data:null},getCurrentKey:function(){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");var e=this.getCurrentNode();return e?e[this.nodeKey]:null},setCheckedNodes:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");this.store.setCheckedNodes(e,t)},setCheckedKeys:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");this.store.setCheckedKeys(e,t)},setChecked:function(e,t,i){this.store.setChecked(e,t,i)},getHalfCheckedNodes:function(){return this.store.getHalfCheckedNodes()},getHalfCheckedKeys:function(){return this.store.getHalfCheckedKeys()},setCurrentNode:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");this.store.setUserCurrentNode(e)},setCurrentKey:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");this.store.setCurrentNodeKey(e)},getNode:function(e){return this.store.getNode(e)},remove:function(e){this.store.remove(e)},append:function(e,t){this.store.append(e,t)},insertBefore:function(e,t){this.store.insertBefore(e,t)},insertAfter:function(e,t){this.store.insertAfter(e,t)},handleNodeExpand:function(e,t,i){this.broadcast("ElTreeNode","tree-node-expand",t),this.$emit("node-expand",e,t,i)},updateKeyChildren:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");this.store.updateChildren(e,t)},initTabIndex:function(){this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]");var e=this.$el.querySelectorAll(".is-checked[role=treeitem]");e.length?e[0].setAttribute("tabindex",0):this.treeItems[0]&&this.treeItems[0].setAttribute("tabindex",0)},handleKeydown:function(e){var t=e.target;if(-1!==t.className.indexOf("el-tree-node")){var i=e.keyCode;this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]");var n=this.treeItemArray.indexOf(t),s=void 0;[38,40].indexOf(i)>-1&&(e.preventDefault(),s=38===i?0!==n?n-1:0:n-1&&(e.preventDefault(),t.click());var r=t.querySelector('[type="checkbox"]');[13,32].indexOf(i)>-1&&r&&(e.preventDefault(),r.click())}}},created:function(){var e=this;this.isTree=!0,this.store=new qr({key:this.nodeKey,data:this.data,lazy:this.lazy,props:this.props,load:this.load,currentNodeKey:this.currentNodeKey,checkStrictly:this.checkStrictly,checkDescendants:this.checkDescendants,defaultCheckedKeys:this.defaultCheckedKeys,defaultExpandedKeys:this.defaultExpandedKeys,autoExpandParent:this.autoExpandParent,defaultExpandAll:this.defaultExpandAll,filterNodeMethod:this.filterNodeMethod}),this.root=this.store.root;var t=this.dragState;this.$on("tree-node-drag-start",function(i,n){if("function"==typeof e.allowDrag&&!e.allowDrag(n.node))return i.preventDefault(),!1;i.dataTransfer.effectAllowed="move";try{i.dataTransfer.setData("text/plain","")}catch(e){}t.draggingNode=n,e.$emit("node-drag-start",n.node,i)}),this.$on("tree-node-drag-over",function(i,n){var s=function(e,t){for(var i=e;i&&"BODY"!==i.tagName;){if(i.__vue__&&i.__vue__.$options.name===t)return i.__vue__;i=i.parentNode}return null}(i.target,"ElTreeNode"),r=t.dropNode;r&&r!==s&&Object(fe.removeClass)(r.$el,"is-drop-inner");var a=t.draggingNode;if(a&&s){var o=!0,l=!0,c=!0,u=!0;"function"==typeof e.allowDrop&&(o=e.allowDrop(a.node,s.node,"prev"),u=l=e.allowDrop(a.node,s.node,"inner"),c=e.allowDrop(a.node,s.node,"next")),i.dataTransfer.dropEffect=l?"move":"none",(o||l||c)&&r!==s&&(r&&e.$emit("node-drag-leave",a.node,r.node,i),e.$emit("node-drag-enter",a.node,s.node,i)),(o||l||c)&&(t.dropNode=s),s.node.nextSibling===a.node&&(c=!1),s.node.previousSibling===a.node&&(o=!1),s.node.contains(a.node,!1)&&(l=!1),(a.node===s.node||a.node.contains(s.node))&&(o=!1,l=!1,c=!1);var h=s.$el.getBoundingClientRect(),d=e.$el.getBoundingClientRect(),p=void 0,f=o?l?.25:c?.45:1:-1,m=c?l?.75:o?.55:0:1,v=-9999,g=i.clientY-h.top;p=gh.height*m?"after":l?"inner":"none";var b=s.$el.querySelector(".el-tree-node__expand-icon").getBoundingClientRect(),y=e.$refs.dropIndicator;"before"===p?v=b.top-d.top:"after"===p&&(v=b.bottom-d.top),y.style.top=v+"px",y.style.left=b.right-d.left+"px","inner"===p?Object(fe.addClass)(s.$el,"is-drop-inner"):Object(fe.removeClass)(s.$el,"is-drop-inner"),t.showDropIndicator="before"===p||"after"===p,t.allowDrop=t.showDropIndicator||u,t.dropType=p,e.$emit("node-drag-over",a.node,s.node,i)}}),this.$on("tree-node-drag-end",function(i){var n=t.draggingNode,s=t.dropType,r=t.dropNode;if(i.preventDefault(),i.dataTransfer.dropEffect="move",n&&r){var a={data:n.node.data};"none"!==s&&n.node.remove(),"before"===s?r.node.parent.insertBefore(a,r.node):"after"===s?r.node.parent.insertAfter(a,r.node):"inner"===s&&r.node.insertChild(a),"none"!==s&&e.store.registerNode(a),Object(fe.removeClass)(r.$el,"is-drop-inner"),e.$emit("node-drag-end",n.node,r.node,s,i),"none"!==s&&e.$emit("node-drop",n.node,r.node,s,i)}n&&!r&&e.$emit("node-drag-end",n.node,null,s,i),t.showDropIndicator=!1,t.draggingNode=null,t.dropNode=null,t.allowDrop=!0})},mounted:function(){this.initTabIndex(),this.$el.addEventListener("keydown",this.handleKeydown)},updated:function(){this.treeItems=this.$el.querySelectorAll("[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]")}},Nr,[],!1,null,null,null);Gr.options.__file="packages/tree/src/tree.vue";var Xr=Gr.exports;Xr.install=function(e){e.component(Xr.name,Xr)};var Qr=Xr,Jr=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-alert-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-alert",class:[e.typeClass,e.center?"is-center":"","is-"+e.effect],attrs:{role:"alert"}},[e.showIcon?i("i",{staticClass:"el-alert__icon",class:[e.iconClass,e.isBigIcon]}):e._e(),i("div",{staticClass:"el-alert__content"},[e.title||e.$slots.title?i("span",{staticClass:"el-alert__title",class:[e.isBoldTitle]},[e._t("title",[e._v(e._s(e.title))])],2):e._e(),e.$slots.default&&!e.description?i("p",{staticClass:"el-alert__description"},[e._t("default")],2):e._e(),e.description&&!e.$slots.default?i("p",{staticClass:"el-alert__description"},[e._v(e._s(e.description))]):e._e(),i("i",{directives:[{name:"show",rawName:"v-show",value:e.closable,expression:"closable"}],staticClass:"el-alert__closebtn",class:{"is-customed":""!==e.closeText,"el-icon-close":""===e.closeText},on:{click:function(t){e.close()}}},[e._v(e._s(e.closeText))])])])])};Jr._withStripped=!0;var Zr={success:"el-icon-success",warning:"el-icon-warning",error:"el-icon-error"},ea=s({name:"ElAlert",props:{title:{type:String,default:""},description:{type:String,default:""},type:{type:String,default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,default:"light",validator:function(e){return-1!==["light","dark"].indexOf(e)}}},data:function(){return{visible:!0}},methods:{close:function(){this.visible=!1,this.$emit("close")}},computed:{typeClass:function(){return"el-alert--"+this.type},iconClass:function(){return Zr[this.type]||"el-icon-info"},isBigIcon:function(){return this.description||this.$slots.default?"is-big":""},isBoldTitle:function(){return this.description||this.$slots.default?"is-bold":""}}},Jr,[],!1,null,null,null);ea.options.__file="packages/alert/src/main.vue";var ta=ea.exports;ta.install=function(e){e.component(ta.name,ta)};var ia=ta,na=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-notification-fade"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-notification",e.customClass,e.horizontalClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:function(t){e.clearTimer()},mouseleave:function(t){e.startTimer()},click:e.click}},[e.type||e.iconClass?i("i",{staticClass:"el-notification__icon",class:[e.typeClass,e.iconClass]}):e._e(),i("div",{staticClass:"el-notification__group",class:{"is-with-icon":e.typeClass||e.iconClass}},[i("h2",{staticClass:"el-notification__title",domProps:{textContent:e._s(e.title)}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.message,expression:"message"}],staticClass:"el-notification__content"},[e._t("default",[e.dangerouslyUseHTMLString?i("p",{domProps:{innerHTML:e._s(e.message)}}):i("p",[e._v(e._s(e.message))])])],2),e.showClose?i("div",{staticClass:"el-notification__closeBtn el-icon-close",on:{click:function(t){return t.stopPropagation(),e.close(t)}}}):e._e()])])])};na._withStripped=!0;var sa={success:"success",info:"info",warning:"warning",error:"error"},ra=s({data:function(){return{visible:!1,title:"",message:"",duration:4500,type:"",showClose:!0,customClass:"",iconClass:"",onClose:null,onClick:null,closed:!1,verticalOffset:0,timer:null,dangerouslyUseHTMLString:!1,position:"top-right"}},computed:{typeClass:function(){return this.type&&sa[this.type]?"el-icon-"+sa[this.type]:""},horizontalClass:function(){return this.position.indexOf("right")>-1?"right":"left"},verticalProperty:function(){return/^top-/.test(this.position)?"top":"bottom"},positionStyle:function(){var e;return(e={})[this.verticalProperty]=this.verticalOffset+"px",e}},watch:{closed:function(e){e&&(this.visible=!1,this.$el.addEventListener("transitionend",this.destroyElement))}},methods:{destroyElement:function(){this.$el.removeEventListener("transitionend",this.destroyElement),this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},click:function(){"function"==typeof this.onClick&&this.onClick()},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose()},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){46===e.keyCode||8===e.keyCode?this.clearTimer():27===e.keyCode?this.closed||this.close():this.startTimer()}},mounted:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration)),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},na,[],!1,null,null,null);ra.options.__file="packages/notification/src/main.vue";var aa=ra.exports,oa=di.a.extend(aa),la=void 0,ca=[],ua=1,ha=function e(t){if(!di.a.prototype.$isServer){var i=(t=t||{}).onClose,n="notification_"+ua++,s=t.position||"top-right";t.onClose=function(){e.close(n,i)},la=new oa({data:t}),Object(Rs.isVNode)(t.message)&&(la.$slots.default=[t.message],t.message="REPLACED_BY_VNODE"),la.id=n,la.$mount(),document.body.appendChild(la.$el),la.visible=!0,la.dom=la.$el,la.dom.style.zIndex=y.PopupManager.nextZIndex();var r=t.offset||0;return ca.filter(function(e){return e.position===s}).forEach(function(e){r+=e.$el.offsetHeight+16}),r+=16,la.verticalOffset=r,ca.push(la),la}};["success","warning","info","error"].forEach(function(e){ha[e]=function(t){return("string"==typeof t||Object(Rs.isVNode)(t))&&(t={message:t}),t.type=e,ha(t)}}),ha.close=function(e,t){var i=-1,n=ca.length,s=ca.filter(function(t,n){return t.id===e&&(i=n,!0)})[0];if(s&&("function"==typeof t&&t(s),ca.splice(i,1),!(n<=1)))for(var r=s.position,a=s.dom.offsetHeight,o=i;o=0;e--)ca[e].close()};var da=ha,pa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-slider",class:{"is-vertical":e.vertical,"el-slider--with-input":e.showInput},attrs:{role:"slider","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-orientation":e.vertical?"vertical":"horizontal","aria-disabled":e.sliderDisabled}},[e.showInput&&!e.range?i("el-input-number",{ref:"input",staticClass:"el-slider__input",attrs:{step:e.step,disabled:e.sliderDisabled,controls:e.showInputControls,min:e.min,max:e.max,debounce:e.debounce,size:e.inputSize},on:{change:e.emitChange},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}):e._e(),i("div",{ref:"slider",staticClass:"el-slider__runway",class:{"show-input":e.showInput,disabled:e.sliderDisabled},style:e.runwayStyle,on:{click:e.onSliderClick}},[i("div",{staticClass:"el-slider__bar",style:e.barStyle}),i("slider-button",{ref:"button1",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}),e.range?i("slider-button",{ref:"button2",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.secondValue,callback:function(t){e.secondValue=t},expression:"secondValue"}}):e._e(),e._l(e.stops,function(t,n){return e.showStops?i("div",{key:n,staticClass:"el-slider__stop",style:e.getStopStyle(t)}):e._e()}),e.markList.length>0?[i("div",e._l(e.markList,function(t,n){return i("div",{key:n,staticClass:"el-slider__stop el-slider__marks-stop",style:e.getStopStyle(t.position)})}),0),i("div",{staticClass:"el-slider__marks"},e._l(e.markList,function(t,n){return i("slider-marker",{key:n,style:e.getStopStyle(t.position),attrs:{mark:t.mark}})}),1)]:e._e()],2)],1)};pa._withStripped=!0;var fa=i(41),ma=i.n(fa),va=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{ref:"button",staticClass:"el-slider__button-wrapper",class:{hover:e.hovering,dragging:e.dragging},style:e.wrapperStyle,attrs:{tabindex:"0"},on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave,mousedown:e.onButtonDown,touchstart:e.onButtonDown,focus:e.handleMouseEnter,blur:e.handleMouseLeave,keydown:[function(t){return"button"in t||!e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])?"button"in t&&0!==t.button?null:e.onLeftKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])?"button"in t&&2!==t.button?null:e.onRightKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?(t.preventDefault(),e.onLeftKeyDown(t)):null},function(t){return"button"in t||!e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?(t.preventDefault(),e.onRightKeyDown(t)):null}]}},[i("el-tooltip",{ref:"tooltip",attrs:{placement:"top","popper-class":e.tooltipClass,disabled:!e.showTooltip}},[i("span",{attrs:{slot:"content"},slot:"content"},[e._v(e._s(e.formatValue))]),i("div",{staticClass:"el-slider__button",class:{hover:e.hovering,dragging:e.dragging}})])],1)};va._withStripped=!0;var ga=s({name:"ElSliderButton",components:{ElTooltip:$e.a},props:{value:{type:Number,default:0},vertical:{type:Boolean,default:!1},tooltipClass:String},data:function(){return{hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:null,oldValue:this.value}},computed:{disabled:function(){return this.$parent.sliderDisabled},max:function(){return this.$parent.max},min:function(){return this.$parent.min},step:function(){return this.$parent.step},showTooltip:function(){return this.$parent.showTooltip},precision:function(){return this.$parent.precision},currentPosition:function(){return(this.value-this.min)/(this.max-this.min)*100+"%"},enableFormat:function(){return this.$parent.formatTooltip instanceof Function},formatValue:function(){return this.enableFormat&&this.$parent.formatTooltip(this.value)||this.value},wrapperStyle:function(){return this.vertical?{bottom:this.currentPosition}:{left:this.currentPosition}}},watch:{dragging:function(e){this.$parent.dragging=e}},methods:{displayTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!0)},hideTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!1)},handleMouseEnter:function(){this.hovering=!0,this.displayTooltip()},handleMouseLeave:function(){this.hovering=!1,this.hideTooltip()},onButtonDown:function(e){this.disabled||(e.preventDefault(),this.onDragStart(e),window.addEventListener("mousemove",this.onDragging),window.addEventListener("touchmove",this.onDragging),window.addEventListener("mouseup",this.onDragEnd),window.addEventListener("touchend",this.onDragEnd),window.addEventListener("contextmenu",this.onDragEnd))},onLeftKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)-this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onRightKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)+this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onDragStart:function(e){this.dragging=!0,this.isClick=!0,"touchstart"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?this.startY=e.clientY:this.startX=e.clientX,this.startPosition=parseFloat(this.currentPosition),this.newPosition=this.startPosition},onDragging:function(e){if(this.dragging){this.isClick=!1,this.displayTooltip(),this.$parent.resetSize();var t=0;"touchmove"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?(this.currentY=e.clientY,t=(this.startY-this.currentY)/this.$parent.sliderSize*100):(this.currentX=e.clientX,t=(this.currentX-this.startX)/this.$parent.sliderSize*100),this.newPosition=this.startPosition+t,this.setPosition(this.newPosition)}},onDragEnd:function(){var e=this;this.dragging&&(setTimeout(function(){e.dragging=!1,e.hideTooltip(),e.isClick||(e.setPosition(e.newPosition),e.$parent.emitChange())},0),window.removeEventListener("mousemove",this.onDragging),window.removeEventListener("touchmove",this.onDragging),window.removeEventListener("mouseup",this.onDragEnd),window.removeEventListener("touchend",this.onDragEnd),window.removeEventListener("contextmenu",this.onDragEnd))},setPosition:function(e){var t=this;if(null!==e&&!isNaN(e)){e<0?e=0:e>100&&(e=100);var i=100/((this.max-this.min)/this.step),n=Math.round(e/i)*i*(this.max-this.min)*.01+this.min;n=parseFloat(n.toFixed(this.precision)),this.$emit("input",n),this.$nextTick(function(){t.displayTooltip(),t.$refs.tooltip&&t.$refs.tooltip.updatePopper()}),this.dragging||this.value===this.oldValue||(this.oldValue=this.value)}}}},va,[],!1,null,null,null);ga.options.__file="packages/slider/src/button.vue";var ba=ga.exports,ya={name:"ElMarker",props:{mark:{type:[String,Object]}},render:function(){var e=arguments[0],t="string"==typeof this.mark?this.mark:this.mark.label;return e("div",{class:"el-slider__marks-text",style:this.mark.style||{}},[t])}},xa=s({name:"ElSlider",mixins:[k.a],inject:{elForm:{default:""}},props:{min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},value:{type:[Number,Array],default:0},showInput:{type:Boolean,default:!1},showInputControls:{type:Boolean,default:!0},inputSize:{type:String,default:"small"},showStops:{type:Boolean,default:!1},showTooltip:{type:Boolean,default:!0},formatTooltip:Function,disabled:{type:Boolean,default:!1},range:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},height:{type:String},debounce:{type:Number,default:300},label:{type:String},tooltipClass:String,marks:Object},components:{ElInputNumber:ma.a,SliderButton:ba,SliderMarker:ya},data:function(){return{firstValue:null,secondValue:null,oldValue:null,dragging:!1,sliderSize:1}},watch:{value:function(e,t){this.dragging||Array.isArray(e)&&Array.isArray(t)&&e.every(function(e,i){return e===t[i]})||this.setValues()},dragging:function(e){e||this.setValues()},firstValue:function(e){this.range?this.$emit("input",[this.minValue,this.maxValue]):this.$emit("input",e)},secondValue:function(){this.range&&this.$emit("input",[this.minValue,this.maxValue])},min:function(){this.setValues()},max:function(){this.setValues()}},methods:{valueChanged:function(){var e=this;return this.range?![this.minValue,this.maxValue].every(function(t,i){return t===e.oldValue[i]}):this.value!==this.oldValue},setValues:function(){if(this.min>this.max)console.error("[Element Error][Slider]min should not be greater than max.");else{var e=this.value;this.range&&Array.isArray(e)?e[1]this.max?this.$emit("input",[this.max,this.max]):e[0]this.max?this.$emit("input",[e[0],this.max]):(this.firstValue=e[0],this.secondValue=e[1],this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",[this.minValue,this.maxValue]),this.oldValue=e.slice())):this.range||"number"!=typeof e||isNaN(e)||(ethis.max?this.$emit("input",this.max):(this.firstValue=e,this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",e),this.oldValue=e)))}},setPosition:function(e){var t=this.min+e*(this.max-this.min)/100;if(this.range){var i=void 0;i=Math.abs(this.minValue-t)this.secondValue?"button1":"button2",this.$refs[i].setPosition(e)}else this.$refs.button1.setPosition(e)},onSliderClick:function(e){if(!this.sliderDisabled&&!this.dragging){if(this.resetSize(),this.vertical){var t=this.$refs.slider.getBoundingClientRect().bottom;this.setPosition((t-e.clientY)/this.sliderSize*100)}else{var i=this.$refs.slider.getBoundingClientRect().left;this.setPosition((e.clientX-i)/this.sliderSize*100)}this.emitChange()}},resetSize:function(){this.$refs.slider&&(this.sliderSize=this.$refs.slider["client"+(this.vertical?"Height":"Width")])},emitChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.range?[e.minValue,e.maxValue]:e.value)})},getStopStyle:function(e){return this.vertical?{bottom:e+"%"}:{left:e+"%"}}},computed:{stops:function(){var e=this;if(!this.showStops||this.min>this.max)return[];if(0===this.step)return[];for(var t=(this.max-this.min)/this.step,i=100*this.step/(this.max-this.min),n=[],s=1;s100*(e.maxValue-e.min)/(e.max-e.min)}):n.filter(function(t){return t>100*(e.firstValue-e.min)/(e.max-e.min)})},markList:function(){var e=this;return this.marks?Object.keys(this.marks).map(parseFloat).sort(function(e,t){return e-t}).filter(function(t){return t<=e.max&&t>=e.min}).map(function(t){return{point:t,position:100*(t-e.min)/(e.max-e.min),mark:e.marks[t]}}):[]},minValue:function(){return Math.min(this.firstValue,this.secondValue)},maxValue:function(){return Math.max(this.firstValue,this.secondValue)},barSize:function(){return this.range?100*(this.maxValue-this.minValue)/(this.max-this.min)+"%":100*(this.firstValue-this.min)/(this.max-this.min)+"%"},barStart:function(){return this.range?100*(this.minValue-this.min)/(this.max-this.min)+"%":"0%"},precision:function(){var e=[this.min,this.max,this.step].map(function(e){var t=(""+e).split(".")[1];return t?t.length:0});return Math.max.apply(null,e)},runwayStyle:function(){return this.vertical?{height:this.height}:{}},barStyle:function(){return this.vertical?{height:this.barSize,bottom:this.barStart}:{width:this.barSize,left:this.barStart}},sliderDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},mounted:function(){var e=void 0;this.range?(Array.isArray(this.value)?(this.firstValue=Math.max(this.min,this.value[0]),this.secondValue=Math.min(this.max,this.value[1])):(this.firstValue=this.min,this.secondValue=this.max),this.oldValue=[this.firstValue,this.secondValue],e=this.firstValue+"-"+this.secondValue):("number"!=typeof this.value||isNaN(this.value)?this.firstValue=this.min:this.firstValue=Math.min(this.max,Math.max(this.min,this.value)),this.oldValue=this.firstValue,e=this.firstValue),this.$el.setAttribute("aria-valuetext",e),this.$el.setAttribute("aria-label",this.label?this.label:"slider between "+this.min+" and "+this.max),this.resetSize(),window.addEventListener("resize",this.resetSize)},beforeDestroy:function(){window.removeEventListener("resize",this.resetSize)}},pa,[],!1,null,null,null);xa.options.__file="packages/slider/src/main.vue";var _a=xa.exports;_a.install=function(e){e.component(_a.name,_a)};var Ca=_a,wa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-loading-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-loading-mask",class:[e.customClass,{"is-fullscreen":e.fullscreen}],style:{backgroundColor:e.background||""}},[i("div",{staticClass:"el-loading-spinner"},[e.spinner?i("i",{class:e.spinner}):i("svg",{staticClass:"circular",attrs:{viewBox:"25 25 50 50"}},[i("circle",{staticClass:"path",attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})]),e.text?i("p",{staticClass:"el-loading-text"},[e._v(e._s(e.text))]):e._e()])])])};wa._withStripped=!0;var ka=s({data:function(){return{text:null,spinner:null,background:null,fullscreen:!0,visible:!1,customClass:""}},methods:{handleAfterLeave:function(){this.$emit("after-leave")},setText:function(e){this.text=e}}},wa,[],!1,null,null,null);ka.options.__file="packages/loading/src/loading.vue";var Sa=ka.exports,Da=i(31),$a=i.n(Da),Oa=di.a.extend(Sa),Ea={install:function(e){if(!e.prototype.$isServer){var t=function(t,n){n.value?e.nextTick(function(){n.modifiers.fullscreen?(t.originalPosition=Object(fe.getStyle)(document.body,"position"),t.originalOverflow=Object(fe.getStyle)(document.body,"overflow"),t.maskStyle.zIndex=y.PopupManager.nextZIndex(),Object(fe.addClass)(t.mask,"is-fullscreen"),i(document.body,t,n)):(Object(fe.removeClass)(t.mask,"is-fullscreen"),n.modifiers.body?(t.originalPosition=Object(fe.getStyle)(document.body,"position"),["top","left"].forEach(function(e){var i="top"===e?"scrollTop":"scrollLeft";t.maskStyle[e]=t.getBoundingClientRect()[e]+document.body[i]+document.documentElement[i]-parseInt(Object(fe.getStyle)(document.body,"margin-"+e),10)+"px"}),["height","width"].forEach(function(e){t.maskStyle[e]=t.getBoundingClientRect()[e]+"px"}),i(document.body,t,n)):(t.originalPosition=Object(fe.getStyle)(t,"position"),i(t,t,n)))}):($a()(t.instance,function(e){if(t.instance.hiding){t.domVisible=!1;var i=n.modifiers.fullscreen||n.modifiers.body?document.body:t;Object(fe.removeClass)(i,"el-loading-parent--relative"),Object(fe.removeClass)(i,"el-loading-parent--hidden"),t.instance.hiding=!1}},300,!0),t.instance.visible=!1,t.instance.hiding=!0)},i=function(t,i,n){i.domVisible||"none"===Object(fe.getStyle)(i,"display")||"hidden"===Object(fe.getStyle)(i,"visibility")?i.domVisible&&!0===i.instance.hiding&&(i.instance.visible=!0,i.instance.hiding=!1):(Object.keys(i.maskStyle).forEach(function(e){i.mask.style[e]=i.maskStyle[e]}),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&Object(fe.addClass)(t,"el-loading-parent--relative"),n.modifiers.fullscreen&&n.modifiers.lock&&Object(fe.addClass)(t,"el-loading-parent--hidden"),i.domVisible=!0,t.appendChild(i.mask),e.nextTick(function(){i.instance.hiding?i.instance.$emit("after-leave"):i.instance.visible=!0}),i.domInserted=!0)};e.directive("loading",{bind:function(e,i,n){var s=e.getAttribute("element-loading-text"),r=e.getAttribute("element-loading-spinner"),a=e.getAttribute("element-loading-background"),o=e.getAttribute("element-loading-custom-class"),l=n.context,c=new Oa({el:document.createElement("div"),data:{text:l&&l[s]||s,spinner:l&&l[r]||r,background:l&&l[a]||a,customClass:l&&l[o]||o,fullscreen:!!i.modifiers.fullscreen}});e.instance=c,e.mask=c.$el,e.maskStyle={},i.value&&t(e,i)},update:function(e,i){e.instance.setText(e.getAttribute("element-loading-text")),i.oldValue!==i.value&&t(e,i)},unbind:function(e,i){e.domInserted&&(e.mask&&e.mask.parentNode&&e.mask.parentNode.removeChild(e.mask),t(e,{value:!1,modifiers:i.modifiers})),e.instance&&e.instance.$destroy()}})}}},Ta=Ea,Ma=di.a.extend(Sa),Pa={text:null,fullscreen:!0,body:!1,lock:!1,customClass:""},Ia=void 0;Ma.prototype.originalPosition="",Ma.prototype.originalOverflow="",Ma.prototype.close=function(){var e=this;this.fullscreen&&(Ia=void 0),$a()(this,function(t){var i=e.fullscreen||e.body?document.body:e.target;Object(fe.removeClass)(i,"el-loading-parent--relative"),Object(fe.removeClass)(i,"el-loading-parent--hidden"),e.$el&&e.$el.parentNode&&e.$el.parentNode.removeChild(e.$el),e.$destroy()},300),this.visible=!1};var Na=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!di.a.prototype.$isServer){if("string"==typeof(e=Be()({},Pa,e)).target&&(e.target=document.querySelector(e.target)),e.target=e.target||document.body,e.target!==document.body?e.fullscreen=!1:e.body=!0,e.fullscreen&&Ia)return Ia;var t=e.body?document.body:e.target,i=new Ma({el:document.createElement("div"),data:e});return function(e,t,i){var n={};e.fullscreen?(i.originalPosition=Object(fe.getStyle)(document.body,"position"),i.originalOverflow=Object(fe.getStyle)(document.body,"overflow"),n.zIndex=y.PopupManager.nextZIndex()):e.body?(i.originalPosition=Object(fe.getStyle)(document.body,"position"),["top","left"].forEach(function(t){var i="top"===t?"scrollTop":"scrollLeft";n[t]=e.target.getBoundingClientRect()[t]+document.body[i]+document.documentElement[i]+"px"}),["height","width"].forEach(function(t){n[t]=e.target.getBoundingClientRect()[t]+"px"})):i.originalPosition=Object(fe.getStyle)(t,"position"),Object.keys(n).forEach(function(e){i.$el.style[e]=n[e]})}(e,t,i),"absolute"!==i.originalPosition&&"fixed"!==i.originalPosition&&Object(fe.addClass)(t,"el-loading-parent--relative"),e.fullscreen&&e.lock&&Object(fe.addClass)(t,"el-loading-parent--hidden"),t.appendChild(i.$el),di.a.nextTick(function(){i.visible=!0}),e.fullscreen&&(Ia=i),i}},ja={install:function(e){e.use(Ta),e.prototype.$loading=Na},directive:Ta,service:Na},Fa=function(){var e=this.$createElement;return(this._self._c||e)("i",{class:"el-icon-"+this.name})};Fa._withStripped=!0;var La=s({name:"ElIcon",props:{name:String}},Fa,[],!1,null,null,null);La.options.__file="packages/icon/src/icon.vue";var Aa=La.exports;Aa.install=function(e){e.component(Aa.name,Aa)};var Va=Aa,za={name:"ElRow",componentName:"ElRow",props:{tag:{type:String,default:"div"},gutter:Number,type:String,justify:{type:String,default:"start"},align:{type:String,default:"top"}},computed:{style:function(){var e={};return this.gutter&&(e.marginLeft="-"+this.gutter/2+"px",e.marginRight=e.marginLeft),e}},render:function(e){return e(this.tag,{class:["el-row","start"!==this.justify?"is-justify-"+this.justify:"","top"!==this.align?"is-align-"+this.align:"",{"el-row--flex":"flex"===this.type}],style:this.style},this.$slots.default)},install:function(e){e.component(za.name,za)}},Ba=za,Ra="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ha={name:"ElCol",props:{span:{type:Number,default:24},tag:{type:String,default:"div"},offset:Number,pull:Number,push:Number,xs:[Number,Object],sm:[Number,Object],md:[Number,Object],lg:[Number,Object],xl:[Number,Object]},computed:{gutter:function(){for(var e=this.$parent;e&&"ElRow"!==e.$options.componentName;)e=e.$parent;return e?e.gutter:0}},render:function(e){var t=this,i=[],n={};return this.gutter&&(n.paddingLeft=this.gutter/2+"px",n.paddingRight=n.paddingLeft),["span","offset","pull","push"].forEach(function(e){(t[e]||0===t[e])&&i.push("span"!==e?"el-col-"+e+"-"+t[e]:"el-col-"+t[e])}),["xs","sm","md","lg","xl"].forEach(function(e){if("number"==typeof t[e])i.push("el-col-"+e+"-"+t[e]);else if("object"===Ra(t[e])){var n=t[e];Object.keys(n).forEach(function(t){i.push("span"!==t?"el-col-"+e+"-"+t+"-"+n[t]:"el-col-"+e+"-"+n[t])})}}),e(this.tag,{class:["el-col",i],style:n},this.$slots.default)},install:function(e){e.component(Ha.name,Ha)}},Wa=Ha,qa=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition-group",{class:["el-upload-list","el-upload-list--"+e.listType,{"is-disabled":e.disabled}],attrs:{tag:"ul",name:"el-list"}},e._l(e.files,function(t){return i("li",{key:t.uid,class:["el-upload-list__item","is-"+t.status,e.focusing?"focusing":""],attrs:{tabindex:"0"},on:{keydown:function(i){if(!("button"in i)&&e._k(i.keyCode,"delete",[8,46],i.key,["Backspace","Delete","Del"]))return null;!e.disabled&&e.$emit("remove",t)},focus:function(t){e.focusing=!0},blur:function(t){e.focusing=!1},click:function(t){e.focusing=!1}}},[e._t("default",["uploading"!==t.status&&["picture-card","picture"].indexOf(e.listType)>-1?i("img",{staticClass:"el-upload-list__item-thumbnail",attrs:{src:t.url,alt:""}}):e._e(),i("a",{staticClass:"el-upload-list__item-name",on:{click:function(i){e.handleClick(t)}}},[i("i",{staticClass:"el-icon-document"}),e._v(e._s(t.name)+"\n ")]),i("label",{staticClass:"el-upload-list__item-status-label"},[i("i",{class:{"el-icon-upload-success":!0,"el-icon-circle-check":"text"===e.listType,"el-icon-check":["picture-card","picture"].indexOf(e.listType)>-1}})]),e.disabled?e._e():i("i",{staticClass:"el-icon-close",on:{click:function(i){e.$emit("remove",t)}}}),e.disabled?e._e():i("i",{staticClass:"el-icon-close-tip"},[e._v(e._s(e.t("el.upload.deleteTip")))]),"uploading"===t.status?i("el-progress",{attrs:{type:"picture-card"===e.listType?"circle":"line","stroke-width":"picture-card"===e.listType?6:2,percentage:e.parsePercentage(t.percentage)}}):e._e(),"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-actions"},[e.handlePreview&&"picture-card"===e.listType?i("span",{staticClass:"el-upload-list__item-preview",on:{click:function(i){e.handlePreview(t)}}},[i("i",{staticClass:"el-icon-zoom-in"})]):e._e(),e.disabled?e._e():i("span",{staticClass:"el-upload-list__item-delete",on:{click:function(i){e.$emit("remove",t)}}},[i("i",{staticClass:"el-icon-delete"})])]):e._e()],{file:t})],2)}),0)};qa._withStripped=!0;var Ka=i(32),Ya=i.n(Ka),Ua=s({name:"ElUploadList",mixins:[f.a],data:function(){return{focusing:!1}},components:{ElProgress:Ya.a},props:{files:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},handlePreview:Function,listType:String},methods:{parsePercentage:function(e){return parseInt(e,10)},handleClick:function(e){this.handlePreview&&this.handlePreview(e)}}},qa,[],!1,null,null,null);Ua.options.__file="packages/upload/src/upload-list.vue";var Ga=Ua.exports,Xa=i(24),Qa=i.n(Xa);var Ja=function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{staticClass:"el-upload-dragger",class:{"is-dragover":e.dragover},on:{drop:function(t){return t.preventDefault(),e.onDrop(t)},dragover:function(t){return t.preventDefault(),e.onDragover(t)},dragleave:function(t){t.preventDefault(),e.dragover=!1}}},[e._t("default")],2)};Ja._withStripped=!0;var Za=s({name:"ElUploadDrag",props:{disabled:Boolean},inject:{uploader:{default:""}},data:function(){return{dragover:!1}},methods:{onDragover:function(){this.disabled||(this.dragover=!0)},onDrop:function(e){if(!this.disabled&&this.uploader){var t=this.uploader.accept;this.dragover=!1,t?this.$emit("file",[].slice.call(e.dataTransfer.files).filter(function(e){var i=e.type,n=e.name,s=n.indexOf(".")>-1?"."+n.split(".").pop():"",r=i.replace(/\/.*$/,"");return t.split(",").map(function(e){return e.trim()}).filter(function(e){return e}).some(function(e){return/\..+$/.test(e)?s===e:/\/\*$/.test(e)?r===e.replace(/\/\*$/,""):!!/^[^\/]+\/[^\/]+$/.test(e)&&i===e})})):this.$emit("file",e.dataTransfer.files)}}}},Ja,[],!1,null,null,null);Za.options.__file="packages/upload/src/upload-dragger.vue";var eo=s({inject:["uploader"],components:{UploadDragger:Za.exports},props:{type:String,action:{type:String,required:!0},name:{type:String,default:"file"},data:Object,headers:Object,withCredentials:Boolean,multiple:Boolean,accept:String,onStart:Function,onProgress:Function,onSuccess:Function,onError:Function,beforeUpload:Function,drag:Boolean,onPreview:{type:Function,default:function(){}},onRemove:{type:Function,default:function(){}},fileList:Array,autoUpload:Boolean,listType:String,httpRequest:{type:Function,default:function(e){if("undefined"!=typeof XMLHttpRequest){var t=new XMLHttpRequest,i=e.action;t.upload&&(t.upload.onprogress=function(t){t.total>0&&(t.percent=t.loaded/t.total*100),e.onProgress(t)});var n=new FormData;e.data&&Object.keys(e.data).forEach(function(t){n.append(t,e.data[t])}),n.append(e.filename,e.file,e.file.name),t.onerror=function(t){e.onError(t)},t.onload=function(){if(t.status<200||t.status>=300)return e.onError(function(e,t,i){var n=void 0;n=i.response?""+(i.response.error||i.response):i.responseText?""+i.responseText:"fail to post "+e+" "+i.status;var s=new Error(n);return s.status=i.status,s.method="post",s.url=e,s}(i,0,t));e.onSuccess(function(e){var t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(e){return t}}(t))},t.open("post",i,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);var s=e.headers||{};for(var r in s)s.hasOwnProperty(r)&&null!==s[r]&&t.setRequestHeader(r,s[r]);return t.send(n),t}}},disabled:Boolean,limit:Number,onExceed:Function},data:function(){return{mouseover:!1,reqs:{}}},methods:{isImage:function(e){return-1!==e.indexOf("image")},handleChange:function(e){var t=e.target.files;t&&this.uploadFiles(t)},uploadFiles:function(e){var t=this;if(this.limit&&this.fileList.length+e.length>this.limit)this.onExceed&&this.onExceed(e,this.fileList);else{var i=Array.prototype.slice.call(e);this.multiple||(i=i.slice(0,1)),0!==i.length&&i.forEach(function(e){t.onStart(e),t.autoUpload&&t.upload(e)})}},upload:function(e){var t=this;if(this.$refs.input.value=null,!this.beforeUpload)return this.post(e);var i=this.beforeUpload(e);i&&i.then?i.then(function(i){var n=Object.prototype.toString.call(i);if("[object File]"===n||"[object Blob]"===n){for(var s in"[object Blob]"===n&&(i=new File([i],e.name,{type:e.type})),e)e.hasOwnProperty(s)&&(i[s]=e[s]);t.post(i)}else t.post(e)},function(){t.onRemove(null,e)}):!1!==i?this.post(e):this.onRemove(null,e)},abort:function(e){var t=this.reqs;if(e){var i=e;e.uid&&(i=e.uid),t[i]&&t[i].abort()}else Object.keys(t).forEach(function(e){t[e]&&t[e].abort(),delete t[e]})},post:function(e){var t=this,i=e.uid,n={headers:this.headers,withCredentials:this.withCredentials,file:e,data:this.data,filename:this.name,action:this.action,onProgress:function(i){t.onProgress(i,e)},onSuccess:function(n){t.onSuccess(n,e),delete t.reqs[i]},onError:function(n){t.onError(n,e),delete t.reqs[i]}},s=this.httpRequest(n);this.reqs[i]=s,s&&s.then&&s.then(n.onSuccess,n.onError)},handleClick:function(){this.disabled||(this.$refs.input.value=null,this.$refs.input.click())},handleKeydown:function(e){e.target===e.currentTarget&&(13!==e.keyCode&&32!==e.keyCode||this.handleClick())}},render:function(e){var t=this.handleClick,i=this.drag,n=this.name,s=this.handleChange,r=this.multiple,a=this.accept,o=this.listType,l=this.uploadFiles,c=this.disabled,u={class:{"el-upload":!0},on:{click:t,keydown:this.handleKeydown}};return u.class["el-upload--"+o]=!0,e("div",Qa()([u,{attrs:{tabindex:"0"}}]),[i?e("upload-dragger",{attrs:{disabled:c},on:{file:l}},[this.$slots.default]):this.$slots.default,e("input",{class:"el-upload__input",attrs:{type:"file",name:n,multiple:r,accept:a},ref:"input",on:{change:s}})])}},void 0,void 0,!1,null,null,null);eo.options.__file="packages/upload/src/upload.vue";var to=eo.exports;function io(){}var no=s({name:"ElUpload",mixins:[C.a],components:{ElProgress:Ya.a,UploadList:Ga,Upload:to},provide:function(){return{uploader:this}},inject:{elForm:{default:""}},props:{action:{type:String,required:!0},headers:{type:Object,default:function(){return{}}},data:Object,multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,dragger:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:String,type:{type:String,default:"select"},beforeUpload:Function,beforeRemove:Function,onRemove:{type:Function,default:io},onChange:{type:Function,default:io},onPreview:{type:Function},onSuccess:{type:Function,default:io},onProgress:{type:Function,default:io},onError:{type:Function,default:io},fileList:{type:Array,default:function(){return[]}},autoUpload:{type:Boolean,default:!0},listType:{type:String,default:"text"},httpRequest:Function,disabled:Boolean,limit:Number,onExceed:{type:Function,default:io}},data:function(){return{uploadFiles:[],dragOver:!1,draging:!1,tempIndex:1}},computed:{uploadDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{listType:function(e){"picture-card"!==e&&"picture"!==e||(this.uploadFiles=this.uploadFiles.map(function(e){if(!e.url&&e.raw)try{e.url=URL.createObjectURL(e.raw)}catch(e){console.error("[Element Error][Upload]",e)}return e}))},fileList:{immediate:!0,handler:function(e){var t=this;this.uploadFiles=e.map(function(e){return e.uid=e.uid||Date.now()+t.tempIndex++,e.status=e.status||"success",e})}}},methods:{handleStart:function(e){e.uid=Date.now()+this.tempIndex++;var t={status:"ready",name:e.name,size:e.size,percentage:0,uid:e.uid,raw:e};if("picture-card"===this.listType||"picture"===this.listType)try{t.url=URL.createObjectURL(e)}catch(e){return void console.error("[Element Error][Upload]",e)}this.uploadFiles.push(t),this.onChange(t,this.uploadFiles)},handleProgress:function(e,t){var i=this.getFile(t);this.onProgress(e,i,this.uploadFiles),i.status="uploading",i.percentage=e.percent||0},handleSuccess:function(e,t){var i=this.getFile(t);i&&(i.status="success",i.response=e,this.onSuccess(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles))},handleError:function(e,t){var i=this.getFile(t),n=this.uploadFiles;i.status="fail",n.splice(n.indexOf(i),1),this.onError(e,i,this.uploadFiles),this.onChange(i,this.uploadFiles)},handleRemove:function(e,t){var i=this;t&&(e=this.getFile(t));var n=function(){i.abort(e);var t=i.uploadFiles;t.splice(t.indexOf(e),1),i.onRemove(e,t)};if(this.beforeRemove){if("function"==typeof this.beforeRemove){var s=this.beforeRemove(e,this.uploadFiles);s&&s.then?s.then(function(){n()},io):!1!==s&&n()}}else n()},getFile:function(e){var t=void 0;return this.uploadFiles.every(function(i){return!(t=e.uid===i.uid?i:null)}),t},abort:function(e){this.$refs["upload-inner"].abort(e)},clearFiles:function(){this.uploadFiles=[]},submit:function(){var e=this;this.uploadFiles.filter(function(e){return"ready"===e.status}).forEach(function(t){e.$refs["upload-inner"].upload(t.raw)})},getMigratingConfig:function(){return{props:{"default-file-list":"default-file-list is renamed to file-list.","show-upload-list":"show-upload-list is renamed to show-file-list.","thumbnail-mode":"thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan"}}}},beforeDestroy:function(){this.uploadFiles.forEach(function(e){e.url&&0===e.url.indexOf("blob:")&&URL.revokeObjectURL(e.url)})},render:function(e){var t=this,i=void 0;this.showFileList&&(i=e(Ga,{attrs:{disabled:this.uploadDisabled,listType:this.listType,files:this.uploadFiles,handlePreview:this.onPreview},on:{remove:this.handleRemove}},[function(e){if(t.$scopedSlots.file)return t.$scopedSlots.file({file:e.file})}]));var n=e("upload",{props:{type:this.type,drag:this.drag,action:this.action,multiple:this.multiple,"before-upload":this.beforeUpload,"with-credentials":this.withCredentials,headers:this.headers,name:this.name,data:this.data,accept:this.accept,fileList:this.uploadFiles,autoUpload:this.autoUpload,listType:this.listType,disabled:this.uploadDisabled,limit:this.limit,"on-exceed":this.onExceed,"on-start":this.handleStart,"on-progress":this.handleProgress,"on-success":this.handleSuccess,"on-error":this.handleError,"on-preview":this.onPreview,"on-remove":this.handleRemove,"http-request":this.httpRequest},ref:"upload-inner"},[this.$slots.trigger||this.$slots.default]);return e("div",["picture-card"===this.listType?i:"",this.$slots.trigger?[n,this.$slots.default]:n,this.$slots.tip,"picture-card"!==this.listType?i:""])}},void 0,void 0,!1,null,null,null);no.options.__file="packages/upload/src/index.vue";var so=no.exports;so.install=function(e){e.component(so.name,so)};var ro=so,ao=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-progress",class:["el-progress--"+e.type,e.status?"is-"+e.status:"",{"el-progress--without-text":!e.showText,"el-progress--text-inside":e.textInside}],attrs:{role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"}},["line"===e.type?i("div",{staticClass:"el-progress-bar"},[i("div",{staticClass:"el-progress-bar__outer",style:{height:e.strokeWidth+"px"}},[i("div",{staticClass:"el-progress-bar__inner",style:e.barStyle},[e.showText&&e.textInside?i("div",{staticClass:"el-progress-bar__innerText"},[e._v(e._s(e.content))]):e._e()])])]):i("div",{staticClass:"el-progress-circle",style:{height:e.width+"px",width:e.width+"px"}},[i("svg",{attrs:{viewBox:"0 0 100 100"}},[i("path",{staticClass:"el-progress-circle__track",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:"#e5e9f2","stroke-width":e.relativeStrokeWidth,fill:"none"}}),i("path",{staticClass:"el-progress-circle__path",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":"round","stroke-width":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?i("div",{staticClass:"el-progress__text",style:{fontSize:e.progressTextSize+"px"}},[e.status?i("i",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])};ao._withStripped=!0;var oo=s({name:"ElProgress",props:{type:{type:String,default:"line",validator:function(e){return["line","circle","dashboard"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),i=0;ie)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,i){return"string"==typeof e?{color:e,progress:(i+1)*t}:e})}}},ao,[],!1,null,null,null);oo.options.__file="packages/progress/src/progress.vue";var lo=oo.exports;lo.install=function(e){e.component(lo.name,lo)};var co=lo,uo=function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"el-spinner"},[t("svg",{staticClass:"el-spinner-inner",style:{width:this.radius/2+"px",height:this.radius/2+"px"},attrs:{viewBox:"0 0 50 50"}},[t("circle",{staticClass:"path",attrs:{cx:"25",cy:"25",r:"20",fill:"none",stroke:this.strokeColor,"stroke-width":this.strokeWidth}})])])};uo._withStripped=!0;var ho=s({name:"ElSpinner",props:{type:String,radius:{type:Number,default:100},strokeWidth:{type:Number,default:5},strokeColor:{type:String,default:"#efefef"}}},uo,[],!1,null,null,null);ho.options.__file="packages/spinner/src/spinner.vue";var po=ho.exports;po.install=function(e){e.component(po.name,po)};var fo=po,mo=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-message-fade"},on:{"after-leave":e.handleAfterLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-message",e.type&&!e.iconClass?"el-message--"+e.type:"",e.center?"is-center":"",e.showClose?"is-closable":"",e.customClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:e.clearTimer,mouseleave:e.startTimer}},[e.iconClass?i("i",{class:e.iconClass}):i("i",{class:e.typeClass}),e._t("default",[e.dangerouslyUseHTMLString?i("p",{staticClass:"el-message__content",domProps:{innerHTML:e._s(e.message)}}):i("p",{staticClass:"el-message__content"},[e._v(e._s(e.message))])]),e.showClose?i("i",{staticClass:"el-message__closeBtn el-icon-close",on:{click:e.close}}):e._e()],2)])};mo._withStripped=!0;var vo={success:"success",info:"info",warning:"warning",error:"error"},go=s({data:function(){return{visible:!1,message:"",duration:3e3,type:"info",iconClass:"",customClass:"",onClose:null,showClose:!1,closed:!1,verticalOffset:20,timer:null,dangerouslyUseHTMLString:!1,center:!1}},computed:{typeClass:function(){return this.type&&!this.iconClass?"el-message__icon el-icon-"+vo[this.type]:""},positionStyle:function(){return{top:this.verticalOffset+"px"}}},watch:{closed:function(e){e&&(this.visible=!1)}},methods:{handleAfterLeave:function(){this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},close:function(){this.closed=!0,"function"==typeof this.onClose&&this.onClose(this)},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){27===e.keyCode&&(this.closed||this.close())}},mounted:function(){this.startTimer(),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},mo,[],!1,null,null,null);go.options.__file="packages/message/src/main.vue";var bo=go.exports,yo=di.a.extend(bo),xo=void 0,_o=[],Co=1,wo=function e(t){if(!di.a.prototype.$isServer){"string"==typeof(t=t||{})&&(t={message:t});var i=t.onClose,n="message_"+Co++;t.onClose=function(){e.close(n,i)},(xo=new yo({data:t})).id=n,Object(Rs.isVNode)(xo.message)&&(xo.$slots.default=[xo.message],xo.message=null),xo.$mount(),document.body.appendChild(xo.$el);var s=t.offset||20;return _o.forEach(function(e){s+=e.$el.offsetHeight+16}),xo.verticalOffset=s,xo.visible=!0,xo.$el.style.zIndex=y.PopupManager.nextZIndex(),_o.push(xo),xo}};["success","warning","info","error"].forEach(function(e){wo[e]=function(t){return"string"==typeof t&&(t={message:t}),t.type=e,wo(t)}}),wo.close=function(e,t){for(var i=_o.length,n=-1,s=0;s_o.length-1))for(var r=_o[n].$el.offsetHeight,a=n;a=0;e--)_o[e].close()};var ko=wo,So=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-badge"},[e._t("default"),i("transition",{attrs:{name:"el-zoom-in-center"}},[i("sup",{directives:[{name:"show",rawName:"v-show",value:!e.hidden&&(e.content||0===e.content||e.isDot),expression:"!hidden && (content || content === 0 || isDot)"}],staticClass:"el-badge__content",class:["el-badge__content--"+e.type,{"is-fixed":e.$slots.default,"is-dot":e.isDot}],domProps:{textContent:e._s(e.content)}})])],2)};So._withStripped=!0;var Do=s({name:"ElBadge",props:{value:[String,Number],max:Number,isDot:Boolean,hidden:Boolean,type:{type:String,validator:function(e){return["primary","success","warning","info","danger"].indexOf(e)>-1}}},computed:{content:function(){if(!this.isDot){var e=this.value,t=this.max;return"number"==typeof e&&"number"==typeof t&&t0&&e-1this.value,i=this.allowHalf&&this.pointerAtLeftHalf&&e-.5<=this.currentValue&&e>this.currentValue;return t||i},getIconStyle:function(e){var t=this.rateDisabled?this.disabledVoidColor:this.voidColor;return{color:e<=this.currentValue?this.activeColor:t}},selectValue:function(e){this.rateDisabled||(this.allowHalf&&this.pointerAtLeftHalf?(this.$emit("input",this.currentValue),this.$emit("change",this.currentValue)):(this.$emit("input",e),this.$emit("change",e)))},handleKey:function(e){if(!this.rateDisabled){var t=this.currentValue,i=e.keyCode;38===i||39===i?(this.allowHalf?t+=.5:t+=1,e.stopPropagation(),e.preventDefault()):37!==i&&40!==i||(this.allowHalf?t-=.5:t-=1,e.stopPropagation(),e.preventDefault()),t=(t=t<0?0:t)>this.max?this.max:t,this.$emit("input",t),this.$emit("change",t)}},setCurrentValue:function(e,t){if(!this.rateDisabled){if(this.allowHalf){var i=t.target;Object(fe.hasClass)(i,"el-rate__item")&&(i=i.querySelector(".el-rate__icon")),Object(fe.hasClass)(i,"el-rate__decimal")&&(i=i.parentNode),this.pointerAtLeftHalf=2*t.offsetX<=i.clientWidth,this.currentValue=this.pointerAtLeftHalf?e-.5:e}else this.currentValue=e;this.hoverIndex=e}},resetCurrentValue:function(){this.rateDisabled||(this.allowHalf&&(this.pointerAtLeftHalf=this.value!==Math.floor(this.value)),this.currentValue=this.value,this.hoverIndex=-1)}},created:function(){this.value||this.$emit("input",0)}},Io,[],!1,null,null,null);jo.options.__file="packages/rate/src/main.vue";var Fo=jo.exports;Fo.install=function(e){e.component(Fo.name,Fo)};var Lo=Fo,Ao=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-steps",class:[!this.simple&&"el-steps--"+this.direction,this.simple&&"el-steps--simple"]},[this._t("default")],2)};Ao._withStripped=!0;var Vo=s({name:"ElSteps",mixins:[C.a],props:{space:[Number,String],active:Number,direction:{type:String,default:"horizontal"},alignCenter:Boolean,simple:Boolean,finishStatus:{type:String,default:"finish"},processStatus:{type:String,default:"process"}},data:function(){return{steps:[],stepOffset:0}},methods:{getMigratingConfig:function(){return{props:{center:"center is removed."}}}},watch:{active:function(e,t){this.$emit("change",e,t)},steps:function(e){e.forEach(function(e,t){e.index=t})}}},Ao,[],!1,null,null,null);Vo.options.__file="packages/steps/src/steps.vue";var zo=Vo.exports;zo.install=function(e){e.component(zo.name,zo)};var Bo=zo,Ro=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-step",class:[!e.isSimple&&"is-"+e.$parent.direction,e.isSimple&&"is-simple",e.isLast&&!e.space&&!e.isCenter&&"is-flex",e.isCenter&&!e.isVertical&&!e.isSimple&&"is-center"],style:e.style},[i("div",{staticClass:"el-step__head",class:"is-"+e.currentStatus},[i("div",{staticClass:"el-step__line",style:e.isLast?"":{marginRight:e.$parent.stepOffset+"px"}},[i("i",{staticClass:"el-step__line-inner",style:e.lineStyle})]),i("div",{staticClass:"el-step__icon",class:"is-"+(e.icon?"icon":"text")},["success"!==e.currentStatus&&"error"!==e.currentStatus?e._t("icon",[e.icon?i("i",{staticClass:"el-step__icon-inner",class:[e.icon]}):e._e(),e.icon||e.isSimple?e._e():i("div",{staticClass:"el-step__icon-inner"},[e._v(e._s(e.index+1))])]):i("i",{staticClass:"el-step__icon-inner is-status",class:["el-icon-"+("success"===e.currentStatus?"check":"close")]})],2)]),i("div",{staticClass:"el-step__main"},[i("div",{ref:"title",staticClass:"el-step__title",class:["is-"+e.currentStatus]},[e._t("title",[e._v(e._s(e.title))])],2),e.isSimple?i("div",{staticClass:"el-step__arrow"}):i("div",{staticClass:"el-step__description",class:["is-"+e.currentStatus]},[e._t("description",[e._v(e._s(e.description))])],2)])])};Ro._withStripped=!0;var Ho=s({name:"ElStep",props:{title:String,icon:String,description:String,status:String},data:function(){return{index:-1,lineStyle:{},internalStatus:""}},beforeCreate:function(){this.$parent.steps.push(this)},beforeDestroy:function(){var e=this.$parent.steps,t=e.indexOf(this);t>=0&&e.splice(t,1)},computed:{currentStatus:function(){return this.status||this.internalStatus},prevStatus:function(){var e=this.$parent.steps[this.index-1];return e?e.currentStatus:"wait"},isCenter:function(){return this.$parent.alignCenter},isVertical:function(){return"vertical"===this.$parent.direction},isSimple:function(){return this.$parent.simple},isLast:function(){var e=this.$parent;return e.steps[e.steps.length-1]===this},stepsCount:function(){return this.$parent.steps.length},space:function(){var e=this.isSimple,t=this.$parent.space;return e?"":t},style:function(){var e={},t=this.$parent.steps.length,i="number"==typeof this.space?this.space+"px":this.space?this.space:100/(t-(this.isCenter?0:1))+"%";return e.flexBasis=i,this.isVertical?e:(this.isLast?e.maxWidth=100/this.stepsCount+"%":e.marginRight=-this.$parent.stepOffset+"px",e)}},methods:{updateStatus:function(e){var t=this.$parent.$children[this.index-1];e>this.index?this.internalStatus=this.$parent.finishStatus:e===this.index&&"error"!==this.prevStatus?this.internalStatus=this.$parent.processStatus:this.internalStatus="wait",t&&t.calcProgress(this.internalStatus)},calcProgress:function(e){var t=100,i={};i.transitionDelay=150*this.index+"ms",e===this.$parent.processStatus?(this.currentStatus,t=0):"wait"===e&&(t=0,i.transitionDelay=-150*this.index+"ms"),i.borderWidth=t&&!this.isSimple?"1px":0,"vertical"===this.$parent.direction?i.height=t+"%":i.width=t+"%",this.lineStyle=i}},mounted:function(){var e=this,t=this.$watch("index",function(i){e.$watch("$parent.active",e.updateStatus,{immediate:!0}),e.$watch("$parent.processStatus",function(){var t=e.$parent.active;e.updateStatus(t)},{immediate:!0}),t()})}},Ro,[],!1,null,null,null);Ho.options.__file="packages/steps/src/step.vue";var Wo=Ho.exports;Wo.install=function(e){e.component(Wo.name,Wo)};var qo=Wo,Ko=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{class:e.carouselClasses,on:{mouseenter:function(t){return t.stopPropagation(),e.handleMouseEnter(t)},mouseleave:function(t){return t.stopPropagation(),e.handleMouseLeave(t)}}},[i("div",{staticClass:"el-carousel__container",style:{height:e.height}},[e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-left"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex>0),expression:"(arrow === 'always' || hover) && (loop || activeIndex > 0)"}],staticClass:"el-carousel__arrow el-carousel__arrow--left",attrs:{type:"button"},on:{mouseenter:function(t){e.handleButtonEnter("left")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex-1)}}},[i("i",{staticClass:"el-icon-arrow-left"})])]):e._e(),e.arrowDisplay?i("transition",{attrs:{name:"carousel-arrow-right"}},[i("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex0})},carouselClasses:function(){var e=["el-carousel","el-carousel--"+this.direction];return"card"===this.type&&e.push("el-carousel--card"),e},indicatorsClasses:function(){var e=["el-carousel__indicators","el-carousel__indicators--"+this.direction];return this.hasLabel&&e.push("el-carousel__indicators--labels"),"outside"!==this.indicatorPosition&&"card"!==this.type||e.push("el-carousel__indicators--outside"),e}},watch:{items:function(e){e.length>0&&this.setActiveItem(this.initialIndex)},activeIndex:function(e,t){this.resetItemPosition(t),this.$emit("change",e,t)},autoplay:function(e){e?this.startTimer():this.pauseTimer()},loop:function(){this.setActiveItem(this.activeIndex)}},methods:{handleMouseEnter:function(){this.hover=!0,this.pauseTimer()},handleMouseLeave:function(){this.hover=!1,this.startTimer()},itemInStage:function(e,t){var i=this.items.length;return t===i-1&&e.inStage&&this.items[0].active||e.inStage&&this.items[t+1]&&this.items[t+1].active?"left":!!(0===t&&e.inStage&&this.items[i-1].active||e.inStage&&this.items[t-1]&&this.items[t-1].active)&&"right"},handleButtonEnter:function(e){var t=this;"vertical"!==this.direction&&this.items.forEach(function(i,n){e===t.itemInStage(i,n)&&(i.hover=!0)})},handleButtonLeave:function(){"vertical"!==this.direction&&this.items.forEach(function(e){e.hover=!1})},updateItems:function(){this.items=this.$children.filter(function(e){return"ElCarouselItem"===e.$options.name})},resetItemPosition:function(e){var t=this;this.items.forEach(function(i,n){i.translateItem(n,t.activeIndex,e)})},playSlides:function(){this.activeIndex0&&(e=this.items.indexOf(t[0]))}if(e=Number(e),isNaN(e)||e!==Math.floor(e))console.warn("[Element Warn][Carousel]index must be an integer.");else{var i=this.items.length,n=this.activeIndex;this.activeIndex=e<0?this.loop?i-1:0:e>=i?this.loop?0:i-1:e,n===this.activeIndex&&this.resetItemPosition(n)}},prev:function(){this.setActiveItem(this.activeIndex-1)},next:function(){this.setActiveItem(this.activeIndex+1)},handleIndicatorClick:function(e){this.activeIndex=e},handleIndicatorHover:function(e){"hover"===this.trigger&&e!==this.activeIndex&&(this.activeIndex=e)}},created:function(){var e=this;this.throttledArrowClick=Uo()(300,!0,function(t){e.setActiveItem(t)}),this.throttledIndicatorHover=Uo()(300,function(t){e.handleIndicatorHover(t)})},mounted:function(){var e=this;this.updateItems(),this.$nextTick(function(){Object(jt.addResizeListener)(e.$el,e.resetItemPosition),e.initialIndex=0&&(e.activeIndex=e.initialIndex),e.startTimer()})},beforeDestroy:function(){this.$el&&Object(jt.removeResizeListener)(this.$el,this.resetItemPosition),this.pauseTimer()}},Ko,[],!1,null,null,null);Go.options.__file="packages/carousel/src/main.vue";var Xo=Go.exports;Xo.install=function(e){e.component(Xo.name,Xo)};var Qo=Xo,Jo={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};var Zo={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return Jo[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,i=this.move,n=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+n.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:function(e){var t=e.move,i=e.size,n=e.bar,s={},r="translate"+n.axis+"("+t+"%)";return s[n.size]=i,s.transform=r,s.msTransform=r,s.webkitTransform=r,s}({size:t,move:i,bar:n})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=100*(Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-this.$refs.thumb[this.bar.offset]/2)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=t*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(fe.on)(document,"mousemove",this.mouseMoveDocumentHandler),Object(fe.on)(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var i=100*(-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client])-(this.$refs.thumb[this.bar.offset]-t))/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=i*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(fe.off)(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(fe.off)(document,"mouseup",this.mouseUpDocumentHandler)}},el={name:"ElScrollbar",components:{Bar:Zo},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=ji()(),i=this.wrapStyle;if(t){var n="-"+t+"px",s="margin-bottom: "+n+"; margin-right: "+n+";";Array.isArray(this.wrapStyle)?(i=Object(m.toObject)(this.wrapStyle)).marginRight=i.marginBottom=n:"string"==typeof this.wrapStyle?i+=s:i=s}var r=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),a=e("div",{ref:"wrap",style:i,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[r]]);return e("div",{class:"el-scrollbar"},this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:i},[[r]])]:[a,e(Zo,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(Zo,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})])},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e,t,i=this.wrap;i&&(e=100*i.clientHeight/i.scrollHeight,t=100*i.clientWidth/i.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(jt.addResizeListener)(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(jt.removeResizeListener)(this.$refs.resize,this.update)},install:function(e){e.component(el.name,el)}},tl=el,il=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"show",rawName:"v-show",value:e.ready,expression:"ready"}],staticClass:"el-carousel__item",class:{"is-active":e.active,"el-carousel__item--card":"card"===e.$parent.type,"is-in-stage":e.inStage,"is-hover":e.hover,"is-animating":e.animating},style:e.itemStyle,on:{click:e.handleItemClick}},["card"===e.$parent.type?i("div",{directives:[{name:"show",rawName:"v-show",value:!e.active,expression:"!active"}],staticClass:"el-carousel__mask"}):e._e(),e._t("default")],2)};il._withStripped=!0;var nl=s({name:"ElCarouselItem",props:{name:String,label:{type:[String,Number],default:""}},data:function(){return{hover:!1,translate:0,scale:1,active:!1,ready:!1,inStage:!1,animating:!1}},methods:{processIndex:function(e,t,i){return 0===t&&e===i-1?-1:t===i-1&&0===e?i:e=i/2?i+1:e>t+1&&e-t>=i/2?-2:e},calcCardTranslate:function(e,t){var i=this.$parent.$el.offsetWidth;return this.inStage?i*(1.17*(e-t)+1)/4:e2&&this.$parent.loop&&(e=this.processIndex(e,t,r)),"card"===n)"vertical"===s&&console.warn("[Element Warn][Carousel]vertical directionis not supported in card mode"),this.inStage=Math.round(Math.abs(e-t))<=1,this.active=e===t,this.translate=this.calcCardTranslate(e,t),this.scale=this.active?1:.83;else{this.active=e===t;var a="vertical"===s;this.translate=this.calcTranslate(e,t,a)}this.ready=!0},handleItemClick:function(){var e=this.$parent;if(e&&"card"===e.type){var t=e.items.indexOf(this);e.setActiveItem(t)}}},computed:{parentDirection:function(){return this.$parent.direction},itemStyle:function(){var e={transform:("vertical"===this.parentDirection?"translateY":"translateX")+"("+this.translate+"px) scale("+this.scale+")"};return Object(m.autoprefixer)(e)}},created:function(){this.$parent&&this.$parent.updateItems()},destroyed:function(){this.$parent&&this.$parent.updateItems()}},il,[],!1,null,null,null);nl.options.__file="packages/carousel/src/item.vue";var sl=nl.exports;sl.install=function(e){e.component(sl.name,sl)};var rl=sl,al=function(){var e=this.$createElement;return(this._self._c||e)("div",{staticClass:"el-collapse",attrs:{role:"tablist","aria-multiselectable":"true"}},[this._t("default")],2)};al._withStripped=!0;var ol=s({name:"ElCollapse",componentName:"ElCollapse",props:{accordion:Boolean,value:{type:[Array,String,Number],default:function(){return[]}}},data:function(){return{activeNames:[].concat(this.value)}},provide:function(){return{collapse:this}},watch:{value:function(e){this.activeNames=[].concat(e)}},methods:{setActiveNames:function(e){e=[].concat(e);var t=this.accordion?e[0]:e;this.activeNames=e,this.$emit("input",t),this.$emit("change",t)},handleItemClick:function(e){if(this.accordion)this.setActiveNames(!this.activeNames[0]&&0!==this.activeNames[0]||this.activeNames[0]!==e.name?e.name:"");else{var t=this.activeNames.slice(0),i=t.indexOf(e.name);i>-1?t.splice(i,1):t.push(e.name),this.setActiveNames(t)}}},created:function(){this.$on("item-click",this.handleItemClick)}},al,[],!1,null,null,null);ol.options.__file="packages/collapse/src/collapse.vue";var ll=ol.exports;ll.install=function(e){e.component(ll.name,ll)};var cl=ll,ul=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-collapse-item",class:{"is-active":e.isActive,"is-disabled":e.disabled}},[i("div",{attrs:{role:"tab","aria-expanded":e.isActive,"aria-controls":"el-collapse-content-"+e.id,"aria-describedby":"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__header",class:{focusing:e.focusing,"is-active":e.isActive},attrs:{role:"button",id:"el-collapse-head-"+e.id,tabindex:e.disabled?void 0:0},on:{click:e.handleHeaderClick,keyup:function(t){return"button"in t||!e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.stopPropagation(),e.handleEnterClick(t)):null},focus:e.handleFocus,blur:function(t){e.focusing=!1}}},[e._t("title",[e._v(e._s(e.title))]),i("i",{staticClass:"el-collapse-item__arrow el-icon-arrow-right",class:{"is-active":e.isActive}})],2)]),i("el-collapse-transition",[i("div",{directives:[{name:"show",rawName:"v-show",value:e.isActive,expression:"isActive"}],staticClass:"el-collapse-item__wrap",attrs:{role:"tabpanel","aria-hidden":!e.isActive,"aria-labelledby":"el-collapse-head-"+e.id,id:"el-collapse-content-"+e.id}},[i("div",{staticClass:"el-collapse-item__content"},[e._t("default")],2)])])],1)};ul._withStripped=!0;var hl=s({name:"ElCollapseItem",componentName:"ElCollapseItem",mixins:[k.a],components:{ElCollapseTransition:ye.a},data:function(){return{contentWrapStyle:{height:"auto",display:"block"},contentHeight:0,focusing:!1,isClick:!1,id:Object(m.generateId)()}},inject:["collapse"],props:{title:String,name:{type:[String,Number],default:function(){return this._uid}},disabled:Boolean},computed:{isActive:function(){return this.collapse.activeNames.indexOf(this.name)>-1}},methods:{handleFocus:function(){var e=this;setTimeout(function(){e.isClick?e.isClick=!1:e.focusing=!0},50)},handleHeaderClick:function(){this.disabled||(this.dispatch("ElCollapse","item-click",this),this.focusing=!1,this.isClick=!0)},handleEnterClick:function(){this.dispatch("ElCollapse","item-click",this)}}},ul,[],!1,null,null,null);hl.options.__file="packages/collapse/src/collapse-item.vue";var dl=hl.exports;dl.install=function(e){e.component(dl.name,dl)};var pl=dl,fl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:function(){return e.toggleDropDownVisible(!1)},expression:"() => toggleDropDownVisible(false)"}],ref:"reference",class:["el-cascader",e.realSize&&"el-cascader--"+e.realSize,{"is-disabled":e.isDisabled}],on:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1},click:function(){return e.toggleDropDownVisible(!e.readonly||void 0)},keydown:e.handleKeyDown}},[i("el-input",{ref:"input",class:{"is-focus":e.dropDownVisible},attrs:{size:e.realSize,placeholder:e.placeholder,readonly:e.readonly,disabled:e.isDisabled,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.handleInput},model:{value:e.multiple?e.presentText:e.inputValue,callback:function(t){e.multiple?e.presentText:e.inputValue=t},expression:"multiple ? presentText : inputValue"}},[i("template",{slot:"suffix"},[e.clearBtnVisible?i("i",{key:"clear",staticClass:"el-input__icon el-icon-circle-close",on:{click:function(t){return t.stopPropagation(),e.handleClear(t)}}}):i("i",{key:"arrow-down",class:["el-input__icon","el-icon-arrow-down",e.dropDownVisible&&"is-reverse"],on:{click:function(t){t.stopPropagation(),e.toggleDropDownVisible()}}})])],2),e.multiple?i("div",{staticClass:"el-cascader__tags"},[e._l(e.presentTags,function(t,n){return i("el-tag",{key:t.key,attrs:{type:"info",size:e.tagSize,hit:t.hitState,closable:t.closable,"disable-transitions":""},on:{close:function(t){e.deleteTag(n)}}},[i("span",[e._v(e._s(t.text))])])}),e.filterable&&!e.isDisabled?i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.inputValue,expression:"inputValue",modifiers:{trim:!0}}],staticClass:"el-cascader__search-input",attrs:{type:"text",placeholder:e.presentTags.length?"":e.placeholder},domProps:{value:e.inputValue},on:{input:[function(t){t.target.composing||(e.inputValue=t.target.value.trim())},function(t){return e.handleInput(e.inputValue,t)}],click:function(t){t.stopPropagation(),e.toggleDropDownVisible(!0)},keydown:function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.handleDelete(t):null},blur:function(t){e.$forceUpdate()}}}):e._e()],2):e._e(),i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.handleDropdownLeave}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.dropDownVisible,expression:"dropDownVisible"}],ref:"popper",class:["el-popper","el-cascader__dropdown",e.popperClass]},[i("el-cascader-panel",{directives:[{name:"show",rawName:"v-show",value:!e.filtering,expression:"!filtering"}],ref:"panel",attrs:{options:e.options,props:e.config,border:!1,"render-label":e.$scopedSlots.default},on:{"expand-change":e.handleExpandChange,close:function(t){e.toggleDropDownVisible(!1)}},model:{value:e.checkedValue,callback:function(t){e.checkedValue=t},expression:"checkedValue"}}),e.filterable?i("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.filtering,expression:"filtering"}],ref:"suggestionPanel",staticClass:"el-cascader__suggestion-panel",attrs:{tag:"ul","view-class":"el-cascader__suggestion-list"},nativeOn:{keydown:function(t){return e.handleSuggestionKeyDown(t)}}},[e.suggestions.length?e._l(e.suggestions,function(t,n){return i("li",{key:t.uid,class:["el-cascader__suggestion-item",t.checked&&"is-checked"],attrs:{tabindex:-1},on:{click:function(t){e.handleSuggestionClick(n)}}},[i("span",[e._v(e._s(t.text))]),t.checked?i("i",{staticClass:"el-icon-check"}):e._e()])}):e._t("empty",[i("li",{staticClass:"el-cascader__empty-text"},[e._v(e._s(e.t("el.cascader.noMatch")))])])],2):e._e()],1)])],1)};fl._withStripped=!0;var ml=i(42),vl=i.n(ml),gl=i(33),bl=i.n(gl),yl=bl.a.keys,xl={expandTrigger:{newProp:"expandTrigger",type:String},changeOnSelect:{newProp:"checkStrictly",type:Boolean},hoverThreshold:{newProp:"hoverThreshold",type:Number}},_l={props:{placement:{type:String,default:"bottom-start"},appendToBody:j.a.props.appendToBody,visibleArrow:{type:Boolean,default:!0},arrowOffset:j.a.props.arrowOffset,offset:j.a.props.offset,boundariesPadding:j.a.props.boundariesPadding,popperOptions:j.a.props.popperOptions},methods:j.a.methods,data:j.a.data,beforeDestroy:j.a.beforeDestroy},Cl={medium:36,small:32,mini:28},wl=s({name:"ElCascader",directives:{Clickoutside:P.a},mixins:[_l,k.a,f.a,C.a],inject:{elForm:{default:""},elFormItem:{default:""}},components:{ElInput:d.a,ElTag:Nt.a,ElScrollbar:L.a,ElCascaderPanel:vl.a},props:{value:{},options:Array,props:Object,size:String,placeholder:{type:String,default:function(){return Object(Ft.t)("el.cascader.placeholder")}},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:Function,separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,debounce:{type:Number,default:300},beforeFilter:{type:Function,default:function(){return function(){}}},popperClass:String},data:function(){return{dropDownVisible:!1,checkedValue:this.value||null,inputHover:!1,inputValue:null,presentText:null,presentTags:[],checkedNodes:[],filtering:!1,suggestions:[],inputInitialHeight:0,pressDeleteCount:0}},computed:{realSize:function(){var e=(this.elFormItem||{}).elFormItemSize;return this.size||e||(this.$ELEMENT||{}).size},tagSize:function(){return["small","mini"].indexOf(this.realSize)>-1?"mini":"small"},isDisabled:function(){return this.disabled||(this.elForm||{}).disabled},config:function(){var e=this.props||{},t=this.$attrs;return Object.keys(xl).forEach(function(i){var n=xl[i],s=n.newProp,r=n.type,a=t[i]||t[Object(m.kebabCase)(i)];Object(zt.isDef)(i)&&!Object(zt.isDef)(e[s])&&(r===Boolean&&""===a&&(a=!0),e[s]=a)}),e},multiple:function(){return this.config.multiple},leafOnly:function(){return!this.config.checkStrictly},readonly:function(){return!this.filterable||this.multiple},clearBtnVisible:function(){return!(!this.clearable||this.isDisabled||this.filtering||!this.inputHover)&&(this.multiple?!!this.checkedNodes.filter(function(e){return!e.isDisabled}).length:!!this.presentText)},panel:function(){return this.$refs.panel}},watch:{value:function(e){Object(m.isEqual)(e,this.checkedValue)||(this.checkedValue=e,this.computePresentContent())},checkedValue:function(e){var t=this.value;Object(m.isEqual)(e,t)&&!Object(No.isUndefined)(t)||(this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",[e]),this.computePresentContent())},options:{handler:function(){this.$nextTick(this.computePresentContent)},deep:!0},presentText:function(e){this.inputValue=e},presentTags:function(e,t){this.multiple&&(e.length||t.length)&&this.$nextTick(this.updateStyle)},filtering:function(e){this.$nextTick(this.updatePopper)}},mounted:function(){var e=this,t=this.$refs.input;t&&t.$el&&(this.inputInitialHeight=t.$el.offsetHeight||Cl[this.realSize]||40),Object(m.isEmpty)(this.value)||this.computePresentContent(),this.filterHandler=T()(this.debounce,function(){var t=e.inputValue;if(t){var i=e.beforeFilter(t);i&&i.then?i.then(e.getSuggestions):!1!==i?e.getSuggestions():e.filtering=!1}else e.filtering=!1}),Object(jt.addResizeListener)(this.$el,this.updateStyle)},beforeDestroy:function(){Object(jt.removeResizeListener)(this.$el,this.updateStyle)},methods:{getMigratingConfig:function(){return{props:{"expand-trigger":"expand-trigger is removed, use `props.expandTrigger` instead.","change-on-select":"change-on-select is removed, use `props.checkStrictly` instead.","hover-threshold":"hover-threshold is removed, use `props.hoverThreshold` instead"},events:{"active-item-change":"active-item-change is renamed to expand-change"}}},toggleDropDownVisible:function(e){var t=this;if(!this.isDisabled){var i=this.dropDownVisible,n=this.$refs.input;(e=Object(zt.isDef)(e)?e:!i)!==i&&(this.dropDownVisible=e,e&&this.$nextTick(function(){t.updatePopper(),t.panel.scrollIntoView()}),n.$refs.input.setAttribute("aria-expanded",e),this.$emit("visible-change",e))}},handleDropdownLeave:function(){this.filtering=!1,this.inputValue=this.presentText},handleKeyDown:function(e){switch(e.keyCode){case yl.enter:this.toggleDropDownVisible();break;case yl.down:this.toggleDropDownVisible(!0),this.focusFirstNode(),e.preventDefault();break;case yl.esc:case yl.tab:this.toggleDropDownVisible(!1)}},handleFocus:function(e){this.$emit("focus",e)},handleBlur:function(e){this.$emit("blur",e)},handleInput:function(e,t){!this.dropDownVisible&&this.toggleDropDownVisible(!0),t&&t.isComposing||(e?this.filterHandler():this.filtering=!1)},handleClear:function(){this.presentText="",this.panel.clearCheckedNodes()},handleExpandChange:function(e){this.$nextTick(this.updatePopper.bind(this)),this.$emit("expand-change",e),this.$emit("active-item-change",e)},focusFirstNode:function(){var e=this;this.$nextTick(function(){var t=e.filtering,i=e.$refs,n=i.popper,s=i.suggestionPanel,r=null;t&&s?r=s.$el.querySelector(".el-cascader__suggestion-item"):r=n.querySelector(".el-cascader-menu").querySelector('.el-cascader-node[tabindex="-1"]');r&&(r.focus(),!t&&r.click())})},computePresentContent:function(){var e=this;this.$nextTick(function(){var t=e.config,i=t.multiple,n=t.checkStrictly;i?(e.computePresentTags(),e.presentText=e.presentTags.length?" ":null):(e.computePresentText(),!n&&e.dropDownVisible&&e.toggleDropDownVisible(!1))})},computePresentText:function(){var e=this.checkedValue,t=this.config;if(!Object(m.isEmpty)(e)){var i=this.panel.getNodeByValue(e);if(i&&(t.checkStrictly||i.isLeaf))return void(this.presentText=i.getText(this.showAllLevels,this.separator))}this.presentText=null},computePresentTags:function(){var e=this.isDisabled,t=this.leafOnly,i=this.showAllLevels,n=this.separator,s=this.collapseTags,r=this.getCheckedNodes(t),a=[],o=function(t){return{node:t,key:t.uid,text:t.getText(i,n),hitState:!1,closable:!e&&!t.isDisabled}};if(r.length){var l=r[0],c=r.slice(1),u=c.length;a.push(o(l)),u&&(s?a.push({key:-1,text:"+ "+u,closable:!1}):c.forEach(function(e){return a.push(o(e))}))}this.checkedNodes=r,this.presentTags=a},getSuggestions:function(){var e=this,t=this.filterMethod;Object(No.isFunction)(t)||(t=function(e,t){return e.text.includes(t)});var i=this.panel.getFlattedNodes(this.leafOnly).filter(function(i){return!i.isDisabled&&(i.text=i.getText(e.showAllLevels,e.separator)||"",t(i,e.inputValue))});this.multiple?this.presentTags.forEach(function(e){e.hitState=!1}):i.forEach(function(t){t.checked=Object(m.isEqual)(e.checkedValue,t.getValueByOption())}),this.filtering=!0,this.suggestions=i,this.$nextTick(this.updatePopper)},handleSuggestionKeyDown:function(e){var t=e.keyCode,i=e.target;switch(t){case yl.enter:i.click();break;case yl.up:var n=i.previousElementSibling;n&&n.focus();break;case yl.down:var s=i.nextElementSibling;s&&s.focus();break;case yl.esc:case yl.tab:this.toggleDropDownVisible(!1)}},handleDelete:function(){var e=this.inputValue,t=this.pressDeleteCount,i=this.presentTags,n=i.length-1,s=i[n];this.pressDeleteCount=e?0:t+1,s&&this.pressDeleteCount&&(s.hitState?this.deleteTag(n):s.hitState=!0)},handleSuggestionClick:function(e){var t=this.multiple,i=this.suggestions[e];if(t){var n=i.checked;i.doCheck(!n),this.panel.calculateMultiCheckedValue()}else this.checkedValue=i.getValueByOption(),this.toggleDropDownVisible(!1)},deleteTag:function(e){var t=this.checkedValue,i=t[e];this.checkedValue=t.filter(function(t,i){return i!==e}),this.$emit("remove-tag",i)},updateStyle:function(){var e=this.$el,t=this.inputInitialHeight;if(!this.$isServer&&e){var i=this.$refs.suggestionPanel,n=e.querySelector(".el-input__inner");if(n){var s=e.querySelector(".el-cascader__tags"),r=null;if(i&&(r=i.$el))r.querySelector(".el-cascader__suggestion-list").style.minWidth=n.offsetWidth+"px";if(s){var a=s.offsetHeight,o=Math.max(a+6,t)+"px";n.style.height=o,this.updatePopper()}}}},getCheckedNodes:function(e){return this.panel.getCheckedNodes(e)}}},fl,[],!1,null,null,null);wl.options.__file="packages/cascader/src/cascader.vue";var kl=wl.exports;kl.install=function(e){e.component(kl.name,kl)};var Sl=kl,Dl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.hide,expression:"hide"}],class:["el-color-picker",e.colorDisabled?"is-disabled":"",e.colorSize?"el-color-picker--"+e.colorSize:""]},[e.colorDisabled?i("div",{staticClass:"el-color-picker__mask"}):e._e(),i("div",{staticClass:"el-color-picker__trigger",on:{click:e.handleTrigger}},[i("span",{staticClass:"el-color-picker__color",class:{"is-alpha":e.showAlpha}},[i("span",{staticClass:"el-color-picker__color-inner",style:{backgroundColor:e.displayedColor}}),e.value||e.showPanelColor?e._e():i("span",{staticClass:"el-color-picker__empty el-icon-close"})]),i("span",{directives:[{name:"show",rawName:"v-show",value:e.value||e.showPanelColor,expression:"value || showPanelColor"}],staticClass:"el-color-picker__icon el-icon-arrow-down"})]),i("picker-dropdown",{ref:"dropdown",class:["el-color-picker__panel",e.popperClass||""],attrs:{color:e.color,"show-alpha":e.showAlpha,predefine:e.predefine},on:{pick:e.confirmValue,clear:e.clearValue},model:{value:e.showPicker,callback:function(t){e.showPicker=t},expression:"showPicker"}})],1)};Dl._withStripped=!0;var $l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};var Ol=function(e,t,i){return[e,t*i/((e=(2-t)*i)<1?e:2-e)||0,e/2]},El=function(e,t){(function(e){return"string"==typeof e&&-1!==e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var i=function(e){return"string"==typeof e&&-1!==e.indexOf("%")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),i&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},Tl={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},Ml={A:10,B:11,C:12,D:13,E:14,F:15},Pl=function(e){return 2===e.length?16*(Ml[e[0].toUpperCase()]||+e[0])+(Ml[e[1].toUpperCase()]||+e[1]):Ml[e[1].toUpperCase()]||+e[1]},Il=function(e,t,i){e=El(e,255),t=El(t,255),i=El(i,255);var n,s=Math.max(e,t,i),r=Math.min(e,t,i),a=void 0,o=s,l=s-r;if(n=0===s?0:l/s,s===r)a=0;else{switch(s){case e:a=(t-i)/l+(t2?parseFloat(e):parseInt(e,10)});if(4===n.length?this._alpha=Math.floor(100*parseFloat(n[3])):3===n.length&&(this._alpha=100),n.length>=3){var s=function(e,t,i){i/=100;var n=t/=100,s=Math.max(i,.01);return t*=(i*=2)<=1?i:2-i,n*=s<=1?s:2-s,{h:e,s:100*(0===i?2*n/(s+n):2*t/(i+t)),v:(i+t)/2*100}}(n[0],n[1],n[2]);i(s.h,s.s,s.v)}}else if(-1!==e.indexOf("hsv")){var r=e.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});4===r.length?this._alpha=Math.floor(100*parseFloat(r[3])):3===r.length&&(this._alpha=100),r.length>=3&&i(r[0],r[1],r[2])}else if(-1!==e.indexOf("rgb")){var a=e.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});if(4===a.length?this._alpha=Math.floor(100*parseFloat(a[3])):3===a.length&&(this._alpha=100),a.length>=3){var o=Il(a[0],a[1],a[2]);i(o.h,o.s,o.v)}}else if(-1!==e.indexOf("#")){var l=e.replace("#","").trim();if(!/^(?:[0-9a-fA-F]{3}){1,2}$/.test(l))return;var c=void 0,u=void 0,h=void 0;3===l.length?(c=Pl(l[0]+l[0]),u=Pl(l[1]+l[1]),h=Pl(l[2]+l[2])):6!==l.length&&8!==l.length||(c=Pl(l.substring(0,2)),u=Pl(l.substring(2,4)),h=Pl(l.substring(4,6))),8===l.length?this._alpha=Math.floor(Pl(l.substring(6))/255*100):3!==l.length&&6!==l.length||(this._alpha=100);var d=Il(c,u,h);i(d.h,d.s,d.v)}},e.prototype.compare=function(e){return Math.abs(e._hue-this._hue)<2&&Math.abs(e._saturation-this._saturation)<1&&Math.abs(e._value-this._value)<1&&Math.abs(e._alpha-this._alpha)<1},e.prototype.doOnChange=function(){var e=this._hue,t=this._saturation,i=this._value,n=this._alpha,s=this.format;if(this.enableAlpha)switch(s){case"hsl":var r=Ol(e,t/100,i/100);this.value="hsla("+e+", "+Math.round(100*r[1])+"%, "+Math.round(100*r[2])+"%, "+n/100+")";break;case"hsv":this.value="hsva("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%, "+n/100+")";break;default:var a=Nl(e,t,i),o=a.r,l=a.g,c=a.b;this.value="rgba("+o+", "+l+", "+c+", "+n/100+")"}else switch(s){case"hsl":var u=Ol(e,t/100,i/100);this.value="hsl("+e+", "+Math.round(100*u[1])+"%, "+Math.round(100*u[2])+"%)";break;case"hsv":this.value="hsv("+e+", "+Math.round(t)+"%, "+Math.round(i)+"%)";break;case"rgb":var h=Nl(e,t,i),d=h.r,p=h.g,f=h.b;this.value="rgb("+d+", "+p+", "+f+")";break;default:this.value=function(e){var t=e.r,i=e.g,n=e.b,s=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),i=e%16;return""+(Tl[t]||t)+(Tl[i]||i)};return isNaN(t)||isNaN(i)||isNaN(n)?"":"#"+s(t)+s(i)+s(n)}(Nl(e,t,i))}},e}(),Fl=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-color-dropdown"},[i("div",{staticClass:"el-color-dropdown__main-wrapper"},[i("hue-slider",{ref:"hue",staticStyle:{float:"right"},attrs:{color:e.color,vertical:""}}),i("sv-panel",{ref:"sl",attrs:{color:e.color}})],1),e.showAlpha?i("alpha-slider",{ref:"alpha",attrs:{color:e.color}}):e._e(),e.predefine?i("predefine",{attrs:{color:e.color,colors:e.predefine}}):e._e(),i("div",{staticClass:"el-color-dropdown__btns"},[i("span",{staticClass:"el-color-dropdown__value"},[i("el-input",{attrs:{"validate-event":!1,size:"mini"},on:{blur:e.handleConfirm},nativeOn:{keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleConfirm(t):null}},model:{value:e.customInput,callback:function(t){e.customInput=t},expression:"customInput"}})],1),i("el-button",{staticClass:"el-color-dropdown__link-btn",attrs:{size:"mini",type:"text"},on:{click:function(t){e.$emit("clear")}}},[e._v("\n "+e._s(e.t("el.colorpicker.clear"))+"\n ")]),i("el-button",{staticClass:"el-color-dropdown__btn",attrs:{plain:"",size:"mini"},on:{click:e.confirmValue}},[e._v("\n "+e._s(e.t("el.colorpicker.confirm"))+"\n ")])],1)],1)])};Fl._withStripped=!0;var Ll=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-svpanel",style:{backgroundColor:this.background}},[t("div",{staticClass:"el-color-svpanel__white"}),t("div",{staticClass:"el-color-svpanel__black"}),t("div",{staticClass:"el-color-svpanel__cursor",style:{top:this.cursorTop+"px",left:this.cursorLeft+"px"}},[t("div")])])};Ll._withStripped=!0;var Al=!1,Vl=function(e,t){if(!di.a.prototype.$isServer){var i=function(e){t.drag&&t.drag(e)},n=function e(n){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e),document.onselectstart=null,document.ondragstart=null,Al=!1,t.end&&t.end(n)};e.addEventListener("mousedown",function(e){Al||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},document.addEventListener("mousemove",i),document.addEventListener("mouseup",n),Al=!0,t.start&&t.start(e))})}},zl=s({name:"el-sl-panel",props:{color:{required:!0}},computed:{colorValue:function(){return{hue:this.color.get("hue"),value:this.color.get("value")}}},watch:{colorValue:function(){this.update()}},methods:{update:function(){var e=this.color.get("saturation"),t=this.color.get("value"),i=this.$el,n=i.clientWidth,s=i.clientHeight;this.cursorLeft=e*n/100,this.cursorTop=(100-t)*s/100,this.background="hsl("+this.color.get("hue")+", 100%, 50%)"},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=e.clientX-t.left,n=e.clientY-t.top;i=Math.max(0,i),i=Math.min(i,t.width),n=Math.max(0,n),n=Math.min(n,t.height),this.cursorLeft=i,this.cursorTop=n,this.color.set({saturation:i/t.width*100,value:100-n/t.height*100})}},mounted:function(){var e=this;Vl(this.$el,{drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}}),this.update()},data:function(){return{cursorTop:0,cursorLeft:0,background:"hsl(0, 100%, 50%)"}}},Ll,[],!1,null,null,null);zl.options.__file="packages/color-picker/src/components/sv-panel.vue";var Bl=zl.exports,Rl=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-hue-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-hue-slider__bar",on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-hue-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};Rl._withStripped=!0;var Hl=s({name:"el-color-hue-slider",props:{color:{required:!0},vertical:Boolean},data:function(){return{thumbLeft:0,thumbTop:0}},computed:{hueValue:function(){return this.color.get("hue")}},watch:{hueValue:function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb,n=void 0;if(this.vertical){var s=e.clientY-t.top;s=Math.min(s,t.height-i.offsetHeight/2),s=Math.max(i.offsetHeight/2,s),n=Math.round((s-i.offsetHeight/2)/(t.height-i.offsetHeight)*360)}else{var r=e.clientX-t.left;r=Math.min(r,t.width-i.offsetWidth/2),r=Math.max(i.offsetWidth/2,r),n=Math.round((r-i.offsetWidth/2)/(t.width-i.offsetWidth)*360)}this.color.set("hue",n)},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/360)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/360)},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop()}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,s={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Vl(i,s),Vl(n,s),this.update()}},Rl,[],!1,null,null,null);Hl.options.__file="packages/color-picker/src/components/hue-slider.vue";var Wl=Hl.exports,ql=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"el-color-alpha-slider",class:{"is-vertical":this.vertical}},[t("div",{ref:"bar",staticClass:"el-color-alpha-slider__bar",style:{background:this.background},on:{click:this.handleClick}}),t("div",{ref:"thumb",staticClass:"el-color-alpha-slider__thumb",style:{left:this.thumbLeft+"px",top:this.thumbTop+"px"}})])};ql._withStripped=!0;var Kl=s({name:"el-color-alpha-slider",props:{color:{required:!0},vertical:Boolean},watch:{"color._alpha":function(){this.update()},"color.value":function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb;e.target!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),i=this.$refs.thumb;if(this.vertical){var n=e.clientY-t.top;n=Math.max(i.offsetHeight/2,n),n=Math.min(n,t.height-i.offsetHeight/2),this.color.set("alpha",Math.round((n-i.offsetHeight/2)/(t.height-i.offsetHeight)*100))}else{var s=e.clientX-t.left;s=Math.max(i.offsetWidth/2,s),s=Math.min(s,t.width-i.offsetWidth/2),this.color.set("alpha",Math.round((s-i.offsetWidth/2)/(t.width-i.offsetWidth)*100))}},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetWidth-i.offsetWidth/2)/100)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var i=this.$refs.thumb;return Math.round(t*(e.offsetHeight-i.offsetHeight/2)/100)},getBackground:function(){if(this.color&&this.color.value){var e=this.color.toRgb(),t=e.r,i=e.g,n=e.b;return"linear-gradient(to right, rgba("+t+", "+i+", "+n+", 0) 0%, rgba("+t+", "+i+", "+n+", 1) 100%)"}return null},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop(),this.background=this.getBackground()}},data:function(){return{thumbLeft:0,thumbTop:0,background:null}},mounted:function(){var e=this,t=this.$refs,i=t.bar,n=t.thumb,s={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Vl(i,s),Vl(n,s),this.update()}},ql,[],!1,null,null,null);Kl.options.__file="packages/color-picker/src/components/alpha-slider.vue";var Yl=Kl.exports,Ul=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-color-predefine"},[i("div",{staticClass:"el-color-predefine__colors"},e._l(e.rgbaColors,function(t,n){return i("div",{key:e.colors[n],staticClass:"el-color-predefine__color-selector",class:{selected:t.selected,"is-alpha":t._alpha<100},on:{click:function(t){e.handleSelect(n)}}},[i("div",{style:{"background-color":t.value}})])}),0)])};Ul._withStripped=!0;var Gl=s({props:{colors:{type:Array,required:!0},color:{required:!0}},data:function(){return{rgbaColors:this.parseColors(this.colors,this.color)}},methods:{handleSelect:function(e){this.color.fromString(this.colors[e])},parseColors:function(e,t){return e.map(function(e){var i=new jl;return i.enableAlpha=!0,i.format="rgba",i.fromString(e),i.selected=i.value===t.value,i})}},watch:{"$parent.currentColor":function(e){var t=new jl;t.fromString(e),this.rgbaColors.forEach(function(e){e.selected=t.compare(e)})},colors:function(e){this.rgbaColors=this.parseColors(e,this.color)},color:function(e){this.rgbaColors=this.parseColors(this.colors,e)}}},Ul,[],!1,null,null,null);Gl.options.__file="packages/color-picker/src/components/predefine.vue";var Xl=Gl.exports,Ql=s({name:"el-color-picker-dropdown",mixins:[j.a,f.a],components:{SvPanel:Bl,HueSlider:Wl,AlphaSlider:Yl,ElInput:d.a,ElButton:K.a,Predefine:Xl},props:{color:{required:!0},showAlpha:Boolean,predefine:Array},data:function(){return{customInput:""}},computed:{currentColor:function(){var e=this.$parent;return e.value||e.showPanelColor?e.color.value:""}},methods:{confirmValue:function(){this.$emit("pick")},handleConfirm:function(){this.color.fromString(this.customInput)}},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$el},watch:{showPopper:function(e){var t=this;!0===e&&this.$nextTick(function(){var e=t.$refs,i=e.sl,n=e.hue,s=e.alpha;i&&i.update(),n&&n.update(),s&&s.update()})},currentColor:{immediate:!0,handler:function(e){this.customInput=e}}}},Fl,[],!1,null,null,null);Ql.options.__file="packages/color-picker/src/components/picker-dropdown.vue";var Jl=Ql.exports,Zl=s({name:"ElColorPicker",mixins:[k.a],props:{value:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:String,popperClass:String,predefine:Array},inject:{elForm:{default:""},elFormItem:{default:""}},directives:{Clickoutside:P.a},computed:{displayedColor:function(){return this.value||this.showPanelColor?this.displayedRgb(this.color,this.showAlpha):"transparent"},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},colorSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},colorDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){e?e&&e!==this.color.value&&this.color.fromString(e):this.showPanelColor=!1},color:{deep:!0,handler:function(){this.showPanelColor=!0}},displayedColor:function(e){if(this.showPicker){var t=new jl({enableAlpha:this.showAlpha,format:this.colorFormat});t.fromString(this.value),e!==this.displayedRgb(t,this.showAlpha)&&this.$emit("active-change",e)}}},methods:{handleTrigger:function(){this.colorDisabled||(this.showPicker=!this.showPicker)},confirmValue:function(){var e=this.color.value;this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",e),this.showPicker=!1},clearValue:function(){this.$emit("input",null),this.$emit("change",null),null!==this.value&&this.dispatch("ElFormItem","el.form.change",null),this.showPanelColor=!1,this.showPicker=!1,this.resetColor()},hide:function(){this.showPicker=!1,this.resetColor()},resetColor:function(){var e=this;this.$nextTick(function(t){e.value?e.color.fromString(e.value):e.showPanelColor=!1})},displayedRgb:function(e,t){if(!(e instanceof jl))throw Error("color should be instance of Color Class");var i=e.toRgb(),n=i.r,s=i.g,r=i.b;return t?"rgba("+n+", "+s+", "+r+", "+e.get("alpha")/100+")":"rgb("+n+", "+s+", "+r+")"}},mounted:function(){var e=this.value;e&&this.color.fromString(e),this.popperElm=this.$refs.dropdown.$el},data:function(){return{color:new jl({enableAlpha:this.showAlpha,format:this.colorFormat}),showPicker:!1,showPanelColor:!1}},components:{PickerDropdown:Jl}},Dl,[],!1,null,null,null);Zl.options.__file="packages/color-picker/src/main.vue";var ec=Zl.exports;ec.install=function(e){e.component(ec.name,ec)};var tc=ec,ic=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer"},[i("transfer-panel",e._b({ref:"leftPanel",attrs:{data:e.sourceData,title:e.titles[0]||e.t("el.transfer.titles.0"),"default-checked":e.leftDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onSourceCheckedChange}},"transfer-panel",e.$props,!1),[e._t("left-footer")],2),i("div",{staticClass:"el-transfer__buttons"},[i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.rightChecked.length},nativeOn:{click:function(t){return e.addToLeft(t)}}},[i("i",{staticClass:"el-icon-arrow-left"}),void 0!==e.buttonTexts[0]?i("span",[e._v(e._s(e.buttonTexts[0]))]):e._e()]),i("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.leftChecked.length},nativeOn:{click:function(t){return e.addToRight(t)}}},[void 0!==e.buttonTexts[1]?i("span",[e._v(e._s(e.buttonTexts[1]))]):e._e(),i("i",{staticClass:"el-icon-arrow-right"})])],1),i("transfer-panel",e._b({ref:"rightPanel",attrs:{data:e.targetData,title:e.titles[1]||e.t("el.transfer.titles.1"),"default-checked":e.rightDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onTargetCheckedChange}},"transfer-panel",e.$props,!1),[e._t("right-footer")],2)],1)};ic._withStripped=!0;var nc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-transfer-panel"},[i("p",{staticClass:"el-transfer-panel__header"},[i("el-checkbox",{attrs:{indeterminate:e.isIndeterminate},on:{change:e.handleAllCheckedChange},model:{value:e.allChecked,callback:function(t){e.allChecked=t},expression:"allChecked"}},[e._v("\n "+e._s(e.title)+"\n "),i("span",[e._v(e._s(e.checkedSummary))])])],1),i("div",{class:["el-transfer-panel__body",e.hasFooter?"is-with-footer":""]},[e.filterable?i("el-input",{staticClass:"el-transfer-panel__filter",attrs:{size:"small",placeholder:e.placeholder},nativeOn:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1}},model:{value:e.query,callback:function(t){e.query=t},expression:"query"}},[i("i",{class:["el-input__icon","el-icon-"+e.inputIcon],attrs:{slot:"prefix"},on:{click:e.clearQuery},slot:"prefix"})]):e._e(),i("el-checkbox-group",{directives:[{name:"show",rawName:"v-show",value:!e.hasNoMatch&&e.data.length>0,expression:"!hasNoMatch && data.length > 0"}],staticClass:"el-transfer-panel__list",class:{"is-filterable":e.filterable},model:{value:e.checked,callback:function(t){e.checked=t},expression:"checked"}},e._l(e.filteredData,function(t){return i("el-checkbox",{key:t[e.keyProp],staticClass:"el-transfer-panel__item",attrs:{label:t[e.keyProp],disabled:t[e.disabledProp]}},[i("option-content",{attrs:{option:t}})],1)}),1),i("p",{directives:[{name:"show",rawName:"v-show",value:e.hasNoMatch,expression:"hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noMatch")))]),i("p",{directives:[{name:"show",rawName:"v-show",value:0===e.data.length&&!e.hasNoMatch,expression:"data.length === 0 && !hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noData")))])],1),e.hasFooter?i("p",{staticClass:"el-transfer-panel__footer"},[e._t("default")],2):e._e()])};nc._withStripped=!0;var sc=s({mixins:[f.a],name:"ElTransferPanel",componentName:"ElTransferPanel",components:{ElCheckboxGroup:Ki.a,ElCheckbox:ri.a,ElInput:d.a,OptionContent:{props:{option:Object},render:function(e){var t=function e(t){return"ElTransferPanel"===t.$options.componentName?t:t.$parent?e(t.$parent):t}(this),i=t.$parent||t;return t.renderContent?t.renderContent(e,this.option):i.$scopedSlots.default?i.$scopedSlots.default({option:this.option}):e("span",[this.option[t.labelProp]||this.option[t.keyProp]])}}},props:{data:{type:Array,default:function(){return[]}},renderContent:Function,placeholder:String,title:String,filterable:Boolean,format:Object,filterMethod:Function,defaultChecked:Array,props:Object},data:function(){return{checked:[],allChecked:!1,query:"",inputHover:!1,checkChangeByUser:!0}},watch:{checked:function(e,t){if(this.updateAllChecked(),this.checkChangeByUser){var i=e.concat(t).filter(function(i){return-1===e.indexOf(i)||-1===t.indexOf(i)});this.$emit("checked-change",e,i)}else this.$emit("checked-change",e),this.checkChangeByUser=!0},data:function(){var e=this,t=[],i=this.filteredData.map(function(t){return t[e.keyProp]});this.checked.forEach(function(e){i.indexOf(e)>-1&&t.push(e)}),this.checkChangeByUser=!1,this.checked=t},checkableData:function(){this.updateAllChecked()},defaultChecked:{immediate:!0,handler:function(e,t){var i=this;if(!t||e.length!==t.length||!e.every(function(e){return t.indexOf(e)>-1})){var n=[],s=this.checkableData.map(function(e){return e[i.keyProp]});e.forEach(function(e){s.indexOf(e)>-1&&n.push(e)}),this.checkChangeByUser=!1,this.checked=n}}}},computed:{filteredData:function(){var e=this;return this.data.filter(function(t){return"function"==typeof e.filterMethod?e.filterMethod(e.query,t):(t[e.labelProp]||t[e.keyProp].toString()).toLowerCase().indexOf(e.query.toLowerCase())>-1})},checkableData:function(){var e=this;return this.filteredData.filter(function(t){return!t[e.disabledProp]})},checkedSummary:function(){var e=this.checked.length,t=this.data.length,i=this.format,n=i.noChecked,s=i.hasChecked;return n&&s?e>0?s.replace(/\${checked}/g,e).replace(/\${total}/g,t):n.replace(/\${total}/g,t):e+"/"+t},isIndeterminate:function(){var e=this.checked.length;return e>0&&e0&&0===this.filteredData.length},inputIcon:function(){return this.query.length>0&&this.inputHover?"circle-close":"search"},labelProp:function(){return this.props.label||"label"},keyProp:function(){return this.props.key||"key"},disabledProp:function(){return this.props.disabled||"disabled"},hasFooter:function(){return!!this.$slots.default}},methods:{updateAllChecked:function(){var e=this,t=this.checkableData.map(function(t){return t[e.keyProp]});this.allChecked=t.length>0&&t.every(function(t){return e.checked.indexOf(t)>-1})},handleAllCheckedChange:function(e){var t=this;this.checked=e?this.checkableData.map(function(e){return e[t.keyProp]}):[]},clearQuery:function(){"circle-close"===this.inputIcon&&(this.query="")}}},nc,[],!1,null,null,null);sc.options.__file="packages/transfer/src/transfer-panel.vue";var rc=sc.exports,ac=s({name:"ElTransfer",mixins:[k.a,f.a,C.a],components:{TransferPanel:rc,ElButton:K.a},props:{data:{type:Array,default:function(){return[]}},titles:{type:Array,default:function(){return[]}},buttonTexts:{type:Array,default:function(){return[]}},filterPlaceholder:{type:String,default:""},filterMethod:Function,leftDefaultChecked:{type:Array,default:function(){return[]}},rightDefaultChecked:{type:Array,default:function(){return[]}},renderContent:Function,value:{type:Array,default:function(){return[]}},format:{type:Object,default:function(){return{}}},filterable:Boolean,props:{type:Object,default:function(){return{label:"label",key:"key",disabled:"disabled"}}},targetOrder:{type:String,default:"original"}},data:function(){return{leftChecked:[],rightChecked:[]}},computed:{dataObj:function(){var e=this.props.key;return this.data.reduce(function(t,i){return(t[i[e]]=i)&&t},{})},sourceData:function(){var e=this;return this.data.filter(function(t){return-1===e.value.indexOf(t[e.props.key])})},targetData:function(){var e=this;return"original"===this.targetOrder?this.data.filter(function(t){return e.value.indexOf(t[e.props.key])>-1}):this.value.reduce(function(t,i){var n=e.dataObj[i];return n&&t.push(n),t},[])},hasButtonTexts:function(){return 2===this.buttonTexts.length}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}},methods:{getMigratingConfig:function(){return{props:{"footer-format":"footer-format is renamed to format."}}},onSourceCheckedChange:function(e,t){this.leftChecked=e,void 0!==t&&this.$emit("left-check-change",e,t)},onTargetCheckedChange:function(e,t){this.rightChecked=e,void 0!==t&&this.$emit("right-check-change",e,t)},addToLeft:function(){var e=this.value.slice();this.rightChecked.forEach(function(t){var i=e.indexOf(t);i>-1&&e.splice(i,1)}),this.$emit("input",e),this.$emit("change",e,"left",this.rightChecked)},addToRight:function(){var e=this,t=this.value.slice(),i=[],n=this.props.key;this.data.forEach(function(t){var s=t[n];e.leftChecked.indexOf(s)>-1&&-1===e.value.indexOf(s)&&i.push(s)}),t="unshift"===this.targetOrder?i.concat(t):t.concat(i),this.$emit("input",t),this.$emit("change",t,"right",this.leftChecked)},clearQuery:function(e){"left"===e?this.$refs.leftPanel.query="":"right"===e&&(this.$refs.rightPanel.query="")}}},ic,[],!1,null,null,null);ac.options.__file="packages/transfer/src/main.vue";var oc=ac.exports;oc.install=function(e){e.component(oc.name,oc)};var lc=oc,cc=function(){var e=this.$createElement;return(this._self._c||e)("section",{staticClass:"el-container",class:{"is-vertical":this.isVertical}},[this._t("default")],2)};cc._withStripped=!0;var uc=s({name:"ElContainer",componentName:"ElContainer",props:{direction:String},computed:{isVertical:function(){return"vertical"===this.direction||"horizontal"!==this.direction&&(!(!this.$slots||!this.$slots.default)&&this.$slots.default.some(function(e){var t=e.componentOptions&&e.componentOptions.tag;return"el-header"===t||"el-footer"===t}))}}},cc,[],!1,null,null,null);uc.options.__file="packages/container/src/main.vue";var hc=uc.exports;hc.install=function(e){e.component(hc.name,hc)};var dc=hc,pc=function(){var e=this.$createElement;return(this._self._c||e)("header",{staticClass:"el-header",style:{height:this.height}},[this._t("default")],2)};pc._withStripped=!0;var fc=s({name:"ElHeader",componentName:"ElHeader",props:{height:{type:String,default:"60px"}}},pc,[],!1,null,null,null);fc.options.__file="packages/header/src/main.vue";var mc=fc.exports;mc.install=function(e){e.component(mc.name,mc)};var vc=mc,gc=function(){var e=this.$createElement;return(this._self._c||e)("aside",{staticClass:"el-aside",style:{width:this.width}},[this._t("default")],2)};gc._withStripped=!0;var bc=s({name:"ElAside",componentName:"ElAside",props:{width:{type:String,default:"300px"}}},gc,[],!1,null,null,null);bc.options.__file="packages/aside/src/main.vue";var yc=bc.exports;yc.install=function(e){e.component(yc.name,yc)};var xc=yc,_c=function(){var e=this.$createElement;return(this._self._c||e)("main",{staticClass:"el-main"},[this._t("default")],2)};_c._withStripped=!0;var Cc=s({name:"ElMain",componentName:"ElMain"},_c,[],!1,null,null,null);Cc.options.__file="packages/main/src/main.vue";var wc=Cc.exports;wc.install=function(e){e.component(wc.name,wc)};var kc=wc,Sc=function(){var e=this.$createElement;return(this._self._c||e)("footer",{staticClass:"el-footer",style:{height:this.height}},[this._t("default")],2)};Sc._withStripped=!0;var Dc=s({name:"ElFooter",componentName:"ElFooter",props:{height:{type:String,default:"60px"}}},Sc,[],!1,null,null,null);Dc.options.__file="packages/footer/src/main.vue";var $c=Dc.exports;$c.install=function(e){e.component($c.name,$c)};var Oc=$c,Ec=s({name:"ElTimeline",props:{reverse:{type:Boolean,default:!1}},provide:function(){return{timeline:this}},render:function(){var e=arguments[0],t=this.reverse,i={"el-timeline":!0,"is-reverse":t},n=this.$slots.default||[];return t&&(n=n.reverse()),e("ul",{class:i},[n])}},void 0,void 0,!1,null,null,null);Ec.options.__file="packages/timeline/src/main.vue";var Tc=Ec.exports;Tc.install=function(e){e.component(Tc.name,Tc)};var Mc=Tc,Pc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("li",{staticClass:"el-timeline-item"},[i("div",{staticClass:"el-timeline-item__tail"}),e.$slots.dot?e._e():i("div",{staticClass:"el-timeline-item__node",class:["el-timeline-item__node--"+(e.size||""),"el-timeline-item__node--"+(e.type||"")],style:{backgroundColor:e.color}},[e.icon?i("i",{staticClass:"el-timeline-item__icon",class:e.icon}):e._e()]),e.$slots.dot?i("div",{staticClass:"el-timeline-item__dot"},[e._t("dot")],2):e._e(),i("div",{staticClass:"el-timeline-item__wrapper"},[e.hideTimestamp||"top"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-top"},[e._v("\n "+e._s(e.timestamp)+"\n ")]),i("div",{staticClass:"el-timeline-item__content"},[e._t("default")],2),e.hideTimestamp||"bottom"!==e.placement?e._e():i("div",{staticClass:"el-timeline-item__timestamp is-bottom"},[e._v("\n "+e._s(e.timestamp)+"\n ")])])])};Pc._withStripped=!0;var Ic=s({name:"ElTimelineItem",inject:["timeline"],props:{timestamp:String,hideTimestamp:{type:Boolean,default:!1},placement:{type:String,default:"bottom"},type:String,color:String,size:{type:String,default:"normal"},icon:String}},Pc,[],!1,null,null,null);Ic.options.__file="packages/timeline/src/item.vue";var Nc=Ic.exports;Nc.install=function(e){e.component(Nc.name,Nc)};var jc=Nc,Fc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",e._b({class:["el-link",e.type?"el-link--"+e.type:"",e.disabled&&"is-disabled",e.underline&&!e.disabled&&"is-underline"],attrs:{href:e.disabled?null:e.href},on:{click:e.handleClick}},"a",e.$attrs,!1),[e.icon?i("i",{class:e.icon}):e._e(),e.$slots.default?i("span",{staticClass:"el-link--inner"},[e._t("default")],2):e._e(),e.$slots.icon?[e.$slots.icon?e._t("icon"):e._e()]:e._e()],2)};Fc._withStripped=!0;var Lc=s({name:"ElLink",props:{type:{type:String,default:"default"},underline:{type:Boolean,default:!0},disabled:Boolean,href:String,icon:String},methods:{handleClick:function(e){this.disabled||this.href||this.$emit("click",e)}}},Fc,[],!1,null,null,null);Lc.options.__file="packages/link/src/main.vue";var Ac=Lc.exports;Ac.install=function(e){e.component(Ac.name,Ac)};var Vc=Ac,zc={functional:!0,name:"ElDivider",props:{direction:{type:String,default:"horizontal",validator:function(e){return-1!==["horizontal","vertical"].indexOf(e)}},contentPosition:{type:String,default:"center",validator:function(e){return-1!==["left","center","right"].indexOf(e)}}},render:function(e,t){var i=t.slots(),n=t.props,s=n.direction,r=n.contentPosition;return e("div",{class:["el-divider","el-divider--"+s]},[i.default&&"vertical"!==s?e("div",{class:["el-divider__text","is-"+r]},[i.default]):null])},install:function(e){e.component(zc.name,zc)}},Bc=zc,Rc=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-image"},[e.loading?e._t("placeholder",[i("div",{staticClass:"el-image__placeholder"})]):e.error?e._t("error",[i("div",{staticClass:"el-image__error"},[e._v(e._s(e.t("el.image.error")))])]):i("img",e._g(e._b({staticClass:"el-image__inner",class:{"el-image__inner--center":e.alignCenter},style:e.imageStyle,attrs:{src:e.src}},"img",e.$attrs,!1),e.$listeners))],2)};Rc._withStripped=!0;var Hc=function(){return void 0!==document.documentElement.style.objectFit},Wc="none",qc="contain",Kc="cover",Yc="fill",Uc="scale-down",Gc=s({name:"ElImage",mixins:[f.a],inheritAttrs:!1,props:{src:String,fit:String,lazy:Boolean,scrollContainer:{}},data:function(){return{loading:!0,error:!1,show:!this.lazy,imageWidth:0,imageHeight:0}},computed:{imageStyle:function(){var e=this.fit;return!this.$isServer&&e?Hc()?{"object-fit":e}:this.getImageStyle(e):{}},alignCenter:function(){return!this.$isServer&&!Hc()&&this.fit!==Yc}},watch:{src:function(e){this.show&&this.loadImage()},show:function(e){e&&this.loadImage()}},mounted:function(){this.lazy?this.addLazyLoadListener():this.loadImage()},beforeDestroy:function(){this.lazy&&this.removeLazyLoadListener()},methods:{loadImage:function(){var e=this;if(!this.$isServer){this.loading=!0,this.error=!1;var t=new Image;t.onload=function(i){return e.handleLoad(i,t)},t.onerror=this.handleError.bind(this),Object.keys(this.$attrs).forEach(function(i){var n=e.$attrs[i];t.setAttribute(i,n)}),t.src=this.src}},handleLoad:function(e,t){this.imageWidth=t.width,this.imageHeight=t.height,this.loading=!1},handleError:function(e){this.loading=!1,this.error=!0,this.$emit("error",e)},handleLazyLoad:function(){Object(fe.isInContainer)(this.$el,this._scrollContainer)&&(this.show=!0,this.removeLazyLoadListener())},addLazyLoadListener:function(){if(!this.$isServer){var e=this.scrollContainer,t=null;(t=Object(No.isHtmlElement)(e)?e:Object(No.isString)(e)?document.querySelector(e):Object(fe.getScrollContainer)(this.$el))&&(this._scrollContainer=t,this._lazyLoadHandler=Uo()(200,this.handleLazyLoad),Object(fe.on)(t,"scroll",this._lazyLoadHandler),this.handleLazyLoad())}},removeLazyLoadListener:function(){var e=this._scrollContainer,t=this._lazyLoadHandler;!this.$isServer&&e&&t&&(Object(fe.off)(e,"scroll",t),this._scrollContainer=null,this._lazyLoadHandler=null)},getImageStyle:function(e){var t=this.imageWidth,i=this.imageHeight,n=this.$el,s=n.clientWidth,r=n.clientHeight;if(!(t&&i&&s&&r))return{};var a=t/i<1;e===Uc&&(e=tr)return console.warn("[ElementCalendar]end time should be greater than start time"),[];if(Object(fn.validateRangeInOneMonth)(s,r))return[[s,r]];var a=[],o=new Date(s.getFullYear(),s.getMonth()+1,1),l=this.toDate(o.getTime()-864e5);if(!Object(fn.validateRangeInOneMonth)(o,r))return console.warn("[ElementCalendar]start time and end time interval must not exceed two months"),[];a.push([s,l]);var c=o.getDay();return c=c<=1?Math.abs(c-1):8-c,(o=this.toDate(o.getTime()+864e5*c)).getDate()6?0:Math.floor(this.firstDayOfWeek)}},data:function(){return{selectedDay:"",now:new Date}}},Jc,[],!1,null,null,null);ru.options.__file="packages/calendar/src/main.vue";var au=ru.exports;au.install=function(e){e.component(au.name,au)};var ou=au,lu=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"el-fade-in"}},[e.visible?i("div",{staticClass:"el-backtop",style:{right:e.styleRight,bottom:e.styleBottom},on:{click:function(t){return t.stopPropagation(),e.handleClick(t)}}},[e._t("default",[i("el-icon",{attrs:{name:"caret-top"}})])],2):e._e()])};lu._withStripped=!0;var cu=s({name:"ElBacktop",props:{visibilityHeight:{type:Number,default:200},target:[String],right:{type:Number,default:40},bottom:{type:Number,default:40}},data:function(){return{el:null,container:null,visible:!1}},computed:{styleBottom:function(){return this.bottom+"px"},styleRight:function(){return this.right+"px"}},mounted:function(){this.init(),this.throttledScrollHandler=Uo()(300,this.onScroll),this.container.addEventListener("scroll",this.throttledScrollHandler)},methods:{init:function(){if(this.container=document,this.el=document.documentElement,this.target){if(this.el=document.querySelector(this.target),!this.el)throw new Error("target is not existed: "+this.target);this.container=this.el}},onScroll:function(){var e=this.el.scrollTop;this.visible=e>=this.visibilityHeight},handleClick:function(e){this.scrollToTop(),this.$emit("click",e)},scrollToTop:function(){var e=this.el,t=0,i=setInterval(function(){e.scrollTop<=0?clearInterval(i):(t+=10,e.scrollTop-=t)},20)}},beforeDestroy:function(){this.container.removeEventListener("scroll",this.throttledScrollHandler)}},lu,[],!1,null,null,null);cu.options.__file="packages/backtop/src/main.vue";var uu=cu.exports;uu.install=function(e){e.component(uu.name,uu)};var hu=uu,du=function(e,t){return e===window||e===document?document.documentElement[t]:e[t]},pu=function(e){return du(e,"offsetHeight")},fu="ElInfiniteScroll",mu={delay:{type:Number,default:200},distance:{type:Number,default:0},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},vu=function(e,t){return Object(No.isHtmlElement)(e)?function(e){return Object.keys(e||{}).map(function(t){return[t,e[t]]})}(mu).reduce(function(i,n){var s=n[0],r=n[1],a=r.type,o=r.default,l=e.getAttribute("infinite-scroll-"+s);switch(l=Object(No.isUndefined)(t[l])?l:t[l],a){case Number:l=Number(l),l=Number.isNaN(l)?o:l;break;case Boolean:l=Object(No.isDefined)(l)?"false"!==l&&Boolean(l):o;break;default:l=a(l)}return i[s]=l,i},{}):{}},gu=function(e){return e.getBoundingClientRect().top},bu=function(e){var t=this[fu],i=t.el,n=t.vm,s=t.container,r=t.observer,a=vu(i,n),o=a.distance;if(!a.disabled){var l=!1;if(s===i){var c=s.scrollTop+function(e){return du(e,"clientHeight")}(s);l=s.scrollHeight-c<=o}else{l=pu(i)+gu(i)-gu(s)-pu(s)+Number.parseFloat(function(e,t){if(e===window&&(e=document.documentElement),1!==e.nodeType)return[];var i=window.getComputedStyle(e,null);return t?i[t]:i}(s,"borderBottomWidth"))<=o}l&&Object(No.isFunction)(e)?e.call(n):r&&(r.disconnect(),this[fu].observer=null)}},yu={name:"InfiniteScroll",inserted:function(e,t,i){var n=t.value,s=i.context,r=Object(fe.getScrollContainer)(e,!0),a=vu(e,s),o=a.delay,l=a.immediate,c=T()(o,bu.bind(e,n));(e[fu]={el:e,vm:s,container:r,onScroll:c},r)&&(r.addEventListener("scroll",c),l&&((e[fu].observer=new MutationObserver(c)).observe(r,{childList:!0,subtree:!0}),c()))},unbind:function(e){var t=e[fu],i=t.container,n=t.onScroll;i&&i.removeEventListener("scroll",n)},install:function(e){e.directive(yu.name,yu)}},xu=yu,_u=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"el-page-header"},[i("div",{staticClass:"el-page-header__left",on:{click:function(t){e.$emit("back")}}},[i("i",{staticClass:"el-icon-back"}),i("div",{staticClass:"el-page-header__title"},[e._t("title",[e._v(e._s(e.title))])],2)]),i("div",{staticClass:"el-page-header__content"},[e._t("content",[e._v(e._s(e.content))])],2)])};_u._withStripped=!0;var Cu=s({name:"ElPageHeader",props:{title:{type:String,default:function(){return Object(Ft.t)("el.pageHeader.title")}},content:String}},_u,[],!1,null,null,null);Cu.options.__file="packages/page-header/src/main.vue";var wu=Cu.exports;wu.install=function(e){e.component(wu.name,wu)};var ku=wu,Su=function(){var e=this.$createElement,t=this._self._c||e;return t("div",{class:["el-cascader-panel",this.border&&"is-bordered"],on:{keydown:this.handleKeyDown}},this._l(this.menus,function(e,i){return t("cascader-menu",{key:i,ref:"menu",refInFor:!0,attrs:{index:i,nodes:e}})}),1)};Su._withStripped=!0;var Du=i(43),$u=i.n(Du),Ou=function(e){return e.stopPropagation()},Eu=s({inject:["panel"],components:{ElCheckbox:ri.a,ElRadio:$u.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some(function(t){return e.isInPath(t)})},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,i=this.node,n=this.isDisabled,s=this.config,r=s.multiple;!s.checkStrictly&&n||i.loading||(s.lazy&&!i.loaded?t.lazyLoad(i,function(){var t=e.isLeaf;if(t||e.handleExpand(),r){var n=!!t&&i.checked;e.handleMultiCheckChange(n)}}):t.handleExpand(i))},handleCheckChange:function(){var e=this.panel,t=this.value;e.handleCheckChange(t)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node;return(e[t.level-1]||{}).uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,i=this.isChecked,n=this.config,s=n.checkStrictly;return n.multiple?this.renderCheckbox(e):s?this.renderRadio(e):t&&i?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,i=this.isLeaf;return t.loading?this.renderLoadingIcon(e):i?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,i=this.config,n=this.isDisabled,s={on:{change:this.handleMultiCheckChange},nativeOn:{}};return i.checkStrictly&&(s.nativeOn.click=Ou),e("el-checkbox",Qa()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:n}},s]))},renderRadio:function(e){var t=this.checkedValue,i=this.value,n=this.isDisabled;return Object(m.isEqual)(i,t)&&(i=t),e("el-radio",{attrs:{value:t,label:i,disabled:n},on:{change:this.handleCheckChange},nativeOn:{click:Ou}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,i=this.node,n=t.renderLabelFn;return e("span",{class:"el-cascader-node__label"},[(n?n({node:i,data:i.data}):null)||i.label])}},render:function(e){var t=this,i=this.inActivePath,n=this.inCheckedPath,s=this.isChecked,r=this.isLeaf,a=this.isDisabled,o=this.config,l=this.nodeId,c=o.expandTrigger,u=o.checkStrictly,h=o.multiple,d=!u&&a,p={on:{}};return r?a||u||h||(p.on.click=this.handleCheckChange):"click"===c?p.on.click=this.handleExpand:(p.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},p.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),e("li",Qa()([{attrs:{role:"menuitem",id:l,"aria-expanded":i,tabindex:d?null:-1},class:{"el-cascader-node":!0,"is-selectable":u,"in-active-path":i,"in-checked-path":n,"is-active":s,"is-disabled":d}},p]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},void 0,void 0,!1,null,null,null);Eu.options.__file="packages/cascader-panel/src/cascader-node.vue";var Tu=Eu.exports,Mu=s({name:"ElCascaderMenu",mixins:[f.a],inject:["panel"],components:{ElScrollbar:L.a,CascaderNode:Tu},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(m.generateId)()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,i=this.hoverTimer,n=this.$refs.hoverZone;if(t&&n)if(t.contains(e.target)){clearTimeout(i);var s=this.$el.getBoundingClientRect().left,r=e.clientX-s,a=this.$el,o=a.offsetWidth,l=a.offsetHeight,c=t.offsetTop,u=c+t.offsetHeight;n.innerHTML='\n \n \n '}else i||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,i=this.panel.isHoverMenu,n={on:{}};i&&(n.on.expand=this.handleExpand);var s=this.nodes.map(function(i,s){var r=i.hasChildren;return e("cascader-node",Qa()([{key:i.uid,attrs:{node:i,"node-id":t+"-"+s,"aria-haspopup":r,"aria-owns":r?t:null}},n]))});return[].concat(s,[i?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,i=this.menuId,n={nativeOn:{}};return this.panel.isHoverMenu&&(n.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",Qa()([{attrs:{tag:"ul",role:"menu",id:i,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},n]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},void 0,void 0,!1,null,null,null);Mu.options.__file="packages/cascader-panel/src/cascader-menu.vue";var Pu=Mu.exports,Iu=function(){function e(e,t){for(var i=0;i1?t-1:0),n=1;n1?n-1:0),r=1;r0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),i=this.isSameNode(e,t);this.doCheck(i)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},Iu(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,i=this.config,n=i.disabled,s=i.checkStrictly;return e[n]||!s&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,i=this.hasChildren,n=this.children,s=this.config,r=s.lazy,a=s.leaf;if(r){var o=Object(zt.isDef)(e[a])?e[a]:!!t&&!n.length;return this.hasChildren=!o,o}return!i}}]),e}();var Fu=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.config=i,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(m.coerceTruthyValueToArray)(e),this.nodes=e.map(function(e){return new ju(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var i=new ju(e,this.config,t);(t?t.children:this.nodes).push(i)},e.prototype.appendNodes=function(e,t){var i=this;(e=Object(m.coerceTruthyValueToArray)(e)).forEach(function(e){return i.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=e?this.leafNodes:this.flattedNodes;return t?i:function e(t,i){return t.reduce(function(t,n){return n.isLeaf?t.push(n):(!i&&t.push(n),t=t.concat(e(n.children,i))),t},[])}(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){e=Array.isArray(e)?e[e.length-1]:e;var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return t.value===e});return t&&t.length?t[0]:null}return null},e}(),Lu=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};Lt.a.use(t.locale),Lt.a.i18n(t.i18n),Xu.forEach(function(t){e.component(t.name,t)}),e.use(xu),e.use(ja.directive),e.prototype.$ELEMENT={size:t.size||"",zIndex:t.zIndex||2e3},e.prototype.$loading=ja.service,e.prototype.$msgbox=Js,e.prototype.$alert=Js.alert,e.prototype.$confirm=Js.confirm,e.prototype.$prompt=Js.prompt,e.prototype.$notify=da,e.prototype.$message=ko};"undefined"!=typeof window&&window.Vue&&Qu(window.Vue);t.default={version:"2.10.0",locale:Lt.a.use,i18n:Lt.a.i18n,install:Qu,CollapseTransition:ye.a,Loading:ja,Pagination:g,Dialog:$,Autocomplete:W,Dropdown:Q,DropdownMenu:te,DropdownItem:re,Menu:ge,Submenu:ke,MenuItem:Te,MenuItemGroup:Ne,Input:We,InputNumber:Ge,Radio:Ze,RadioGroup:st,RadioButton:lt,Checkbox:dt,CheckboxButton:vt,CheckboxGroup:xt,Switch:kt,Select:Ht,Option:Wt,OptionGroup:Ut,Button:Jt,ButtonGroup:ii,Table:rn,TableColumn:dn,DatePicker:cs,TimeSelect:gs,TimePicker:Ds,Popover:Ps,Tooltip:Ns,MessageBox:Js,Breadcrumb:ir,BreadcrumbItem:ar,Form:ur,FormItem:br,Tabs:Dr,TabPane:Tr,Tag:Ir,Tree:Qr,Alert:ia,Notification:da,Slider:Ca,Icon:Va,Row:Ba,Col:Wa,Upload:ro,Progress:co,Spinner:fo,Message:ko,Badge:Oo,Card:Po,Rate:Lo,Steps:Bo,Step:qo,Carousel:Qo,Scrollbar:tl,CarouselItem:rl,Collapse:cl,CollapseItem:pl,Cascader:Sl,ColorPicker:tc,Transfer:lc,Container:dc,Header:vc,Aside:xc,Main:kc,Footer:Oc,Timeline:Mc,TimelineItem:jc,Link:Vc,Divider:Bc,Image:Qc,Calendar:ou,Backtop:hu,InfiniteScroll:xu,PageHeader:ku,CascaderPanel:Ku,Avatar:Gu}}]).default},YWdi:function(e,t,i){"use strict";var n,s;"function"==typeof Symbol&&Symbol.iterator;void 0===(s="function"==typeof(n=function(){var e=window,t={placement:"bottom",gpuAcceleration:!0,offset:0,boundariesElement:"viewport",boundariesPadding:5,preventOverflowOrder:["left","right","top","bottom"],flipBehavior:"flip",arrowElement:"[x-arrow]",arrowOffset:0,modifiers:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"],modifiersIgnored:[],forceAbsolute:!1};function i(e,i,n){this._reference=e.jquery?e[0]:e,this.state={};var s=void 0===i||null===i,r=i&&"[object Object]"===Object.prototype.toString.call(i);return this._popper=s||r?this.parse(r?i:{}):i.jquery?i[0]:i,this._options=Object.assign({},t,n),this._options.modifiers=this._options.modifiers.map(function(e){if(-1===this._options.modifiersIgnored.indexOf(e))return"applyStyle"===e&&this._popper.setAttribute("x-placement",this._options.placement),this.modifiers[e]||e}.bind(this)),this.state.position=this._getPosition(this._popper,this._reference),u(this._popper,{position:this.state.position,top:0}),this.update(),this._setupEventListeners(),this}function n(t){var i=t.style.display,n=t.style.visibility;t.style.display="block",t.style.visibility="hidden",t.offsetWidth;var s=e.getComputedStyle(t),r=parseFloat(s.marginTop)+parseFloat(s.marginBottom),a=parseFloat(s.marginLeft)+parseFloat(s.marginRight),o={width:t.offsetWidth+a,height:t.offsetHeight+r};return t.style.display=i,t.style.visibility=n,o}function s(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function r(e){var t=Object.assign({},e);return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function a(e,t){var i,n=0;for(i in e){if(e[i]===t)return n;n++}return null}function o(t,i){var n=e.getComputedStyle(t,null);return n[i]}function l(t){var i=t.offsetParent;return i!==e.document.body&&i?i:e.document.documentElement}function c(t){var i=t.parentNode;return i?i===e.document?e.document.body.scrollTop||e.document.body.scrollLeft?e.document.body:e.document.documentElement:-1!==["scroll","auto"].indexOf(o(i,"overflow"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-x"))||-1!==["scroll","auto"].indexOf(o(i,"overflow-y"))?i:c(t.parentNode):t}function u(e,t){Object.keys(t).forEach(function(i){var n="";-1!==["width","height","top","right","bottom","left"].indexOf(i)&&function(e){return""!==e&&!isNaN(parseFloat(e))&&isFinite(e)}(t[i])&&(n="px"),e.style[i]=t[i]+n})}function h(e){var t={width:e.offsetWidth,height:e.offsetHeight,left:e.offsetLeft,top:e.offsetTop};return t.right=t.left+t.width,t.bottom=t.top+t.height,t}function d(e){var t=e.getBoundingClientRect(),i=-1!=navigator.userAgent.indexOf("MSIE"),n=i&&"HTML"===e.tagName?-e.scrollTop:t.top;return{left:t.left,top:n,right:t.right,bottom:t.bottom,width:t.right-t.left,height:t.bottom-n}}function p(t){for(var i=["","ms","webkit","moz","o"],n=0;n1&&console.warn("WARNING: the given `parent` query("+t.parent+") matched more than one element, the first one will be used"),0===a.length)throw"ERROR: the given `parent` doesn't exists!";a=a[0]}return a.length>1&&a instanceof Element==0&&(console.warn("WARNING: you have passed as parent a list of elements, the first one will be used"),a=a[0]),a.appendChild(s),s;function o(e,t){t.forEach(function(t){e.classList.add(t)})}function l(e,t){t.forEach(function(t){e.setAttribute(t.split(":")[0],t.split(":")[1]||"")})}},i.prototype._getPosition=function(t,i){return l(i),this._options.forceAbsolute?"absolute":function t(i){return i!==e.document.body&&("fixed"===o(i,"position")||(i.parentNode?t(i.parentNode):i))}(i)?"fixed":"absolute"},i.prototype._getOffsets=function(e,t,i){i=i.split("-")[0];var s={};s.position=this.state.position;var r="fixed"===s.position,a=function(e,t,i){var n=d(e),s=d(t);if(i){var r=c(t);s.top+=r.scrollTop,s.bottom+=r.scrollTop,s.left+=r.scrollLeft,s.right+=r.scrollLeft}return{top:n.top-s.top,left:n.left-s.left,bottom:n.top-s.top+n.height,right:n.left-s.left+n.width,width:n.width,height:n.height}}(t,l(e),r),o=n(e);return-1!==["right","left"].indexOf(i)?(s.top=a.top+a.height/2-o.height/2,s.left="left"===i?a.left-o.width:a.right):(s.left=a.left+a.width/2-o.width/2,s.top="top"===i?a.top-o.height:a.bottom),s.width=o.width,s.height=o.height,{popper:s,reference:a}},i.prototype._setupEventListeners=function(){if(this.state.updateBound=this.update.bind(this),e.addEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement){var t=c(this._reference);t!==e.document.body&&t!==e.document.documentElement||(t=e),t.addEventListener("scroll",this.state.updateBound),this.state.scrollTarget=t}},i.prototype._removeEventListeners=function(){e.removeEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement&&this.state.scrollTarget&&(this.state.scrollTarget.removeEventListener("scroll",this.state.updateBound),this.state.scrollTarget=null),this.state.updateBound=null},i.prototype._getBoundaries=function(t,i,n){var s,r={};if("window"===n){var a=e.document.body,o=e.document.documentElement;s=Math.max(a.scrollHeight,a.offsetHeight,o.clientHeight,o.scrollHeight,o.offsetHeight),r={top:0,right:Math.max(a.scrollWidth,a.offsetWidth,o.clientWidth,o.scrollWidth,o.offsetWidth),bottom:s,left:0}}else if("viewport"===n){var u=l(this._popper),d=c(this._popper),p=h(u),f="fixed"===t.offsets.popper.position?0:function(e){return e==document.body?Math.max(document.documentElement.scrollTop,document.body.scrollTop):e.scrollTop}(d),m="fixed"===t.offsets.popper.position?0:function(e){return e==document.body?Math.max(document.documentElement.scrollLeft,document.body.scrollLeft):e.scrollLeft}(d);r={top:0-(p.top-f),right:e.document.documentElement.clientWidth-(p.left-m),bottom:e.document.documentElement.clientHeight-(p.top-f),left:0-(p.left-m)}}else r=l(this._popper)===n?{top:0,left:0,right:n.clientWidth,bottom:n.clientHeight}:h(n);return r.left+=i,r.right-=i,r.top=r.top+i,r.bottom=r.bottom-i,r},i.prototype.runModifiers=function(e,t,i){var n=t.slice();return void 0!==i&&(n=this._options.modifiers.slice(0,a(this._options.modifiers,i))),n.forEach(function(t){(function(e){return e&&"[object Function]"==={}.toString.call(e)})(t)&&(e=t.call(this,e))}.bind(this)),e},i.prototype.isModifierRequired=function(e,t){var i=a(this._options.modifiers,e);return!!this._options.modifiers.slice(0,i).filter(function(e){return e===t}).length},i.prototype.modifiers={},i.prototype.modifiers.applyStyle=function(e){var t,i={position:e.offsets.popper.position},n=Math.round(e.offsets.popper.left),s=Math.round(e.offsets.popper.top);return this._options.gpuAcceleration&&(t=p("transform"))?(i[t]="translate3d("+n+"px, "+s+"px, 0)",i.top=0,i.left=0):(i.left=n,i.top=s),Object.assign(i,e.styles),u(this._popper,i),this._popper.setAttribute("x-placement",e.placement),this.isModifierRequired(this.modifiers.applyStyle,this.modifiers.arrow)&&e.offsets.arrow&&u(e.arrowElement,e.offsets.arrow),e},i.prototype.modifiers.shift=function(e){var t=e.placement,i=t.split("-")[0],n=t.split("-")[1];if(n){var s=e.offsets.reference,a=r(e.offsets.popper),o={y:{start:{top:s.top},end:{top:s.top+s.height-a.height}},x:{start:{left:s.left},end:{left:s.left+s.width-a.width}}},l=-1!==["bottom","top"].indexOf(i)?"x":"y";e.offsets.popper=Object.assign(a,o[l][n])}return e},i.prototype.modifiers.preventOverflow=function(e){var t=this._options.preventOverflowOrder,i=r(e.offsets.popper),n={left:function(){var t=i.left;return i.lefte.boundaries.right&&(t=Math.min(i.left,e.boundaries.right-i.width)),{left:t}},top:function(){var t=i.top;return i.tope.boundaries.bottom&&(t=Math.min(i.top,e.boundaries.bottom-i.height)),{top:t}}};return t.forEach(function(t){e.offsets.popper=Object.assign(i,n[t]())}),e},i.prototype.modifiers.keepTogether=function(e){var t=r(e.offsets.popper),i=e.offsets.reference,n=Math.floor;return t.rightn(i.right)&&(e.offsets.popper.left=n(i.right)),t.bottomn(i.bottom)&&(e.offsets.popper.top=n(i.bottom)),e},i.prototype.modifiers.flip=function(e){if(!this.isModifierRequired(this.modifiers.flip,this.modifiers.preventOverflow))return console.warn("WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!"),e;if(e.flipped&&e.placement===e._originalPlacement)return e;var t=e.placement.split("-")[0],i=s(t),n=e.placement.split("-")[1]||"",a=[];return(a="flip"===this._options.flipBehavior?[t,i]:this._options.flipBehavior).forEach(function(o,l){if(t===o&&a.length!==l+1){t=e.placement.split("-")[0],i=s(t);var c=r(e.offsets.popper),u=-1!==["right","bottom"].indexOf(t);(u&&Math.floor(e.offsets.reference[t])>Math.floor(c[i])||!u&&Math.floor(e.offsets.reference[t])o[p]&&(e.offsets.popper[h]+=l[h]+f-o[p]);var m=l[h]+(i||l[u]/2-f/2)-o[h];return m=Math.max(Math.min(o[u]-f-8,m),8),s[h]=m,s[d]="",e.offsets.arrow=s,e.arrowElement=t,e},Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(void 0===e||null===e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),i=1;i0&&void 0!==arguments[0]?arguments[0]:"";return String(e).replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")};var l=t.arrayFindIndex=function(e,t){for(var i=0;i!==e.length;++i)if(t(e[i]))return i;return-1},c=(t.arrayFind=function(e,t){var i=l(e,t);return-1!==i?e[i]:void 0},t.coerceTruthyValueToArray=function(e){return Array.isArray(e)?e:e?[e]:[]},t.isIE=function(){return!s.default.prototype.$isServer&&!isNaN(Number(document.documentMode))},t.isEdge=function(){return!s.default.prototype.$isServer&&navigator.userAgent.indexOf("Edge")>-1},t.autoprefixer=function(e){if("object"!==(void 0===e?"undefined":n(e)))return e;var t=["ms-","webkit-"];return["transform","transition","animation"].forEach(function(i){var n=e[i];i&&n&&t.forEach(function(t){e[t+i]=n})}),e},t.kebabCase=function(e){var t=/([^-])([A-Z])/g;return e.replace(t,"$1-$2").replace(t,"$1-$2").toLowerCase()},t.capitalize=function(e){return(0,r.isString)(e)?e.charAt(0).toUpperCase()+e.slice(1):e},t.looseEqual=function(e,t){var i=(0,r.isObject)(e),n=(0,r.isObject)(t);return i&&n?JSON.stringify(e)===JSON.stringify(t):!i&&!n&&String(e)===String(t)}),u=t.arrayEquals=function(e,t){if(e=e||[],t=t||[],e.length!==t.length)return!1;for(var i=0;i1?t-1:0),a=1;a-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){return-1*this.perimeter*(1-this.rate)/2+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"==typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"==typeof this.color?this.color(e):"string"==typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),i=0;ie)return t[i].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,i){return"string"==typeof e?{color:e,progress:(i+1)*t}:e})}}},r=i(0),a=Object(r.a)(s,n,[],!1,null,null,null);a.options.__file="packages/progress/src/progress.vue";var o=a.exports;o.install=function(e){e.component(o.name,o)};t.default=o}})},xWqt:function(e,t,i){"use strict";t.__esModule=!0,t.default=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e||!t)throw new Error("instance & callback is required");var s=!1,r=function(){s||(s=!0,t&&t.apply(null,arguments))};n?e.$once("after-leave",r):e.$on("after-leave",r),setTimeout(function(){r()},i+100)}}}]); +//# sourceMappingURL=chunk-elementUI.708d6b68.js.map \ No newline at end of file diff --git a/priv/static/adminfe/static/js/chunk-elementUI.708d6b68.js.map b/priv/static/adminfe/static/js/chunk-elementUI.708d6b68.js.map new file mode 100644 index 000000000..b49ada1f7 --- /dev/null +++ b/priv/static/adminfe/static/js/chunk-elementUI.708d6b68.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/element-ui/lib/utils/shared.js","webpack:///./node_modules/element-ui/lib/mixins/emitter.js","webpack:///./node_modules/element-ui/lib/utils/date.js","webpack:///./node_modules/element-ui/lib/utils/date-util.js","webpack:///./node_modules/element-ui/lib/checkbox.js","webpack:///./node_modules/element-ui/lib/option.js","webpack:///./node_modules/element-ui/lib/input-number.js","webpack:///./node_modules/element-ui/lib/utils/aria-utils.js","webpack:///./node_modules/element-ui/lib/utils/scrollbar-width.js","webpack:///./node_modules/element-ui/lib/utils/vue-popper.js","webpack:///./node_modules/element-ui/lib/button.js","webpack:///./node_modules/element-ui/lib/input.js","webpack:///./node_modules/element-ui/lib/locale/lang/zh-CN.js","webpack:///./node_modules/element-ui/lib/radio.js","webpack:///./node_modules/element-ui/lib/mixins/focus.js","webpack:///./node_modules/element-ui/lib/scrollbar.js","webpack:///./node_modules/element-ui/lib/mixins/migrating.js","webpack:///./node_modules/element-ui/lib/tooltip.js","webpack:///./node_modules/element-ui/lib/utils/scroll-into-view.js","webpack:///./node_modules/element-ui/lib/locale/lang/es.js","webpack:///./node_modules/element-ui/lib/utils/resize-event.js","webpack:///./node_modules/element-ui/lib/utils/clickoutside.js","webpack:///./node_modules/element-ui/lib/utils/vdom.js","webpack:///./node_modules/element-ui/lib/cascader-panel.js","webpack:///./node_modules/element-ui/lib/locale/index.js","webpack:///./node_modules/element-ui/lib/utils/popup/popup-manager.js","webpack:///./node_modules/element-ui/lib/select.js","webpack:///./node_modules/element-ui/lib/utils/popup/index.js","webpack:///./node_modules/element-ui/lib/transitions/collapse-transition.js","webpack:///./node_modules/element-ui/lib/utils/dom.js","webpack:///./node_modules/element-ui/lib/element-ui.common.js","webpack:///./node_modules/element-ui/lib/utils/popper.js","webpack:///./node_modules/element-ui/lib/mixins/locale.js","webpack:///./node_modules/element-ui/lib/utils/aria-dialog.js","webpack:///./node_modules/element-ui/lib/utils/merge.js","webpack:///./node_modules/element-ui/lib/checkbox-group.js","webpack:///./node_modules/element-ui/lib/utils/util.js","webpack:///./node_modules/element-ui/lib/button-group.js","webpack:///./node_modules/element-ui/lib/tag.js","webpack:///./node_modules/element-ui/node_modules/deepmerge/dist/cjs.js","webpack:///./node_modules/element-ui/lib/locale/format.js","webpack:///./node_modules/element-ui/lib/utils/types.js","webpack:///./node_modules/element-ui/lib/locale/lang/en.js","webpack:///./node_modules/element-ui/lib/progress.js","webpack:///./node_modules/element-ui/lib/utils/after-leave.js"],"names":["exports","__esModule","isDef","val","undefined","isKorean","text","test","default","methods","dispatch","componentName","eventName","params","parent","this","$parent","$root","name","$options","$emit","apply","concat","broadcast","_broadcast","$children","forEach","child","call","__WEBPACK_AMD_DEFINE_RESULT__","main","fecha","token","word","literal","noop","shorten","arr","sLen","newArr","i","len","length","push","substr","monthUpdate","arrName","d","v","i18n","index","indexOf","charAt","toUpperCase","toLowerCase","month","pad","String","dayNames","monthNames","monthNamesShort","dayNamesShort","amPm","DoFn","D","formatFlags","dateObj","getDay","DD","Do","getDate","dd","ddd","dddd","M","getMonth","MM","MMM","MMMM","yy","getFullYear","yyyy","h","getHours","hh","H","HH","m","getMinutes","mm","s","getSeconds","ss","S","Math","round","getMilliseconds","SS","SSS","a","A","ZZ","o","getTimezoneOffset","floor","abs","parseFlags","day","parseInt","cent","Date","year","hour","minute","second","millisecond","isPm","minutes","parts","match","timezoneOffset","masks","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","format","mask","i18nSettings","Object","prototype","toString","isNaN","getTime","Error","literals","replace","$0","$1","slice","shift","parse","dateStr","dateInfo","parseInfo","newFormat","str","regexEscape","info","matches","RegExp","date","today","UTC","module","__webpack_require__","validateRangeInOneMonth","extractTimeFormat","extractDateFormat","nextYear","prevYear","nextMonth","prevMonth","changeYearMonthAndClampDate","timeWithinRange","limitTimeRange","clearMilliseconds","clearTime","modifyWithTimeString","modifyTime","modifyDate","range","getRangeMinutes","getMonthDays","getPrevMonthLastDays","getRangeHours","getWeekNumber","getStartDateOfMonth","nextDate","prevDate","getFirstDayOfMonth","getDayCountOfYear","getDayCountOfMonth","parseDate","formatDate","isDateObject","isDate","toDate","getI18nSettings","_date2","obj","_interopRequireDefault","_locale","weeks","months","map","week","t","Array","isArray","string","temp","setDate","amount","arguments","result","src","setHours","week1","ranges","hours","disabledHours","value","start","end","newArray","_i","lastDay","_","days","setRangeData","startHour","startMinute","endHour","endMinute","n","y","time","normalizeDate","ndate","nranges","some","nrange","minDate","maxDate","min","max","selectableRange","monthDate","trim","modules","installedModules","moduleId","l","c","getter","defineProperty","enumerable","get","r","Symbol","toStringTag","mode","ns","create","key","bind","object","property","hasOwnProperty","p","0","__webpack_exports__","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","105","_vm","_h","$createElement","_c","_self","staticClass","class","border","checkboxSize","is-disabled","isDisabled","is-bordered","is-checked","isChecked","attrs","role","aria-checked","indeterminate","aria-disabled","id","is-indeterminate","is-focus","focus","trueLabel","falseLabel","directives","rawName","model","expression","type","aria-hidden","disabled","true-value","false-value","domProps","checked","_q","on","change","$event","$$a","$$el","target","$$c","$$i","handleChange","blur","label","$$v","$slots","_t","_e","_v","_s","_withStripped","emitter_","src_checkboxvue_type_script_lang_js_","mixins","inject","elForm","elFormItem","data","selfModel","isLimitExceeded","computed","isGroup","store","set","_checkboxGroup","isLimitDisabled","_elFormItemSize","elFormItemSize","temCheckboxSize","size","$ELEMENT","checkboxGroupSize","props","Boolean","Number","controls","addToStore","ev","_this","$nextTick","created","mounted","$el","setAttribute","watch","_value","componentNormalizer","component","__file","src_checkbox","install","Vue","4","3","33","visible","selected","itemSelected","groupDisabled","limitReached","hover","mouseenter","hoverItem","click","stopPropagation","selectOptionClick","currentLabel","emitter_default","util_","_typeof","iterator","constructor","src_optionvue_type_script_lang_js_","required","hitState","isObject","currentValue","select","multiple","contains","isEqual","multipleLimit","remote","oldVal","_select","valueKey","b","item","handleGroupDisabled","hoverIndex","queryChange","query","filteredOptionsCount","cachedOptions","optionsCount","$on","beforeDestroy","onOptionDestroy","52","_select_src_option__WEBPACK_IMPORTED_MODULE_0__","10","2","21","30","element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__","el","binding","vnode","interval","startTime","handler","clear","now","clearInterval","e","button","document","setInterval","92","inputNumberSize","inputNumberDisabled","is-without-controls","is-controls-right","controlsAtRight","dragstart","preventDefault","decrease","minDisabled","keydown","_k","keyCode","increase","maxDisabled","ref","displayValue","placeholder","handleBlur","handleFocus","input","handleInput","handleInputChange","nativeOn","input_","input_default","focus_","focus_default","repeat_click","src_input_numbervue_type_script_lang_js_","repeatClick","components","ElInput","step","stepStrictly","Infinity","controlsPosition","precision","validator","userInput","immediate","newVal","stepPrecision","getPrecision","precisionFactor","pow","toPrecision","_decrease","_increase","numPrecision","console","warn","toFixed","num","parseFloat","valueString","dotPosition","setCurrentValue","event","$refs","innerInput","updated","input_number","aria","Utils","focusFirstDescendant","element","childNodes","attemptFocus","focusLastDescendant","isFocusable","IgnoreUtilFocusChanges","activeElement","tabIndex","getAttribute","nodeName","href","rel","triggerEvent","elm","evt","createEvent","_len","opts","_key","initEvent","dispatchEvent","fireEvent","keys","tab","enter","space","left","up","right","down","esc","_vue2","$isServer","scrollBarWidth","outer","createElement","className","style","visibility","width","position","top","body","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","_popup","PopperJS","stop","transformOrigin","placement","boundariesPadding","reference","popper","offset","visibleArrow","arrowOffset","appendToBody","popperOptions","gpuAcceleration","showPopper","currentPlacement","updatePopper","destroyPopper","createPopper","popperElm","referenceElm","appendArrow","popperJS","destroy","onCreate","resetTransformOrigin","onUpdate","_popper","zIndex","PopupManager","nextZIndex","addEventListener","update","doDestroy","forceDestroy","split","origin","bottom","hash","appended","attributes","arrow","removeEventListener","deactivated","85","buttonSize","buttonDisabled","is-loading","loading","is-plain","plain","is-round","is-circle","circle","autofocus","nativeType","handleClick","icon","src_buttonvue_type_script_lang_js_","src_button","11","75","inputSize","inputDisabled","is-exceed","inputExceed","el-input-group","prepend","append","el-input-group--append","el-input-group--prepend","el-input--prefix","prefix","prefixIcon","el-input--suffix","suffix","suffixIcon","clearable","showPassword","hovering","mouseleave","_b","tabindex","passwordVisible","readonly","autocomplete","autoComplete","aria-label","compositionstart","handleCompositionStart","compositionend","handleCompositionEnd","$attrs","getSuffixVisible","showClear","showPwdVisible","isWordLimitVisible","handlePasswordVisible","textLength","upperLimit","validateState","validateIcon","textareaStyle","migrating_","migrating_default","hiddenTextarea","HIDDEN_STYLE","CONTEXT_STYLE","calcTextareaHeight","targetElement","minRows","maxRows","_calculateNodeStyling","window","getComputedStyle","boxSizing","getPropertyValue","paddingSize","borderSize","contextStyle","join","calculateNodeStyling","height","scrollHeight","singleRowHeight","minHeight","maxHeight","merge_","merge_default","src_inputvue_type_script_lang_js_","inheritAttrs","textareaCalcStyle","focused","isComposing","resize","form","autosize","validateEvent","showWordLimit","needStatusIcon","statusIcon","validating","success","error","nativeInputValue","maxlength","resizeTextarea","setNativeInputValue","updateIconOffset","getInput","getMigratingConfig","on-icon-click","events","textarea","calcIconOffset","place","elList","querySelectorAll","pendant","transform","querySelector","removeAttribute","9","colorpicker","confirm","datepicker","cancel","selectDate","selectTime","startDate","endDate","endTime","month1","month2","month3","month4","month5","month6","month7","month8","month9","month10","month11","month12","sun","mon","tue","wed","thu","fri","sat","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","noMatch","noData","cascader","pagination","goto","pagesize","total","pageClassifier","messagebox","title","upload","deleteTip","delete","preview","continue","table","emptyText","confirmFilter","resetFilter","clearFilter","sumText","tree","transfer","titles","filterPlaceholder","noCheckedFormat","hasCheckedFormat","image","pageHeader","96","radioSize","src_radiovue_type_script_lang_js_","_radioGroup","radio","temRadioSize","radioGroupSize","src_radio","122","resize_event_","scrollbar_width_","scrollbar_width_default","dom_","BAR_MAP","vertical","scroll","scrollSize","axis","client","direction","horizontal","src_bar","move","bar","wrap","mousedown","clickTrackHandler","clickThumbHandler","_ref","translate","msTransform","webkitTransform","renderThumbStyle","ctrlKey","startDrag","currentTarget","getBoundingClientRect","thumbPositionPercentage","thumb","stopImmediatePropagation","cursorDown","mouseMoveDocumentHandler","mouseUpDocumentHandler","onselectstart","prevPage","destroyed","Bar","native","wrapStyle","wrapClass","viewClass","viewStyle","noresize","tag","sizeWidth","sizeHeight","moveX","moveY","gutter","gutterWith","gutterStyle","marginRight","marginBottom","view","handleScroll","scrollTop","clientHeight","scrollLeft","clientWidth","heightPercentage","widthPercentage","scrollWidth","13","37","127","vue_popper_","vue_popper_default","debounce_","debounce_default","external_vue_","external_vue_default","openDelay","manual","effect","popperClass","content","transition","enterable","hideAfter","tooltipId","timeoutPending","focusing","popperVM","node","$mount","debounceClose","handleClosePopper","_this2","afterLeave","setExpectedState","firstElement","getFirstElement","addTooltipClass","_this3","nodeType","show","hide","instance","componentInstance","removeFocusing","handleShowPopper","prev","_this4","expectedState","clearTimeout","timeout","setTimeout","slots","$destroy","14","5","7","container","offsetParents","pointer","offsetParent","offsetTop","reduce","curr","offsetHeight","viewRectTop","viewRectBottom","removeResizeListener","addResizeListener","_resizeObserverPolyfill2","isServer","resizeHandler","entries","_iterator","_isArray","next","done","listeners","__resizeListeners__","fn","__ro__","observe","splice","disconnect","_dom","nodeList","ctx","startClick","seed","createDocumentHandler","mouseup","methodName","bindingFn","documentHandler","unbind","isVNode","_util","hasOwn","15","17","22","26","31","39","51","57","cascader_panelvue_type_template_id_34932346_render","handleKeyDown","_l","menus","menu","refInFor","nodes","external_babel_helper_vue_jsx_merge_props_","external_babel_helper_vue_jsx_merge_props_default","scrollbar_","scrollbar_default","checkbox_","checkbox_default","radio_","radio_default","src_cascader_nodevue_type_script_lang_js_","ElCheckbox","ElRadio","nodeId","config","panel","isLeaf","checkedValue","isSameNode","inActivePath","isInPath","activePath","inCheckedPath","checkStrictly","checkedNodePaths","checkedPath","getValueByOption","handleExpand","lazy","loaded","lazyLoad","handleMultiCheckChange","handleCheckChange","doCheck","calculateMultiCheckedValue","pathNodes","level","uid","renderPrefix","renderCheckbox","renderRadio","renderCheckIcon","renderPostfix","renderLoadingIcon","renderExpandIcon","renderContent","renderLabelFn","expandTrigger","aria-expanded","el-cascader-node","is-selectable","in-active-path","in-checked-path","is-active","cascader_node_render","cascader_node_staticRenderFns","cascader_node","locale_","src_cascader_menuvue_type_script_lang_js_","ElScrollbar","CascaderNode","activeNode","hoverTimer","isEmpty","menuId","handleMouseMove","hoverZone","startX","clientX","_$el","innerHTML","clearHoverZone","hoverThreshold","renderEmptyText","renderNodeList","isHoverMenu","expand","hasChildren","node-id","aria-haspopup","aria-owns","mousemove","wrap-class","view-class","el-cascader-menu__list","is-empty","cascader_menu_component","cascader_menu_render","cascader_menu_staticRenderFns","cascader_menu","shared_","_createClass","defineProperties","descriptor","configurable","writable","Constructor","protoProps","staticProps","src_node","Node","TypeError","_classCallCheck","initState","initChildren","_config","labelKey","calculatePathNodes","path","pathLabels","childrenKey","children","childrenData","unshift","getPath","getValue","emitPath","getText","allLevels","separator","args","handlerName","emit","_len2","_key2","onParentCheck","setCheckState","onChildCheck","validChildren","filter","every","totalNum","checkedNum","syncCheckState","disabledKey","_config2","leafKey","leaf","src_store","Store","store_classCallCheck","initNodes","nodeData","flattedNodes","getFlattedNodes","leafNodes","appendNode","appendNodes","nodeDataList","getNodes","leafOnly","cached","cachedNodes","flatNodes","res","getNodeByValue","aria_utils_","aria_utils_default","scroll_into_view_","scroll_into_view_default","_extends","assign","source","KeyCode","DefaultProps","cascader_panelvue_type_script_lang_js_isLeaf","getSibling","distance","siblings","getMenuIndex","pieces","focusNode","src_cascader_panelvue_type_script_lang_js_","CascaderMenu","renderLabel","Function","provide","$scopedSlots","initStore","deep","syncCheckedValue","calculateCheckedNodePaths","syncMenuState","syncActivePath","syncMultiCheckState","scrollIntoView","checkedValues","checkedNode","preMenu","expandedNode","nextMenu","firstNode","checkNode","silent","pathValues","onFullfiled","root","dataList","getCheckedNodes","menuElement","clearCheckedNodes","cascader_panel_component","cascader_panel","6","use","_zhCN2","_deepmerge2","lang","merged","i18nHandler","vuei18n","getPrototypeOf","$t","locale","clone","array","current","j","hasModal","hasInitZIndex","getModal","modalDom","doOnModalClick","instances","modalFade","getInstance","register","deregister","modalStack","topItem","closeOnClickModal","close","openModal","dom","modalClass","addClass","removeClass","display","closeModal","pop","topPopup","getTopPopup","closeOnPressEscape","handleClose","handleAction","selectSize","toggleMenu","max-width","inputWidth","collapseTags","closable","selectDisabled","collapseTagSize","hit","disable-transitions","deleteTag","after-leave","resetInputHeight","getValueKey","filterable","flex-grow","inputLength","softFocus","keyup","managePlaceholder","resetInputState","navigateOptions","selectOption","deletePrevTag","handleComposition","compositionupdate","composing","debouncedQueryChange","currentPlaceholder","validate-event","debouncedOnInputChange","paste","inputHovering","selectedLabel","callback","slot","showClose","iconClass","handleClearClick","before-enter","handleMenuEnter","append-to-body","popperAppendToBody","allowCreate","showNewOption","empty","locale_default","select_dropdownvue_type_template_id_06828748_render","is-multiple","minWidth","src_select_dropdownvue_type_script_lang_js_","$parent.inputWidth","select_dropdown","src_option","tag_","tag_default","clickoutside_","clickoutside_default","lib_locale_","src_selectvue_type_script_lang_js_","hoverOption","optionsAllDisabled","option","scrollToOption","hasValue","debounce","loadingText","noMatchText","noDataText","hasExistingOption","ElSelectMenu","ElOption","ElTag","Clickoutside","automaticDropdown","remoteMethod","filterMethod","defaultFirstOption","reserveKeyword","createdLabel","createdSelected","initialInputHeight","cachedPlaceHolder","previousQuery","menuVisibleOnFocus","isOnComposition","isSilentBlur","handleQueryChange","setSelected","resetHoverIndex","inputs","checkDefaultFirstOption","_this5","lastCharacter","_this6","scrollbar","_this7","emitChange","getOption","isNull","isUndefined","cachedOption","newOption","_this8","_this9","deleteSelected","toggleLastOptionHitState","_this10","inputChildNodes","tagName","tags","sizeInMap","_this11","handleOptionSelect","byClick","_this12","optionIndex","getValueIndex","setSoftFocus","onInputChange","resetInputWidth","handleResize","hasCreated","_this13","_this14","medium","small","mini","select_component","src_select","_merge2","_popupManager2","_scrollbarWidth2","idSeed","closeDelay","modal","modalAppendToBody","lockScroll","beforeMount","_popupId","restoreBodyStyle","opened","bodyPaddingRight","computedBodyPaddingRight","withoutHiddenClass","rendered","_opening","open","nextTick","$props","_closeTimer","_openTimer","doOpen","willOpen","_closing","hasClass","paddingRight","getStyle","bodyHasOverflow","documentElement","bodyOverflowY","onOpen","doAfterOpen","willClose","doClose","onClose","doAfterClose","Transition","beforeEnter","dataset","oldPaddingTop","paddingTop","oldPaddingBottom","paddingBottom","oldOverflow","afterEnter","beforeLeave","leave","isInContainer","getScrollContainer","isScroll","once","off","cls","curClass","classes","clsName","classList","remove","setStyle","styleName","prop","camelCase","ieVersion","SPECIAL_CHARS_REGEXP","MOZ_HACK_REGEXP","documentMode","letter","attachEvent","detachEvent","listener","filters","opacity","currentStyle","defaultView","includes","elRect","containerRect","innerWidth","innerHeight","pagervue_type_template_id_7274f267_render","onPagerClick","pageCount","active","currentPage","showPrevMore","quickprevIconClass","onMouseenter","pagers","pager","showNextMore","quicknextIconClass","pagerCount","newPage","textContent","pagerCountOffset","halfPagerCount","_i2","_i3","select_","select_default","option_","option_default","pageSize","layout","pageSizes","prevText","nextText","background","hideOnSinglePage","internalCurrentPage","internalPageSize","lastEmittedPage","userChangePageSize","internalPageCount","template","is-background","el-pagination--small","TEMPLATE_MAP","jumper","handleCurrentChange","sizes","rightWrapper","haveRightWrapper","compo","Prev","Next","Sizes","ElSelect","Jumper","$parent.internalCurrentPage","handleKeyup","getValidCurrentPage","Total","Pager","resetValue","ceil","oldPage","packages_pagination","componentvue_type_template_id_60140e62_render","after-enter","handleWrapperClick","is-fullscreen","fullscreen","el-dialog--center","center","customClass","aria-modal","footer","popup_","popup_default","component_component","beforeClose","closed","dialog","marginTop","src_component","autocompletevue_type_template_id_152f2ee6_render","suggestionVisible","handleClear","highlight","highlightedIndex","handleKeyEnter","visible-arrow","popper-options","suggestions","highlighted","aria-selected","autocomplete_suggestionsvue_type_template_id_cd10dcf0_render","hideLoading","dropdownWidth","autocomplete_suggestions_component","referenceList","autocomplete_suggestions","autocomplete_component","ElAutocompleteSuggestions","minlength","fetchSuggestions","triggerOnFocus","customItem","selectWhenUnmatched","highlightFirstItem","activated","suggestionDisabled","$input","custom-item","getData","queryString","debouncedGetData","suggestion","highlightItem","packages_autocomplete","button_","button_default","button_group_","button_group_default","dropdown_component","ElButton","ElButtonGroup","dropdown","trigger","splitButton","hideOnClick","showTimeout","hideTimeout","triggerElm","menuItems","menuItemsArray","dropdownElm","listId","dropdownSize","handleMenuItemClick","selfDefine","menu-align","removeTabindex","resetTabindex","handleTriggerKeyDown","handleItemKeyDown","currentIndex","nextIndex","triggerElmFocus","ele","initAria","command","initDomOperation","dropdown_render","dropdown_staticRenderFns","packages_dropdown","dropdown_menuvue_type_template_id_0da6b714_render","dropdown_menu_component","dropdown.placement","dropdown_menu","packages_dropdown_menu","dropdown_itemvue_type_template_id_6359102a_render","el-dropdown-menu__item--divided","divided","dropdown_item_component","dropdown_item","packages_dropdown_item","aria_utils","SubMenu","domNode","subMenuItems","subIndex","init","addListeners","gotoSubIndex","idx","prevDef","aria_submenu","MenuItem","submenu","menuChild","aria_menuitem","Menu","menuChildren","aria_menubar","menu_component","collapse","backgroundColor","el-menu--horizontal","el-menu--collapse","el-menu","collapseTransition","rootMenu","el-menu-collapse-transition","defaultActive","defaultOpeneds","uniqueOpened","router","menuTrigger","textColor","activeTextColor","activeIndex","openedMenus","items","submenus","hoverBackground","mixColor","isMenuPopup","updateActiveIndex","initOpenedMenu","theme","getColorChannels","color","red","green","blue","percent","_getColorChannels","addItem","$set","removeItem","addSubmenu","removeSubmenu","openMenu","indexPath","closeMenu","handleSubmenuClick","handleItemClick","oldActiveIndex","hasIndex","routeToItem","activeItem","onError","route","$router","$watch","menu_render","menu_staticRenderFns","src_menu","packages_menu","collapse_transition_","collapse_transition_default","menu_mixin","parentMenu","paddingStyle","padding","paddingLeft","poperMixins","submenu_component","ElCollapseTransition","mouseInChild","isFirstLevel","menuTransitionName","isActive","titleStyle","borderBottomColor","handleCollapseToggle","initPopper","handleMouseenter","relatedTarget","handleMouseleave","handleTitleMouseenter","handleTitleMouseleave","updatePlacement","popupMenu","inlineMenu","submenuTitleIcon","el-submenu","is-opened","submenu_render","submenu_staticRenderFns","packages_submenu","menu_itemvue_type_template_id_2a5dbfea_render","itemStyle","onMouseEnter","onMouseLeave","staticStyle","box-sizing","tooltip_","tooltip_default","menu_item_component","ElTooltip","isNested","menu_item","packages_menu_item","menu_item_groupvue_type_template_id_543b7bdc_render","levelPadding","menu_item_group_component","menu_item_group","packages_menu_item_group","inputvue_type_template_id_343dd774_render","input_component","src_input","packages_input","input_numbervue_type_template_id_42f8cf66_render","input_number_component","packages_input_number","radiovue_type_template_id_69cd6268_render","radio_component","packages_radio","radio_groupvue_type_template_id_818a704c_render","handleKeydown","freeze","LEFT","UP","RIGHT","DOWN","radio_group_component","fill","radios","firstLabel","roleRadios","radio_group","packages_radio_group","radio_buttonvue_type_template_id_18a77a32_render","activeStyle","radio_button_component","borderColor","boxShadow","radio_button","packages_radio_button","checkboxvue_type_template_id_d0387074_render","checkbox_component","packages_checkbox","checkbox_buttonvue_type_template_id_478e906e_render","checkbox_button_component","box-shadow","_checkboxGroup2","checkbox_button","packages_checkbox_button","checkbox_groupvue_type_template_id_7289a290_render","checkbox_group_component","checkbox_group","packages_checkbox_group","componentvue_type_template_id_2dcd8fbb_render","switchDisabled","switchValue","activeValue","inactiveValue","inactiveIconClass","inactiveText","coreWidth","activeIconClass","activeText","src_component_component","activeColor","inactiveColor","setBackgroundColor","newColor","core","on-color","off-color","on-text","off-text","on-value","off-value","on-icon-class","off-icon-class","switch_src_component","packages_switch","selectvue_type_template_id_0e4aade6_render","select_dropdown_component","optionvue_type_template_id_7a44c642_render","option_component","lib_locale_default","packages_select","packages_option","option_groupvue_type_template_id_6685e5de_render","option_group_component","option_group","packages_option_group","buttonvue_type_template_id_ca859fb4_render","button_component","packages_button","button_groupvue_type_template_id_3d8661d0_render","button_group_component","button_group","packages_button_group","tablevue_type_template_id_493fe34e_render","el-table--fit","fit","el-table--striped","stripe","el-table--border","el-table--hidden","isHidden","el-table--group","el-table--fluid-height","el-table--scrollable-x","scrollX","el-table--scrollable-y","scrollY","el-table--enable-row-hover","states","isComplex","el-table--enable-row-transition","tableSize","handleMouseLeave","showHeader","handleHeaderFooterMousewheel","bodyWidth","default-sort","defaultSort","scrollPosition","bodyHeight","row-class-name","rowClassName","row-style","rowStyle","highlightCurrentRow","showSummary","sum-text","summary-method","summaryMethod","fixedColumns","handleFixedMousewheel","fixedWidth","fixedHeight","fixed","headerHeight","fixedBodyHeight","appendHeight","rightFixedColumns","rightFixedWidth","gutterWidth","resizeProxyVisible","external_throttle_debounce_","external_normalize_wheel_","external_normalize_wheel_default","isFirefox","navigator","userAgent","directives_mousewheel","normalized","mousewheel_mousewheel","util_typeof","getCell","cell","util_isObject","util_orderBy","sortKey","reverse","sortMethod","sortBy","getKey","by","$value","sort","order","compare","getColumnById","columnId","column","columns","getColumnByCell","getRowIdentity","row","rowKey","getKeysMap","arrayMap","parseWidth","parseHeight","toggleRowStatus","statusArr","changed","included","addRow","removeRow","walkTreeNode","cb","lazyKey","isNil","_walker","defaultExpandAll","expandRows","updateExpandRows","_states","_states$data","expandRowsMap","rowId","toggleRowExpansion","expanded","scheduleLayout","setExpandRowKeys","rowKeys","assertRowKey","_states2","keysMap","cur","isRowExpanded","_states3","_states3$expandRows","_currentRowKey","currentRow","setCurrentRowKey","setCurrentRowByKey","restoreCurrentRowKey","updateCurrentRow","oldCurrentRow","currentRowKey","expandRowKeys","treeData","indent","lazyTreeNodeMap","lazyColumnIdentifier","childrenColumnName","normalizedData","normalize","normalizedLazyNode","parentId","updateTreeData","nested","oldTreeData","newTreeData","rootLazyRowKeys","getExpanded","oldValue","newValue","_ref$loaded","_ref$loading","lazyKeys","lazyNodeChildren","_ref2","_ref2$loaded","_ref2$loading","updateTableScrollY","updateTreeExpandKeys","toggleTreeExpansion","_states4","oldExpanded","loadOrToggle","_states5","loadData","treeNode","load","_states6","doFlattenColumns","watcher","extend","_columns","originColumns","leafColumns","fixedLeafColumns","rightFixedLeafColumns","leafColumnsLength","fixedLeafColumnsLength","rightFixedLeafColumnsLength","isAllSelected","selection","reserveSelection","selectOnIndeterminate","selectable","filteredData","sortingColumn","sortProp","sortOrder","hoverRow","updateColumns","notFixedColumns","needUpdateColumns","debouncedUpdateLayout","isSelected","_states$selection","clearSelection","cleanSelection","deleted","selectedMap","dataMap","newSelection","toggleRowSelection","toggleAllSelection","selectionChanged","updateSelectionByRowKey","rowInfo","updateAllSelected","selectedCount","isRowSelectable","updateFilters","values","col","columnKey","updateSort","execFilter","_data","execSort","sortable","watcher_sortData","execQuery","ignore","columnKeys","_table$$refs","tableHeader","fixedTableHeader","rightFixedTableHeader","panels","filterPanels","getColumnByKey","find","filteredValue","commit","multi","clearSort","setExpandRowKeysAdapter","toggleRowExpansionAdapter","mutations","setData","dataInstanceChanged","insertColumn","$ready","removeColumn","changeSortCondition","filterChange","newFilters","rowSelectedChanged","setHoverRow","setCurrentRow","updateScrollY","mapStates","mapper","table_layout","TableLayout","observers","tableHeight","footerHeight","viewportHeight","bodyWrapper","prevScrollY","setHeight","updateElsHeight","setMaxHeight","getFlattenColumns","flattenColumns","isColumnGroup","headerWrapper","appendWrapper","footerWrapper","notifyObservers","updateColumnsWidth","bodyMinWidth","flexColumns","realWidth","scrollYWidth","totalFlexWidth","flexWidthPerPixel","noneFirstWidth","flexWidth","resizeState","addObserver","observer","removeObserver","onColumnsChange","onScrollableChange","layout_observer","tableLayout","__updated__","cols","columnsMap","ths","_j","th","table_body_typeof","table_body_extends","table_body","cellspacing","cellpadding","acc","wrappedRowRender","tooltipEffect","tooltipContent","treeIndent","leftFixedLeafCount","rightFixedLeafCount","columnsCount","leftFixedCount","rightFixedCount","hasExpandColumn","firstDefaultColumnIndex","store.states.hoverRow","raf","requestAnimationFrame","rows","oldRow","newRow","activateTooltip","tooltip","getKeyOfRow","isColumnHidden","getSpan","rowIndex","columnIndex","rowspan","colspan","spanMethod","getRowStyle","getRowClass","getCellStyle","cellStyle","getCellClass","align","cellClassName","getColspanRealWidth","_ref3","handleCellMouseEnter","hoverState","cellChild","createRange","setStart","setEnd","innerText","handleCellMouseLeave","oldHoverState","handleMouseEnter","handleContextMenu","handleEvent","handleDoubleClick","rowRender","$index","treeRowData","columnsHidden","rowClasses","dblclick","contextmenu","cellIndex","_getSpan","columnData","noLazyChildren","renderCell","_renderProxy","_store$states","renderExpanded","tr","tmp","traverse","innerTreeRowData","childKey","_nodes","filter_panelvue_type_template_id_7f2c919f_render","handleOutsideClick","handleConfirm","handleReset","filterValue","handleSelect","dropdowns","src_dropdown","checkbox_group_","checkbox_group_default","filter_panel_component","ElCheckboxGroup","filterMultiple","filterOpened","filter_panel","table_header_extends","convertToRows","maxLevel","colSpan","subColumn","getAllColumns","rowSpan","table_header","columnRows","hasGutter","is-group","has-gutter","getHeaderRowStyle","getHeaderRowClass","mouseout","handleMouseOut","handleMouseDown","handleHeaderClick","handleHeaderContextMenu","getHeaderCellStyle","getHeaderCellClass","labelClassName","renderHeader","handleSortClick","handleFilterClick","_defaultSort","isCellHidden","after","headerRowStyle","headerRowClassName","headerCellStyle","headerAlign","headerCellClassName","filterPanel","filterPlacement","draggingColumn","dragging","tableLeft","columnEl","columnRect","minLeft","dragState","startMouseLeft","startLeft","startColumnLeft","resizeProxy","ondragstart","deltaLeft","proxyLeft","handleMouseUp","_dragState","columnWidth","cursor","resizable","rect","bodyStyle","pageX","toggleOrder","sortOrders","givenOrder","table_footer_extends","table_footer","sums","precisions","notNumber","decimal","getRowClasses","before","tablevue_type_script_lang_js_extends","tableIdSeed","table_component","Mousewheel","treeProps","TableHeader","TableFooter","TableBody","spinY","currentScrollTop","pixelY","pixelX","syncPostion","_bodyWrapper","_$refs","fixedBodyWrapper","rightFixedBodyWrapper","maxScrollLeftPosition","bindEvents","passive","resizeListener","unbindEvents","shouldUpdateLayout","_resizeState","oldWidth","oldHeight","shouldUpdateHeight","doLayout","_layout","_layout2","_layout2$headerHeight","_layout2$footerHeight","max-height","tableData","tableId","_treeProps","_treeProps$hasChildre","_treeProps$children","initialState","createStore","src_table","packages_table","cellStarts","cellForced","_ref4","_ref5","_ref6","defaultRenderCell","_ref7","formatter","table_column_extends","columnIdSeed","table_column","showTooltipWhenOverflow","showOverflowTooltip","isSubColumn","owner","columnOrTableParent","realMinWidth","parseMinWidth","realAlign","realHeaderAlign","getPropsData","getColumnElIndex","setColumnWidth","setColumnForcedProps","setColumnRenders","specialTypes","scope","header","originRenderCell","_ref8","padding-left","expandClasses","iconClasses","treeCellPrefix","registerNormalWatchers","aliases","allAliases","columnConfig","registerComplexWatchers","defaults","mergeOptions","funcs","arg","compose","chains","hiddenColumns","packages_table_column","pickervue_type_template_id_79ae069f_render","ranged","pickerSize","pickerDisabled","pickerVisible","handleRangeClick","triggerClass","startPlaceholder","editable","handleStartInput","handleStartChange","firstInputId","rangeSeparator","endPlaceholder","handleEndInput","handleEndChange","secondInputId","haveTrigger","clearIcon","handleClickIcon","date_util_","NewPopper","DEFAULT_FORMATS","datetime","timerange","daterange","monthrange","datetimerange","HAVE_TRIGGER_TYPES","pickervue_type_script_lang_js_DATE_FORMATTER","pickervue_type_script_lang_js_DATE_PARSER","RANGE_FORMATTER","RANGE_PARSER","range1","range2","TYPE_VALUE_RESOLVER_MAP","parser","trueDate","number","dates","PLACEMENT_MAP","parseAsFormatAndType","customFormat","formatAsFormatAndType","valueEquals","dateEquals","aIsDate","bIsDate","aIsArray","bIsArray","isString","pickervue_type_script_lang_js_validator","picker_component","valueFormat","defaultValue","defaultTime","pickerOptions","unlinkPanels","valueOnOpen","unwatchPickerOptions","showPicker","hidePicker","parsedValue","picker","refInput","valueIsEmpty","selectionMode","showTrigger","formattedValue","handleFieldReset","parseValue","isParsed","formatToValue","isFormattable","parseString","formatToString","isValidValue","emitInput","initialValue","resetView","mountPicker","adjustSpinners","showTime","arrowControl","timeArrowControl","updateOptions","pos","setSelectionRange","unmountPicker","$off","formatted","datevue_type_template_id_2440d4ea_render","handleEnter","handleLeave","has-sidebar","sidebar","shortcuts","has-time","shortcut","handleShortcutClick","visibleDate","userInputDate","handleVisibleDateChange","handleTimePickClose","visibleTime","timePickerVisible","userInputTime","handleVisibleTimeChange","time-arrow-control","pick","handleTimePick","proxyTimePickerDataProperties","currentView","el-date-picker__header--bordered","showYearPicker","yearLabel","showMonthPicker","selection-mode","first-day-of-week","firstDayOfWeek","default-value","disabled-date","disabledDate","handleDatePick","handleYearPick","handleMonthPick","footerVisible","changeToNow","timevue_type_template_id_3d939089_render","has-seconds","showSeconds","arrow-control","useArrow","show-seconds","am-pm-mode","amPmMode","select-range","handleCancel","time_spinnervue_type_template_id_1facadeb_render","wrap-style","emitSelectRange","adjustCurrentSpinner","hoursList","minutesList","enabled","seconds","arrowHourList","arrowMinuteList","arrowSecondList","time_spinner_component","currentScrollbar","bindScrollEvent","scrollDown","modifyDateField","adjustSpinner","bindFuntion","onscroll","scrollBarHeight","typeItemHeight","isCapital","time_spinner","time_component","TimeSpinner","spinner","needInitAdjust","selectionRange","first","mapping","38","40","changeSelectionRange","_step","list","panel_time","year_tablevue_type_template_id_c86ab5e0_render","handleYearTableClick","startYear","year_table_component","numOfDays","firstDay","year_tablevue_type_script_lang_js_datesInYear","year_table","month_tablevue_type_template_id_654d4f42_render","handleMonthTableClick","clearDate","getMonthTimestamp","NaN","month_table_component","rangeState","selecting","rangeState.endDate","markRange","tableRows","lastRow","lastColumn","cellMatchesDate","month_tablevue_type_script_lang_js_datesInMonth","inRange","getMonthOfCell","k","newDate","selectedDate","_loop","cellDate","month_table","date_tablevue_type_template_id_5d1f3341_render","is-week-mode","showWeekNumber","WEEKS","isWeekActive","getCellClasses","_WEEKS","date_tablevue_type_script_lang_js_getDateTimestamp","date_table_component","offsetDay","dateCountOfMonth","dateCountOfLastMonth","count","numberOfDaysFromPreviousMonth","getDateOfCell","offsetFromStart","setMonth","setFullYear","dayOffset","_cell","weekNumber","pred","date_tablevue_type_script_lang_js_removeFromArray","date_table","date_component","inputElm","pickerWidth","getDefaultValue","timepicker","_date","_selectableRange","timeFormat","onClick","checkDateWithinRange","handleKeyControl","dateFormat","TimePicker","YearTable","MonthTable","DateTable","yearTranslation","panel_date","date_rangevue_type_template_id_2652849a_render","minVisibleDate","handleDateInput","handleDateChange","handleMinTimeClose","minVisibleTime","minTimePickerVisible","handleTimeInput","handleTimeChange","handleMinTimePick","minTimePicker","maxVisibleDate","handleMaxTimeClose","maxVisibleTime","maxTimePickerVisible","handleMaxTimePick","maxTimePicker","leftPrevYear","leftPrevMonth","enableYearArrow","leftNextYear","enableMonthArrow","leftNextMonth","leftLabel","leftDate","min-date","max-date","range-state","changerange","handleChangeRange","handleRangePick","rightPrevYear","rightPrevMonth","rightNextYear","rightNextMonth","rightLabel","rightDate","btnDisabled","date_rangevue_type_script_lang_js_calcDefaultValue","date_range_component","leftYear","leftMonth","leftMonthDate","rightYear","rightMonth","rightMonthDate","dateUserInput","timeUserInput","yearOffset","minDateYear","minDateMonth","maxDateYear","maxDateMonth","_calcDefaultValue","onPick","date_range","month_rangevue_type_template_id_f2645fb8_render","month_rangevue_type_script_lang_js_calcDefaultValue","month_range_component","month_range","date_picker_getPanel","date_picker","_type","packages_date_picker","time_selectvue_type_template_id_51ab9320_render","parseTime","compareTime","time1","time2","value1","value2","minutes1","minutes2","nextTime","timeValue","stepValue","formatTime","time_select_component","selector","hasDefault","minTime","maxTime","time_select","picker_time_select","packages_time_select","time_rangevue_type_template_id_fb28660e_render","is-arrow","handleMinChange","setMinSelectionRange","handleMaxChange","setMaxSelectionRange","MIN_TIME","MAX_TIME","time_rangevue_type_script_lang_js_maxTimeOfDay","advanceTime","time_range_component","minSpinner","maxSpinner","time_rangevue_type_script_lang_js_minTimeOfDay","minSelectableRange","maxSelectableRange","half","time_range","time_picker","isRange","_isRange","packages_time_picker","mainvue_type_template_id_52060272_render","handleAfterEnter","handleAfterLeave","main_component","__vue__","doToggle","handleDocumentClick","doShow","cleanup","_timer","getReference","directive","inserted","popover","src_main","packages_tooltip","mainvue_type_template_id_6b29b012_render","distinguishCancelAndClose","message","dangerouslyUseHTMLString","showInput","inputType","inputPlaceholder","handleInputEnter","inputValue","editorErrorMessage","showCancelButton","cancelButtonClasses","cancelButtonLoading","roundButton","cancelButtonText","showConfirmButton","confirmButtonClasses","confirmButtonLoading","confirmButtonText","aria_dialog_","aria_dialog_default","messageBox","typeMap","warning","src_main_component","closeOnHashChange","confirmButtonClass","cancelButtonClass","getSafeClose","currentId","closeDialog","action","$type","validate","inputPattern","inputErrorMessage","getInputElement","inputValidator","validateResult","getFirstFocus","btn","inputRefs","focusAfterClosed","confirmButtonDisabled","message_box_src_main","vdom_","main_typeof","main_defaults","confirmButtonPosition","confirmButtonHighlight","cancelButtonHighlight","MessageBoxConstructor","currentMsg","main_instance","msgQueue","defaultCallback","resolve","reject","main_showNextMsg","showNextMsg","closeTimer","oldCb","main_MessageBox","MessageBox","Promise","setDefaults","alert","prompt","message_box","breadcrumbvue_type_template_id_4b464c06_render","breadcrumb_component","separatorClass","elBreadcrumb","breadcrumb","packages_breadcrumb","breadcrumb_itemvue_type_template_id_fcf9eaac_render","to","breadcrumb_item_component","link","breadcrumb_item","packages_breadcrumb_item","formvue_type_template_id_a1b5ff34_render","labelPosition","el-form--inline","inline","form_component","rules","labelWidth","labelSuffix","inlineMessage","showMessage","validateOnRuleChange","hideRequiredAsterisk","fields","field","removeValidateEvents","addValidateEvents","autoLabelWidth","potentialLabelWidthArr","resetFields","resetField","clearValidate","promise","valid","invalidFields","validateField","getLabelWidthIndex","registerLabelWidth","deregisterLabelWidth","src_form","packages_form","form_itemvue_type_template_id_b6f3db6c_render","el-form-item--feedback","is-error","is-validating","is-success","is-required","isRequired","is-no-asterisk","sizeClass","is-auto-width","labelStyle","update-all","for","labelFor","contentStyle","el-form-item__error--inline","validateMessage","external_async_validator_","external_async_validator_default","label_wrap_component","isAutoWidth","updateAll","marginLeft","computedWidth","getLabelWidth","firstElementChild","updateLabelWidth","updateComputedLabelWidth","label_wrap_render","label_wrap_staticRenderFns","label_wrap","form_item_component","validateStatus","LabelWrap","ret","computedLabelWidth","parentName","fieldValue","getRules","rule","_formSize","validateDisabled","getFilteredRule","firstFields","errors","formRules","selfRules","requiredRule","onFieldBlur","onFieldChange","form_item","packages_form_item","tab_barvue_type_template_id_2031f33a_render","rootTabs","tabPosition","barStyle","tab_bar_component","tabs","tabSize","sizeName","sizeDir","firstUpperCase","L","paneName","tab_navvue_type_script_lang_js_firstUpperCase","tab_nav_component","TabBar","panes","currentName","onTabClick","onTabRemove","stretch","scrollable","navOffset","isFocus","focusable","navStyle","scrollPrev","containerSize","navScroll","currentOffset","newOffset","scrollNext","navSize","nav","scrollToActiveTab","activeTab","activeTabBounding","navScrollBounding","maxOffset","_currentOffset","changeTab","tabList","setFocus","removeFocus","visibilityChangeHandler","visibilityState","windowBlurHandler","windowFocusHandler","scrollBtn","pane","tabName","isClosable","btnClose","tabLabelContent","el-tabs__item","aria-controls","tab_nav_render","tab_nav_staticRenderFns","tabs_component","TabNav","activeName","addable","setCurrentName","calcPaneInstances","isForceUpdate","componentOptions","Ctor","panesChanged","handleTabClick","handleTabRemove","handleTabAdd","changeCurrentName","then","el-tabs","el-tabs--card","tabs_render","tabs_staticRenderFns","packages_tabs","tab_panevue_type_template_id_9145a070_render","aria-labelledby","tab_pane_component","labelContent","tab_pane","packages_tab_pane","tag_component","disableTransitions","tagSize","tagEl","tag_render","tag_staticRenderFns","packages_tag","treevue_type_template_id_547575a6_render","el-tree--highlight-current","highlightCurrent","is-dragging","draggingNode","is-drop-not-allow","allowDrop","is-drop-inner","dropType","getNodeKey","render-after-expand","renderAfterExpand","show-checkbox","showCheckbox","render-content","node-expand","handleNodeExpand","showDropIndicator","NODE_KEY","markNodeData","util_getNodeKey","getChildState","all","none","allWithoutDisable","reInitChecked","_getChildState","getPropertyFromData","dataProp","nodeIdSeed","model_node","node_classCallCheck","isCurrent","registerNode","isLeafByUser","defaultExpandedKeys","autoExpandParent","currentNodeKey","currentNode","_initDefaultCheckedNode","updateLeafState","insertChild","walk","batch","getChildren","insertBefore","insertAfter","dataIndex","deregisterNode","removeChildByData","targetNode","expandParent","shouldLoadData","setChecked","doCreateChildren","defaultProps","recursion","passValue","checkDescendants","_getChildState2","handleDescendants","isCheck","_getChildState3","_all","forceInit","updateChildren","newData","oldData","newDataMap","newNodes","nodeKey","tree_store_typeof","tree_store","TreeStore","tree_store_classCallCheck","nodesMap","loadFn","_initDefaultCheckedNodes","filterNodeMethod","allHidden","getNode","refData","refNode","parentData","defaultCheckedKeys","checkedKey","setDefaultCheckedKey","includeHalfChecked","checkedNodes","getCheckedKeys","getHalfCheckedNodes","getHalfCheckedKeys","_getAllNodes","allNodes","_child","_setCheckedKeys","checkedKeys","cache","setCheckedNodes","setCheckedKeys","setDefaultExpandedKeys","getCurrentNode","setCurrentNode","prevCurrentNode","setUserCurrentNode","currNode","setCurrentNodeKey","tree_nodevue_type_template_id_3ba3ef0e_render","this$1","is-expanded","is-current","is-hidden","is-focusable","draggable","handleDragStart","dragover","handleDragOver","dragend","handleDragEnd","drop","handleDrop","is-leaf","handleExpandIconClick","childNodeRendered","handleChildNodeExpand","tree_node_component","NodeContent","oldChecked","oldIndeterminate","node.indeterminate","handleSelectChange","node.checked","node.expanded","expandOnClickNode","checkOnClickNode","_events","halfCheckedNodes","halfCheckedKeys","isTree","accordion","tree_node","tree_component","ElTreeNode","treeItems","checkboxItems","dropNode","allowDrag","treeItemArray","checkbox","getNodePath","getCurrentKey","setCurrentKey","updateKeyChildren","initTabIndex","checkedItem","currentItem","hasInput","dataTransfer","effectAllowed","findNearestComponent","oldDropNode","dropPrev","dropInner","dropNext","userAllowDropInner","dropEffect","nextSibling","previousSibling","targetPosition","treePosition","prevPercent","nextPercent","indicatorTop","clientY","iconPosition","dropIndicator","draggingNodeCopy","src_tree","packages_tree","mainvue_type_template_id_6e53341b_render","typeClass","showIcon","isBigIcon","isBoldTitle","description","is-customed","closeText","el-icon-close","TYPE_CLASSES_MAP","alert_src_main_component","alert_src_main","packages_alert","mainvue_type_template_id_43dbc3d8_render","horizontalClass","positionStyle","clearTimer","startTimer","is-with-icon","mainvue_type_script_lang_js_typeMap","notification_src_main_component","duration","verticalOffset","timer","verticalProperty","destroyElement","notification_src_main","NotificationConstructor","src_main_instance","main_Notification","Notification","userOnClose","removedHeight","closeAll","notification","mainvue_type_template_id_32708644_render","is-vertical","el-slider--with-input","aria-valuemin","aria-valuemax","aria-orientation","sliderDisabled","showInputControls","firstValue","show-input","runwayStyle","onSliderClick","tooltip-class","tooltipClass","secondValue","stops","showStops","getStopStyle","markList","mark","input_number_","input_number_default","buttonvue_type_template_id_e72d2ad2_render","wrapperStyle","onButtonDown","touchstart","onLeftKeyDown","onRightKeyDown","popper-class","showTooltip","formatValue","src_button_component","isClick","currentX","startY","currentY","startPosition","newPosition","currentPosition","enableFormat","formatTooltip","displayTooltip","hideTooltip","onDragStart","onDragging","onDragEnd","setPosition","touches","resetSize","diff","sliderSize","lengthPerStep","slider_src_button","marker","slider_src_main_component","marks","ElInputNumber","SliderButton","SliderMarker","setValues","minValue","maxValue","valueChanged","targetValue","button1","sliderOffsetBottom","slider","sliderOffsetLeft","stopCount","stepWidth","point","barSize","barStart","valuetext","slider_src_main","loadingvue_type_template_id_eee0a7ac_render","viewBox","cx","cy","loading_component","setText","after_leave_","after_leave_default","Mask","loadingDirective","toggleLoading","modifiers","originalPosition","originalOverflow","maskStyle","insertDom","hiding","domVisible","lock","domInserted","textExr","spinnerExr","backgroundExr","customClassExr","vm","src_directive","LoadingConstructor","src_defaults","fullscreenLoading","src_addStyle","packages_loading","$loading","service","iconvue_type_template_id_cb3fe7f4_render","icon_component","packages_icon","src_row","justify","el-row--flex","packages_row","col_typeof","span","pull","xs","sm","md","lg","xl","packages_col","upload_listvue_type_template_id_173fedf5_render","listType","files","file","status","url","alt","el-icon-upload-success","el-icon-circle-check","el-icon-check","stroke-width","percentage","parsePercentage","handlePreview","progress_","progress_default","upload_list_component","ElProgress","upload_list","upload_draggervue_type_template_id_7ebbf219_render","is-dragover","onDrop","onDragover","dragleave","upload_dragger_component","uploader","accept","extension","baseType","acceptedType","upload_component","UploadDragger","headers","withCredentials","onStart","onProgress","onSuccess","beforeUpload","drag","onPreview","onRemove","fileList","autoUpload","httpRequest","XMLHttpRequest","xhr","onprogress","formData","FormData","filename","onerror","onload","msg","response","responseText","err","method","getError","JSON","getBody","setRequestHeader","send","limit","onExceed","mouseover","reqs","isImage","uploadFiles","postFiles","rawFile","post","processedFile","fileType","File","abort","req","el-upload","upload_render","upload_staticRenderFns","src_upload","srcvue_type_script_lang_js_noop","upload_src_component","UploadList","Upload","dragger","showFileList","beforeRemove","onChange","dragOver","draging","tempIndex","uploadDisabled","raw","URL","createObjectURL","handleStart","handleProgress","getFile","handleSuccess","handleError","handleRemove","doRemove","clearFiles","submit","default-file-list","show-upload-list","thumbnail-mode","revokeObjectURL","uploadList","uploadComponent","before-upload","with-credentials","on-exceed","on-start","on-progress","on-success","on-error","on-preview","on-remove","http-request","tip","src_render","src_staticRenderFns","upload_src","packages_upload","progressvue_type_template_id_229ee406_render","el-progress--without-text","showText","el-progress--text-inside","textInside","aria-valuenow","strokeWidth","trailPathStyle","trackPath","stroke","relativeStrokeWidth","circlePathStyle","stroke-linecap","fontSize","progressTextSize","progress_component","getCurrentColor","radius","isDashboard","perimeter","PI","rate","strokeDashoffset","strokeDasharray","getLevelColor","colorArray","getColorArray","seriesColor","progress","packages_progress","spinnervue_type_template_id_697b8538_render","strokeColor","spinner_component","packages_spinner","mainvue_type_template_id_455b9f60_render","src_mainvue_type_script_lang_js_typeMap","message_src_main_component","message_src_main","MessageConstructor","message_src_main_instance","main_instances","main_seed","main_Message","Message","packages_message","mainvue_type_template_id_7ccb6598_render","hidden","isDot","is-fixed","is-dot","badge_src_main_component","badge_src_main","badge","mainvue_type_template_id_59a4a40f_render","shadow","card_src_main_component","card_src_main","card","mainvue_type_template_id_ada57782_render","aria-valuetext","handleKey","rateDisabled","resetCurrentValue","selectValue","getIconStyle","showDecimalIcon","decimalIconClass","decimalStyle","showScore","types_","rate_src_main_component","pointerAtLeftHalf","lowThreshold","highThreshold","colors","voidColor","disabledVoidColor","voidIconClass","disabledVoidIconClass","allowHalf","texts","scoreTemplate","valueDecimal","classMap","excluded","getValueFromMap","voidClass","activeClass","colorMap","threshold","text-template","matchedKeys","matchedValue","showWhenDisabled","showWhenAllowHalf","offsetX","rate_src_main","stepsvue_type_template_id_3c6b6dc0_render","simple","steps_component","alignCenter","finishStatus","processStatus","steps","stepOffset","_steps","packages_steps","stepvue_type_template_id_f414a87a_render","isSimple","isLast","isCenter","isVertical","currentStatus","lineStyle","step_component","internalStatus","prevStatus","prevStep","stepsCount","flexBasis","maxWidth","updateStatus","prevChild","calcProgress","transitionDelay","borderWidth","unwatch","packages_step","mainvue_type_template_id_5d5d1482_render","carouselClasses","arrowDisplay","loop","handleButtonEnter","handleButtonLeave","throttledArrowClick","indicatorPosition","indicatorsClasses","throttledIndicatorHover","handleIndicatorClick","hasLabel","throttle_","throttle_default","carousel_src_main_component","initialIndex","autoplay","indicator","containerWidth","setActiveItem","resetItemPosition","pauseTimer","itemInStage","inStage","updateItems","oldIndex","translateItem","playSlides","filteredItems","handleIndicatorHover","carousel_src_main","carousel","scrollbar_src_main","itemvue_type_template_id_1801ae19_render","ready","el-carousel__item--card","is-in-stage","is-hover","is-animating","animating","item_component","scale","processIndex","calcCardTranslate","parentWidth","calcTranslate","parentType","parentDirection","src_item","carousel_item","collapsevue_type_template_id_461d57f4_render","aria-multiselectable","collapse_component","activeNames","setActiveNames","packages_collapse","collapse_itemvue_type_template_id_2d05faac_render","aria-describedby","handleEnterClick","collapse_item_component","contentWrapStyle","contentHeight","_uid","collapse_item","packages_collapse_item","cascadervue_type_template_id_032537a6_render","toggleDropDownVisible","realSize","inputHover","dropDownVisible","presentText","clearBtnVisible","presentTags","handleDelete","$forceUpdate","handleDropdownLeave","filtering","render-label","expand-change","handleExpandChange","handleSuggestionKeyDown","handleSuggestionClick","cascader_panel_","cascader_panel_default","MigratingProps","newProp","changeOnSelect","PopperMixin","InputSizeMap","cascader_component","ElCascaderPanel","showAllLevels","beforeFilter","inputInitialHeight","pressDeleteCount","oldProp","_MigratingProps$oldPr","computePresentContent","updateStyle","filterHandler","getSuggestions","expand-trigger","change-on-select","hover-threshold","active-item-change","focusFirstNode","suggestionPanel","computePresentTags","computePresentText","genTag","rest","restCount","keyword","previousElementSibling","nextElementSibling","lastIndex","lastTag","inputInner","suggestionPanelEl","packages_cascader","mainvue_type_template_id_55c8ade7_render","colorDisabled","colorSize","handleTrigger","is-alpha","showAlpha","displayedColor","showPanelColor","show-alpha","predefine","confirmValue","clearValue","color_typeof","hsv2hsl","hue","bound01","isOnePointZero","processPercent","isPercentage","INT_HEX_MAP","12","HEX_INT_MAP","B","C","E","F","parseHexChannel","hex","rgb2hsv","g","hsv2rgb","f","q","mod","src_color","Color","color_classCallCheck","_hue","_saturation","_alpha","enableAlpha","doOnChange","toRgb","fromString","fromHSV","_hsl2hsv","light","smin","lmin","hsl2hsv","_parts","_parts2","_rgb2hsv","substring","_rgb2hsv2","hsl","_hsv2rgb","_hsl","_hsv2rgb2","_r","_g","hexOne","high","low","toHex","picker_dropdownvue_type_template_id_06601625_render","float","customInput","sv_panelvue_type_template_id_d8583596_render","cursorTop","cursorLeft","isDragging","moveFn","upFn","sv_panel_component","colorValue","saturation","handleDrag","sv_panel","hue_slidervue_type_template_id_5cdc43b1_render","thumbLeft","thumbTop","hue_slider_component","hueValue","getThumbLeft","getThumbTop","dragConfig","hue_slider","alpha_slidervue_type_template_id_068c66cb_render","alpha_slider_component","color._alpha","color.value","alpha","getBackground","_color$toRgb","alpha_slider","predefinevue_type_template_id_06e03093_render","rgbaColors","background-color","predefine_component","parseColors","$parent.currentColor","picker_dropdown_component","SvPanel","HueSlider","AlphaSlider","Predefine","currentColor","sl","picker_dropdown","color_picker_src_main_component","colorFormat","displayedRgb","currentValueColor","resetColor","PickerDropdown","color_picker_src_main","color_picker","mainvue_type_template_id_5c654dd8_render","sourceData","default-checked","leftDefaultChecked","checked-change","onSourceCheckedChange","hasButtonTexts","rightChecked","addToLeft","buttonTexts","leftChecked","addToRight","targetData","rightDefaultChecked","onTargetCheckedChange","transfer_panelvue_type_template_id_2ddab8bd_render","isIndeterminate","handleAllCheckedChange","allChecked","checkedSummary","hasFooter","inputIcon","clearQuery","hasNoMatch","is-filterable","keyProp","disabledProp","transfer_panel_component","OptionContent","getParent","labelProp","defaultChecked","checkChangeByUser","updateAllChecked","movedKeys","filteredDataKeys","checkableData","checkableDataKeys","checkedLength","dataLength","_format","noChecked","hasChecked","transfer_panel","transfer_src_main_component","TransferPanel","targetOrder","dataObj","footer-format","itemsToBeMoved","itemKey","which","leftPanel","rightPanel","transfer_src_main","mainvue_type_template_id_5bf181d4_render","container_src_main_component","container_src_main","packages_container","mainvue_type_template_id_2b296ab2_render","header_src_main_component","header_src_main","mainvue_type_template_id_03411dbf_render","aside_src_main_component","aside_src_main","aside","mainvue_type_template_id_2a3a7406_render","main_src_main_component","main_src_main","packages_main","mainvue_type_template_id_80210338_render","footer_src_main_component","footer_src_main","timeline_src_main_component","timeline","el-timeline","is-reverse","main_render","main_staticRenderFns","timeline_src_main","itemvue_type_template_id_61a69e50_render","dot","hideTimestamp","timestamp","src_item_component","timeline_src_item","timeline_item","mainvue_type_template_id_01cf3b65_render","underline","link_src_main_component","link_src_main","packages_link","divider_src_main","contentPosition","_context$props","divider","mainvue_type_template_id_44d84a7c_render","el-image__inner--center","imageStyle","$listeners","isSupportObjectFit","objectFit","ObjectFit","image_src_main_component","scrollContainer","imageWidth","imageHeight","object-fit","getImageStyle","loadImage","addLazyLoadListener","removeLazyLoadListener","img","Image","handleLoad","handleLazyLoad","_scrollContainer","_lazyLoadHandler","containerHeight","image_src_main","packages_image","mainvue_type_template_id_6d9756be_render","i18nDate","validatedRange","selected-day","realSelectedDay","realFirstDayOfWeek","pickDay","hide-header","date_","date_default","WEEK_DAYS","src_date_table_component","selectedDay","hideHeader","toNestedArr","getFormateDate","curMonthDatePrefix","prevMonthDatePrefix","nextMonthDatePrefix","formatedToday","cellRenderProxy","elCalendar","dateCell","isInRange","_range","currentMonthRange","remaining","nextMonthRange","prevMonthDays","currentMonthDays","nextMonthDays","weekDays","thead","el-calendar-table","is-range","el-calendar-table__row","el-calendar-table__row--hide-border","date_table_render","date_table_staticRenderFns","src_date_table","validTypes","calendar_src_main_component","formatedDate","expetedMap","1","startDay","calendar_src_main","calendar","mainvue_type_template_id_257dd4a9_render","styleRight","styleBottom","backtop_src_main_component","visibilityHeight","throttledScrollHandler","onScroll","scrollToTop","backtop_src_main","backtop","getPositionSize","getOffsetHeight","delay","main_getScrollOptions","getElementTop","main_handleScroll","_scope","_getScrollOptions","shouldTrigger","scrollBottom","getClientHeight","css","getStyleComputedProperty","infinite_scroll_src_main","_getScrollOptions2","MutationObserver","childList","subtree","_el$scope","infinite_scroll","mainvue_type_template_id_5070954c_render","page_header_src_main_component","page_header_src_main","page_header","cascader_node_component","node_createClass","src_node_classCallCheck","cascader_panel_src_store","cascader_panelvue_type_script_lang_js_extends","cascader_panelvue_type_script_lang_js_KeyCode","packages_cascader_panel","avatar_src_main_component","shape","srcSet","isImageExist","avatarClass","renderAvatar","lineHeight","src_main_render","src_main_staticRenderFns","avatar_src_main","avatar","src_install","$msgbox","$alert","$confirm","$prompt","$notify","$message","version","CollapseTransition","Loading","Pagination","Dialog","Autocomplete","Dropdown","DropdownMenu","DropdownItem","Submenu","MenuItemGroup","Input","InputNumber","Radio","RadioGroup","RadioButton","Checkbox","CheckboxButton","CheckboxGroup","Switch","Select","Option","OptionGroup","Button","ButtonGroup","Table","TableColumn","DatePicker","TimeSelect","Popover","Tooltip","Breadcrumb","BreadcrumbItem","Form","FormItem","Tabs","TabPane","Tag","Tree","Alert","Slider","Icon","Row","Col","Progress","Spinner","Badge","Card","Rate","Steps","Step","Carousel","Scrollbar","CarouselItem","Collapse","CollapseItem","Cascader","ColorPicker","Transfer","Container","Header","Aside","Main","Footer","Timeline","TimelineItem","Link","Divider","Calendar","Backtop","InfiniteScroll","PageHeader","CascaderPanel","Avatar","__WEBPACK_AMD_DEFINE_FACTORY__","DEFAULTS","boundariesElement","preventOverflowOrder","flipBehavior","arrowElement","modifiersIgnored","forceAbsolute","Popper","_reference","jquery","state","isNotDefined","isConfig","_options","modifier","_getPosition","_setupEventListeners","getOuterSizes","_display","_visibility","styles","x","getOppositePlacement","matched","getPopperClientRect","popperOffsets","offsets","getArrayKeyIndex","keyToFind","getOffsetParent","getScrollParent","unit","isFinite","is_numeric","getOffsetRect","elementRect","offsetLeft","isIE","rectTop","getSupportedPropertyName","prefixes","toCheck","_removeEventListeners","removeOnDestroy","_originalPlacement","_getOffsets","boundaries","_getBoundaries","runModifiers","updateCallback","defaultConfig","classNames","contentType","arrowTagName","arrowClassNames","arrowAttributes","addClassNames","addAttributes","Element","attribute","isFixed","isParentFixed","referenceOffsets","parentRect","scrollParent","getOffsetRectRelativeToCustomParent","popperRect","updateBound","scrollTarget","html","offsetParentRect","getScrollTopValue","getScrollLeftValue","ends","modifiersToRun","functionToCheck","isFunction","isModifierRequired","requesting","requested","applyStyle","prefixedProperty","basePlacement","shiftVariation","shiftOffsets","preventOverflow","check","keepTogether","flip","flipped","placementOpposite","variation","flipOrder","_flip","arrowStyle","side","altSide","opSide","arrowSize","sideValue","nextSource","keysArray","nextKey","desc","getOwnPropertyDescriptor","_ariaUtils2","tabEvent","focusFirst","dialogNode","getElementById","lastFocus","trapFocus","removeListeners","111","src_checkbox_groupvue_type_script_lang_js_","arrayEquals","looseEqual","capitalize","kebabCase","autoprefixer","isEdge","coerceTruthyValueToArray","arrayFind","arrayFindIndex","escapeRegexpString","generateId","getValueByPath","toObject","getPropByPath","strict","tempObj","keyArr","_types","_from","paths","random","hyphenateRE","isObjectA","isObjectB","stringify","arrayA","arrayB","78","src_button_groupvue_type_script_lang_js_","123","src_tagvue_type_script_lang_js_","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","cloneIfNecessary","optionsArgument","deepmerge","emptyTarget","defaultArrayMerge","destination","sourceIsArray","arrayMerge","mergeObject","deepmerge_1","RE_NARGS","isHtmlElement","ELEMENT_NODE","isDefined","97","src_progressvue_type_script_lang_js_","speed","called","afterLeaveCallback","$once"],"mappings":"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","file":"static/js/chunk-elementUI.708d6b68.js","sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\nexports.isDef = isDef;\nexports.isKorean = isKorean;\nfunction isDef(val) {\n return val !== undefined && val !== null;\n}\nfunction isKorean(text) {\n var reg = /([(\\uAC00-\\uD7AF)|(\\u3130-\\u318F)])+/gi;\n return reg.test(text);\n}","\"use strict\";\n\nexports.__esModule = true;\nfunction _broadcast(componentName, eventName, params) {\n this.$children.forEach(function (child) {\n var name = child.$options.componentName;\n\n if (name === componentName) {\n child.$emit.apply(child, [eventName].concat(params));\n } else {\n _broadcast.apply(child, [componentName, eventName].concat([params]));\n }\n });\n}\nexports.default = {\n methods: {\n dispatch: function dispatch(componentName, eventName, params) {\n var parent = this.$parent || this.$root;\n var name = parent.$options.componentName;\n\n while (parent && (!name || name !== componentName)) {\n parent = parent.$parent;\n\n if (parent) {\n name = parent.$options.componentName;\n }\n }\n if (parent) {\n parent.$emit.apply(parent, [eventName].concat(params));\n }\n },\n broadcast: function broadcast(componentName, eventName, params) {\n _broadcast.call(this, componentName, eventName, params);\n }\n }\n};","'use strict';\n\n/* Modified from https://github.com/taylorhakes/fecha\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 Taylor Hakes\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/*eslint-disable*/\n// 把 YYYY-MM-DD 改成了 yyyy-MM-dd\n(function (main) {\n 'use strict';\n\n /**\n * Parse or format dates\n * @class fecha\n */\n\n var fecha = {};\n var token = /d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\n var twoDigits = '\\\\d\\\\d?';\n var threeDigits = '\\\\d{3}';\n var fourDigits = '\\\\d{4}';\n var word = '[^\\\\s]+';\n var literal = /\\[([^]*?)\\]/gm;\n var noop = function noop() {};\n\n function regexEscape(str) {\n return str.replace(/[|\\\\{()[^$+*?.-]/g, '\\\\$&');\n }\n\n function shorten(arr, sLen) {\n var newArr = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n }\n\n function monthUpdate(arrName) {\n return function (d, v, i18n) {\n var index = i18n[arrName].indexOf(v.charAt(0).toUpperCase() + v.substr(1).toLowerCase());\n if (~index) {\n d.month = index;\n }\n };\n }\n\n function pad(val, len) {\n val = String(val);\n len = len || 2;\n while (val.length < len) {\n val = '0' + val;\n }\n return val;\n }\n\n var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n var monthNamesShort = shorten(monthNames, 3);\n var dayNamesShort = shorten(dayNames, 3);\n fecha.i18n = {\n dayNamesShort: dayNamesShort,\n dayNames: dayNames,\n monthNamesShort: monthNamesShort,\n monthNames: monthNames,\n amPm: ['am', 'pm'],\n DoFn: function DoFn(D) {\n return D + ['th', 'st', 'nd', 'rd'][D % 10 > 3 ? 0 : (D - D % 10 !== 10) * D % 10];\n }\n };\n\n var formatFlags = {\n D: function D(dateObj) {\n return dateObj.getDay();\n },\n DD: function DD(dateObj) {\n return pad(dateObj.getDay());\n },\n Do: function Do(dateObj, i18n) {\n return i18n.DoFn(dateObj.getDate());\n },\n d: function d(dateObj) {\n return dateObj.getDate();\n },\n dd: function dd(dateObj) {\n return pad(dateObj.getDate());\n },\n ddd: function ddd(dateObj, i18n) {\n return i18n.dayNamesShort[dateObj.getDay()];\n },\n dddd: function dddd(dateObj, i18n) {\n return i18n.dayNames[dateObj.getDay()];\n },\n M: function M(dateObj) {\n return dateObj.getMonth() + 1;\n },\n MM: function MM(dateObj) {\n return pad(dateObj.getMonth() + 1);\n },\n MMM: function MMM(dateObj, i18n) {\n return i18n.monthNamesShort[dateObj.getMonth()];\n },\n MMMM: function MMMM(dateObj, i18n) {\n return i18n.monthNames[dateObj.getMonth()];\n },\n yy: function yy(dateObj) {\n return pad(String(dateObj.getFullYear()), 4).substr(2);\n },\n yyyy: function yyyy(dateObj) {\n return pad(dateObj.getFullYear(), 4);\n },\n h: function h(dateObj) {\n return dateObj.getHours() % 12 || 12;\n },\n hh: function hh(dateObj) {\n return pad(dateObj.getHours() % 12 || 12);\n },\n H: function H(dateObj) {\n return dateObj.getHours();\n },\n HH: function HH(dateObj) {\n return pad(dateObj.getHours());\n },\n m: function m(dateObj) {\n return dateObj.getMinutes();\n },\n mm: function mm(dateObj) {\n return pad(dateObj.getMinutes());\n },\n s: function s(dateObj) {\n return dateObj.getSeconds();\n },\n ss: function ss(dateObj) {\n return pad(dateObj.getSeconds());\n },\n S: function S(dateObj) {\n return Math.round(dateObj.getMilliseconds() / 100);\n },\n SS: function SS(dateObj) {\n return pad(Math.round(dateObj.getMilliseconds() / 10), 2);\n },\n SSS: function SSS(dateObj) {\n return pad(dateObj.getMilliseconds(), 3);\n },\n a: function a(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];\n },\n A: function A(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase();\n },\n ZZ: function ZZ(dateObj) {\n var o = dateObj.getTimezoneOffset();\n return (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4);\n }\n };\n\n var parseFlags = {\n d: [twoDigits, function (d, v) {\n d.day = v;\n }],\n Do: [twoDigits + word, function (d, v) {\n d.day = parseInt(v, 10);\n }],\n M: [twoDigits, function (d, v) {\n d.month = v - 1;\n }],\n yy: [twoDigits, function (d, v) {\n var da = new Date(),\n cent = +('' + da.getFullYear()).substr(0, 2);\n d.year = '' + (v > 68 ? cent - 1 : cent) + v;\n }],\n h: [twoDigits, function (d, v) {\n d.hour = v;\n }],\n m: [twoDigits, function (d, v) {\n d.minute = v;\n }],\n s: [twoDigits, function (d, v) {\n d.second = v;\n }],\n yyyy: [fourDigits, function (d, v) {\n d.year = v;\n }],\n S: ['\\\\d', function (d, v) {\n d.millisecond = v * 100;\n }],\n SS: ['\\\\d{2}', function (d, v) {\n d.millisecond = v * 10;\n }],\n SSS: [threeDigits, function (d, v) {\n d.millisecond = v;\n }],\n D: [twoDigits, noop],\n ddd: [word, noop],\n MMM: [word, monthUpdate('monthNamesShort')],\n MMMM: [word, monthUpdate('monthNames')],\n a: [word, function (d, v, i18n) {\n var val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n d.isPm = false;\n } else if (val === i18n.amPm[1]) {\n d.isPm = true;\n }\n }],\n ZZ: ['[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z', function (d, v) {\n var parts = (v + '').match(/([+-]|\\d\\d)/gi),\n minutes;\n\n if (parts) {\n minutes = +(parts[1] * 60) + parseInt(parts[2], 10);\n d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;\n }\n }]\n };\n parseFlags.dd = parseFlags.d;\n parseFlags.dddd = parseFlags.ddd;\n parseFlags.DD = parseFlags.D;\n parseFlags.mm = parseFlags.m;\n parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;\n parseFlags.MM = parseFlags.M;\n parseFlags.ss = parseFlags.s;\n parseFlags.A = parseFlags.a;\n\n // Some common format strings\n fecha.masks = {\n default: 'ddd MMM dd yyyy HH:mm:ss',\n shortDate: 'M/D/yy',\n mediumDate: 'MMM d, yyyy',\n longDate: 'MMMM d, yyyy',\n fullDate: 'dddd, MMMM d, yyyy',\n shortTime: 'HH:mm',\n mediumTime: 'HH:mm:ss',\n longTime: 'HH:mm:ss.SSS'\n };\n\n /***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n */\n fecha.format = function (dateObj, mask, i18nSettings) {\n var i18n = i18nSettings || fecha.i18n;\n\n if (typeof dateObj === 'number') {\n dateObj = new Date(dateObj);\n }\n\n if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) {\n throw new Error('Invalid Date in fecha.format');\n }\n\n mask = fecha.masks[mask] || mask || fecha.masks['default'];\n\n var literals = [];\n\n // Make literals inactive by replacing them with ??\n mask = mask.replace(literal, function ($0, $1) {\n literals.push($1);\n return '@@@';\n });\n // Apply formatting rules\n mask = mask.replace(token, function ($0) {\n return $0 in formatFlags ? formatFlags[$0](dateObj, i18n) : $0.slice(1, $0.length - 1);\n });\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, function () {\n return literals.shift();\n });\n };\n\n /**\n * Parse a date string into an object, changes - into /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @returns {Date|boolean}\n */\n fecha.parse = function (dateStr, format, i18nSettings) {\n var i18n = i18nSettings || fecha.i18n;\n\n if (typeof format !== 'string') {\n throw new Error('Invalid format in fecha.parse');\n }\n\n format = fecha.masks[format] || format;\n\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n\n var dateInfo = {};\n var parseInfo = [];\n var literals = [];\n format = format.replace(literal, function ($0, $1) {\n literals.push($1);\n return '@@@';\n });\n var newFormat = regexEscape(format).replace(token, function ($0) {\n if (parseFlags[$0]) {\n var info = parseFlags[$0];\n parseInfo.push(info[1]);\n return '(' + info[0] + ')';\n }\n\n return $0;\n });\n newFormat = newFormat.replace(/@@@/g, function () {\n return literals.shift();\n });\n var matches = dateStr.match(new RegExp(newFormat, 'i'));\n if (!matches) {\n return null;\n }\n\n for (var i = 1; i < matches.length; i++) {\n parseInfo[i - 1](dateInfo, matches[i], i18n);\n }\n\n var today = new Date();\n if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n } else if (dateInfo.isPm === false && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n\n var date;\n if (dateInfo.timezoneOffset != null) {\n dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset;\n date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1, dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0));\n } else {\n date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1, dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0);\n }\n return date;\n };\n\n /* istanbul ignore next */\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = fecha;\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return fecha;\n });\n } else {\n main.fecha = fecha;\n }\n})(undefined);","'use strict';\n\nexports.__esModule = true;\nexports.validateRangeInOneMonth = exports.extractTimeFormat = exports.extractDateFormat = exports.nextYear = exports.prevYear = exports.nextMonth = exports.prevMonth = exports.changeYearMonthAndClampDate = exports.timeWithinRange = exports.limitTimeRange = exports.clearMilliseconds = exports.clearTime = exports.modifyWithTimeString = exports.modifyTime = exports.modifyDate = exports.range = exports.getRangeMinutes = exports.getMonthDays = exports.getPrevMonthLastDays = exports.getRangeHours = exports.getWeekNumber = exports.getStartDateOfMonth = exports.nextDate = exports.prevDate = exports.getFirstDayOfMonth = exports.getDayCountOfYear = exports.getDayCountOfMonth = exports.parseDate = exports.formatDate = exports.isDateObject = exports.isDate = exports.toDate = exports.getI18nSettings = undefined;\n\nvar _date = require('element-ui/lib/utils/date');\n\nvar _date2 = _interopRequireDefault(_date);\n\nvar _locale = require('element-ui/lib/locale');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar weeks = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nvar months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];\n\nvar newArray = function newArray(start, end) {\n var result = [];\n for (var i = start; i <= end; i++) {\n result.push(i);\n }\n return result;\n};\n\nvar getI18nSettings = exports.getI18nSettings = function getI18nSettings() {\n return {\n dayNamesShort: weeks.map(function (week) {\n return (0, _locale.t)('el.datepicker.weeks.' + week);\n }),\n dayNames: weeks.map(function (week) {\n return (0, _locale.t)('el.datepicker.weeks.' + week);\n }),\n monthNamesShort: months.map(function (month) {\n return (0, _locale.t)('el.datepicker.months.' + month);\n }),\n monthNames: months.map(function (month, index) {\n return (0, _locale.t)('el.datepicker.month' + (index + 1));\n }),\n amPm: ['am', 'pm']\n };\n};\n\nvar toDate = exports.toDate = function toDate(date) {\n return isDate(date) ? new Date(date) : null;\n};\n\nvar isDate = exports.isDate = function isDate(date) {\n if (date === null || date === undefined) return false;\n if (isNaN(new Date(date).getTime())) return false;\n if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`\n return true;\n};\n\nvar isDateObject = exports.isDateObject = function isDateObject(val) {\n return val instanceof Date;\n};\n\nvar formatDate = exports.formatDate = function formatDate(date, format) {\n date = toDate(date);\n if (!date) return '';\n return _date2.default.format(date, format || 'yyyy-MM-dd', getI18nSettings());\n};\n\nvar parseDate = exports.parseDate = function parseDate(string, format) {\n return _date2.default.parse(string, format || 'yyyy-MM-dd', getI18nSettings());\n};\n\nvar getDayCountOfMonth = exports.getDayCountOfMonth = function getDayCountOfMonth(year, month) {\n if (month === 3 || month === 5 || month === 8 || month === 10) {\n return 30;\n }\n\n if (month === 1) {\n if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {\n return 29;\n } else {\n return 28;\n }\n }\n\n return 31;\n};\n\nvar getDayCountOfYear = exports.getDayCountOfYear = function getDayCountOfYear(year) {\n var isLeapYear = year % 400 === 0 || year % 100 !== 0 && year % 4 === 0;\n return isLeapYear ? 366 : 365;\n};\n\nvar getFirstDayOfMonth = exports.getFirstDayOfMonth = function getFirstDayOfMonth(date) {\n var temp = new Date(date.getTime());\n temp.setDate(1);\n return temp.getDay();\n};\n\n// see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript\n// {prev, next} Date should work for Daylight Saving Time\n// Adding 24 * 60 * 60 * 1000 does not work in the above scenario\nvar prevDate = exports.prevDate = function prevDate(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);\n};\n\nvar nextDate = exports.nextDate = function nextDate(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\n};\n\nvar getStartDateOfMonth = exports.getStartDateOfMonth = function getStartDateOfMonth(year, month) {\n var result = new Date(year, month, 1);\n var day = result.getDay();\n\n if (day === 0) {\n return prevDate(result, 7);\n } else {\n return prevDate(result, day);\n }\n};\n\nvar getWeekNumber = exports.getWeekNumber = function getWeekNumber(src) {\n if (!isDate(src)) return null;\n var date = new Date(src.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week 1.\n // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours.\n return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n};\n\nvar getRangeHours = exports.getRangeHours = function getRangeHours(ranges) {\n var hours = [];\n var disabledHours = [];\n\n (ranges || []).forEach(function (range) {\n var value = range.map(function (date) {\n return date.getHours();\n });\n\n disabledHours = disabledHours.concat(newArray(value[0], value[1]));\n });\n\n if (disabledHours.length) {\n for (var i = 0; i < 24; i++) {\n hours[i] = disabledHours.indexOf(i) === -1;\n }\n } else {\n for (var _i = 0; _i < 24; _i++) {\n hours[_i] = false;\n }\n }\n\n return hours;\n};\n\nvar getPrevMonthLastDays = exports.getPrevMonthLastDays = function getPrevMonthLastDays(date, amount) {\n if (amount <= 0) return [];\n var temp = new Date(date.getTime());\n temp.setDate(0);\n var lastDay = temp.getDate();\n return range(amount).map(function (_, index) {\n return lastDay - (amount - index - 1);\n });\n};\n\nvar getMonthDays = exports.getMonthDays = function getMonthDays(date) {\n var temp = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n var days = temp.getDate();\n return range(days).map(function (_, index) {\n return index + 1;\n });\n};\n\nfunction setRangeData(arr, start, end, value) {\n for (var i = start; i < end; i++) {\n arr[i] = value;\n }\n}\n\nvar getRangeMinutes = exports.getRangeMinutes = function getRangeMinutes(ranges, hour) {\n var minutes = new Array(60);\n\n if (ranges.length > 0) {\n ranges.forEach(function (range) {\n var start = range[0];\n var end = range[1];\n var startHour = start.getHours();\n var startMinute = start.getMinutes();\n var endHour = end.getHours();\n var endMinute = end.getMinutes();\n if (startHour === hour && endHour !== hour) {\n setRangeData(minutes, startMinute, 60, true);\n } else if (startHour === hour && endHour === hour) {\n setRangeData(minutes, startMinute, endMinute + 1, true);\n } else if (startHour !== hour && endHour === hour) {\n setRangeData(minutes, 0, endMinute + 1, true);\n } else if (startHour < hour && endHour > hour) {\n setRangeData(minutes, 0, 60, true);\n }\n });\n } else {\n setRangeData(minutes, 0, 60, true);\n }\n return minutes;\n};\n\nvar range = exports.range = function range(n) {\n // see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n\n return Array.apply(null, { length: n }).map(function (_, n) {\n return n;\n });\n};\n\nvar modifyDate = exports.modifyDate = function modifyDate(date, y, m, d) {\n return new Date(y, m, d, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n\nvar modifyTime = exports.modifyTime = function modifyTime(date, h, m, s) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), h, m, s, date.getMilliseconds());\n};\n\nvar modifyWithTimeString = exports.modifyWithTimeString = function modifyWithTimeString(date, time) {\n if (date == null || !time) {\n return date;\n }\n time = parseDate(time, 'HH:mm:ss');\n return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds());\n};\n\nvar clearTime = exports.clearTime = function clearTime(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n};\n\nvar clearMilliseconds = exports.clearMilliseconds = function clearMilliseconds(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);\n};\n\nvar limitTimeRange = exports.limitTimeRange = function limitTimeRange(date, ranges) {\n var format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'HH:mm:ss';\n\n // TODO: refactory a more elegant solution\n if (ranges.length === 0) return date;\n var normalizeDate = function normalizeDate(date) {\n return _date2.default.parse(_date2.default.format(date, format), format);\n };\n var ndate = normalizeDate(date);\n var nranges = ranges.map(function (range) {\n return range.map(normalizeDate);\n });\n if (nranges.some(function (nrange) {\n return ndate >= nrange[0] && ndate <= nrange[1];\n })) return date;\n\n var minDate = nranges[0][0];\n var maxDate = nranges[0][0];\n\n nranges.forEach(function (nrange) {\n minDate = new Date(Math.min(nrange[0], minDate));\n maxDate = new Date(Math.max(nrange[1], minDate));\n });\n\n var ret = ndate < minDate ? minDate : maxDate;\n // preserve Year/Month/Date\n return modifyDate(ret, date.getFullYear(), date.getMonth(), date.getDate());\n};\n\nvar timeWithinRange = exports.timeWithinRange = function timeWithinRange(date, selectableRange, format) {\n var limitedDate = limitTimeRange(date, selectableRange, format);\n return limitedDate.getTime() === date.getTime();\n};\n\nvar changeYearMonthAndClampDate = exports.changeYearMonthAndClampDate = function changeYearMonthAndClampDate(date, year, month) {\n // clamp date to the number of days in `year`, `month`\n // eg: (2010-1-31, 2010, 2) => 2010-2-28\n var monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));\n return modifyDate(date, year, month, monthDate);\n};\n\nvar prevMonth = exports.prevMonth = function prevMonth(date) {\n var year = date.getFullYear();\n var month = date.getMonth();\n return month === 0 ? changeYearMonthAndClampDate(date, year - 1, 11) : changeYearMonthAndClampDate(date, year, month - 1);\n};\n\nvar nextMonth = exports.nextMonth = function nextMonth(date) {\n var year = date.getFullYear();\n var month = date.getMonth();\n return month === 11 ? changeYearMonthAndClampDate(date, year + 1, 0) : changeYearMonthAndClampDate(date, year, month + 1);\n};\n\nvar prevYear = exports.prevYear = function prevYear(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var year = date.getFullYear();\n var month = date.getMonth();\n return changeYearMonthAndClampDate(date, year - amount, month);\n};\n\nvar nextYear = exports.nextYear = function nextYear(date) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var year = date.getFullYear();\n var month = date.getMonth();\n return changeYearMonthAndClampDate(date, year + amount, month);\n};\n\nvar extractDateFormat = exports.extractDateFormat = function extractDateFormat(format) {\n return format.replace(/\\W?m{1,2}|\\W?ZZ/g, '').replace(/\\W?h{1,2}|\\W?s{1,3}|\\W?a/gi, '').trim();\n};\n\nvar extractTimeFormat = exports.extractTimeFormat = function extractTimeFormat(format) {\n return format.replace(/\\W?D{1,2}|\\W?Do|\\W?d{1,4}|\\W?M{1,4}|\\W?y{2,4}/g, '').trim();\n};\n\nvar validateRangeInOneMonth = exports.validateRangeInOneMonth = function validateRangeInOneMonth(start, end) {\n return start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear();\n};","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 105);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 105:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=template&id=d0387074&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"label\",\n {\n staticClass: \"el-checkbox\",\n class: [\n _vm.border && _vm.checkboxSize\n ? \"el-checkbox--\" + _vm.checkboxSize\n : \"\",\n { \"is-disabled\": _vm.isDisabled },\n { \"is-bordered\": _vm.border },\n { \"is-checked\": _vm.isChecked }\n ],\n attrs: {\n role: \"checkbox\",\n \"aria-checked\": _vm.indeterminate ? \"mixed\" : _vm.isChecked,\n \"aria-disabled\": _vm.isDisabled,\n id: _vm.id\n }\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"el-checkbox__input\",\n class: {\n \"is-disabled\": _vm.isDisabled,\n \"is-checked\": _vm.isChecked,\n \"is-indeterminate\": _vm.indeterminate,\n \"is-focus\": _vm.focus\n },\n attrs: { \"aria-checked\": \"mixed\" }\n },\n [\n _c(\"span\", { staticClass: \"el-checkbox__inner\" }),\n _vm.trueLabel || _vm.falseLabel\n ? _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox__original\",\n attrs: {\n type: \"checkbox\",\n \"aria-hidden\": \"true\",\n name: _vm.name,\n disabled: _vm.isDisabled,\n \"true-value\": _vm.trueLabel,\n \"false-value\": _vm.falseLabel\n },\n domProps: {\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, null) > -1\n : _vm._q(_vm.model, _vm.trueLabel)\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? _vm.trueLabel : _vm.falseLabel\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n })\n : _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.model,\n expression: \"model\"\n }\n ],\n staticClass: \"el-checkbox__original\",\n attrs: {\n type: \"checkbox\",\n \"aria-hidden\": \"true\",\n disabled: _vm.isDisabled,\n name: _vm.name\n },\n domProps: {\n value: _vm.label,\n checked: Array.isArray(_vm.model)\n ? _vm._i(_vm.model, _vm.label) > -1\n : _vm.model\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.model,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = _vm.label,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.model = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.model = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.model = $$c\n }\n },\n _vm.handleChange\n ],\n focus: function($event) {\n _vm.focus = true\n },\n blur: function($event) {\n _vm.focus = false\n }\n }\n })\n ]\n ),\n _vm.$slots.default || _vm.label\n ? _c(\n \"span\",\n { staticClass: \"el-checkbox__label\" },\n [\n _vm._t(\"default\"),\n !_vm.$slots.default ? [_vm._v(_vm._s(_vm.label))] : _vm._e()\n ],\n 2\n )\n : _vm._e()\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=template&id=d0387074&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ var checkboxvue_type_script_lang_js_ = ({\n name: 'ElCheckbox',\n\n mixins: [emitter_default.a],\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n componentName: 'ElCheckbox',\n\n data: function data() {\n return {\n selfModel: false,\n focus: false,\n isLimitExceeded: false\n };\n },\n\n\n computed: {\n model: {\n get: function get() {\n return this.isGroup ? this.store : this.value !== undefined ? this.value : this.selfModel;\n },\n set: function set(val) {\n if (this.isGroup) {\n this.isLimitExceeded = false;\n this._checkboxGroup.min !== undefined && val.length < this._checkboxGroup.min && (this.isLimitExceeded = true);\n\n this._checkboxGroup.max !== undefined && val.length > this._checkboxGroup.max && (this.isLimitExceeded = true);\n\n this.isLimitExceeded === false && this.dispatch('ElCheckboxGroup', 'input', [val]);\n } else {\n this.$emit('input', val);\n this.selfModel = val;\n }\n }\n },\n\n isChecked: function isChecked() {\n if ({}.toString.call(this.model) === '[object Boolean]') {\n return this.model;\n } else if (Array.isArray(this.model)) {\n return this.model.indexOf(this.label) > -1;\n } else if (this.model !== null && this.model !== undefined) {\n return this.model === this.trueLabel;\n }\n },\n isGroup: function isGroup() {\n var parent = this.$parent;\n while (parent) {\n if (parent.$options.componentName !== 'ElCheckboxGroup') {\n parent = parent.$parent;\n } else {\n this._checkboxGroup = parent;\n return true;\n }\n }\n return false;\n },\n store: function store() {\n return this._checkboxGroup ? this._checkboxGroup.value : this.value;\n },\n\n\n /* used to make the isDisabled judgment under max/min props */\n isLimitDisabled: function isLimitDisabled() {\n var _checkboxGroup = this._checkboxGroup,\n max = _checkboxGroup.max,\n min = _checkboxGroup.min;\n\n return !!(max || min) && this.model.length >= max && !this.isChecked || this.model.length <= min && this.isChecked;\n },\n isDisabled: function isDisabled() {\n return this.isGroup ? this._checkboxGroup.disabled || this.disabled || (this.elForm || {}).disabled || this.isLimitDisabled : this.disabled || (this.elForm || {}).disabled;\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n checkboxSize: function checkboxSize() {\n var temCheckboxSize = this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n return this.isGroup ? this._checkboxGroup.checkboxGroupSize || temCheckboxSize : temCheckboxSize;\n }\n },\n\n props: {\n value: {},\n label: {},\n indeterminate: Boolean,\n disabled: Boolean,\n checked: Boolean,\n name: String,\n trueLabel: [String, Number],\n falseLabel: [String, Number],\n id: String, /* 当indeterminate为真时,为controls提供相关连的checkbox的id,表明元素间的控制关系*/\n controls: String, /* 当indeterminate为真时,为controls提供相关连的checkbox的id,表明元素间的控制关系*/\n border: Boolean,\n size: String\n },\n\n methods: {\n addToStore: function addToStore() {\n if (Array.isArray(this.model) && this.model.indexOf(this.label) === -1) {\n this.model.push(this.label);\n } else {\n this.model = this.trueLabel || true;\n }\n },\n handleChange: function handleChange(ev) {\n var _this = this;\n\n if (this.isLimitExceeded) return;\n var value = void 0;\n if (ev.target.checked) {\n value = this.trueLabel === undefined ? true : this.trueLabel;\n } else {\n value = this.falseLabel === undefined ? false : this.falseLabel;\n }\n this.$emit('change', value, ev);\n this.$nextTick(function () {\n if (_this.isGroup) {\n _this.dispatch('ElCheckboxGroup', 'change', [_this._checkboxGroup.value]);\n }\n });\n }\n },\n\n created: function created() {\n this.checked && this.addToStore();\n },\n mounted: function mounted() {\n // 为indeterminate元素 添加aria-controls 属性\n if (this.indeterminate) {\n this.$el.setAttribute('aria-controls', this.controls);\n }\n },\n\n\n watch: {\n value: function value(_value) {\n this.dispatch('ElFormItem', 'el.form.change', _value);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_checkboxvue_type_script_lang_js_ = (checkboxvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_checkboxvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/checkbox/src/checkbox.vue\"\n/* harmony default export */ var src_checkbox = (component.exports);\n// CONCATENATED MODULE: ./packages/checkbox/index.js\n\n\n/* istanbul ignore next */\nsrc_checkbox.install = function (Vue) {\n Vue.component(src_checkbox.name, src_checkbox);\n};\n\n/* harmony default export */ var packages_checkbox = __webpack_exports__[\"default\"] = (src_checkbox);\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 52);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 3:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/util\");\n\n/***/ }),\n\n/***/ 33:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=template&id=7a44c642&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"li\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.visible,\n expression: \"visible\"\n }\n ],\n staticClass: \"el-select-dropdown__item\",\n class: {\n selected: _vm.itemSelected,\n \"is-disabled\": _vm.disabled || _vm.groupDisabled || _vm.limitReached,\n hover: _vm.hover\n },\n on: {\n mouseenter: _vm.hoverItem,\n click: function($event) {\n $event.stopPropagation()\n return _vm.selectOptionClick($event)\n }\n }\n },\n [_vm._t(\"default\", [_c(\"span\", [_vm._v(_vm._s(_vm.currentLabel))])])],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=template&id=7a44c642&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/utils/util\"\nvar util_ = __webpack_require__(3);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=script&lang=js&\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n/* harmony default export */ var optionvue_type_script_lang_js_ = ({\n mixins: [emitter_default.a],\n\n name: 'ElOption',\n\n componentName: 'ElOption',\n\n inject: ['select'],\n\n props: {\n value: {\n required: true\n },\n label: [String, Number],\n created: Boolean,\n disabled: {\n type: Boolean,\n default: false\n }\n },\n\n data: function data() {\n return {\n index: -1,\n groupDisabled: false,\n visible: true,\n hitState: false,\n hover: false\n };\n },\n\n\n computed: {\n isObject: function isObject() {\n return Object.prototype.toString.call(this.value).toLowerCase() === '[object object]';\n },\n currentLabel: function currentLabel() {\n return this.label || (this.isObject ? '' : this.value);\n },\n currentValue: function currentValue() {\n return this.value || this.label || '';\n },\n itemSelected: function itemSelected() {\n if (!this.select.multiple) {\n return this.isEqual(this.value, this.select.value);\n } else {\n return this.contains(this.select.value, this.value);\n }\n },\n limitReached: function limitReached() {\n if (this.select.multiple) {\n return !this.itemSelected && (this.select.value || []).length >= this.select.multipleLimit && this.select.multipleLimit > 0;\n } else {\n return false;\n }\n }\n },\n\n watch: {\n currentLabel: function currentLabel() {\n if (!this.created && !this.select.remote) this.dispatch('ElSelect', 'setSelected');\n },\n value: function value(val, oldVal) {\n var _select = this.select,\n remote = _select.remote,\n valueKey = _select.valueKey;\n\n if (!this.created && !remote) {\n if (valueKey && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && (typeof oldVal === 'undefined' ? 'undefined' : _typeof(oldVal)) === 'object' && val[valueKey] === oldVal[valueKey]) {\n return;\n }\n this.dispatch('ElSelect', 'setSelected');\n }\n }\n },\n\n methods: {\n isEqual: function isEqual(a, b) {\n if (!this.isObject) {\n return a === b;\n } else {\n var valueKey = this.select.valueKey;\n return Object(util_[\"getValueByPath\"])(a, valueKey) === Object(util_[\"getValueByPath\"])(b, valueKey);\n }\n },\n contains: function contains() {\n var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var target = arguments[1];\n\n if (!this.isObject) {\n return arr && arr.indexOf(target) > -1;\n } else {\n var valueKey = this.select.valueKey;\n return arr && arr.some(function (item) {\n return Object(util_[\"getValueByPath\"])(item, valueKey) === Object(util_[\"getValueByPath\"])(target, valueKey);\n });\n }\n },\n handleGroupDisabled: function handleGroupDisabled(val) {\n this.groupDisabled = val;\n },\n hoverItem: function hoverItem() {\n if (!this.disabled && !this.groupDisabled) {\n this.select.hoverIndex = this.select.options.indexOf(this);\n }\n },\n selectOptionClick: function selectOptionClick() {\n if (this.disabled !== true && this.groupDisabled !== true) {\n this.dispatch('ElSelect', 'handleOptionClick', [this, true]);\n }\n },\n queryChange: function queryChange(query) {\n this.visible = new RegExp(Object(util_[\"escapeRegexpString\"])(query), 'i').test(this.currentLabel) || this.created;\n if (!this.visible) {\n this.select.filteredOptionsCount--;\n }\n }\n },\n\n created: function created() {\n this.select.options.push(this);\n this.select.cachedOptions.push(this);\n this.select.optionsCount++;\n this.select.filteredOptionsCount++;\n\n this.$on('queryChange', this.queryChange);\n this.$on('handleGroupDisabled', this.handleGroupDisabled);\n },\n beforeDestroy: function beforeDestroy() {\n this.select.onOptionDestroy(this.select.options.indexOf(this));\n }\n});\n// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_optionvue_type_script_lang_js_ = (optionvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/select/src/option.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_optionvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/select/src/option.vue\"\n/* harmony default export */ var src_option = __webpack_exports__[\"a\"] = (component.exports);\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ }),\n\n/***/ 52:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _select_src_option__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(33);\n\n\n/* istanbul ignore next */\n_select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"].install = function (Vue) {\n Vue.component(_select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"].name, _select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"]);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_select_src_option__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"]);\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 92);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 10:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/input\");\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/utils/dom\");\n\n/***/ }),\n\n/***/ 21:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/focus\");\n\n/***/ }),\n\n/***/ 30:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);\n/* harmony import */ var element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n bind: function bind(el, binding, vnode) {\n var interval = null;\n var startTime = void 0;\n var handler = function handler() {\n return vnode.context[binding.expression].apply();\n };\n var clear = function clear() {\n if (Date.now() - startTime < 100) {\n handler();\n }\n clearInterval(interval);\n interval = null;\n };\n\n Object(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"on\"])(el, 'mousedown', function (e) {\n if (e.button !== 0) return;\n startTime = Date.now();\n Object(element_ui_src_utils_dom__WEBPACK_IMPORTED_MODULE_0__[\"once\"])(document, 'mouseup', clear);\n clearInterval(interval);\n interval = setInterval(handler, 100);\n });\n }\n});\n\n/***/ }),\n\n/***/ 92:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/input-number/src/input-number.vue?vue&type=template&id=42f8cf66&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n \"el-input-number\",\n _vm.inputNumberSize ? \"el-input-number--\" + _vm.inputNumberSize : \"\",\n { \"is-disabled\": _vm.inputNumberDisabled },\n { \"is-without-controls\": !_vm.controls },\n { \"is-controls-right\": _vm.controlsAtRight }\n ],\n on: {\n dragstart: function($event) {\n $event.preventDefault()\n }\n }\n },\n [\n _vm.controls\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.decrease,\n expression: \"decrease\"\n }\n ],\n staticClass: \"el-input-number__decrease\",\n class: { \"is-disabled\": _vm.minDisabled },\n attrs: { role: \"button\" },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.decrease($event)\n }\n }\n },\n [\n _c(\"i\", {\n class:\n \"el-icon-\" + (_vm.controlsAtRight ? \"arrow-down\" : \"minus\")\n })\n ]\n )\n : _vm._e(),\n _vm.controls\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"repeat-click\",\n rawName: \"v-repeat-click\",\n value: _vm.increase,\n expression: \"increase\"\n }\n ],\n staticClass: \"el-input-number__increase\",\n class: { \"is-disabled\": _vm.maxDisabled },\n attrs: { role: \"button\" },\n on: {\n keydown: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.increase($event)\n }\n }\n },\n [\n _c(\"i\", {\n class: \"el-icon-\" + (_vm.controlsAtRight ? \"arrow-up\" : \"plus\")\n })\n ]\n )\n : _vm._e(),\n _c(\"el-input\", {\n ref: \"input\",\n attrs: {\n value: _vm.displayValue,\n placeholder: _vm.placeholder,\n disabled: _vm.inputNumberDisabled,\n size: _vm.inputNumberSize,\n max: _vm.max,\n min: _vm.min,\n name: _vm.name,\n label: _vm.label\n },\n on: {\n blur: _vm.handleBlur,\n focus: _vm.handleFocus,\n input: _vm.handleInput,\n change: _vm.handleInputChange\n },\n nativeOn: {\n keydown: [\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"up\", 38, $event.key, [\"Up\", \"ArrowUp\"])\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.increase($event)\n },\n function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"down\", 40, $event.key, [\n \"Down\",\n \"ArrowDown\"\n ])\n ) {\n return null\n }\n $event.preventDefault()\n return _vm.decrease($event)\n }\n ]\n }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue?vue&type=template&id=42f8cf66&\n\n// EXTERNAL MODULE: external \"element-ui/lib/input\"\nvar input_ = __webpack_require__(10);\nvar input_default = /*#__PURE__*/__webpack_require__.n(input_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/focus\"\nvar focus_ = __webpack_require__(21);\nvar focus_default = /*#__PURE__*/__webpack_require__.n(focus_);\n\n// EXTERNAL MODULE: ./src/directives/repeat-click.js\nvar repeat_click = __webpack_require__(30);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/input-number/src/input-number.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ var input_numbervue_type_script_lang_js_ = ({\n name: 'ElInputNumber',\n mixins: [focus_default()('input')],\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n directives: {\n repeatClick: repeat_click[\"a\" /* default */]\n },\n components: {\n ElInput: input_default.a\n },\n props: {\n step: {\n type: Number,\n default: 1\n },\n stepStrictly: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: Infinity\n },\n min: {\n type: Number,\n default: -Infinity\n },\n value: {},\n disabled: Boolean,\n size: String,\n controls: {\n type: Boolean,\n default: true\n },\n controlsPosition: {\n type: String,\n default: ''\n },\n name: String,\n label: String,\n placeholder: String,\n precision: {\n type: Number,\n validator: function validator(val) {\n return val >= 0 && val === parseInt(val, 10);\n }\n }\n },\n data: function data() {\n return {\n currentValue: 0,\n userInput: null\n };\n },\n\n watch: {\n value: {\n immediate: true,\n handler: function handler(value) {\n var newVal = value === undefined ? value : Number(value);\n if (newVal !== undefined) {\n if (isNaN(newVal)) {\n return;\n }\n\n if (this.stepStrictly) {\n var stepPrecision = this.getPrecision(this.step);\n var precisionFactor = Math.pow(10, stepPrecision);\n newVal = Math.round(newVal / this.step) * precisionFactor * this.step / precisionFactor;\n }\n\n if (this.precision !== undefined) {\n newVal = this.toPrecision(newVal, this.precision);\n }\n }\n if (newVal >= this.max) newVal = this.max;\n if (newVal <= this.min) newVal = this.min;\n this.currentValue = newVal;\n this.userInput = null;\n this.$emit('input', newVal);\n }\n }\n },\n computed: {\n minDisabled: function minDisabled() {\n return this._decrease(this.value, this.step) < this.min;\n },\n maxDisabled: function maxDisabled() {\n return this._increase(this.value, this.step) > this.max;\n },\n numPrecision: function numPrecision() {\n var value = this.value,\n step = this.step,\n getPrecision = this.getPrecision,\n precision = this.precision;\n\n var stepPrecision = getPrecision(step);\n if (precision !== undefined) {\n if (stepPrecision > precision) {\n console.warn('[Element Warn][InputNumber]precision should not be less than the decimal places of step');\n }\n return precision;\n } else {\n return Math.max(getPrecision(value), stepPrecision);\n }\n },\n controlsAtRight: function controlsAtRight() {\n return this.controls && this.controlsPosition === 'right';\n },\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n inputNumberSize: function inputNumberSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n inputNumberDisabled: function inputNumberDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n displayValue: function displayValue() {\n if (this.userInput !== null) {\n return this.userInput;\n }\n\n var currentValue = this.currentValue;\n\n if (typeof currentValue === 'number') {\n if (this.stepStrictly) {\n var stepPrecision = this.getPrecision(this.step);\n var precisionFactor = Math.pow(10, stepPrecision);\n currentValue = Math.round(currentValue / this.step) * precisionFactor * this.step / precisionFactor;\n }\n\n if (this.precision !== undefined) {\n currentValue = currentValue.toFixed(this.precision);\n }\n }\n\n return currentValue;\n }\n },\n methods: {\n toPrecision: function toPrecision(num, precision) {\n if (precision === undefined) precision = this.numPrecision;\n return parseFloat(Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision));\n },\n getPrecision: function getPrecision(value) {\n if (value === undefined) return 0;\n var valueString = value.toString();\n var dotPosition = valueString.indexOf('.');\n var precision = 0;\n if (dotPosition !== -1) {\n precision = valueString.length - dotPosition - 1;\n }\n return precision;\n },\n _increase: function _increase(val, step) {\n if (typeof val !== 'number' && val !== undefined) return this.currentValue;\n\n var precisionFactor = Math.pow(10, this.numPrecision);\n // Solve the accuracy problem of JS decimal calculation by converting the value to integer.\n return this.toPrecision((precisionFactor * val + precisionFactor * step) / precisionFactor);\n },\n _decrease: function _decrease(val, step) {\n if (typeof val !== 'number' && val !== undefined) return this.currentValue;\n\n var precisionFactor = Math.pow(10, this.numPrecision);\n\n return this.toPrecision((precisionFactor * val - precisionFactor * step) / precisionFactor);\n },\n increase: function increase() {\n if (this.inputNumberDisabled || this.maxDisabled) return;\n var value = this.value || 0;\n var newVal = this._increase(value, this.step);\n this.setCurrentValue(newVal);\n },\n decrease: function decrease() {\n if (this.inputNumberDisabled || this.minDisabled) return;\n var value = this.value || 0;\n var newVal = this._decrease(value, this.step);\n this.setCurrentValue(newVal);\n },\n handleBlur: function handleBlur(event) {\n this.$emit('blur', event);\n },\n handleFocus: function handleFocus(event) {\n this.$emit('focus', event);\n },\n setCurrentValue: function setCurrentValue(newVal) {\n var oldVal = this.currentValue;\n if (typeof newVal === 'number' && this.precision !== undefined) {\n newVal = this.toPrecision(newVal, this.precision);\n }\n if (newVal >= this.max) newVal = this.max;\n if (newVal <= this.min) newVal = this.min;\n if (oldVal === newVal) return;\n this.userInput = null;\n this.$emit('input', newVal);\n this.$emit('change', newVal, oldVal);\n this.currentValue = newVal;\n },\n handleInput: function handleInput(value) {\n this.userInput = value;\n },\n handleInputChange: function handleInputChange(value) {\n var newVal = value === '' ? undefined : Number(value);\n if (!isNaN(newVal) || value === '') {\n this.setCurrentValue(newVal);\n }\n this.userInput = null;\n },\n select: function select() {\n this.$refs.input.select();\n }\n },\n mounted: function mounted() {\n var innerInput = this.$refs.input.$refs.input;\n innerInput.setAttribute('role', 'spinbutton');\n innerInput.setAttribute('aria-valuemax', this.max);\n innerInput.setAttribute('aria-valuemin', this.min);\n innerInput.setAttribute('aria-valuenow', this.currentValue);\n innerInput.setAttribute('aria-disabled', this.inputNumberDisabled);\n },\n updated: function updated() {\n if (!this.$refs || !this.$refs.input) return;\n var innerInput = this.$refs.input.$refs.input;\n innerInput.setAttribute('aria-valuenow', this.currentValue);\n }\n});\n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_input_numbervue_type_script_lang_js_ = (input_numbervue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/input-number/src/input-number.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_input_numbervue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/input-number/src/input-number.vue\"\n/* harmony default export */ var input_number = (component.exports);\n// CONCATENATED MODULE: ./packages/input-number/index.js\n\n\n/* istanbul ignore next */\ninput_number.install = function (Vue) {\n Vue.component(input_number.name, input_number);\n};\n\n/* harmony default export */ var packages_input_number = __webpack_exports__[\"default\"] = (input_number);\n\n/***/ })\n\n/******/ });","'use strict';\n\nexports.__esModule = true;\nvar aria = aria || {};\n\naria.Utils = aria.Utils || {};\n\n/**\n * @desc Set focus on descendant nodes until the first focusable element is\n * found.\n * @param element\n * DOM node for which to find the first focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\naria.Utils.focusFirstDescendant = function (element) {\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusFirstDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Find the last descendant node that is focusable.\n * @param element\n * DOM node for which to find the last focusable descendant.\n * @returns\n * true if a focusable element is found and focus is set.\n */\n\naria.Utils.focusLastDescendant = function (element) {\n for (var i = element.childNodes.length - 1; i >= 0; i--) {\n var child = element.childNodes[i];\n if (aria.Utils.attemptFocus(child) || aria.Utils.focusLastDescendant(child)) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * @desc Set Attempt to set focus on the current node.\n * @param element\n * The node to attempt to focus on.\n * @returns\n * true if element is focused.\n */\naria.Utils.attemptFocus = function (element) {\n if (!aria.Utils.isFocusable(element)) {\n return false;\n }\n aria.Utils.IgnoreUtilFocusChanges = true;\n try {\n element.focus();\n } catch (e) {}\n aria.Utils.IgnoreUtilFocusChanges = false;\n return document.activeElement === element;\n};\n\naria.Utils.isFocusable = function (element) {\n if (element.tabIndex > 0 || element.tabIndex === 0 && element.getAttribute('tabIndex') !== null) {\n return true;\n }\n\n if (element.disabled) {\n return false;\n }\n\n switch (element.nodeName) {\n case 'A':\n return !!element.href && element.rel !== 'ignore';\n case 'INPUT':\n return element.type !== 'hidden' && element.type !== 'file';\n case 'BUTTON':\n case 'SELECT':\n case 'TEXTAREA':\n return true;\n default:\n return false;\n }\n};\n\n/**\n * 触发一个事件\n * mouseenter, mouseleave, mouseover, keyup, change, click 等\n * @param {Element} elm\n * @param {String} name\n * @param {*} opts\n */\naria.Utils.triggerEvent = function (elm, name) {\n var eventName = void 0;\n\n if (/^mouse|click/.test(name)) {\n eventName = 'MouseEvents';\n } else if (/^key/.test(name)) {\n eventName = 'KeyboardEvent';\n } else {\n eventName = 'HTMLEvents';\n }\n var evt = document.createEvent(eventName);\n\n for (var _len = arguments.length, opts = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n opts[_key - 2] = arguments[_key];\n }\n\n evt.initEvent.apply(evt, [name].concat(opts));\n elm.dispatchEvent ? elm.dispatchEvent(evt) : elm.fireEvent('on' + name, evt);\n\n return elm;\n};\n\naria.Utils.keys = {\n tab: 9,\n enter: 13,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n esc: 27\n};\n\nexports.default = aria.Utils;","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function () {\n if (_vue2.default.prototype.$isServer) return 0;\n if (scrollBarWidth !== undefined) return scrollBarWidth;\n\n var outer = document.createElement('div');\n outer.className = 'el-scrollbar__wrap';\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.position = 'absolute';\n outer.style.top = '-9999px';\n document.body.appendChild(outer);\n\n var widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n var inner = document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n var widthWithScroll = inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n scrollBarWidth = widthNoScroll - widthWithScroll;\n\n return scrollBarWidth;\n};\n\nvar _vue = require('vue');\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollBarWidth = void 0;\n\n;","'use strict';\n\nexports.__esModule = true;\n\nvar _vue = require('vue');\n\nvar _vue2 = _interopRequireDefault(_vue);\n\nvar _popup = require('element-ui/lib/utils/popup');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PopperJS = _vue2.default.prototype.$isServer ? function () {} : require('./popper');\nvar stop = function stop(e) {\n return e.stopPropagation();\n};\n\n/**\n * @param {HTMLElement} [reference=$refs.reference] - The reference element used to position the popper.\n * @param {HTMLElement} [popper=$refs.popper] - The HTML element used as popper, or a configuration used to generate the popper.\n * @param {String} [placement=button] - Placement of the popper accepted values: top(-start, -end), right(-start, -end), bottom(-start, -end), left(-start, -end)\n * @param {Number} [offset=0] - Amount of pixels the popper will be shifted (can be negative).\n * @param {Boolean} [visible=false] Visibility of the popup element.\n * @param {Boolean} [visible-arrow=false] Visibility of the arrow, no style.\n */\nexports.default = {\n props: {\n transformOrigin: {\n type: [Boolean, String],\n default: true\n },\n placement: {\n type: String,\n default: 'bottom'\n },\n boundariesPadding: {\n type: Number,\n default: 5\n },\n reference: {},\n popper: {},\n offset: {\n default: 0\n },\n value: Boolean,\n visibleArrow: Boolean,\n arrowOffset: {\n type: Number,\n default: 35\n },\n appendToBody: {\n type: Boolean,\n default: true\n },\n popperOptions: {\n type: Object,\n default: function _default() {\n return {\n gpuAcceleration: false\n };\n }\n }\n },\n\n data: function data() {\n return {\n showPopper: false,\n currentPlacement: ''\n };\n },\n\n\n watch: {\n value: {\n immediate: true,\n handler: function handler(val) {\n this.showPopper = val;\n this.$emit('input', val);\n }\n },\n\n showPopper: function showPopper(val) {\n if (this.disabled) return;\n val ? this.updatePopper() : this.destroyPopper();\n this.$emit('input', val);\n }\n },\n\n methods: {\n createPopper: function createPopper() {\n var _this = this;\n\n if (this.$isServer) return;\n this.currentPlacement = this.currentPlacement || this.placement;\n if (!/^(top|bottom|left|right)(-start|-end)?$/g.test(this.currentPlacement)) {\n return;\n }\n\n var options = this.popperOptions;\n var popper = this.popperElm = this.popperElm || this.popper || this.$refs.popper;\n var reference = this.referenceElm = this.referenceElm || this.reference || this.$refs.reference;\n\n if (!reference && this.$slots.reference && this.$slots.reference[0]) {\n reference = this.referenceElm = this.$slots.reference[0].elm;\n }\n\n if (!popper || !reference) return;\n if (this.visibleArrow) this.appendArrow(popper);\n if (this.appendToBody) document.body.appendChild(this.popperElm);\n if (this.popperJS && this.popperJS.destroy) {\n this.popperJS.destroy();\n }\n\n options.placement = this.currentPlacement;\n options.offset = this.offset;\n options.arrowOffset = this.arrowOffset;\n this.popperJS = new PopperJS(reference, popper, options);\n this.popperJS.onCreate(function (_) {\n _this.$emit('created', _this);\n _this.resetTransformOrigin();\n _this.$nextTick(_this.updatePopper);\n });\n if (typeof options.onUpdate === 'function') {\n this.popperJS.onUpdate(options.onUpdate);\n }\n this.popperJS._popper.style.zIndex = _popup.PopupManager.nextZIndex();\n this.popperElm.addEventListener('click', stop);\n },\n updatePopper: function updatePopper() {\n var popperJS = this.popperJS;\n if (popperJS) {\n popperJS.update();\n if (popperJS._popper) {\n popperJS._popper.style.zIndex = _popup.PopupManager.nextZIndex();\n }\n } else {\n this.createPopper();\n }\n },\n doDestroy: function doDestroy(forceDestroy) {\n /* istanbul ignore if */\n if (!this.popperJS || this.showPopper && !forceDestroy) return;\n this.popperJS.destroy();\n this.popperJS = null;\n },\n destroyPopper: function destroyPopper() {\n if (this.popperJS) {\n this.resetTransformOrigin();\n }\n },\n resetTransformOrigin: function resetTransformOrigin() {\n if (!this.transformOrigin) return;\n var placementMap = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n };\n var placement = this.popperJS._popper.getAttribute('x-placement').split('-')[0];\n var origin = placementMap[placement];\n this.popperJS._popper.style.transformOrigin = typeof this.transformOrigin === 'string' ? this.transformOrigin : ['top', 'bottom'].indexOf(placement) > -1 ? 'center ' + origin : origin + ' center';\n },\n appendArrow: function appendArrow(element) {\n var hash = void 0;\n if (this.appended) {\n return;\n }\n\n this.appended = true;\n\n for (var item in element.attributes) {\n if (/^_v-/.test(element.attributes[item].name)) {\n hash = element.attributes[item].name;\n break;\n }\n }\n\n var arrow = document.createElement('div');\n\n if (hash) {\n arrow.setAttribute(hash, '');\n }\n arrow.setAttribute('x-arrow', '');\n arrow.className = 'popper__arrow';\n element.appendChild(arrow);\n }\n },\n\n beforeDestroy: function beforeDestroy() {\n this.doDestroy(true);\n if (this.popperElm && this.popperElm.parentNode === document.body) {\n this.popperElm.removeEventListener('click', stop);\n document.body.removeChild(this.popperElm);\n }\n },\n\n\n // call destroy in keep-alive mode\n deactivated: function deactivated() {\n this.$options.beforeDestroy[0].call(this);\n }\n};","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 85);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 85:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=template&id=ca859fb4&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"button\",\n {\n staticClass: \"el-button\",\n class: [\n _vm.type ? \"el-button--\" + _vm.type : \"\",\n _vm.buttonSize ? \"el-button--\" + _vm.buttonSize : \"\",\n {\n \"is-disabled\": _vm.buttonDisabled,\n \"is-loading\": _vm.loading,\n \"is-plain\": _vm.plain,\n \"is-round\": _vm.round,\n \"is-circle\": _vm.circle\n }\n ],\n attrs: {\n disabled: _vm.buttonDisabled || _vm.loading,\n autofocus: _vm.autofocus,\n type: _vm.nativeType\n },\n on: { click: _vm.handleClick }\n },\n [\n _vm.loading ? _c(\"i\", { staticClass: \"el-icon-loading\" }) : _vm._e(),\n _vm.icon && !_vm.loading ? _c(\"i\", { class: _vm.icon }) : _vm._e(),\n _vm.$slots.default ? _c(\"span\", [_vm._t(\"default\")], 2) : _vm._e()\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=template&id=ca859fb4&\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var buttonvue_type_script_lang_js_ = ({\n name: 'ElButton',\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n props: {\n type: {\n type: String,\n default: 'default'\n },\n size: String,\n icon: {\n type: String,\n default: ''\n },\n nativeType: {\n type: String,\n default: 'button'\n },\n loading: Boolean,\n disabled: Boolean,\n plain: Boolean,\n autofocus: Boolean,\n round: Boolean,\n circle: Boolean\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n buttonSize: function buttonSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n buttonDisabled: function buttonDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n }\n },\n\n methods: {\n handleClick: function handleClick(evt) {\n this.$emit('click', evt);\n }\n }\n});\n// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=script&lang=js&\n /* harmony default export */ var src_buttonvue_type_script_lang_js_ = (buttonvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./packages/button/src/button.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n src_buttonvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (false) { var api; }\ncomponent.options.__file = \"packages/button/src/button.vue\"\n/* harmony default export */ var src_button = (component.exports);\n// CONCATENATED MODULE: ./packages/button/index.js\n\n\n/* istanbul ignore next */\nsrc_button.install = function (Vue) {\n Vue.component(src_button.name, src_button);\n};\n\n/* harmony default export */ var packages_button = __webpack_exports__[\"default\"] = (src_button);\n\n/***/ })\n\n/******/ });","module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 75);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/migrating\");\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"element-ui/lib/mixins/emitter\");\n\n/***/ }),\n\n/***/ 75:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=template&id=343dd774&\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n class: [\n _vm.type === \"textarea\" ? \"el-textarea\" : \"el-input\",\n _vm.inputSize ? \"el-input--\" + _vm.inputSize : \"\",\n {\n \"is-disabled\": _vm.inputDisabled,\n \"is-exceed\": _vm.inputExceed,\n \"el-input-group\": _vm.$slots.prepend || _vm.$slots.append,\n \"el-input-group--append\": _vm.$slots.append,\n \"el-input-group--prepend\": _vm.$slots.prepend,\n \"el-input--prefix\": _vm.$slots.prefix || _vm.prefixIcon,\n \"el-input--suffix\":\n _vm.$slots.suffix ||\n _vm.suffixIcon ||\n _vm.clearable ||\n _vm.showPassword\n }\n ],\n on: {\n mouseenter: function($event) {\n _vm.hovering = true\n },\n mouseleave: function($event) {\n _vm.hovering = false\n }\n }\n },\n [\n _vm.type !== \"textarea\"\n ? [\n _vm.$slots.prepend\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__prepend\" },\n [_vm._t(\"prepend\")],\n 2\n )\n : _vm._e(),\n _vm.type !== \"textarea\"\n ? _c(\n \"input\",\n _vm._b(\n {\n ref: \"input\",\n staticClass: \"el-input__inner\",\n attrs: {\n tabindex: _vm.tabindex,\n type: _vm.showPassword\n ? _vm.passwordVisible\n ? \"text\"\n : \"password\"\n : _vm.type,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"input\",\n _vm.$attrs,\n false\n )\n )\n : _vm._e(),\n _vm.$slots.prefix || _vm.prefixIcon\n ? _c(\n \"span\",\n { staticClass: \"el-input__prefix\" },\n [\n _vm._t(\"prefix\"),\n _vm.prefixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.prefixIcon\n })\n : _vm._e()\n ],\n 2\n )\n : _vm._e(),\n _vm.getSuffixVisible()\n ? _c(\"span\", { staticClass: \"el-input__suffix\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__suffix-inner\" },\n [\n !_vm.showClear ||\n !_vm.showPwdVisible ||\n !_vm.isWordLimitVisible\n ? [\n _vm._t(\"suffix\"),\n _vm.suffixIcon\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: _vm.suffixIcon\n })\n : _vm._e()\n ]\n : _vm._e(),\n _vm.showClear\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-circle-close el-input__clear\",\n on: { click: _vm.clear }\n })\n : _vm._e(),\n _vm.showPwdVisible\n ? _c(\"i\", {\n staticClass:\n \"el-input__icon el-icon-view el-input__clear\",\n on: { click: _vm.handlePasswordVisible }\n })\n : _vm._e(),\n _vm.isWordLimitVisible\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _c(\n \"span\",\n { staticClass: \"el-input__count-inner\" },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.textLength) +\n \"/\" +\n _vm._s(_vm.upperLimit) +\n \"\\n \"\n )\n ]\n )\n ])\n : _vm._e()\n ],\n 2\n ),\n _vm.validateState\n ? _c(\"i\", {\n staticClass: \"el-input__icon\",\n class: [\"el-input__validateIcon\", _vm.validateIcon]\n })\n : _vm._e()\n ])\n : _vm._e(),\n _vm.$slots.append\n ? _c(\n \"div\",\n { staticClass: \"el-input-group__append\" },\n [_vm._t(\"append\")],\n 2\n )\n : _vm._e()\n ]\n : _c(\n \"textarea\",\n _vm._b(\n {\n ref: \"textarea\",\n staticClass: \"el-textarea__inner\",\n style: _vm.textareaStyle,\n attrs: {\n tabindex: _vm.tabindex,\n disabled: _vm.inputDisabled,\n readonly: _vm.readonly,\n autocomplete: _vm.autoComplete || _vm.autocomplete,\n \"aria-label\": _vm.label\n },\n on: {\n compositionstart: _vm.handleCompositionStart,\n compositionend: _vm.handleCompositionEnd,\n input: _vm.handleInput,\n focus: _vm.handleFocus,\n blur: _vm.handleBlur,\n change: _vm.handleChange\n }\n },\n \"textarea\",\n _vm.$attrs,\n false\n )\n ),\n _vm.isWordLimitVisible && _vm.type === \"textarea\"\n ? _c(\"span\", { staticClass: \"el-input__count\" }, [\n _vm._v(_vm._s(_vm.textLength) + \"/\" + _vm._s(_vm.upperLimit))\n ])\n : _vm._e()\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n// CONCATENATED MODULE: ./packages/input/src/input.vue?vue&type=template&id=343dd774&\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/emitter\"\nvar emitter_ = __webpack_require__(4);\nvar emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);\n\n// EXTERNAL MODULE: external \"element-ui/lib/mixins/migrating\"\nvar migrating_ = __webpack_require__(11);\nvar migrating_default = /*#__PURE__*/__webpack_require__.n(migrating_);\n\n// CONCATENATED MODULE: ./packages/input/src/calcTextareaHeight.js\nvar hiddenTextarea = void 0;\n\nvar HIDDEN_STYLE = '\\n height:0 !important;\\n visibility:hidden !important;\\n overflow:hidden !important;\\n position:absolute !important;\\n z-index:-1000 !important;\\n top:0 !important;\\n right:0 !important\\n';\n\nvar CONTEXT_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];\n\nfunction calculateNodeStyling(targetElement) {\n var style = window.getComputedStyle(targetElement);\n\n var boxSizing = style.getPropertyValue('box-sizing');\n\n var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n\n var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n\n var contextStyle = CONTEXT_STYLE.map(function (name) {\n return name + ':' + style.getPropertyValue(name);\n }).join(';');\n\n return { contextStyle: contextStyle, paddingSize: paddingSize, borderSize: borderSize, boxSizing: boxSizing };\n}\n\nfunction calcTextareaHeight(targetElement) {\n var minRows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var maxRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n document.body.appendChild(hiddenTextarea);\n }\n\n var _calculateNodeStyling = calculateNodeStyling(targetElement),\n paddingSize = _calculateNodeStyling.paddingSize,\n borderSize = _calculateNodeStyling.borderSize,\n boxSizing = _calculateNodeStyling.boxSizing,\n contextStyle = _calculateNodeStyling.contextStyle;\n\n hiddenTextarea.setAttribute('style', contextStyle + ';' + HIDDEN_STYLE);\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || '';\n\n var height = hiddenTextarea.scrollHeight;\n var result = {};\n\n if (boxSizing === 'border-box') {\n height = height + borderSize;\n } else if (boxSizing === 'content-box') {\n height = height - paddingSize;\n }\n\n hiddenTextarea.value = '';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n if (minRows !== null) {\n var minHeight = singleRowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n result.minHeight = minHeight + 'px';\n }\n if (maxRows !== null) {\n var maxHeight = singleRowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n }\n result.height = height + 'px';\n hiddenTextarea.parentNode && hiddenTextarea.parentNode.removeChild(hiddenTextarea);\n hiddenTextarea = null;\n return result;\n};\n// EXTERNAL MODULE: external \"element-ui/lib/utils/merge\"\nvar merge_ = __webpack_require__(9);\nvar merge_default = /*#__PURE__*/__webpack_require__.n(merge_);\n\n// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n/* harmony default export */ var inputvue_type_script_lang_js_ = ({\n name: 'ElInput',\n\n componentName: 'ElInput',\n\n mixins: [emitter_default.a, migrating_default.a],\n\n inheritAttrs: false,\n\n inject: {\n elForm: {\n default: ''\n },\n elFormItem: {\n default: ''\n }\n },\n\n data: function data() {\n return {\n textareaCalcStyle: {},\n hovering: false,\n focused: false,\n isComposing: false,\n passwordVisible: false\n };\n },\n\n\n props: {\n value: [String, Number],\n size: String,\n resize: String,\n form: String,\n disabled: Boolean,\n readonly: Boolean,\n type: {\n type: String,\n default: 'text'\n },\n autosize: {\n type: [Boolean, Object],\n default: false\n },\n autocomplete: {\n type: String,\n default: 'off'\n },\n /** @Deprecated in next major version */\n autoComplete: {\n type: String,\n validator: function validator(val) {\n false && false;\n return true;\n }\n },\n validateEvent: {\n type: Boolean,\n default: true\n },\n suffixIcon: String,\n prefixIcon: String,\n label: String,\n clearable: {\n type: Boolean,\n default: false\n },\n showPassword: {\n type: Boolean,\n default: false\n },\n showWordLimit: {\n type: Boolean,\n default: false\n },\n tabindex: String\n },\n\n computed: {\n _elFormItemSize: function _elFormItemSize() {\n return (this.elFormItem || {}).elFormItemSize;\n },\n validateState: function validateState() {\n return this.elFormItem ? this.elFormItem.validateState : '';\n },\n needStatusIcon: function needStatusIcon() {\n return this.elForm ? this.elForm.statusIcon : false;\n },\n validateIcon: function validateIcon() {\n return {\n validating: 'el-icon-loading',\n success: 'el-icon-circle-check',\n error: 'el-icon-circle-close'\n }[this.validateState];\n },\n textareaStyle: function textareaStyle() {\n return merge_default()({}, this.textareaCalcStyle, { resize: this.resize });\n },\n inputSize: function inputSize() {\n return this.size || this._elFormItemSize || (this.$ELEMENT || {}).size;\n },\n inputDisabled: function inputDisabled() {\n return this.disabled || (this.elForm || {}).disabled;\n },\n nativeInputValue: function nativeInputValue() {\n return this.value === null || this.value === undefined ? '' : String(this.value);\n },\n showClear: function showClear() {\n return this.clearable && !this.inputDisabled && !this.readonly && this.nativeInputValue && (this.focused || this.hovering);\n },\n showPwdVisible: function showPwdVisible() {\n return this.showPassword && !this.inputDisabled && !this.readonly && (!!this.nativeInputValue || this.focused);\n },\n isWordLimitVisible: function isWordLimitVisible() {\n return this.showWordLimit && this.$attrs.maxlength && (this.type === 'text' || this.type === 'textarea') && !this.inputDisabled && !this.readonly && !this.showPassword;\n },\n upperLimit: function upperLimit() {\n return this.$attrs.maxlength;\n },\n textLength: function textLength() {\n if (typeof this.value === 'number') {\n return String(this.value).length;\n }\n\n return (this.value || '').length;\n },\n inputExceed: function inputExceed() {\n // show exceed style if length of initial value greater then maxlength\n return this.isWordLimitVisible && this.textLength > this.upperLimit;\n }\n },\n\n watch: {\n value: function value(val) {\n this.$nextTick(this.resizeTextarea);\n if (this.validateEvent) {\n this.dispatch('ElFormItem', 'el.form.change', [val]);\n }\n },\n\n // native input value is set explicitly\n // do not use v-model / :value in template\n // see: https://github.com/ElemeFE/element/issues/14521\n nativeInputValue: function nativeInputValue() {\n this.setNativeInputValue();\n },\n\n // when change between and