diff options
48 files changed, 6100 insertions, 188 deletions
diff --git a/config/config.exs b/config/config.exs index 4dc7a62d7..8b42a5351 100644 --- a/config/config.exs +++ b/config/config.exs @@ -146,6 +146,7 @@ config :pleroma, :instance, banner_upload_limit: 4_000_000, registrations_open: true, federating: true, + federation_reachability_timeout_days: 7, allow_relay: true, rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy, public: true, @@ -226,7 +227,9 @@ config :pleroma, :mrf_rejectnonpublic, allow_followersonly: false, allow_direct: false -config :pleroma, :mrf_hellthread, threshold: 10 +config :pleroma, :mrf_hellthread, + delist_threshold: 5, + reject_threshold: 10 config :pleroma, :mrf_simple, media_removal: [], @@ -235,6 +238,8 @@ config :pleroma, :mrf_simple, reject: [], accept: [] +config :pleroma, :rich_media, enabled: true + config :pleroma, :media_proxy, enabled: false, proxy_opts: [ diff --git a/config/test.exs b/config/test.exs index 67ed4737f..412970d93 100644 --- a/config/test.exs +++ b/config/test.exs @@ -36,6 +36,7 @@ config :pbkdf2_elixir, rounds: 1 config :pleroma, :websub, Pleroma.Web.WebsubMock config :pleroma, :ostatus, Pleroma.Web.OStatusMock config :tesla, adapter: Tesla.Mock +config :pleroma, :rich_media, enabled: false config :web_push_encryption, :vapid_details, subject: "mailto:administrator@example.com", diff --git a/docs/Pleroma-API.md b/docs/Pleroma-API.md index 3ebea565c..e1448d3f0 100644 --- a/docs/Pleroma-API.md +++ b/docs/Pleroma-API.md @@ -52,6 +52,7 @@ Request parameters can be passed via [query strings](https://en.wikipedia.org/wi * `confirm` * `captcha_solution`: optional, contains provider-specific captcha solution, * `captcha_token`: optional, contains provider-specific captcha token + * `token`: invite token required when the registerations aren't public. * Response: JSON. Returns a user object on success, otherwise returns `{"error": "error_msg"}` * Example response: ``` diff --git a/docs/config.md b/docs/config.md index 4f4a4378c..e042d216f 100644 --- a/docs/config.md +++ b/docs/config.md @@ -17,7 +17,7 @@ Note: `strip_exif` has been replaced by `Pleroma.Upload.Filter.Mogrify`. ## Pleroma.Upload.Filter.Mogrify -* `args`: List of actions for the `mogrify` command like `"strip"` or `["strip", {"impode", "1"}]`. +* `args`: List of actions for the `mogrify` command like `"strip"` or `["strip", "auto-orient", {"impode", "1"}]`. ## Pleroma.Upload.Filter.Dedupe @@ -72,6 +72,7 @@ config :pleroma, Pleroma.Mailer, * `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_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) @@ -123,7 +124,7 @@ This section is used to configure Pleroma-FE, unless ``:managed_config`` in ``:i * `theme`: Which theme to use, they are defined in ``styles.json`` * `logo`: URL of the logo, defaults to Pleroma’s logo -* `logo_mask`: Whenether to mask the 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. @@ -147,7 +148,8 @@ This section is used to configure Pleroma-FE, unless ``:managed_config`` in ``:i * `allow_direct`: whether to allow direct messages ## :mrf_hellthread -* `threshold`: Number of mentioned users after which the message gets discarded as spam +* `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. ## :media_proxy * `enabled`: Enables proxying of remote media to the instance’s proxy @@ -235,6 +237,9 @@ curl "http://localhost:4000/api/pleroma/admin/invite_token?admin_token=somerando * Pleroma.Web.Metadata.Providers.TwitterCard * `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 + ## :hackney_pools Advanced. Tweaks Hackney (http client) connections pools. diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 40bff08c7..d67e2cdc8 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -6,11 +6,13 @@ defmodule Pleroma.Application do use Application import Supervisor.Spec - @name "Pleroma" + @name Mix.Project.config()[:name] @version Mix.Project.config()[:version] + @repository Mix.Project.config()[:source_url] def name, do: @name def version, do: @version def named_version(), do: @name <> " " <> @version + def repository, do: @repository def user_agent() do info = "#{Pleroma.Web.base_url()} <#{Pleroma.Config.get([:instance, :email], "")}>" diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index dc50682ee..0eb1833aa 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -12,6 +12,13 @@ defmodule Pleroma.Config.DeprecationWarnings do You are using the old configuration mechanism for the frontend. Please check config.md. """) end + + if Pleroma.Config.get(:mrf_hellthread, :threshold) do + Logger.warn(""" + !!!DEPRECATION WARNING!!! + You are using the old configuration mechanism for the hellthread filter. Please check config.md. + """) + end end def warn do diff --git a/lib/pleroma/instances.ex b/lib/pleroma/instances.ex new file mode 100644 index 000000000..5e107f4c9 --- /dev/null +++ b/lib/pleroma/instances.ex @@ -0,0 +1,36 @@ +defmodule Pleroma.Instances do + @moduledoc "Instances context." + + @adapter Pleroma.Instances.Instance + + defdelegate filter_reachable(urls_or_hosts), to: @adapter + defdelegate reachable?(url_or_host), to: @adapter + defdelegate set_reachable(url_or_host), to: @adapter + defdelegate set_unreachable(url_or_host, unreachable_since \\ nil), to: @adapter + + def set_consistently_unreachable(url_or_host), + do: set_unreachable(url_or_host, reachability_datetime_threshold()) + + def reachability_datetime_threshold do + federation_reachability_timeout_days = + Pleroma.Config.get(:instance)[:federation_reachability_timeout_days] || 0 + + if federation_reachability_timeout_days > 0 do + NaiveDateTime.add( + NaiveDateTime.utc_now(), + -federation_reachability_timeout_days * 24 * 3600, + :second + ) + else + ~N[0000-01-01 00:00:00] + end + end + + def host(url_or_host) when is_binary(url_or_host) do + if url_or_host =~ ~r/^http/i do + URI.parse(url_or_host).host + else + url_or_host + end + end +end diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex new file mode 100644 index 000000000..4a4ca26dd --- /dev/null +++ b/lib/pleroma/instances/instance.ex @@ -0,0 +1,113 @@ +defmodule Pleroma.Instances.Instance do + @moduledoc "Instance." + + alias Pleroma.Instances + alias Pleroma.Instances.Instance + + use Ecto.Schema + + import Ecto.{Query, Changeset} + + alias Pleroma.Repo + + schema "instances" do + field(:host, :string) + field(:unreachable_since, :naive_datetime) + + timestamps() + end + + defdelegate host(url_or_host), to: Instances + + def changeset(struct, params \\ %{}) do + struct + |> cast(params, [:host, :unreachable_since]) + |> validate_required([:host]) + |> unique_constraint(:host) + end + + def filter_reachable([]), do: %{} + + def filter_reachable(urls_or_hosts) when is_list(urls_or_hosts) do + hosts = + urls_or_hosts + |> Enum.map(&(&1 && host(&1))) + |> Enum.filter(&(to_string(&1) != "")) + + unreachable_since_by_host = + Repo.all( + from(i in Instance, + where: i.host in ^hosts, + select: {i.host, i.unreachable_since} + ) + ) + |> Map.new(& &1) + + reachability_datetime_threshold = Instances.reachability_datetime_threshold() + + for entry <- Enum.filter(urls_or_hosts, &is_binary/1) do + host = host(entry) + unreachable_since = unreachable_since_by_host[host] + + if !unreachable_since || + NaiveDateTime.compare(unreachable_since, reachability_datetime_threshold) == :gt do + {entry, unreachable_since} + end + end + |> Enum.filter(& &1) + |> Map.new(& &1) + end + + def reachable?(url_or_host) when is_binary(url_or_host) do + !Repo.one( + from(i in Instance, + where: + i.host == ^host(url_or_host) and + i.unreachable_since <= ^Instances.reachability_datetime_threshold(), + select: true + ) + ) + end + + def reachable?(_), do: true + + def set_reachable(url_or_host) when is_binary(url_or_host) do + with host <- host(url_or_host), + %Instance{} = existing_record <- Repo.get_by(Instance, %{host: host}) do + {:ok, _instance} = + existing_record + |> changeset(%{unreachable_since: nil}) + |> Repo.update() + end + end + + 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() + host = host(url_or_host) + existing_record = Repo.get_by(Instance, %{host: host}) + + changes = %{unreachable_since: unreachable_since} + + cond do + is_nil(existing_record) -> + %Instance{} + |> changeset(Map.put(changes, :host, host)) + |> Repo.insert() + + existing_record.unreachable_since && + NaiveDateTime.compare(existing_record.unreachable_since, unreachable_since) != :gt -> + {:ok, existing_record} + + true -> + existing_record + |> changeset(changes) + |> Repo.update() + end + end + + def set_unreachable(_, _), do: {:error, nil} +end diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index 707a61f14..7b46a3b05 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -31,8 +31,8 @@ defmodule Pleroma.Object do Repo.one(from(object in Object, where: fragment("(?)->>'id' = ?", object.data, ^ap_id))) end - def normalize(obj) when is_map(obj), do: Object.get_by_ap_id(obj["id"]) - def normalize(ap_id) when is_binary(ap_id), do: Object.get_by_ap_id(ap_id) + def normalize(%{"id" => ap_id}), do: normalize(ap_id) + def normalize(ap_id) when is_binary(ap_id), do: get_cached_by_ap_id(ap_id) def normalize(_), do: nil # Owned objects can only be mutated by their owner @@ -42,24 +42,18 @@ defmodule Pleroma.Object do # Legacy objects can be mutated by anybody def authorize_mutation(%Object{}, %User{}), do: true - if Mix.env() == :test do - def get_cached_by_ap_id(ap_id) do - get_by_ap_id(ap_id) - end - else - def get_cached_by_ap_id(ap_id) do - key = "object:#{ap_id}" - - Cachex.fetch!(:object_cache, key, fn _ -> - object = get_by_ap_id(ap_id) - - if object do - {:commit, object} - else - {:ignore, object} - end - end) - end + def get_cached_by_ap_id(ap_id) do + key = "object:#{ap_id}" + + Cachex.fetch!(:object_cache, key, fn _ -> + object = get_by_ap_id(ap_id) + + if object do + {:commit, object} + else + {:ignore, object} + end + end) end def context_mapping(context) do @@ -90,4 +84,17 @@ defmodule Pleroma.Object do {:ok, object} end end + + def set_cache(%Object{data: %{"id" => ap_id}} = object) do + Cachex.put(:object_cache, "object:#{ap_id}", object) + {:ok, object} + end + + def update_and_set_cache(changeset) do + with {:ok, object} <- Repo.update(changeset) do + set_cache(object) + else + e -> e + end + end end diff --git a/lib/pleroma/plugs/instance_static.ex b/lib/pleroma/plugs/instance_static.ex index af2f6f331..11f108de7 100644 --- a/lib/pleroma/plugs/instance_static.ex +++ b/lib/pleroma/plugs/instance_static.ex @@ -21,7 +21,7 @@ defmodule Pleroma.Plugs.InstanceStatic do end end - @only ~w(index.html static emoji packs sounds images instance favicon.png) + @only ~w(index.html static emoji packs sounds images instance favicon.png sw.js sw-pleroma.js) def init(opts) do opts diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex index 0a19e737b..ce2a1b696 100644 --- a/lib/pleroma/upload.ex +++ b/lib/pleroma/upload.ex @@ -124,10 +124,10 @@ defmodule Pleroma.Upload do :pleroma, Pleroma.Upload, [filters: [Pleroma.Upload.Filter.Mogrify]] - :pleroma, Pleroma.Upload.Filter.Mogrify, args: "strip" + :pleroma, Pleroma.Upload.Filter.Mogrify, args: ["strip", "auto-orient"] """) - Pleroma.Config.put([Pleroma.Upload.Filter.Mogrify], args: "strip") + Pleroma.Config.put([Pleroma.Upload.Filter.Mogrify], args: ["strip", "auto-orient"]) Map.put(opts, :filters, opts.filters ++ [Pleroma.Upload.Filter.Mogrify]) else opts diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 60d1d4811..33630ac7c 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -315,7 +315,16 @@ defmodule Pleroma.User do q = from(u in User, where: u.id == ^follower.id, - update: [set: [following: fragment("array_cat(?, ?)", u.following, ^followed_addresses)]] + update: [ + set: [ + following: + fragment( + "array(select distinct unnest (array_cat(?, ?)))", + u.following, + ^followed_addresses + ) + ] + ] ) {1, [follower]} = Repo.update_all(q, [], returning: true) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 0199ac9e7..4635e7fcd 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.ActivityPub do - alias Pleroma.{Activity, Repo, Object, Upload, User, Notification} + alias Pleroma.{Activity, Repo, Object, Upload, User, Notification, Instances} alias Pleroma.Web.ActivityPub.{Transmogrifier, MRF} alias Pleroma.Web.WebFinger alias Pleroma.Web.Federator @@ -734,7 +734,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end def publish(actor, activity) do - followers = + remote_followers = if actor.follower_address in activity.recipients do {:ok, followers} = User.get_followers(actor) followers |> Enum.filter(&(!&1.local)) @@ -744,29 +744,31 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do public = is_public?(activity) - remote_inboxes = - (Pleroma.Web.Salmon.remote_users(activity) ++ followers) + reachable_inboxes_metadata = + (Pleroma.Web.Salmon.remote_users(activity) ++ remote_followers) |> Enum.filter(fn user -> User.ap_enabled?(user) end) |> Enum.map(fn %{info: %{source_data: data}} -> (is_map(data["endpoints"]) && Map.get(data["endpoints"], "sharedInbox")) || data["inbox"] end) |> Enum.uniq() |> Enum.filter(fn inbox -> should_federate?(inbox, public) end) + |> Instances.filter_reachable() {:ok, data} = Transmogrifier.prepare_outgoing(activity.data) json = Jason.encode!(data) - Enum.each(remote_inboxes, fn inbox -> + Enum.each(reachable_inboxes_metadata, fn {inbox, unreachable_since} -> Federator.enqueue(:publish_single_ap, %{ inbox: inbox, json: json, actor: actor, - id: activity.data["id"] + id: activity.data["id"], + unreachable_since: unreachable_since }) end) end - def publish_one(%{inbox: inbox, json: json, actor: actor, id: id}) do + def publish_one(%{inbox: inbox, json: json, actor: actor, id: id} = params) do Logger.info("Federating #{id} to #{inbox}") host = URI.parse(inbox).host @@ -779,15 +781,26 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do digest: digest }) - @httpoison.post( - inbox, - json, - [ - {"Content-Type", "application/activity+json"}, - {"signature", signature}, - {"digest", digest} - ] - ) + with {:ok, %{status: code}} when code in 200..299 <- + result = + @httpoison.post( + inbox, + json, + [ + {"Content-Type", "application/activity+json"}, + {"signature", signature}, + {"digest", digest} + ] + ) do + if !Map.has_key?(params, :unreachable_since) || params[:unreachable_since], + do: Instances.set_reachable(inbox) + + result + else + {_post_result, response} -> + unless params[:unreachable_since], do: Instances.set_unreachable(inbox) + {:error, response} + end end # TODO: diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 7eed0a600..4dea6ab83 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do use Pleroma.Web, :controller + alias Pleroma.{Activity, User, Object} alias Pleroma.Web.ActivityPub.{ObjectView, UserView} alias Pleroma.Web.ActivityPub.ActivityPub @@ -17,6 +18,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do action_fallback(:errors) plug(Pleroma.Web.FederatingPlug when action in [:inbox, :relay]) + plug(:set_requester_reachable when action in [:inbox]) plug(:relay_active? when action in [:relay]) def relay_active?(conn, _) do @@ -289,4 +291,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do |> put_status(500) |> json("error") end + + defp set_requester_reachable(%Plug.Conn{} = conn, _) do + with actor <- conn.params["actor"], + true <- is_binary(actor) do + Pleroma.Instances.set_reachable(actor) + end + + conn + end end diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index a3f516ae7..4c6e612b2 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -3,20 +3,46 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do + alias Pleroma.User @behaviour Pleroma.Web.ActivityPub.MRF + defp delist_message(message) do + follower_collection = User.get_cached_by_ap_id(message["actor"]).follower_address + + message + |> Map.put("to", [follower_collection]) + |> Map.put("cc", ["https://www.w3.org/ns/activitystreams#Public"]) + end + @impl true - def filter(%{"type" => "Create"} = object) do - threshold = Pleroma.Config.get([:mrf_hellthread, :threshold]) - recipients = (object["to"] || []) ++ (object["cc"] || []) - - if length(recipients) > threshold do - {:reject, nil} - else - {:ok, object} + def filter(%{"type" => "Create"} = message) do + delist_threshold = Pleroma.Config.get([:mrf_hellthread, :delist_threshold]) + + reject_threshold = + Pleroma.Config.get( + [:mrf_hellthread, :reject_threshold], + Pleroma.Config.get([:mrf_hellthread, :threshold]) + ) + + recipients = (message["to"] || []) ++ (message["cc"] || []) + + cond do + length(recipients) > reject_threshold and reject_threshold > 0 -> + {:reject, nil} + + length(recipients) > delist_threshold and delist_threshold > 0 -> + if Enum.member?(message["to"], "https://www.w3.org/ns/activitystreams#Public") or + Enum.member?(message["cc"], "https://www.w3.org/ns/activitystreams#Public") do + {:ok, delist_message(message)} + else + {:ok, message} + end + + true -> + {:ok, message} end end @impl true - def filter(object), do: {:ok, object} + def filter(message), do: {:ok, message} end diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index 3b0cdfe71..4a2cc6738 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -285,7 +285,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do |> Map.put("#{property}_count", length(element)) |> Map.put("#{property}s", element), changeset <- Changeset.change(object, data: new_data), - {:ok, object} <- Repo.update(changeset), + {:ok, object} <- Object.update_and_set_cache(changeset), _ <- update_object_in_activities(object) do {:ok, object} end diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex index 0b4ce9cc4..3eed047ca 100644 --- a/lib/pleroma/web/endpoint.ex +++ b/lib/pleroma/web/endpoint.ex @@ -25,7 +25,7 @@ defmodule Pleroma.Web.Endpoint do at: "/", from: :pleroma, only: - ~w(index.html static finmoji emoji packs sounds images instance sw.js favicon.png schemas doc) + ~w(index.html static finmoji emoji packs sounds images instance sw.js sw-pleroma.js favicon.png schemas doc) ) # Code reloading can be explicitly enabled under the @@ -82,4 +82,8 @@ defmodule Pleroma.Web.Endpoint do port = System.get_env("PORT") || raise "expected the PORT environment variable to be set" {:ok, Keyword.put(config, :http, [:inet6, port: port])} end + + def websocket_url do + String.replace_leading(url(), "http", "ws") + end end diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index f3a0e18b8..bb7676cf0 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.Federator do use GenServer alias Pleroma.User alias Pleroma.Activity - alias Pleroma.Web.{WebFinger, Websub} + alias Pleroma.Web.{WebFinger, Websub, Salmon} alias Pleroma.Web.Federator.RetryQueue alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Relay @@ -124,6 +124,10 @@ defmodule Pleroma.Web.Federator do end end + def handle(:publish_single_salmon, params) do + Salmon.send_to_user(params) + end + def handle(:publish_single_ap, params) do case ActivityPub.publish_one(params) do {:ok, _} -> diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index 0726e6ac4..7f3fbff4a 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -138,7 +138,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do version: "#{@mastodon_api_level} (compatible; #{Pleroma.Application.named_version()})", email: Keyword.get(instance, :email), urls: %{ - streaming_api: String.replace(Pleroma.Web.Endpoint.static_url(), "http", "ws") + streaming_api: Pleroma.Web.Endpoint.websocket_url() }, stats: Stats.get_stats(), thumbnail: Web.base_url() <> "/instance/thumbnail.jpeg", @@ -905,7 +905,10 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do res = ListView.render("list.json", list: list) json(conn, res) else - _e -> json(conn, "error") + _e -> + conn + |> put_status(404) + |> json(%{error: "Record not found"}) end end diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 11b97164d..21694a5ee 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -19,6 +19,10 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do %{ rel: "http://nodeinfo.diaspora.software/ns/schema/2.0", href: Web.base_url() <> "/nodeinfo/2.0.json" + }, + %{ + rel: "http://nodeinfo.diaspora.software/ns/schema/2.1", + href: Web.base_url() <> "/nodeinfo/2.1.json" } ] } @@ -26,8 +30,9 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do json(conn, response) end - # Schema definition: https://github.com/jhass/nodeinfo/blob/master/schemas/2.0/schema.json - def nodeinfo(conn, %{"version" => "2.0"}) do + # returns a nodeinfo 2.0 map, since 2.1 just adds a repository field + # under software. + def raw_nodeinfo() do instance = Application.get_env(:pleroma, :instance) media_proxy = Application.get_env(:pleroma, :media_proxy) suggestions = Application.get_env(:pleroma, :suggestions) @@ -98,10 +103,10 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do ] |> Enum.filter(& &1) - response = %{ + %{ version: "2.0", software: %{ - name: Pleroma.Application.name(), + name: Pleroma.Application.name() |> String.downcase(), version: Pleroma.Application.version() }, protocols: ["ostatus", "activitypub"], @@ -142,12 +147,37 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do restrictedNicknames: Pleroma.Config.get([Pleroma.User, :restricted_nicknames]) } } + end + # Schema definition: https://github.com/jhass/nodeinfo/blob/master/schemas/2.0/schema.json + # and https://github.com/jhass/nodeinfo/blob/master/schemas/2.1/schema.json + def nodeinfo(conn, %{"version" => "2.0"}) do conn |> put_resp_header( "content-type", "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8" ) + |> json(raw_nodeinfo()) + end + + def nodeinfo(conn, %{"version" => "2.1"}) do + raw_response = raw_nodeinfo() + + updated_software = + raw_response + |> Map.get(:software) + |> Map.put(:repository, Pleroma.Application.repository()) + + response = + raw_response + |> Map.put(:software, updated_software) + |> Map.put(:version, "2.1") + + conn + |> put_resp_header( + "content-type", + "application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.1#; charset=utf-8" + ) |> json(response) end diff --git a/lib/pleroma/web/ostatus/ostatus.ex b/lib/pleroma/web/ostatus/ostatus.ex index a3155b79d..a20ca17bb 100644 --- a/lib/pleroma/web/ostatus/ostatus.ex +++ b/lib/pleroma/web/ostatus/ostatus.ex @@ -48,6 +48,9 @@ defmodule Pleroma.Web.OStatus do def handle_incoming(xml_string) do with doc when doc != :error <- parse_document(xml_string) do + with {:ok, actor_user} <- find_make_or_update_user(doc), + do: Pleroma.Instances.set_reachable(actor_user.ap_id) + entries = :xmerl_xpath.string('//entry', doc) activities = diff --git a/lib/pleroma/web/ostatus/ostatus_controller.ex b/lib/pleroma/web/ostatus/ostatus_controller.ex index 297aca2f9..302ff38a4 100644 --- a/lib/pleroma/web/ostatus/ostatus_controller.ex +++ b/lib/pleroma/web/ostatus/ostatus_controller.ex @@ -14,6 +14,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do alias Pleroma.Web.ActivityPub.ActivityPub plug(Pleroma.Web.FederatingPlug when action in [:salmon_incoming]) + action_fallback(:errors) def feed_redirect(conn, %{"nickname" => nickname}) do diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 71fdddef9..521fa7ee0 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -7,7 +7,8 @@ defmodule Pleroma.Web.RichMedia.Helpers do alias Pleroma.Web.RichMedia.Parser def fetch_data_for_activity(%Activity{} = activity) do - with %Object{} = object <- Object.normalize(activity.data["object"]), + with true <- Pleroma.Config.get([:rich_media, :enabled]), + %Object{} = object <- Object.normalize(activity.data["object"]), {:ok, page_url} <- HTML.extract_first_external_url(object, object.data["content"]), {:ok, rich_media} <- Parser.parse(page_url) do %{page_url: page_url, rich_media: rich_media} diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index e67ecc47d..32dec9887 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -30,7 +30,7 @@ defmodule Pleroma.Web.RichMedia.Parser do try do {:ok, %Tesla.Env{body: html}} = Pleroma.HTTP.get(url, [], adapter: [pool: :media]) - html |> maybe_parse() |> get_parsed_data() + html |> maybe_parse() |> clean_parsed_data() |> check_parsed_data() rescue e -> {:error, "Parsing error: #{inspect(e)}"} @@ -46,11 +46,33 @@ defmodule Pleroma.Web.RichMedia.Parser do end) end - defp get_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 - defp get_parsed_data(data) do + defp check_parsed_data(data) do {:error, "Found metadata was invalid or incomplete: #{inspect(data)}"} end + + defp string_is_valid_unicode(data) when is_binary(data) do + data + |> :unicode.characters_to_binary() + |> clean_string() + end + + defp string_is_valid_unicode(data), do: {:ok, data} + + defp clean_string({:error, _, _}), do: {:error, "Invalid data"} + defp clean_string(data), do: {:ok, data} + + defp clean_parsed_data(data) do + data + |> Enum.reject(fn {_, val} -> + case string_is_valid_unicode(val) do + {:ok, _} -> false + _ -> true + end + end) + |> Map.new() + end end diff --git a/lib/pleroma/web/salmon/salmon.ex b/lib/pleroma/web/salmon/salmon.ex index e41657da1..b1c2dc7fa 100644 --- a/lib/pleroma/web/salmon/salmon.ex +++ b/lib/pleroma/web/salmon/salmon.ex @@ -6,6 +6,7 @@ defmodule Pleroma.Web.Salmon do @httpoison Application.get_env(:pleroma, :httpoison) use Bitwise + alias Pleroma.Instances alias Pleroma.Web.XML alias Pleroma.Web.OStatus.ActivityRepresenter alias Pleroma.User @@ -161,25 +162,31 @@ defmodule Pleroma.Web.Salmon do |> Enum.filter(fn user -> user && !user.local end) end - # push an activity to remote accounts - # - defp send_to_user(%{info: %{salmon: salmon}}, feed, poster), - do: send_to_user(salmon, feed, poster) + @doc "Pushes an activity to remote account." + def send_to_user(%{recipient: %{info: %{salmon: salmon}}} = params), + do: send_to_user(Map.put(params, :recipient, salmon)) - defp send_to_user(url, feed, poster) when is_binary(url) do - with {:ok, %{status: code}} <- + def send_to_user(%{recipient: url, feed: feed, poster: poster} = params) when is_binary(url) do + with {:ok, %{status: code}} when code in 200..299 <- poster.( url, feed, [{"Content-Type", "application/magic-envelope+xml"}] ) do + if !Map.has_key?(params, :unreachable_since) || params[:unreachable_since], + do: Instances.set_reachable(url) + Logger.debug(fn -> "Pushed to #{url}, code #{code}" end) + :ok else - e -> Logger.debug(fn -> "Pushing Salmon to #{url} failed, #{inspect(e)}" end) + e -> + unless params[:unreachable_since], do: Instances.set_reachable(url) + Logger.debug(fn -> "Pushing Salmon to #{url} failed, #{inspect(e)}" end) + :error end end - defp send_to_user(_, _, _), do: nil + def send_to_user(_), do: :noop @supported_activities [ "Create", @@ -209,12 +216,23 @@ defmodule Pleroma.Web.Salmon do {:ok, private, _} = keys_from_pem(keys) {:ok, feed} = encode(private, feed) - remote_users(activity) + remote_users = remote_users(activity) + + salmon_urls = Enum.map(remote_users, & &1.info.salmon) + reachable_urls_metadata = Instances.filter_reachable(salmon_urls) + reachable_urls = Map.keys(reachable_urls_metadata) + + remote_users + |> Enum.filter(&(&1.info.salmon in reachable_urls)) |> Enum.each(fn remote_user -> - Task.start(fn -> - Logger.debug(fn -> "Sending Salmon to #{remote_user.ap_id}" end) - send_to_user(remote_user, feed, poster) - end) + Logger.debug(fn -> "Sending Salmon to #{remote_user.ap_id}" end) + + Pleroma.Web.Federator.enqueue(:publish_single_salmon, %{ + recipient: remote_user, + feed: feed, + poster: poster, + unreachable_since: reachable_urls_metadata[remote_user.info.salmon] + }) end) end end diff --git a/lib/pleroma/web/templates/layout/app.html.eex b/lib/pleroma/web/templates/layout/app.html.eex index 2e96c1509..8dd3284d6 100644 --- a/lib/pleroma/web/templates/layout/app.html.eex +++ b/lib/pleroma/web/templates/layout/app.html.eex @@ -1,7 +1,8 @@ <!DOCTYPE html> <html> <head> - <meta charset=utf-8 /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1,minimal-ui" /> <title> <%= Application.get_env(:pleroma, :instance)[:name] %> </title> diff --git a/lib/pleroma/web/websub/websub.ex b/lib/pleroma/web/websub/websub.ex index 7ca62c83b..90ba79962 100644 --- a/lib/pleroma/web/websub/websub.ex +++ b/lib/pleroma/web/websub/websub.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.Websub do alias Ecto.Changeset alias Pleroma.Repo + alias Pleroma.Instances alias Pleroma.Web.Websub.{WebsubServerSubscription, WebsubClientSubscription} alias Pleroma.Web.OStatus.FeedRepresenter alias Pleroma.Web.{XML, Endpoint, OStatus} @@ -53,28 +54,34 @@ defmodule Pleroma.Web.Websub do ] def publish(topic, user, %{data: %{"type" => type}} = activity) when type in @supported_activities do - # TODO: Only send to still valid subscriptions. + response = + user + |> FeedRepresenter.to_simple_form([activity], [user]) + |> :xmerl.export_simple(:xmerl_xml) + |> to_string + query = from( sub in WebsubServerSubscription, where: sub.topic == ^topic and sub.state == "active", - where: fragment("? > NOW()", sub.valid_until) + where: fragment("? > (NOW() at time zone 'UTC')", sub.valid_until) ) subscriptions = Repo.all(query) - Enum.each(subscriptions, fn sub -> - response = - user - |> FeedRepresenter.to_simple_form([activity], [user]) - |> :xmerl.export_simple(:xmerl_xml) - |> to_string + callbacks = Enum.map(subscriptions, & &1.callback) + reachable_callbacks_metadata = Instances.filter_reachable(callbacks) + reachable_callbacks = Map.keys(reachable_callbacks_metadata) + subscriptions + |> Enum.filter(&(&1.callback in reachable_callbacks)) + |> Enum.each(fn sub -> data = %{ xml: response, topic: topic, callback: sub.callback, - secret: sub.secret + secret: sub.secret, + unreachable_since: reachable_callbacks_metadata[sub.callback] } Pleroma.Web.Federator.enqueue(:publish_single_websub, data) @@ -263,11 +270,11 @@ defmodule Pleroma.Web.Websub do end) end - def publish_one(%{xml: xml, topic: topic, callback: callback, secret: secret}) do + def publish_one(%{xml: xml, topic: topic, callback: callback, secret: secret} = params) do signature = sign(secret || "", xml) Logger.info(fn -> "Pushing #{topic} to #{callback}" end) - with {:ok, %{status: code}} <- + with {:ok, %{status: code}} when code in 200..299 <- @httpoison.post( callback, xml, @@ -276,12 +283,16 @@ defmodule Pleroma.Web.Websub do {"X-Hub-Signature", "sha1=#{signature}"} ] ) do + if !Map.has_key?(params, :unreachable_since) || params[:unreachable_since], + do: Instances.set_reachable(callback) + Logger.info(fn -> "Pushed to #{callback}, code #{code}" end) {:ok, code} else - e -> - Logger.debug(fn -> "Couldn't push to #{callback}, #{inspect(e)}" end) - {:error, e} + {_post_result, response} -> + unless params[:unreachable_since], do: Instances.set_reachable(callback) + Logger.debug(fn -> "Couldn't push to #{callback}, #{inspect(response)}" end) + {:error, response} end end end diff --git a/lib/pleroma/web/websub/websub_controller.ex b/lib/pleroma/web/websub/websub_controller.ex index e58f144e5..a92dfe87b 100644 --- a/lib/pleroma/web/websub/websub_controller.ex +++ b/lib/pleroma/web/websub/websub_controller.ex @@ -4,9 +4,11 @@ defmodule Pleroma.Web.Websub.WebsubController do use Pleroma.Web, :controller + alias Pleroma.{Repo, User} alias Pleroma.Web.{Websub, Federator} alias Pleroma.Web.Websub.WebsubClientSubscription + require Logger plug( diff --git a/priv/repo/migrations/20190123125546_create_instances.exs b/priv/repo/migrations/20190123125546_create_instances.exs new file mode 100644 index 000000000..b527ad7ec --- /dev/null +++ b/priv/repo/migrations/20190123125546_create_instances.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Repo.Migrations.CreateInstances do + use Ecto.Migration + + def change do + create table(:instances) do + add :host, :string + add :unreachable_since, :naive_datetime + + timestamps() + end + + create unique_index(:instances, [:host]) + create index(:instances, [:unreachable_since]) + end +end diff --git a/test/fixtures/rich_media/malformed-data.html b/test/fixtures/rich_media/malformed-data.html new file mode 100644 index 000000000..dec628c16 --- /dev/null +++ b/test/fixtures/rich_media/malformed-data.html @@ -0,0 +1,4874 @@ +
+
+
+
+
+
+
+
+<!DOCTYPE html>
+<html lang="pl">
+<head>
+
+
+
+
+
+<!-- canonical_start -->
+
+ <link rel="canonical" href="http://wyborcza.biz/biznes/7,147743,24417936,pomysl-na-biznes-chusta-ktora-chroni-przed-smogiem.html"/>
+
+
+<!-- canonical_end -->
+ +<!--10351348, [ /fix/modules/canonical.jsp ], canonicalModule--> +
+
+
+<script>
+ var activeSubscription = false;
+</script>
+
+<!-- playerInfoModule v1.0 -->
+
+
+
+
+ <META NAME="ROBOTS" CONTENT="NOARCHIVE">
+
+
+
+
+<!-- robotsModule v1.0 -->
+
+
+<title>Pomys³ na biznes: chusta, która chroni przed smogiem</title>
+<meta charset="ISO-8859-2">
+<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
+<link rel="shortcut icon" href="http://bi.gazeta.pl/im/5/7001/m7001335.gif">
+
+
+
+<link rel="apple-touch-icon-precomposed" sizes="144x144" href="http://static.im-g.pl/aliasy/foto/wyborcza/touch-icon-144x144.png">
+<link rel="apple-touch-icon-precomposed" sizes="114x114" href="http://static.im-g.pl/aliasy/foto/wyborcza/touch-icon-114x114.png">
+<link rel="apple-touch-icon-precomposed" sizes="72x72" href="http://static.im-g.pl/aliasy/foto/wyborcza/touch-icon-72x72.png">
+<link rel="apple-touch-icon-precomposed" href="http://static.im-g.pl/aliasy/foto/wyborcza/touch-icon-72x72.png">
+
+
+<!-- titleCharsetModule v1.0 -->
+
+
+
+
+
+
+
+ <!-- style preloader-test -->
+ <style> +img[data-src]:not(.loaded){position:absolute !important;top:0 !important;left:0 !important;display:block !important;width:0 !important;height:0 !important;visibility:hidden !important;font-size:0 !important}.preloaderContainer{position:relative;z-index:1;display:block;width:100%;height:100%;min-height:56px;background:#fff url("data:image/gif;base64,R0lGODlhJgA4APEDAP+AgP8AAP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFDQADACwAAAAAJgA4AAACcIyPicDt75RUsMKJjd0sY755E2iJElmZFPqoCdu6BxzJGt3ZAZ7bPKDb8YI/4lBXRB59S1mSiTNGlVMoTXqlZq0wbFcLE4jH5LL5jE6r1+y2+w2Py+f0uv2Oz+v3/L7/DxgoOEhYaHiImKi4yNjYVwAAIfkEBQ0AAgAsAAAAACYAHAAAAkaEj4nB7e+UVLDCiY3dLGO+eRNoiRJZmRT6qAnbugccyRrd2QCe23yg2/GCP+JQV0QefUtZkokzRpVTKE16pWatMGxXCysAACH5BAUNAAAALAAAAAATABwAAAIVlI+py+0Po5y02ouz3rz7D4biSCIFACH5BAUNAAEALBMAHAATABwAAAIVhI+py+0Po5y02ouz3rz7D4biSCIFACH5BAUNAAIALBMAAAATADgAAAIvhI+py+0Po5y02ouz3rz7D4biSCLBiabqyrbuC8fyTNf2jef6zvf+DwwKh8RiqgAAIfkEBQ0AAAAsEwAAABMAHAAAAhWUj6nL7Q+jnLTai7PevPsPhuJIIgUAIfkEBQ0AAQAsAAAcABMAHAAAAhWEj6nL7Q+jnLTai7PevPsPhuJIIgUAIfkEBQ0AAgAsAAAcACYAHAAAAkaMj4nA7e+UVLDCiY3dLGO+eRNoiRJZmRT6qAnbugccyRrd2QGe2zyg2/GCP+JQV0QefUtZkokzRpVTKE16pWatMGxXCysAACH5BAUNAAAALBMAHAATABwAAAIVlI+py+0Po5y02ouz3rz7D4biSCIFACH5BAUNAAEALAAAAAATABwAAAIVhI+py+0Po5y02ouz3rz7D4biSCIFACH5BAUNAAIALAAAAAATADgAAAIvjI+py+0Po5y02ouz3rz7D4biSCLAiabqyrbuC8fyTNf2jef6zvf+DwwKh8RiqgAAIfkEBQ0AAAAsAAAcABMAHAAAAhWUj6nL7Q+jnLTai7PevPsPhuJIIgUAOw==") center center no-repeat} + +</style>
+ <!-- /style preloader-test -->
+
+
+
+
+
+
+
+ <!-- head script -->
+ <script>function checkAdsElements(){if(void 0!==this.dfpArrLab&&this.dfpArrLab instanceof Array){for(var a=0;a<this.dfpArrLab.length;){var b=document.getElementById(this.dfpArrLab[a]);if(b){var c=b.clientHeight,d=b.querySelector("span.banLabel");c>40&&d.setAttribute("style","")}a++}return!0}return!1}function putBan(a){return!0}var wyborcza_pl=wyborcza_pl||{},gazeta_pl=gazeta_pl||{},_gaq=_gaq||[];this.dfpArrLab=["000-MAINBOARD","087-ADBOARD-A","087-ADBOARD-B","087-ADBOARD-C","087-ADBOARD-D","107-MAINBOARD-MOBI","150-ADBOARD-A-MOBI","150-ADBOARD-B-MOBI","150-ADBOARD-C-MOBI","150-ADBOARD-D-MOBI","003-RECTANGLE","035-RECTANGLE-BTF","042-FOOTBOARD","104-RECTANGLE-MOBI","108-FOOTBOARD-MOBI","ADBOARD-B","FOOTBOARDA"],document.addEventListener("DOMContentLoaded",function(a){setTimeout(function(){checkAdsElements()},1)}),wyborcza_pl.PlayerConfig={isMuted:!0},gazeta_pl.parseURI=function(){var a={},b=location.href.split(/\?/).pop().split(/&/),c=0;for(c=0;c<b.length;c++)b[c]=b[c].split(/=/),a[b[c].shift()]=b[c].join("=");return a},function(){var a=gazeta_pl.Player=gazeta_pl.Player||{resizeWrappers:["body","body > .main","#col_left","#col_right",".colLeft",".colRight"],jsonldMounted:0,init:function(){a.checkPageVisibilityPage(),a.initMessages(),a.initResizeHandler(),a.initShortcuts()},initMessages:function(){a.addEvent(window,"message",a.receiveMessage)},receiveMessage:function(b){var c=b.data;if(b.origin.match(/video\.gazeta\.pl$/)){try{c=JSON.parse(c)}catch(i){}if(c)switch(c.action){case"playerLoad":a.sendMessage(b.source,b.origin,{action:"playerInit",params:{mute:a.getMuteState()}}),a.resizeHandler();break;case"getAdParams":var d=window.AG&&window.AG.rodoAccepted||0,e={action:"setAdParams",referrer:document.referrer,rodoStatus:d};window.nobanner?e.nobanner=!0:"dfpParams"in window&&dfpParams&&dfpParams.video&&(e.url={preroll:dfpParams.video.preroll,postroll:dfpParams.video.postroll,inskin:dfpParams.video.skin,branding:dfpParams.video.skin,pausead:dfpParams.video.pausead,overlay:dfpParams.video.overlay}),a.sendMessage(b.source,b.origin,e);break;case"watchViewport":a.checkPlayerInViewport(b);break;case"resizeRequest":a.stretchSpace(b,c.width,c.height,function(c,d){a.sendMessage(b.source,b.origin,{action:"resizeDone",width:c,height:d})});break;case"hidePlayer":var f=a.findPlayerIframe(b);f&&(f.style.cssText+="display: none; visibility: hidden");break;case"getPlayerParams":var f=a.findPlayerIframe(b);a.sendMessage(b.source,b.origin,{action:"playerParams",pageUrl:document.URL,playerUrl:f?f.src:""});break;case"initFloatingPlayer":if(!window.jQuery)return;!a.FloatingPlayer.ready&&a.FloatingPlayer.isDesktopBrowser()&&!a.FloatingPlayer.isSafariBrowser()&&a.FloatingPlayer.isEmbededOnArticlePage()&&a.FloatingPlayer.init(),a.sendMessage(b.source,b.origin,{action:"setFloatingCapabilities",canFloat:!!a.FloatingPlayer.isFloatingPlayer(b.source)&&a.FloatingPlayer.ready});break;case"canPause":a.FloatingPlayer.ready&&a.FloatingPlayer.isFloatingPlayer(b.source)&&a.FloatingPlayer.closeButtonHandler(b.origin,c.canPauseState,c.playState);break;case"pushDataToDataLayer":a.pushDataToDataLayer(c.data);break;case"mediaInfo":if(!/\/1,|\/7,/.test(window.location.href)&&c.jsonld&&a.jsonldMounted<1){var g=document.querySelector("body"),h=document.createElement("script");h.setAttribute("type","application/ld+json"),h.innerHTML=JSON.stringify(c.jsonld),g.appendChild(h),a.jsonldMounted++}}}},playersInViewport:[],actualPlayed:null,sendMessage:function(a,b,c){a.postMessage(JSON.stringify(c),b)},stretchSpace:function(b,c,d,e){if(c){var f=a.findPlayerIframe(b);f&&(c&&(f.width=c),d&&(f.height=d),e(f.width,f.height))}},checkPlayerInViewport:function(b){if(b){new IntersectionObserver(function(c){c[0].intersectionRatio>=.5?a.enteredViewport(b):a.leavedViewport(b)},{threshold:[.5]}).observe(a.findPlayerIframe(b))}},checkPageVisibilityPage:function(){document.addEventListener("visibilitychange",function(){a.manageActivePlayer()})},manageActivePlayer:function(b,c){var d="visible"==document.visibilityState;if(!(!d||a.FloatingPlayer.ready&&a.actualPlayed)){var e=a.playersInViewport.length&&d?"enteredViewport":"leavedViewport";b=a.playersInViewport[0]?a.playersInViewport[0].source:b,c=a.playersInViewport[0]?a.playersInViewport[0].origin:c,b&&c&&(a.actualPlayed&&!gazeta_pl.playerStopsOutsideViewport&&a.actualPlayed[0]!=b&&a.sendMessage(a.actualPlayed[0],a.actualPlayed[1],{action:"leavedViewport"}),a.sendMessage(b,c,{action:e}),a.actualPlayed=[b,c])}},enteredViewport:function(b){b.origin,b.source;if(!gazeta_pl.playerStopsOutsideViewport&&!a.FloatingPlayer.ready)for(var c=0,d=a.playersInViewport.length;c<d;c++)a.sendMessage(a.playersInViewport[c].source,a.playersInViewport[c].origin,{action:"leavedViewport"});a.playersInViewport.push({source:b.source,origin:b.origin}),a.manageActivePlayer()},leavedViewport:function(b){for(var c=b.origin,d=b.source,e=(a.playersInViewport.length,a.playersInViewport.length-1);e>=0;e-=1)a.playersInViewport[e]&&a.playersInViewport[e].source==d&&a.playersInViewport.splice(e,1);(gazeta_pl.playerStopsOutsideViewport||a.playersInViewport.length)&&(a.FloatingPlayer.ready||a.manageActivePlayer(d,c))},initResizeHandler:function(){a.resizeHandler(),a.addEvent(window,"onorientationchange"in window?"orientationchange":"resize",a.resizeHandler)},resizeHandler:function(){clearTimeout(a.timeout),clearTimeout(a.fallbackTimeout),a.timeout=a.resizePlayer(50),a.fallbackTimeout=a.resizePlayer(500)},resizePlayer:function(b){var c=a.findPlayerIframes();return setTimeout(function(){for(var b=0;b<c.length;b++){var d=c[b],e=c[b].parentNode,f=980;e.getAttribute("data-pjs")&&(e.style.cssText="width: auto; height: auto",e=e.parentNode),f=Math.min(f,e.offsetWidth||f),a.resizeWrappers.forEach(function(a){document.querySelector(a)&&document.querySelector(a).querySelector('[src="'+d.src+'"]')&&(f=Math.min(f,document.querySelector(a).offsetWidth||f))}),f!=d.offsetWidth&&c[b].contentWindow.postMessage('{"action": "resize", "width": '+f+"}","*")}},b)},initShortcuts:function(){a.addEvent(window,"keydown",a.handleKeydown)},handleKeydown:function(b){var c="";b.altKey&&38==b.which?c="unmute":b.altKey&&40==b.which&&(c="mute"),c&&a.findPlayerIframes().forEach(function(b){a.sendMessage(b.contentWindow,"*",{action:c})})},addEvent:function(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,function(){c.call(a,window.event)})},findPlayerIframes:function(){return Array.prototype.filter.call(document.getElementsByTagName("iframe"),function(a){return a.src&&a.src.match(/www\.gazeta\.tv\/plej\/19,/)})},findPlayerIframe:function(b){for(var c=a.findPlayerIframes(),d=0,e=c.length;d<e;d++)if(c[d].contentWindow===b.source)return c[d];return null},pushDataToDataLayer:function(a){"undefined"!=typeof dataLayer&&dataLayer.push(a)},getMuteState:function(){return!!(gazeta_pl.playerMute||a.isAutoplayMutedVideo()||void 0!==wyborcza_pl&&wyborcza_pl.PlayerConfig&&wyborcza_pl.PlayerConfig.isMuted)},isAutoplayMutedVideo:function(){var a=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);return!!a&&parseInt(a[2],10)>=66},FloatingPlayer:{ready:!1,init:function(){var a,b,c,d,e,f,g,h=this;return a=$(window),b=$("body"),c=b.find("#gazeta_article_video"),c.length?(d=c.find('iframe[src*="//www.gazeta.tv/plej/19,"]'),e=b.height(),f={width:"30px",height:"30px",padding:"8.5px",position:"absolute",right:"0",top:"-40px",background:"#fff","border-radius":"3px","box-shadow":"0 0 20px 2px rgba(0, 0, 0, 0.3)","box-sizing":"border-box"},h.$closeButton=$('<div class="floatingCloseButton"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 13 13"><polygon style="fill:#aaa;fill-rule:evenodd;clip-rule:evenodd;" points="12.9 1.6 11.4 0.2 6.5 5.1 1.5 0.2 0.1 1.6 5.1 6.5 0.1 11.5 1.5 12.9 6.5 7.9 11.4 12.9 12.9 11.5 7.9 6.5 "/></svg></div>'),h.$iframe=d,h.$iframeContainer=d.parent(),h.$mod=c,h.$window=a,h.$xIcon=h.$closeButton.find("polygon"),h.floated=!1,h.iframeHeight=d.height(),h.windowHeight=a.height(),h.$closeButton.css(f),e<=h.windowHeight+h.iframeHeight?h.ready=!1:(!h.floated&&h.isReadyToFloat()&&(h.floated=!0,h.floatPlayer()),h.$window.bind("scroll.floatingPlayer resize.floatingPlayer",function(a){g=!0}),h.intervalId=setInterval(function(){g&&(!h.floated&&h.isReadyToFloat()?(h.floated=!0,h.floatPlayer()):h.floated&&!h.isReadyToFloat()&&(h.floated=!1,h.floatPlayer()),g=!1)},100),h.ready=!0)):h.ready=!1},deinit:function(){var b=a.FloatingPlayer;clearInterval(b.intervalId),b.ready=!1,b.$window.unbind(".floatingPlayer"),b.floated=!1,b.floatPlayer()},floatPlayer:function(){var b,c,d,e,f,g,h,i,j=this,k=48,l=j.$iframe.width(),m=j.$mod[0].getBoundingClientRect(),n=j.$mod.height(),o=l/(j.$iframe.height()-k),p=j.$window.height(),q=j.$window.width();h=j.floated?300:document.getElementById("gazeta_article_video").offsetWidth,i=h/o+k,d={top:p-i-30-m.top-(j.floated?0:100),left:q-h-30-m.left},b={width:h,height:i},c={width:h,height:i,padding:"10px",position:"fixed",right:"20px",bottom:"20px",background:"#fff","border-radius":"3px","box-shadow":"0 0 20px 2px rgba(0, 0, 0, 0.3)","z-index":"2800"},e={width:h,height:i,position:"fixed",right:"30px",bottom:"30px","-webkit-transform":"translate(-"+d.left+"px,-"+d.top+"px)",transform:"translate(-"+d.left+"px,-"+d.top+"px)",transition:"all 0.2s linear","z-index":"2800"},f={width:h,height:i,position:"fixed",top:m.top,"-webkit-transform":"translate("+d.left+"px,"+d.top+"px)",transform:"translate("+d.left+"px,"+d.top+"px)",transition:"all 0.2s linear","z-index":"2800"},g={height:n,"background-color":"#f2f2f2","background-image":"url(//bi.im-g.pl/im/1/20781/m20781691,ZASLEPKA.png)","background-position":"bottom 30px right 30px","background-repeat":"no-repeat"},j.origin||(j.origin=window.location.protocol+"//video.gazeta.pl"),j.floated?(j.$mod.css(g),j.$iframe.css(f),j.$iframe.one("webkitTransitionEnd moztransitionend transitionend oTransitionEnd",function(a){j.$iframe.removeAttr("style"),j.$iframe.css(b),j.$iframeContainer.css(c),j.$iframeContainer.prepend(j.$closeButton)}),a.pushDataToDataLayer({category:"Plywajacy player",action:"Wyswietlenie",label:window.location.href,value:0,nonInteraction:!1,event:"zdarzenie"}),a.sendMessage(j.$iframe[0].contentWindow,j.origin,{action:"floatStatus",data:!0}),a.sendMessage(j.$iframe[0].contentWindow,j.origin,{action:"resize",width:300})):(j.$iframe.css(e),j.$iframeContainer.removeAttr("style"),j.$iframeContainer.find(".floatingCloseButton").detach(),j.$iframe.one("webkitTransitionEnd moztransitionend transitionend oTransitionEnd",function(a){j.$iframe.removeAttr("style"),j.$mod.removeAttr("style")}),a.sendMessage(j.$iframe[0].contentWindow,j.origin,{action:"floatStatus",data:!1}),a.sendMessage(j.$iframe[0].contentWindow,j.origin,{action:"resize",width:document.getElementById("gazeta_article_video").offsetWidth}))},closeFloatingPlayer:function(){var b=a.FloatingPlayer;if(void 0===b.$closeButton)return!1;a.sendMessage(b.$iframe[0].contentWindow,b.origin,{action:"callPause",data:"pause"}),b.deinit(),a.pushDataToDataLayer({category:"Plywajacy player",action:"Zamknij",label:window.location.href,value:0,nonInteraction:!1,event:"zdarzenie"})},closeButtonHandler:function(b,c,d){var e=a.FloatingPlayer;if(void 0===e.$closeButton)return!1;e.origin=b,e.playState=d,c||!c&&"play"!==d?(e.$xIcon.css("fill","#000"),e.$closeButton.css("cursor","pointer"),e.$closeButton.unbind("click",e.closeFloatingPlayer).bind("click",e.closeFloatingPlayer)):(e.$xIcon.css("fill","#aaa"),e.$closeButton.css("cursor","default"),e.$closeButton.unbind("click",e.closeFloatingPlayer))},isFloatingPlayer:function(b){var c=a.FloatingPlayer;return void 0!==c.$iframe&&c.$iframe[0].contentWindow===b},isReadyToFloat:function(){var b=a.FloatingPlayer;return b.$window.scrollTop()>b.$mod.offset().top+b.$mod.height()/4},isEmbededOnArticlePage:function(){return!!window.location.href.match(/\/[17],/)},isDesktopBrowser:function(){return void 0!==gazeta_pl.device?"NOT_MOBILE"==gazeta_pl.device:$("body").hasClass("desk")&&!$("body").hasClass("tablet")},isSafariBrowser:function(){return-1!=navigator.userAgent.indexOf("Safari")&&-1==navigator.userAgent.indexOf("Chrome")&&-1==navigator.userAgent.indexOf("Chromium")}}}}(),gazeta_pl.Player.init();</script>
+
+
+ <script type="text/javascript">var pfma_wyborcza_version = "1.1.16";</script>
+ <script type="text/javascript">var szpalty_wyborcza_version = "0.0.2";</script>
+ <!-- /head script -->
+
+
+
+<!-- preloaderModule v1.1 -->
+
+<script>
+ var now = new Date(2019, 0, 31, 17, 10, 30);
+</script>
+
+<!-- currentDateModule v1.0 -->
+
+
+<meta name="Description" content="Filtr ma tak dok³adny, ¿e zatrzymuje nawet wirusy i bakterie. Trójka wroc³awian stworzy³a chustê, która chroni przed smogiem. " />
+
+<!-- descriptionsModule v1.0 -->
+
+
+
+<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
+
+
+ <script>
+ //<![CDATA[
+ var gazeta_pl = gazeta_pl || {};
+
+ gazeta_pl.documentParam = {"root": "/biznes/"};
+
+ gazeta_pl.mobileInfo = {
+ "isMobileDevice": false
+ };
+
+
+
+ gazeta_pl.rootSectionId = 100791;
+
+ //]]>
+ </script>
+
+
+<!-- Bigdata -->
+<script src="https://bis.gazeta.pl/info/bluewhale/2.5.0/main-min.jsgz"></script> +
+
+
+<!-- portalDataModule v1.0 -->
+ + +<!-- - Agree rd - --> + + + +<!-- v4 rdGid: 1 --> +<!-- v4 Cookie : --> +<script src="//rodo.agora.pl/agreement/check?gid=1¶ms=&skipMessageOnReject=false"></script> + + + + + + + + <meta property="og:type" content="article" /> + + + + +<meta property="og:url" content="http://wyborcza.biz/biznes/7,147743,24417936,pomysl-na-biznes-chusta-ktora-chroni-przed-smogiem.html" /> + + + +<!-- Title --> +<meta property="og:title" + content="Pomys³ na biznes: chusta, która chroni przed smogiem" /> +<meta name="twitter:title" + content="Pomys³ na biznes: chusta, która chroni przed smogiem" /> + + + <!-- DESC --> + <meta property="og:description" + content="Filtr ma tak dok³adny, ¿e zatrzymuje nawet wirusy i bakterie. Trójka wroc³awian stworzy³a chustê, która chroni przed smogiem. " /> + <meta name="twitter:description" + content="Filtr ma tak dok³adny, ¿e zatrzymuje nawet wirusy i bakterie. Trójka wroc³awian stworzy³a chustê, która chroni przed smogiem. " /> + + + + + + + + + + <!-- IMAGE --> + <meta property="og:image" content="https://bi.im-g.pl/im/f7/49/17/z24418295FBW,Prace-nad-projektem-chusty-antysmogowej-rozpoczely.jpg" /> + <meta name="twitter:image" content="https://bi.im-g.pl/im/f7/49/17/z24418295FBW,Prace-nad-projektem-chusty-antysmogowej-rozpoczely.jpg" /> + <meta name="twitter:card" content="summary_large_image" /> + + + + <meta property="og:site_name" content="wyborcza.biz" /> + + + + <meta property="fb:app_id" content="515714931781741" /> + + + + +<meta property="og:locale" content="pl_PL" /> + + + +<!--facebookIdFanpages start --> +<meta property="fb:pages" content="182216700504" /> +<meta property="fb:pages" content="63563473556" /> +<meta property="fb:pages" content="211137058789" /> +<meta property="fb:pages" content="158571784110" /> +<meta property="fb:pages" content="1123290301110277" /> +<meta property="fb:pages" content="110402292339268" /> +<meta property="fb:pages" content="228168274881" /> +<meta property="fb:pages" content="134754663619446" /> +<meta property="fb:pages" content="174480419336" /> +<meta property="fb:pages" content="116460718114" /> +<meta property="fb:pages" content="172897561400" /> +<meta property="fb:pages" content="297584282665" /> +<meta property="fb:pages" content="115721688487368" /> +<meta property="fb:pages" content="178164578911" /> +<meta property="fb:pages" content="336438736394843" /> +<meta property="fb:pages" content="145218379355757" /> +<meta property="fb:pages" content="217794324954867" /> +<meta property="fb:pages" content="145231052239934" /> +<meta property="fb:pages" content="259626760890136"> +<meta property="fb:pages" content="224446291000703" /> +<meta property="fb:pages" content="169554536536974" /> +<meta property="fb:pages" content="189371001102606" /> +<meta property="fb:pages" content="202936473194614" /> +<meta property="fb:pages" content="750649501650020" /> +<meta property="fb:pages" content="732718100095535" /> +<meta property="fb:pages" content="212900872097857" /> +<meta property="fb:pages" content="451218768269373" /> +<meta property="fb:pages" content="164720961114" /> +<meta property="fb:pages" content="1472966049586410" /> +<meta property="fb:pages" content="212665112154600" /> +<meta property="fb:pages" content="186699381425534" /> +<meta property="fb:pages" content="701673749899603" /> +<meta property="fb:pages" content="182114553798" /> +<meta property="fb:pages" content="1509388655954951" /> +<meta property="fb:pages" content="212912818721293" /> +<meta property="fb:pages" content="346589322185" /> +<meta property="fb:pages" content="149902472546" /> +<meta property="fb:pages" content="282927535056444" /> +<meta property="fb:pages" content="196338433729597" /> +<meta property="fb:pages" content="133385026676460" /> +<meta property="fb:pages" content="354565604586" /> +<meta property="fb:pages" content="277864075631246" /> +<meta property="fb:pages" content="175270922504122" /> +<meta property="fb:pages" content="211916968882547" /> +<meta property="fb:pages" content="127659060591519" /> +<meta property="fb:pages" content="217981241618571" /> +<meta property="fb:pages" content="198606720154883" /> +<meta property="fb:pages" content="105171796186333" /> +<meta property="fb:pages" content="1800655190193744" /> +<meta property="fb:pages" content="501324603247131" /> +<meta property="fb:pages" content="159338220786135" /> +<meta property="fb:pages" content="151677518189583" /> +<meta property="fb:pages" content="302385839814255" /> +<meta property="fb:pages" content="200768423330804" /> +<meta property="fb:pages" content="288018984602680" /> +<!--facebookIdFanpages end --> + + +<!-- facebookModule v1.1 --> +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <!-- (C)2000-2014 Gemius SA - gemiusAudience -->
+ <script type="text/javascript">
+ <!--//--><![CDATA[//><!--
+ var pp_gemius_identifier = new String('citFBk7kdQKEPMwqCmPRXqSc.IlGzFiuWwxH9NXy4Zb.a7/arg=147743');
+
+ function gemius_pending(i) { window[i] = window[i] || function() {var x = window[i+'_pdata'] = window[i+'_pdata'] || []; x[x.length]=arguments;};};
+ setTimeout(function() {
+ gemius_pending('gemius_hit'); gemius_pending('gemius_event'); gemius_pending('pp_gemius_hit'); gemius_pending('pp_gemius_event');
+ (function(d,t) {try {var gt=d.createElement(t),s=d.getElementsByTagName(t)[0],l=((location.protocol=='https:')?'https://bis.gazeta.pl/info/http/xgemius-min.jsgz':'http://static.gazeta.pl/info/http/xgemius-min.jsgz'); gt.setAttribute('async','async');
+ gt.setAttribute('defer','defer'); gt.src=l; s.parentNode.insertBefore(gt,s);} catch (e) {}})(document,'script');
+ }, 50);
+ //--><!]]>
+ </script>
+
+
+
+<!-- gemiusModule v1.1 -->
+
+
+
+<meta name="Keywords" content="Konsument i zakupy">
+
+ <meta name="news_keywords" content="Konsument i zakupy">
+
+
+<!-- keywordsModule v1.0 -->
+
+
+
+
+<meta name="google-site-verification" content="3P4BE3hLw82QWqtseIE60qQcOtrpMxMnCNkcv62pjTA" />
+
+
+
+ <!-- Google Tag Manager --> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-W4DZP5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-W4DZP5');</script> <!-- End Google Tag Manager -->
+
+
+
+
+<!-- googleModule v1.0 -->
+
+
+
+
+
+
+ <meta name="viewport" content="width=device-width, user-scalable=yes">
+
+
+
+<!-- viewportModule v1.0 -->
+
+
+
+
+
+
+
+ <!-- wyborcza_common_style not set -->
+
+
+ <link rel="stylesheet" href="//static.im-g.pl/css/wyborcza-common/builds/18.0.6/style-min.cssgz" />
+
+
+
+
+
+
+<!-- wyborcza_common_style /css/wyborcza-biz/version-mobile.htm -->
+<!-- wyborcza_common_style /css/wyborcza-biz/version-desktop.htm -->
+
+
+ <link rel="stylesheet" href="//static.im-g.pl/wyborcza/wyborcza-biz/css/1.0.9/style-min.cssgz" />
+
+
+
+
+<!-- stylesModule v1.0 -->
+
+
+
+
+ <link rel="alternate" type="application/rss+xml" title="Wiadomo¶ci gospodarcze" href="http://wyborcza.biz/pub/rss/wyborcza_biz_wiadomosci.htm">
+
+
+<!-- rssModule v1.0 -->
+
+
+<!-- Facebook Pixel Code -->
+<script>
+ !function(f, b, e, v, n, t, s) {
+ if (f.fbq)
+ return;
+ n = f.fbq = function() {
+ n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments)
+ };
+ if (!f._fbq)
+ f._fbq = n;
+ n.push = n;
+ n.loaded = !0;
+ n.version = '2.0';
+ n.queue = [];
+ t = b.createElement(e);
+ t.async = !0;
+ t.src = v;
+ s = b.getElementsByTagName(e)[0];
+ s.parentNode.insertBefore(t, s)
+ } (window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js');
+ fbq('init', '534530363346991'); // Insert your pixel ID here.
+ fbq('track', 'PageView');
+</script>
+
+<noscript>
+ <img height="1" width="1" style="display: none" src="https://www.facebook.com/tr?id=534530363346991&ev=PageView&noscript=1" />
+</noscript>
+
+<!-- DO NOT MODIFY -->
+<!-- End Facebook Pixel Code -->
+
+<!-- facebookPixelModule v1.0 -->
+
+
+<script>
+ var wyborcza_pl = wyborcza_pl || {};
+ wyborcza_pl.LokaleGeolocationCityId = '';
+</script>
+
+<!-- geolocationModule v1.0 -->
+
+
+
+
+
+<!-- browserNotificationEnableModule -->
+
+
+
+
+
+
+
+ <script type="text/javascript">
+ var _sf_async_config = _sf_async_config || {};
+ _sf_async_config.uid = 14371;
+ _sf_async_config.domain = 'wyborcza.biz';
+ _sf_async_config.flickerControl = false;
+
+
+
+ _sf_async_config.useCanonical = true;
+
+
+
+
+ var _sf_startpt = (new Date()).getTime();
+ </script>
+
+ <script async src="//static.chartbeat.com/js/chartbeat_mab.js"></script>
+
+
+<!-- chartbeatHeadModule v1.0 -->
+ +<!--10184895, [ null ], aggregatorModule--> +
+
+
+
+
+ + + + + + + +<script type='text/javascript'> + + + + + + + + + + + + + + + + + + + + + + + + + + if(!window.AG){ + window.AG = window.AG || {}; + window.AG.rodoAccepted = -1; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + var + adviewDFP = adviewDFP || {}; +adviewDFP.DFPTargeting = []; + + + + + + // [HB] Core-prod-1 - HEADER_START +var PREBID_TIMEOUT = (window.AG && window.AG.rodoAccepted === 1) ? 500 : 0; +var pbjs_currency = 1; // -> to $1 +var pbjs_ga = true; +var pbjs_yb_hb = false; +var eur2usd = 1.1; +var yb_dosamplerate = 100; +var yb_seg = ''; +var _st0=new Date(); + +// BIG data +BigData = { + notify: function(eventName){ + var event = BigData.createEvent(eventName); + BigData.fireEvent(event); + }, + createEvent: function(eventName) { + var event; + if (document.createEvent) { + event = document.createEvent("HTMLEvents"); + event.initEvent(eventName, true, true); + } else { + event = document.createEventObject(); + event.eventType = eventName; + } + event.eventName = eventName; + return event; + }, + fireEvent: function(event) { + if (document.createEvent) { + document.dispatchEvent(event); + } else { + document.fireEvent("on" + event.eventType, event); + } + } +}; +//bwGuidv2 +function getCookie(cname) { + var name = cname + "="; + var ca = document.cookie.split(';'); + for(var i=0; i<ca.length; i++) { + var c = ca[i]; + while (c.charAt(0)==' ') c = c.substring(1); + if (c.indexOf(name) == 0) return c.substring(name.length, c.length); + } + return ""; +} +function getJSON (url, callback) { + var xhr = new XMLHttpRequest(); + xhr.open("get", url, true); + xhr.responseType = "json"; + xhr.onload = function() { + var status = xhr.status; + if (status == 200) { + callback(null, xhr.response); + } else { + callback(status); + } + }; + xhr.send(); +}; +//***************************************** + +if(Math.random()*100 <= yb_dosamplerate ) { + var bwGuidv2 = getCookie("bwGuidv2"); + if (bwGuidv2 != "") { + getJSON("https://squid.gazeta.pl/do/p/v1/gpfgo?g=" + bwGuidv2 + "&p=30000", + function(err, data) { + if (err != null) { + console.log("getJSON: Something went wrong: " + err); + } else { + try{ + var segments = []; + for(index in data.profile.features){ + segments.push(String(index)); + } + yb_seg = segments; + }catch(e){} + } + }); + } +} +document.write('\x3Cscript type="text/javascript" src="https://bi.adview.pl/static/adview/front/master/dfp/tools/adview/prebid.js">\x3C/script>'); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // 20181218 + +var adUnits = [{ + //wyborcza.biz_001-TOPBOARD + code: 'div-gpt-ad-001-TOPBOARD-0', + sizes: [[970,250]], + bids: [{ + bidder: 'appnexus', + params: { placementId: '11549538' } + },{ + bidder: 'adform', + params: { mid: '427595' } + },{ + bidder: 'pubmatic', + params: { publisherId: '155949', adSlot: 'wyborcza.biz_001-TOPBOARD@970x250' } + },{ + bidder: 'ix', + params: { size: [970,250], siteId: '227220' } + },{ + bidder: 'rtbhouse', + params: { region: 'prebid-eu', publisherId: 'da39a3ee5e6b4b0d' } + },{ + bidder: 'connectad', + params: { networkId: '10047', siteId: '1013785' } + }] +},{ + //wyborcza.biz_003-RECTANGLE + code: 'div-gpt-ad-003-RECTANGLE-0', + sizes: [[300,600]], + bids: [{ + bidder: 'appnexus', + params: { placementId: '11549537' } + },{ + bidder: 'adform', + params: { mid: '427594' } + },{ + bidder: 'pubmatic', + params: { publisherId: '155949', adSlot: 'wyborcza.biz_003-RECTANGLE@300x600' } + },{ + bidder: 'ix', + params: { size: [300,600], siteId: '227219' } + },{ + bidder: 'rtbhouse', + params: { region: 'prebid-eu', publisherId: 'da39a3ee5e6b4b0d' } + },{ + bidder: 'connectad', + params: { networkId: '10047', siteId: '1013784' } + }] +}]; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // [HB] Core-prod-2 - OVER_GT +if(pbjs_yb_hb){ + var yb_hb = (pbjs_yb_hb ? Math.round(Math.random()) : 1); + PREBID_TIMEOUT *= yb_hb; + } + var pbjs = pbjs || {}; + pbjs.que = pbjs.que || []; + pbjs.que.push(function() { + for (var i = 0; i < adUnits.length; i++){shuffle(adUnits[i].bids);} + if(PREBID_TIMEOUT>0) pbjs.addAdUnits(adUnits); + + /* pass consent strings - START */ + + getCookie = function (name) { + var value = "; " + document.cookie; + var parts = value.split("; " + name + "="); + if (parts.length == 2) return parts.pop().split(";").shift(); + } + + pbjs.setConfig({ + consentManagement: { + cmpApi: 'static', + allowAuctionWithoutConsent: true, + consentData: { + getConsentData: { + 'gdprApplies': false, + 'hasGlobalScope': false, + 'consentData': getCookie('euconsent') + }, + getVendorConsents: { + 'metadata': getCookie('euconsent') + } + } + } + }); + /* pass consent string - END */ + + pbjs.requestBids({ + bidsBackHandler: function(bidResponses) { + pbjs.dataPrebidReady=true; + BigData.notify("data-prebid-ready"); + } + }); + pbjs.bidderSettings = { + standard: { + adserverTargeting: [{ + key: "hb_bidder", val: function(bidResponse) { return bidResponse.bidderCode; }},{ + key: "hb_adid", val: function(bidResponse) { return bidResponse.adId; }},{ + key: "hb_pb", val: function(bidResponse) { return (bidResponse.pbHg*pbjs_currency).toFixed(2); }},{ + key: "hb_size", val: function(bidResponse) { return bidResponse.size; } + }] + }, + audienceNetwork: { bidCpmAdjustment : function(bidCpm){ return (bidCpm * 0.75); }}, + districtmDMX: { bidCpmAdjustment : function(bidCpm){ return (bidCpm * 0.85); }}, + aol: { bidCpmAdjustment : function(bidCpm){ return (bidCpm * 0.8); }}, + adform: { bidCpmAdjustment : function(bidCpm){ return (bidCpm * 0.9)*eur2usd; }}, + rubicon: { bidCpmAdjustment : function(bidCpm){ return (bidCpm * 0.82)*eur2usd; }}, + smartadserver: { bidCpmAdjustment : function(bidCpm){ return (bidCpm * 0.9); }}, + pubmatic: { bidCpmAdjustment : function(bidCpm){ return (bidCpm * 0.9); }}, + appnexusAst: { bidCpmAdjustment : function(bidCpm){ return (bidCpm * 0.65); }} + }; + if(pbjs_ga) { + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); + ga('create', 'UA-84607356-7', 'auto', 'yb', {'sampleRate': 0.1}); + pbjs.enableAnalytics({ + provider: 'ga', + options: { + global: 'ga', // String name of GA global. Default is 'ga' + enableDistribution: false, + trackerName: 'yb' + } + }); + } + }); + function shuffle(a) { + var i = 0, j = 0, temp = null; + for (i = a.length-1; i > 0; i--) { + j = Math.floor(Math.random() * (i + 1)); + temp = a[i]; + a[i] = a[j]; + a[j] = temp; + } + } + +var lazyGPT = true; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + var googletag = googletag || {}; + googletag.cmd = googletag.cmd || []; + var lazyGPT = lazyGPT || false; + + if(!lazyGPT) { + + (function() { + var useSSL = 'https:' == document.location.protocol; + var src = (useSSL ? 'https:' : 'http:') + + '//www.googletagservices.com/tag/js/gpt.js'; + document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>'); + })(); + } + + var dfpParams = dfpParams || {}; + dfpParams.video = dfpParams.video || {}; + dfpParams.slots = dfpParams.slots || {}; + dfpParams.jsp = 23; + dfpParams.dir = 'biznes'; + dfpParams.dx = '147743'; + + dfpParams.prefix = '/75224259/AGORA-IN/Wyborcza.biz'; + + + dfpParams.video.preroll = '//pubads.g.doubleclick.net/gampad/ads?sz=400x300|640x480&iu=/75224259/AGORA-IN/Wyborcza.biz/090-PREROLL&cust_params=pos%3D090-PREROLL%26dx%3D147743%26jsp%3D23%26dir%3Dbiznes%26kw%3D[brandsafe]%26dystrybutor%3D[distributor_id]%26passback_id%3D[passback_id]%26domena%3D[adview_hostname]%26cb%3D[cb]&url=[locationhref]&description_url=[locationhref]&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&correlator=[timestamp]'; + + dfpParams.video.skin = '//pubads.g.doubleclick.net/gampad/ads?sz=400x300|640x480&iu=/75224259/AGORA-IN/Wyborcza.biz/120-SKIN&cust_params=pos%3D120-SKIN%26dx%3D147743%26jsp%3D23%26dir%3Dbiznes%26kw%3D[brandsafe]%26dystrybutor%3D[distributor_id]%26passback_id%3D[passback_id]%26domena%3D[adview_hostname]%26cb%3D[cb]&url=[locationhref]&description_url=[locationhref]&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&correlator=[timestamp]'; + + dfpParams.video.overlay = '//pubads.g.doubleclick.net/gampad/ads?sz=400x300|640x480&iu=/75224259/AGORA-IN/Wyborcza.biz/123-OVERLAY&cust_params=pos%3D123-OVERLAY%26dx%3D147743%26jsp%3D23%26dir%3Dbiznes%26kw%3D[brandsafe]%26dystrybutor%3D[distributor_id]%26passback_id%3D[passback_id]%26domena%3D[adview_hostname]%26cb%3D[cb]&url=[locationhref]&description_url=[locationhref]&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&correlator=[timestamp]'; + + dfpParams.video.pausead = '//pubads.g.doubleclick.net/gampad/ads?sz=400x300|640x480&iu=/75224259/AGORA-IN/Wyborcza.biz/126-PAUSEAD&cust_params=pos%3D126-PAUSEAD%26dx%3D147743%26jsp%3D23%26dir%3Dbiznes%26kw%3D[brandsafe]%26dystrybutor%3D[distributor_id]%26passback_id%3D[passback_id]%26domena%3D[adview_hostname]%26cb%3D[cb]&url=[locationhref]&description_url=[locationhref]&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&correlator=[timestamp]'; + + + + + dfpParams.slots['021-IMK'] = { url: "fif.htm?adUnit=/75224259/AGORA-IN/Wyborcza.biz/021-IMK&adUnitCode=021-IMK&adUnitSize=[[300,90],'fluid']&dx=147743&dir=biznes&jsp=23", sizes: [[300,90],'fluid'], autoLoad: false, autoLoadMargin: 0 }; + + dfpParams.slots['003-RECTANGLE'] = { url: "fif.htm?adUnit=/75224259/AGORA-IN/Wyborcza.biz/003-RECTANGLE&adUnitCode=003-RECTANGLE&adUnitSize=[[300,250],[300,600],[160,600],[120,600]]&dx=147743&dir=biznes&jsp=23", sizes: [[300,250],[300,600],[160,600],[120,600]], autoLoad: false, autoLoadMargin: 200 }; + + dfpParams.slots['007-CONTENTBOARD'] = { url: "fif.htm?adUnit=/75224259/AGORA-IN/Wyborcza.biz/007-CONTENTBOARD&adUnitCode=007-CONTENTBOARD&adUnitSize=[[300,250],[320,250],[336,280],[620,200],'fluid']&dx=147743&dir=biznes&jsp=23", sizes: [[300,250],[320,250],[336,280],[620,200],'fluid'], autoLoad: false, autoLoadMargin: 200 }; + + dfpParams.slots['071-WINIETA'] = { url: "fif.htm?adUnit=/75224259/AGORA-IN/Wyborcza.biz/071-WINIETA&adUnitCode=071-WINIETA&adUnitSize=[[940,140],[940,70]]&dx=147743&dir=biznes&jsp=23", sizes: [[940,140],[940,70]], autoLoad: false, autoLoadMargin: 200 }; + + dfpParams.slots['035-RECTANGLE-BTF'] = { url: "fif.htm?adUnit=/75224259/AGORA-IN/Wyborcza.biz/035-RECTANGLE-BTF&adUnitCode=035-RECTANGLE-BTF&adUnitSize=[[300,250]]&dx=147743&dir=biznes&jsp=23", sizes: [[300,250]], autoLoad: false, autoLoadMargin: 0 }; + + dfpParams.slots['067-RECTANGLE-BTF'] = { url: "fif.htm?adUnit=/75224259/AGORA-IN/Wyborcza.biz/067-RECTANGLE-BTF&adUnitCode=067-RECTANGLE-BTF&adUnitSize=[[300,250]]&dx=147743&dir=biznes&jsp=23", sizes: [[300,250]], autoLoad: false, autoLoadMargin: 0 }; + + dfpParams.slots['091-RELATED'] = { url: "fif.htm?adUnit=/75224259/AGORA-IN/Wyborcza.biz/091-RELATED&adUnitCode=091-RELATED&adUnitSize=[[155,290],'fluid']&dx=147743&dir=biznes&jsp=23", sizes: [[155,290],'fluid'], autoLoad: false, autoLoadMargin: 200 }; + + dfpParams.slots['019-TOPLAYER'] = { url: "fif.htm?adUnit=/75224259/AGORA-IN/Wyborcza.biz/019-TOPLAYER&adUnitCode=019-TOPLAYER&adUnitSize=[]&dx=147743&dir=biznes&jsp=23", sizes: [], autoLoad: false, autoLoadMargin: 200 }; + + dfpParams.slots['001-TOPBOARD'] = { url: "fif.htm?adUnit=/75224259/AGORA-IN/Wyborcza.biz/001-TOPBOARD&adUnitCode=001-TOPBOARD&adUnitSize=[[728,90],[750,100],[750,200],[750,300],[940,300],[970,250],[1170,300]]&dx=147743&dir=biznes&jsp=23", sizes: [[728,90],[750,100],[750,200],[750,300],[940,300],[970,250],[1170,300]], autoLoad: false, autoLoadMargin: 200 }; + + dfpParams.slots['042-FOOTBOARD'] = { url: "fif.htm?adUnit=/75224259/AGORA-IN/Wyborcza.biz/042-FOOTBOARD&adUnitCode=042-FOOTBOARD&adUnitSize=[[728,90],[750,100],[750,200],[750,300],[940,300],[970,250],[940,1200]]&dx=147743&dir=biznes&jsp=23", sizes: [[728,90],[750,100],[750,200],[750,300],[940,300],[970,250],[940,1200]], autoLoad: true, autoLoadMargin: 20 }; + + + + +</script> + +<!-- IBA Analytics --> +<!-- 20180116 --> +<script type="text/javascript"> + var IBA=IBA||{};IBA.dfp={adUnits:[],rendered:[],exmplUrl:null,onSlotRendered:function(t){null===IBA.dfp.exmplUrl&&(IBA.dfp.exmplUrl=t.slot.ba);var e=t.slot.getAdUnitPath();IBA.dfp.adUnits.push(e),t.isEmpty===!1&&IBA.dfp.rendered.push(e),IBA.adb.update(),"4"==IBA.adb.status&&IBA.adb.onReady()},update:function(){var t=[],e=[];if("undefined"!=typeof googletag&&"function"==typeof googletag.pubads&&"undefined"!=typeof googletag.pubads().getSlots)for(var a=googletag.pubads().getSlots(),n=0;n<a.length;n++)null!==a[n].J&&e.push(a[n].getAdUnitPath()),t.push(a[n].getAdUnitPath());e.length>IBA.dfp.rendered.length&&(IBA.dfp.rendered=e),t.length>IBA.dfp.adUnits.length&&(IBA.dfp.adUnits=t),IBA.adb.onReady()},testUrlAndDispatch:function(){var t=!1,e=new XMLHttpRequest;if(e.open("HEAD",IBA.dfp.exmplUrl,!0),e.onreadystatechange=function(){console.log(e.readyState+" | status| "+e.status),0===e.status&&(IBA.adb.status="5"),IBA.adb.dispatch()},IBA.dfp.exmplUrl)try{e.send(),t=!0}catch(a){IBA.adb.status="5",IBA.adb.dispatch()}else console.warn("IBA exmplUrl"+IBA.dfp.exmplUrl)}},IBA.adb={states:{0:"Not available",1:"Partially available but not rendered",2:"Partially available at least one rendered",3:"Available but not rendered",4:"Available at least one rendered",5:"Not available but lib loaded",9:"Default : unknown"},gem:{0:"AfHgvarrP4PC7igzOLWh7dVpTGP109BuRIffksuYjfT.c7",1:"ofhA3bsKT7xY8Cgj4cuRX8cQ.qiY_fsP1VURxgCyYv3.F7",2:"ofhA3bsKT7xY8Cgj4cuRX8cQ.qiY_fsP1VURxgCyYv3.F7",3:"nF5K4QQDK9TNGw_ql.fdc9U7XrD1irt.GoVhWXaFu6b.Z7",4:"nF5K4QQDK9TNGw_ql.fdc9U7XrD1irt.GoVhWXaFu6b.Z7",5:"ofhA3bsKT7xY8Cgj4cuRX8cQ.qiY_fsP1VURxgCyYv3.F7",9:"__unknown__"},status:"9",update:function(){var t=IBA.dfp.adUnits.length,e=IBA.dfp.rendered.length,a=window.abp||!1;0===t?IBA.adb.status="0":0===e&&a===!0?IBA.adb.status="1":e>0&&a===!0?IBA.adb.status="2":0===e?IBA.adb.status="3":e>0&&(IBA.adb.status="4")},onReady:function(){IBA.adb.ready!==!0&&(IBA.adb.ready=!0,IBA.adb.update(),"3"==IBA.adb.status?IBA.dfp.testUrlAndDispatch():IBA.adb.dispatch())},ready:!1,dispatch:function(){var t=IBA.adb.status;window.gemius_identifier=IBA.adb.gem[t];var e=document.createElement("script"),a=document.getElementsByTagName("script")[0];e.onerror=function(t){},e.src="//gazeta.hit.gemius.pl/gemius.js",a.parentNode.insertBefore(e,a),IBA.BigData.notify("adblockdataready")}},IBA.BigData={notify:function(t){var e=IBA.BigData.createEvent(t);IBA.BigData.fireEvent(e)},createEvent:function(t){var e;return document.createEvent?(e=document.createEvent("HTMLEvents"),e.initEvent(t,!0,!0)):(e=document.createEventObject(),e.eventType=t),e.eventName=t,e},fireEvent:function(t){document.createEvent?document.dispatchEvent(t):document.fireEvent("on"+t.eventType,t)}},setTimeout(function(){try{"complete"===document.readyState?IBA.dfp.update():window.addEventListener("load",IBA.dfp.update,!1)}catch(t){}},20); +</script> + + + + + + + + + <!-- eyeoH --> +<!-- eyeoHeadScripts 1.0 --> +<script type='text/javascript'>var abp;</script> +<script type='text/javascript' src='/aliasy/adp/px.js?ch=1'></script> +<script type='text/javascript' src='/aliasy/adp/px.js?ch=2'></script> +<!-- /eyeoH --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <script type='text/javascript'> + googletag.cmd.push(function() { + + var mobileSizeMap = googletag.sizeMapping() + .addSize([336,0], [[1,1],[300,250],[320,250],[300,150],[320,150],[336,280],[267,310],[155,290],[320,100],[320,50],[320,125],[320,266],[320,300],[200,130],[300,600], 'fluid']) + .addSize([0,0], [[1,1],[300,250],[320,250],[300,150],[320,150],[267,310],[155,290],[320,100],[320,50],[320,125],[320,266],[320,300],[200,130],[300,600], 'fluid']) + .build(); + + + + + var mobileSizeMap_101_topboard_mobi = googletag.sizeMapping().addSize([336,0], [[300,250],[320,250],[300,150],[320,150],[336,280]]).addSize([0,0], [[300,250],[320,250],[300,150],[320,150]]).build(); + + var mobileSizeMap_104_rectangle_mobi = googletag.sizeMapping().addSize([336,0], [[300,250],[320,250],[300,150],[320,150],[336,280],[300,600],'fluid']).addSize([0,0], [[300,250],[320,250],[300,150],[320,150],[300,600],'fluid']).build(); + + var mobileSizeMap_108_footboard_mobi = googletag.sizeMapping().addSize([336,0], [[300,250],[320,250],[300,150],[320,150],[336,280]]).addSize([0,0], [[300,250],[320,250],[300,150],[320,150]]).build(); + + var mobileSizeMap_091_related = googletag.sizeMapping().addSize([336,0], [[155,290],'fluid']).addSize([0,0], [[155,290],'fluid']).build(); + + var mobileSizeMap_150_adboard_a_mobi = googletag.sizeMapping().addSize([336,0], [[300,250],[320,250],[300,150],[320,150],[336,280]]).addSize([0,0], [[300,250],[320,250],[300,150],[320,150]]).build(); + + var mobileSizeMap_019_toplayer_mobi = googletag.sizeMapping().addSize([336,0], []).addSize([0,0], []).build(); + + + + + googletag.defineSlot('/75224259/AGORA-IN/Wyborcza.biz/001-TOPBOARD', [[728,90],[750,100],[750,200],[750,300],[940,300],[970,250],[1170,300]], 'div-gpt-ad-001-TOPBOARD-0').setTargeting('pos', ['001-TOPBOARD']).addService(googletag.pubads()); +googletag.defineSlot('/75224259/AGORA-IN/Wyborcza.biz/003-RECTANGLE', [[300,250],[300,600],[160,600],[120,600]], 'div-gpt-ad-003-RECTANGLE-0').setTargeting('pos', ['003-RECTANGLE']).addService(googletag.pubads()); +googletag.defineSlot('/75224259/AGORA-IN/Wyborcza.biz/067-RECTANGLE-BTF', [[300,250]], 'div-gpt-ad-067-RECTANGLE-BTF-0').setTargeting('pos', ['067-RECTANGLE-BTF']).addService(googletag.pubads()); +googletag.defineSlot('/75224259/AGORA-IN/Wyborcza.biz/071-WINIETA', [[940,140],[940,70]], 'div-gpt-ad-071-WINIETA-0').setTargeting('pos', ['071-WINIETA']).addService(googletag.pubads()); +googletag.defineSlot('/75224259/AGORA-IN/Wyborcza.biz/007-CONTENTBOARD', [[300,250],[320,250],[336,280],[620,200],'fluid'], 'div-gpt-ad-007-CONTENTBOARD-0').setTargeting('pos', ['007-CONTENTBOARD']).addService(googletag.pubads()); +googletag.defineSlot('/75224259/AGORA-IN/Wyborcza.biz/035-RECTANGLE-BTF', [[300,250]], 'div-gpt-ad-035-RECTANGLE-BTF-0').setTargeting('pos', ['035-RECTANGLE-BTF']).addService(googletag.pubads()); + + + googletag.pubads().setTargeting('dx','147743'); + + googletag.pubads().setTargeting('dir','biznes'); + + googletag.pubads().setTargeting('jsp','23'); + + googletag.pubads().setTargeting('cb', [''+window.AG.rodoAccepted]); + googletag.pubads().setTargeting('uponit','false'); + + + + + + + + + var _YB=_YB||{ab:function(){return (Math.random()>=0.1?"b":"a"+Math.floor(Math.random()*10));}}; + googletag.pubads().getSlots().forEach(function(slot){slot.setTargeting('yb_ab', _YB.ab());}); + + + + var + cookieIfr = null; +if (document.referrer) { + + var + url_domain = function(data) { + var a = document.createElement('a'); + a.href = data; + return a.protocol + '//' + a.hostname; + }; + + var xhttp = new XMLHttpRequest(); + xhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + cookieIfr = JSON.parse(this.responseText).dfpreferrer; + } + }; + xhttp.withCredentials = true; + xhttp.open('GET', '//dfp.gazeta.pl/c.servlet?cn=dfpreferrer', false); + try { + xhttp.send(); + } catch (ex) { + console.info('Error xhttp DFP'); + } +} + +function _setCookieDFP(name) { + var xhttp = new XMLHttpRequest(); + xhttp.withCredentials = true; + xhttp.open('GET', '//dfp.gazeta.pl/c.servlet?cn=dfpreferrer&cv=' + name, true); + try { + xhttp.send(); + } catch (ex) { + console.info('Error xhttp DFP'); + } +} + +function _getCookieValueDFP(a) { + var b = document.cookie.match('(^|;)\\s*' + a + '\\s*=\\s*([^;]+)'); + return b ? b.pop() : ''; +} + + + + +// 20180410 +var hashArrDFP = ['BoxBizCzol1','BoxBizImg1','BoxBizImg2','BoxBizImg3','BoxBizLink','BoxBizLinkImg','BoxBizMT','BoxBizNav','BoxGWImg','BoxHor','BoxMTPromoImg','BoxMTPromo','BoxKultIko','BoxKultImg1','BoxKultImg2','BoxKultImg3','BoxKultLink','BoxKultLinkImg','BoxKultNav','BoxKultNavLink','BoxLoBbImg1','BoxLoBbImg2','BoxLoBbImg3','BoxLoBbImg4','BoxLoBbLink','BoxLoBbMT','BoxLoBbNavLink','BoxLoBiImg1','BoxLoBiImg2','BoxLoBiImg3','BoxLoBiImg4','BoxLoBiLink','BoxLoBiMT','BoxLoByImg1','BoxLoByImg2','BoxLoByImg3','BoxLoByImg4','BoxLoByLink','BoxLoByMT','BoxLoByNavLink','BoxLoCzImg1','BoxLoCzImg2','BoxLoCzImg3','BoxLoCzImg4','BoxLoCzNav','BoxLoCzLink','BoxLoCzMT','BoxLoCzNavLink','BoxLoGLImg1','BoxLoGLImg2','BoxLoGLImg3','BoxLoGLImg4','BoxLoGLLink','BoxLoGLMT','BoxLoGLNavLink','BoxLoGwImg1','BoxLoGwImg2','BoxLoGwImg3','BoxLoGwImg4','BoxLoGwLink','BoxLoGwMT','BoxLoKaImg1','BoxLoKaImg2','BoxLoKaImg3','BoxLoKaImg4','BoxLoKaLink','BoxLoKaMT','BoxLoKaNavLink','BoxLoKiImg1','BoxLoKiImg2','BoxLoKiImg3','BoxLoKiImg4','BoxLoKiLink','BoxLoKiMT','BoxLoKiNavLink','BoxLoKrImg1','BoxLoKrImg2','BoxLoKrImg3','BoxLoKrImg4','BoxLoKrLink','BoxLoKrMT','BoxLoKrNavLink','BoxLoLoImg1','BoxLoLoImg2','BoxLoLoImg3','BoxLoLoImg4','BoxLoLoLink','BoxLoLoMT','BoxLoLoNavLink','BoxLoLuImg1','BoxLoLuImg2','BoxLoLuImg3','BoxLoLuImg4','BoxLoLuLink','BoxLoLuMT','BoxLoLuNavLink','BoxLoOlsztynImg1','BoxLoOlsztynImg2','BoxLoOlsztynImg3','BoxLoOlsztynImg4','BoxLoOlsztynLink','BoxLoOlsztynMT','BoxLoOlsztynNavLink','BoxLoOlsztynNav','BoxLoOpImg1','BoxLoOpImg2','BoxLoOpImg3','BoxLoOpImg4','BoxLoOpLink','BoxLoOpMT','BoxLoOpNavLink','BoxLoPlImg1','BoxLoPlImg2','BoxLoPlImg3','BoxLoPlImg4','BoxLoPlLink','BoxLoPlMT','BoxLoPoImg1','BoxLoPoImg2','BoxLoPoImg3','BoxLoPoImg4','BoxLoPoLink','BoxLoPoMT','BoxLoPoNavLink','BoxLoRaImg1','BoxLoRaImg2','BoxLoRaImg3','BoxLoRaImg4','BoxLoRaLink','BoxLoRaMT','BoxLoRaNavLink','BoxLoRzImg2','BoxLoRzImg3','BoxLoRzImg4','BoxLoRzLink','BoxLoRzNavLink','BoxLoSoImg1','BoxLoSoImg2','BoxLoSoImg3','BoxLoSoImg4','BoxLoSoLink','BoxLoSoMT','BoxLoSoNavLink','BoxLoSzImg1','BoxLoSzImg2','BoxLoSzImg3','BoxLoSzImg4','BoxLoSzLink','BoxLoSzMT','BoxLoSzNavLink','BoxLoTrImg1','BoxLoTrImg2','BoxLoTrImg3','BoxLoTrImg4','BoxLoTrLink','BoxLoTrMT','BoxLoTrNavLink','BoxLoTrNav','BoxLoWaImg1','BoxLoWaImg2','BoxLoWaImg3','BoxLoWaImg4','BoxLoWaLink','BoxLoWaMT','BoxLoWaNav','BoxLoWrImg1','BoxLoWrImg2','BoxLoWrImg3','BoxLoWrImg4','BoxLoWrLink','BoxLoWrMT','BoxLoWrNavLink','BoxLoZgImg1','BoxLoZgImg2','BoxLoZgImg3','BoxLoZgImg4','BoxLoZgLink','BoxLoZgMT','BoxLoZgNavLink','BoxLSCzol1','BoxLSCzol2','BoxMotMT','BoxMotImg1','BoxMotImg2','BoxMotImg3','BoxMotImg4','BoxMotLink','BoxMotLinkImg','BoxMotNav','BoxLSFCZOL1','BoxLSFImg1','BoxLSFImg2','BoxLSFImg3','BoxLSFImg4','BoxLSFLink','BoxLSFMT','BoxLSImg1','BoxLSImg2','BoxLSLink','BoxLSLinkImg','BoxLSMT','BoxLSNav','ECON','BoxNewestNav','BoxNewsImg1','BoxNewsImg2','BoxNewsImg3','BoxNewsImg4','BoxNewsLink','BoxNewsLinkImg','BoxNewsLinkMore','BoxNewsMT','BoxNewsNav','BoxNewsNavLink','BoxNPrzeCzol1','BoxNPrzeCzol10','BoxNPrzeCzol11','BoxNPrzeCzol12','BoxNPrzeCzol13','BoxNPrzeCzol14','BoxNPrzeCzol15','BoxNPrzeCzol16','BoxNPrzeCzol17','BoxNPrzeCzol18','BoxNPrzeCzol19','BoxNPrzeCzol2','BoxNPrzeCzol20','BoxNPrzeCzol21','BoxNPrzeCzol22','BoxNPrzeCzol23','BoxNPrzeCzol24','BoxNPrzeCzol25','BoxNPrzeCzol26','BoxNPrzeCzol27','BoxNPrzeCzol3','BoxNPrzeCzol4','BoxNPrzeCzol5','BoxNPrzeCzol6','BoxNPrzeCzol7','BoxNPrzeCzol8','BoxNPrzeCzol9','BoxOpCzol1','BoxOpCzol2','BoxOpCzol3','BoxOpImg1','BoxOpImg2','BoxOpImg3','BoxOpImg4','BoxOpImg5','BoxOpImg6','BoxOpImg7','BoxOpImg8','BoxOpImg9','BoxOpImg10','BoxOpImg11','BoxOpLink','BoxOpMT','BoxPloCzol1','BoxPloImg1','BoxPloImg2','BoxPloImg3','BoxPloLink','BoxPloLinkImg','BoxPloMT','BoxPloNavLink','BoxRozCzol1','BoxRozImg1','BoxRozImg2','BoxRozImg3','BoxRozImg4','BoxRozMT','BoxRozNavLink','BoxSportImg1','BoxSportImg2','BoxSportImg3','BoxSportLink','BoxSportLinkImg','BoxSportMT','BoxSportNav','BoxWyboImg1','BoxWyboImg2','BoxWyboImg3','BoxWyboImg4','BoxWyboLink','BoxWyboLinkImg','BoxWyboMT','BoxWyboNav','NavMoreSeo','PublioBoxEcom1','PublioBoxEcom2','PublioBoxEcom3','PublioBoxEcom4','NavLinks','NavLinksSm','NavIco','NavIcoSm','BoxOpMT1','BoxOpMT2','BoxOpMT3','BoxOpMT4','BoxPogTer','BoxPogNast','BoxPogJut','BoxPog7','BoxPogMi','BoxSportImg4','BoxSportCzol1','BoxSportLinkMore','BoxBizImg4','BoxBizLinkMore','BoxLSImg3','BoxLSImg4','BoxLSLinkMore','BoxPloNav','BoxPloLinkMore','BoxLSFCzol1','BoxLSFNav','BoxLSFLinkMore','BoxKultLinkMore','BoxRozNav','BoxRozLink','BoxRozLinkMore','BoxWyboNavLink','BoxWyboLinkMore','BoxLoWaNavLink','BoxLoWaLinkMore','BoxLoKrNav','BoxLoKrLinkMore','BoxLoKiNav','BoxLoKiLinkMore','BoxLoBiNav','BoxLoBiNavLink','BoxLoBiLinkMore','BoxLoBbNav','BoxLoBbLinkMore','BoxLoByNav','BoxLoByLinkMore','BoxLoGlMT','BoxLoGlImg1','BoxLoGlImg2','BoxLoGlImg3','BoxLoGlImg4','BoxLoGlLink','BoxLoGlNav','BoxLoGlNavLink','BoxLoGlLinkMore','BoxLoTrLinkMore','BoxLoGwNav','BoxLoGwNavLink','BoxLoGwLinkMore','BoxLoKaNav','BoxLoKaLinkMore','BoxLoLuNav','BoxLoLuLinkMore','BoxLoLoNav','BoxLoLoLinkMore','BoxLoOlMT','BoxLoOlImg1','BoxLoOlImg2','BoxLoOlImg3','BoxLoOlImg4','BoxLoOlLink','BoxLoOlNav','BoxLoOlNavLink','BoxLoOlLinkMore','BoxLoOpNav','BoxLoOpLinkMore','BoxLoPlNav','BoxLoPlNavLink','BoxLoPlLinkMore','BoxLoPoNav','BoxLoPoLinkMore','BoxLoCzLinkMore','BoxLoRaNav','BoxLoRaLinkMore','BoxLoRzMT','BoxLoRzImg1','BoxLoRzNav','BoxLoRzLinkMore','BoxLoSoNav','BoxLoSoLinkMore','BoxLoSzNav','BoxLoSzLinkMore','BoxLoToMT','BoxLoToImg1','BoxLoToImg2','BoxLoToImg3','BoxLoToImg4','BoxLoToLink','BoxLoToNav','BoxLoToNavLink','BoxLoToLinkMore','BoxLoWrNav','BoxLoWrLinkMore','BoxLoZgNav','BoxLoZgLinkMore','BoxLoCpMT','BoxLoCpImg1','BoxLoCpImg2','BoxLoCpImg3','BoxLoCpImg4','BoxLoCpLink','BoxLoCpNav','BoxLoCpNavLink','BoxLoCpLinkMore','BoxC2COp1','BoxC2COp2','BoxC2COp10','BoxC2COp3','BoxC2COp4','BoxC2COp5','BoxC2COp6','BoxC2COp7','BoxC2COp8','BoxC2COp9','BoxC2CLS1','BoxC2CLS10','BoxC2CLS2','BoxC2CLS3','BoxC2CLS4','BoxC2CLS5','BoxC2CLS6','BoxC2CLS7','BoxC2CLS8','BoxC2CLS9','BoxC2CMot1','BoxC2CMot10','BoxC2CMot2','BoxC2CMot3','BoxC2CMot4','BoxC2CMot5','BoxC2CMot6','BoxC2CMot7','BoxC2CMot8','BoxC2CMot9','BoxC2CPlo1','BoxC2CPlo10','BoxC2CPlo2','BoxC2CPlo3','BoxC2CPlo4','BoxC2CPlo5','BoxC2CPlo6','BoxC2CPlo7','BoxC2CPlo8','BoxC2CPlo9','BoxC2CSport1','BoxC2CSport10','BoxC2CSport2','BoxC2CSport3','BoxC2CSport4','BoxC2CSport5','BoxC2CSport6','BoxC2CSport7','BoxC2CSport8','BoxC2CSport9','BoxWeSl_1_1','BoxWeSl_1_2','BoxWeSl_2_1','BoxWeSl_2_2','BoxWeSl_3_1','BoxWeSl_3_2','BoxWeSl_4_1','BoxWeSl_4_2','BoxWeSl_5_1','BoxWeSl_5_2','BoxWeFr','BoxLoBbLinkImg','BoxLoBiLinkImg','BoxLoByLinkImg','BoxLoCzLinkImg','BoxLoGLLinkImg','BoxLoGwLinkImg','BoxLoKaLinkImg','BoxLoKiLinkImg','BoxLoKrLinkImg','BoxLoLoLinkImg','BoxLoLuLinkImg','BoxLoOlsztynLinkImg','BoxLoOpLinkImg','BoxLoPlLinkImg','BoxLoPoLinkImg','BoxLoRaLinkImg','BoxLoRzLinkImg','BoxLoSoLinkImg','BoxLoSzLinkImg','BoxLoTrLinkImg','BoxLoWaLinkImg','BoxLoWrLinkImg','BoxLoZgLinkImg','BoxLoGlLinkImg','BoxLoOlLinkImg','BoxLoToLinkImg','BoxLoCpLinkImg','BoxBizCz','BoxBizImg','BoxDesCz','BoxDesImg','BoxDesNav','BoxDWCz','BoxDWImg','BoxDWNav','BoxLSECom','BoxFiBImg','BoxFiBNav','FiBImg','FiBNav','BoxGWNav','BoxHorNav','BoxIkoBook','BoxIkoGie','BoxIkoGry','BoxIkoHor','BoxIkoKina','BoxIkoLotto','BoxIkoPog','BoxIkoTV','BoxKultImg','BoxLSCz','BoxLSImg','BoxLokKrajImg','BoxLokKrajLink','BoxLokKrajLinkImg','BoxLokBialImg','BoxLokBialLink','BoxLokBialNav','BoxLokBialLinkImg','BoxLokBieImg','BoxLokBieLink','BoxLokBieLinkImg','BoxLokBieNav','BoxLokBydImg','BoxLokBydLink','BoxLokBydLinkImg','BoxLokBydNav','BoxLokCzeImg','BoxLokCzeLink','BoxLokCzeLinkImg','BoxLokCzeNav','BoxLokGlwImg','BoxLokGlwLink','BoxLokGlwLinkImg','BoxLokGorzImg','BoxLokGorzLink','BoxLokGorzLinkImg','BoxLokKatImg','BoxLokKatLink','BoxLokKatLinkImg','BoxLokKatNav','BoxLokKielImg','BoxLokKielLink','BoxLokKielLinkImg','BoxLokKielNav','BoxLokKrakImg','BoxLokKrakLink','BoxLokKrakLinkImg','BoxLokKrakNav','BoxLokLubImg','BoxLokLubLink','BoxLokLubLinkImg','BoxLokLubNav','BoxLokLodzImg','BoxLokLodzLink','BoxLokLodzLinkImg','BoxLokLodzNav','BoxLokOlsImg','BoxLokOlsLink','BoxLokOlsNav','BoxLokOlsLinkImg','BoxLokOpoImg','BoxLokOpoLink','BoxLokOpoLinkImg','BoxLokOpoNav','BoxLokPloImg','BoxLokPloLink','BoxLokPloNav','BoxLokPloLinkImg','BoxLokPozImg','BoxLokPozLink','BoxLokPozNav','BoxLokPozLinkImg','BoxLokRadImg','BoxLokRadLink','BoxLokRadNav','BoxLokRadLinkImg','BoxLokRzeImg','BoxLokRzeLink','BoxLokRzeLinkImg','BoxLokRzeNav','BoxLokSosImg','BoxLokSosLink','BoxLokSosLinkImg','BoxLokSosNav','BoxLokSznImg','BoxLokSznLink','BoxLokSznLinkImg','BoxLokSznNav','BoxLokTorImg','BoxLokTorLink','BoxLokTorLinkImg','BoxLokTorNav','BoxLokTrojImg','BoxLokTrojLink','BoxLokTrojLinkImg','BoxLokTrojNav','BoxLokWawImg','BoxLokWawNav','BoxLokWawLink','BoxLokWawLinkImg','BoxLokWrocImg','BoxLokWrocLink','BoxLokWrocLinkImg','BoxLokWrocNav','BoxLokZielImg','BoxLokZielLink','BoxLokZielLinkImg','BoxLokZielNav','MegaMT','BoxMU2Img','ModaUroda2Img','BoxMUCz','BoxMUImg','BoxMotoImg','BoxMotoNav','MotoImg','MTstream','mBoxNajcz','BoxNiePrzeg','NiePrzeg','BoxOferty','BoxNextImg','Czolka3Img','MT','MT2','Prze','BoxPloCz2','BoxPloCz3','BoxPloPrze','BoxTripImg','BoxTrvCz','BoxTrvImg','BoxTrvNav','PodrozeCz','PodrozeImg','TRPog','BoxPubImg','BoxRekrCz','BoxRekrImg','BoxRekrNav','BoxSpecImg','BoxSpecLink','BoxSpecialNav','BoxSpecial','BoxSportCz','BoxSportImg','BoxSportPrze','Weekend','TRwknd','BoxNewsImg','BoxVidImg','BoxVidLifeImg','BoxVODImg','BoxWN','gospoIco','Img','Ogl_all','Czolka3Img2','Prze2','HatNav','NavLinksCz','HatNavCz','NavMore','TROgl','BoxPubNav','A_BoxBizCzol1','A_BoxBizImg1','A_BoxBizImg2','A_BoxBizImg3','A_BoxBizLink','A_BoxBizLinkImg','A_BoxBizMT','A_BoxBizNav','A_BoxGWImg','A_BoxHor','A_BoxMTPromoImg','A_BoxMTPromo','A_BoxKultIko','A_BoxKultImg1','A_BoxKultImg2','A_BoxKultImg3','A_BoxKultLink','A_BoxKultLinkImg','A_BoxKultNav','A_BoxKultNavLink','A_BoxLoBbImg1','A_BoxLoBbImg2','A_BoxLoBbImg3','A_BoxLoBbImg4','A_BoxLoBbLink','A_BoxLoBbMT','A_BoxLoBbNavLink','A_BoxLoBiImg1','A_BoxLoBiImg2','A_BoxLoBiImg3','A_BoxLoBiImg4','A_BoxLoBiLink','A_BoxLoBiMT','A_BoxLoByImg1','A_BoxLoByImg2','A_BoxLoByImg3','A_BoxLoByImg4','A_BoxLoByLink','A_BoxLoByMT','A_BoxLoByNavLink','A_BoxLoCzImg1','A_BoxLoCzImg2','A_BoxLoCzImg3','A_BoxLoCzImg4','A_BoxLoCzNav','A_BoxLoCzLink','A_BoxLoCzMT','A_BoxLoCzNavLink','A_BoxLoGLImg1','A_BoxLoGLImg2','A_BoxLoGLImg3','A_BoxLoGLImg4','A_BoxLoGLLink','A_BoxLoGLMT','A_BoxLoGLNavLink','A_BoxLoGwImg1','A_BoxLoGwImg2','A_BoxLoGwImg3','A_BoxLoGwImg4','A_BoxLoGwLink','A_BoxLoGwMT','A_BoxLoKaImg1','A_BoxLoKaImg2','A_BoxLoKaImg3','A_BoxLoKaImg4','A_BoxLoKaLink','A_BoxLoKaMT','A_BoxLoKaNavLink','A_BoxLoKiImg1','A_BoxLoKiImg2','A_BoxLoKiImg3','A_BoxLoKiImg4','A_BoxLoKiLink','A_BoxLoKiMT','A_BoxLoKiNavLink','A_BoxLoKrImg1','A_BoxLoKrImg2','A_BoxLoKrImg3','A_BoxLoKrImg4','A_BoxLoKrLink','A_BoxLoKrMT','A_BoxLoKrNavLink','A_BoxLoLoImg1','A_BoxLoLoImg2','A_BoxLoLoImg3','A_BoxLoLoImg4','A_BoxLoLoLink','A_BoxLoLoMT','A_BoxLoLoNavLink','A_BoxLoLuImg1','A_BoxLoLuImg2','A_BoxLoLuImg3','A_BoxLoLuImg4','A_BoxLoLuLink','A_BoxLoLuMT','A_BoxLoLuNavLink','A_BoxLoOlsztynImg1','A_BoxLoOlsztynImg2','A_BoxLoOlsztynImg3','A_BoxLoOlsztynImg4','A_BoxLoOlsztynLink','A_BoxLoOlsztynMT','A_BoxLoOlsztynNavLink','A_BoxLoOlsztynNav','A_BoxLoOpImg1','A_BoxLoOpImg2','A_BoxLoOpImg3','A_BoxLoOpImg4','A_BoxLoOpLink','A_BoxLoOpMT','A_BoxLoOpNavLink','A_BoxLoPlImg1','A_BoxLoPlImg2','A_BoxLoPlImg3','A_BoxLoPlImg4','A_BoxLoPlLink','A_BoxLoPlMT','A_BoxLoPoImg1','A_BoxLoPoImg2','A_BoxLoPoImg3','A_BoxLoPoImg4','A_BoxLoPoLink','A_BoxLoPoMT','A_BoxLoPoNavLink','A_BoxLoRaImg1','A_BoxLoRaImg2','A_BoxLoRaImg3','A_BoxLoRaImg4','A_BoxLoRaLink','A_BoxLoRaMT','A_BoxLoRaNavLink','A_BoxLoRzImg2','A_BoxLoRzImg3','A_BoxLoRzImg4','A_BoxLoRzLink','A_BoxLoRzNavLink','A_BoxLoSoImg1','A_BoxLoSoImg2','A_BoxLoSoImg3','A_BoxLoSoImg4','A_BoxLoSoLink','A_BoxLoSoMT','A_BoxLoSoNavLink','A_BoxLoSzImg1','A_BoxLoSzImg2','A_BoxLoSzImg3','A_BoxLoSzImg4','A_BoxLoSzLink','A_BoxLoSzMT','A_BoxLoSzNavLink','A_BoxLoTrImg1','A_BoxLoTrImg2','A_BoxLoTrImg3','A_BoxLoTrImg4','A_BoxLoTrLink','A_BoxLoTrMT','A_BoxLoTrNavLink','A_BoxLoTrNav','A_BoxLoWaImg1','A_BoxLoWaImg2','A_BoxLoWaImg3','A_BoxLoWaImg4','A_BoxLoWaLink','A_BoxLoWaMT','A_BoxLoWaNav','A_BoxLoWrImg1','A_BoxLoWrImg2','A_BoxLoWrImg3','A_BoxLoWrImg4','A_BoxLoWrLink','A_BoxLoWrMT','A_BoxLoWrNavLink','A_BoxLoZgImg1','A_BoxLoZgImg2','A_BoxLoZgImg3','A_BoxLoZgImg4','A_BoxLoZgLink','A_BoxLoZgMT','A_BoxLoZgNavLink','A_BoxLSCzol1','A_BoxLSCzol2','A_BoxMotMT','A_BoxMotImg1','A_BoxMotImg2','A_BoxMotImg3','A_BoxMotImg4','A_BoxMotLink','A_BoxMotLinkImg','A_BoxMotNav','A_BoxLSFCZOL1','A_BoxLSFImg1','A_BoxLSFImg2','A_BoxLSFImg3','A_BoxLSFImg4','A_BoxLSFLink','A_BoxLSFMT','A_BoxLSImg1','A_BoxLSImg2','A_BoxLSLink','A_BoxLSLinkImg','A_BoxLSMT','A_BoxLSNav','A_ECON','A_BoxNewestNav','A_BoxNewsImg1','A_BoxNewsImg2','A_BoxNewsImg3','A_BoxNewsImg4','A_BoxNewsLink','A_BoxNewsLinkImg','A_BoxNewsLinkMore','A_BoxNewsMT','A_BoxNewsNav','A_BoxNewsNavLink','A_BoxNPrzeCzol1','A_BoxNPrzeCzol10','A_BoxNPrzeCzol11','A_BoxNPrzeCzol12','A_BoxNPrzeCzol13','A_BoxNPrzeCzol14','A_BoxNPrzeCzol15','A_BoxNPrzeCzol16','A_BoxNPrzeCzol17','A_BoxNPrzeCzol18','A_BoxNPrzeCzol19','A_BoxNPrzeCzol2','A_BoxNPrzeCzol20','A_BoxNPrzeCzol21','A_BoxNPrzeCzol22','A_BoxNPrzeCzol23','A_BoxNPrzeCzol24','A_BoxNPrzeCzol25','A_BoxNPrzeCzol26','A_BoxNPrzeCzol27','A_BoxNPrzeCzol3','A_BoxNPrzeCzol4','A_BoxNPrzeCzol5','A_BoxNPrzeCzol6','A_BoxNPrzeCzol7','A_BoxNPrzeCzol8','A_BoxNPrzeCzol9','A_BoxOpCzol1','A_BoxOpCzol2','A_BoxOpCzol3','A_BoxOpImg1','A_BoxOpImg2','A_BoxOpImg3','A_BoxOpImg4','A_BoxOpImg5','A_BoxOpImg6','A_BoxOpImg7','A_BoxOpImg8','A_BoxOpImg9','A_BoxOpImg10','A_BoxOpImg11','A_BoxOpLink','A_BoxOpMT','A_BoxPloCzol1','A_BoxPloImg1','A_BoxPloImg2','A_BoxPloImg3','A_BoxPloLink','A_BoxPloLinkImg','A_BoxPloMT','A_BoxPloNavLink','A_BoxRozCzol1','A_BoxRozImg1','A_BoxRozImg2','A_BoxRozImg3','A_BoxRozImg4','A_BoxRozMT','A_BoxRozNavLink','A_BoxSportImg1','A_BoxSportImg2','A_BoxSportImg3','A_BoxSportLink','A_BoxSportLinkImg','A_BoxSportMT','A_BoxSportNav','A_BoxWyboImg1','A_BoxWyboImg2','A_BoxWyboImg3','A_BoxWyboImg4','A_BoxWyboLink','A_BoxWyboLinkImg','A_BoxWyboMT','A_BoxWyboNav','A_NavMoreSeo','A_PublioBoxEcom1','A_PublioBoxEcom2','A_PublioBoxEcom3','A_PublioBoxEcom4','A_NavLinks','A_NavLinksSm','A_NavIco','A_NavIcoSm','A_BoxOpMT1','A_BoxOpMT2','A_BoxOpMT3','A_BoxOpMT4','A_BoxPogTer','A_BoxPogNast','A_BoxPogJut','A_BoxPog7','A_BoxPogMi','A_BoxSportImg4','A_BoxSportCzol1','A_BoxSportLinkMore','A_BoxBizImg4','A_BoxBizLinkMore','A_BoxLSImg3','A_BoxLSImg4','A_BoxLSLinkMore','A_BoxPloNav','A_BoxPloLinkMore','A_BoxLSFCzol1','A_BoxLSFNav','A_BoxLSFLinkMore','A_BoxKultLinkMore','A_BoxRozNav','A_BoxRozLink','A_BoxRozLinkMore','A_BoxWyboNavLink','A_BoxWyboLinkMore','A_BoxLoWaNavLink','A_BoxLoWaLinkMore','A_BoxLoKrNav','A_BoxLoKrLinkMore','A_BoxLoKiNav','A_BoxLoKiLinkMore','A_BoxLoBiNav','A_BoxLoBiNavLink','A_BoxLoBiLinkMore','A_BoxLoBbNav','A_BoxLoBbLinkMore','A_BoxLoByNav','A_BoxLoByLinkMore','A_BoxLoGlMT','A_BoxLoGlImg1','A_BoxLoGlImg2','A_BoxLoGlImg3','A_BoxLoGlImg4','A_BoxLoGlLink','A_BoxLoGlNav','A_BoxLoGlNavLink','A_BoxLoGlLinkMore','A_BoxLoTrLinkMore','A_BoxLoGwNav','A_BoxLoGwNavLink','A_BoxLoGwLinkMore','A_BoxLoKaNav','A_BoxLoKaLinkMore','A_BoxLoLuNav','A_BoxLoLuLinkMore','A_BoxLoLoNav','A_BoxLoLoLinkMore','A_BoxLoOlMT','A_BoxLoOlImg1','A_BoxLoOlImg2','A_BoxLoOlImg3','A_BoxLoOlImg4','A_BoxLoOlLink','A_BoxLoOlNav','A_BoxLoOlNavLink','A_BoxLoOlLinkMore','A_BoxLoOpNav','A_BoxLoOpLinkMore','A_BoxLoPlNav','A_BoxLoPlNavLink','A_BoxLoPlLinkMore','A_BoxLoPoNav','A_BoxLoPoLinkMore','A_BoxLoCzLinkMore','A_BoxLoRaNav','A_BoxLoRaLinkMore','A_BoxLoRzMT','A_BoxLoRzImg1','A_BoxLoRzNav','A_BoxLoRzLinkMore','A_BoxLoSoNav','A_BoxLoSoLinkMore','A_BoxLoSzNav','A_BoxLoSzLinkMore','A_BoxLoToMT','A_BoxLoToImg1','A_BoxLoToImg2','A_BoxLoToImg3','A_BoxLoToImg4','A_BoxLoToLink','A_BoxLoToNav','A_BoxLoToNavLink','A_BoxLoToLinkMore','A_BoxLoWrNav','A_BoxLoWrLinkMore','A_BoxLoZgNav','A_BoxLoZgLinkMore','A_BoxLoCpMT','A_BoxLoCpImg1','A_BoxLoCpImg2','A_BoxLoCpImg3','A_BoxLoCpImg4','A_BoxLoCpLink','A_BoxLoCpNav','A_BoxLoCpNavLink','A_BoxLoCpLinkMore','A_BoxC2COp1','A_BoxC2COp2','A_BoxC2COp10','A_BoxC2COp3','A_BoxC2COp4','A_BoxC2COp5','A_BoxC2COp6','A_BoxC2COp7','A_BoxC2COp8','A_BoxC2COp9','A_BoxC2CLS1','A_BoxC2CLS10','A_BoxC2CLS2','A_BoxC2CLS3','A_BoxC2CLS4','A_BoxC2CLS5','A_BoxC2CLS6','A_BoxC2CLS7','A_BoxC2CLS8','A_BoxC2CLS9','A_BoxC2CMot1','A_BoxC2CMot10','A_BoxC2CMot2','A_BoxC2CMot3','A_BoxC2CMot4','A_BoxC2CMot5','A_BoxC2CMot6','A_BoxC2CMot7','A_BoxC2CMot8','A_BoxC2CMot9','A_BoxC2CPlo1','A_BoxC2CPlo10','A_BoxC2CPlo2','A_BoxC2CPlo3','A_BoxC2CPlo4','A_BoxC2CPlo5','A_BoxC2CPlo6','A_BoxC2CPlo7','A_BoxC2CPlo8','A_BoxC2CPlo9','A_BoxC2CSport1','A_BoxC2CSport10','A_BoxC2CSport2','A_BoxC2CSport3','A_BoxC2CSport4','A_BoxC2CSport5','A_BoxC2CSport6','A_BoxC2CSport7','A_BoxC2CSport8','A_BoxC2CSport9','A_BoxWeSl_1_1','A_BoxWeSl_1_2','A_BoxWeSl_2_1','A_BoxWeSl_2_2','A_BoxWeSl_3_1','A_BoxWeSl_3_2','A_BoxWeSl_4_1','A_BoxWeSl_4_2','A_BoxWeSl_5_1','A_BoxWeSl_5_2','A_BoxWeFr','A_BoxLoBbLinkImg','A_BoxLoBiLinkImg','A_BoxLoByLinkImg','A_BoxLoCzLinkImg','A_BoxLoGLLinkImg','A_BoxLoGwLinkImg','A_BoxLoKaLinkImg','A_BoxLoKiLinkImg','A_BoxLoKrLinkImg','A_BoxLoLoLinkImg','A_BoxLoLuLinkImg','A_BoxLoOlsztynLinkImg','A_BoxLoOpLinkImg','A_BoxLoPlLinkImg','A_BoxLoPoLinkImg','A_BoxLoRaLinkImg','A_BoxLoRzLinkImg','A_BoxLoSoLinkImg','A_BoxLoSzLinkImg','A_BoxLoTrLinkImg','A_BoxLoWaLinkImg','A_BoxLoWrLinkImg','A_BoxLoZgLinkImg','A_BoxLoGlLinkImg','A_BoxLoOlLinkImg','A_BoxLoToLinkImg','A_BoxLoCpLinkImg','Z_BoxBizCz','Z_BoxBizImg','Z_BoxBizLink','Z_BoxBizLinkImg','Z_BoxBizNav','Z_BoxDesCz','Z_BoxDesImg','Z_BoxDesNav','Z_BoxDWCz','Z_BoxDWImg','Z_BoxDWNav','Z_BoxLSECom','Z_BoxFiBImg','Z_BoxFiBNav','Z_FiBImg','Z_FiBNav','Z_BoxGWImg','Z_BoxGWNav','Z_BoxHor','Z_BoxHorNav','Z_BoxIkoBook','Z_BoxIkoGie','Z_BoxIkoGry','Z_BoxIkoHor','Z_BoxIkoKina','Z_BoxIkoLotto','Z_BoxIkoPog','Z_BoxIkoTV','Z_BoxKultImg','Z_BoxKultNav','Z_BoxLSCz','Z_BoxLSImg','Z_BoxLSLink','Z_BoxLSLinkImg','Z_BoxLSNav','Z_BoxLokKrajImg','Z_BoxLokKrajLink','Z_BoxLokKrajLinkImg','Z_BoxLokBialImg','Z_BoxLokBialLink','Z_BoxLokBialNav','Z_BoxLokBialLinkImg','Z_BoxLokBieImg','Z_BoxLokBieLink','Z_BoxLokBieLinkImg','Z_BoxLokBieNav','Z_BoxLokBydImg','Z_BoxLokBydLink','Z_BoxLokBydLinkImg','Z_BoxLokBydNav','Z_BoxLokCzeImg','Z_BoxLokCzeLink','Z_BoxLokCzeLinkImg','Z_BoxLokCzeNav','Z_BoxLokGlwImg','Z_BoxLokGlwLink','Z_BoxLokGlwLinkImg','Z_BoxLokGorzImg','Z_BoxLokGorzLink','Z_BoxLokGorzLinkImg','Z_BoxLokKatImg','Z_BoxLokKatLink','Z_BoxLokKatLinkImg','Z_BoxLokKatNav','Z_BoxLokKielImg','Z_BoxLokKielLink','Z_BoxLokKielLinkImg','Z_BoxLokKielNav','Z_BoxLokKrakImg','Z_BoxLokKrakLink','Z_BoxLokKrakLinkImg','Z_BoxLokKrakNav','Z_BoxLokLubImg','Z_BoxLokLubLink','Z_BoxLokLubLinkImg','Z_BoxLokLubNav','Z_BoxLokLodzImg','Z_BoxLokLodzLink','Z_BoxLokLodzLinkImg','Z_BoxLokLodzNav','Z_BoxLokOlsImg','Z_BoxLokOlsLink','Z_BoxLokOlsNav','Z_BoxLokOlsLinkImg','Z_BoxLokOpoImg','Z_BoxLokOpoLink','Z_BoxLokOpoLinkImg','Z_BoxLokOpoNav','Z_BoxLokPloImg','Z_BoxLokPloLink','Z_BoxLokPloNav','Z_BoxLokPloLinkImg','Z_BoxLokPozImg','Z_BoxLokPozLink','Z_BoxLokPozNav','Z_BoxLokPozLinkImg','Z_BoxLokRadImg','Z_BoxLokRadLink','Z_BoxLokRadNav','Z_BoxLokRadLinkImg','Z_BoxLokRzeImg','Z_BoxLokRzeLink','Z_BoxLokRzeLinkImg','Z_BoxLokRzeNav','Z_BoxLokSosImg','Z_BoxLokSosLink','Z_BoxLokSosLinkImg','Z_BoxLokSosNav','Z_BoxLokSznImg','Z_BoxLokSznLink','Z_BoxLokSznLinkImg','Z_BoxLokSznNav','Z_BoxLokTorImg','Z_BoxLokTorLink','Z_BoxLokTorLinkImg','Z_BoxLokTorNav','Z_BoxLokTrojImg','Z_BoxLokTrojLink','Z_BoxLokTrojLinkImg','Z_BoxLokTrojNav','Z_BoxLokWawImg','Z_BoxLokWawNav','Z_BoxLokWawLink','Z_BoxLokWawLinkImg','Z_BoxLokWrocImg','Z_BoxLokWrocLink','Z_BoxLokWrocLinkImg','Z_BoxLokWrocNav','Z_BoxLokZielImg','Z_BoxLokZielLink','Z_BoxLokZielLinkImg','Z_BoxLokZielNav','Z_MegaMT','Z_BoxMU2Img','Z_ModaUroda2Img','Z_BoxMUCz','Z_BoxMUImg','Z_BoxMotoImg','Z_BoxMotoNav','Z_MotoImg','Z_BoxMTPromoImg','Z_BoxMTPromo','Z_MTstream','Z_mBoxNajcz','Z_BoxNiePrzeg','Z_NiePrzeg','Z_BoxOferty','Z_BoxNextImg','Z_Czolka3Img','Z_MT','Z_MT2','Z_Prze','Z_BoxPloCz2','Z_BoxPloCz3','Z_BoxPloMT','Z_BoxPloPrze','Z_BoxPloNav','Z_BoxSportNav','Z_BoxTripImg','Z_BoxTrvCz','Z_BoxTrvImg','Z_BoxTrvNav','Z_PodrozeCz','Z_PodrozeImg','Z_BoxPogJut','Z_BoxPogMi','Z_BoxPogTer','Z_TRPog','Z_BoxPubImg','Z_BoxRekrCz','Z_BoxRekrImg','Z_BoxRekrNav','Z_BoxSpecImg','Z_BoxSpecLink','Z_BoxSpecialNav','Z_BoxSpecial','Z_BoxSportCz','Z_BoxSportImg','Z_BoxSportLink','Z_BoxSportLinkImg','Z_BoxSportPrze','Z_Weekend','Z_TRwknd','Z_BoxNewsImg','Z_BoxNewsNav','Z_BoxNewsLink','Z_BoxNewsLinkImg','Z_BoxVidImg','Z_BoxVidLifeImg','Z_BoxVODImg','Z_BoxWN','Z_gospoIco','Z_Img','Z_Ogl_all','Z_Czolka3Img2','Z_Prze2','Z_NavLinks','Z_HatNav','Z_NavLinksCz','Z_HatNavCz','Z_NavIco','Z_NavMore','Z_TROgl','Z_BoxPubNav','BoxMTPPush','Z_BoxMTPPush','A_BoxMTPPush','BoxMTPAuto','A_BoxMTPAuto','Z_BoxMTPAuto']; + + + + +if (( !document.referrer && (window.location.host === 'www.gazeta.pl' || window.location.host === 'm.gazeta.pl') && + (window.location.href.indexOf('0,0.html?p=') !== -1 || window.location.href.indexOf('0,0.html?promocja=') !== -1)) || + ((document.referrer.indexOf('www.gazeta.pl') !== -1 || document.referrer.indexOf('m.gazeta.pl') !== -1) && + (document.referrer.indexOf('0,0.html?p=') !== -1 || document.referrer.indexOf('0,0.html?promocja=') !== -1))) { + + var hashTag = ''; + if (window.location.hash) { + var + hash = window.location.hash, + n = hash.indexOf('&'); + hash = hash.substring(0, n != -1 ? n : hash.length); + var getHash = hash.split('#').pop(); + if (hashArrDFP.indexOf(getHash) !== -1) { hashTag = '_' + getHash; } + } + + googletag.pubads().setTargeting('src','HPGAZETA-DHP' + hashTag); + _setCookieDFP('HPGAZETA-DHP' + hashTag); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("src|HPGAZETA-DHP" + hashTag); + +} else if ( document.referrer.split("?")[0].indexOf('facebook.com') !== -1 || + ( !document.referrer && document.location.href.indexOf('utm_source=facebook.com') !== -1 ) ) { + + if (window.location.href.indexOf('utm_content') !== -1 || document.referrer.indexOf('utm_content') !== -1) { + + var paramsObject = function ( name, url ) { + if (!url) url = location.href; + name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); + var regexS = "[\\?&]"+name+"=([^&#]*)"; + var regex = new RegExp( regexS ); + var results = regex.exec( url ); + return results == null ? null : results[1]; + }, + checkHrefDFP = paramsObject('utm_content', window.location.href), + checkReferrerDFP = paramsObject('utm_content', document.referrer), + newValueDFP = checkHrefDFP || checkReferrerDFP; + + googletag.pubads().setTargeting('src', 'FACEBOOK_CPC_' + newValueDFP); + _setCookieDFP('FACEBOOK_CPC_' + newValueDFP); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("src|FACEBOOK_CPC_" + newValueDFP); + + } else { + googletag.pubads().setTargeting('src','FACEBOOK'); + _setCookieDFP('FACEBOOK'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("src|FACEBOOK"); + } + + +} else if ( ( document.location.href.indexOf('utm_medium=cpc') !== -1 && document.location.href.indexOf('utm_source=facebook.com') === -1) || + (document.location.href.indexOf('adw=1') !== -1 || document.location.href.indexOf('gclid=') !== -1) || + (document.referrer.indexOf('googleads.g.doubleclick.net') !== -1 || document.referrer.indexOf('googleadservices.com') !== -1) ) { + + googletag.pubads().setTargeting('src','CPC'); + _setCookieDFP('CPC'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("src|CPC"); + +} else if( (document.location.href.indexOf('www.gazeta.pl') !== -1 || document.location.href.indexOf('m.gazeta.pl') !== -1) || + (document.referrer.indexOf('www.gazeta.pl') !== -1 || document.referrer.indexOf('m.gazeta.pl') !== -1) ) { + + var hashTag = ''; + if (window.location.hash) { + var + hash = window.location.hash, + n = hash.indexOf('&'); + hash = hash.substring(0, n != -1 ? n : hash.length); + var getHash = hash.split('#').pop(); + if (hashArrDFP.indexOf(getHash) !== -1) { hashTag = '_' + getHash; } + } + + googletag.pubads().setTargeting('src','HPGAZETA' + hashTag); + _setCookieDFP('HPGAZETA' + hashTag); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("src|HPGAZETA" + hashTag); + +} else if (!document.referrer) { + + googletag.pubads().setTargeting('src','DIRECT'); + _setCookieDFP('DIRECT'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("src|DIRECT"); + +} else if ( (document.referrer.indexOf('szukaj.gazeta.pl') === -1) && + (document.referrer.indexOf('?q=') !== -1 || document.referrer.indexOf('&q=') !== -1 || document.referrer.indexOf('?query=') !== -1 || document.referrer.indexOf('search.yahoo.com') !== -1 || document.referrer.indexOf('&query=') !== -1 || document.referrer.indexOf('?szukaj=') !== -1 || document.referrer.indexOf('&szukaj') !== -1 || (document.referrer.indexOf('//www.google.') !== -1 && document.referrer.indexOf('logout') === -1)) && + document.location.href.indexOf('0,0.html') !== -1 || window.location.href.slice(-3) === '.pl' || window.location.href.slice(-4) === '.biz' || window.location.href.slice(-3) === '.tv' || window.location.href.slice(-8) === '.pl/html') { + + googletag.pubads().setTargeting('src','DIRECT-SEO'); + _setCookieDFP('DIRECT-SEO'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("src|DIRECT-SEO"); + +} else if ( document.referrer.indexOf('szukaj.gazeta.pl') === -1 && + (document.referrer.indexOf('?q=') !== -1 || document.referrer.indexOf('&q=') !== -1 || document.referrer.indexOf('?query=') !== -1 || document.referrer.indexOf('search.yahoo.com') !== -1 || document.referrer.indexOf('&query=') !== -1 || document.referrer.indexOf('?szukaj=') !== -1 || document.referrer.indexOf('&szukaj') !== -1 || (document.referrer.indexOf('//www.google.') !== -1 && document.referrer.indexOf('logout') === -1)) ) { + + googletag.pubads().setTargeting('src','SEO'); + _setCookieDFP('SEO'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("src|SEO"); + +} else if (cookieIfr) { + + googletag.pubads().setTargeting('src', cookieIfr); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("src|" + cookieIfr); + +} + + +if ((window.location.host == "www.gazeta.pl") || (window.location.host == "m.gazeta.pl")) { + if (window.location.href.indexOf('pushpushgo')!== -1 && window.location.href.indexOf('mtp=')!== -1) { + googletag.pubads().setTargeting('test','MTP_PUSH'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("test|MTP_PUSH"); + } else if ((window.location.href.indexOf('utm_source=facebook')!== -1 && window.location.href.indexOf('mtp=')!== -1) || window.location.href.indexOf('boxmtpautosp=')!== -1) { + googletag.pubads().setTargeting('test','MTP_FBCPC'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("test|MTP_FBCPC"); + } else if (window.location.href.indexOf('boxmtpauto=')!== -1) { + googletag.pubads().setTargeting('test','MTP_FBORG'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("test|MTP_FBORG"); + } else if ((window.location.href.indexOf('?p=')!== -1 || window.location.href.indexOf('?promocja=')!== -1) && document.referrer == "") { + googletag.pubads().setTargeting('test','MTP_DHP'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("test|MTP_DHP"); + } else if (window.location.href.indexOf('utm_campaign=amtp')!== -1) { + googletag.pubads().setTargeting('test','MTP_AMTP'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("test|MTP_AMTP4"); + } else if (window.location.href.indexOf('?404')!== -1) { + googletag.pubads().setTargeting('test','MTP_404'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("test|MTP_404"); + }else { + googletag.pubads().setTargeting('test','MTP_NULL'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("test|MTP_NULL"); + } +} + + + + + + + // [HB] Core-prod-3 - AFTER_SLOTS +if(window.yb_seg && yb_seg!='') { + googletag.pubads().setTargeting('yb_seg', yb_seg); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("yb_seg|" + yb_seg); +} +if(window.pbjs_yb_hb) { + googletag.pubads().getSlots().forEach(function(slot){ + slot.setTargeting('yb_hb', String(yb_hb)); + }); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("yb_hb|" + String(yb_hb)); +} +if(window.pbjs) pbjs.que.push(function() { + pbjs.setTargetingForGPTAsync(); +}); + + + + + + + + var yb_ff = String(Math.round(Math.random())); +googletag.pubads().setTargeting('yb_ff', yb_ff); +var _yt=new Date(),yb_th=_yt.getUTCHours()-8,yb_tm=_yt.getUTCMinutes(),yb_wd=_yt.getUTCDay(); +if(yb_th<0){yb_th=24+yb_th;yb_wd-=1;};if(yb_wd<0){yb_wd=7+yb_wd}; +googletag.pubads().setTargeting('yb_th', yb_th.toString()); +googletag.pubads().setTargeting('yb_tm', yb_tm.toString()); +googletag.pubads().setTargeting('yb_wd', yb_wd.toString()); + +if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("yb_th|" + yb_th.toString()); +if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("yb_tm|" + yb_tm.toString()); +if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push("yb_wd|" + yb_wd.toString()); + + +adviewDFP.getQueryParams = function(e){ + var n = new RegExp("[\\?&]"+e+"=([^&#]*)").exec(window.location.href); + return null !== n ? n[1] : null +}; + + +if (adviewDFP.getQueryParams('dfp_target_kw')) adviewDFP.DFPTargeting.push('kw|'+adviewDFP.getQueryParams('dfp_target_kw')); + +var + kwString = '', + paramString = ''; + +for(var i = 0; i < adviewDFP.DFPTargeting.length; i++) { + var + _this = adviewDFP.DFPTargeting[i], + _thisParam = _this.split('|'); + + if (_this.indexOf('kw') !== -1) { + if (kwString.indexOf(_thisParam[1]) === -1) kwString += '%2C' + _thisParam[1]; + } else { + paramString += '%26'+_thisParam[0]+'%3D'+_thisParam[1]; + } +} + +//_YB +var _YB = window.top._YB || { ab:function(){return (Math.random()>=0.1?"b":"a"+Math.floor(Math.random()*10));} }; + +paramString += '%26yb_ab%3D' + _YB.ab(); +//_YB +paramString += '%26yb_ff%3D' + String(Math.round(Math.random())); + +if (typeof activeSubscription !== 'undefined' && activeSubscription) { + paramString += '%26subscription%3Dtrue'; +} + +if (dfpParams && dfpParams.video && dfpParams.video.preroll) { + dfpParams.video.preroll = dfpParams.video.preroll.replace('%26dystrybutor', kwString + paramString + '%26dystrybutor'); + dfpParams.video.preroll = dfpParams.video.preroll.replace('[adview_hostname]', escape(location.host)); + dfpParams.video.preroll = dfpParams.video.preroll.replace('[cb]', window.AG.rodoAccepted); + dfpParams.video.preroll = dfpParams.video.preroll.replace('[locationhref]', escape(window.location.href)); +} + +if(dfpParams && dfpParams.video && dfpParams.video.skin) dfpParams.video.skin = dfpParams.video.skin.replace('%26dystrybutor', kwString + paramString + '%26dystrybutor'); +if(dfpParams && dfpParams.video && dfpParams.video.overlay) dfpParams.video.overlay = dfpParams.video.overlay.replace('%26dystrybutor', kwString + paramString + '%26dystrybutor'); +if(dfpParams && dfpParams.video && dfpParams.video.pausead) dfpParams.video.pausead = dfpParams.video.pausead.replace('%26dystrybutor', kwString + paramString + '%26dystrybutor'); + + + + + + + + + + if (typeof randRodoAB !== 'undefined') { + googletag.pubads().setTargeting("kw", "testyab_rodo_" + randRodoAB); + adviewDFP.DFPTargeting.push('kw|testyab_rodo_' + randRodoAB); +} + +(function(){ + var _pm = window.location.search.match(/\?i=([0-9]+)/); + if (window.adviewDFP && adviewDFP.DFPTargeting && _pm) adviewDFP.DFPTargeting.push("yb_page|" + String(_pm[1])); + if (_pm) return googletag.pubads().setTargeting('yb_page', String(_pm[1])); +})(); + +googletag.pubads().setTargeting('domena', ""+window.top.location.hostname+""); + +var + adviewKW = []; + +if(typeof window.gExVariation !== 'undefined') { + adviewKW.push('testyab_' + gExVariation); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push('kw|testyab_' + gExVariation); +} +if (/\/2,|\/14,/.test(window.location.href)) { + adviewKW.push('relacja'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push('kw|relacja'); +} +if (/\/15,/.test(window.location.href)) { + adviewKW.push('quiz-new'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push('kw|quiz-new'); +} +if (/\/13,/.test(window.location.href)) { + adviewKW.push('quiz-old'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push('kw|quiz-old'); +} +if (/\/5,/.test(window.location.href)) { + adviewKW.push('jsp-5'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push('kw|jsp-5'); +} +if (/\/51,/.test(window.location.href)) { + adviewKW.push('jsp-51'); + if (window.adviewDFP && adviewDFP.DFPTargeting) adviewDFP.DFPTargeting.push('kw|jsp-51'); +} +if (typeof adviewKW !== 'undefined' && adviewKW.length) { + googletag.pubads().setTargeting('kw', adviewKW); +} + + + + + + + + + + + + + + + + + + + + + + if(window.AG.rodoAccepted === -1) { + googletag.pubads().setRequestNonPersonalizedAds(1); + } + + googletag.pubads().enableSingleRequest(); + googletag.pubads().enableSyncRendering(); + googletag.pubads().collapseEmptyDivs(); + <!-- IBA Analytics --> + googletag.pubads().addEventListener('slotRenderEnded', function(data) { + adviewDFP.adviewRendered(data); + if(typeof IBA != 'undefined' && typeof IBA.dfp != 'undefined') IBA.dfp.onSlotRendered(data); + }); + if(window.AG.rodoAccepted !== 0) { + googletag.enableServices(); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + }); + + function putBanDFP(a,b,c,d){if(!b||"string"!=typeof b)return!1;if(!dfpParams.slots[a])return console.warn("dfpParams slot: "+a+" not exists"),!1;var e=window.location.protocol+"//"+window.location.host+"/dfptools/adview/",f=e+dfpParams.slots[a].url;c&&"object"==typeof c&&(f=f.replace(/adUnitSize=\[\[(.*?)\]]/g,"adUnitSize="+JSON.stringify(c))),d&&"string"==typeof d&&(f+="&addKeysKw="+d),adviewDFP.iframeBan(b,f,e+"autoslot.js",0,0)}function putBanDFPInView(a,b,c,d){var e=parseInt(c)?parseInt(c):300;adviewDFP.DFPTargeting.push("kw|oldScroll"),window.addEventListener("scroll",function(){adviewDFP.isElementInViewport(b,e)&&(putBanDFP(a,b,d),this.removeEventListener("scroll",arguments.callee,!1))})}function putBanDFPInViewObject(a){if(!a.slot||!a.divId)return a.slot||console.warn("Slot ID is empty"),a.divId||console.warn("divId id empty"),!1;"021-IMK"!==a.slot&&"067-RECTANGLE-BTF"!==a.slot&&"035-RECTANGLE-BTF"!==a.slot||(a.margin=parseInt(adviewDFP.randomMargin),a.kw?a.kw+=", margin_"+adviewDFP.randomMargin:a.kw="margin_"+adviewDFP.randomMargin);var b=parseInt(a.margin)?parseInt(a.margin):300;window.addEventListener("scroll",function(){adviewDFP.isElementInViewport(a.divId,b)&&(putBanDFP(a.slot,a.divId,a.unitSize,a.kw),this.removeEventListener("scroll",arguments.callee,!1))})}function putBan(){}var adviewDFP=adviewDFP||{};adviewDFP.scrollSlot=[],adviewDFP.DFPTargeting=adviewDFP.DFPTargeting||[],adviewDFP.allSlotsForRODO=[],adviewDFP.arrayLabel=["001-TOPBOARD","003-RECTANGLE","000-MAINBOARD","042-FOOTBOARD","087-ADBOARD-A","071-WINIETA","004-PAYPER","007-CONTENTBOARD","021-IMK","059-BUTTON","078-STYLBOARD","044-BIZBOARD","035-RECTANGLE-BTF","067-RECTANGLE-BTF","101-TOPBOARD-MOBI","104-RECTANGLE-MOBI","107-MAINBOARD-MOBI","150-BIZBOARD-MOBI","151-FUNBOARD-MOBI","152-STYLBOARD-MOBI","153-MOTOBOARD-MOBI","150-ADBOARD-A-MOBI","150-ADBOARD-B-MOBI","150-ADBOARD-C-MOBI","150-ADBOARD-D-MOBI","108-FOOTBOARD-MOBI","000-SPORTBOARD","076-MAINBUTTON-0","111-BIZBUTTON","076-MAINBUTTON","116-SPORTBUTTON"],adviewDFP.check=!0,adviewDFP.init=function(){var a=setInterval(function(){if("complete"===document.readyState){clearInterval(a);var b=document.getElementsByClassName("activeBan"),c=document.getElementsByTagName("body")[0];-1!==window.navigator.userAgent.indexOf("Firefox")&&adviewDFP.firefox(),adviewDFP.check&&adviewDFP.checkAgain(),adviewDFP.checkBan(),adviewDFP.adBlock();for(var d=0;d<b.length;d++){var e=b[d],f=[parseInt(e.getAttribute("data-ad-width")),parseInt(e.getAttribute("data-ad-height"))];if(1===f[0]&&(f=[e.scrollWidth,e.scrollHeight]),"007-CONTENTBOARD"!==e.id||750!==f[0]||"pageTypeId_7"!==c.id&&"pageTypeId_1"!==c.id||-1!==window.location.href.indexOf("0,0.")?"007-CONTENTBOARD"!==e.id||750===f[0]||"pageTypeId_7"!==c.id&&"pageTypeId_1"!==c.id||adviewDFP.cleanWideContentBoard(e.id):adviewDFP.wideContentBoard(e.id,f),("pageTypeId_7"===c.id||"pageTypeId_1"===c.id)&&"007-CONTENTBOARD"===e.id){750!==document.getElementById("div-gpt-ad-007-CONTENTBOARD-0").clientWidth&&adviewDFP.cleanWideContentBoard(e.id)}}}},100)},adviewDFP.adviewRendered=function(a){var b=a.slot,c=null;Object.keys(b).map(function(a,d){var e=b[a];"string"==typeof e&&e.length&&-1!==e.indexOf("/75224259/")&&(c=e)}),"string"==typeof c&&c.length||console.warn("DFP slot is empty");var d=/[0-9]{3}-(.+)/,e=d.exec(c)[0],f=document.getElementById(e),g=document.getElementById("div-gpt-ad-"+e+"-0"),h=f.getElementsByTagName("span")[0],i=f.getElementsByTagName("iframe")[0],j=document.getElementsByTagName("body")[0];if(void 0!==window.top.dfpRendered&&window.top.dfpRendered({active:a.isEmpty,id:e,height:a.size?a.size[1]:"creative"}),a.isEmpty)return!1;-1===f.className.indexOf("activeBan")&&(f.className+=" activeBan"),f.setAttribute("data-ad-width",a.size[0]),f.setAttribute("data-ad-height",a.size[1]),a.size[0]>10&&(g.style.maxWidth=a.size[0]+"px",h.style.maxWidth=a.size[0]+"px"),h.style.marginLeft="auto",h.style.marginRight="auto",window.dfpParams.adsType&&window.dfpParams.adsType.scrollBanner&&adviewDFP.setClassToBody("scrollBannerDFP"),adviewDFP.setLabel(f),dfpParams.iframeResponsive&&i.getAttribute("responsive-iframe")&&adviewDFP.setIframeResponsive(i),"007-CONTENTBOARD"!==e||750!==a.size[0]||"pageTypeId_7"!==j.id&&"pageTypeId_1"!==j.id||-1!==window.location.href.indexOf("0,0.")?"007-CONTENTBOARD"!==ban.id||750===banSize[0]||"pageTypeId_7"!==j.id&&"pageTypeId_1"!==j.id||adviewDFP.cleanWideContentBoard(e):adviewDFP.wideContentBoard(e,a.size),"071-WINIETA"===e&&-1!==adviewDFP.arrayLabel.indexOf(e)&&adviewDFP.setWinieta()},adviewDFP.setClassToBody=function(a){var b=document.getElementsByTagName("body")[0];-1===b.className.indexOf(a)&&(b.className+=" "+a)},adviewDFP.wideContentBoard=function(a,b){var c=document.getElementById(a),d=document.getElementById("div-gpt-ad-"+a+"-0"),e=c.getElementsByClassName("banLabel")[0];-1===c.className.indexOf("wideContentBoard")&&(c.className+=" wideContentBoard"),c.style.marginBottom="30px",c.style.height=b[1]+e.clientHeight+"px",d.style.position="absolute",d.style.right=0},adviewDFP.cleanWideContentBoard=function(a){var b=document.getElementById(a),c=document.getElementById("div-gpt-ad-"+a+"-0");b.style.cssText="",c.style.cssText="",b.classList.remove("wideContentBoard")},adviewDFP.setWinieta=function(){var a=document.getElementById("pageHead"),b=document.createElement("span");b.className="banLabel winieta-lab",b.appendChild(document.createTextNode("REKLAMA")),a.appendChild(b)},adviewDFP.checkBan=function(){for(var a=document.getElementsByClassName("adviewDFPBanner"),b=0;b<a.length;b++){var c=a[b];c.offsetHeight>40&&adviewDFP.setLabel(c)}},adviewDFP.setLabel=function(a){var b=a,c=b.getElementsByClassName("banLabel")[0];if(c){if(-1!==adviewDFP.arrayLabel.indexOf(b.id)&&b.offsetHeight>40){c.style.display="block";for(var d=b.getElementsByTagName("*"),e=0,f=0;f<d.length;f++){var g=d[f],h=parseInt(g.style.width);h&&h>e?e=h:parseInt(g.width)&&parseInt(g.width)>e&&(e=g.width)}c.style.maxWidth=e+"px"}"undefined"!=typeof abp&&abp&&-1===b.className.indexOf("adblock")&&(b.className+=" adblock"),-1===b.className.indexOf("activeBan")&&b.offsetHeight>40&&(b.className+=" activeBan")}},adviewDFP.firefox=function(){var a=document.getElementsByClassName("banIndexDFP")[0];a&&(a.style.display="block",setTimeout(function(){"0px"===a.getElementsByTagName("iframe")[0].style.height&&a.parentNode.removeChild(a)},500))},adviewDFP.adBlock=function(){for(var a=["div-001-TOPBOARD-ABP","div-003-RECTANGLE-ABP","div-000-MAINBOARD-ABP","div-087-ADBOARD-A-ABP","div-087-ADBOARD-B-ABP","div-111-BIZBUTTON-ABP"],b=0;b<a.length;b++){var c=document.getElementById(a[b]);if(c&&c.clientHeight>40){var d=document.createElement("span");d.className="banLabel",d.appendChild(document.createTextNode("Reklama")),c.insertBefore(d,c.getElementsByTagName("div")[0]),-1===c.className.indexOf("activeBan")&&(c.className+="activeBan")}}},adviewDFP.iframeBan=function(a,b,c,d,e){if(!a)return!1;for(var f=document,g=f.getElementById(a);g.hasChildNodes();)g.removeChild(g.lastChild);var h=f.createElement("iframe"),i=f.createElement("div");i.className="fifContainer fif-container-"+a,h.src=b,h.style.width=d+"px",h.style.height=e+"px",h.style.margin=0,h.style.borderWidth=0,h.style.padding=0,h.scrolling="no",h.frameBorder=0,h.allowTransparency=!0,h.className="banDfpFIF",h.id=a+"_FIF",h.EAS_src=c,h.setAttribute("data-type","fif"),i.appendChild(h),g.appendChild(i)},adviewDFP.checkAgain=function(){setTimeout(function(){adviewDFP.checkBan()},3e3)},adviewDFP.onElementHeightChange=function(a,b){var c,d=a.clientHeight;!function e(){c=a.clientHeight,d!=c&&b(c),d=c,a.onElementHeightChangeTimer&&clearTimeout(a.onElementHeightChangeTimer),a.onElementHeightChangeTimer=setTimeout(e,200)}()},adviewDFP.scrollRect=function(){var a=document.getElementById("col_left");if(!a)return!1;var b=a.clientHeight,c=document.getElementById("col_right"),d=document.getElementById("holder_301"),e=document.getElementsByTagName("body")[0];c.style.minHeight=b+"px",d.style.minHeight=b+"px",document.getElementById("page").style.overflow="initial",-1===e.className.indexOf("scroll035Rectangle")&&(e.className+=" scroll035Rectangle")},adviewDFP.findClosestClass=function(a,b){for(;(a=a.parentElement)&&!a.classList.contains(b););return a},adviewDFP.setIframeResponsive=function(a){var b=a,c=b.getAttribute("data-prop"),d=parseInt(b.getAttribute("width")),e=parseInt(b.contentWindow.document.body.clientWidth);document.getElementsByTagName("body")[0].className,parseInt(adviewDFP.findClosestClass(b,"adviewDFPBanner").getAttribute("data-ad-height"));if(c||(c=parseInt(b.getAttribute("height"))/d,b.setAttribute("data-prop",c)),e!=d){var f=Math.round(e*c);b.style.height=f+"px"}},adviewDFP.getMobileIframe=function(){var a=document.querySelectorAll('iframe[id^="google_ads_iframe"]');if(!a.length&&!dfpParams.iframeResponsive)return!1;for(var b=0;b<a.length;b++){var c=a[b];c.clientHeight>40&&c.getAttribute("responsive-iframe")&&adviewDFP.setIframeResponsive(c)}},adviewDFP.removeDefaultLabel=function(a){var b=adviewDFP.arrayLabel.indexOf(a);-1!==adviewDFP.arrayLabel&&adviewDFP.arrayLabel.splice(b,1)},adviewDFP.isElementInViewport=function(a,b){var c=document.getElementById(a);if(!c)return console.warn('(DFP) ID: "'+a+'" not exists'),!1;var d=c.getBoundingClientRect();return b=b?Number(b):300,d.bottom>0&&d.right>0&&d.left<(window.innerWidth||document.documentElement.clientWidth)&&d.top<(window.innerHeight||document.documentElement.clientHeight)+b},window.onresize=function(){document.getElementsByTagName("body")[0];dfpParams.iframeResponsive&&adviewDFP.getMobileIframe()},adviewDFP.init(),document.addEventListener("DOMContentLoaded",function(){document.getElementsByTagName("body")[0].className+=" dfp-"+dfpParams.dir,adviewDFP.randomLoadMargin(),dfpParams.isMobile||-1!==window.location.href.indexOf("wyborcza.pl")||document.getElementById("content_wrap")&&(adviewDFP.scrollRect(),adviewDFP.onElementHeightChange(document.getElementById("content_wrap"),function(){-1===window.location.href.indexOf("bryla.pl")&&adviewDFP.scrollRect()})),adviewDFP.scrollSlot.forEach(function(a){putBanDFPInViewObject({slot:a,divId:a})},this)}),adviewDFP.randomLoadMargin=function(){var a=[0,100,200,300,400,500,600,700,800,900,1e3];adviewDFP.randomMargin=a[Math.floor(Math.random()*a.length)]},adviewDFP.setAdsForRodo=function(){};var head=document.head||document.getElementsByTagName("head")[0],style=document.createElement("style"),css=".innerContentWrapper button:nth-of-type(2){ display: {%VALUE%} !important; }";css=-1!==window.location.href.indexOf("ugotuj.to")||-1!==window.location.href.indexOf("sport.pl")?css.replace("{%VALUE%}","block"):css.replace("{%VALUE%}","none"),style.type="text/css",style.styleSheet?style.styleSheet.cssText=css:style.appendChild(document.createTextNode(css)),head.appendChild(style); + + + + + + + + + + + + + + + + // [HB] Core-prod-4 - HEADER_END +var _sts = new Date(); +var _sleeptime = PREBID_TIMEOUT - (_sts - _st0); +if(_sleeptime > 0){ + document.write('<scr'+'ipt type="text/javascript" src="https://g.gazeta.pl/przerwa?ttl=' + _sleeptime + '"></scr'+'ipt>'); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + if(lazyGPT) { + + (function() { + var useSSL = 'https:' == document.location.protocol; + var src = (useSSL ? 'https:' : 'http:') + + '//www.googletagservices.com/tag/js/gpt.js'; + document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>'); + })(); + } + + </script> + + + + + + +<style type="text/css">.adviewDFPBanner{text-align:center}.banLabel{text-transform:uppercase;margin-top:6px;font:normal 10px Arial,sans-serif;padding-bottom:2px;text-align:left;color:#999}.adviewDFPBanner.activeBan,.adviewDFPBanner.activeBan .banLabel{display:block}.adviewDFPBanner.activeBan{padding:5px 0}.adviewDFPBanner.activeBan>div{margin-left:auto;margin-right:auto}body.screeningLabel-001-TOPBOARD .DFP-001-TOPBOARD{padding-top:5px}body.screeningLabel-001-TOPBOARD .DFP-001-TOPBOARD .banLabel{position:absolute;top:35px;left:10px;max-width:none!important}@media screen and (max-width:1320px){body#pageTypeId_7.screeningLabel-001-TOPBOARD .DFP-001-TOPBOARD{position:relative}body#pageTypeId_7.screeningLabel-001-TOPBOARD .DFP-001-TOPBOARD .banLabel{top:0;left:-53px}}.adviewDFPBanner.activeBan a:hover{background:0 0!important}.DFP-007-CONTENTBOARD{width:100%;position:relative}body.winieta #page-top:not(.fixed){position:relative}body.winieta #page-top:not(.fixed) #pageHead .imgw img{position:absolute;top:0;left:0;z-index:2}body.winieta #page-top:not(.fixed) #pageHead.hasBanner{min-height:90px}#pageHead.hasBanner .banLabel{position:absolute;top:20px;right:-40px;padding:3px 5px;margin:0;transform:rotate(-90deg);background:#fff}body.dfp-forum #pageHead.hasBanner .banLabel{right:-36px}body.dfp-forum.winieta{width:auto!important}#pageHead.hasBanner .column.col1{display:inline-block;position:relative;z-index:2;height:100%}body.dfp-gazetawyborcza #pageHead.hasBanner .c0{top:40px;position:absolute}.DFP-091-RELATED .kd_ns_logo{background:0 0!important;width:auto!important;height:auto!important;margin:auto!important}#div-gpt-ad-091-RELATED-0{max-width:100%!important}body.screeningADFP #page{position:initial}.isScreening #page-top{cursor:pointer}body.screeningADFP.desk .DFP-001-TOPBOARD.activeBan{background:0 0}body.scrollBannerDFP .DFP-001-TOPBOARD .banLabel{position:absolute}#article-list .banner,.indexBanner,div.banIndexDFP,li.banIndexDFP,li.entry.banIndexDFP{display:none}div[id*="-MOBI"].adviewDFPBanner a img{width:100%;height:auto}div[id*="-MOBI"].adviewDFPBanner iframe[responsive-iframe=true]{max-width:100%;width:100%!important;height:auto}body.dfp-mobiHP .banLabel,body.dfp-mobiHP div[id*=div-gpt-ad-]{max-width:100%!important}.dfp-video-bg #page{overflow:initial}.dfp-video-bg .photostoryNextPage,.dfp-video-bg .photostoryPrevPage{z-index:1!important}#div-001-TOPBOARD-ABP .banLabel,#div-003-RECTANGLE-ABP .banLabel{display:block!important}body.scroll035Rectangle .DFP-035-RECTANGLE-BTF{position:sticky!important;position:-webkit-sticky!important;position:-moz-sticky!important;top:40px!important}body.socialContent .DFP-001-TOPBOARD,body.socialContent .DFP-101-TOPBOARD-MOBI{position:relative}body.socialContent .DFP-001-TOPBOARD.activeBan .banLabel,body.socialContent .DFP-101-TOPBOARD-MOBI.activeBan .banLabel{width:100%;position:absolute;left:0;top:0;margin:0;padding:10px;box-sizing:border-box;font-family:Roboto,sans-serif;font-size:8px;letter-spacing:.7px;max-width:none!important;background:-webkit-linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,0));background:-o-linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,0));background:-moz-linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,0));background:linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,0))}body.socialContent .DFP-007-CONTENTBOARD .banLabel,body.socialContent .DFP-104-RECTANGLE-MOBI .banLabel{display:none!important}body.socialContent .DFP-101-TOPBOARD-MOBI>div,body.socialContent .DFP-104-RECTANGLE-MOBI>div{max-width:none!important}body[id^=pageTypeId_0] .adviewDFPBanner.activeBan,body[id^=pageTypeId_56] .adviewDFPBanner.activeBan,body[id^=pageTypeId_7] .adviewDFPBanner.activeBan{margin-bottom:30px;padding-bottom:0}.desk .adviewDFPBanner.DFP-001-TOPBOARD.activeBan{margin-bottom:15px}body.alternative .adviewDFPBanner.activeBan{padding-top:0!important;padding-bottom:20px!important;margin-top:0!important;margin-bottom:0!important}body.alternative .adviewDFPBanner.activeBan .banLabel{padding-top:15px!important;padding-bottom:10px!important;margin-top:0!important;margin-bottom:0!important}body.alternative .DFP-003-RECTANGLE.adviewDFPBanner.activeBan .banLabel{padding-top:0!important}body.alternative .article .adviewDFPBanner.activeBan{margin-bottom:20px!important}body.alternative .DFP-035-RECTANGLE-BTF,body.alternative .DFP-067-RECTANGLE-BTF{position:sticky;top:30px}#banC1.activeBan,#banC2.activeBan,#banC3.activeBan,#banC4.activeBan,#banC9.activeBan{position:relative}#banC1.wideContentBoard>iframe,#banC2.wideContentBoard>iframe,#banC3.wideContentBoard>iframe,#banC4.wideContentBoard>iframe,#banC9.wideContentBoard>iframe{position:absolute;right:0}#article_body #banC1.wideContentBoard iframe,#article_body #banC2.wideContentBoard iframe,#article_body #banC3.wideContentBoard iframe,#article_body #banC4.wideContentBoard iframe,#article_body #banC9.wideContentBoard iframe{max-width:initial}.DFP-201-PREMIUMBOARD-MOBI.activeBan,.DFP-201-PREMIUMBOARD.activeBan{display:none}@media screen and (orientation:portrait){div.oaoa__interstitial{height:100%!important}}@media all and (max-width:330px){.responsive .adviewDFPBanner.activeBan{padding-left:0!important;padding-right:0!important}}.DFP-019-TOPLAYER{margin:0!important}body.path_sport-hp .DFP-087-ADBOARD-A{position:relative;z-index:9}body.path_sport-hp .DFP-087-ADBOARD-A .banLabel{background:linear-gradient(rgba(255,255,255,0),#fff)}body.path_sport-hp .DFP-087-ADBOARD-A:before{content:"";position:absolute;bottom:-7px;left:0;width:100%;height:13px;background:linear-gradient(#fff,rgba(255,255,255,0))}.desk.screeningADFP.none #content #content_wrap{margin-top:0!important}body.screeningADFP.dfp-czterykaty #bottom_wrapper,body.screeningADFP.dfp-czterykaty #main_wrapper,body.screeningADFP.dfp-czterykaty #top_wrapper,body.screeningADFP.dfp-czterykaty .aside_wrapper{max-width:1242px;margin:0 auto}.fifContainer{font-size:.1px;line-height:0}.DFP-113-LOKALBUTTON{overflow:visible!important}</style> +<!-- v2.6 --> +
+
+<!-- v2.8 adapter biznes /biznes-->
+ +<!--10185226, [ /tpl/ads/prod/dfpHeader.jsp ], dfpBanersHeaderBean--> +
+
+
+
+
+<!-- facebookConnect v1.41 -->
+
+
+
+
+
+
+<!--[if IE]><script>(function(t) { for (var i = 0, l = t.length; i < l; i++) document.createElement(t[i]); })(['fb','og']);</script><![endif]-->
+
+
+
+ <div id="fb-root"></div>
+ <script>
+ window.gazeta_pl = window.gazeta_pl || {};
+ window.gazeta_pl.functionQueue = window.gazeta_pl.functionQueue || [];
+ window.gazeta_pl.functionQueue.push(function(){
+ setTimeout(function() {
+ (function(d){
+ var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
+ js = d.createElement('script'); js.id = id; js.async = true;
+ js.src = "//connect.facebook.net/pl_PL/all.js";
+ d.getElementsByTagName('head')[0].appendChild(js);
+ }(document));
+ }, 2000);
+ function facebookReady(){
+ FB.init({
+ appId : 515714931781741,
+ status : true,
+ cookie : true,
+ xfbml : true,
+ oauth : true,
+ version: 'v2.2'
+ });
+ }
+ if(window.FB) {
+ facebookReady();
+ } else {
+ window.fbAsyncInit = facebookReady;
+ }
+ });
+ </script>
+
+
+ +<!--9638937, [ /fix/modules/facebook/facebookConnect.jsp ], null--> +
+</head>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<body id="pagetype_art" class=" awd path_147743 path_biznes simpleArt unknown Other unknown LINUX ">
+
+ <!-- pattern#ms - Article 7 - app18:tomcat-wyborcza: - - 3200118 - s3200007_P20_wyb_2017_desk.jsp - v1.0.1 -->
+
+
+
+<!-- WyborczaSVG version: 17.0.28 compiled: 2018-08-28 10:52:39 --> <svg id="svgicons" style="display:block;width:0;height:0;"><symbol id="admin-censore" viewBox="0 0 19.5 19.5"><path d="M438,444.25a9.75,9.75,0,1,1,9.75-9.75A9.76,9.76,0,0,1,438,444.25Zm0-17a7.25,7.25,0,1,0,7.25,7.25A7.26,7.26,0,0,0,438,427.25Z" transform="translate(-428.25 -424.75)"/><path d="M430.52,436.84L443.74,429l1.59,2.71-13.22,7.81Z" transform="translate(-428.25 -424.75)"/></symbol><symbol id="admin-clear" viewBox="0 0 19.63 16.99"><path d="M446.86,418.74v-2h-2.61l-6.12-6.22-4.76,4.71h0l-1.41,1.41h0l-4.71,4.66,6.12,6.22,4.76-4.71h0l1.41-1.41h0l2.68-2.65h4.64Zm-13.48,5.51-2.9-2.94,3.09-3.06,2.92,2.92Zm4.53-4.48L435,416.85l3.11-3.08,2.9,2.94Z" transform="translate(-427.24 -410.51)"/></symbol><symbol id="admin-delete" viewBox="0 0 166.86 170"><polygon points="73.5 170 0 170 0 31.87 30.6 0 141 0 141 86.28 118 86.28 118 23 40.4 23 23 41.13 23 147 73.5 147 73.5 170"/><rect x="33.5" y="40.5" width="75" height="13"/><rect x="33.5" y="65.5" width="75" height="13"/><polygon points="166.86 158.06 140.19 132.39 166.86 104.71 155.67 93.53 129 120.2 102.33 93.53 91.14 104.71 117.81 131.39 91.14 158.06 102.33 169.25 129 142.57 155.67 169.25 166.86 158.06"/></symbol><symbol id="admin-expose" viewBox="0 0 36.54 34.75"><polygon points="18.27 0 23.92 11.44 36.54 13.27 27.41 22.18 29.56 34.75 18.27 28.81 6.98 34.75 9.13 22.18 0 13.27 12.62 11.44 18.27 0"/></symbol><symbol id="admin-publish" viewBox="0 0 19.5 19.5"><polygon points="14.44 8.91 10.59 8.91 10.59 5.06 8.91 5.06 8.91 8.91 5.06 8.91 5.06 10.59 8.91 10.59 8.91 14.44 10.59 14.44 10.59 10.59 14.44 10.59 14.44 8.91"/><path d="M423,489.33a9.75,9.75,0,1,1,9.75-9.75A9.75,9.75,0,0,1,423,489.33Zm0-17a7.25,7.25,0,1,0,7.25,7.25h0A7.26,7.26,0,0,0,423,472.33Z" transform="translate(-413.25 -469.83)"/></symbol><symbol id="admin-undo-expose" viewBox="0 0 16 13.99"><polygon points="16 2.54 6.47 2.54 7.38 1.5 6.08 0 0 7 1.3 8.49 1.3 8.49 6.08 13.99 7.38 12.49 6.47 11.45 16 11.45 16 2.54"/></symbol><symbol id="app-store" viewBox="0 0 135 40"><g><path class="store-frame" d="m130.2 40h-125.47c-2.608 0-4.73-2.128-4.73-4.733v-30.541c0-2.606 2.122-4.726 4.729-4.726h125.47c2.6 0 4.8 2.12 4.8 4.726v30.541c0 2.605-2.2 4.733-4.8 4.733z" fill="#A6A6A6"/><path d="m134.03 35.268c0 2.116-1.714 3.83-3.834 3.83h-125.47c-2.119 0-3.839-1.714-3.839-3.83v-30.543c0-2.115 1.72-3.835 3.839-3.835h125.47c2.121 0 3.834 1.72 3.834 3.835v30.543z" class="store-bkg"/></g><g fill="#fff"><path d="m30.128 19.795c-0.029-3.223 2.639-4.791 2.761-4.864-1.511-2.203-3.853-2.504-4.676-2.528-1.967-0.207-3.875 1.177-4.877 1.177-1.022 0-2.565-1.157-4.228-1.123-2.14 0.033-4.142 1.272-5.24 3.196-2.266 3.923-0.576 9.688 1.595 12.858 1.086 1.553 2.355 3.287 4.016 3.226 1.625-0.067 2.232-1.036 4.193-1.036 1.943 0 2.513 1.036 4.207 0.997 1.744-0.028 2.842-1.56 3.89-3.127 1.255-1.78 1.759-3.533 1.779-3.623-0.04-0.013-3.386-1.29-3.42-5.153z"/><path d="m26.928 10.317c0.874-1.093 1.472-2.58 1.306-4.089-1.265 0.056-2.847 0.875-3.758 1.944-0.806 0.942-1.526 2.486-1.34 3.938 1.421 0.106 2.88-0.716 3.792-1.793z"/></g><g fill="#fff"><path d="m53.646 31.516h-2.271l-1.244-3.91h-4.324l-1.185 3.91h-2.211l4.284-13.308h2.646l4.305 13.308zm-3.89-5.549l-1.125-3.475c-0.119-0.355-0.342-1.191-0.671-2.508h-0.04c-0.131 0.566-0.342 1.402-0.632 2.508l-1.105 3.475h3.573z"/><path d="m64.663 26.599c0 1.632-0.441 2.923-1.323 3.87-0.79 0.842-1.771 1.264-2.942 1.264-1.264 0-2.172-0.455-2.725-1.363h-0.04v5.055h-2.132v-10.347c0-1.026-0.027-2.079-0.079-3.158h1.875l0.119 1.52h0.04c0.711-1.145 1.79-1.717 3.238-1.717 1.132 0 2.077 0.447 2.833 1.342 0.757 0.895 1.136 2.073 1.136 3.534zm-2.172 0.079c0-0.935-0.21-1.705-0.632-2.311-0.461-0.631-1.08-0.947-1.856-0.947-0.526 0-1.004 0.175-1.431 0.523-0.428 0.349-0.708 0.807-0.839 1.372-0.066 0.264-0.099 0.48-0.099 0.651v1.6c0 0.697 0.214 1.287 0.642 1.768s0.984 0.721 1.668 0.721c0.803 0 1.428-0.311 1.875-0.928 0.448-0.619 0.672-1.436 0.672-2.449z"/><path d="m75.7 26.599c0 1.632-0.441 2.923-1.324 3.87-0.789 0.842-1.77 1.264-2.941 1.264-1.264 0-2.172-0.455-2.725-1.363h-0.039v5.055h-2.132v-10.347c0-1.026-0.027-2.079-0.079-3.158h1.875l0.119 1.52h0.04c0.711-1.145 1.789-1.717 3.238-1.717 1.131 0 2.076 0.447 2.834 1.342 0.755 0.895 1.134 2.073 1.134 3.534zm-2.172 0.079c0-0.935-0.211-1.705-0.633-2.311-0.461-0.631-1.078-0.947-1.855-0.947-0.527 0-1.004 0.175-1.432 0.523s-0.707 0.807-0.839 1.372c-0.065 0.264-0.099 0.48-0.099 0.651v1.6c0 0.697 0.214 1.287 0.641 1.768 0.428 0.48 0.984 0.721 1.67 0.721 0.803 0 1.428-0.311 1.875-0.928 0.448-0.619 0.672-1.436 0.672-2.449z"/><path d="m88.04 27.783c0 1.133-0.394 2.053-1.182 2.764-0.867 0.777-2.075 1.166-3.625 1.166-1.432 0-2.581-0.277-3.449-0.83l0.494-1.777c0.935 0.566 1.962 0.85 3.081 0.85 0.804 0 1.429-0.182 1.877-0.543 0.447-0.363 0.671-0.848 0.671-1.455 0-0.539-0.185-0.994-0.553-1.363s-0.98-0.713-1.836-1.029c-2.33-0.869-3.495-2.143-3.495-3.816 0-1.094 0.408-1.991 1.225-2.69 0.815-0.699 1.901-1.048 3.258-1.048 1.211 0 2.218 0.211 3.021 0.632l-0.533 1.738c-0.75-0.408-1.599-0.612-2.547-0.612-0.75 0-1.336 0.185-1.757 0.553-0.355 0.329-0.533 0.73-0.533 1.204 0 0.526 0.204 0.961 0.612 1.304 0.355 0.315 1 0.658 1.935 1.026 1.146 0.461 1.987 1.001 2.527 1.618s0.809 1.387 0.809 2.308z"/><path d="m95.088 23.519h-2.35v4.659c0 1.186 0.415 1.777 1.244 1.777 0.382 0 0.697-0.033 0.948-0.098l0.059 1.619c-0.421 0.156-0.974 0.236-1.658 0.236-0.843 0-1.501-0.258-1.975-0.77-0.474-0.514-0.711-1.377-0.711-2.588v-4.837h-1.401v-1.597h1.401v-1.758l2.093-0.632v2.39h2.35v1.599z"/><path d="m105.69 26.639c0 1.475-0.422 2.686-1.264 3.633-0.882 0.975-2.054 1.461-3.515 1.461-1.409 0-2.53-0.467-3.366-1.402-0.836-0.934-1.254-2.113-1.254-3.533 0-1.488 0.431-2.705 1.293-3.653s2.024-1.421 3.485-1.421c1.408 0 2.54 0.467 3.396 1.401 0.8 0.907 1.21 2.078 1.21 3.514zm-2.21 0.068c0-0.885-0.19-1.643-0.572-2.277-0.447-0.766-1.086-1.148-1.915-1.148-0.856 0-1.508 0.383-1.955 1.148-0.382 0.635-0.572 1.406-0.572 2.317 0 0.885 0.19 1.644 0.572 2.276 0.461 0.766 1.105 1.148 1.936 1.148 0.815 0 1.454-0.389 1.915-1.168 0.38-0.646 0.58-1.411 0.58-2.296z"/><path d="m112.62 23.795c-0.211-0.039-0.435-0.059-0.671-0.059-0.751 0-1.33 0.283-1.738 0.849-0.355 0.501-0.533 1.132-0.533 1.896v5.035h-2.132l0.02-6.575c0-1.106-0.026-2.112-0.079-3.021h1.856l0.079 1.836h0.059c0.224-0.632 0.579-1.139 1.066-1.521 0.474-0.343 0.987-0.513 1.54-0.513 0.197 0 0.375 0.013 0.533 0.039v2.034z"/><path d="m122.16 26.264c0 0.381-0.026 0.703-0.079 0.967h-6.396c0.025 0.947 0.335 1.672 0.928 2.172 0.539 0.447 1.237 0.672 2.093 0.672 0.947 0 1.81-0.152 2.587-0.455l0.335 1.48c-0.908 0.396-1.981 0.594-3.218 0.594-1.488 0-2.656-0.438-3.505-1.314-0.849-0.875-1.273-2.049-1.273-3.523 0-1.447 0.395-2.652 1.185-3.613 0.829-1.027 1.948-1.54 3.356-1.54 1.382 0 2.429 0.513 3.14 1.54 0.55 0.815 0.84 1.821 0.84 3.02zm-2.04-0.553c0.013-0.633-0.126-1.179-0.415-1.64-0.368-0.593-0.935-0.888-1.698-0.888-0.697 0-1.264 0.289-1.697 0.868-0.355 0.461-0.566 1.014-0.632 1.659h4.45z"/></g><g fill="#fff"><path d="m47.867 8.808c0 0.602-0.178 1.083-0.533 1.445-0.459 0.472-1.129 0.708-2.008 0.708-0.259 0-0.46-0.016-0.602-0.048v2.532h-1.048v-6.451c0.499-0.09 1.069-0.136 1.711-0.136 0.83 0 1.455 0.178 1.877 0.534 0.402 0.349 0.603 0.821 0.603 1.416zm-1.048 0.048c0-0.382-0.122-0.674-0.366-0.878-0.245-0.204-0.586-0.306-1.023-0.306-0.29 0-0.525 0.02-0.705 0.058v2.348c0.147 0.039 0.351 0.058 0.608 0.058 0.463 0 0.827-0.113 1.091-0.339s0.395-0.54 0.395-0.941z"/><path d="m53.727 11.048c0 0.725-0.207 1.319-0.621 1.785-0.434 0.479-1.009 0.718-1.727 0.718-0.692 0-1.243-0.229-1.654-0.689-0.41-0.459-0.615-1.038-0.615-1.736 0-0.73 0.211-1.329 0.635-1.794s0.994-0.698 1.712-0.698c0.692 0 1.248 0.229 1.669 0.688 0.399 0.446 0.601 1.022 0.601 1.726zm-1.087 0.035c0-0.435-0.094-0.808-0.281-1.119-0.22-0.376-0.533-0.564-0.94-0.564-0.421 0-0.741 0.188-0.961 0.564-0.188 0.311-0.281 0.69-0.281 1.138 0 0.435 0.094 0.808 0.281 1.119 0.227 0.376 0.543 0.564 0.951 0.564 0.4 0 0.714-0.191 0.94-0.574 0.194-0.318 0.291-0.694 0.291-1.128z"/><path d="m59.769 11.02c0 0.795-0.22 1.429-0.659 1.901-0.388 0.42-0.863 0.631-1.426 0.631-0.673 0-1.168-0.278-1.484-0.834h-0.02l-0.058 0.728h-0.893c0.025-0.381 0.038-0.805 0.038-1.271v-5.608h1.048v2.852h0.02c0.311-0.524 0.812-0.786 1.504-0.786 0.568 0 1.032 0.218 1.392 0.655 0.358 0.437 0.538 1.014 0.538 1.732zm-1.067 0.038c0-0.459-0.104-0.834-0.311-1.125-0.227-0.317-0.534-0.476-0.922-0.476-0.259 0-0.491 0.084-0.698 0.252s-0.346 0.391-0.417 0.669c-0.026 0.11-0.039 0.22-0.039 0.33v0.824c0 0.324 0.108 0.602 0.325 0.834s0.486 0.349 0.81 0.349c0.395 0 0.702-0.148 0.922-0.446 0.22-0.296 0.33-0.7 0.33-1.211z"/><path d="m62.485 7.324c0 0.188-0.062 0.339-0.184 0.456-0.123 0.117-0.281 0.175-0.476 0.175-0.175 0-0.322-0.06-0.441-0.179-0.12-0.12-0.18-0.27-0.18-0.451s0.062-0.33 0.185-0.446 0.274-0.175 0.456-0.175c0.181 0 0.333 0.059 0.456 0.175 0.123 0.115 0.184 0.264 0.184 0.445zm-0.116 6.12h-1.048v-4.714h1.048v4.714z"/><path d="m68.111 10.864c0 0.188-0.014 0.346-0.039 0.475h-3.142c0.013 0.466 0.164 0.821 0.455 1.067 0.266 0.22 0.608 0.33 1.028 0.33 0.466 0 0.89-0.074 1.271-0.223l0.164 0.728c-0.446 0.194-0.973 0.291-1.581 0.291-0.73 0-1.305-0.215-1.722-0.645s-0.625-1.007-0.625-1.731c0-0.711 0.193-1.303 0.582-1.775 0.407-0.504 0.956-0.756 1.648-0.756 0.679 0 1.193 0.252 1.542 0.756 0.28 0.4 0.419 0.895 0.419 1.483zm-1-0.271c0.007-0.311-0.062-0.579-0.203-0.805-0.182-0.291-0.459-0.437-0.834-0.437-0.343 0-0.621 0.142-0.835 0.427-0.174 0.227-0.277 0.498-0.31 0.815h2.182z"/><path d="m72.126 9.652c-0.104-0.02-0.213-0.029-0.33-0.029-0.368 0-0.652 0.139-0.854 0.417-0.174 0.246-0.262 0.556-0.262 0.931v2.474h-1.048l0.01-3.23c0-0.543-0.013-1.038-0.038-1.484h0.911l0.039 0.902h0.029c0.109-0.311 0.284-0.56 0.523-0.747 0.233-0.168 0.485-0.252 0.757-0.252 0.097 0 0.185 0.006 0.262 0.019v0.999z"/><path d="m76.83 13.444h-3.841v-0.611l1.882-2.473c0.116-0.155 0.329-0.411 0.64-0.767v-0.019h-2.338v-0.844h3.608v0.65l-1.843 2.435c-0.207 0.265-0.42 0.521-0.64 0.766v0.02h2.531v0.843z"/><path d="m87.365 8.73l-1.475 4.714h-0.96l-0.611-2.047c-0.155-0.511-0.281-1.019-0.379-1.523h-0.019c-0.091 0.518-0.217 1.025-0.379 1.523l-0.649 2.047h-0.971l-1.386-4.714h1.077l0.533 2.241c0.129 0.53 0.235 1.035 0.32 1.513h0.019c0.078-0.394 0.207-0.896 0.389-1.503l0.669-2.25h0.854l0.641 2.202c0.155 0.537 0.281 1.054 0.378 1.552h0.029c0.071-0.485 0.178-1.002 0.32-1.552l0.572-2.202h1.028z"/></g></symbol><symbol id="arrow-back" viewBox="0 0 17 9"><path d="M0,4.5L5.7,0v2.2C15.9,2.2,17,7.9,17,9C14.7,4.5,6.8,6.8,5.7,6.8V9L0,4.5z"/></symbol><symbol id="bell" viewBox="0 0 32 32"><path d="M15.7,29.5c-2.8,0-4-1.9-4.2-2.9c-0.1-0.2,0.1-0.5,0.3-0.5c0.2-0.1,0.5,0.1,0.5,0.3
+ c0.2,0.8,1.1,2.2,3.4,2.2c2.3,0,3.2-1.4,3.4-2.2c0.1-0.2,0.3-0.4,0.5-0.3c0.2,0.1,0.4,0.3,0.3,0.5C19.7,27.6,18.5,29.5,15.7,29.5z"/><path d="M26.2,22.8c-1.2-1-3.7-3.1-3.7-7.7c0-4.2-1.6-6.5-2.9-7.6c-1.2-1.1-2.6-1.5-3.4-1.6V3.8
+ c0-0.2-0.2-0.4-0.4-0.4c-0.2,0-0.4,0.2-0.4,0.4v2.1c-0.8,0.1-2.2,0.5-3.4,1.6C10.5,8.7,9,10.9,9,15.1c0,4.5-2.5,6.6-3.7,7.7
+ c-0.5,0.5-0.9,0.7-0.7,1.1c0.2,0.5,0.7,0.5,2.4,0.5h17.7c1.7,0,2.2,0,2.4-0.5C27,23.5,26.7,23.3,26.2,22.8z M24.5,23.6H6.8
+ c-0.3,0-0.8,0-1.2,0c0,0,0.1-0.1,0.1-0.1c1.2-1,4.1-3.4,4.1-8.3c0-3.1,0.9-5.5,2.6-7c1.4-1.2,2.8-1.4,3.3-1.4
+ c0.5,0,1.9,0.3,3.3,1.4c1.7,1.5,2.6,3.8,2.6,7c0,4.9,2.8,7.3,4.1,8.3c0,0,0.1,0.1,0.1,0.1C25.3,23.6,24.8,23.6,24.5,23.6z"/></symbol><symbol id="blog" viewBox="0 0 38.2 39.4"><path d="m 30.9,37.8 -23.5,0 -4.3,1.6 27.8,0 c 0.4,0 0.8,-0.3 0.8,-0.8 0,-0.5 -0.3,-0.8 -0.8,-0.8 z"/><path d="M 38.2,5.6 32.8,0 28.9,3.9 25.3,0.3 18.1,7.6 19.2,8.7 25.4,2.4 27.8,5 3.1,29.7 c 0,0 0,0 0,0 0,0 0,0 0,0 L 2.9,29.9 2.8,30 0,38.3 8.2,35.6 38.2,5.6 Z M 32.8,2.1 36.2,5.5 33.4,8.3 29.9,5 32.8,2.1 Z M 2.4,35.9 3.8,31.6 6.7,34.5 2.4,35.9 Z M 4.6,30.3 28.9,6 32.3,9.4 8,33.6 4.6,30.3 Z"/></symbol><symbol id="burger" viewBox="-338 41.4 32 32"><rect x="-330.4" y="61.7" width="16.8" height="1.5"/><rect x="-330.4" y="56.6" width="16.8" height="1.5"/><rect x="-330.4" y="51.6" width="16.8" height="1.5"/></symbol><symbol viewBox="0 0 19.5 30" id="chevron"><path d="M 15,0 0,15 15,30 19.5,25.5 9,15 19.5,4.5 Z M 15,1 18.5,4.5 8,15 18.5,25.5 15,29 1,15 Z"/></symbol><symbol id="clock" viewBox="0 0 15 15"><path d="M7.5,0A7.5,7.5,0,1,0,15,7.5,7.5,7.5,0,0,0,7.5,0Zm4.91,8H7V7.5H7V2.59H8V7h4.41Z"/></symbol><symbol id="close-symbol" viewBox="0 0 18 18"><path d="M 0.7,18 0,17.2 17.3,0 18,0.8 0.7,18 z M 0,0.7 0.8,0 18,17.3 17.2,18 0,0.7 z"/></symbol><symbol id="comment" viewBox="0 0 20 20"><path d="M16.7,13.6c1.4,0,2.5-1.1,2.5-2.5V3.5c0-1.3-1.2-2.5-2.5-2.5H3.8C2.3,0.9,1.3,2,1.3,3.5V11 c0,1.3,1.2,2.5,2.5,2.5h1.7V19l4.8-5.4C10.2,13.6,16.7,13.6,16.7,13.6z"/></symbol><symbol id="commentary" viewBox="0 0 17.9 18"><path d="m 15.4,12.606309 c 1.4,0 2.5,-1.1 2.5,-2.5 V 2.5063091 c 0,-1.3 -1.2,-2.49999999 -2.5,-2.49999999 H 2.5 C 1,-0.09369089 0,1.0063091 0,2.5063091 v 7.4999999 c 0,1.3 1.2,2.5 2.5,2.5 h 1.7 v 5.5 l 4.8,-5.4 c -0.1,0 6.4,0 6.4,0 z"/></symbol><symbol id="comments-v2" viewBox="0 0 34 34"><path d="M11,29v-6H5V8h24v15H17L11,29z"/><path d="M13.3,14.7c0.4,0,0.7,0.3,0.7,0.7s-0.3,0.7-0.7,0.7s-0.7-0.3-0.7-0.7S12.9,14.7,13.3,14.7z"/><path d="M17,14.7c0.4,0,0.7,0.3,0.7,0.7s-0.3,0.7-0.7,0.7s-0.7-0.3-0.7-0.7S16.6,14.7,17,14.7z"/><path d="M20.7,14.7c0.4,0,0.7,0.3,0.7,0.7s-0.3,0.7-0.7,0.7S20,15.8,20,15.4S20.3,14.7,20.7,14.7z"/></symbol><symbol id="diamond" viewBox="0 0 32 32"><path d="M16,29.2L0.9,14v-1.2l5.7-6.5h18.9l5.7,6.5V14L16,29.2z M1.9,13.6L16,27.8l14.1-14.1v-0.4L25,7.4H7l-5.1,5.8V13.6z"/><rect x="1.4" y="12.6" width="29.3" height="1"/><polygon points="16.5,28.7 15.5,28.3 22.4,13.1 19.4,7.1 20.3,6.7 23.5,13 "/><polygon points="15.5,28.7 8.5,13 11.7,6.7 12.6,7.1 9.6,13.1 16.5,28.3 "/></symbol><symbol id="dots" viewBox="0 0 27 7"><path d="M 3.5,0 C 1.6,0 0,1.6 0,3.5 0,5.4 1.6,7 3.5,7 5.4,7 7,5.4 7,3.5 7,1.6 5.4,0 3.5,0 z m 10,0 C 11.6,0 10,1.6 10,3.5 10,5.4 11.6,7 13.5,7 15.4,7 17,5.4 17,3.5 17,1.6 15.4,0 13.5,0 z m 10,0 C 21.6,0 20,1.6 20,3.5 20,5.4 21.6,7 23.5,7 25.4,7 27,5.4 27,3.5 27,1.6 25.4,0 23.5,0 z"/></symbol><symbol id="down-arrow" viewBox="0 0 21.2 14.1"><rect x="6.7" y="4.6" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -0.8498 12.1094)" width="15" height="5"/><rect x="4.6" y="-0.4" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -2.917 7.1)" width="5" height="15"/></symbol><symbol id="envelope" viewBox="0 0 50 32"><path d="M 48.1,-2.4512111e-7 H 2.1 1.7 0.7 0 V 32 H 50 V -2.4512111e-7 H 48.3 48.1 z M 46.1,1.9999998 26.7,21.3 c -0.9,0.9 -2.4,0.9 -3.3,0 L 4.1,1.9999998 h 42 z m -44,0.8 L 15.1,15.8 2.1,28.8 V 2.7999998 z M 3.7,30 16.5,17.2 22,22.7 c 0.8,0.8 1.9,1.3 3.1,1.3 1.2,0 2.2,-0.5 3.1,-1.3 L 33.7,17.2 46.5,30 H 3.7 z m 44.4,-1.2 -13,-13 13,-13.0000002 V 28.8 z"/></symbol><symbol id="eye" viewBox="0 0 32 20"><path d="M 16,0 C 7.2,0 0,8 0,10 0,11.8 7.2,20 16,20 24.8,20 32,12 32,10 32,8 24.8,0 16,0 z m 0,16 c -3.3,0 -6,-2.7 -6,-6 0,-3.3 2.2,-6 7,-6 l -1,6 6,-2 c 0,5.6 -2.7,8 -6,8 z"/></symbol><symbol id="face-v2" viewBox="0 0 34 34"><path d="M19,31h-5V19h-3v-4h3V8c0-1.8,0.6-2.9,1.4-3.7C16.8,3,19.5,3,19.9,3L23,3v5h-2c-1.1,0-2,0.4-2,2v5h4v4h-4V31z M22,7"/></symbol><symbol id="face" viewBox="0 0 13.4 29.4"><path d="M 8.1,10.508657 V 6.0086565 c 0,0 0,-1.8 1.9,-1.8 h 2.8 V 0.00865651 H 9.3 c 0,0 -5.9,-0.5 -5.9,6.09999999 0,1.4 0,4.5000005 0,4.5000005 H 0 v 3.4 h 3.4 v 15.4 h 4.7 v -15.4 h 4.4 l 0.9,-3.5 H 8.1 z"/></symbol><symbol id="facebook-logo" viewBox="0 0 28 28"><path fill="inherit" d="m 18.339322,13.572791 h -3.27 v 9.42 h -3.52 v -9.43 H 9.0493224 v -2.13 H 11.559322 V 8.7027914 c 0,-4 4.42,-3.69 4.42,-3.69 h 2.6 v 2.57 h -2.1 a 1.17,1.17 0 0 0 -1.41,1.06 v 2.7899996 h 4 z"></path></symbol><symbol id="gallery" viewBox="0 0 20 15"><path d="M 18.1,1.7999998 H 13.9 L 13.5,0.89999981 C 13.2,0.39999981 12.6,-1.9073486e-7 12.1,-1.9073486e-7 H 7.7 C 7.2,-1.9073486e-7 6.6,0.29999981 6.4,0.89999981 L 6,1.7999998 H 1.8 c -1.2,0 -1.8,0.8 -1.8,1.9 V 13.3 c 0,1 0.6,1.8 1.8,1.8 h 16.4 c 1.1,0 1.8,-0.8 1.8,-1.8 V 3.5999998 c -0.1,-1.2 -0.8,-1.8 -1.9,-1.8 z M 10,13.2 c -3,0 -5.5,-2.4 -5.5,-5.3000002 0.1,-2.9 2.5,-5.3 5.5,-5.3 3,0 5.5,2.4 5.5,5.3 C 15.4,10.9 12.9,13.2 10,13.2 z m 0,-8.8000002 c -2,0 -3.7,1.6 -3.7,3.6 0,2 1.7,3.6000002 3.7,3.6000002 2,0 3.7,-1.6000002 3.7,-3.6000002 0,-2 -1.7,-3.6 -3.7,-3.6 z"/></symbol><symbol id="google-play" viewBox="0 0 135 40"><g><path d="m130 40h-125c-2.8 0-5-2.2-5-5v-30c0-2.7 2.2-5 5-5h125c2.8 0 5 2.2 5 5v30c0 2.7-2.3 5-5 5z" class="store-bkg"/><path class="store-frame" d="m130 0.8c2.3 0 4.2 1.9 4.2 4.2v30c0 2.3-1.9 4.2-4.2 4.2h-125c-2.3 0-4.2-1.9-4.2-4.2v-30c0-2.3 1.9-4.2 4.2-4.2h125m0-0.8h-125c-2.8 0-5 2.3-5 5v30c0 2.8 2.2 5 5 5h125c2.8 0 5-2.2 5-5v-30c0-2.7-2.3-5-5-5z" fill="#A6A6A6"/></g><g><path d="m68.1 21.8c-2.4 0-4.3 1.8-4.3 4.3 0 2.4 1.9 4.3 4.3 4.3s4.3-1.8 4.3-4.3c0-2.6-2-4.3-4.3-4.3zm0 6.8c-1.3 0-2.4-1.1-2.4-2.6s1.1-2.6 2.4-2.6 2.4 1 2.4 2.6c0 1.5-1.1 2.6-2.4 2.6zm-9.3-6.8c-2.4 0-4.3 1.8-4.3 4.3 0 2.4 1.9 4.3 4.3 4.3s4.3-1.8 4.3-4.3c0-2.6-2-4.3-4.3-4.3zm0 6.8c-1.3 0-2.4-1.1-2.4-2.6s1.1-2.6 2.4-2.6 2.4 1 2.4 2.6c0 1.5-1.1 2.6-2.4 2.6zm-11.1-5.5v1.8h4.3c-0.1 1-0.5 1.8-1 2.3-0.6 0.6-1.6 1.3-3.3 1.3-2.7 0-4.7-2.1-4.7-4.8s2.1-4.8 4.7-4.8c1.4 0 2.5 0.6 3.3 1.3l1.3-1.3c-1.1-1-2.5-1.8-4.5-1.8-3.6 0-6.7 3-6.7 6.6s3.1 6.6 6.7 6.6c2 0 3.4-0.6 4.6-1.9 1.2-1.2 1.6-2.9 1.6-4.2 0-0.4 0-0.8-0.1-1.1h-6.2zm45.3 1.4c-0.4-1-1.4-2.7-3.6-2.7s-4 1.7-4 4.3c0 2.4 1.8 4.3 4.2 4.3 1.9 0 3.1-1.2 3.5-1.9l-1.4-1c-0.5 0.7-1.1 1.2-2.1 1.2s-1.6-0.4-2.1-1.3l5.7-2.4-0.2-0.5zm-5.8 1.4c0-1.6 1.3-2.5 2.2-2.5 0.7 0 1.4 0.4 1.6 0.9l-3.8 1.6zm-4.6 4.1h1.9v-12.5h-1.9v12.5zm-3.1-7.3c-0.5-0.5-1.3-1-2.3-1-2.1 0-4.1 1.9-4.1 4.3s1.9 4.2 4.1 4.2c1 0 1.8-0.5 2.2-1h0.1v0.6c0 1.6-0.9 2.5-2.3 2.5-1.1 0-1.9-0.8-2.1-1.5l-1.6 0.7c0.5 1.1 1.7 2.5 3.8 2.5 2.2 0 4-1.3 4-4.4v-7.6h-1.8v0.7zm-2.1 5.9c-1.3 0-2.4-1.1-2.4-2.6s1.1-2.6 2.4-2.6 2.3 1.1 2.3 2.6-1 2.6-2.3 2.6zm24.4-11.1h-4.5v12.5h1.9v-4.7h2.6c2.1 0 4.1-1.5 4.1-3.9s-2.1-3.9-4.1-3.9zm0 6h-2.7v-4.3h2.7c1.4 0 2.2 1.2 2.2 2.1 0 1.1-0.8 2.2-2.2 2.2zm11.5-1.8c-1.4 0-2.8 0.6-3.3 1.9l1.7 0.7c0.4-0.7 1-0.9 1.7-0.9 1 0 1.9 0.6 2 1.6v0.1c-0.3-0.2-1.1-0.5-1.9-0.5-1.8 0-3.6 1-3.6 2.8 0 1.7 1.5 2.8 3.1 2.8 1.3 0 1.9-0.6 2.4-1.2h0.1v1h1.8v-4.8c-0.2-2.2-1.8-3.5-4-3.5zm-0.2 6.9c-0.6 0-1.5-0.3-1.5-1.1 0-1 1.1-1.3 2-1.3 0.8 0 1.2 0.2 1.7 0.4-0.1 1.2-1.1 2-2.2 2zm10.6-6.6l-2.1 5.4h-0.1l-2.2-5.4h-2l3.3 7.6-1.9 4.2h1.9l5.1-11.8h-2zm-16.8 8h1.9v-12.5h-1.9v12.5z" fill="#fff"/></g><g><path d="m10.4 7.5c-0.3 0.3-0.5 0.8-0.5 1.4v22.1c0 0.6 0.2 1.1 0.5 1.4l0.1 0.1 12.4-12.4v-0.2l-12.5-12.4z" fill="#00d3ff"/><path d="m27 24.3l-4.1-4.1v-0.3l4.1-4.1 0.1 0.1 4.9 2.8c1.4 0.8 1.4 2.1 0 2.9l-5 2.7z" fill="#ffb500"/><path d="m27.1 24.2l-4.2-4.2-12.5 12.5c0.5 0.5 1.2 0.5 2.1 0.1l14.6-8.4" fill="#f73448"/><path d="m27.1 15.8l-14.6-8.3c-0.9-0.5-1.6-0.4-2.1 0.1l12.5 12.4 4.2-4.2z" fill="#00f076"/></g><g fill="#fff"><path d="m47.9 8.8c0 0.6-0.2 1.1-0.5 1.4-0.5 0.5-1.1 0.7-2 0.7h-0.6v2.5h-1v-6.4c0.5-0.1 1.1-0.1 1.7-0.1 0.8 0 1.5 0.2 1.9 0.5 0.3 0.3 0.5 0.8 0.5 1.4zm-1.1 0.1c0-0.4-0.1-0.7-0.4-0.9-0.2-0.2-0.6-0.3-1-0.3-0.3 0-0.5 0-0.7 0.1v2.3c0.1 0 0.4 0.1 0.6 0.1 0.5 0 0.8-0.1 1.1-0.3s0.4-0.6 0.4-1z"/><path d="m53.7 11c0 0.7-0.2 1.3-0.6 1.8s-1 0.7-1.7 0.7-1.2-0.2-1.7-0.7c-0.4-0.5-0.6-1-0.6-1.7s0.2-1.3 0.6-1.8 1-0.7 1.7-0.7c0.7 0 1.2 0.2 1.7 0.7 0.4 0.5 0.6 1 0.6 1.7zm-1.1 0.1c0-0.4-0.1-0.8-0.3-1.1-0.2-0.4-0.5-0.6-0.9-0.6s-0.7 0.2-1 0.6c-0.2 0.3-0.3 0.7-0.3 1.1s0.1 0.8 0.3 1.1c0.2 0.4 0.5 0.6 1 0.6 0.4 0 0.7-0.2 0.9-0.6 0.2-0.3 0.3-0.7 0.3-1.1z"/><path d="m59.8 11c0 0.8-0.2 1.4-0.7 1.9-0.4 0.4-0.9 0.6-1.4 0.6-0.7 0-1.2-0.3-1.5-0.8l-0.1 0.7h-0.9v-1.3-5.5h1v2.9c0.3-0.5 0.8-0.8 1.5-0.8 0.6 0 1 0.2 1.4 0.7 0.5 0.3 0.7 0.9 0.7 1.6zm-1.1 0.1c0-0.5-0.1-0.8-0.3-1.1s-0.5-0.5-0.9-0.5c-0.3 0-0.5 0.1-0.7 0.3s-0.3 0.4-0.4 0.7v0.3 0.8c0 0.3 0.1 0.6 0.3 0.8s0.5 0.3 0.8 0.3c0.4 0 0.7-0.1 0.9-0.4s0.3-0.7 0.3-1.2z"/><path d="m62.5 7.3c0 0.2-0.1 0.3-0.2 0.5-0.1 0.1-0.3 0.2-0.5 0.2s-0.3-0.1-0.4-0.2-0.2-0.3-0.2-0.5 0.1-0.3 0.2-0.4 0.3-0.2 0.5-0.2c0.2 0 0.3 0.1 0.5 0.2 0 0.1 0.1 0.2 0.1 0.4zm-0.1 6.1h-1v-4.7h1v4.7z"/><path d="m68.1 10.9v0.5h-3.1c0 0.5 0.2 0.8 0.5 1.1 0.3 0.2 0.6 0.3 1 0.3 0.5 0 0.9-0.1 1.3-0.2l0.2 0.7c-0.4 0.2-1 0.3-1.6 0.3-0.7 0-1.3-0.2-1.7-0.6s-0.6-1-0.6-1.7c0-0.7 0.2-1.3 0.6-1.8s1-0.8 1.6-0.8c0.7 0 1.2 0.3 1.5 0.8 0.2 0.3 0.3 0.8 0.3 1.4zm-1-0.3c0-0.3-0.1-0.6-0.2-0.8-0.2-0.3-0.5-0.4-0.8-0.4s-0.6 0.1-0.8 0.4c-0.2 0.2-0.3 0.5-0.3 0.8h2.1z"/><path d="m72.1 9.7h-0.3c-0.4 0-0.7 0.1-0.9 0.4-0.2 0.2-0.3 0.6-0.3 0.9v2.5h-1v-3.2-1.5h0.9v0.9c0.1-0.3 0.3-0.6 0.5-0.7 0.2-0.2 0.5-0.3 0.8-0.3h0.3v1z"/><path d="m76.8 13.4h-3.8v-0.6l1.9-2.5c0.1-0.2 0.3-0.4 0.6-0.8h-2.3v-0.8h3.6v0.6l-1.8 2.4c-0.2 0.3-0.4 0.5-0.6 0.8h2.5l-0.1 0.9z"/><path d="m87.4 8.7l-1.5 4.7h-1l-0.6-2c-0.2-0.5-0.3-1-0.4-1.5-0.1 0.5-0.2 1-0.4 1.5l-0.6 2h-1l-1.4-4.7h1.1l0.5 2.2 0.3 1.5c0.1-0.4 0.2-0.9 0.4-1.5l0.7-2.2h0.9l0.6 2.2c0.2 0.5 0.3 1.1 0.4 1.6 0.1-0.5 0.2-1 0.3-1.6l0.6-2.2h1.1z"/></g></symbol><symbol id="google-plus" viewBox="0 0 28 18"><path d="M385.909,2756a9,9,0,0,0,0,18c5.142,0,8.553-3.65,8.553-8.79a8.417,8.417,0,0,0-.14-1.5h-8.413v3.09h5.053a4.827,4.827,0,0,1-5.053,3.88,5.682,5.682,0,0,1,0-11.36,5,5,0,0,1,3.551,1.38l2.418-2.35a8.515,8.515,0,0,0-5.969-2.35m16.546,5.14h-2.546v2.57h-2.545v2.57h2.545v2.58h2.546v-2.58H405v-2.57h-2.545v-2.57" transform="translate(-377 -2756)"/></symbol><symbol id="gplus-logo" viewBox="0 0 28 28"><path fill="inherit" d="m 24,14.86 h -1.82 v 1.71 h -1.82 v -1.71 h -1.81 v -1.72 h 1.82 v -1.71 h 1.82 v 1.71 H 24 v 1.71 z M 10.36,20 A 6.18,6.18 0 0 1 4,14 6.18,6.18 0 0 1 10.36,8 6.31,6.31 0 0 1 14.62,9.57 L 12.9,11.14 A 3.7,3.7 0 0 0 10.36,10.21 3.87,3.87 0 0 0 6.42,14 3.87,3.87 0 0 0 10.37,17.79 3.39,3.39 0 0 0 14,15.2 h -3.64 v -2.06 h 6 a 5.23,5.23 0 0 1 0.1,1 C 16.47,17.57 14,20 10.36,20 Z"/></symbol><symbol id="guidebook" viewBox="0 0 20.1 20"><path d="m13.2 9.5c-0.8-0.8-2.5-1.8-2.5-1.8s0.4-2.9 0-2.9-2.2 1.4-2.2 1.4c-1.7-0.7-2.9-0.7-2.9-0.7s0 1.2 0.7 2.9c0 0-1.4 1.8-1.4 2.2s2.9 0 2.9 0 1 1.7 1.8 2.5c0 0 0.7-2.9 0.4-3.3 0.4 0.5 3.2-0.3 3.2-0.3zm6.6 8.7-7.3-7.3c-0.4-0.4-1.1-0.4-1.5 0s-0.4 1.1 0 1.5l7.3 7.3c0.4 0.4 1.1 0.4 1.5 0s0.4-1.1 0-1.5zm-12.4-14.9s0.6 1 1 1.5c0 0 0.4-1.7 0.2-1.9 0.2 0.2 1.9-0.2 1.9-0.2-0.5-0.5-1.5-1-1.5-1s0.3-1.7 0-1.7c-0.2 0-1.2 0.8-1.2 0.8-1-0.4-1.7-0.4-1.7-0.4s0 0.7 0.4 1.7c0 0-0.8 1-0.8 1.2 0 0.3 1.7 0 1.7 0zm7.2 3.2s0.6 1 1 1.5c0 0 0.4-1.7 0.2-1.9 0.2 0.2 1.9-0.2 1.9-0.2-0.5-0.5-1.5-1-1.5-1s0.2-1.7 0-1.7-1.3 0.8-1.3 0.8c-1-0.4-1.7-0.4-1.7-0.4s0 0.7 0.4 1.7c0 0-0.8 1-0.8 1.3 0.1 0.2 1.8-0.1 1.8-0.1zm-7.2 7.1c-0.2 0-1.3 0.8-1.3 0.8-0.9-0.4-1.6-0.4-1.6-0.4s0 0.7 0.4 1.7c0 0-0.8 1-0.8 1.3 0 0.2 1.7 0 1.7 0s0.6 1 1 1.5c0 0 0.4-1.7 0.2-1.9 0.2 0.2 1.9-0.2 1.9-0.2-0.5-0.5-1.5-1-1.5-1s0.3-1.8 0-1.8zm-2.5-6.1c-0.5-0.5-1.5-1-1.5-1s0.2-1.7 0-1.7-1.3 0.8-1.3 0.8c-1-0.4-1.7-0.4-1.7-0.4s0 0.7 0.4 1.7c0 0-0.8 1-0.8 1.3 0 0.2 1.7 0 1.7 0s0.6 1 1 1.5c0 0 0.4-1.7 0.2-1.9 0.3 0.2 2-0.3 2-0.3z"/></symbol><symbol id="hamburger" viewBox="0 0 40 34"><path d="M20,32H60v6H20V32Zm0,14H60v6H20V46Zm0,14H60v6H20V60Z" transform="translate(-20 -32)"/></symbol><symbol id="infographic" viewBox="0 0 13 17"><path d="M 0,17 H 3 V 0 H 0 v 17 z m 5,0 H 8 V 8 H 5 v 9 z M 10,3 v 14 h 3 V 3 h -3 z"/></symbol><symbol id="instagram-v2" viewBox="0 0 30 30"><path d="M 15 3 C 11.75 3 11.340547 2.9996094 10.060547 3.0996094 A 8.73 8.73 0 0 0 7.1601562 3.6601562 A 5.53 5.53 0 0 0 5 5 A 5.77 5.77 0 0 0 3.6308594 7.1601562 A 8.73 8.73 0 0 0 3.0703125 10.060547 C 3.0003125 11.340547 3 11.75 3 15 C 3 18.25 2.9996094 18.660703 3.0996094 19.970703 A 8.73 8.73 0 0 0 3.6601562 22.869141 A 6.11 6.11 0 0 0 7.1601562 26.369141 A 8.73 8.73 0 0 0 10.060547 26.929688 C 11.340547 26.999688 11.75 27 15 27 C 18.25 27 18.659453 27.000391 19.939453 26.900391 A 8.73 8.73 0 0 0 22.839844 26.339844 A 6.1 6.1 0 0 0 26.339844 22.839844 A 8.73 8.73 0 0 0 26.900391 19.939453 C 27.000391 18.659453 27 18.25 27 15 C 27 11.75 27.000391 11.339297 26.900391 10.029297 A 8.73 8.73 0 0 0 26.339844 7.1308594 A 6.11 6.11 0 0 0 22.839844 3.6308594 A 8.73 8.73 0 0 0 19.939453 3.0703125 C 18.659453 3.0003125 18.25 3 15 3 z M 15 5.1699219 C 18.2 5.1699219 18.579844 5.2402344 19.839844 5.2402344 A 6.48 6.48 0 0 1 22.060547 5.6601562 A 3.69 3.69 0 0 1 23.439453 6.5507812 A 3.84 3.84 0 0 1 24.339844 7.9296875 A 6.71 6.71 0 0 1 24.75 10.150391 C 24.82 11.420391 24.820312 11.790234 24.820312 14.990234 C 24.820312 18.190234 24.8 18.570078 24.75 19.830078 A 6.71 6.71 0 0 1 24.339844 22.050781 A 4 4 0 0 1 22.060547 24.330078 A 6.71 6.71 0 0 1 19.839844 24.740234 C 18.579844 24.810234 18.2 24.810547 15 24.810547 C 11.8 24.810547 11.430156 24.790234 10.160156 24.740234 A 6.71 6.71 0 0 1 7.9394531 24.330078 A 3.84 3.84 0 0 1 6.5605469 23.429688 A 3.69 3.69 0 0 1 5.6699219 22.050781 A 6.48 6.48 0 0 1 5.25 19.830078 C 5.18 18.570078 5.1796875 18.190234 5.1796875 14.990234 C 5.1796875 11.790234 5.25 11.410391 5.25 10.150391 A 6.48 6.48 0 0 1 5.6699219 7.9296875 A 3.69 3.69 0 0 1 6.5605469 6.5507812 A 3.84 3.84 0 0 1 7.9394531 5.6503906 A 6.71 6.71 0 0 1 10.160156 5.2402344 C 11.430156 5.1702344 11.8 5.1699219 15 5.1699219 z "/><path d="M 14.744141 8.8554688 A 6.15 6.15 0 0 0 15 21.150391 A 6.15 6.15 0 0 0 21.150391 15 A 6.15 6.15 0 0 0 14.744141 8.8554688 z M 15 11 A 4 4 0 0 1 19 15 A 4 4 0 1 1 15 11 z "/><path d="m 21.39,10.05 a 1.44,1.44 0 1 1 1.44,-1.44 1.43,1.43 0 0 1 -1.44,1.44 z"/></symbol><symbol id="instagram" viewBox="0 0 19.8 19.4"><path class="st0" d="M17.3,0H2.6C1.2,0,0,1.1,0,2.5v14.4c0,1.4,1.2,2.5,2.5,2.5h14.7c1.4,0,2.5-1.1,2.5-2.5V2.5 C19.8,1.1,18.7,0,17.3,0z M14.2,3C14.2,3,14.2,3,14.2,3c0-0.4,0.3-0.7,0.8-0.7h1.8c0.4,0,0.7,0.3,0.8,0.7v1.8c0,0.4-0.3,0.7-0.8,0.7 h-1.8c0,0,0,0,0,0c-0.4,0-0.7-0.3-0.7-0.7V3z M9.9,5.5L9.9,5.5L9.9,5.5L9.9,5.5c2.3,0,4.1,1.9,4.1,4.2s-1.9,4.1-4.2,4.1 c-2.3,0-4.1-1.9-4.1-4.2C5.7,7.4,7.6,5.5,9.9,5.5z M17.9,16.7c0,0.4-0.4,0.8-0.8,0.8H2.7c-0.4,0-0.8-0.3-0.8-0.8V8.3h2 C3.8,8.7,3.8,9.2,3.8,9.7c0.1,3.3,2.7,6,6,6c3.4,0.1,6.2-2.6,6.3-6c0-0.5-0.1-0.9-0.2-1.4h2.1h0V16.7z"/></symbol><symbol id="interview-2" viewBox="0 0 30 30"><path d="m9.01,18.9a18.312,18.312,0,0,1-5.04,2.04c-1.05.21-.73-0.08-0.47-0.29a9.884,9.884,0,0,0,2.74-2.87,5.366,5.366,0,0,1-2.97-4.43c0-3.27,3.95-5.92,8.82-5.92s8.82,2.65,8.82,5.92-3.95,5.92-8.82,5.92Z m17.42,3.64a10.81,10.81,0,0,1-3.28-1.5,8.077,8.077,0,0,1-2.42.37,6.77,6.77,0,0,1-4.8-1.75c3.33-.97,5.66-3.2,5.88-5.89,2.66,0.34,4.66,1.9,4.66,3.78a3.317,3.317,0,0,1-1.52,2.62c0.06,0.44.26,1.04,1.61,2.1Z"/></symbol><symbol id="interview" viewBox="0 0 20 16"><path d="m 13.3,10.4 c 1.2,0 2.2,-0.9 2.2,-2.1 V 2.1 C 15.5,1 14.5,0 13.3,0 H 2.2 C 1,0 0,0.9 0,2.1 v 6.2 c 0,1.1 1,2.1 2.2,2.1 H 3.6 L 4.5,13.9 9,10.4 h 4.3 z m 4.5,-7.6 h -1.4 l -0.1,7 c 0,1.3 -1.5,1.3 -1.5,1.3 H 9.4 L 8.1,12.5 H 11 l 4.4,3.5 0.9,-3.5 h 1.4 c 1.3,0 2.3,-1 2.3,-2.1 V 4.8 c 0,-1.1 -1,-2 -2.2,-2 z"/></symbol><symbol id="left-arrow" viewBox="0 0 19.200001 32"><path d="M17.13 32l2.07-1.93L4.15 16 19.2 1.94 17.13 0 0 16"/></symbol><symbol id="letter" viewBox="0 0 29 21"><path d="M 0,18.6 C 0,19.9 1.1,21 2.4,21 H 26.6 C 27.9,21 29,19.9 29,18.6 V 2.4 C 29,1.1 27.9,0 26.6,0 H 2.4 C 1.1,0 0,1.1 0,2.4 V 18.6 z M 8.9,10.5 3.4,5 C 2.9,4.5 2.9,3.8 3.4,3.4 3.9,2.9 4.6,2.9 5.1,3.4 l 8.8,8.8 c 0.4,0.3 0.9,0.3 1.3,0 L 24,3.4 c 0.5,-0.5 1.2,-0.5 1.7,0 0.5,0.5 0.5,1.2 0,1.6 l -5.6,5.5 5.5,5.5 c 0.5,0.5 0.5,1.2 0,1.6 -0.5,0.5 -1.2,0.5 -1.7,0 l -5.5,-5.5 c 0,0 -1.7,1.7 -2,2.1 -0.5,0.5 -1.2,0.8 -1.9,0.8 -0.7,0 -1.4,-0.3 -1.9,-0.8 -0.3,-0.3 -2,-2 -2,-2 l -5.5,5.5 c -0.5,0.5 -1.2,0.5 -1.7,0 -0.5,-0.5 -0.5,-1.2 0,-1.6 l 5.5,-5.6 z"/></symbol><symbol id="linkedin" viewBox="0 0 30 30"><path d="m8.89,25.56h-4.45v-14.31h4.45v14.31Zm-2.22-16.27h0a2.58,2.58,0,1,1,2.57-2.58Zm14.44,16.27v-6.96c0-1.66-.03-3.79-2.31-3.79s-2.69,1.81-2.69,3.67v7.08h-4.44v-14.31h4.26v1.96h0.06a4.7,4.7,0,0,1,4.22-2.32c4.5,0,5.33,2.97,5.33,6.83l0.02,7.84h-4.45Z"/></symbol><symbol id="magnifier" viewBox="0 0 28.1875 28.19375"><path d="M27.944 26.756l-6.852-6.852c1.838-2.113 2.95-4.87 2.95-7.883C24.043 5.39 18.65 0 12.023 0 5.388 0 0 5.395 0 12.02c0 6.628 5.395 12.023 12.02 12.023 3.015 0 5.77-1.113 7.884-2.95l6.852 6.85c.162.163.38.25.594.25.212 0 .43-.08.594-.25.325-.324.325-.862 0-1.187zM1.682 12.02c0-5.7 4.638-10.332 10.333-10.332 5.7 0 10.334 4.638 10.334 10.333 0 5.696-4.634 10.34-10.335 10.34-5.695 0-10.333-4.637-10.333-10.34z"/></symbol><symbol id="mail-v2" viewBox="0 0 34 34"><polygon points="5,9 17,20 29,9 29,25 5,25"/><polygon points="17,18.5 27.5,9 6.5,9"/></symbol><symbol id="newspaper" viewBox="0 0 20 16"><path d="M3894,2213h4v4h-4v-4Zm-5-3h9v2h-9v-2Zm0,3h4v1h-4v-1Zm0,2h4v1h-4v-1Zm11-8h-1v-2a0.979,0.979,0,0,0-1-1h-16a0.979,0.979,0,0,0-1,1v14a0.979,0.979,0,0,0,1,1h18a0.979,0.979,0,0,0,1-1v-11A0.979,0.979,0,0,0,3900,2207Zm-14.5,9v-10H3897v2h-10v10h-4v-12h1.5v10h1Zm13.5-7v9h-11v-9h11Z" transform="translate(-3881 -2204)"/></symbol><symbol id="obituaries" viewBox="0 0 32 8.4407187"><path d="M4.465 3.478c-1.342 0-2.712.94-2.712 2.108 0 .43.154.91.575 1.197.21.154.21.393-.03.652-.286.297-.698.536-1.12.536C.67 7.97 0 7.51 0 6.62c0-.498.335-1.552 1.648-2.52 1.39-1.025 2.577-1.37 3.938-1.456C8.46.402 10.788 0 12.484 0c1.85 0 3.497.575 4.33.89.748.28 3.65 1.467 5.7 2.34 2.157.87 4.015 1.398 5.29 1.398 1.015 0 2.49-.355 2.49-1.58 0-.452-.18-.758-.44-.94-.144-.115-.25-.288-.25-.44 0-.45.413-1.14 1.14-1.14C31.56.527 32 1.32 32 1.925c0 1.628-1.83 2.73-3.056 3.228-2.26 2.348-4.55 3.287-6.764 3.287-1.63 0-3.19-.43-5.26-1.16-1.562-.554-6.458-2.51-8.422-3.112-1.81-.546-2.845-.69-4.014-.69h-.02zM10.778.88c-1.504 0-2.93.74-3.63 1.83.852.02 2.145.203 4.292.96 2.146.708 6.103 2.356 7.482 2.826 1.543.488 3.01.9 4.474.9 1.64 0 3.095-.527 3.86-1.877-1.522.19-2.96-.05-5.076-.854-1.63-.604-6.113-2.616-7.627-3.114-1.274-.42-2.51-.67-3.746-.67h-.03z"/></symbol><symbol id="padlock-close" viewBox="0 0 28.1 37.5"><path d="M28.1,17H0v20.5h28.1V17z M15.8,28.1l0,5.9l-3.6,0v-5.9c-1.1-0.6-1.9-1.8-1.9-3.2c0-2,1.7-3.7,3.7-3.7 c2,0,3.7,1.7,3.7,3.7C17.7,26.3,17,27.5,15.8,28.1z"/><path d="M7.8,15.1c0-0.3-0.1-3.6,0.1-4.9c0.3-2.9,3.1-5.3,6.2-5.3c2.9,0,5.5,2.2,6.1,5.2c0.3,1.2,0.1,4.7,0.1,5h4.9 c0-0.3,0.1-5.1-0.5-7.1C23.4,3.4,19,0.1,14.1,0C9.4-0.1,5.2,2.9,3.5,7.5c-0.8,2.1-0.6,7.3-0.6,7.6H7.8z"/></symbol><symbol id="padlock-open" viewBox="0 0 42.6 37.5"><path d="M42.6,17H14.5v20.5h28.1V17z M30.3,28.1V34h-3.6v-5.9c-1.1-0.6-1.9-1.8-1.9-3.2c0-2,1.7-3.7,3.7-3.7 s3.7,1.7,3.7,3.7C32.2,26.3,31.5,27.5,30.3,28.1z"/><path d="M4.9,15.1c0-0.3-0.1-3.6,0.1-4.9c0.3-2.9,3.1-5.3,6.2-5.3c2.9,0,5.5,2.2,6.1,5.2c0.3,1.2,0.1,4.7,0.1,5h4.9 c0-0.3,0.1-5.1-0.5-7.1c-1.3-4.6-5.7-7.9-10.6-8C6.5-0.1,2.3,2.9,0.6,7.5C-0.2,9.6,0,14.8,0,15.1H4.9z"/></symbol><symbol id="padlock" viewBox="0 0 45 56"><path d="M 38,21 H 36.3 V 14.3 C 36.3,6.3 30.6,0 22.4,0 14.2,0 8.6,6.4 8.6,14.3 V 21 H 6.9 C 3.1,21 0,24.1 0,28 v 21 c 0,3.9 3.1,7 6.9,7 H 38.1 C 41.9,56 45,52.9 45,49 V 28 C 44.9,24.1 41.8,21 38,21 z M 12,14.3 c 0,-6 4,-10.8 10.3,-10.8 6.2,0 10.4,4.8 10.4,10.8 V 21 H 12 V 14.3 z M 41.4,49 c 0,1.9 -1.6,3.5 -3.5,3.5 H 6.8 C 4.9,52.5 3.3,50.9 3.3,49 V 28 c 0,-1.9 1.6,-3.5 3.5,-3.5 H 38 c 1.9,0 3.5,1.6 3.5,3.5 v 21 h -0.1 z m -19,-17.5 c -1.9,0 -3.5,1.6 -3.5,3.5 0,1.3 0.7,2.4 1.7,3 v 5.7 c 0,1 0.8,1.7 1.7,1.7 1,0 1.7,-0.8 1.7,-1.7 V 38 c 1,-0.6 1.7,-1.7 1.7,-3 0.2,-1.9 -1.4,-3.5 -3.3,-3.5 z"/></symbol><symbol id="post-delete" viewBox="0 0 14 14"><path d="M588.55,437a7,7,0,1,1,7-7A7,7,0,0,1,588.55,437Zm0-13a6,6,0,1,0,6,6A6,6,0,0,0,588.55,424Z" transform="translate(-581.55 -423)"/><polygon points="10.31 4.66 9.35 3.69 7 6.03 4.66 3.69 3.69 4.66 6.04 7 3.69 9.34 4.66 10.31 7 7.96 9.35 10.31 10.31 9.34 7.96 7 10.31 4.66"/></symbol><symbol id="questionnaire" viewBox="0 0 20 20"><path d="M2.5,2.5v15h15v-15H2.5z M8.8,13.5l-1.2-1.2L5.1,10l1.2-1.2l2.4,2.4l4.9-4.7l1.2,1.2L8.8,13.5z"/></symbol><symbol id="quiz" viewBox="0 0 15 19.5"><path d="m6.9 3.3c-0.1-0.2-0.1-0.5-0.1-0.7 0-0.3 0.1-0.5 0.2-0.6 0.1-0.2 0.3-0.3 0.5-0.3s0.4 0.1 0.5 0.2 0.2 0.3 0.2 0.6-0.1 0.6-0.2 0.9-0.3 0.6-0.5 0.8c-0.2 0.3-0.4 0.5-0.6 0.8-0.3 0.2-0.5 0.4-0.8 0.5v2.2h1.9v-1.5c0.6-0.4 1.1-0.9 1.5-1.5s0.5-1.3 0.5-2.1-0.2-1.5-0.7-1.9c-0.4-0.5-1-0.7-1.9-0.7-0.8 0-1.4 0.2-1.9 0.7-0.4 0.5-0.6 1-0.6 1.8 0 0.4 0.1 0.8 0.2 1.2l1.8-0.4zm7.4 3.4c-0.5-0.4-1.1-0.7-2-0.7-0.8 0-1.5 0.2-1.9 0.7s-0.6 1-0.6 1.8c0 0.4 0.1 0.8 0.2 1.2l1.8-0.3c-0.1-0.2-0.1-0.5-0.1-0.7 0-0.3 0.1-0.5 0.2-0.7s0.3-0.3 0.5-0.3 0.4 0.1 0.5 0.2 0.2 0.3 0.2 0.6-0.1 0.6-0.2 0.9-0.3 0.6-0.5 0.9-0.4 0.5-0.6 0.7-0.5 0.4-0.7 0.6v2.2h1.9v-1.6c0.6-0.4 1.1-0.9 1.5-1.5s0.5-1.3 0.5-2.1-0.3-1.4-0.7-1.9zm-3.3 9.9h1.9v-1.9h-1.9v1.9zm-3.6-7.6c-0.8 0-1.5 0.2-1.9 0.7-0.4 0.4-0.6 1-0.6 1.8 0 0.4 0.1 0.8 0.2 1.2l1.8-0.3c-0.1-0.2-0.1-0.5-0.1-0.7 0-0.3 0.1-0.5 0.2-0.7s0.3-0.3 0.5-0.3 0.4 0.1 0.5 0.2 0.2 0.3 0.2 0.6-0.1 0.6-0.2 0.9-0.3 0.6-0.5 0.9-0.4 0.5-0.6 0.7-0.5 0.4-0.7 0.6v2.2h1.9v-1.6c0.6-0.4 1.1-0.9 1.5-1.5s0.5-1.3 0.5-2.1-0.2-1.5-0.7-1.9c-0.5-0.5-1.2-0.7-2-0.7zm-1.3 10.5h1.9v-1.9h-1.9v1.9zm-4.9-3.9h1.9v-1.9h-1.9v1.9zm3.3-9.9c-0.5-0.4-1.1-0.6-2-0.6-0.8 0-1.5 0.2-1.9 0.7-0.4 0.4-0.6 1-0.6 1.8 0 0.4 0.1 0.8 0.2 1.2l1.8-0.3c-0.1-0.4-0.1-0.6-0.1-0.8 0-0.3 0.1-0.5 0.2-0.7s0.2-0.3 0.4-0.3 0.4 0.1 0.5 0.2 0.2 0.3 0.2 0.6-0.1 0.6-0.2 0.9c0 0.4-0.2 0.6-0.4 0.9s-0.4 0.5-0.6 0.7-0.5 0.4-0.7 0.6v2.2h1.9v-1.6c0.6-0.4 1.1-0.9 1.5-1.5s0.5-1.3 0.5-2.1-0.2-1.4-0.7-1.9z"/></symbol><symbol id="read-later" viewBox="0 0 34 34"><path d="M26,31l-9-8l-9,8V3h18V31z"/></symbol><symbol id="reply" viewBox="0 0 17 9"><path d="M0,4.5L5.7,0v2.2C15.9,2.2,17,7.9,17,9C14.7,4.5,6.8,6.8,5.7,6.8V9L0,4.5z"/></symbol><symbol id="right-arrow" viewBox="0 0 19.200001 32"><path d="M15.05 16L0 1.94 2.07 0 19.2 16 2.07 32 0 30.07"/></symbol><symbol id="snapchat" viewBox="0 0 21 20"><path d="M570.633,2775a0.86,0.86,0,0,1-.161-0.01h0c-0.034,0-.069.01-0.105,0.01a4.524,4.524,0,0,1-2.814-1.13,4.123,4.123,0,0,0-1.63-.84,4.9,4.9,0,0,0-.855-0.08,5.92,5.92,0,0,0-1.186.14,2.191,2.191,0,0,1-.441.07,0.282,0.282,0,0,1-.307-0.23c-0.049-.16-0.084-0.33-0.119-0.49a0.8,0.8,0,0,0-.32-0.69c-1.973-.31-2.538-0.73-2.664-1.02a0.479,0.479,0,0,1-.03-0.13,0.227,0.227,0,0,1,.186-0.24c3.033-.5,4.393-3.65,4.45-3.78l0-.02a1.175,1.175,0,0,0,.109-0.98,2.024,2.024,0,0,0-1.337-.86c-0.11-.04-0.214-0.07-0.3-0.1-0.9-.37-0.971-0.73-0.936-0.92a0.851,0.851,0,0,1,.824-0.55,0.531,0.531,0,0,1,.245.06,2.582,2.582,0,0,0,1.081.28,0.853,0.853,0,0,0,.645-0.21c-0.01-.2-0.024-0.42-0.038-0.65a10.884,10.884,0,0,1,.251-4.29,5.473,5.473,0,0,1,5.1-3.34h0.427a5.483,5.483,0,0,1,5.1,3.34,10.9,10.9,0,0,1,.251,4.29l0,0.06c-0.012.21-.024,0.4-0.034,0.59a0.891,0.891,0,0,0,.588.21h0a2.644,2.644,0,0,0,1.019-.29,0.853,0.853,0,0,1,.316-0.06,0.908,0.908,0,0,1,.364.07h0.007a0.682,0.682,0,0,1,.509.56,1.112,1.112,0,0,1-.944.84,1.728,1.728,0,0,1-.3.1,2.1,2.1,0,0,0-1.337.86,1.2,1.2,0,0,0,.109.99,0.042,0.042,0,0,0,0,.01c0.057,0.13,1.416,3.28,4.45,3.79a0.224,0.224,0,0,1,.186.23,0.336,0.336,0,0,1-.031.13c-0.125.3-.689,0.72-2.663,1.03a0.748,0.748,0,0,0-.32.68c-0.035.17-.07,0.33-0.119,0.49a0.266,0.266,0,0,1-.283.22H577.56a2.2,2.2,0,0,1-.442-0.06,6.738,6.738,0,0,0-1.186-.13,6.137,6.137,0,0,0-.856.08,4.093,4.093,0,0,0-1.627.84A4.534,4.534,0,0,1,570.633,2775Z" transform="translate(-560 -2755)"/></symbol><symbol id="spam" viewBox="0 0 11 14.5"><path d="M2.3,14.5h6.5c0.8,0,1.4-0.6,1.4-1.5V2.9H0.8v10.2C0.8,13.9,1.5,14.5,2.3,14.5z M7.7,4.7 c0-0.3,0.2-0.5,0.6-0.5c0.3,0,0.6,0.2,0.6,0.5v7.9c0,0.3-0.3,0.5-0.6,0.5s-0.6-0.2-0.6-0.5C7.7,12.6,7.7,4.7,7.7,4.7z M5,4.7 c0-0.3,0.3-0.5,0.6-0.5c0.3,0,0.6,0.2,0.6,0.5v7.9c0,0.3-0.3,0.5-0.6,0.5c-0.3,0-0.6-0.2-0.6-0.5V4.7z M2.2,4.7 c0-0.3,0.2-0.5,0.6-0.5s0.6,0.2,0.6,0.5v7.9c0,0.3-0.3,0.5-0.6,0.5s-0.6-0.2-0.6-0.5C2.2,12.6,2.2,4.7,2.2,4.7z"/><path d="M3.7,0h-2C0.8,0,0,0.8,0,1.7h11c0-1-0.8-1.7-1.8-1.7H3.7"/></symbol><symbol id="star" viewBox="0 0 15 14"><path d="M500.943,3644.22a1.056,1.056,0,0,0-.865-0.68l-3.9-.56-1.695-3.4a1.12,1.12,0,0,0-1.962,0l-1.7,3.4-3.9.56a1.058,1.058,0,0,0-.864.68,0.971,0.971,0,0,0,.251,1.03l2.861,2.75-0.664,3.82a0.981,0.981,0,0,0,.446.99,1.118,1.118,0,0,0,1.147.06l3.4-1.76,3.4,1.76a1.117,1.117,0,0,0,1.146-.06,0.98,0.98,0,0,0,.444-0.99l-0.663-3.82,2.86-2.75A0.964,0.964,0,0,0,500.943,3644.22Z" transform="translate(-486 -3639)"/></symbol><symbol id="survey" viewBox="0 0 20 20"><path d="m 8.9,2.1 0,0 c -5,0 -8.9,4 -8.9,9 0,4.9 4,9 8.9,9 4.9,0 8.9,-4 8.9,-9 -2.3,0 -8.9,0 -8.9,0 0,0 0,-6.6 0,-9 z M 20,9.6 C 20,4.3 15.7,0 10.4,0 V 9.7 L 20,9.6 z"/></symbol><symbol id="tweet" viewBox="0 0 28 24"><path d="M 28.1,2.8 C 27.1,3.3 25.9,3.6 24.8,3.7 26,3 26.9,1.8 27.4,0.4 26.3,1.1 25,1.6 23.7,1.9 22.6,0.7 21.1,0 19.5,0 c -3.2,0 -5.8,2.7 -5.8,6 0,0.5 0.1,0.9 0.2,1.4 C 9.1,7.1 4.8,4.8 1.9,1.1 1.4,2 1.1,3 1.1,4.1 c 0,2.1 1,3.9 2.6,5 -1,0 -1.9,-0.3 -2.6,-0.8 v 0.1 c 0,2.9 2,5.3 4.7,5.9 -0.5,0.1 -1,0.2 -1.5,0.2 -0.4,0 -0.7,0 -1.1,-0.1 0.7,2.4 2.9,4.1 5.4,4.2 -2,1.6 -4.5,2.6 -7.2,2.6 -0.5,0 -0.9,0 -1.4,-0.1 2.6,1.7 5.6,2.7 8.9,2.7 10.7,0 16.6,-9.2 16.6,-17.1 0,-0.3 0,-0.5 0,-0.8 0.8,-0.8 1.8,-1.9 2.6,-3.1 z"/></symbol><symbol id="twitter-v2" viewBox="0 0 34 34"><path d="M12.9,27.8c0,0-0.1,0-0.1,0c-5,0-8-2.4-8.1-2.5l-1.5-1.3l1.9,0.4c0,0,3,0.6,6.6-1.5C8.2,22,7.4,19,7.4,19
+ l-0.2-0.7l0.7,0.1c0.1,0,0.2,0,0.3,0c-2.2-1.4-2.8-4-2.7-5l0.1-0.7L6.2,13c0.2,0.1,0.5,0.2,0.7,0.3c-1.1-1.3-2.2-3.6-0.7-6.7L6.6,6
+ L7,6.6c3.9,4.4,8.6,5.4,10.2,5.4c-0.4-3.2,2-5.9,4.5-6.5c2.5-0.6,4.5,0.6,5.5,1.5l3.7-1.5c0,0-0.7,1.8-2.1,3.3l2.9-1.1l-0.4,0.9
+ c0,0.1-0.8,1.3-2.2,2.5c0.1,5.6-2.8,10.4-5.3,12.6C20.7,26.5,17.2,27.8,12.9,27.8z"/></symbol><symbol id="up-arrow" viewBox="0 0 21.2 14.1"><rect x="-0.4" y="4.6" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -2.9289 7.0711)" width="15" height="5"/><rect x="6.6" y="4.6" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 19.1421 22.0711)" width="15" height="5"/></symbol><symbol id="user" viewBox="0 0 32 32"><path d="M8.4,23.9c-0.2,0-0.4-0.1-0.4-0.3c-0.1-0.2,0.1-0.5,0.3-0.5c1.6-0.4,3.9-1.2,4.4-1.7
+ c0.1-0.2,0.1-1,0-1.9c-0.7-0.6-1.2-1.5-1.4-2.4c-0.2-0.9-0.5-2.5-0.6-3.3c-0.1-1-0.1-1.4,0-2.1l0-0.1c0.3-2.2,2.5-3.9,5.2-3.9
+ c2.7,0,4.9,1.7,5.2,3.9l0,0.1c0.1,0.6,0.1,1.1,0,2.1c-0.1,0.8-0.4,2.5-0.6,3.3c-0.2,0.9-0.7,1.7-1.4,2.4c-0.1,0.8-0.1,1.7,0,1.9
+ c0.5,0.5,3,1.3,4.5,1.7c0.2,0.1,0.4,0.3,0.3,0.5s-0.3,0.4-0.5,0.3c-0.7-0.2-4.2-1-5-2c-0.5-0.6-0.3-2.1-0.2-2.7
+ c0-0.1,0.1-0.2,0.1-0.3c0.6-0.5,1-1.2,1.2-2c0.2-0.8,0.5-2.4,0.6-3.2c0.1-0.9,0.1-1.2,0-1.8l0-0.1C20,10,18.2,8.6,15.9,8.6
+ c-2.2,0-4.1,1.3-4.3,3.1l0,0.1c-0.1,0.6-0.1,1,0,1.9c0.1,0.8,0.4,2.4,0.6,3.2c0.2,0.8,0.6,1.5,1.2,2c0.1,0.1,0.1,0.2,0.1,0.3
+ c0.1,0.6,0.3,2.2-0.2,2.7c-0.8,0.9-4.1,1.8-4.8,2C8.5,23.9,8.4,23.9,8.4,23.9z"/><path d="M16,30.3c-7.7,0-13.9-6.2-13.9-13.9C2.1,8.8,8.3,2.5,16,2.5c7.7,0,13.9,6.2,13.9,13.9
+ C29.9,24.1,23.7,30.3,16,30.3z M16,3.4c-7.2,0-13,5.8-13,13s5.8,13,13,13s13-5.8,13-13S23.2,3.4,16,3.4z"/></symbol><symbol id="video-round" viewBox="0 0 20 20"><path d="M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,.83A9.17,9.17,0,1,0,19.17,10,9.19,9.19,0,0,0,10,.83Z" style="fill:currentColor"/><polygon points="16.17 10 5.83 15.97 5.83 4.06 16.17 10"/></symbol><symbol id="video" viewBox="0 0 14.6 15.85"><path d="M 14.1,7.05 1.5,0.15 c -0.3,-0.2 -0.7,-0.2 -1,0 C 0.2,0.35 0,0.65 0,1.05 v 13.8 c 0,0.4 0.2,0.7 0.5,0.9 0.2,0.1 0.3,0.1 0.5,0.1 0.2,0 0.3,0 0.5,-0.1 l 12.6,-6.9 c 0.3,-0.2 0.5,-0.5 0.5,-0.9 0,-0.4 -0.2,-0.7 -0.5,-0.9 z"/></symbol><symbol id="vote-down" viewBox="0 0 14.44 14.11"><path d="M12.22-.24a0.66,0.66,0,0,0-.61.43v0l-1.45-.07A7.88,7.88,0,0,0,8-.9a13,13,0,0,0-4.42,0S2.1-.84,1.64,1.23c0,0-1.29,4.1.07,5.88,0,0,.62,1.16,3,0.93H5.51s-1.22,3.18.21,4.54c0,0,1.54,1,2.1-.1l0-.1C8.37,11.14,9.34,7.62,11.59,7h3.52s0.41,0,.41-0.6V0.57a0.87,0.87,0,0,0-.76-0.8H12.22Z" transform="translate(-1.09 1.11)"/></symbol><symbol id="vote-up" viewBox="0 0 14.44 14.11"><path d="M4.17,9.17a0.66,0.66,0,0,0,.61-0.43v0L6.24,8.77A7.88,7.88,0,0,0,8.39,9.83a13,13,0,0,0,4.42,0s1.47-.07,1.94-2.14c0,0,1.29-4.1-.07-5.88,0,0-.62-1.16-3-0.93H10.88s1.22-3.18-.21-4.54c0,0-1.54-1-2.1.1l0,0.1C8-2.21,7.05,1.31,4.79,1.89H1.27s-0.41,0-.41.6V8.36a0.87,0.87,0,0,0,.76.8H4.17Z" transform="translate(-0.86 4.06)"/></symbol><symbol id="windows-store" viewBox="0 0 135 40"><g><path class="store-frame" d="m130.2 40h-125.5c-2.6 0-4.7-2.1-4.7-4.7v-30.6c0-2.6 2.1-4.7 4.7-4.7h125.5c2.6 0 4.8 2.1 4.8 4.7v30.5c0 2.7-2.2 4.8-4.8 4.8z" fill="#A6A6A6"/><path d="m134 35.3c0 2.1-1.7 3.8-3.8 3.8h-125.5c-2.1 0-3.8-1.7-3.8-3.8v-30.6c0-2.1 1.7-3.8 3.8-3.8h125.5c2.1 0 3.8 1.7 3.8 3.8v30.6z" class="store-bkg"/></g><g fill="#fff"><path d="m63.5 20.8c0-0.4 0.1-0.7 0.4-1s0.6-0.4 1-0.4 0.8 0.1 1 0.4c0.3 0.3 0.4 0.6 0.4 1s-0.1 0.7-0.4 1-0.6 0.4-1 0.4-0.7-0.1-1-0.4c-0.2-0.3-0.4-0.7-0.4-1m2.6 12.7h-2.3v-9.8h2.3v9.8z"/><path d="m73.1 31.8c0.3 0 0.7-0.1 1.1-0.2l1.2-0.6v2.2c-0.4 0.2-0.8 0.4-1.3 0.5s-1 0.2-1.5 0.2c-1.5 0-2.6-0.5-3.5-1.4s-1.4-2.1-1.4-3.5c0-1.6 0.5-2.9 1.4-3.9s2.2-1.5 3.9-1.5c0.4 0 0.9 0.1 1.3 0.2s0.8 0.2 1.1 0.4v2.2c-0.4-0.3-0.7-0.5-1.1-0.6s-0.8-0.2-1.1-0.2c-0.9 0-1.7 0.3-2.2 0.9s-0.8 1.4-0.8 2.4c0 1 0.3 1.8 0.8 2.3 0.5 0.3 1.2 0.6 2.1 0.6"/><path d="m82 23.5h0.5c0.1 0 0.3 0.1 0.4 0.1v2.3c-0.1-0.1-0.3-0.2-0.5-0.3s-0.5-0.1-0.8-0.1c-0.6 0-1 0.2-1.4 0.7s-0.6 1.2-0.6 2.2v5h-2.3v-9.8h2.3v1.5c0.2-0.5 0.5-1 1-1.3 0.3-0.2 0.8-0.3 1.4-0.3"/><path d="m83 28.7c0-1.6 0.5-2.9 1.4-3.9s2.2-1.4 3.8-1.4c1.5 0 2.7 0.5 3.6 1.4s1.3 2.2 1.3 3.7c0 1.6-0.5 2.9-1.4 3.8-0.9 1-2.2 1.4-3.8 1.4-1.5 0-2.7-0.5-3.6-1.3-0.9-0.9-1.3-2.2-1.3-3.7m2.4-0.1c0 1 0.2 1.8 0.7 2.4s1.1 0.8 2 0.8c0.8 0 1.5-0.3 1.9-0.8s0.7-1.3 0.7-2.4c0-1.1-0.2-1.9-0.7-2.4s-1.1-0.8-1.9-0.8-1.5 0.3-2 0.8c-0.5 0.6-0.7 1.4-0.7 2.4"/><path d="m96.6 26.2c0 0.3 0.1 0.6 0.3 0.8s0.7 0.4 1.4 0.7c0.9 0.4 1.6 0.8 2 1.2 0.4 0.5 0.6 1 0.6 1.7 0 0.9-0.4 1.7-1.1 2.2-0.7 0.6-1.7 0.8-2.9 0.8-0.4 0-0.9 0-1.4-0.2-0.5-0.1-0.9-0.2-1.3-0.4v-2.3c0.4 0.3 0.9 0.5 1.4 0.7s0.9 0.3 1.3 0.3c0.5 0 0.9-0.1 1.2-0.2 0.2-0.1 0.4-0.4 0.4-0.7s-0.1-0.6-0.4-0.8-0.7-0.5-1.5-0.8c-0.9-0.4-1.5-0.8-1.8-1.2-0.4-0.5-0.5-1-0.5-1.7 0-0.9 0.4-1.6 1.1-2.2s1.6-0.9 2.7-0.9c0.3 0 0.7 0 1.2 0.1 0.4 0.1 0.8 0.2 1.1 0.3v2.4c-0.3-0.2-0.7-0.4-1.1-0.5s-0.8-0.2-1.2-0.2-0.8 0.1-1 0.3c-0.4 0.1-0.5 0.3-0.5 0.6"/><path d="m101.8 28.7c0-1.6 0.5-2.9 1.4-3.9s2.2-1.4 3.8-1.4c1.5 0 2.7 0.5 3.6 1.4s1.3 2.2 1.3 3.7c0 1.6-0.5 2.9-1.4 3.8s-2.2 1.4-3.8 1.4c-1.5 0-2.7-0.5-3.6-1.3-0.9-0.9-1.3-2.2-1.3-3.7m2.4-0.1c0 1 0.2 1.8 0.7 2.4s1.1 0.8 2 0.8c0.8 0 1.5-0.3 1.9-0.8s0.7-1.3 0.7-2.4c0-1.1-0.2-1.9-0.7-2.4s-1.1-0.8-1.9-0.8-1.5 0.3-2 0.8c-0.5 0.6-0.7 1.4-0.7 2.4"/><path d="m119.6 25.5v5.1c0 1 0.2 1.8 0.7 2.3s1.2 0.8 2.2 0.8c0.3 0 0.7 0 1-0.1s0.6-0.1 0.7-0.2v-1.9c-0.1 0.1-0.3 0.2-0.5 0.2-0.2 0.1-0.3 0.1-0.5 0.1-0.5 0-0.8-0.1-1-0.4s-0.3-0.7-0.3-1.3v-4.6h2.3v-1.9h-2.3v-2.9l-2.3 0.7v2.2h-3.5v-1.2c0-0.6 0.1-1 0.4-1.3s0.6-0.5 1.1-0.5c0.2 0 0.5 0 0.7 0.1s0.3 0.1 0.4 0.2v-2 1c-0.2-0.1-0.4-0.1-0.6-0.1h-0.8c-1 0-1.9 0.3-2.6 1s-1 1.5-1 2.5v1.4h-1.6v1.9h1.6v8h2.3v-8l3.6-1.1z"/></g><g><polygon points="61.5 19.7 61.5 33.5 59.1 33.5 59.1 22.7 59.1 22.7 54.8 33.5 53.3 33.5 48.9 22.7 48.9 22.7 48.9 33.5 46.7 33.5 46.7 19.7 50.1 19.7 54 29.9 54.1 29.9 58.2 19.7" fill="#fff"/></g><g><rect y="6.1" x="11.1" height="13" width="13" fill="#F25022"/><rect y="6.1" x="25.5" height="13" width="13" fill="#7FBA00"/><rect y="20.5" x="11.1" height="13" width="13" fill="#00A4EF"/><rect y="20.5" x="25.5" height="13" width="13" fill="#FFB900"/></g><g fill="#fff"><path d="m46.1 13.7v-7.4h2.8c0.5 0 0.9 0 1.1 0.1 0.4 0.1 0.7 0.2 0.9 0.3 0.2 0.2 0.4 0.4 0.6 0.7 0.1 0.3 0.2 0.6 0.2 1 0 0.6-0.2 1.2-0.6 1.6s-1.1 0.7-2.2 0.7h-1.9v3h-0.9zm1-3.9h1.9c0.6 0 1.1-0.1 1.3-0.4 0.3-0.2 0.4-0.6 0.4-1 0-0.3-0.1-0.6-0.2-0.8-0.2-0.2-0.4-0.4-0.6-0.4s-0.5-0.1-0.9-0.1h-1.9v2.7z"/><path d="m52.5 11c0-1 0.3-1.7 0.8-2.2 0.5-0.4 1-0.6 1.7-0.6s1.3 0.2 1.8 0.7 0.7 1.1 0.7 2c0 0.7-0.1 1.2-0.3 1.6s-0.5 0.7-0.9 0.9-0.8 0.3-1.3 0.3c-0.7 0-1.4-0.2-1.8-0.7-0.4-0.4-0.7-1.1-0.7-2zm1 0c0 0.7 0.1 1.2 0.4 1.5s0.7 0.5 1.1 0.5 0.8-0.2 1.1-0.5 0.4-0.9 0.4-1.6-0.2-1.2-0.5-1.5-0.7-0.5-1.1-0.5c-0.5 0-0.8 0.2-1.1 0.5s-0.3 0.9-0.3 1.6z"/><path d="m59.4 13.7h-0.8v-7.4h0.9v2.6c0.4-0.5 0.9-0.7 1.5-0.7 0.3 0 0.6 0.1 0.9 0.2s0.5 0.3 0.7 0.6c0.2 0.2 0.3 0.5 0.4 0.9 0.1 0.3 0.2 0.7 0.2 1.1 0 0.9-0.2 1.6-0.7 2.1s-1 0.8-1.6 0.8-1.1-0.3-1.5-0.8v0.6zm0-2.8c0 0.6 0.1 1.1 0.3 1.4 0.3 0.5 0.7 0.7 1.2 0.7 0.4 0 0.7-0.2 1-0.5s0.4-0.9 0.4-1.5c0-0.7-0.1-1.2-0.4-1.5s-0.6-0.5-1-0.5-0.7 0.2-1 0.5-0.5 0.8-0.5 1.4z"/><path d="m64.3 7.3v-1h0.9v1h-0.9zm0 6.4v-5.4h0.9v5.3h-0.9z"/><path d="m70.3 11.9l0.9 0.1c-0.1 0.5-0.4 1-0.8 1.3s-0.9 0.5-1.5 0.5c-0.8 0-1.4-0.2-1.9-0.7s-0.7-1.2-0.7-2c0-0.9 0.2-1.6 0.7-2.1s1.1-0.7 1.8-0.7 1.3 0.2 1.8 0.7 0.7 1.2 0.7 2.1v0.2h-4c0 0.6 0.2 1 0.5 1.3s0.7 0.5 1.1 0.5c0.3 0 0.6-0.1 0.9-0.3 0.2-0.2 0.4-0.5 0.5-0.9zm-3-1.4h3c0-0.4-0.2-0.8-0.3-1-0.3-0.3-0.7-0.5-1.1-0.5s-0.8 0.1-1 0.4c-0.4 0.2-0.6 0.6-0.6 1.1z"/><path d="m72.4 13.7v-5.4h0.8v0.8c0.2-0.4 0.4-0.6 0.6-0.7s0.4-0.2 0.6-0.2c0.3 0 0.6 0.1 0.9 0.3l-0.3 0.8c-0.2-0.1-0.4-0.2-0.7-0.2-0.2 0-0.4 0.1-0.5 0.2-0.2 0.1-0.3 0.3-0.3 0.5-0.1 0.3-0.2 0.7-0.2 1.1v2.8h-0.9z"/><path d="m75.3 13.7v-0.7l3.4-4h-1-2.2v-0.7h4.4v0.6l-2.9 3.4-0.6 0.6h1.1 2.5v0.8h-4.7z"/><path d="m83.3 13.7v-0.7l3.4-4h-1-2.2v-0.7h4.4v0.6l-2.9 3.4-0.6 0.6h1.1 2.5v0.8h-4.7z"/><path d="m92.8 13.7l-1.6-5.3h0.9l0.9 3.1 0.3 1.1c0-0.1 0.1-0.4 0.3-1.1l0.9-3.1h0.9l0.8 3.1 0.3 1 0.3-1 0.9-3.1h0.9l-1.7 5.3h-0.9l-0.9-3.2-0.2-0.9-1.1 4.1h-1z"/><path d="m99.3 7.3v-1h0.9v1h-0.9zm0 6.4v-5.4h0.9v5.3h-0.9z"/><path d="m103.6 12.9l0.1 0.8c-0.3 0.1-0.5 0.1-0.7 0.1-0.3 0-0.6-0.1-0.8-0.2s-0.3-0.2-0.4-0.4-0.1-0.5-0.1-1.1v-3.1h-0.7v-0.7h0.7v-1.3l0.9-0.5v1.9h0.9v0.6h-0.9v3.1 0.5c0 0.1 0.1 0.1 0.2 0.2 0.1 0 0.2 0.1 0.3 0.1h0.5z"/><path d="m104.4 13.7v-5.4h0.8v0.8c0.2-0.4 0.4-0.6 0.6-0.7s0.4-0.2 0.6-0.2c0.3 0 0.6 0.1 0.9 0.3l-0.3 0.8c-0.2-0.1-0.4-0.2-0.7-0.2-0.2 0-0.4 0.1-0.5 0.2-0.2 0.1-0.3 0.3-0.3 0.5-0.1 0.3-0.2 0.7-0.2 1.1v2.8h-0.9z"/><path d="m107.8 15.7l-0.1-0.9c0.2 0.1 0.4 0.1 0.5 0.1 0.2 0 0.4 0 0.5-0.1s0.2-0.2 0.3-0.3c0.1-0.1 0.1-0.3 0.3-0.7 0-0.1 0-0.1 0.1-0.2l-2-5.4h1l1.1 3.1c0.1 0.4 0.3 0.8 0.4 1.2 0.1-0.4 0.2-0.8 0.4-1.2l1.1-3.1h0.9l-2 5.4c-0.2 0.6-0.4 1-0.5 1.2-0.2 0.3-0.3 0.5-0.6 0.7-0.2 0.1-0.5 0.2-0.7 0.2-0.3 0.1-0.5 0.1-0.7 0z"/><path d="m113 13.7v-5.4h0.8v0.8c0.4-0.6 1-0.9 1.7-0.9 0.3 0 0.6 0.1 0.9 0.2s0.5 0.3 0.6 0.5 0.2 0.4 0.3 0.7c0 0.2 0.1 0.5 0.1 0.9v3.3h-0.9v-3.3c0-0.4 0-0.6-0.1-0.8s-0.2-0.3-0.4-0.4c-0.2-0.3-0.4-0.3-0.6-0.3-0.4 0-0.7 0.1-1 0.4-0.3 0.2-0.4 0.7-0.4 1.4v2.9h-1z"/><path d="m118.7 15.7l-0.1-0.9c0.2 0.1 0.4 0.1 0.5 0.1 0.2 0 0.4 0 0.5-0.1s0.2-0.2 0.3-0.3c0.1-0.1 0.1-0.3 0.3-0.7 0-0.1 0-0.1 0.1-0.2l-2-5.4h1l1.1 3.1c0.1 0.4 0.3 0.8 0.4 1.2 0.1-0.4 0.2-0.8 0.4-1.2l1.1-3.1h0.9l-2 5.4c-0.2 0.6-0.4 1-0.5 1.2-0.2 0.3-0.3 0.5-0.6 0.7s-0.5 0.2-0.7 0.2c-0.3 0.1-0.5 0.1-0.7 0z"/></g></symbol><symbol id="wyborcza-logo-square" viewBox="0 0 28 28"><rect fill="currentColor" width="12.22" height="18.84" x="3.56" y="4.58"/><polygon fill="inherit" points="26.73 10.38 25.81 10.38 24.16 16.62 24.03 16.61 22.14 11.2 23.26 10.54 23.26 10.38 18.55 10.38 18.55 10.54 19.29 11.21 22.25 19.53 23.95 19.53 25.31 14.44 25.45 14.44 27.25 19.53 28 19.53 28 14.03 26.73 10.38"/></symbol><symbol id="wyborcza-logo" viewBox="0 0 32.371646 48.557468"><path d="m 58.099892,473.7838 32.371645,0 0,-48.55747 -32.371645,0 0,48.55747 z"/></symbol></svg>
+
+<!-- svgModule v1.0.4 -->
+ +<!--10185197, [ null ], aggregatorModule--> +
+
+ + + + + + +
+
+
+
+
+
+
+ + + + + + +
+ + + +<script type="text/javascript">
+(function(){"undefined"!==typeof gazeta_pl&&"undefined"!==typeof gazeta_pl.mobileInfo&&gazeta_pl.mobileInfo.hasOwnProperty("isMobileDevice")&&(document.body.className+=!0===gazeta_pl.mobileInfo.isMobileDevice?" mobile_client":" desktop_client")})();
+</script>
+
+<script>
+
+
+
+
+ var userStateCls = 'theme_white';
+
+
+var htmlTag = document.getElementsByTagName('html')[0];
+htmlTag.className = htmlTag.className + ' ' + userStateCls;
+</script>
+
+<div id="theme_holder" class="mcBan"></div>
+
+ + + +<script> + var wyborcza_pl = wyborcza_pl || {}; + + wyborcza_pl.userInfo = { + loggedIn: false, + loggedInSoft: false, + email: "", + channel: "", + nick: "", + nickConfirmationPending: false + }; +</script> + + + + + + + + + +<!-- x16 capParams: pl.com.agora.squid.portal2.dto.CapParameters@35596587[active=false,inProgress=false,validUntil=<null>,validPeriod=<null>,recurring=false,paymentUnfinished=false,unfinishedOrderId=<null>,offerId=<null>,lastPayment=<null>,inProgressOrderId=<null>,consentOrderId=<null>,defaultSalesProductId=true,capVisible=false,email=<null>,emailHash=<null>,marketingMessage=<null>,loginChannel=<null>,loginMode=<null>,nick=<null>,nickConfirmationPending=false,loggedIn=false,loggedInSoft=false] --> + + + + + <nav id="wyborczaHat"> + <div class="container-outer page-cap"> + <div class="container-inner"> + <div class="grid-row"> + <div id="wH_container"> + + <section id="wH_nav"> +<div id="wH_logo"> +<a href="http://www.wyborcza.pl/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka2015', 'czapeczka_logo', 'klik_wyborcza.pl',,false]);"> +<span>Wyborcza.pl</span> +<img alt="Wyborcza.pl" src="https://static.im-g.pl/i/obrazki/wyborcza/wyborcza_pl.svg" data-fallback="https://bis.gazeta.pl/im/2/19701/m19701792.png" width="110" height="20" /> +</a> +</div> +<div id="wH_menu"> +<div id="wH_menu_icon"> +<svg class="badge-symbol"> +<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#burger"></use> +</svg> +</div> +<div id="wH_menu_wrapper"> +<div id="wH_links_nav"> +<header><h5>Wyborcza.pl</h5></header> +<ul> +</ul> +</div> +<div id="wH_links_main"> +<header><h5>Nasze serwisy</h5></header> +<ul> +<li class="wH_more"> +<span>Magazyny</span> +<div class="wH_links_sub"> +<ul> +<li> +<a href="http://wyborcza.pl/duzyformat/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Du¿y Format',,false]);"> +Du¿y Format +</a> +</li> +<li> +<a href="http://wyborcza.pl/magazyn/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Magazyn ¦wi±teczny',,false]);"> +Magazyn ¦wi±teczny +</a> +</li> +<li> +<a href="http://wyborcza.pl/alehistoria/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Ale Historia',,false]);"> +Ale Historia +</a> +</li> +<li> +<a href="http://wyborcza.pl/TylkoZdrowie/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Tylko Zdrowie',,false]);"> +Tylko Zdrowie +</a> +</li> +<li> +<a href="http://wyborcza.pl/ksiazki/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Ksi±¿ki. Magazyn do czytania',,false]);"> +Ksi±¿ki. Magazyn do czytania +</a> +</li> +<li> +<a href="http://wyborcza.pl/osiemdziewiec/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Osiem Dziewiêæ',,false]);"> +Osiem Dziewiêæ +</a> +</li> +<li> +<a href="http://wyborcza.pl/Opiekun/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Opiekun',,false]);"> +Opiekun +</a> +</li> +</ul> +</div> +</li> +<li> +<a href="http://wyborcza.biz/biznes/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Wyborcza.biz',,false]);">Wyborcza.biz</a> +</li> +<li> +<a href="http://wyborcza.pl/0,156282.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Wyborcza.Tech',,false]);">Wyborcza.Tech</a> +</li> +<li> +<a href="http://wyborcza.pl/0,160795.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Wyborcza Classic',,false]);">Wyborcza Classic</a> +</li> +<li> +<a href="http://wyborcza.pl/wiecejswiata/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Wiêcej ¦wiata',,false]);">Wiêcej ¦wiata</a> +</li> +<li> +<a href="http://wyborcza.pl/0,87647.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Witamy w Polsce',,false]);">Witamy w Polsce</a> +</li> +<li> +<a href="http://biqdata.wyborcza.pl/biqdata/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_BIQdata',,false]);">BIQdata</a> +</li> +<li> +<a href="http://sonar.wyborcza.pl/sonar/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Sonar',,false]);">Sonar</a> +</li> +<li> +<a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Wysokie Obcasy',,false]);">Wysokie Obcasy</a> +</li> +<li> +<a href="http://cojestgrane24.wyborcza.pl/cjg24/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Co Jest Grane 24',,false]);">Co Jest Grane 24</a> +</li> +<li> +<a href="http://www.logo24.pl/Logo24/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Logo 24',,false]);">Logo 24</a> +</li> +<li> +<a href="http://magazyn-kuchnia.pl/magazyn-kuchnia/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Magazyn Kuchnia',,false]);">Magazyn Kuchnia</a> +</li> +<li> +<a href="http://www.gazeta.pl/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Gazeta.pl',,false]);">Gazeta.pl</a> +</li> +<li class="wH_more"> +<span>Wiadomo¶ci</span> +<div class="wH_links_sub"> +<ul> +<li> +<a href="http://wyborcza.pl/7,101707,24410372,michael-jackson-bral-z-dziecmi-sluby-na-niby-po-premierze.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Michael Jackson: Leaving Neverland',,false]);"> +Michael Jackson: Leaving Neverland +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,75398,24418381,rada-mediow-narodowych-nie-odwola-kurskiego-wniosek-nie-zostal.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Rada Mediów Narodowych: Jaros³aw Kurski',,false]);"> +Rada Mediów Narodowych: Jaros³aw Kurski +</a> +</li> +<li> +<a href="http://warszawa.wyborcza.pl/warszawa/7,54420,24417372,reprywatyzacja-adwokat-robert-nowaczyk-zeznaje-przed-komisja.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Komisja reprywatyzacja: Robert Nowaczyk',,false]);"> +Komisja reprywatyzacja: Robert Nowaczyk +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,75399,24416982,szesc-ofiar-dziennie-na-morzu-srodziemnym.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Morze ¦ródziemne',,false]);"> +Morze ¦ródziemne +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,75399,24416239,wir-polarny-w-usa-sa-ofiary-smiertelne.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_USA: wir polarny',,false]);"> +USA: wir polarny +</a> +</li> +<li> +<a href="http://warszawa.wyborcza.pl/warszawa/7,54420,24415953,bialoleka-w-klebach-dymu-plonie-hala-ewakuowano-setke-osob.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Bia³o³êka: hala na ¯eraniu',,false]);"> +Bia³o³êka: hala na ¯eraniu +</a> +</li> +<li> +<a href="http://rzeszow.wyborcza.pl/rzeszow/7,34962,24416275,ponad-100-osob-zamknietych-w-sadzie-w-przemyslu-jest-informacja.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Przemy¶l: w±glik',,false]);"> +Przemy¶l: w±glik +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,75398,24415430,tasmy-kaczynskiego-wiadomosci-tvp-o-pazernej-wyborczej.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Wiadomo¶ci TVP: ta¶my Kaczyñskiego',,false]);"> +Wiadomo¶ci TVP: ta¶my Kaczyñskiego +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,75398,24415498,tasmy-kaczynskiego-nowe-nagranie-prezesa-pis-beda-mowic-ze.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Ta¶my Kaczyñskiego',,false]);"> +Ta¶my Kaczyñskiego +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,75398,24415440,w-sejmie-debata-o-nbp-poslanka-po-zablokowala-mownice.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Sejm: NBP',,false]);"> +Sejm: NBP +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,75398,24415454,tasmy-kaczynskiego-sprawdzamy-czy-prezes-pis-zlamal-prawo.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Jaros³aw Kaczyñski: ta¶my Kaczyñskiego',,false]);"> +Jaros³aw Kaczyñski: ta¶my Kaczyñskiego +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,75398,24415443,tasmy-kaczynskiego-partia-buduje-wiezowiec-drugie-nagranie.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Ta¶my Kaczyñskiego - drugie nagranie audio i stenogram',,false]);"> +Ta¶my Kaczyñskiego - drugie nagranie audio i stenogram +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,155287,24414148,europejski-raport-o-smogu-polska-walczy-za-slabo.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Smog',,false]);"> +Smog +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,155287,24414565,zlote-dziecko-pis-na-zakrecie-kariery.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Micha³ Krupiñski: ta¶my Kaczyñskiego',,false]);"> +Micha³ Krupiñski: ta¶my Kaczyñskiego +</a> +</li> +<li> +<a href="http://krakow.wyborcza.pl/krakow/7,44425,24415702,wysadzony-bankomat-przy-ul-teligi-powazne-utrudnienia.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Bankomat: ul. Tegli w Krakowie',,false]);"> +Bankomat: ul. Tegli w Krakowie +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,75398,24415472,tasmy-kaczynskiego-pekao-sa-nie-zaprzecza-ze-prezes-krupinski.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Ta¶my Kaczyñskiego: Pekao SA, Micha³ Krupiñski',,false]);"> +Ta¶my Kaczyñskiego: Pekao SA, Micha³ Krupiñski +</a> +</li> +<li> +<a href="http://krakow.wyborcza.pl/krakow/7,44425,24412575,smiertelny-wypadek-w-babicach-kierowca-zginal-na-obwodnicy.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Wypadek w Babicach',,false]);"> +Wypadek w Babicach +</a> +</li> +<li> +<a href="http://poznan.wyborcza.pl/poznan/7,36001,24413925,prezydent-poznania-jacek-jaskowiak-w-szpitalu-na-prawicowych.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Jacek Ja¶kowiak',,false]);"> +Jacek Ja¶kowiak +</a> +</li> +<li> +<a href="http://krakow.wyborcza.pl/krakow/7,44425,24412932,tatry-pod-rysami-zeszla-lawina.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Tatry: lawina pod Rysami',,false]);"> +Tatry: lawina pod Rysami +</a> +</li> +<li> +<a href="http://warszawa.wyborcza.pl/warszawa/7,54420,24411986,pierwszy-pociag-metra-dojechal-na-targowek-kiedy-otwarcie.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Metro Targówek',,false]);"> +Metro Targówek +</a> +</li> +<li> +<a href="http://wyborcza.pl/7,75398,24408844,tasmy-kaczynskiego-partia-buduje-wiezowiec-nagranie-audio.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Ta¶my Kaczyñskiego: audio i stenogram',,false]);"> +Ta¶my Kaczyñskiego: audio i stenogram +</a> +</li> +<li> +<a href="http://wyborcza.pl/alehistoria/7,162090,24414810,31-stycznia-niemcy-do-amerykanow-dajcie-nam-trzy-miesiace.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_31 stycznia',,false]);"> +31 stycznia +</a> +</li> +<li> +<a href="http://wyborcza.pl/TylkoZdrowie/7,157387,24415511,pogoda-w-czwartek-31-stycznia-2019-r.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Pogoda w czwartek 31 stycznia 2019 r.',,false]);"> +Pogoda w czwartek 31 stycznia 2019 r. +</a> +</li> +</ul> +</div> +</li> +<li class="wH_more"> +<span>Serwisy lokalne</span> +<div class="wH_links_sub"> +<ul> +<li> +<a href="http://bialystok.wyborcza.pl/bialystok/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Bia³ystok',,false]);"> +Bia³ystok +</a> +</li> +<li> +<a href="http://bielskobiala.wyborcza.pl/bielskobiala/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Bielsko-Bia³a',,false]);"> +Bielsko-Bia³a +</a> +</li> +<li> +<a href="http://bydgoszcz.wyborcza.pl/bydgoszcz/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Bydgoszcz',,false]);"> +Bydgoszcz +</a> +</li> +<li> +<a href="http://czestochowa.wyborcza.pl/czestochowa/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Czêstochowa',,false]);"> +Czêstochowa +</a> +</li> +<li> +<a href="http://gliwice.wyborcza.pl/gliwice/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Gliwice',,false]);"> +Gliwice +</a> +</li> +<li> +<a href="http://gorzow.wyborcza.pl/gorzow/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Gorzów Wielkopolski',,false]);"> +Gorzów Wielkopolski +</a> +</li> +<li> +<a href="http://katowice.wyborcza.pl/katowice/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Katowice',,false]);"> +Katowice +</a> +</li> +<li> +<a href="http://kielce.wyborcza.pl/kielce/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Kielce',,false]);"> +Kielce +</a> +</li> +<li> +<a href="http://krakow.wyborcza.pl/krakow/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Kraków',,false]);"> +Kraków +</a> +</li> +<li> +<a href="http://lublin.wyborcza.pl/lublin/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Lublin',,false]);"> +Lublin +</a> +</li> +<li> +<a href="http://lodz.wyborcza.pl/lodz/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_£ód¼',,false]);"> +£ód¼ +</a> +</li> +<li> +<a href="http://olsztyn.wyborcza.pl/olsztyn/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Olsztyn',,false]);"> +Olsztyn +</a> +</li> +<li> +<a href="http://opole.wyborcza.pl/opole/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Opole',,false]);"> +Opole +</a> +</li> +<li> +<a href="http://plock.wyborcza.pl/plock/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_P³ock',,false]);"> +P³ock +</a> +</li> +<li> +<a href="http://poznan.wyborcza.pl/poznan/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Poznañ',,false]);"> +Poznañ +</a> +</li> +<li> +<a href="http://radom.wyborcza.pl/radom/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Radom',,false]);"> +Radom +</a> +</li> +<li> +<a href="http://rzeszow.wyborcza.pl/rzeszow/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Rzeszów',,false]);"> +Rzeszów +</a> +</li> +<li> +<a href="http://sosnowiec.wyborcza.pl/sosnowiec/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Sosnowiec',,false]);"> +Sosnowiec +</a> +</li> +<li> +<a href="http://szczecin.wyborcza.pl/szczecin/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Szczecin',,false]);"> +Szczecin +</a> +</li> +<li> +<a href="http://torun.wyborcza.pl/torun/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Toruñ',,false]);"> +Toruñ +</a> +</li> +<li> +<a href="http://trojmiasto.wyborcza.pl/trojmiasto/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Trójmiasto',,false]);"> +Trójmiasto +</a> +</li> +<li> +<a href="http://warszawa.wyborcza.pl/warszawa/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Warszawa',,false]);"> +Warszawa +</a> +</li> +<li> +<a href="http://wroclaw.wyborcza.pl/wroclaw/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Wroc³aw',,false]);"> +Wroc³aw +</a> +</li> +<li> +<a href="http://zielonagora.wyborcza.pl/zielonagora/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Zielona Góra',,false]);"> +Zielona Góra +</a> +</li> +</ul> +</div> +</li> +<li class="wH_more"> +<span>Inne serwisy</span> +<div class="wH_links_sub"> +<ul> +<li> +<a href="http://www.tokfm.pl/Tokfm/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Tok FM',,false]);"> +Tok FM +</a> +</li> +<li> +<a href="http://www.edziecko.pl/edziecko/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Dziecko',,false]);"> +Dziecko +</a> +</li> +<li> +<a href="http://zdrowie.gazeta.pl/Zdrowie/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Zdrowie',,false]);"> +Zdrowie +</a> +</li> +<li> +<a href="http://www.blox.pl/html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Blogi',,false]);"> +Blogi +</a> +</li> +<li> +<a href="http://pogoda.gazeta.pl/" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Pogoda',,false]);"> +Pogoda +</a> +</li> +<li> +<a href="http://www.sport.pl/sport/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Sport',,false]);"> +Sport +</a> +</li> +<li> +<a href="http://podroze.gazeta.pl/podroze/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Podró¿e',,false]);"> +Podró¿e +</a> +</li> +<li> +<a href="http://forum.gazeta.pl/forum/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Forum',,false]);"> +Forum +</a> +</li> +<li> +<a href="http://forum.gazeta.pl/forum/0,0.html" onClick="_gaq.push(['_trackEvent', 'czapeczka_nowa', 'czapeczka_menu', 'klik_Forum',,false]);"> +Forum +</a> +</li> +</ul> +</div> +</li></ul> +</div> +</div> +</div> +</section><!-- UZREditor --><!--22573586,aliasOf--><!-- htmEOF -->
+ + +<div id="wH_messages"> + + + + + + + + + <div id="wH_user_msg" class="mcBan"> + <div id="wH_user_msg_content" data-cta="1sqbl-5basic" data-cta-category="czapeczka napis"> + <a href="http://prenumerata.wyborcza.pl/lp/0,145442.html?cta=1sqbl-2an-5basic">Wypróbuj od 19,90 z³</a> + </div> + </div> + <svg class="badge-symbol"> + <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#bell"></use> + </svg> + <div id="wH_action" class="mcBan"> + <a id="wH_action_btn" class="wH_btn" data-cta="1sqbl-2an-5basic" data-cta-category="czapeczka przycisk" href="http://prenumerata.wyborcza.pl/lp/0,145442.html?cta=1sqbl-2an-5basic">Kup teraz</a> + </div> + +<!-- <div id="wH_user_msg" class="mcBan"> + <div id="wH_user_msg_content" data-cta="1sqbl-5basic" data-cta-category="czapeczka napis"> + <a href="http://prenumerata.wyborcza.pl/lp/0,166591,24048616.html?cta=1sqbl-3an-550journalists?actionId=7518533d-2606-4905-bdaf-00a9eb088c7b&campaignId=4e827602-54e2-404d-8b18-d9e98d19ee3c">Twoje sprawy, nasza praca. Subskrybuj za pó³ ceny i czytaj Wyborcza.pl</a> + </div> + </div> + <svg class="badge-symbol"> + <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#bell"></use> + </svg> + <div id="wH_action" class="mcBan"> + <a id="wH_action_btn" class="wH_btn" data-cta="1sqbl-2an-5basic" data-cta-category="czapeczka przycisk" href="http://prenumerata.wyborcza.pl/lp/0,166591,24048616.html?cta=1sqbb-3an-550journalists?actionId=e246120c-339b-4506-ab5c-1a28c277b636&campaignId=4e827602-54e2-404d-8b18-d9e98d19ee3c">Skorzystaj z promocji -50%</a> + </div> --> + + + + +</div> + + +<div id="wH_activity"> + + + + + + <div id="wH_user"> + <form id="wH_login_form" method="POST"> + <input type="hidden" name="SsoSessionPermanent"> + <input type="hidden" name="host"> + <div id="wH_login_btn" class="hat-log-in" onclick="_gaq.push(['_trackEvent', 'CzapeczkaRWD', 'Logowanie', location.hostname, , true]);"> + Logowanie + <svg class="badge-symbol"> + <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user"></use> + </svg> + </div> + </form> + </div> + + + + +</div> + + + </div> + </div> + </div> + </div> + </nav> + + + + + + + + + + +<!-- squidCapBean v1.1 --> + +<!--9638935, [ /fix/modules/wyborcza/cap/cap.jsp ], squidCapBean--> +
+
+<script type="text/javascript">
+ //<![CDATA[
+ try {
+ var domain_marketing_params = {
+ counter: null,
+ disable: false,
+ differentiateDomainMarketing: 'wsj2017biz',
+ source: '',
+ tags: ["jako¶æ powietrza","smog","wêgiel","zanieczyszczenie powietrza"],
+ clsarticle: '',
+ marketingDomainRequestParams: '',
+ isActive: 'false',
+ validPeriod: '',
+ subnetCompany: '',
+ freeActivation: 'unknown',
+ agreementState: 'false',
+ loginChannel: '',
+ dmcampaign: '',
+ hardPaywall: true,
+ recoveryMethod: '',
+ rodo22: 'false'
+ };
+ } catch (e) { };
+ //]]>
+</script>
+
+<script>
+ customDataLayer = window.customDataLayer || {};
+ customDataLayer.customer = customDataLayer.customer || {};
+ customDataLayer.customer.state = 'anonymous';
+ customDataLayer.customer.validPeriod = '';
+ document.cookie = 'customDataLayer_customer=' + encodeURIComponent(JSON.stringify(customDataLayer.customer)) + '; domain=wyborcza.pl; path=/';
+</script>
+
+<!-- domain-marketing-module v1.0 -->
+ +<!--13289421, [ /fix/modules/wyborcza/portal/domainMarketingModule.jsp ], domainMarketingModule--> +
+
+
+
+ <div class="container-outer page-top">
+ <div class="container-inner">
+ <div class="grid-row">
+ <div class="grid-col-4-4 column-58">
+
+
+
+ <div class="winieta-promo">
+ <header id="pageHead" data-like-shift="1"> +<div class="c0"> +<div class="imgw"> +<a id="LinkArea:winietabiz" href="http://wyborcza.biz/biznes/0,0.html" title="Wyborcza.biz"><img src="http://static.im-g.pl/i/obrazki/wyborcza2017/winiety_themes/wyborcza_biz.svg" data-fallback="https://bis.gazeta.pl/im/7/22716/m22716587.png" alt="Wyborcza.biz"></a> +</div> +<div class="header-date" id="header-day"><span class="day" id="header-date-day"></span><span class="date" id="header-date-date"></span></div> +<script> +(function() { +var a=document.getElementById("header-date-day"),b=document.getElementById("header-date-date"),c=(now && now.getUTCDate()>1)?new Date(now):new Date,d="niedziela poniedzia\u0142ek wtorek \u015broda czwartek pi\u0105tek sobota".split(" ")[c.getDay()],e=c.getDate(),f=c.getMonth()+1,g=c.getFullYear(),h="";10>e&&(e="0"+e.toString());10>f&&(f="0"+f.toString());h=e+"."+f+"."+g;a.innerHTML=d;b.innerHTML=h; +})(); +</script> +</div> +</header><!-- UZREditor --><!-- htmEOF --> +<!--22776313, [ /htm/22776/j22776313.htm ], null--> +
+
+
+
+<div id="071-WINIETA" class="adviewDFPBanner DFP-071-WINIETA">
+ <span class="banLabel" style="display: none;">REKLAMA</span>
+ <div id='div-gpt-ad-071-WINIETA-0'>
+ <script type='text/javascript'>
+ if(dfpParams.slots['071-WINIETA'] && dfpParams.slots['071-WINIETA'].autoLoad) {
+ if (adviewDFP && adviewDFP.scrollSlot) adviewDFP.scrollSlot.push('071-WINIETA');
+ } else {
+ googletag.cmd.push(function() { googletag.display('div-gpt-ad-071-WINIETA-0'); });
+ }
+
+ </script>
+ </div>
+</div>
+
+
+<!-- v2.2 --> +<!--11070029, [ /tpl/ads/prod/dfpSlot.jsp ], dfpBanersSlotBean--> +
+ </div>
+
+
+
+
+
+
+
+
+<!-- Menubar20_nst API ver 1.0 -->
+
+ <!-- ver 0.45 newMenuBar:false, menuType: 0, nst:, szukaj:false, szukajNSTAlias:null -->
+
+ <nav data-position="nawigacja" id="navH" class="level0"><ul class='p0'><li id='e1' class=' '><a href='http://wyborcza.pl/0,155287.html#TRNavSST' title='Aktualno¶ci '>Aktualno¶ci</a></li><li id='e2' class=' '><a href='http://wyborcza.biz/biznes/0,147768.html#TRNavSST' title='Podatki '>Podatki</a></li><li id='e3' class=' '><a href='http://wyborcza.biz/biznes/0,147582.html#TRNavSST' title='Finanse osobiste '>Finanse osobiste</a></li><li id='e4' class=' '><a href='http://wyborcza.biz/biznes/0,147880.html#TRNavSST' title='ZUS i emerytury '>ZUS i emerytury</a></li><li id='e5' class=' '><a href='http://wyborcza.biz/Gieldy/0,114514.html#TRNavSST' title='Gie³da '>Gie³da</a></li><li id='e6' class=' '><a href='http://wyborcza.biz/Waluty/0,111138,8932151,,,Kursy_srednie_walut_NBP,A.html#TRNavSST' title='Kursy walut '>Kursy walut</a></li><li id='e7' class=' active'><a href='http://wyborcza.biz/biznes/0,147743.html#TRNavSST' title='Konsument i zakupy '>Konsument i zakupy</a></li><li id='e8' class=' '><a href='http://wyborcza.biz/pieniadzeekstra/0,0.html#TRNavSST' title='Pieni±dze Ekstra '>Pieni±dze Ekstra</a></li><li id='e9' class=' '><a href='http://wyborcza.biz/biznes/0,147758.html#TRNavSST' title='Nieruchomo¶ci '>Nieruchomo¶ci</a></li><li id='e10' class=' '><a href='http://wyborcza.biz/biznes/0,159911.html#TRNavSST' title='Praca '>Praca</a></li><li id='e11' class=' '><a href='http://www.komunikaty.pl/komunikaty/#TRNavSST' title='Komunikaty '>Komunikaty</a></li><li id='e12' class=' '><a href='##TRNavSST' title='Wiêcej '>Wiêcej</a><ul class='p1'><li id='e12_1' class=' '><a href='http://wyborcza.pl/0,155290.html#TRNavSST' title='Opinie '>Opinie</a></li><li id='e12_2' class=' '><a href='http://wyborcza.biz/biznes/0,163992.html#TRNavSST' title='Finanse ma³ej firmy '>Finanse ma³ej firmy</a></li><li id='e12_3' class=' '><a href='http://wyborcza.biz/biznes/0,147584.html#TRNavSST' title='W³asna firma '>W³asna firma</a></li><li id='e12_4' class=' '><a href='http://wyborcza.pl/0,156282.html#TRNavSST' title='Technologie '>Technologie</a></li><li id='e12_5' class=' '><a href='http://wyborcza.biz/biznes/0,156481.html#TRNavSST' title='Motoryzacja i podró¿e '>Motoryzacja i podró¿e</a></li><li id='e12_6' class=' '><a href='http://wyborcza.biz/akcjespecjalne/0,154807.html#TRNavSST' title='Przedsiêbiorca Roku '>Przedsiêbiorca Roku</a></li></ul></li></ul></nav>
+
+
+ <div class="mod mod_search" id="pageSearch"><div class="visible"><form><fieldset><input id="pageSearchQ"><input value="Szukaj" type="submit"></fieldset></form></div><div class="hidden"><form data-target="serwis" data-default method="get" action="http://wyborcza.biz/biznes/wyszukaj/artykul"><p><input type="hidden" data-query name="query"/><input value="" name="" type="hidden"></p></form></div></div> +<!--21407274, [ /htm/21407/n21407274.htm ], null--> +
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+
+ <section class="ads ads-top container-outer">
+ <div class="container-inner">
+ <div class="grid-row">
+ <div class="grid-col-wide">
+
+
+
+<div id="001-TOPBOARD" class="adviewDFPBanner DFP-001-TOPBOARD">
+ <span class="banLabel" style="display: none;">REKLAMA</span>
+ <div id='div-gpt-ad-001-TOPBOARD-0'>
+ <script type='text/javascript'>
+ if(dfpParams.slots['001-TOPBOARD'] && dfpParams.slots['001-TOPBOARD'].autoLoad) {
+ if (adviewDFP && adviewDFP.scrollSlot) adviewDFP.scrollSlot.push('001-TOPBOARD');
+ } else {
+ googletag.cmd.push(function() { googletag.display('div-gpt-ad-001-TOPBOARD-0'); });
+ }
+
+ </script>
+ </div>
+</div>
+
+
+<!-- v2.2 --> +<!--10185259, [ /tpl/ads/prod/dfpSlot.jsp ], dfpBanersSlotBean--> +
+ </div>
+ </div>
+ </div>
+ </section>
+
+ <main class="content container-inner">
+
+
+
+ <div class="grid-row">
+ <div class="grid-col-wide">
+
+
+
+
+
+
+
+
+
+
+ <header id="art-header" class="art-header ">
+ <div id="art-tags" class="art-tags">
+
+
+
+
+
+ <a href="http://wyborcza.biz/biznes/0,147743.html" title="Konsument i zakupy"
+ class="art-headline-tag"> <span class="art-tag-label">Konsument i zakupy</span></a>
+
+
+
+
+
+ </div>
+
+ <div class="art-headline" role="headline">
+
+
+
+
+ <h1 class="art-title">Pomys³ na biznes: chusta, która chroni przed smogiem</h1>
+ </div>
+
+ <div class="art-header-meta">
+
+
+ <div class="art-authors">
+ <span class="art-author">Micha³ Fr±k</span>
+ </div>
+
+
+
+ <div class="art-author-meta-container">
+
+ <time id="art-datetime" class="art-datetime"
+ datetime="2019-01-31">31 stycznia 2019 | 15:32</time>
+
+ </div>
+ </div>
+ </header>
+
+
+
+<!-- articleMetadata v1.4 -->
+ +<!--9534510, [ /fix/modules/wyborcza/articleMetadata.jsp ], articleMetadata--> +
+ </div>
+ </div>
+
+
+
+
+ <div class="grid-row splint-parent">
+
+
+
+ <section class="article-and-social grid-col-3-4" >
+ <div class="article">
+ <article class="article-content">
+
+
+
+ <div class="article-image">
+
+
+
+
+
+
+
+
+<!-- 0/4,24414148 --> +<!-- 1/4,24376685 --> +<!-- 2/4,24349296 --> +<!-- 3/4,24302580 --> +<!-- 0/4,24414148 --> +<!-- 1/4,24376685 --> +<!-- 2/4,24349296 --> +<!-- 3/4,24302580 --> +
+
+
+
+
+
+
+ <div id="gazeta_article_image"><!-- rel max = 4 -->
+ <div class="article-image-photo">
+
+ <img border="0" src="https://bi.im-g.pl/im/f7/49/17/z24418295Q,Prace-nad-projektem-chusty-antysmogowej-rozpoczely.jpg" title="Prace nad projektem chusty antysmogowej rozpoczê³y siê w lutym 2018 roku, a w styczniu 2019 pojawi³a siê na rynku" alt="Prace nad projektem chusty antysmogowej rozpoczê³y siê w lutym 2018 roku, a w styczniu 2019 pojawi³a siê na rynku">
+ <figure class="box-label-related"><svg class="icon"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#gallery"></use></svg><figcaption>1 ZDJĘCIE</figcaption></figure>
+
+
+
+
+
+
+
+ </div>
+ <div class="article-image-desc">
+ <p class="desc">Prace nad projektem chusty antysmogowej rozpoczê³y siê w lutym 2018 roku, a w styczniu 2019 pojawi³a siê na rynku<span> (MATERIA£Y PRASOWE)</span></p>
+
+
+
+ </div>
+
+ </div><!-- #gazeta_article_image -->
+
+
+ <!-- bl sstx -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- plistaRelated v 1.04 -->
+ +<!--9638972, [ /fix/modules/plistaRelated.jsp ], null--> +
+ </div>
+
+
+
+ + + + +<section class="article-lead">Filtr ma tak dok³adny, ¿e zatrzymuje nawet wirusy i bakterie. Trójka wroc³awian stworzy³a chustê, która chroni przed smogiem. </section> + + + + + + + + <section class="article-text"> + +
+
+
+<!-- SQUID_PARAMS: SquidPaywallLock [subnetAccessGranted=false, cookieDisabled=false, javaScriptDisabled=false, referrer=null, saleInProgress=false, paymentUnfinished=false, consentOrderId=null, unfinishedOrderId=null, validUntil=null, loggedInHard=false, loggedInSoft=false, counterShowIndicator=null, remainingVisitTime=null, exclusiveContent=true, loopholeDetected=false, isAssetUnlocked=false, closeByUrlParameter=null, aliasLock=/aliasy/dm/planbhardpaywallclosearticleall.htm, aliasUpper=, aliasLower=, aliasLink=, placeholders={standardLock=/aliasy/dm/planbclosearticleanonymous.htm, specialSectionLowerOpen=/aliasy/paywall/v12/empty.htm, standardLockUserLoggedIn=/aliasy/dm/planbclosearticleinactive.htm, activeOpenUpper=/aliasy/paywall/v12/empty.htm, upperOpen=/aliasy/dm/planbopenarticleupperzajawka.htm, subnetOpenLower=/aliasy/paywall/v12/empty.htm, closeByUrl=/aliasy/wejsciezmailingu.htm, loopholeDetected=/aliasy/dm/planbclosearticleloophole.htm, googleReferrerAnonymous=/aliasy/dm/planbopenarticlegoogleanonymous.htm, lowerOpenExclusive=/aliasy/paywall/v12/empty.htm, gazetaReferrerWeekendInactive=/aliasy/dm/planbclosearticlegaplweekend.htm, facebookReferrerAnonymous=/aliasy/dm/planbopenarticlefacebookanonymous.htm, cookieDisabled=/aliasy/wyborcza/nocookiesbox.htm, standardOpenUserLoggedIn=/aliasy/dm/pustazajawkav2.htm, gazetaReferrerNormalInactive=/aliasy/dm/planbopenarticlegaplpnpt.htm, specialSectionUpperOpen=/aliasy/paywall/v12/empty.htm, gazetaReferrerNormal=/aliasy/dm/planbopenarticlegaplpnpt.htm, subnetOpenApper=/aliasy/paywall/v12/empty.htm, activeOpenLower=/aliasy/paywall/v12/empty.htm, lowerOpen=/aliasy/dm/planbopenarticleanonymous.htm, exclusiveContentLock=/aliasy/dm/planbhardpaywallclosearticleall.htm, paymentFailed=/aliasy/paywall/v12/nieudana.jsp, serviceNotStarted=/aliasy/paywall/v12/uruchom.jsp, inProgressLock=/aliasy/paywall/v12/czekamy.htm, gazetaReferrerWeekend=/aliasy/dm/planbclosearticlegaplweekend.htm, specialSectionClose=/aliasy/dm/closearticleanonymousroot.htm, facebookReferrerInactive=/aliasy/dm/planbopenarticlefacebookinactive.htm, javascriptDisabled=/aliasy/paywall/v12/nojavascript.htm, upperOpenExclusive=/aliasy/dm/openarticleupperhardpaywall.htm, googleReferrerInactive=/aliasy/dm/planbopenarticlegoogleinactive.htm}, aliasEnabled=true, isPaywallException=false, hashedLogin=null, defaultSalesProductId=true] ; accessEnabled=false ; accessPaid=false ; locked=true -->
+
+<script type="text/javascript">
+ //<![CDATA[
+ try {
+
+ var pw_application_data = {
+ UID: '',
+ RemainingAccess: '',
+ Alias: '/aliasy/dm/planbhardpaywallclosearticleall.htm',
+ Paid: 'false',
+ PaywallType: 'Hard',
+ Access: 'false',
+ AccessTo: ''
+ };
+
+ var pw_article = {
+ url: 'wyborcza.biz/biznes/7,147743,24417936,pomysl-na-biznes-chusta-ktora-chroni-przed-smogiem.html',
+ title: '',
+ lead: 'Filtr ma tak dok³adny, ¿e zatrzymuje nawet wirusy i bakterie. Trójka wroc³awian stworzy³a chustê, która chroni przed smogiem. '
+ };
+
+ var wyborcza_pl = wyborcza_pl || {};
+ wyborcza_pl.bigData = {
+ EVENT_NAME: "pwdataready",
+ init: function () {
+ var a = "undefined" != typeof pw_application_data;
+ a && this.createEvent()
+ },
+ createEvent: function () {
+ var a = wyborcza_pl.bigData,
+ b = {};
+ document.createEvent ? (b = document.createEvent("HTMLEvents"), b.initEvent(a.EVENT_NAME, !0, !0)) : (b = document.createEventObject(), b.eventType = a.EVENT_NAME), b.eventName = a.EVENT_NAME, document.createEvent ? document.dispatchEvent(b) : document.fireEvent("on" + b.eventType, b)
+ }
+ }, wyborcza_pl.bigData.init();
+
+ } catch (e) {
+ }
+ ;
+ //]]>
+</script>
+
+
+
+<script>
+ //<![CDATA[
+ var gazeta_pl = gazeta_pl || {};
+ gazeta_pl.Config = gazeta_pl.Config || {};
+ gazeta_pl.Config.Squid = {
+ domain: 'GQOnEDUr8VUlxDfzolv2hQ',
+ luid: '',
+ dc: ''
+ };
+ //]]>
+</script>
+
+<!-- paywallScriptModule 1.1 -->
+ +<!--13124793, [ /fix/modules/wyborcza/paywall/paywallScriptModule.jsp ], paywallScriptModule--> + +
+
+
+
+
+<!-- paywallUpperPlaceholder 1.1 -->
+ +<!--13124791, [ /fix/modules/wyborcza/paywall/paywallUpperPlaceholder.jsp ], paywallUpperPlaceholder--> + + + + +<html> + <head></head> + <body> + <section class="art_content" itemprop="articleSection"> + <p class="art_paragraph">Choć Wrocław to piękne miasto, często pojawia się w polskiej czołówce tych najbardziej ogarniętych smogiem. Zdarza się, że i w światowym rankingu zajmuje wysokie lokaty. Wszystko zależy od tego, jaka akurat jest pogoda.</p> + <p class="art_paragraph">Trójka zaniepokojonych wrocławian od dawna obserwuje wskazania dwóch oficjalnych stacji pomiarowych. I często aż strach jest wyjść z domu. Zresztą w nim też nie jest dużo lepiej.</p> + <p class="art_paragraph">– Szkodliwe cząsteczki unoszące się w smogu są bardzo małe. Gdy ich stężenie jest wysokie, dostają się również do wewnątrz mieszkań. A to oznacza, że przed smogiem nie da się całkowicie ochronić, zamykając drzwi i okna – opowiada Adam Muszyński oraz Diana i Przemek Jaworscy, założyciele firmy produkującej innowacyjny element ubioru chroniący przed smogiem.</p> + <p class="art_paragraph">Oni, jak i wielu ich znajomych, chcieli zadbać o zdrowie. Jednym ze sposobów na to jest noszenie specjalnej maseczki z filtrem. Do obrazka, na którym ludzie mają pozasłaniane białymi maseczkami twarze, przywykliśmy oglądając relacje z największych miast Azji, gdzie problem smogu jest szczególnie widoczny.</p> + </section> + </body> +</html> + + +<!--13006101, [ /tpl/prod/content/article/modules/article_body_sst.jsp ], awdArticleBodySstModuleTomcat--> + + + + + + + +<!-- percentageOfArticleBehindPaywallModule 1.1 --> + +<!--13270618, [ /fix/modules/wyborcza/percentageOfArticleBehindPaywallModule.jsp ], percentageOfArticleBehindPaywallModule--> + +
+
+
+
+ <div class="mcBan" id="mcBan_1">
+ <section class="padlock +padlock-article-title-align-center +locked +padlock-text-align-center" +data-cta="1pbox-2hd-5basic" data-cta-category="zajawka zamkniecia"> +<header class="padlock-header"> +<figure class="padlock-header-symbol"> +<svg class="icon"> +<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#diamond"></use> +</svg> +</figure> +<span class="padlock-header-msg">Artyku³ dostêpny tylko w prenumeracie cyfrowej Wyborczej</span> +</header> +<div class="padlock-main"> +<div class="padlock-body-container"> +<article class="padlock-article"> +<h3 class="padlock-article-title">Wypróbuj cyfrow± Wyborcz±</h3> +<p class="padlock-article-lead">Nieograniczony dostêp do serwisów informacyjnych, biznesowych, lokalnych i wszystkich magazynów Wyborczej</p> +</article> +<div class="padlock-action" data-utilize-child="true" data-utilize="x"> +<a class="padlock-action-url" href="http://prenumerata.wyborcza.pl/lp/0,145442.html?cta=1pbox-2hd-5basic"> +Wypróbuj teraz od 19,90 z³ +</a> +</div> +<footer class="padlock-footer"> +<ul class="padlock-footer-list"> +<li class="padlock-footer-list-login"> +<a class="pianoLoginBoxBtn" href="#"> +Zaloguj siê +</a> +</li> +<li class="padlock-footer-list-contact"> +<a href="mailto:pomoc@wyborcza.pl"> +Kontakt +</a> +</li> +</ul> +</footer> +</div> +</div> +</section><!-- UZREditor --><!--22768337,aliasOf--><!-- htmEOF -->
+ </div>
+
+
+<!-- paywallBottomPlaceholder 1.1 -->
+ +<!--13124792, [ /fix/modules/wyborcza/paywall/paywallBottomPlaceholder.jsp ], paywallBottomPlaceholder--> + + + </section> + + + + +<!-- articleModule v1.5 --> + +<!--9638918, [ /fix/modules/wyborcza/articleModule.jsp ], wyborczaArticleModule--> +
+
+
+
+
+
+<!-- partnerInfoModule -->
+ +<!--11917370, [ /fix/modules/wyborcza/portal/partnerInfoModule.jsp ], emptyBean--> +
+
+
+
+
+
+
+<!-- ContentHolderExtractorModule v1.0.5 -->
+ +<!--13198008, [ /fix/modules/wyborcza/portal/contentHolderExtractorModule.jsp ], contentHolderExtractorModule--> +
+
+
+
+ </article>
+ <div class="show-survey-quiz">
+
+ </div>
+ </div>
+
+
+
+
+
+
+ <!--supertag-start -->
+
+
+
+
+
+
+
+
+
+
+
+
+ <!-- supertag-end -->
+
+ <section class="post-article">
+
+
+
+ <div class="post-article-content-holder column-54" data-position="54,1-5">
+
+
+ + + + +<!-- (~MODSTART : 7 :21407481) DFP 1.2 --> + + + + +<div class="index zi_index_read_other"> + + <div class="head"> + + <h3> + Inne + </h3> + + + </div> + <div class="body"> + <ul> + + + + + + + + <li class="entry even article" > + + + + + + + + + <div class="imgw"> + + + + <ul> + <li > + <a href="http://wyborcza.biz/biznes/7,147743,24418098,inwestujemy-w-oczyszczacz-powietrza-podpowiadamy-jak-dobrac.html"> + <img src="https://bi.im-g.pl/im/f9/49/17/z24418297II,Oczyszczacze-powietrza-pozwola-nam-zdrowo-oddychac.jpg"/> + </a> + + + </li> + </ul> + + + </div> + + + + + + + + + + + + + + + + + + + + + + + + + + + <span class="base"><a href="http://wyborcza.biz/biznes/0,147743.html">Konsument i zakupy</a> + </span> + + + + + + + + + <h4> + <a title="Inwestujemy w oczyszczacz powietrza. Podpowiadamy, jak dobraæ urz±dzenie i ile to kosztuje" href="http://wyborcza.biz/biznes/7,147743,24418098,inwestujemy-w-oczyszczacz-powietrza-podpowiadamy-jak-dobrac.html">Inwestujemy w oczyszczacz powietrza. Podpowiadamy, jak dobraæ urz±dzenie i ile to kosztuje</a> + </h4> + + + + + + + + + + + + + + + + </li> + + + + + + + + + + + + <li class="entry odd article" > + + + + + + + + + <div class="imgw"> + + + + <ul> + <li > + <a href="http://wyborcza.biz/biznes/7,147743,24417936,pomysl-na-biznes-chusta-ktora-chroni-przed-smogiem.html"> + <img src="https://bi.im-g.pl/im/f7/49/17/z24418295II,Prace-nad-projektem-chusty-antysmogowej-rozpoczely.jpg"/> + </a> + + + </li> + </ul> + + + </div> + + + + + + + + + + + + + + + + + + + + + + + + + + + <span class="base"><a href="http://wyborcza.biz/biznes/0,147743.html">Konsument i zakupy</a> + </span> + + + + + + + + + <h4> + <a title="Pomys³ na biznes: chusta, która chroni przed smogiem" href="http://wyborcza.biz/biznes/7,147743,24417936,pomysl-na-biznes-chusta-ktora-chroni-przed-smogiem.html">Pomys³ na biznes: chusta, która chroni przed smogiem</a> + </h4> + + + + + + + + + + + + + + + + </li> + + + + + + + + + + + + <li class="entry even article" > + + + + + + + + + <div class="imgw"> + + + + <ul> + <li > + <a href="http://wyborcza.biz/biznes/7,147743,24314790,polskie-kasjerki-zaczynaja-sie-bac-kiedy-straca-prace-przez.html"> + <img src="https://bi.im-g.pl/im/3c/32/17/z24325436II,Kasa-samoobslugowa-w-drogerii-Rossmann-.jpg"/> + </a> + + + </li> + </ul> + + + </div> + + + + + + + + + + + + + + + + + + + + + + + + + + + <span class="base"><a href="http://wyborcza.biz/biznes/0,147743.html">Konsument i zakupy</a> + </span> + + + + + + + + + <h4> + <a title="Kasjerki i kasjerzy siê boj±. Kiedy strac± pracê przez automaty?" href="http://wyborcza.biz/biznes/7,147743,24314790,polskie-kasjerki-zaczynaja-sie-bac-kiedy-straca-prace-przez.html">Kasjerki i kasjerzy siê boj±. Kiedy strac± pracê przez automaty?</a> + </h4> + + + + + + + + + + + + + + + + </li> + + + + + + + + + + + + <li class="entry odd article" > + + + + + + + + + <div class="imgw"> + + + + <ul> + <li > + <a href="http://wyborcza.biz/biznes/7,147743,24323989,zywnosc-gaz-prad-paliwa-ceny-pietruszki-moga-byc-rekordowe.html"> + <img src="https://bi.im-g.pl/im/e3/32/17/z24324067II,Warzywa.jpg"/> + </a> + + + </li> + </ul> + + + </div> + + + + + + + + + + + + + + + + + + + + + + + + + + + <span class="base"><a href="http://wyborcza.biz/biznes/0,147743.html">Konsument i zakupy</a> + </span> + + + + + + + + + <h4> + <a title="¯ywno¶æ, gaz, pr±d, paliwa... Ceny pietruszki mog± byæ rekordowe. Co jeszcze zdro¿eje w 2019? A co stanieje?" href="http://wyborcza.biz/biznes/7,147743,24323989,zywnosc-gaz-prad-paliwa-ceny-pietruszki-moga-byc-rekordowe.html">¯ywno¶æ, gaz, pr±d, paliwa... Ceny pietruszki mog± byæ rekordowe. Co jeszcze zdro¿eje w 2019? A co stanieje?</a> + </h4> + + + + + + + + + + + + + + + + </li> + + + + + + + + + + + + <li class="entry even article" > + + + + + + + + + <div class="imgw"> + + + + <ul> + <li > + <a href="http://wyborcza.biz/biznes/7,147743,24303027,eksperyment-sklepowy-z-slodyczy-rezygnowac-nie-lubimy-przy.html"> + <img src="https://bi.im-g.pl/im/70/17/17/z24212592II.jpg"/> + </a> + + + </li> + </ul> + + + </div> + + + + + + + + + + + + + + + + + + + + + + + + + + + <span class="base"><a href="http://wyborcza.biz/biznes/0,147743.html">Konsument i zakupy</a> + </span> + + + + + + + + + <h4> + <a title="Ze s³odyczy rezygnowaæ nie lubimy. Przy rybie robimy siê asertywni. Na zakupach nie zawsze kierujemy siê cen±" href="http://wyborcza.biz/biznes/7,147743,24303027,eksperyment-sklepowy-z-slodyczy-rezygnowac-nie-lubimy-przy.html">Ze s³odyczy rezygnowaæ nie lubimy. Przy rybie robimy siê asertywni. Na zakupach nie zawsze kierujemy siê cen±</a> + </h4> + + + + + + + + + + + + + + + + </li> + + + + + + + + + + + + <li class="entry odd article" > + + + + + + + + + <div class="imgw"> + + + + <ul> + <li > + <a href="http://wyborcza.biz/biznes/7,147743,24293124,idzie-boom-kawowy-bedzie-taniej-i-zdrowiej.html"> + <img src="https://bi.im-g.pl/im/bf/0a/17/z24161983II.jpg"/> + </a> + + + </li> + </ul> + + + </div> + + + + + + + + + + + + + + + + + + + + + + + + + + + <span class="base"><a href="http://wyborcza.biz/biznes/0,147743.html">Konsument i zakupy</a> + </span> + + + + + + + + + <h4> + <a title="Idzie boom kawowy. Bêdzie taniej i zdrowiej" href="http://wyborcza.biz/biznes/7,147743,24293124,idzie-boom-kawowy-bedzie-taniej-i-zdrowiej.html">Idzie boom kawowy. Bêdzie taniej i zdrowiej</a> + </h4> + + + + + + + + + + + + + + + + </li> + + + + + + + </ul> + </div> + <div class="footer"> + + + + </div> +</div> +<!-- (~MODEND:7:21407481 s43a:1,313,063) --> + +<!--21407481, [ /tpl/prod/universalIndex/universalIndex.jsp ], universalIndexBean--> +
+
+
+ </div>
+ <section class="post-article-related">
+
+
+
+
+
+
+
+
+<!-- related debug: RelatedResultDto{relatedItems=[RelatedItem [xx=24414148, title=Du¿o smogu, ma³o alarmów. Polska "mistrzem" rakotwórczych wyziewów, url=http://wyborcza.pl/7,155287,24414148,europejski-raport-o-smogu-polska-walczy-za-slabo.html, photoUrl=https://bi.im-g.pl/im/3e/29/17/z24289086D.jpg, photoTitle=null], RelatedItem [xx=24376685, title=Miliony Polaków mog± wreszcie odliczyæ od podatku panele s³oneczne. I... dalej dorzucaæ do kopciuchów, url=http://wyborcza.pl/7,155287,24376685,miliony-polakow-moga-wreszcie-odliczyc-od-podatku-panele-sloneczne.html, photoUrl=https://bi.im-g.pl/im/24/3f/17/z24376868D,Panele-fotowoltaiczne.jpg, photoTitle=Panele fotowoltaiczne], RelatedItem [xx=24349296, title=Kolejny milion u¿ywanych aut z importu. Dodatkowa dostawa smogu z Zachodu, url=http://wyborcza.pl/7,155287,24349296,kolejny-milion-uzywanych-aut-z-importu-dodatkowa-dostawa-smogu.html, photoUrl=https://bi.im-g.pl/im/39/39/17/z24351545D,Uzywane-auta-z-Niemiec---w-drodze-do-polskiego-nab.jpg, photoTitle=U¿ywane auta z Niemiec - w drodze do polskiego nabywcy. A4, 29 stycznia 2017], RelatedItem [xx=24302580, title=Jaki oczyszczacz powietrza kupiæ do domu?, url=http://wyborcza.biz/pieniadzeekstra/7,134263,24302580,jaki-oczyszczacz-powietrza-kupic-do-domu.html, photoUrl=https://bi.im-g.pl/im/1f/2d/17/z24302879D,Oczyszczacz-powietrza.jpg, photoTitle=Oczyszczacz powietrza]], putBanPosition=2, articleAmount=4, itemsNoWithPutban=4} -->
+
+
+ <div class="gazeta_article_related_new">
+ <div class="rel_head" >
+ Zobacz tak¿e
+ </div>
+
+
+
+
+
+
+
+ <ul>
+
+
+ <li class="fLeft ">
+
+
+
+
+ <a href="http://wyborcza.pl/7,155287,24414148,europejski-raport-o-smogu-polska-walczy-za-slabo.html" title="Du¿o smogu, ma³o alarmów. Polska "mistrzem" rakotwórczych wyziewów">
+ <img src="https://bi.im-g.pl/im/3e/29/17/z24289086II.jpg" alt=""/>
+ </a>
+ <a class="t" href="http://wyborcza.pl/7,155287,24414148,europejski-raport-o-smogu-polska-walczy-za-slabo.html" title="Du¿o smogu, ma³o alarmów. Polska "mistrzem" rakotwórczych wyziewów" >Du¿o smogu, ma³o alarmów. Polska "mistrzem" rakotwórczych wyziewów</a>
+
+
+
+ </li>
+
+ <li class="">
+
+
+
+
+ <a href="http://wyborcza.pl/7,155287,24376685,miliony-polakow-moga-wreszcie-odliczyc-od-podatku-panele-sloneczne.html" title="Miliony Polaków mog± wreszcie odliczyæ od podatku panele s³oneczne. I... dalej dorzucaæ do kopciuchów">
+ <img src="https://bi.im-g.pl/im/24/3f/17/z24376868II,Panele-fotowoltaiczne.jpg" alt="Panele fotowoltaiczne"/>
+ </a>
+ <a class="t" href="http://wyborcza.pl/7,155287,24376685,miliony-polakow-moga-wreszcie-odliczyc-od-podatku-panele-sloneczne.html" title="Miliony Polaków mog± wreszcie odliczyæ od podatku panele s³oneczne. I... dalej dorzucaæ do kopciuchów" >Miliony Polaków mog± wreszcie odliczyæ od podatku panele s³oneczne. I... dalej dorzucaæ do kopciuchów</a>
+
+
+
+ </li>
+
+ <li class="">
+
+
+
+
+
+
+
+
+
+
+
+
+ <script src='https://www.googletagservices.com/tag/js/gpt.js'>
+ var _YB = _YB || {
+ ab: function() {
+ return (Math.random() >= 0.1 ? 'b' : 'a' + Math.floor(Math.random() * 10));
+ }
+ };
+ var _yt = new Date(), yb_th = _yt.getUTCHours() - 8, yb_tm = _yt.getUTCMinutes(), yb_wd = _yt.getUTCDay();
+ if (yb_th < 0) {
+ yb_th = 24 + yb_th;
+ yb_wd -= 1;
+ };
+ if (yb_wd < 0) {
+ yb_wd = 7 + yb_wd
+ };
+ googletag.pubads().definePassback('/52555387/wyborcza.pl_native_desktop', ['fluid']).setTargeting('yb_ab', _YB.ab()).setTargeting('yb_ff', String(Math.round(Math.random()))).setTargeting('yb_th', yb_th.toString()).setTargeting('yb_tm', yb_tm.toString()).setTargeting('yb_wd', yb_wd.toString()).display();
+ </script>
+
+
+
+
+
+
+
+ </li>
+
+ <li class="">
+
+
+
+
+ <a href="http://wyborcza.pl/7,155287,24349296,kolejny-milion-uzywanych-aut-z-importu-dodatkowa-dostawa-smogu.html" title="Kolejny milion u¿ywanych aut z importu. Dodatkowa dostawa smogu z Zachodu">
+ <img src="https://bi.im-g.pl/im/39/39/17/z24351545II,Uzywane-auta-z-Niemiec---w-drodze-do-polskiego-nab.jpg" alt="U¿ywane auta z Niemiec - w drodze do polskiego nabywcy. A4, 29 stycznia 2017"/>
+ </a>
+ <a class="t" href="http://wyborcza.pl/7,155287,24349296,kolejny-milion-uzywanych-aut-z-importu-dodatkowa-dostawa-smogu.html" title="Kolejny milion u¿ywanych aut z importu. Dodatkowa dostawa smogu z Zachodu" >Kolejny milion u¿ywanych aut z importu. Dodatkowa dostawa smogu z Zachodu</a>
+
+
+
+ </li>
+
+
+ </ul>
+ </div>
+
+
+
+<!-- /relatedModule v 2.0 -->
+
+ +<!--9638939, [ /fix/modules/wyborcza/relatedModule_dfp.jsp ], relatedArticlesModule--> +
+ </section>
+ <div class="post-article-content-holder column-48" data-position="48,1-5 12-15">
+
+
+
+
+
+
+
+
+
+ </div>
+
+
+
+
+
+
+ <div id="tags" class="tags">
+ <span class="tags-label">Wiêcej na ten temat:</span>
+
+ <a href="/biznes/0,104259.html?tag=smog" title="smog" class="tag-anchor"><span class="tag-label">smog</span></a>,
+
+ <a href="/biznes/0,104259.html?tag=w%EAgiel" title="wêgiel" class="tag-anchor"><span class="tag-label">wêgiel</span></a>,
+
+ <a href="/biznes/0,104259.html?tag=jako%B6%E6+powietrza" title="jako¶æ powietrza" class="tag-anchor"><span class="tag-label">jako¶æ powietrza</span></a>,
+
+ <a href="/biznes/0,104259.html?tag=zanieczyszczenie+powietrza" title="zanieczyszczenie powietrza" class="tag-anchor"><span class="tag-label">zanieczyszczenie powietrza</span></a>
+
+ </div>
+
+
+<!-- universalTags v1.0 -->
+ +<!--410352220, [ /fix/modules/wyborcza/universalTags.jsp ], seoTagController--> +
+ </section>
+
+ <div class="social">
+ <div class="social-bar">
+
+
+
+
+
+
+
+ <div class="socialBar">
+ <ul>
+ <li class="readLater">
+ <a href="#" title="Dodaj do schowka">
+ <figure class="badge-ico">
+ <svg class="badge-symbol">
+ <use xlink:href="#read-later"></use>
+ </svg>
+ </figure>
+ </a>
+ <span class="sharesCount"></span>
+ </li>
+
+
+ <li class="fbShare">
+ <a href="#" title="Udostêpnij na Facebooku">
+ <figure class="badge-ico">
+ <svg class="badge-symbol">
+ <use xlink:href="#face-v2"></use>
+ </svg>
+ </figure>
+ </a>
+ <span class="sharesCount"></span>
+ </li>
+
+
+
+ <li class="twitter">
+ <a href="#" title="Udostêpnij na Twitterze">
+ <figure class="badge-ico">
+ <svg class="badge-symbol">
+ <use xlink:href="#twitter-v2"></use>
+ </svg>
+ </figure>
+ </a>
+ <span class="tweetsCount"></span>
+ </li>
+
+
+
+
+ <li class="email">
+ <a href="http://gazeta.hit.gemius.pl/hitredir/id=nF6a2AyFf_IJ3woQ3DRcKcewPxLw1u7SUeW3YDM9WRb.P7/stparam=wkionrdgis/url=http://wyborcza.biz/2029030,75247.html?b=1&x=24417936&d=0&utm_source=recommend&utm_medium=email&utm_campaign=recommend&home=http://wyborcza.biz/biznes/7,147743,24417936,pomysl-na-biznes-chusta-ktora-chroni-przed-smogiem.html?disableRedirects=true" title="Udostêpnij e-mailem">
+ <figure class="badge-ico">
+ <svg class="badge-symbol">
+ <use xlink:href="#mail-v2"></use>
+ </svg>
+ </figure>
+ </a>
+ </li>
+
+
+
+ <li class="comments">
+ <a href="#" title="Zobacz komentarze">
+ <figure class="badge-ico">
+ <svg class="badge-symbol">
+ <use xlink:href="#comments-v2"></use>
+ </svg>
+ </figure>
+ </a>
+ <span class="commentsCount"></span>
+ </li>
+
+
+ </ul>
+ </div>
+
+
+<!-- socialBar v1.1 -->
+ +<!--9638922, [ /fix/modules/wyborcza/socialBar.jsp ], toolsSocialMediaPojoBean--> +
+ </div>
+ <div class="comments-container">
+
+
+
+
+
+
+
+<!-- opinions20 -->
+<!-- serwis: 2 -->
+<!-- role: -->
+
+
+
+
+
+
+
+
+
+<script>
+ wyborcza_pl.commentsUserData = Object.freeze((function () {
+ var opts = {
+ roles: {
+ admin: false,
+ editor: false
+ },
+ userNick: "",
+ loginChannel: '',
+ userLink: '',
+ wyborcza_pl_service_id: 2,
+ voting: true,
+ writing: false,
+ commentedObjectId: 24417936
+ };
+
+ function getParam(paramName) {
+ return opts[paramName];
+ }
+
+ function getRole(roleName) {
+ return opts['roles'][roleName];
+ }
+
+ return {
+ getParam: getParam,
+ isRole: getRole
+ };
+
+ })());
+</script>
+
+
+
+ <!-- komentarze ON -->
+ <!-- test session: '' / '' : '' : '' -->
+
+
+ <section class="comments">
+
+
+
+ <header class="oHead">
+ <div class="oCntInf">
+ <span class="ocntHead">Komentarze</span>
+ <div class="oCntWrap">
+ <svg class="oCntBg">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comment"></use>
+ </svg>
+ <span id="oCnt"></span>
+ </div>
+ </div>
+
+ <!-- komentarze_pisanie: 'false' -->
+ <div class="oFormBox">
+ <form action="#" method="post" class="oForm">
+ <div class="row rTop">
+
+
+
+
+ <div class="subscribeToWriteComment">Chcesz do³±czyæ do dyskusji? <a href="//wyborcza.pl/komentarzeoferta">Zostañ naszym prenumeratorem</a></div>
+
+
+ </div>
+
+ <div class="row rBtm">
+
+
+ <div class="cLogin">
+ <span class="cLoginLink">Zaloguj siê</span>
+ <div class="logOpts">
+
+ <a data-action-login="wyborcza" id="oLoginWyborcza" title="Zaloguj u¿ywaj±c konta Wyborcza">
+ <svg xmlns="http://www.w3.org/2000/svg" class="logOptsWybprcza" viewBox="0 0 28 28">
+ <defs>
+ <style>
+ #wyborcza_PL_rect1 { fill: #fff; } #wyborcza_PL_rect2, #wyborcza_PL_polygon1 { fill: #a1a1a1; } #wyborcza_PL:hover #wyborcza_PL_polygon1 { fill: #000; } #wyborcza_PL:hover #wyborcza_PL_rect1 { fill: #f1f1f1; } #wyborcza_PL:hover #wyborcza_PL_rect2 { fill: #df012d; }
+ </style>
+ </defs>
+ <g id="wyborcza_PL">
+ <rect id="wyborcza_PL_rect1" width="28" height="28"/>
+ <rect id="wyborcza_PL_rect2" width="12.22" height="18.84" x="3.56" y="4.58"/>
+ <polygon id="wyborcza_PL_polygon1" points="26.73 10.38 25.81 10.38 24.16 16.62 24.03 16.61 22.14 11.2 23.26 10.54 23.26 10.38 18.55 10.38 18.55 10.54 19.29 11.21 22.25 19.53 23.95 19.53 25.31 14.44 25.45 14.44 27.25 19.53 28 19.53 28 14.03 26.73 10.38"/>
+ </g>
+ </svg>
+ </a>
+
+ <a data-action-login="facebook" id="oLoginFacebook" title="Zaloguj u¿ywaj±c Facebooka">
+ <svg xmlns="http://www.w3.org/2000/svg" class="logOptsFacebook" viewBox="0 0 28 28">
+ <defs>
+ <style>
+ #Facebook_Ico #Facebook_Ico_path1 { fill: #fff; fill-rule: evenodd; } #Facebook_Ico:hover #Facebook_Ico_path1 { fill: #3664a2; fill-rule: evenodd; } #Facebook_Ico #Facebook_Ico_rect1 { fill: #a1a1a1; } #Facebook_Ico:hover #Facebook_Ico_rect1 { fill: #fff; }
+ </style>
+ </defs>
+ <g id="Facebook_Ico">
+ <rect id="Facebook_Ico_rect1" width="28" height="28"/>
+ <path id="Facebook_Ico_path1" d="M-9.28-4.3v28h28v-28h-28ZM9,9.28H5.73v9.42H2.21V9.27H-0.29V7.14H2.22V4.41c0-4,4.42-3.69,4.42-3.69h2.6V3.29H7.14A1.17,1.17,0,0,0,5.73,4.35V7.14h4Z" transform="translate(9.28 4.3)"/>
+ </g>
+ </svg>
+ </a>
+
+ <a data-action-login="google" id="oLoginGoogle" title="Zaloguj u¿ywaj±c Google+">
+ <svg xmlns="http://www.w3.org/2000/svg" class="logOptsFacebook" viewBox="0 0 28 28">
+ <defs>
+ <style>
+ #GooglePlus_Ico #GooglePlus_Ico_path1 { fill: #fff; fill-rule: evenodd; } #GooglePlus_Ico:hover #GooglePlus_Ico_path1 { fill-rule: evenodd; fill: #d34836; } #GooglePlus_Ico:hover #GooglePlus_Ico_rect1 { fill: #fff; } #GooglePlus_Ico #GooglePlus_Ico_rect1 { fill: #a1a1a1; }
+ </style>
+ </defs>
+ <g id="GooglePlus_Ico">
+ <rect id="GooglePlus_Ico_rect1" width="28" height="28"/>
+ <path id="GooglePlus_Ico_path1" d="M0,0V28H28V0H0ZM10.36,20A6.18,6.18,0,0,1,4,14a6.18,6.18,0,0,1,6.36-6,6.31,6.31,0,0,1,4.26,1.57L12.9,11.14a3.7,3.7,0,0,0-2.54-.93A3.87,3.87,0,0,0,6.42,14a3.87,3.87,0,0,0,3.95,3.79A3.39,3.39,0,0,0,14,15.2H10.36V13.14h6a5.23,5.23,0,0,1,.1,1C16.47,17.57,14,20,10.36,20ZM24,14.86H22.18v1.71H20.36V14.86H18.55V13.14h1.82V11.43h1.82v1.71H24v1.71Z"/>
+ </g>
+ </svg>
+ </a>
+
+ </div>
+
+
+
+ </div>
+
+
+
+
+
+
+ <div class="cSubmit">
+ <button id="oFormSubmit" class="sendCommentButton" disabled="disabled" name="submit">Skomentuj</button>
+ </div>
+ </div>
+ </form>
+ </div>
+
+ <!-- komentarze_sortowanie: PopularityDesc -->
+ <div class="oSortOpts" data-sort="Popularity-Desc">
+ <a data-action="sortComments" data-sort-by="Time">Najnowsze</a>
+ <a data-action="sortComments" data-sort-by="Popularity">Popularne</a>
+ </div>
+ </header><!-- /header -->
+
+
+
+
+
+
+ <!-- komentarze_liczba_pod_art: 8 -->
+
+ <section class="oBody">
+
+
+ <!-- komentarz -->
+
+ <div class="cRow cResHidden flag_PUBLISHED" id="opinion101252015" itemscope
+ itemtype="http://schema.org/Comment" itemid="#opinion:101252015">
+ <div class="cHead">
+
+ <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span class="cName" itemprop="name">
+
+
+
+ sceptyczny_debunk
+
+
+ </span></span>
+
+ <span class="cDate" itemprop="datePublished" content="2019-01-31">31.01.2019, 16:16</span>
+
+
+ </div>
+ <div class="cBody">
+
+
+
+ <span itemprop="text">W Azji maski nosi siê nie z powodu smogu, tylko SARS, ptasiej grypy i z powodu przepisów sanitarnych, które nakazuj± nosiæ maski w miejscach publicznych osobom kaszl±cym czy kichaj±cym. Z tego samego powodu w wielu miejscach publicznych s± montowane kamery mierz±ce temperaturê cia³a przechodniów, np. w metrze w Hongkongu czy w Tajpej. Jak siê patrzy na polski autobus w styczniu pe³en zasmarkanych, kichaj±cych i kaszl±cych ludzi, którzy nawet d³oni± nie zas³aniaj± ust, to trzeba siê zastanowiæ, jakim cudem ten naród jeszcze nie wymar³.</span></div>
+ <div class="cFt">
+
+ <!-- komentarze_ocenianie ON -->
+ <div class="cAlreadyVoted"><span class="cVotedInfo">ju¿ ocenia³e(a)¶</span></div>
+ <div class="cVoteUp">
+ <a data-action="vote-addPlus" data-post-id="101252015">
+ <svg class="voteUpIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-up"></use>
+ </svg>
+ </a>
+ <span itemprop="upvoteCount">9</span>
+ </div>
+
+ <div class="cVoteDown">
+ <a data-action="vote-addMinus" data-post-id="101252015">
+ <svg class="voteDownIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-down"></use>
+ </svg>
+ </a>
+ <span itemprop="downvoteCount">1</span>
+ </div>
+
+ <div class="cVoteSpam">
+ <a title="Zg³o¶ do moderacji" data-action="trash-vote" data-post-id="101252015">
+ <svg class="voteSpamIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#spam"></use>
+ </svg>
+ </a>
+ </div>
+ <div class="cResWrite">
+ <a data-child-for="101252015" data-reply-to="sceptyczny_debunk">
+ <svg class="resWriteIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reply"></use>
+ </svg>
+ Odpowiedz</a>
+ </div>
+
+
+ <div class="cResShow">
+ <a data-res-counter="1" data-state="show">
+ <svg class="resShowIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comment"></use>
+ </svg>
+
+
+
+ Poka¿ odpowiedzi (1)
+
+
+ </a>
+ </div>
+
+ </div>
+
+
+
+ <!-- Odpowiedzi na komentarz -->
+
+ <!-- komentarz zagniezdzony -->
+ <div class="cRow cResComment flag_PUBLISHED" id="opinion101252118"
+ itemscope itemtype="http://schema.org/Comment" itemid="#opinion:101252118">
+ <div class="cHead">
+
+ <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span class="cName" itemprop="name">
+
+
+
+ lizabet
+
+ </span></span>
+
+ <span class="cDate" itemprop="datePublished"
+ content="2019-01-31">31.01.2019, 16:39</span>
+
+
+ </div>
+ <div class="cBody">
+
+
+
+ <span itemprop="text">@sceptyczny_debunk<br/>Czêsto o tym my¶lê. Dziêki za te celne uwagi.</span></div>
+ <div class="cFt">
+
+ <!-- komentarze_ocenianie ON -->
+ <div class="cAlreadyVoted"><span class="cVotedInfo">ju¿ ocenia³e(a)¶</span></div>
+ <div class="cVoteUp">
+ <a data-action="vote-addPlus" data-post-id="101252118">
+ <svg class="voteUpIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-up"></use>
+ </svg>
+ </a>
+ <span itemprop="upvoteCount">1</span>
+ </div>
+
+ <div class="cVoteDown">
+ <a data-action="vote-addMinus" data-post-id="101252118">
+ <svg class="voteDownIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-down"></use>
+ </svg>
+ </a>
+ <span itemprop="downvoteCount">0</span>
+ </div>
+
+ <div class="cVoteSpam">
+ <a title="Zg³o¶ do moderacji" data-action="trash-vote" data-post-id="101252118">
+ <svg class="voteSpamIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#spam"></use>
+ </svg>
+ </a>
+ </div>
+ <div class="cResWrite">
+ <a data-child-for="101252015" data-reply-to="lizabet">
+ <svg class="resWriteIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reply"></use>
+ </svg>
+ Odpowiedz</a>
+ </div>
+ </div>
+ </div>
+ <!-- / komentarz zagniezdzony -->
+
+
+
+
+
+ </div>
+ <!-- / komentarz -->
+
+
+
+ <!-- komentarz -->
+
+ <div class="cRow cResHidden flag_PUBLISHED" id="opinion101252057" itemscope
+ itemtype="http://schema.org/Comment" itemid="#opinion:101252057">
+ <div class="cHead">
+
+ <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span class="cName" itemprop="name">
+
+
+
+ tegonielubie
+
+
+ </span></span>
+
+ <span class="cDate" itemprop="datePublished" content="2019-01-31">31.01.2019, 16:25</span>
+
+
+ </div>
+ <div class="cBody">
+
+
+
+ <span itemprop="text">cena - 65 euro</span></div>
+ <div class="cFt">
+
+ <!-- komentarze_ocenianie ON -->
+ <div class="cAlreadyVoted"><span class="cVotedInfo">ju¿ ocenia³e(a)¶</span></div>
+ <div class="cVoteUp">
+ <a data-action="vote-addPlus" data-post-id="101252057">
+ <svg class="voteUpIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-up"></use>
+ </svg>
+ </a>
+ <span itemprop="upvoteCount">2</span>
+ </div>
+
+ <div class="cVoteDown">
+ <a data-action="vote-addMinus" data-post-id="101252057">
+ <svg class="voteDownIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-down"></use>
+ </svg>
+ </a>
+ <span itemprop="downvoteCount">1</span>
+ </div>
+
+ <div class="cVoteSpam">
+ <a title="Zg³o¶ do moderacji" data-action="trash-vote" data-post-id="101252057">
+ <svg class="voteSpamIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#spam"></use>
+ </svg>
+ </a>
+ </div>
+ <div class="cResWrite">
+ <a data-child-for="101252057" data-reply-to="tegonielubie">
+ <svg class="resWriteIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reply"></use>
+ </svg>
+ Odpowiedz</a>
+ </div>
+
+
+ </div>
+
+
+
+
+
+ </div>
+ <!-- / komentarz -->
+
+
+
+ <!-- komentarz -->
+
+ <div class="cRow cResHidden flag_PUBLISHED" id="opinion101251975" itemscope
+ itemtype="http://schema.org/Comment" itemid="#opinion:101251975">
+ <div class="cHead">
+
+ <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span class="cName" itemprop="name">
+
+
+
+ baza
+
+
+ </span></span>
+
+ <span class="cDate" itemprop="datePublished" content="2019-01-31">31.01.2019, 16:06</span>
+
+
+ </div>
+ <div class="cBody">
+
+
+
+ <span itemprop="text">Zwyk³y wentylator nakryj filtrem wêglowym i w domu oczy¶ci powietrze.</span></div>
+ <div class="cFt">
+
+ <!-- komentarze_ocenianie ON -->
+ <div class="cAlreadyVoted"><span class="cVotedInfo">ju¿ ocenia³e(a)¶</span></div>
+ <div class="cVoteUp">
+ <a data-action="vote-addPlus" data-post-id="101251975">
+ <svg class="voteUpIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-up"></use>
+ </svg>
+ </a>
+ <span itemprop="upvoteCount">1</span>
+ </div>
+
+ <div class="cVoteDown">
+ <a data-action="vote-addMinus" data-post-id="101251975">
+ <svg class="voteDownIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-down"></use>
+ </svg>
+ </a>
+ <span itemprop="downvoteCount">1</span>
+ </div>
+
+ <div class="cVoteSpam">
+ <a title="Zg³o¶ do moderacji" data-action="trash-vote" data-post-id="101251975">
+ <svg class="voteSpamIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#spam"></use>
+ </svg>
+ </a>
+ </div>
+ <div class="cResWrite">
+ <a data-child-for="101251975" data-reply-to="baza">
+ <svg class="resWriteIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reply"></use>
+ </svg>
+ Odpowiedz</a>
+ </div>
+
+
+ <div class="cResShow">
+ <a data-res-counter="2" data-state="show">
+ <svg class="resShowIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comment"></use>
+ </svg>
+
+
+
+ Poka¿ odpowiedzi (2)
+
+
+ </a>
+ </div>
+
+ </div>
+
+
+
+ <!-- Odpowiedzi na komentarz -->
+
+ <!-- komentarz zagniezdzony -->
+ <div class="cRow cResComment flag_PUBLISHED" id="opinion101252012"
+ itemscope itemtype="http://schema.org/Comment" itemid="#opinion:101252012">
+ <div class="cHead">
+
+ <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span class="cName" itemprop="name">
+
+
+
+ vocativus
+
+ </span></span>
+
+ <span class="cDate" itemprop="datePublished"
+ content="2019-01-31">31.01.2019, 16:15</span>
+
+
+ </div>
+ <div class="cBody">
+
+
+
+ <span itemprop="text">@baza<br/>oczy¶ci nieznacznie z substancji lotnych, ale nie z py³ów</span></div>
+ <div class="cFt">
+
+ <!-- komentarze_ocenianie ON -->
+ <div class="cAlreadyVoted"><span class="cVotedInfo">ju¿ ocenia³e(a)¶</span></div>
+ <div class="cVoteUp">
+ <a data-action="vote-addPlus" data-post-id="101252012">
+ <svg class="voteUpIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-up"></use>
+ </svg>
+ </a>
+ <span itemprop="upvoteCount">0</span>
+ </div>
+
+ <div class="cVoteDown">
+ <a data-action="vote-addMinus" data-post-id="101252012">
+ <svg class="voteDownIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-down"></use>
+ </svg>
+ </a>
+ <span itemprop="downvoteCount">0</span>
+ </div>
+
+ <div class="cVoteSpam">
+ <a title="Zg³o¶ do moderacji" data-action="trash-vote" data-post-id="101252012">
+ <svg class="voteSpamIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#spam"></use>
+ </svg>
+ </a>
+ </div>
+ <div class="cResWrite">
+ <a data-child-for="101251975" data-reply-to="vocativus">
+ <svg class="resWriteIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reply"></use>
+ </svg>
+ Odpowiedz</a>
+ </div>
+ </div>
+ </div>
+ <!-- / komentarz zagniezdzony -->
+
+ <!-- komentarz zagniezdzony -->
+ <div class="cRow cResComment flag_PUBLISHED" id="opinion101252134"
+ itemscope itemtype="http://schema.org/Comment" itemid="#opinion:101252134">
+ <div class="cHead">
+
+ <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span class="cName" itemprop="name">
+
+
+
+ Ardalis
+
+ </span></span>
+
+ <span class="cDate" itemprop="datePublished"
+ content="2019-01-31">31.01.2019, 16:44</span>
+
+
+ </div>
+ <div class="cBody">
+
+
+
+ <span itemprop="text">@baza<br/>Filtr wêglowy nie s³u¿y do zatrzymywania py³ów. Je¿eli sam chcesz zrobiæ filtr smogu, czyli cz±stek oko³o 1 mikrona potrzebujesz w³ókniny min klasy F9 a lepiej E10-11. Wtedy niestety wzrastaj± opory przep³ywu i bêdziesz potrzebowa³ wentylatora nieco wy¿szych ci¶nieñ, np ¶limakowego. Wszystko to oczywi¶cie trzeba uszczeliniæ. Taniej mo¿e byæ jednak kupiæ gotowy.</span></div>
+ <div class="cFt">
+
+ <!-- komentarze_ocenianie ON -->
+ <div class="cAlreadyVoted"><span class="cVotedInfo">ju¿ ocenia³e(a)¶</span></div>
+ <div class="cVoteUp">
+ <a data-action="vote-addPlus" data-post-id="101252134">
+ <svg class="voteUpIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-up"></use>
+ </svg>
+ </a>
+ <span itemprop="upvoteCount">1</span>
+ </div>
+
+ <div class="cVoteDown">
+ <a data-action="vote-addMinus" data-post-id="101252134">
+ <svg class="voteDownIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#vote-down"></use>
+ </svg>
+ </a>
+ <span itemprop="downvoteCount">0</span>
+ </div>
+
+ <div class="cVoteSpam">
+ <a title="Zg³o¶ do moderacji" data-action="trash-vote" data-post-id="101252134">
+ <svg class="voteSpamIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#spam"></use>
+ </svg>
+ </a>
+ </div>
+ <div class="cResWrite">
+ <a data-child-for="101251975" data-reply-to="Ardalis">
+ <svg class="resWriteIcon">
+ <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reply"></use>
+ </svg>
+ Odpowiedz</a>
+ </div>
+ </div>
+ </div>
+ <!-- / komentarz zagniezdzony -->
+
+
+
+
+
+ </div>
+ <!-- / komentarz -->
+
+
+ </section>
+ <!-- /.oBody -->
+
+
+ <footer class="oFooter">
+ <div class="oFooterContainer">
+ <p class="oFooterParagraph">
+ <a data-action="loadAllComments" title="Zobacz wiêcej" class="oMoreBtn">Wiêcej</a>
+ </p>
+ </div>
+ </footer>
+ <!-- /.oFooter -->
+
+ </section>
+ <!-- / KOMENTARZE -->
+
+
+<img id="activity-check" src="/fix/modules/wyborcza/comments/activity.jsp">
+ +<!--9638926, [ /fix/modules/opinions20.jsp ], opinions20PojoBean--> +
+ </div>
+ </div>
+
+ <section class="complementary-entries">
+ <div class="first-bottom-content-holder column-54" data-position="54,12-15">
+
+
+
+
+ </div>
+ </section>
+ </section>
+
+
+ <aside class="article-extra grid-col-1-4 sidebar">
+ <div class="right-content-holder column-5 splint-glow" data-position="5,1-5 12-15">
+ <div class="mcBan" id="newsletterDM"></div>
+
+ <!--n.cz., tr:#TRNajCzytSST--><article class="mod mod_most_read mod_most_read1 stare-najczesciej-czytane"><header>Najczê¶ciej Czytane</header><section class="body"><ul><li class=""><span class="number">1.</span><h3 class="title"><a href="http://wyborcza.biz/biznes/1,147758,14592095,Pokazali_apartamenty_w_Zlotej_44__Cena__65_tys__za.html#TRNajCzytSST" title="Pokazali apartamenty w Z³otej 44. Cena: 65 tys. za metr">Pokazali apartamenty w Z³otej 44. Cena: 65 tys. za metr</a></h3></li><li class=""><span class="number">2.</span><h3 class="title"><a href="http://wyborcza.biz/biznes/1,147758,12670651,Najwezszy_dom_swiata_prawie_gotowy__ZDJECIA_.html#TRNajCzytSST" title="Najwê¿szy dom ¶wiata prawie gotowy [ZDJÊCIA]">Najwê¿szy dom ¶wiata prawie gotowy [ZDJÊCIA]</a></h3></li><li class=""><span class="number">3.</span><h3 class="title"><a href="http://wyborcza.biz/biznes/7,147758,24397604,galopujace-ceny-mieszkan-zderza-sie-ze-sciana-eksperci-podpowiadaja.html#TRNajCzytSST" title="Deweloperzy buduj± coraz dro¿sze mieszkania. Klienci kupuj± nawet dziury w ziemi">Deweloperzy buduj± coraz dro¿sze mieszkania. Klienci kupuj± nawet dziury w ziemi</a></h3></li><li class=""><span class="number">4.</span><h3 class="title"><a href="http://wyborcza.biz/biznes/1,147582,18379055,najwieksze-ofiary-amber-gold-kto-stracil-miliony-w-parabanku.html#TRNajCzytSST" title="Najwiêksze ofiary Amber Gold. Sprawdzili¶my, kto straci³ miliony w parabanku">Najwiêksze ofiary Amber Gold. Sprawdzili¶my, kto straci³ miliony w parabanku</a></h3></li><li class=""><span class="number">5.</span><h3 class="title"><a href="http://wyborcza.biz/biznes/1,147758,17989403,Najlepszy_projekt_wnetrza_biurowca_na_wodzie.html#TRNajCzytSST" title="Najlepszy projekt wnêtrza biurowca na wodzie">Najlepszy projekt wnêtrza biurowca na wodzie</a></h3></li><li class=""><span class="number">6.</span><h3 class="title"><a href="http://wyborcza.biz/biznes/7,147743,22836294,ile-kosztuja-wlosy-nawet-8-tys-zl-za-kg-tyle-mozna-zarobic.html#TRNajCzytSST" title="Ile kosztuj± w³osy? Nawet 8 tys. z³ za 1 kg. Tyle mo¿na zarobiæ ">Ile kosztuj± w³osy? Nawet 8 tys. z³ za 1 kg. Tyle mo¿na zarobiæ </a></h3></li></ul></section></article> +<!--21406650, [ /htm/21406/j21406650.htm ], null--> +
+
+ <!-- reklama -->
+ <div id="rectangle-splint" class="splint-element">
+
+
+
+<div id="003-RECTANGLE" class="adviewDFPBanner DFP-003-RECTANGLE">
+ <span class="banLabel" style="display: none;">REKLAMA</span>
+ <div id='div-gpt-ad-003-RECTANGLE-0'>
+ <script type='text/javascript'>
+ if(dfpParams.slots['003-RECTANGLE'] && dfpParams.slots['003-RECTANGLE'].autoLoad) {
+ if (adviewDFP && adviewDFP.scrollSlot) adviewDFP.scrollSlot.push('003-RECTANGLE');
+ } else {
+ googletag.cmd.push(function() { googletag.display('div-gpt-ad-003-RECTANGLE-0'); });
+ }
+
+ </script>
+ </div>
+</div>
+
+
+<!-- v2.2 --> +<!--10185261, [ /tpl/ads/prod/dfpSlot.jsp ], dfpBanersSlotBean--> +
+ </div>
+
+ <section class="mod-generic mod-generic-type-b-no-paddings mod-generic-type-b box-cor mod-opinions top-margin-layout la-http://wyborcza.pl/0,75968.html#TRNavSST"> + +<ul class="mod-generic-items"> +<li class="mod-generic-item +mod-generic-item-other-with-photo +"> +<div class="mod-generic-item-content"> +<figure class="mod-generic-item-photo-wrapper"> +<a id="LinkArea:http://wyborcza.pl/0,75968.html#TRNavSST" href="http://wyborcza.biz/biznes/7,157729,24377175,kolejne-branze-na-celowniku-fiskusa.html" class="mod-generic-item-photo-wrapper" title="Kolejne bran¿e na celowniku fiskusa Budowlanka, gastronomia, motoryzacja – objête specjalnym nadzorem fiskalnym"> +<img class="mod-generic-item-photo-wrapper-image" data-src="//bi.im-g.pl/im/e5/3f/17/z24377317J.jpg" alt="Kolejne bran¿e na celowniku fiskusa Budowlanka, gastronomia, motoryzacja – objête specjalnym nadzorem fiskalnym" /> +</a> +</figure> +<span class="rekl-text">Materia³y promocyjne partnera</span> +<a class="mod-generic-title-container" id="LinkArea:http://wyborcza.pl/0,75968.html#TRNavSST" href="http://wyborcza.biz/biznes/7,157729,24377175,kolejne-branze-na-celowniku-fiskusa.html" title="Kolejne bran¿e na celowniku fiskusa Budowlanka, gastronomia, motoryzacja – objête specjalnym nadzorem fiskalnym"> +<span class="mod-generic-title">Kolejne bran¿e na celowniku fiskusa Budowlanka, gastronomia, motoryzacja – objête specjalnym nadzorem fiskalnym</span> +</a> +</div> +</li> +</ul> +</section><!-- UZREditor --><!-- htmEOF --> +<!--22243333, [ /htm/22243/j22243333.htm ], null--> +
+
+ <div id="rectangle-splint-067" class="splint-element-small">
+
+
+
+<div id="067-RECTANGLE-BTF" class="adviewDFPBanner DFP-067-RECTANGLE-BTF">
+ <span class="banLabel" style="display: none;">REKLAMA</span>
+ <div id='div-gpt-ad-067-RECTANGLE-BTF-0'>
+ <script type='text/javascript'>
+ if(dfpParams.slots['067-RECTANGLE-BTF'] && dfpParams.slots['067-RECTANGLE-BTF'].autoLoad) {
+ if (adviewDFP && adviewDFP.scrollSlot) adviewDFP.scrollSlot.push('067-RECTANGLE-BTF');
+ } else {
+ googletag.cmd.push(function() { googletag.display('div-gpt-ad-067-RECTANGLE-BTF-0'); });
+ }
+
+ </script>
+ </div>
+</div>
+
+
+<!-- v2.2 --> +<!--11455919, [ /tpl/ads/prod/dfpSlot.jsp ], dfpBanersSlotBean--> +
+ </div>
+
+
+
+ <!-- reklama -->
+ <div id="rectangle-splint-035" class="splint-element-small">
+
+
+
+<div id="035-RECTANGLE-BTF" class="adviewDFPBanner DFP-035-RECTANGLE-BTF">
+ <span class="banLabel" style="display: none;">REKLAMA</span>
+ <div id='div-gpt-ad-035-RECTANGLE-BTF-0'>
+ <script type='text/javascript'>
+ if(dfpParams.slots['035-RECTANGLE-BTF'] && dfpParams.slots['035-RECTANGLE-BTF'].autoLoad) {
+ if (adviewDFP && adviewDFP.scrollSlot) adviewDFP.scrollSlot.push('035-RECTANGLE-BTF');
+ } else {
+ googletag.cmd.push(function() { googletag.display('div-gpt-ad-035-RECTANGLE-BTF-0'); });
+ }
+
+ </script>
+ </div>
+</div>
+
+
+<!-- v2.2 --> +<!--10185263, [ /tpl/ads/prod/dfpSlot.jsp ], dfpBanersSlotBean--> +
+ </div>
+
+
+
+ </div>
+ </aside>
+
+
+
+
+
+ </div>
+ </main>
+
+
+
+
+ <section class="ads container-outer">
+ <div class="container-inner">
+ <div class="grid-row">
+ <div class="grid-col-wide">
+
+
+
+<div id="042-FOOTBOARD" class="adviewDFPBanner DFP-042-FOOTBOARD">
+ <span class="banLabel" style="display: none;">REKLAMA</span>
+ <div id='div-gpt-ad-042-FOOTBOARD-0'>
+ <script type='text/javascript'>
+ if(dfpParams.slots['042-FOOTBOARD'] && dfpParams.slots['042-FOOTBOARD'].autoLoad) {
+ if (adviewDFP && adviewDFP.scrollSlot) adviewDFP.scrollSlot.push('042-FOOTBOARD');
+ } else {
+ googletag.cmd.push(function() { googletag.display('div-gpt-ad-042-FOOTBOARD-0'); });
+ }
+
+ </script>
+ </div>
+</div>
+
+
+<!-- v2.2 --> +<!--10185264, [ /tpl/ads/prod/dfpSlot.jsp ], dfpBanersSlotBean--> +
+ </div>
+ </div>
+ </div>
+ </section>
+
+ <div class="container-inner">
+
+ <div class="grid-row">
+ <div class="grid-col-3-4">
+ <section class="complementary-entries">
+ <div class="second-bottom-content-holder column-57" data-position="57,1-5 12-15">
+
+
+
+
+
+
+
+
+
+ </div>
+ </section>
+ </div>
+ </div>
+
+
+
+ <div class="grid-row">
+ <div class="grid-col-4-4 column-61" data-position="61,1-15">
+ <div class="karaluch"> +<header> +<span>Wiadomo¶ci - najwa¿niejsze informacje</span> +<i class="l"></i> +<i class="r"></i> +</header> +<section> +<header> +<span>Wiadomo¶ci</span> +</header> +<ul> +<li><a href="http://wyborcza.pl/TylkoZdrowie/7,137474,23080156,dash-najzdrowsza-dieta-swiata.html" title="Dash: najzdrowsza dieta">Dash: najzdrowsza dieta</a></li><li><a href="http://biqdata.wyborcza.pl/biqdata/7,159116,23102688,ta-pierwsza-niehandlowa-niedziela-czyli-kiedy-nie-zrobisz-zakupow.html" title="Zakaz handlu w niedziele: kalendarz">Zakaz handlu w niedziele: kalendarz</a></li><li><a href="http://cojestgrane24.wyborcza.pl/cjg24/1,42.html" title="Muzea i galerie">Muzea i galerie</a></li><li><a href="http://wyborcza.pl/7,155287,22875272,teresa-czerwinska-bezpartyjny-fachowiec-kim-jest-nowa-ministra.html" title="Teresa Czerwiñska">Teresa Czerwiñska</a></li><li><a href="http://wyborcza.pl/7,75398,22876010,deklaracja-wiary-prof-szumowskiego-nowy-minister-zdrowia-wrogiem.html" title="£ukasz Szumowski">£ukasz Szumowski</a></li><li><a href="http://wyborcza.pl/7,155287,22873972,andrzej-adamczyk-minister-infrastruktury.html" title="Andrzej Adamczyk">Andrzej Adamczyk</a></li><li><a href="http://wyborcza.pl/7,155287,22874245,jadwiga-emilewicz-kim-jest-nowa-ministra-przedsiebiorczosci.html" title="Jadwiga Emilewicz">Jadwiga Emilewicz</a></li><li><a href="http://wyborcza.pl/7,155287,22875049,henryk-kowalczyk-szara-eminencja-pis-odpowiada-teraz-za-lasy.html" title="Henryk Kowalczyk">Henryk Kowalczyk</a></li><li><a href="http://wyborcza.pl/7,155287,22875507,jacek-sasin-nowym-szefem-komitetu-stalego-rady-ministrow-to.html" title="Jacek Sasin">Jacek Sasin</a></li><li><a href="http://wyborcza.pl/7,75410,22875881,paszporty-polityki-2017-tegoroczni-laureaci-jagoda-szelc.html" title="Paszporty Polityki 2017: laureaci">Paszporty Polityki 2017: laureaci</a></li><li><a href="http://bydgoszcz.wyborcza.pl/bydgoszcz/7,48722,22875851,szarza-z-widelcem-zakonczona-kownacki-na-wylocie-z-rzadu.html" title="Bartosz Kownacki">Bartosz Kownacki</a></li><li><a href="http://wyborcza.pl/7,75400,22873943,wajrak-minister-jan-szyszko-przejdzie-do-historii-jako-wyjatkowy.html?disableRedirects=true" title="Jan Szyszko">Jan Szyszko</a></li><li><a href="http://wyborcza.pl/7,156282,22874046,totalne-zaskoczenie-w-resorcie-kazdy-chwycil-za-telefon.html?disableRedirects=true" title="Ministerstwo cyfryzacji: Anna Stre¿yñska">Ministerstwo cyfryzacji: Anna Stre¿yñska</a></li><li><a href="http://wyborcza.pl/7,155287,22874886,nowy-minister-inwestycji-i-rozwoju-unijny-ekspert-jerzy-kwiecinski.html" title="Jerzy Kwieciñski">Jerzy Kwieciñski</a></li><li><a href="http://lodz.wyborcza.pl/lodz/7,35136,22875801,cezary-grabarczyk-zrezygnowalem-z-obrony-immunitetem.html" title="Cezary Grabarczyk">Cezary Grabarczyk</a></li><li><a href="http://wyborcza.pl/ksiazki/7,154165,22643551,wybralismy-10-ksiazek-roku-2017.html" title="Ksi±¿ki roku 2017">Ksi±¿ki roku 2017</a></li> +</ul> +</section><section> +<header> +<span>Tematy</span> +</header> +<ul> +<li><a href="http://wyborcza.pl/0,128956.html?tag=barbara+dziuk" title="Barbara Dziuk">Barbara Dziuk</a></li><li><a href="http://wyborcza.pl/0,128956.html?tag=Marek+P%EAk" title="Marek Pêk">Marek Pêk</a></li><li><a href="http://wyborcza.pl/0,128956.html?tag=Miros%B3aw+Pampuch" title="Miros³aw Pampuch">Miros³aw Pampuch</a></li><li><a href="http://wyborcza.pl/1,75398,19217826,posel-marek-opiola-o-nocnym-odwolaniu-szefow-sluzb-poslowie.html" title="Marek Opio³a">Marek Opio³a</a></li><li><a href="http://wyborcza.pl/magazyn/7,124059,22222760,czy-czeslaw-milosz-moze-byc-rzeczywiscie-zagrozeniem-dla.html" title="Czes³aw Mi³osz">Czes³aw Mi³osz</a></li><li><a href="http://wyborcza.pl/0,143644.html" title="Wybory samorz±dowe 2018">Wybory samorz±dowe 2018</a></li><li><a href="http://wyborcza.pl/56,140981,21698092,brigitte-macron.html" title="Brigitte Macron">Brigitte Macron</a></li><li><a href="http://wyborcza.pl/0,128956.html?tag=kleszcze" title="Kleszcze">Kleszcze</a></li><li><a href="http://wyborcza.pl/0,128956.html?tag=brexit+pytania" title="Brexit: pytania i odpowiedzi">Brexit: pytania i odpowiedzi</a></li><li><a href="http://wyborcza.pl/7,156282,21960784,od-dzisiaj-roaming-w-unii-europejskiej-przestal-obowiazywac.html" title="Roaming">Roaming</a></li><li><a href="http://warszawa.wyborcza.pl/warszawa/7,54420,21888478,rekrutacja-do-liceow-rekord-to-55-chetnych-na-miejsce.html" title="Rekrutacja do liceów">Rekrutacja do liceów</a></li><li><a href="http://wyborcza.biz/biznes/7,147743,21939448,abonament-rtv-wszystko-co-trzeba-wiedziec-w-kilku-prostych.html" title="Abonament RTV">Abonament RTV</a></li><li><a href="http://wyborcza.pl/7,75398,20946585,marks-spencer-zamyka-wszystkie-sklepy-w-polsce.html" title="Marks & Spencer">Marks & Spencer</a></li><li><a href="http://wyborcza.pl/alehistoria/1,121681,17844725,Ile_milionow_zginelo__Ofiary_II_wojny_swiatowej.html" title="Ofiary II wojny ¶wiatowej">Ofiary II wojny ¶wiatowej</a></li><li><a href="http://wyborcza.pl/1,97654,21220741,uzytkowanie-wieczyste-2017.html" title="U¿ytkowanie wieczyste 2017">U¿ytkowanie wieczyste 2017</a></li> +</ul> +</section><section> +<header> +<span>Informatory</span> +</header> +<ul> +<li><a href="http://wyborcza.pl/1,97654,21282743,zasilki-na-dzieci-w-2017-roku.html" title="Zasi³ek na dziecko 2017">Zasi³ek na dziecko 2017</a></li><li><a href="http://wyborcza.pl/7,97654,22392210,koniec-uzytkowania-wieczystego-informator.html" title="U¿ytkowanie wieczyste">U¿ytkowanie wieczyste</a></li><li><a href="http://wyborcza.biz/biznes/7,147880,21895075,waloryzacja-emerytur-w-2018-r-juz-wiemy-ile-wyniesie.html" title="Waloryzacja emerytur">Waloryzacja emerytur</a></li><li><a href="http://wyborcza.pl/7,75398,21968688,egzamin-gimnazjalny-2017-centralna-komisja-egzaminacyjna-podala.html" title="Egzamin gimnazjalny 2017: wyniki">Egzamin gimnazjalny 2017: wyniki</a></li><li><a href="http://wyborcza.pl/7,155287,21921609,placa-minimalna-w-2018-r-2080-zl-stawka-za-godzine-13-5.html" title="P³aca minimalna 2018">P³aca minimalna 2018</a></li><li><a href="http://wyborcza.pl/7,75398,20946585,marks-spencer-zamyka-wszystkie-sklepy-w-polsce.html" title="Marks & Spencer">Marks & Spencer</a></li><li><a href="http://wyborcza.pl/1,75398,20349918,jak-swiadek-koronny-masa-zostal-odtajniony-czy-doszlo-do.html" title="Masa odtajniony">Masa odtajniony</a></li><li><a href="http://wyborcza.pl/1,75399,20330335,egipt-jechac-czy-nie-jechac.html" title="Egipt: czy jechaæ?">Egipt: czy jechaæ?</a></li><li><a href="http://wyborcza.pl/1,75398,20046370,litewska-zbrodnia-majora-lupaszki.html" title="£upaszka">£upaszka</a></li><li><a href="http://wyborcza.pl/alehistoria/1,121681,17844725,Ile_milionow_zginelo__Ofiary_II_wojny_swiatowej.html" title="Ofiary II wojny ¶wiatowej">Ofiary II wojny ¶wiatowej</a></li><li><a href="http://wyborcza.pl/1,97654,21220741,uzytkowanie-wieczyste-2017.html" title="U¿ytkowanie wieczyste 2017">U¿ytkowanie wieczyste 2017</a></li><li><a href="http://wyborcza.pl/1,75248,15262278,Szybszy_internet_w_siedmiu_krokach__Co_zrobic__by.html" title="Szybszy internet">Szybszy internet</a></li><li><a href="http://wyborcza.pl/nekrologi/1,101500,18747235,kondolencje-podziekowania-wzory.html" title="Wzory: kondolencje - podziêkowania">Wzory: kondolencje - podziêkowania</a></li><li><a href="http://wyborcza.pl/1,97654,20849294,zmiany-w-emeryturach-z-krus.html" title="KRUS emerytura">KRUS emerytura</a></li><li><a href="http://wyborcza.pl/1,97654,20345805,komu-sie-nalezy-swiadczenie-przedemerytalne.html" title="¦wiadczenie przedemerytalne">¦wiadczenie przedemerytalne</a></li><li><a href="http://wyborcza.pl/1,97654,19802750,wczesniejsza-emerytura-nauczyciela.html" title="Wcze¶niejsza emerytura nauczyciela">Wcze¶niejsza emerytura nauczyciela</a></li><li><a href="http://wyborcza.pl/1,97654,19697904,jaki-podatek-od-nieruchomosci.html" title="Jaki podatek od nieruchomo¶ci">Jaki podatek od nieruchomo¶ci</a></li><li><a href="http://wyborcza.pl/1,97654,19533208,komu-sie-nalezy-renta-socjalna.html" title="Renta socjalna">Renta socjalna</a></li><li><a href="http://wyborcza.pl/1,97654,19344883,po-spadek-do-sadu-czy-do-notariusza.html" title="Spadek: s±d czy notariusz">Spadek: s±d czy notariusz</a></li><li><a href="http://wyborcza.pl/1,97654,19526974,komu-sie-nalezy-renta-rodzinna.html" title="Renta rodzinna">Renta rodzinna</a></li> +</ul> +</section><section> +<header> +<span>Nauka dla Ka¿dego</span> +</header> +<ul> +<li><a href="http://wyborcza.pl/1,75248,6497648,Kleszcze__czyli_lesne_potwory.html" title="Kleszcze">Kleszcze</a></li><li><a href="http://wyborcza.pl/7,75400,21915146,polacy-rozszyfrowali-tajemnice-stwardnienia-rozsianego-mega-odkrycie.html" title="Stwardnienie rozsiane">Stwardnienie rozsiane</a></li><li><a href="http://wyborcza.pl/1,97654,19501961,przedawnienie-dlugow.html" title="Przedawnienie d³ugów">Przedawnienie d³ugów</a></li><li><a href="http://wyborcza.pl/1,97654,19139246,jak-czytac-wyniki-badan.html" title="Jak czytaæ wyniki badañ">Jak czytaæ wyniki badañ</a></li><li><a href="http://wyborcza.pl/1,97654,18726130,komu-sie-nalezy-dodatek-mieszkaniowy.html" title="Dodatek mieszkaniowy">Dodatek mieszkaniowy</a></li><li><a href="http://wyborcza.pl/1,97654,18083478,Jak_odzyskac_prawo_jazdy.html" title="Jak odzyskaæ prawo jazdy">Jak odzyskaæ prawo jazdy</a></li> +</ul> +</section><section> +<header> +<span>Tylko Zdrowie</span> +</header> +<ul> +<li><a href="http://wyborcza.pl/TylkoZdrowie/7,137474,22522336,ile-sie-zarabia-w-polskim-szpitalu-lista-plac.html" title="Szpital: Lista p³ac">Szpital: Lista p³ac</a></li><li><a href="http://wyborcza.pl/TylkoZdrowie/7,137474,22330718,rak-jelita-grubego-mozesz-mu-zapobiec-czy-badanie-jelita.html" title="Rak jelita grubego">Rak jelita grubego</a></li><li><a href="http://wyborcza.pl/TylkoZdrowie/7,137474,21879629,lody-weganskie-jak-je-zrobic.html" title="Lody wegañskie">Lody wegañskie</a></li><li><a href="http://wyborcza.pl/1,97654,17797883,Wazne_zmiany_w_kapitale_poczatkowym.html" title="Kapita³ pocz±tkowy zmiany">Kapita³ pocz±tkowy zmiany</a></li><li><a href="http://wyborcza.pl/1,97654,17787551,Emerytura_nauczyciela.html" title="Emerytura nauczyciela">Emerytura nauczyciela</a></li><li><a href="http://wyborcza.pl/1,97654,17414393,Za_ile_lat_emerytura_.html" title="Za ile lat emerytura?">Za ile lat emerytura?</a></li><li><a href="http://wyborcza.pl/1,97654,17264085,Spadek_i_darowizna_bez_placenia.html" title="Spadek i darowizna bez p³acenia">Spadek i darowizna bez p³acenia</a></li><li><a href="http://wyborcza.pl/1,97654,16322969,Testament_czy_darowizna__jak_przekazac_mieszkanie_.html" title="Testament czy darowizna">Testament czy darowizna</a></li><li><a href="http://wyborcza.pl/1,75398,19097048,235-miejsc-w-sejmie-dla-pis-pkw-podala-oficjalny-podzial-mandatow.html" title="Wyniki wyborów 2015 mandaty">Wyniki wyborów 2015 mandaty</a></li><li><a href="http://wyborcza.pl/7,75400,21726755,nadchodzi-wielki-atak-kleszczy.html" title="Kleszcze">Kleszcze</a></li><li><a href="http://wyborcza.pl/1,76842,7622197,Szumy_w_uszach__czyli_cisza__ktora_dzwoni_w_glowie.html" title="Szum w uszach">Szum w uszach</a></li> +</ul> +</section><section> +<header> +<span>Du¿y Format</span> +</header> +<ul> +<li><a href="http://wyborcza.pl/duzyformat/7,127290,22507549,angela-merkel-nas-zdradzila-dlaczego-6-milionow-niemcow.html" title="Angela Merkel">Angela Merkel</a></li><li><a href="http://wyborcza.pl/duzyformat/7,127290,22505059,policja-pod-willa-jaroslawa-kaczynskiego-policjanci-chronia.html" title="Jaros³aw Kaczyñski">Jaros³aw Kaczyñski</a></li><li><a href="http://wyborcza.pl/duzyformat/7,127290,21833158,jak-wstapilem-do-obrony-terytorialnej.html" title="Obrona Terytorialna">Obrona Terytorialna</a></li><li><a href="http://wyborcza.pl/1,76842,17920848,Fotelik_w_samochodzie___wazny_wzrost__a_nie_wiek_dziecka.html" title="Fotelik w samochodzie">Fotelik w samochodzie</a></li><li><a href="http://wyborcza.pl/1,97654,20039409,waloryzacja-emerytur-2017.html" title="Waloryzacja emerytur">Waloryzacja emerytur</a></li><li><a href="http://wyborcza.pl/TylkoZdrowie/1,137474,17101744,Dlaczego_masz_wzdety_brzuch.html" title="Wzdêty brzuch">Wzdêty brzuch</a></li> +</ul> +</section><section> +<header> +<span>Telewizyjna</span> +</header> +<ul> +<li><a href="http://wyborcza.pl/7,90535,20887556,wszystko-co-wiemy-o-3-sezonie-narcos-netflix-oglasza-obsade.html" title="Narcos">Narcos</a></li><li><a href="http://wyborcza.pl/TylkoZdrowie/1,137474,17101744,Dlaczego_masz_wzdety_brzuch.html" title="Wzdêty brzuch">Wzdêty brzuch</a></li> +</ul> +</section> +</div><!-- UZREditor --><!-- htmEOF --> +<!--17823192, [ /htm/17823/j17823192.htm ], null--> +
+
+ <div class="karaluch"> +<header> +<span>Tematy</span> +<i class="l"></i> +<i class="r"></i> +</header> +<section> +<header> +<span>Wiadomo¶ci</span> +</header> +<ul> +<li><a href="http://wyborcza.biz/biznes/7,147768,24265091,wazne-zmiany-jak-w-nowym-roku-rozliczyc-sie-z-urzedem-skarbowym.html" title="PIT 2018">PIT 2018</a></li><li><a href="http://wyborcza.biz/biznes/0,100969.html" title="Depesze agencyjne">Depesze agencyjne</a></li><li><a href="http://wyborcza.pl/0,128956.html?tag=500+z%B3+na+dziecko" title="500 z³ na dziecko">500 z³ na dziecko</a></li><li><a href="http://wyborcza.pl/0,148081.html" title="Uchod¼cy">Uchod¼cy</a></li><li><a href="http://wyborcza.biz/Gieldy/1,114507,19778208,ceny-ropy-ostro-w-gore-w-kwietniu-wielki-naftowy-pakt-rosji.html" title="Cena ropy">Cena ropy</a></li><li><a href="http://wyborcza.pl/0,105742.html" title="Katastrofa smoleñska">Katastrofa smoleñska</a></li> +</ul> +</section><section> +<header> +<span>Gie³da i Waluty</span> +</header> +<ul> +<li><a href="http://wyborcza.biz/Gieldy/0,114507.html" title="Wiadomo¶ci gie³dowe">Wiadomo¶ci gie³dowe</a></li><li><a href="http://wyborcza.biz/Gieldy/0,114514.html" title="Notowania GPW">Notowania GPW</a></li><li><a href="http://wyborcza.biz/Waluty/0,111138,8932151,,,Kursy_srednie_walut_NBP,A.html" title="Kursy walut NBP">Kursy walut NBP</a></li><li><a href="http://wyborcza.biz/Gieldy/0,125867.html" title="Surowce">Surowce</a></li><li><a href="http://wyborcza.biz/Gieldy/0,114544.html" title="S³ownik gie³dowy">S³ownik gie³dowy</a></li> +</ul> +</section><section> +<header> +<span>Firma</span> +</header> +<ul> +<li><a href="http://wyborcza.biz/biznes/0,147582.html" title="Wiadomo¶ci">Wiadomo¶ci</a></li> +</ul> +</section><section> +<header> +<span>Przetargi</span> +</header> +<ul> +<li><a href="http://www.komunikaty.pl/komunikaty/0,80849.html" title="Przetargi Wiadomo¶ci">Przetargi Wiadomo¶ci</a></li><li><a href="http://www.komunikaty.pl/komunikaty/0,79968.html" title="Przetargi Vademecum">Przetargi Vademecum</a></li><li><a href="http://www.komunikaty.pl/komunikaty/i/kategoria-Przetargi/1" title="Przetargi og³oszenia">Przetargi og³oszenia</a></li><li><a href="http://www.komunikaty.pl/komunikaty/i/kategoria-Przetargi/przedmiot-roboty+budowlane/1" title="Przetargi budowlane">Przetargi budowlane</a></li><li><a href="http://www.komunikaty.pl/komunikaty/i/kategoria-Nieruchomo%C5%9Bci/procedura-licytacja/1" title="Licytacje nieruchomo¶ci">Licytacje nieruchomo¶ci</a></li><li><a href="http://www.komunikaty.pl/komunikaty/i/kategoria-Ruchomo%C5%9Bci/procedura-licytacja/1" title="Licytacje ruchomo¶ci">Licytacje ruchomo¶ci</a></li> +</ul> +</section><section> +<header> +<span>Gie³da i waluty</span> +</header> +<ul> +<li><a href="http://wyborcza.biz/Gieldy/0,116736,,,,NAME,A.html" title="Katalog spó³ek">Katalog spó³ek</a></li><li><a href="http://wyborcza.biz/Waluty/0,111026.html" title="Stopy procentowe">Stopy procentowe</a></li><li><a href="http://wyborcza.biz/Gieldy/0,114543.html" title="Analiza techniczna">Analiza techniczna</a></li> +</ul> +</section> +</div><!-- UZREditor --><!-- htmEOF --> +<!--17661432, [ /htm/17661/j17661432.htm ], null--> +
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+ </div>
+
+ </div>
+
+ <div class="container-outer page-footer">
+ <div class="container-inner">
+ <div class="grid-row column-59" data-position="59,1-15">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="container-outer page-footer">
+<div class="container-inner">
+<div class="grid-row">
+
+ <div id="footer2"> +<section class="foot-summary"> +<header class="foot-summary-head"> +<h2 class="foot-summary-head-title">Wyborcza.pl</h2> +<a href="http://wyborcza.pl" title="Wyborcza.pl"> +<img src="http://static.im-g.pl/i/obrazki/wyborcza2015/svg/new_wyborcza_pl.svg" alt="Wyborcza.pl"> +</a> +</header> +<div class="foot-summary-big"> +<input type="checkbox" id="foot-summary-big-services-show" class="foot-summary-big-services-show"> +<nav class="foot-summary-big-services"> +<div class="foot-summary-big-services-block"> +<p class="foot-summary-big-services-block-name"> +<label for="foot-summary-big-services-block-show-0" title="Wyborcza.pl">Wyborcza.pl</label> +</p> +<input type="checkbox" id="foot-summary-big-services-block-show-0" class="foot-summary-big-services-block-show"> +<ul class="foot-summary-big-services-block-list"> +<li><a href="http://wyborcza.pl/0,75398.html" title="Kraj" >Kraj</a></li><li><a href="http://wyborcza.pl/0,75399.html" title="¦wiat" >¦wiat</a></li><li><a href="http://wyborcza.pl/0,75968.html" title="Opinie" >Opinie</a></li><li><a href="http://wyborcza.pl/0,155287.html" title="Gospodarka" >Gospodarka</a></li><li><a href="http://wyborcza.pl/0,75400.html" title="Nauka" >Nauka</a></li><li><a href="http://wyborcza.pl/0,156282.html" title="Technologia" >Technologia</a></li><li><a href="http://wyborcza.pl/0,75410.html" title="Kultura" >Kultura</a></li><li><a href="http://wyborcza.pl/0,154903.html" title="Sport" >Sport</a></li><li><a href="http://wyborcza.pl/0,82983.html" title="Wideo" >Wideo</a></li><li><a href="http://wyborcza.pl/0,160910.html" title="The Wall Street Journal" >The Wall Street Journal</a></li><li><a href="http://wyborcza.pl/0,87647.html" title="Witamy w Polsce" >Witamy w Polsce</a></li><li><a href="http://wyborcza.pl/0,160795.html" title="Wyborcza Classic" >Wyborcza Classic</a></li> +</ul> +</div><div class="foot-summary-big-services-block"> +<p class="foot-summary-big-services-block-name"> +<label for="foot-summary-big-services-block-show-1" title="Wyborcza.biz">Wyborcza.biz</label> +</p> +<input type="checkbox" id="foot-summary-big-services-block-show-1" class="foot-summary-big-services-block-show"> +<ul class="foot-summary-big-services-block-list"> +<li><a href="http://wyborcza.biz/biznes/0,149543.html" title="Aktualno¶ci" >Aktualno¶ci</a></li><li><a href="http://wyborcza.biz/Gieldy/0,114514.html" title="Gie³da" >Gie³da</a></li><li><a href="http://wyborcza.biz/Waluty/0,111138,8932151,,,Kursy_srednie_walut_NBP,A.html" title="Wymiana walut" >Wymiana walut</a></li><li><a href="http://wyborcza.biz/biznes/0,147582.html" title="Zakupy i finanse" >Zakupy i finanse</a></li><li><a href="http://wyborcza.biz/biznes/0,147880.html" title="ZUS i emerytury" >ZUS i emerytury</a></li><li><a href="http://wyborcza.biz/biznes/0,147768.html" title="Podatki" >Podatki</a></li><li><a href="http://wyborcza.biz/biznes/0,159911.html" title="Praca" >Praca</a></li><li><a href="http://wyborcza.biz/biznes/0,156481.html#TRNavSST" title="Motoryzacja i podró¿e" >Motoryzacja i podró¿e</a></li><li><a href="http://wyborcza.biz/biznes/0,147758.html" title="Nieruchomo¶ci" >Nieruchomo¶ci</a></li> +</ul> +</div><div class="foot-summary-big-services-block"> +<p class="foot-summary-big-services-block-name"> +<label for="foot-summary-big-services-block-show-2" title="Serwisy lokalne">Serwisy lokalne</label> +</p> +<input type="checkbox" id="foot-summary-big-services-block-show-2" class="foot-summary-big-services-block-show"> +<ul class="foot-summary-big-services-block-list"> +<li><a href="http://bialystok.wyborcza.pl/bialystok/0,0.html" title="Bia³ystok" >Bia³ystok</a></li><li><a href="http://bielskobiala.wyborcza.pl/bielskobiala/0,0.html" title="Bielsko-Bia³a" >Bielsko-Bia³a</a></li><li><a href="http://bydgoszcz.wyborcza.pl/bydgoszcz/0,0.html" title="Bydgoszcz" >Bydgoszcz</a></li><li><a href="http://czestochowa.wyborcza.pl/czestochowa/0,0.html" title="Czêstochowa" >Czêstochowa</a></li><li><a href="http://gliwice.wyborcza.pl/gliwice/0,0.html" title="Gliwice" >Gliwice</a></li><li><a href="http://gorzow.wyborcza.pl/gorzow/0,0.html" title="Gorzów Wlkp." >Gorzów Wlkp.</a></li><li><a href="http://katowice.wyborcza.pl/katowice/0,0.html" title="Katowice" >Katowice</a></li><li><a href="http://kielce.wyborcza.pl/kielce/0,0.html" title="Kielce" >Kielce</a></li><li><a href="http://krakow.wyborcza.pl/krakow/0,0.html" title="Kraków" >Kraków</a></li><li><a href="http://lublin.wyborcza.pl/lublin/0,0.html" title="Lublin" >Lublin</a></li><li><a href="http://lodz.wyborcza.pl/lodz/0,0.html" title="£ód¼" >£ód¼</a></li><li><a href="http://olsztyn.wyborcza.pl/olsztyn/0,0.html" title="Olsztyn" >Olsztyn</a></li><li><a href="http://opole.wyborcza.pl/opole/0,0.html" title="Opole" >Opole</a></li><li><a href="http://plock.wyborcza.pl/plock/0,0.html" title="P³ock" >P³ock</a></li><li><a href="http://poznan.wyborcza.pl/poznan/0,0.html" title="Poznañ" >Poznañ</a></li><li><a href="http://radom.wyborcza.pl/radom/0,0.html" title="Radom" >Radom</a></li><li><a href="http://rzeszow.wyborcza.pl/rzeszow/0,0.html" title="Rzeszów" >Rzeszów</a></li><li><a href="http://sosnowiec.wyborcza.pl/sosnowiec/0,0.html" title="Sosnowiec" >Sosnowiec</a></li><li><a href="http://szczecin.wyborcza.pl/szczecin/0,0.html" title="Szczecin" >Szczecin</a></li><li><a href="http://torun.wyborcza.pl/torun/0,0.html" title="Toruñ" >Toruñ</a></li><li><a href="http://trojmiasto.wyborcza.pl/trojmiasto/0,0.html" title="Trójmiasto" >Trójmiasto</a></li><li><a href="http://warszawa.wyborcza.pl/warszawa/0,0.html" title="Warszawa" >Warszawa</a></li><li><a href="http://wroclaw.wyborcza.pl/wroclaw/0,0.html" title="Wroc³aw" >Wroc³aw</a></li><li><a href="http://zielonagora.wyborcza.pl/zielonagora/0,0.html" title="Zielona Góra" >Zielona Góra</a></li> +</ul> +</div><div class="foot-summary-big-services-block"> +<p class="foot-summary-big-services-block-name"> +<label for="foot-summary-big-services-block-show-3" title="Wysokieobcasy.pl">Wysokieobcasy.pl</label> +</p> +<input type="checkbox" id="foot-summary-big-services-block-show-3" class="foot-summary-big-services-block-show"> +<ul class="foot-summary-big-services-block-list"> +<li><a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,114757.html" title="Najnowsze" >Najnowsze</a></li><li><a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,100865.html" title="G³osy Kobiet" >G³osy Kobiet</a></li><li><a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,53664.html" title="Psychologia" >Psychologia</a></li><li><a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,66725.html" title="Wasze listy" >Wasze listy</a></li><li><a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,53662.html" title="Portrety Kobiet" >Portrety Kobiet</a></li><li><a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,53664.html" title="Psychologia" >Psychologia</a></li><li><a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,127763.html" title="Nowy Numer" >Nowy Numer</a></li><li><a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,152731.html" title="Wysokie Obcasy Extra" >Wysokie Obcasy Extra</a></li><li><a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,100961.html" title="Zdrowie i Uroda" >Zdrowie i Uroda</a></li><li><a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,53667.html" title="Jedzenie" >Jedzenie</a></li><li><a href="http://www.wysokieobcasy.pl/wysokie-obcasy/0,158669.html" title="IT Girls" >IT Girls</a></li> +</ul> +</div><div class="foot-summary-big-services-block"> +<p class="foot-summary-big-services-block-name"> +<label for="foot-summary-big-services-block-show-4" title="Magazyny">Magazyny</label> +</p> +<input type="checkbox" id="foot-summary-big-services-block-show-4" class="foot-summary-big-services-block-show"> +<ul class="foot-summary-big-services-block-list"> +<li><a href="http://wyborcza.pl/duzyformat/0,0.html#TRNavSST" title="Du¿y Format" >Du¿y Format</a></li><li><a href="http://wyborcza.pl/magazyn/0,0.html" title="Magazyn ¦wi±teczny" >Magazyn ¦wi±teczny</a></li><li><a href="http://wyborcza.pl/alehistoria/0,0.html" title="Ale Historia" >Ale Historia</a></li><li><a href="http://wyborcza.pl/TylkoZdrowie/0,0.html" title="Tylko zdrowie" >Tylko zdrowie</a></li><li><a href="http://wyborcza.pl/0,90535.html" title="Telewizyjna" >Telewizyjna</a></li><li><a href="http://wyborcza.pl/ksiazki/0,0.html" title="Ksi±¿ki" >Ksi±¿ki</a></li><li><a href="http://wyborcza.pl/osiemdziewiec/0,0.html" title="Osiem Dziewiêæ" >Osiem Dziewiêæ</a></li><li><a href="http://wyborcza.pl/0,79078.html" title="Poradniki" >Poradniki</a></li> +</ul> +</div> +</nav> +<div class="foot-summary-big-services-more"> +<label for="foot-summary-big-services-show">Wiêcej</label> +</div> +</div><div class="foot-summary-short"> +<ul class="foot-summary-short-links"> +<li><a href="http://biqdata.wyborcza.pl/" title="BIQdata.pl" >BIQdata.pl</a></li><li><a href="http://classic.wyborcza.pl/archiwumGW/0,0.html" title="Archiwum" >Archiwum</a></li><li><a href="http://www.komunikaty.pl" title="Komunikaty.pl" >Komunikaty.pl</a></li><li><a href="http://cojestgrane24.wyborcza.pl/cjg24/0,0.html" title="Cojestgrane24.pl" >Cojestgrane24.pl</a></li><li><a href="http://nekrologi.wyborcza.pl/0,0.html" title="Nekrologi" >Nekrologi</a></li> +</ul><div class="foot-summary-short-partners"> +<p class="foot-summary-short-partners-labels">Serwisy partnerskie</p> +<ul class="foot-summary-short-partners-list"> +<li><a href="http://gazeta.pl" title="Gazeta.pl" >Gazeta.pl</a></li><li><a href="http://www.tokfm.pl/Tokfm/0,0.html" title="TOK.fm" >TOK.fm</a></li><li><a href="http://sport.pl" title="Sport.pl" >Sport.pl</a></li><li><a href="http://publio.pl" title="Publio.pl" >Publio.pl</a></li><li><a href="http://kulturalnysklep.pl" title="Kulturalnysklep.pl" >Kulturalnysklep.pl</a></li> +</ul> +</div> +<a class="foot-summary-short-contact-link" href="http://wyborcza.pl/centrumpomocygw/0,134959.html" title="Napisz do redakcji"> +<figure> +<svg> +<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#letter"></use> +</svg> +</figure> +Napisz do redakcji +</a> +<div class="foot-summary-short-contact"> +<a class="foot-summary-short-contact-mail" href="mailto:redakcja@wyborcza.pl" title="Napisz do redakcji"> +<figure> +<svg> +<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#letter"></use> +</svg> +</figure> +Napisz do redakcji +</a> +</div> +</div><div class="foot-summary-buttons"> +<div class="foot-summary-buttons-subscription"> +<a class="foot-summary-buttons-subscription-link" title="Kup prenumeratê" href="http://prenumerata.wyborcza.pl">Kup prenumeratê</a> +</div> +<div class="foot-summary-buttons-stores"><a +href="https://itunes.apple.com/pl/app/gazeta-wyborcza/id530078918" +title="Aplikacja wyborcza.pl" +><svg> +<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#app-store"></use> +</svg></a><a +href="https://play.google.com/store/apps/details?id=pl.wyborcza.android.google&hl=pl" +title="Aplikacja wyborcza.pl" +><svg> +<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#google-play"></use> +</svg></a></div><!-- UZREditor --><!-- htmEOF -->
+
+
+
+
+ <ul class="foot-summary-buttons-share"> +<li class="foot-summary-buttons-share-face"> +<a href="https://www.facebook.com/wyborczabiznes" > +<figure> +<svg> +<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#face"></use> +</svg> +</figure> +</a> +</li><li class="foot-summary-buttons-share-tweet"> +<a href="https://twitter.com/wyborcza_biz" > +<figure> +<svg> +<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#tweet"></use> +</svg> +</figure> +</a> +</li> +<li class="foot-summary-buttons-share-newsletter" title="newsletter"> +<a href="http://wyborcza.pl/0,157210.html?fromnlt=stopka&refnlt=http://wyborcza.biz/">Newsletter</a> +</li> +</ul><!-- UZREditor --><!-- htmEOF -->
+ <!-- test stopki modul jest-->
+
+
+
+
+
+ </div>
+ <footer class="foot-menu">
+ <nav class="foot-menu-links">
+ <p class="foot-menu-links-copyright"><a href="http://www.agora.pl/" title="Agora SA">Copyright © Agora SA</a></p>
+ <ul>
+
+ <li><a href="http://wyborcza.pl/centrumpomocygw/0,134955.html" title="O nas" >O nas</a></li><li><a href="http://wyborcza.pl/centrumpomocygw/7,134956,23413995,polityka-prywatnosci.html" title="Prywatno¶æ" >Prywatno¶æ</a></li><li><a href="http://wyborcza.pl/centrumpomocygw/1,134957,8856780,Ogolne_zasady_udzielania_licencji_do_Materialow_Redakcyjnych.html" title="Licencje/Kontent" >Licencje/Kontent</a></li><li><a href="http://wyborcza.pl/reklamaGW/0,156164.html" title="Reklama w Internecie" >Reklama w Internecie</a></li><li><a href="http://wyborcza.pl/reklamaGW/0,104163.html" title="Reklama w papierze" >Reklama w papierze</a></li><li><a href="http://wyborcza.pl/centrumpomocygw/0,134959.html" title="Kontakt" >Kontakt</a></li><li><a href="http://wyborcza.pl/centrumpomocygw/0,134958.html" title="Zg³o¶ b³±d" rel="nofollow">Zg³o¶ b³±d</a></li><li><a href="http://wyborcza.pl/centrumpomocygw/0,134958.html" title="Pomoc" >Pomoc</a></li><!-- UZREditor --><!-- htmEOF -->
+
+ <!-- 21755068 -->
+ <li><a href="http://wyborcza.biz/biznes/3660000,0.html" title="Wszystkie artyku³y">Wszystkie artyku³y</a></li>
+ </ul>
+ </nav>
+ </footer>
+</div>
+</div>
+</div>
+</div>
+
+<!-- footerModule v1.0 --> +<!--22442678, [ /fix/modules/wyborcza/portal/footerModule.jsp ], wyborczaFooterModule--> +
+ </div>
+ </div>
+ </div>
+
+
+
+
+ + + + + +<!--13289483, [ /fix/modules/wyborcza/rodoAgreement.jsp ], rodoAgreementModule--> +
+
+
+
+
+
+ <script type='text/javascript'>
+ var _sf_async_config = _sf_async_config || {};
+
+ _sf_async_config.sections = '/biznes, kraj';
+ _sf_async_config.authors = 'Micha³ Fr±k';
+ var _cbq = window._cbq = (window._cbq || []);
+ _cbq.push(['_acct', 'anon']);
+
+ (function() {
+ function loadChartbeat() {
+ window._sf_endpt = (new Date()).getTime();
+ var e = document.createElement('script');
+ e.setAttribute('language', 'javascript');
+ e.setAttribute('type', 'text/javascript');
+ e.setAttribute('src', '//static.chartbeat.com/js/chartbeat_video.js');
+ document.body.appendChild(e);
+ }
+ var oldonload = window.onload;
+ window.onload = (typeof window.onload != 'function') ? loadChartbeat
+ : function() {
+ oldonload();
+ loadChartbeat();
+ };
+ })();
+ </script>
+
+
+
+<!-- chartbeatModule v1.3 -->
+
+
+
+
+
+
+<div style="display:none;">
+<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/1039774788/?label=avQqCOa77QEQxOjm7wM&guid=ON&script=0"/>
+</div>
+
+
+<!-- remarketingModule -->
+
+
+
+
+
+
+ <!-- pre-footer script -->
+ <script>!function(){function a(){k(),b(),l()}function b(){var a=document.querySelectorAll("img["+p+"]:not(."+m+"):not(."+n+")");[].forEach.call(a,function(a){c(a)})}function c(a){var b,c,f=e(a);i(a)&&f&&!h(a,f)&&(a.addClass(n),c=document.createElement("div"),c.addClass(o),j(c,a),b=new Image,b.src=f,b.onload=function(e){d(a,b,c)})}function d(a,b,c){a.setAttribute("src",b.src),a.addClass(m),a.removeClass(n),a.removeAttribute(p),a.removeAttribute(q),c.remove()}function e(a){var b=a.getAttribute(p)||!1,c=a.getAttribute(q)||!1;return f()&&!g()&&c&&(b=c),b}function f(){var a=!1;return"undefined"!=typeof gazeta_pl&&void 0!==gazeta_pl.mobileInfo&&gazeta_pl.mobileInfo.hasOwnProperty("isMobileDevice")&&gazeta_pl.mobileInfo.isMobileDevice&&(a=!0),a}function g(){var a=!1;return"undefined"!=typeof gazeta_pl&&void 0!==gazeta_pl.tabletInfo&&gazeta_pl.tabletInfo.hasOwnProperty("isTabletDevice")&&!0===gazeta_pl.tabletInfo.isTabletDevice&&(a=!0),a}function h(a,b){return a.src===b&&(a.complete&&0!==a.naturalHeight)}function i(a){var b=a.getBoundingClientRect(),c=document.documentElement.scrollTop,d=b.top+c,e=a.clientHeight,f=window.innerHeight,g=c-f,h=c+f+f,i=d+e;return d>g&&i<h}function j(a,b){b.parentNode.insertBefore(a,b.nextSibling)}function k(){"remove"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),Element.prototype.addClass=function(a){this.classList.add(a)},Element.prototype.removeClass=function(a){this.classList.remove(a)}}function l(){["scroll","resize"].map(function(a){window.addEventListener(a,b)})}var m="loaded",n="processing",o="preloaderContainer",p="data-src",q="data-src-mobile";a()}();</script>
+ <!-- /pre-footer script -->
+
+
+
+
+
+
+ <!-- wyborcza_common_skrypt not set -->
+
+
+ <script type="text/javascript" src="//static.im-g.pl/info/wyborcza-common/builds/17.4.108/main-min.jsgz"></script>
+
+
+
+
+
+
+
+
+ <!-- desktop script -->
+ <script type="text/javascript" src="//static.im-g.pl/wyborcza/wyborcza-biz/js/1.0.4/main-min.jsgz"></script>
+ <!-- /desktop script -->
+
+
+
+
+
+
+
+ <!-- footer script -->
+ <script></script>
+ <!-- /footer script -->
+
+
+
+<!-- scriptsModule v1.1 -->
+ + + + <img src="https://pubads.g.doubleclick.net/activity;dc_iu=/75224259/DFPAudiencePixel;ord=1;dc_seg=692406053?" width=1 height=1 border=0/> + +<!-- singleViewModule --> + + +
+
+
+
+
+<!-- deutscheWelleModule -->
+
+
+
+
+
+
+
+<!-- gemiusEfekt -->
+
+
+
+
+
+
+
+<!-- plistaModule-->
+
+
+ +<!--10185200, [ null ], aggregatorModule--> +
+
+
+
+<div>
+ <script id="adblock-modal" type="text/template"> +<div class="noadinfo"> +<div class="noadinfo-modal"> +<img src="https://bis.gazeta.pl/im/8/22327/m22327058.png" alt="" class="noadinfo-modal-image noadinfo-modal-image-desktop"/> +<img src="https://bis.gazeta.pl/im/7/22327/m22327057.png" alt="" class="noadinfo-modal-image noadinfo-modal-image-mobile"/> +<div class="noadinfo-modal-subscription">Je¿eli jednak nie chcesz wy³±czaæ adblocka, <a href="http://wyborcza.pl/prenumerataadb">kup prenumeratê.</a> Zdecydowa³o siê na to ju¿ 100 tysiêcy internautów.</div> +<div class="noadinfo-modal-instruction"> +<div class="noadinfo-modal-show noadinfo-chrome"> +<label class="noadinfo-modal-instruction-tab noadinfo-modal-instruction-tab-active noadinfo-modal-instruction-tab-ab" for="option1">Mam Adblock</label> +<label class="noadinfo-modal-instruction-tab noadinfo-modal-instruction-tab-ap" for="option2">Mam Adblock Plus</label> +<div class="noadinfo-modal-instruction-holder"> +<input class="noadinfo-modal-input" type="radio" name="input-chrome" id="option1" checked /> +<div class="noadinfo-modal-detail"> +<p><b>Krok 1.</b> Kliknij w ikonkê Adblocka obok pola do adresu oraz wybierz opcjê: „Wstrzymaj blokowanie na stronach w tej domenie”.</p> +<img src="http://bi.gazeta.pl/im/4/22139/m22139974,CHROME-AB1.png" title="Instrukcja"> +<p><b>Krok 2.</b> Kliknij „Wyklucz”.</p> +<img src="http://bi.gazeta.pl/im/4/22156/m22156554,CHROME-AB2.png" title="Instrukcja"> +<p>Strona sama siê od¶wie¿y i dostaniesz darmowe artyku³y.</p> +</div> +<input class="noadinfo-modal-input" type="radio" name="input-chrome" id="option2" /> +<div class="noadinfo-modal-detail"> +<p><b>Krok 1.</b> Kliknij w ikonkê Adblocka Plus obok pola do adresu oraz kliknij „W³±czony na tej stronie”.</p> +<img src="http://bi.gazeta.pl/im/1/22139/m22139971,CHROME-AP1.png" title="Instrukcja"> +<p><b>Krok 2.</b> <a href="#" class="noadinfo-modal-instruction-reload" title="Od¶wie¿ stronê">Od¶wie¿ stronê</a>, aby dostaæ darmowe artyku³y!</p> +</div> +</div> +</div> +<div class="noadinfo-modal-show noadinfo-firefox"> +<label class="noadinfo-modal-instruction-tab noadinfo-modal-instruction-tab-active noadinfo-modal-instruction-tab-ap" for="option3">Mam Adblock</label> +<label class="noadinfo-modal-instruction-tab noadinfo-modal-instruction-tab-ub" for="option4">Mam Ublock Origin</label> +<div class="noadinfo-modal-instruction-holder"> +<input class="noadinfo-modal-input" type="radio" name="input-firefox" id="option3" checked /> +<div class="noadinfo-modal-detail"> +<p><b>Krok 1.</b> Kliknij w ikonkê Adblocka obok pola do adresu oraz kliknij: "Wy³±cz blokowanie tylko na tej stronie".</p> +<img src="http://bi.gazeta.pl/im/2/22139/m22139972,FIREFOX-AP1.png" title="Instrukcja"> +<p><b>Krok 2.</b> <a href="#" class="noadinfo-modal-instruction-reload" title="Od¶wie¿ stronê">Od¶wie¿ stronê</a>, aby dostaæ darmowe artyku³y!</p> +</div> +<input class="noadinfo-modal-input" type="radio" name="input-firefox" id="option4" /> +<div class="noadinfo-modal-detail"> +<p><b>Krok 1.</b> Kliknij w ikonkê uBlock Origin obok pola do adresu oraz kliknij du¿± niebiesk± ikonkê.</p> +<img src="http://bi.gazeta.pl/im/3/22139/m22139973,FIREFOX-UB1.png" title="Instrukcja"> +<p><b>Krok 2.</b> <a href="#" class="noadinfo-modal-instruction-reload" title="Od¶wie¿ stronê">Od¶wie¿ stronê</a>, aby dostaæ darmowe artyku³y!</p> +</div> +</div> +</div> +</div> +</div> +</div> +</script><!-- UZREditor --><!--22060362,aliasOf--><!-- htmEOF -->
+</div>
+
+<!-- adBlockModule -->
+ +<!--12059452, [ /fix/modules/wyborcza/portal/adBlockModule.jsp ], emptyBean--> +
+
+
+ <script type="text/javascript" src="https://bis.gazeta.pl/info/mapa2.js"></script>
+ <!-- gemiusHeatMap -->
+
+ <div class="mcBan" id="mcBan_4"></div>
+ <div class="mcBan" id="mcBan_6"></div>
+
+
+ <div class="mcBan" id="glider1"></div>
+ <div class="mcBan" id="crawler1"></div>
+
+
+ + + + + +<!-- iSlayModule --> + +<!--14021450, [ /fix/modules/wyborcza/portal/iSlayModule.jsp ], iSlayModule--> +
+</body>
+</html>
diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index c201d9a9b..ec5892ff5 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -33,6 +33,7 @@ defmodule Pleroma.Web.ConnCase do setup tags do Cachex.clear(:user_cache) + Cachex.clear(:object_cache) :ok = Ecto.Adapters.SQL.Sandbox.checkout(Pleroma.Repo) unless tags[:async] do diff --git a/test/support/data_case.ex b/test/support/data_case.ex index 56d5896ad..df260bd3f 100644 --- a/test/support/data_case.ex +++ b/test/support/data_case.ex @@ -32,6 +32,7 @@ defmodule Pleroma.DataCase do setup tags do Cachex.clear(:user_cache) + Cachex.clear(:object_cache) :ok = Ecto.Adapters.SQL.Sandbox.checkout(Pleroma.Repo) unless tags[:async] do diff --git a/test/support/factory.ex b/test/support/factory.ex index 4ac77981a..0c21093ce 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -193,7 +193,7 @@ defmodule Pleroma.Factory do def websub_subscription_factory do %Pleroma.Web.Websub.WebsubServerSubscription{ topic: "http://example.org", - callback: "http://example/org/callback", + callback: "http://example.org/callback", secret: "here's a secret", valid_until: NaiveDateTime.add(NaiveDateTime.utc_now(), 100), state: "requested" @@ -220,4 +220,11 @@ defmodule Pleroma.Factory do client_secret: "aaa;/&bbb" } end + + def instance_factory do + %Pleroma.Instances.Instance{ + host: "domain.com", + unreachable_since: nil + } + end end diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index 3043d2be6..78e8efc9d 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -143,7 +143,10 @@ defmodule HttpRequestMock do }} end - def get("https://squeet.me/xrd/?uri=lain@squeet.me", _, _, + def get( + "https://squeet.me/xrd/?uri=lain@squeet.me", + _, + _, Accept: "application/xrd+xml,application/jrd+json" ) do {:ok, @@ -153,7 +156,10 @@ defmodule HttpRequestMock do }} end - def get("https://mst3k.interlinked.me/users/luciferMysticus", _, _, + def get( + "https://mst3k.interlinked.me/users/luciferMysticus", + _, + _, Accept: "application/activity+json" ) do {:ok, @@ -171,7 +177,10 @@ defmodule HttpRequestMock do }} end - def get("https://hubzilla.example.org/channel/kaniini", _, _, + def get( + "https://hubzilla.example.org/channel/kaniini", + _, + _, Accept: "application/activity+json" ) do {:ok, @@ -248,7 +257,10 @@ defmodule HttpRequestMock do }} end - def get("http://mastodon.example.org/@admin/99541947525187367", _, _, + def get( + "http://mastodon.example.org/@admin/99541947525187367", + _, + _, Accept: "application/activity+json" ) do {:ok, @@ -274,7 +286,10 @@ defmodule HttpRequestMock do }} end - def get("https://mstdn.io/users/mayuutann/statuses/99568293732299394", _, _, + def get( + "https://mstdn.io/users/mayuutann/statuses/99568293732299394", + _, + _, Accept: "application/activity+json" ) do {:ok, @@ -429,7 +444,10 @@ defmodule HttpRequestMock do }} end - def get("https://social.sakamoto.gq/objects/0ccc1a2c-66b0-4305-b23a-7f7f2b040056", _, _, + def get( + "https://social.sakamoto.gq/objects/0ccc1a2c-66b0-4305-b23a-7f7f2b040056", + _, + _, Accept: "application/atom+xml" ) do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/httpoison_mock/sakamoto.atom")}} @@ -510,7 +528,10 @@ defmodule HttpRequestMock do %Tesla.Env{status: 200, body: File.read!("test/fixtures/httpoison_mock/squeet.me_host_meta")}} end - def get("https://squeet.me/xrd?uri=lain@squeet.me", _, _, + def get( + "https://squeet.me/xrd?uri=lain@squeet.me", + _, + _, Accept: "application/xrd+xml,application/jrd+json" ) do {:ok, @@ -541,7 +562,10 @@ defmodule HttpRequestMock do }} end - def get("http://framatube.org/main/xrd?uri=framasoft@framatube.org", _, _, + def get( + "http://framatube.org/main/xrd?uri=framasoft@framatube.org", + _, + _, Accept: "application/xrd+xml,application/jrd+json" ) do {:ok, @@ -560,7 +584,10 @@ defmodule HttpRequestMock do }} end - def get("http://gnusocial.de/main/xrd?uri=winterdienst@gnusocial.de", _, _, + def get( + "http://gnusocial.de/main/xrd?uri=winterdienst@gnusocial.de", + _, + _, Accept: "application/xrd+xml,application/jrd+json" ) do {:ok, @@ -594,7 +621,10 @@ defmodule HttpRequestMock do }} end - def get("https://gerzilla.de/xrd/?uri=kaniini@gerzilla.de", _, _, + def get( + "https://gerzilla.de/xrd/?uri=kaniini@gerzilla.de", + _, + _, Accept: "application/xrd+xml,application/jrd+json" ) do {:ok, @@ -657,10 +687,23 @@ defmodule HttpRequestMock do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/ogp.html")}} end + def get("http://example.com/malformed", _, _, _) do + {:ok, + %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/malformed-data.html")}} + end + def get("http://example.com/empty", _, _, _) do {:ok, %Tesla.Env{status: 200, body: "hello"}} end + def get("http://404.site" <> _, _, _, _) do + {:ok, + %Tesla.Env{ + status: 404, + body: "" + }} + end + def get(url, query, body, headers) do {:error, "Not implemented the mock response for get #{inspect(url)}, #{query}, #{inspect(body)}, #{ @@ -681,6 +724,26 @@ defmodule HttpRequestMock do }} end + def post("http://200.site" <> _, _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: "" + }} + end + + def post("http://connrefused.site" <> _, _, _, _) do + {:error, :connrefused} + end + + def post("http://404.site" <> _, _, _, _) do + {:ok, + %Tesla.Env{ + status: 404, + body: "" + }} + end + def post(url, _query, _body, _headers) do {:error, "Not implemented the mock response for post #{inspect(url)}"} end diff --git a/test/user_test.exs b/test/user_test.exs index 9815c4d5a..98d3bc464 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -65,6 +65,19 @@ defmodule Pleroma.UserTest do refute User.following?(user, not_followed) end + test "follow_all follows mutliple users without duplicating" do + user = insert(:user) + followed_zero = insert(:user) + followed_one = insert(:user) + followed_two = insert(:user) + + {:ok, user} = User.follow_all(user, [followed_zero, followed_one]) + assert length(user.following) == 3 + + {:ok, user} = User.follow_all(user, [followed_one, followed_two]) + assert length(user.following) == 4 + end + test "follow takes a user and another user" do user = insert(:user) followed = insert(:user) diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 52e67f046..d3dd160dd 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -6,8 +6,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do use Pleroma.Web.ConnCase import Pleroma.Factory alias Pleroma.Web.ActivityPub.{UserView, ObjectView} - alias Pleroma.{Object, Repo, User} - alias Pleroma.Activity + alias Pleroma.{Object, Repo, Activity, User, Instances} setup_all do Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) @@ -144,6 +143,23 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do :timer.sleep(500) assert Activity.get_by_ap_id(data["id"]) end + + test "it clears `unreachable` federation status of the sender", %{conn: conn} do + data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!() + + sender_url = data["actor"] + Instances.set_consistently_unreachable(sender_url) + refute Instances.reachable?(sender_url) + + conn = + conn + |> assign(:valid_signature, true) + |> put_req_header("content-type", "application/activity+json") + |> post("/inbox", data) + + assert "ok" == json_response(conn, 200) + assert Instances.reachable?(sender_url) + end end describe "/users/:nickname/inbox" do @@ -191,6 +207,28 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do assert response(conn, 200) =~ note_activity.data["object"]["content"] end + + test "it clears `unreachable` federation status of the sender", %{conn: conn} do + user = insert(:user) + + data = + File.read!("test/fixtures/mastodon-post-activity.json") + |> Poison.decode!() + |> Map.put("bcc", [user.ap_id]) + + sender_host = URI.parse(data["actor"]).host + Instances.set_consistently_unreachable(sender_host) + refute Instances.reachable?(sender_host) + + conn = + conn + |> assign(:valid_signature, true) + |> put_req_header("content-type", "application/activity+json") + |> post("/users/#{user.nickname}/inbox", data) + + assert "ok" == json_response(conn, 200) + assert Instances.reachable?(sender_host) + end end describe "/users/:nickname/outbox" do diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index b826f5a1b..a55961ac4 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -7,11 +7,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.CommonAPI - alias Pleroma.{Activity, Object, User} + alias Pleroma.{Activity, Object, User, Instances} alias Pleroma.Builders.ActivityBuilder import Pleroma.Factory import Tesla.Mock + import Mock setup do mock(fn env -> apply(HttpRequestMock, :request, [env]) end) @@ -696,6 +697,115 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert 3 = length(activities) end + describe "publish_one/1" do + test_with_mock "calls `Instances.set_reachable` on successful federation if `unreachable_since` is not specified", + Instances, + [:passthrough], + [] do + actor = insert(:user) + inbox = "http://200.site/users/nick1/inbox" + + assert {:ok, _} = ActivityPub.publish_one(%{inbox: inbox, json: "{}", actor: actor, id: 1}) + + assert called(Instances.set_reachable(inbox)) + end + + test_with_mock "calls `Instances.set_reachable` on successful federation if `unreachable_since` is set", + Instances, + [:passthrough], + [] do + actor = insert(:user) + inbox = "http://200.site/users/nick1/inbox" + + assert {:ok, _} = + ActivityPub.publish_one(%{ + inbox: inbox, + json: "{}", + actor: actor, + id: 1, + unreachable_since: NaiveDateTime.utc_now() + }) + + assert called(Instances.set_reachable(inbox)) + end + + test_with_mock "does NOT call `Instances.set_reachable` on successful federation if `unreachable_since` is nil", + Instances, + [:passthrough], + [] do + actor = insert(:user) + inbox = "http://200.site/users/nick1/inbox" + + assert {:ok, _} = + ActivityPub.publish_one(%{ + inbox: inbox, + json: "{}", + actor: actor, + id: 1, + unreachable_since: nil + }) + + refute called(Instances.set_reachable(inbox)) + end + + test_with_mock "calls `Instances.set_unreachable` on target inbox on non-2xx HTTP response code", + Instances, + [:passthrough], + [] do + actor = insert(:user) + inbox = "http://404.site/users/nick1/inbox" + + assert {:error, _} = + ActivityPub.publish_one(%{inbox: inbox, json: "{}", actor: actor, id: 1}) + + assert called(Instances.set_unreachable(inbox)) + end + + test_with_mock "it calls `Instances.set_unreachable` on target inbox on request error of any kind", + Instances, + [:passthrough], + [] do + actor = insert(:user) + inbox = "http://connrefused.site/users/nick1/inbox" + + assert {:error, _} = + ActivityPub.publish_one(%{inbox: inbox, json: "{}", actor: actor, id: 1}) + + assert called(Instances.set_unreachable(inbox)) + end + + test_with_mock "does NOT call `Instances.set_unreachable` if target is reachable", + Instances, + [:passthrough], + [] do + actor = insert(:user) + inbox = "http://200.site/users/nick1/inbox" + + assert {:ok, _} = ActivityPub.publish_one(%{inbox: inbox, json: "{}", actor: actor, id: 1}) + + refute called(Instances.set_unreachable(inbox)) + end + + test_with_mock "does NOT call `Instances.set_unreachable` if target instance has non-nil `unreachable_since`", + Instances, + [:passthrough], + [] do + actor = insert(:user) + inbox = "http://connrefused.site/users/nick1/inbox" + + assert {:error, _} = + ActivityPub.publish_one(%{ + inbox: inbox, + json: "{}", + actor: actor, + id: 1, + unreachable_since: NaiveDateTime.utc_now() + }) + + refute called(Instances.set_unreachable(inbox)) + end + end + def data_uri do File.read!("test/fixtures/avatar_data_uri") end diff --git a/test/web/federator_test.exs b/test/web/federator_test.exs index a49265c0c..05f813291 100644 --- a/test/web/federator_test.exs +++ b/test/web/federator_test.exs @@ -3,8 +3,8 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.FederatorTest do - alias Pleroma.Web.Federator - alias Pleroma.Web.CommonAPI + alias Pleroma.Web.{CommonAPI, Federator} + alias Pleroma.Instances use Pleroma.DataCase import Pleroma.Factory import Mock @@ -71,6 +71,124 @@ defmodule Pleroma.Web.FederatorTest do end end + describe "Targets reachability filtering in `publish`" do + test_with_mock "it federates only to reachable instances via AP", + Federator, + [:passthrough], + [] do + user = insert(:user) + + {inbox1, inbox2} = + {"https://domain.com/users/nick1/inbox", "https://domain2.com/users/nick2/inbox"} + + insert(:user, %{ + local: false, + nickname: "nick1@domain.com", + ap_id: "https://domain.com/users/nick1", + info: %{ap_enabled: true, source_data: %{"inbox" => inbox1}} + }) + + insert(:user, %{ + local: false, + nickname: "nick2@domain2.com", + ap_id: "https://domain2.com/users/nick2", + info: %{ap_enabled: true, source_data: %{"inbox" => inbox2}} + }) + + dt = NaiveDateTime.utc_now() + Instances.set_unreachable(inbox1, dt) + + Instances.set_consistently_unreachable(URI.parse(inbox2).host) + + {:ok, _activity} = + CommonAPI.post(user, %{"status" => "HI @nick1@domain.com, @nick2@domain2.com!"}) + + assert called( + Federator.enqueue(:publish_single_ap, %{inbox: inbox1, unreachable_since: dt}) + ) + + refute called(Federator.enqueue(:publish_single_ap, %{inbox: inbox2})) + end + + test_with_mock "it federates only to reachable instances via Websub", + Federator, + [:passthrough], + [] do + user = insert(:user) + websub_topic = Pleroma.Web.OStatus.feed_path(user) + + sub1 = + insert(:websub_subscription, %{ + topic: websub_topic, + state: "active", + callback: "http://pleroma.soykaf.com/cb" + }) + + sub2 = + insert(:websub_subscription, %{ + topic: websub_topic, + state: "active", + callback: "https://pleroma2.soykaf.com/cb" + }) + + dt = NaiveDateTime.utc_now() + Instances.set_unreachable(sub2.callback, dt) + + Instances.set_consistently_unreachable(sub1.callback) + + {:ok, _activity} = CommonAPI.post(user, %{"status" => "HI"}) + + assert called( + Federator.enqueue(:publish_single_websub, %{ + callback: sub2.callback, + unreachable_since: dt + }) + ) + + refute called(Federator.enqueue(:publish_single_websub, %{callback: sub1.callback})) + end + + test_with_mock "it federates only to reachable instances via Salmon", + Federator, + [:passthrough], + [] do + user = insert(:user) + + remote_user1 = + insert(:user, %{ + local: false, + nickname: "nick1@domain.com", + ap_id: "https://domain.com/users/nick1", + info: %{salmon: "https://domain.com/salmon"} + }) + + remote_user2 = + insert(:user, %{ + local: false, + nickname: "nick2@domain2.com", + ap_id: "https://domain2.com/users/nick2", + info: %{salmon: "https://domain2.com/salmon"} + }) + + dt = NaiveDateTime.utc_now() + Instances.set_unreachable(remote_user2.ap_id, dt) + + Instances.set_consistently_unreachable("domain.com") + + {:ok, _activity} = + CommonAPI.post(user, %{"status" => "HI @nick1@domain.com, @nick2@domain2.com!"}) + + assert called( + Federator.enqueue(:publish_single_salmon, %{ + recipient: remote_user2, + unreachable_since: dt + }) + ) + + refute called(Federator.enqueue(:publish_single_websub, %{recipient: remote_user1})) + end + end + describe "Receive an activity" do test "successfully processes incoming AP docs with correct origin" do params = %{ diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs new file mode 100644 index 000000000..a158c0a42 --- /dev/null +++ b/test/web/instances/instance_test.exs @@ -0,0 +1,107 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Instances.InstanceTest do + alias Pleroma.Repo + alias Pleroma.Instances.Instance + + use Pleroma.DataCase + + import Pleroma.Factory + + setup_all do + config_path = [:instance, :federation_reachability_timeout_days] + initial_setting = Pleroma.Config.get(config_path) + + Pleroma.Config.put(config_path, 1) + on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end) + + :ok + end + + 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()) + + assert {:ok, instance} = Instance.set_reachable(instance.host) + refute instance.unreachable_since + end + + test "keeps nil `unreachable_since` of existing matching Instance record having nil `unreachable_since`" do + instance = insert(:instance, unreachable_since: nil) + + assert {:ok, instance} = Instance.set_reachable(instance.host) + refute instance.unreachable_since + end + + test "does NOT create an Instance record in case of no existing matching record" do + host = "domain.org" + assert nil == Instance.set_reachable(host) + + assert [] = Repo.all(Ecto.Query.from(i in Instance)) + assert Instance.reachable?(host) + end + end + + describe "set_unreachable/1" do + test "creates new record having `unreachable_since` to current time if record does not exist" do + assert {:ok, instance} = Instance.set_unreachable("https://domain.com/path") + + instance = Repo.get(Instance, instance.id) + assert instance.unreachable_since + assert "domain.com" == instance.host + end + + test "sets `unreachable_since` of existing record having nil `unreachable_since`" do + instance = insert(:instance, unreachable_since: nil) + refute instance.unreachable_since + + assert {:ok, _} = Instance.set_unreachable(instance.host) + + instance = Repo.get(Instance, instance.id) + assert instance.unreachable_since + end + + test "does NOT modify `unreachable_since` value of existing record in case it's present" do + instance = + insert(:instance, unreachable_since: NaiveDateTime.add(NaiveDateTime.utc_now(), -10)) + + assert instance.unreachable_since + initial_value = instance.unreachable_since + + assert {:ok, _} = Instance.set_unreachable(instance.host) + + instance = Repo.get(Instance, instance.id) + assert initial_value == instance.unreachable_since + end + end + + describe "set_unreachable/2" do + test "sets `unreachable_since` value of existing record in case it's newer than supplied value" do + instance = + insert(:instance, unreachable_since: NaiveDateTime.add(NaiveDateTime.utc_now(), -10)) + + assert instance.unreachable_since + + past_value = NaiveDateTime.add(NaiveDateTime.utc_now(), -100) + assert {:ok, _} = Instance.set_unreachable(instance.host, past_value) + + instance = Repo.get(Instance, instance.id) + assert past_value == instance.unreachable_since + end + + test "does NOT modify `unreachable_since` value of existing record in case it's equal to or older than supplied value" do + instance = + insert(:instance, unreachable_since: NaiveDateTime.add(NaiveDateTime.utc_now(), -10)) + + assert instance.unreachable_since + initial_value = instance.unreachable_since + + assert {:ok, _} = Instance.set_unreachable(instance.host, NaiveDateTime.utc_now()) + + instance = Repo.get(Instance, instance.id) + assert initial_value == instance.unreachable_since + end + end +end diff --git a/test/web/instances/instances_test.exs b/test/web/instances/instances_test.exs new file mode 100644 index 000000000..2530c09fe --- /dev/null +++ b/test/web/instances/instances_test.exs @@ -0,0 +1,131 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.InstancesTest do + alias Pleroma.Instances + + use Pleroma.DataCase + + setup_all do + config_path = [:instance, :federation_reachability_timeout_days] + initial_setting = Pleroma.Config.get(config_path) + + Pleroma.Config.put(config_path, 1) + on_exit(fn -> Pleroma.Config.put(config_path, initial_setting) end) + + :ok + end + + describe "reachable?/1" do + test "returns `true` for host / url with unknown reachability status" do + assert Instances.reachable?("unknown.site") + assert Instances.reachable?("http://unknown.site") + end + + test "returns `false` for host / url marked unreachable for at least `reachability_datetime_threshold()`" do + host = "consistently-unreachable.name" + Instances.set_consistently_unreachable(host) + + refute Instances.reachable?(host) + refute Instances.reachable?("http://#{host}/path") + end + + test "returns `true` for host / url marked unreachable for less than `reachability_datetime_threshold()`" do + url = "http://eventually-unreachable.name/path" + + Instances.set_unreachable(url) + + assert Instances.reachable?(url) + assert Instances.reachable?(URI.parse(url).host) + end + + test "returns true on non-binary input" do + assert Instances.reachable?(nil) + assert Instances.reachable?(1) + end + end + + describe "filter_reachable/1" do + setup do + host = "consistently-unreachable.name" + url1 = "http://eventually-unreachable.com/path" + url2 = "http://domain.com/path" + + Instances.set_consistently_unreachable(host) + Instances.set_unreachable(url1) + + result = Instances.filter_reachable([host, url1, url2, nil]) + %{result: result, url1: url1, url2: url2} + end + + test "returns a map with keys containing 'not marked consistently unreachable' elements of supplied list", + %{result: result, url1: url1, url2: url2} do + assert is_map(result) + assert Enum.sort([url1, url2]) == result |> Map.keys() |> Enum.sort() + end + + test "returns a map with `unreachable_since` values for keys", + %{result: result, url1: url1, url2: url2} do + assert is_map(result) + assert %NaiveDateTime{} = result[url1] + assert is_nil(result[url2]) + end + + test "returns an empty map for empty list or list containing no hosts / url" do + assert %{} == Instances.filter_reachable([]) + assert %{} == Instances.filter_reachable([nil]) + end + end + + describe "set_reachable/1" do + test "sets unreachable url or host reachable" do + host = "domain.com" + Instances.set_consistently_unreachable(host) + refute Instances.reachable?(host) + + Instances.set_reachable(host) + assert Instances.reachable?(host) + end + + test "keeps reachable url or host reachable" do + url = "https://site.name?q=" + assert Instances.reachable?(url) + + Instances.set_reachable(url) + assert Instances.reachable?(url) + end + + test "returns error status on non-binary input" do + assert {:error, _} = Instances.set_reachable(nil) + assert {:error, _} = Instances.set_reachable(1) + end + end + + # Note: implementation-specific (e.g. Instance) details of set_unreachable/1 should be tested in implementation-specific tests + describe "set_unreachable/1" do + test "returns error status on non-binary input" do + assert {:error, _} = Instances.set_unreachable(nil) + assert {:error, _} = Instances.set_unreachable(1) + end + end + + describe "set_consistently_unreachable/1" do + test "sets reachable url or host unreachable" do + url = "http://domain.com?q=" + assert Instances.reachable?(url) + + Instances.set_consistently_unreachable(url) + refute Instances.reachable?(url) + end + + test "keeps unreachable url or host unreachable" do + host = "site.name" + Instances.set_consistently_unreachable(host) + refute Instances.reachable?(host) + + Instances.set_consistently_unreachable(host) + refute Instances.reachable?(host) + 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 141d300c7..8528d4f64 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -137,6 +137,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do end test "posting a status with OGP link preview", %{conn: conn} do + Pleroma.Config.put([:rich_media, :enabled], true) user = insert(:user) conn = @@ -148,6 +149,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do assert %{"id" => id, "card" => %{"title" => "The Rock"}} = json_response(conn, 200) assert Repo.get(Activity, id) + Pleroma.Config.put([:rich_media, :enabled], false) end test "posting a direct status", %{conn: conn} do @@ -1667,6 +1669,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do end test "Status rich-media Card", %{conn: conn, user: user} do + Pleroma.Config.put([:rich_media, :enabled], true) {:ok, activity} = CommonAPI.post(user, %{"status" => "http://example.com/ogp"}) response = @@ -1691,6 +1694,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do } } } + + Pleroma.Config.put([:rich_media, :enabled], false) end end diff --git a/test/web/node_info_test.exs b/test/web/node_info_test.exs index 5981c70a7..763549bd1 100644 --- a/test/web/node_info_test.exs +++ b/test/web/node_info_test.exs @@ -12,7 +12,7 @@ defmodule Pleroma.Web.NodeInfoTest do conn = conn - |> get("/nodeinfo/2.0.json") + |> get("/nodeinfo/2.1.json") assert result = json_response(conn, 200) @@ -22,7 +22,7 @@ defmodule Pleroma.Web.NodeInfoTest do test "nodeinfo shows restricted nicknames", %{conn: conn} do conn = conn - |> get("/nodeinfo/2.0.json") + |> get("/nodeinfo/2.1.json") assert result = json_response(conn, 200) @@ -42,7 +42,7 @@ defmodule Pleroma.Web.NodeInfoTest do |> json_response(404) conn - |> get("/nodeinfo/2.0.json") + |> get("/nodeinfo/2.1.json") |> json_response(404) instance = @@ -58,7 +58,52 @@ defmodule Pleroma.Web.NodeInfoTest do |> json_response(200) conn + |> get("/nodeinfo/2.1.json") + |> json_response(200) + end + + test "returns 404 when federation is disabled (nodeinfo 2.0)", %{conn: conn} do + instance = + Application.get_env(:pleroma, :instance) + |> Keyword.put(:federating, false) + + Application.put_env(:pleroma, :instance, instance) + + conn + |> get("/.well-known/nodeinfo") + |> json_response(404) + + conn + |> get("/nodeinfo/2.0.json") + |> json_response(404) + + instance = + Application.get_env(:pleroma, :instance) + |> Keyword.put(:federating, true) + + Application.put_env(:pleroma, :instance, instance) + end + + test "returns 200 when federation is enabled (nodeinfo 2.0)", %{conn: conn} do + conn + |> get("/.well-known/nodeinfo") + |> json_response(200) + + conn |> get("/nodeinfo/2.0.json") |> json_response(200) end + + test "returns software.repository field in nodeinfo 2.1", %{conn: conn} do + conn + |> get("/.well-known/nodeinfo") + |> json_response(200) + + conn = + conn + |> get("/nodeinfo/2.1.json") + + assert result = json_response(conn, 200) + assert Pleroma.Application.repository() == result["software"]["repository"] + end end diff --git a/test/web/ostatus/incoming_documents/delete_handling_test.exs b/test/web/ostatus/incoming_documents/delete_handling_test.exs index c8fbff6cc..d97cd79f4 100644 --- a/test/web/ostatus/incoming_documents/delete_handling_test.exs +++ b/test/web/ostatus/incoming_documents/delete_handling_test.exs @@ -2,9 +2,16 @@ defmodule Pleroma.Web.OStatus.DeleteHandlingTest do use Pleroma.DataCase import Pleroma.Factory + import Tesla.Mock + alias Pleroma.{Repo, Activity, Object} alias Pleroma.Web.OStatus + setup do + mock(fn env -> apply(HttpRequestMock, :request, [env]) end) + :ok + end + describe "deletions" do test "it removes the mentioned activity" do note = insert(:note_activity) diff --git a/test/web/ostatus/ostatus_controller_test.exs b/test/web/ostatus/ostatus_controller_test.exs index 954abf5fe..3145ca9a1 100644 --- a/test/web/ostatus/ostatus_controller_test.exs +++ b/test/web/ostatus/ostatus_controller_test.exs @@ -14,49 +14,51 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do :ok end - test "decodes a salmon", %{conn: conn} do - user = insert(:user) - salmon = File.read!("test/fixtures/salmon.xml") - - conn = - conn - |> put_req_header("content-type", "application/atom+xml") - |> post("/users/#{user.nickname}/salmon", salmon) - - assert response(conn, 200) - end - - test "decodes a salmon with a changed magic key", %{conn: conn} do - user = insert(:user) - salmon = File.read!("test/fixtures/salmon.xml") - - conn = - conn - |> put_req_header("content-type", "application/atom+xml") - |> post("/users/#{user.nickname}/salmon", salmon) - - assert response(conn, 200) - - # Set a wrong magic-key for a user so it has to refetch - salmon_user = User.get_by_ap_id("http://gs.example.org:4040/index.php/user/1") - # Wrong key - info_cng = - User.Info.remote_user_creation(salmon_user.info, %{ - magic_key: - "RSA.pu0s-halox4tu7wmES1FVSx6u-4wc0YrUFXcqWXZG4-27UmbCOpMQftRCldNRfyA-qLbz-eqiwrong1EwUvjsD4cYbAHNGHwTvDOyx5AKthQUP44ykPv7kjKGh3DWKySJvcs9tlUG87hlo7AvnMo9pwRS_Zz2CacQ-MKaXyDepk=.AQAB" - }) - - salmon_user - |> Ecto.Changeset.change() - |> Ecto.Changeset.put_embed(:info, info_cng) - |> Repo.update() - - conn = - build_conn() - |> put_req_header("content-type", "application/atom+xml") - |> post("/users/#{user.nickname}/salmon", salmon) - - assert response(conn, 200) + describe "salmon_incoming" do + test "decodes a salmon", %{conn: conn} do + user = insert(:user) + salmon = File.read!("test/fixtures/salmon.xml") + + conn = + conn + |> put_req_header("content-type", "application/atom+xml") + |> post("/users/#{user.nickname}/salmon", salmon) + + assert response(conn, 200) + end + + test "decodes a salmon with a changed magic key", %{conn: conn} do + user = insert(:user) + salmon = File.read!("test/fixtures/salmon.xml") + + conn = + conn + |> put_req_header("content-type", "application/atom+xml") + |> post("/users/#{user.nickname}/salmon", salmon) + + assert response(conn, 200) + + # Set a wrong magic-key for a user so it has to refetch + salmon_user = User.get_by_ap_id("http://gs.example.org:4040/index.php/user/1") + # Wrong key + info_cng = + User.Info.remote_user_creation(salmon_user.info, %{ + magic_key: + "RSA.pu0s-halox4tu7wmES1FVSx6u-4wc0YrUFXcqWXZG4-27UmbCOpMQftRCldNRfyA-qLbz-eqiwrong1EwUvjsD4cYbAHNGHwTvDOyx5AKthQUP44ykPv7kjKGh3DWKySJvcs9tlUG87hlo7AvnMo9pwRS_Zz2CacQ-MKaXyDepk=.AQAB" + }) + + salmon_user + |> Ecto.Changeset.change() + |> Ecto.Changeset.put_embed(:info, info_cng) + |> Repo.update() + + conn = + build_conn() + |> put_req_header("content-type", "application/atom+xml") + |> post("/users/#{user.nickname}/salmon", salmon) + + assert response(conn, 200) + end end test "gets a feed", %{conn: conn} do diff --git a/test/web/ostatus/ostatus_test.exs b/test/web/ostatus/ostatus_test.exs index 403cc7095..dbe5de2e2 100644 --- a/test/web/ostatus/ostatus_test.exs +++ b/test/web/ostatus/ostatus_test.exs @@ -6,7 +6,7 @@ defmodule Pleroma.Web.OStatusTest do use Pleroma.DataCase alias Pleroma.Web.OStatus alias Pleroma.Web.XML - alias Pleroma.{Object, Repo, User, Activity} + alias Pleroma.{Object, Repo, User, Activity, Instances} import Pleroma.Factory import ExUnit.CaptureLog @@ -311,6 +311,22 @@ defmodule Pleroma.Web.OStatusTest do refute User.following?(follower, followed) end + test "it clears `unreachable` federation status of the sender" do + incoming_reaction_xml = File.read!("test/fixtures/share-gs.xml") + doc = XML.parse_document(incoming_reaction_xml) + actor_uri = XML.string_from_xpath("//author/uri[1]", doc) + reacted_to_author_uri = XML.string_from_xpath("//author/uri[2]", doc) + + Instances.set_consistently_unreachable(actor_uri) + Instances.set_consistently_unreachable(reacted_to_author_uri) + refute Instances.reachable?(actor_uri) + refute Instances.reachable?(reacted_to_author_uri) + + {:ok, _} = OStatus.handle_incoming(incoming_reaction_xml) + assert Instances.reachable?(actor_uri) + refute Instances.reachable?(reacted_to_author_uri) + end + describe "new remote user creation" do test "returns local users" do local_user = insert(:user) @@ -514,6 +530,8 @@ defmodule Pleroma.Web.OStatusTest do note_object.data |> Map.put("type", "Article") + Cachex.clear(:object_cache) + cs = Object.change(note_object, %{data: note_data}) {:ok, _article_object} = Repo.update(cs) diff --git a/test/web/rich_media/parser_test.exs b/test/web/rich_media/parser_test.exs index 93a58c528..47b127cf9 100644 --- a/test/web/rich_media/parser_test.exs +++ b/test/web/rich_media/parser_test.exs @@ -88,4 +88,8 @@ defmodule Pleroma.Web.RichMedia.ParserTest do width: "1024" }} end + + test "rejects invalid OGP data" do + assert {:error, _} = Pleroma.Web.RichMedia.Parser.parse("http://example.com/malformed") + end end diff --git a/test/web/twitter_api/twitter_api_test.exs b/test/web/twitter_api/twitter_api_test.exs index f94e2b873..48ddbcf50 100644 --- a/test/web/twitter_api/twitter_api_test.exs +++ b/test/web/twitter_api/twitter_api_test.exs @@ -200,12 +200,27 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do test "it favorites a status, returns the updated activity" do user = insert(:user) + other_user = insert(:user) note_activity = insert(:note_activity) {:ok, status} = TwitterAPI.fav(user, note_activity.id) updated_activity = Activity.get_by_ap_id(note_activity.data["id"]) + assert ActivityView.render("activity.json", %{activity: updated_activity})["fave_num"] == 1 + + object = Object.normalize(note_activity.data["object"]) + + assert object.data["like_count"] == 1 assert status == updated_activity + + {:ok, _status} = TwitterAPI.fav(other_user, note_activity.id) + + object = Object.normalize(note_activity.data["object"]) + + assert object.data["like_count"] == 2 + + updated_activity = Activity.get_by_ap_id(note_activity.data["id"]) + assert ActivityView.render("activity.json", %{activity: updated_activity})["fave_num"] == 2 end test "it unfavorites a status, returns the updated activity" do diff --git a/test/web/websub/websub_controller_test.exs b/test/web/websub/websub_controller_test.exs index 9cbcda063..6492df2a0 100644 --- a/test/web/websub/websub_controller_test.exs +++ b/test/web/websub/websub_controller_test.exs @@ -50,35 +50,37 @@ defmodule Pleroma.Web.Websub.WebsubControllerTest do assert_in_delta NaiveDateTime.diff(websub.valid_until, NaiveDateTime.utc_now()), 100, 5 end - test "handles incoming feed updates", %{conn: conn} do - websub = insert(:websub_client_subscription) - doc = "some stuff" - signature = Websub.sign(websub.secret, doc) - - conn = - conn - |> put_req_header("x-hub-signature", "sha1=" <> signature) - |> put_req_header("content-type", "application/atom+xml") - |> post("/push/subscriptions/#{websub.id}", doc) - - assert response(conn, 200) == "OK" - - assert length(Repo.all(Activity)) == 1 - end - - test "rejects incoming feed updates with the wrong signature", %{conn: conn} do - websub = insert(:websub_client_subscription) - doc = "some stuff" - signature = Websub.sign("wrong secret", doc) - - conn = - conn - |> put_req_header("x-hub-signature", "sha1=" <> signature) - |> put_req_header("content-type", "application/atom+xml") - |> post("/push/subscriptions/#{websub.id}", doc) - - assert response(conn, 500) == "Error" - - assert length(Repo.all(Activity)) == 0 + describe "websub_incoming" do + test "handles incoming feed updates", %{conn: conn} do + websub = insert(:websub_client_subscription) + doc = "some stuff" + signature = Websub.sign(websub.secret, doc) + + conn = + conn + |> put_req_header("x-hub-signature", "sha1=" <> signature) + |> put_req_header("content-type", "application/atom+xml") + |> post("/push/subscriptions/#{websub.id}", doc) + + assert response(conn, 200) == "OK" + + assert length(Repo.all(Activity)) == 1 + end + + test "rejects incoming feed updates with the wrong signature", %{conn: conn} do + websub = insert(:websub_client_subscription) + doc = "some stuff" + signature = Websub.sign("wrong secret", doc) + + conn = + conn + |> put_req_header("x-hub-signature", "sha1=" <> signature) + |> put_req_header("content-type", "application/atom+xml") + |> post("/push/subscriptions/#{websub.id}", doc) + + assert response(conn, 500) == "Error" + + assert length(Repo.all(Activity)) == 0 + end end end |