diff options
author | zotlabs <mike@macgirvin.com> | 2017-04-17 16:04:17 -0700 |
---|---|---|
committer | zotlabs <mike@macgirvin.com> | 2017-04-17 16:04:17 -0700 |
commit | 7a31c039fb1114e251a85c4888a305966945167b (patch) | |
tree | c1f1074e25d0f53bce797c5887f2c235b681694c | |
parent | 60d4b4c4f6ed9f41bdf2e8ec17e448f39f699096 (diff) | |
parent | 7cca2b7fb0fe716f669b854606fdd1329ccb77ad (diff) | |
download | volse-hubzilla-7a31c039fb1114e251a85c4888a305966945167b.tar.gz volse-hubzilla-7a31c039fb1114e251a85c4888a305966945167b.tar.bz2 volse-hubzilla-7a31c039fb1114e251a85c4888a305966945167b.zip |
Merge branch 'dev' of https://github.com/redmatrix/hubzilla into xdev_merge
82 files changed, 32300 insertions, 28317 deletions
diff --git a/Zotlabs/Module/Embedphotos.php b/Zotlabs/Module/Embedphotos.php index 48667795c..c92af27d6 100644 --- a/Zotlabs/Module/Embedphotos.php +++ b/Zotlabs/Module/Embedphotos.php @@ -92,6 +92,7 @@ class Embedphotos extends \Zotlabs\Web\Controller { * It is a limitation of the photo table using a name for a photo album instead of a folder hash */ if($album) { + require_once('include/attach.php'); $x = q("select hash from attach where filename = '%s' and uid = %d limit 1", dbesc($album), intval($owner_uid) @@ -50,7 +50,6 @@ require_once('include/hubloc.php'); define ( 'PLATFORM_NAME', 'red' ); define ( 'STD_VERSION', '5.3' ); - define ( 'ZOT_REVISION', '1.2' ); define ( 'DB_UPDATE_VERSION', 1189 ); diff --git a/composer.json b/composer.json index 09e6d783e..9ae0d2150 100644 --- a/composer.json +++ b/composer.json @@ -32,7 +32,8 @@ "michelf/php-markdown" : "^1.7", "pixel418/markdownify": "^2.2", "bshaffer/oauth2-server-php": "^1.9", - "ezyang/htmlpurifier": "^4.9" + "ezyang/htmlpurifier": "^4.9", + "simplepie/simplepie": ">=1.4.4 || dev-master" }, "require-dev" : { "php" : ">=7.0", @@ -56,5 +57,9 @@ "minimum-stability" : "stable", "config" : { "notify-on-install" : false - } + }, + "repositories": [{ + "type": "vcs", + "url": "https://github.com/simplepie/simplepie" + }] } diff --git a/composer.lock b/composer.lock index d9d095ad4..1e515ad5b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "f1d40dcfbbb2f5364ad55235efaeb5ab", + "content-hash": "9842014a99ac4e654bc7bfd6061d6f60", "packages": [ { "name": "bshaffer/oauth2-server-php", @@ -63,53 +63,6 @@ "time": "2017-01-06T23:20:00+00:00" }, { - "name": "ezyang/htmlpurifier", - "version": "v4.9.2", - "source": { - "type": "git", - "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4", - "reference": "6d50e5282afdfdfc3e0ff6d192aff56c5629b3d4", - "shasum": "" - }, - "require": { - "php": ">=5.2" - }, - "require-dev": { - "simpletest/simpletest": "^1.1" - }, - "type": "library", - "autoload": { - "psr-0": { - "HTMLPurifier": "library/" - }, - "files": [ - "library/HTMLPurifier.composer.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL" - ], - "authors": [ - { - "name": "Edward Z. Yang", - "email": "admin@htmlpurifier.org", - "homepage": "http://ezyang.com" - } - ], - "description": "Standards compliant HTML filter written in PHP", - "homepage": "http://htmlpurifier.org/", - "keywords": [ - "html" - ], - "time": "2017-03-13T06:30:53+00:00" - }, - { "name": "michelf/php-markdown", "version": "1.7.0", "source": { @@ -158,7 +111,7 @@ "keywords": [ "markdown" ], - "time": "2016-10-29 18:58:20" + "time": "2016-10-29T18:58:20+00:00" }, { "name": "pixel418/markdownify", @@ -214,7 +167,7 @@ "markdown", "markdownify" ], - "time": "2016-09-21 13:01:43" + "time": "2016-09-21T13:01:43+00:00" }, { "name": "psr/log", @@ -261,20 +214,20 @@ "psr", "psr-3" ], - "time": "2016-10-10 12:19:37" + "time": "2016-10-10T12:19:37+00:00" }, { "name": "sabre/dav", - "version": "3.2.2", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/fruux/sabre-dav.git", - "reference": "e987775e619728f12205606c9cc3ee565ffb1516" + "reference": "5b9737cc2f0182e368d14c80df7f6b2d77dc1457" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruux/sabre-dav/zipball/e987775e619728f12205606c9cc3ee565ffb1516", - "reference": "e987775e619728f12205606c9cc3ee565ffb1516", + "url": "https://api.github.com/repos/fruux/sabre-dav/zipball/5b9737cc2f0182e368d14c80df7f6b2d77dc1457", + "reference": "5b9737cc2f0182e368d14c80df7f6b2d77dc1457", "shasum": "" }, "require": { @@ -298,8 +251,8 @@ "require-dev": { "evert/phpdoc-md": "~0.1.0", "monolog/monolog": "^1.18", - "phpunit/phpunit": "> 4.8, <6.0.0", - "sabre/cs": "^1.0.0" + "phpunit/phpunit": "> 4.8, <=6.0.0", + "sabre/cs": "~0.0.5" }, "suggest": { "ext-curl": "*", @@ -344,7 +297,7 @@ "framework", "iCalendar" ], - "time": "2017-02-15 03:06:08" + "time": "2016-06-28T02:44:05+00:00" }, { "name": "sabre/event", @@ -401,24 +354,23 @@ "promise", "signal" ], - "time": "2015-11-05 20:14:39" + "time": "2015-11-05T20:14:39+00:00" }, { "name": "sabre/http", - "version": "4.2.2", + "version": "4.2.1", "source": { "type": "git", "url": "https://github.com/fruux/sabre-http.git", - "reference": "dd50e7260356f4599d40270826f9548b23efa204" + "reference": "2e93bc8321524c67be4ca5b8415daebd4c8bf85e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruux/sabre-http/zipball/dd50e7260356f4599d40270826f9548b23efa204", - "reference": "dd50e7260356f4599d40270826f9548b23efa204", + "url": "https://api.github.com/repos/fruux/sabre-http/zipball/2e93bc8321524c67be4ca5b8415daebd4c8bf85e", + "reference": "2e93bc8321524c67be4ca5b8415daebd4c8bf85e", "shasum": "" }, "require": { - "ext-ctype": "*", "ext-mbstring": "*", "php": ">=5.4", "sabre/event": ">=1.0.0,<4.0.0", @@ -457,28 +409,28 @@ "keywords": [ "http" ], - "time": "2017-01-02 19:38:42" + "time": "2016-01-06T23:00:08+00:00" }, { "name": "sabre/uri", - "version": "1.2.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/fruux/sabre-uri.git", - "reference": "ada354d83579565949d80b2e15593c2371225e61" + "reference": "9012116434d84ef6e5e37a89dfdbfbe2204a8704" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruux/sabre-uri/zipball/ada354d83579565949d80b2e15593c2371225e61", - "reference": "ada354d83579565949d80b2e15593c2371225e61", + "url": "https://api.github.com/repos/fruux/sabre-uri/zipball/9012116434d84ef6e5e37a89dfdbfbe2204a8704", + "reference": "9012116434d84ef6e5e37a89dfdbfbe2204a8704", "shasum": "" }, "require": { "php": ">=5.4.7" }, "require-dev": { - "phpunit/phpunit": ">=4.0,<6.0", - "sabre/cs": "~1.0.0" + "phpunit/phpunit": "*", + "sabre/cs": "~0.0.1" }, "type": "library", "autoload": { @@ -508,30 +460,30 @@ "uri", "url" ], - "time": "2017-02-20 19:59:28" + "time": "2016-03-08T02:29:27+00:00" }, { "name": "sabre/vobject", - "version": "4.1.2", + "version": "4.1.1", "source": { "type": "git", "url": "https://github.com/fruux/sabre-vobject.git", - "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c" + "reference": "a3a59b06947f122af2d45d52b72172cdc1efd68f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruux/sabre-vobject/zipball/d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c", - "reference": "d0fde2fafa2a3dad1f559c2d1c2591d4fd75ae3c", + "url": "https://api.github.com/repos/fruux/sabre-vobject/zipball/a3a59b06947f122af2d45d52b72172cdc1efd68f", + "reference": "a3a59b06947f122af2d45d52b72172cdc1efd68f", "shasum": "" }, "require": { "ext-mbstring": "*", "php": ">=5.5", - "sabre/xml": ">=1.5 <3.0" + "sabre/xml": "~1.1" }, "require-dev": { "phpunit/phpunit": "*", - "sabre/cs": "^1.0.0" + "sabre/cs": "~0.0.3" }, "suggest": { "hoa/bench": "If you would like to run the benchmark scripts" @@ -605,7 +557,7 @@ "xCal", "xCard" ], - "time": "2016-12-06 04:14:09" + "time": "2016-07-15T19:52:17+00:00" }, { "name": "sabre/xml", @@ -668,7 +620,7 @@ "dom", "xml" ], - "time": "2016-10-09 22:57:52" + "time": "2016-10-09T22:57:52+00:00" } ], "packages-dev": [ @@ -752,7 +704,7 @@ "symfony", "testing" ], - "time": "2016-12-25 13:43:52" + "time": "2016-12-25T13:43:52+00:00" }, { "name": "behat/gherkin", @@ -811,7 +763,7 @@ "gherkin", "parser" ], - "time": "2016-10-30 11:50:56" + "time": "2016-10-30T11:50:56+00:00" }, { "name": "behat/mink", @@ -869,7 +821,7 @@ "testing", "web" ], - "time": "2016-03-05 08:26:18" + "time": "2016-03-05T08:26:18+00:00" }, { "name": "behat/mink-browserkit-driver", @@ -925,7 +877,7 @@ "browser", "testing" ], - "time": "2016-03-05 08:59:47" + "time": "2016-03-05T08:59:47+00:00" }, { "name": "behat/mink-extension", @@ -984,7 +936,7 @@ "test", "web" ], - "time": "2016-02-15 07:55:18" + "time": "2016-02-15T07:55:18+00:00" }, { "name": "behat/mink-goutte-driver", @@ -1039,7 +991,7 @@ "headless", "testing" ], - "time": "2016-03-05 09:04:22" + "time": "2016-03-05T09:04:22+00:00" }, { "name": "behat/transliterator", @@ -1079,7 +1031,7 @@ "slug", "transliterator" ], - "time": "2015-09-28 16:26:35" + "time": "2015-09-28T16:26:35+00:00" }, { "name": "container-interop/container-interop", @@ -1110,7 +1062,7 @@ ], "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", "homepage": "https://github.com/container-interop/container-interop", - "time": "2017-02-14 19:40:03" + "time": "2017-02-14T19:40:03+00:00" }, { "name": "doctrine/instantiator", @@ -1164,7 +1116,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "fabpot/goutte", @@ -1213,7 +1165,7 @@ "keywords": [ "scraper" ], - "time": "2017-01-03 13:21:43" + "time": "2017-01-03T13:21:43+00:00" }, { "name": "guzzlehttp/guzzle", @@ -1275,7 +1227,7 @@ "rest", "web service" ], - "time": "2017-02-28 22:50:30" + "time": "2017-02-28T22:50:30+00:00" }, { "name": "guzzlehttp/promises", @@ -1326,7 +1278,7 @@ "keywords": [ "promise" ], - "time": "2016-12-20 10:07:11" + "time": "2016-12-20T10:07:11+00:00" }, { "name": "guzzlehttp/psr7", @@ -1391,7 +1343,7 @@ "uri", "url" ], - "time": "2017-02-27 10:51:17" + "time": "2017-02-27T10:51:17+00:00" }, { "name": "myclabs/deep-copy", @@ -1433,7 +1385,7 @@ "object", "object graph" ], - "time": "2017-01-26 22:05:40" + "time": "2017-01-26T22:05:40+00:00" }, { "name": "php-mock/php-mock", @@ -1494,7 +1446,7 @@ "test", "test double" ], - "time": "2017-02-17 20:52:52" + "time": "2017-02-17T20:52:52+00:00" }, { "name": "php-mock/php-mock-integration", @@ -1547,7 +1499,7 @@ "test", "test double" ], - "time": "2017-02-17 21:31:34" + "time": "2017-02-17T21:31:34+00:00" }, { "name": "php-mock/php-mock-phpunit", @@ -1598,7 +1550,7 @@ "test", "test double" ], - "time": "2017-02-17 22:44:38" + "time": "2017-02-17T22:44:38+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -1652,7 +1604,7 @@ "reflection", "static analysis" ], - "time": "2015-12-27 11:43:31" + "time": "2015-12-27T11:43:31+00:00" }, { "name": "phpdocumentor/reflection-docblock", @@ -1697,7 +1649,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30 07:12:33" + "time": "2016-09-30T07:12:33+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -1744,7 +1696,7 @@ "email": "me@mikevanriel.com" } ], - "time": "2016-11-25 06:54:22" + "time": "2016-11-25T06:54:22+00:00" }, { "name": "phpspec/prophecy", @@ -1807,20 +1759,20 @@ "spy", "stub" ], - "time": "2017-03-02 20:05:34" + "time": "2017-03-02T20:05:34+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "5.0.3", + "version": "5.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "4e99e1c4f9b05cbf4d6e84b100b3ff4107cf8cd1" + "reference": "531553c4795a1df54114342d68ca337d5d81c8a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4e99e1c4f9b05cbf4d6e84b100b3ff4107cf8cd1", - "reference": "4e99e1c4f9b05cbf4d6e84b100b3ff4107cf8cd1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/531553c4795a1df54114342d68ca337d5d81c8a0", + "reference": "531553c4795a1df54114342d68ca337d5d81c8a0", "shasum": "" }, "require": { @@ -1870,7 +1822,7 @@ "testing", "xunit" ], - "time": "2017-03-06 14:22:16" + "time": "2017-03-01T09:14:18+00:00" }, { "name": "phpunit/php-file-iterator", @@ -1917,7 +1869,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03 07:40:28" + "time": "2016-10-03T07:40:28+00:00" }, { "name": "phpunit/php-text-template", @@ -1958,7 +1910,7 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", @@ -2007,7 +1959,7 @@ "keywords": [ "timer" ], - "time": "2017-02-26 11:10:40" + "time": "2017-02-26T11:10:40+00:00" }, { "name": "phpunit/php-token-stream", @@ -2056,20 +2008,20 @@ "keywords": [ "tokenizer" ], - "time": "2017-02-27 10:12:30" + "time": "2017-02-27T10:12:30+00:00" }, { "name": "phpunit/phpunit", - "version": "6.0.9", + "version": "6.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9bd36d990884d8fb3313232e0002ed4cdf79f428" + "reference": "47ee3fa1bca5c50f1d25105201eb20df777bd7b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9bd36d990884d8fb3313232e0002ed4cdf79f428", - "reference": "9bd36d990884d8fb3313232e0002ed4cdf79f428", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/47ee3fa1bca5c50f1d25105201eb20df777bd7b6", + "reference": "47ee3fa1bca5c50f1d25105201eb20df777bd7b6", "shasum": "" }, "require": { @@ -2080,18 +2032,18 @@ "ext-xml": "*", "myclabs/deep-copy": "^1.3", "php": "^7.0", - "phpspec/prophecy": "^1.7", + "phpspec/prophecy": "^1.6.2", "phpunit/php-code-coverage": "^5.0", "phpunit/php-file-iterator": "^1.4", "phpunit/php-text-template": "^1.2", "phpunit/php-timer": "^1.0.6", "phpunit/phpunit-mock-objects": "^4.0", - "sebastian/comparator": "^2.0", + "sebastian/comparator": "^1.2.4 || ^2.0", "sebastian/diff": "^1.2", "sebastian/environment": "^2.0", - "sebastian/exporter": "^3.0", + "sebastian/exporter": "^2.0 || ^3.0", "sebastian/global-state": "^1.1 || ^2.0", - "sebastian/object-enumerator": "^3.0.2", + "sebastian/object-enumerator": "^2.0 || ^3.0", "sebastian/resource-operations": "^1.0", "sebastian/version": "^2.0" }, @@ -2138,7 +2090,7 @@ "testing", "xunit" ], - "time": "2017-03-15 13:04:13" + "time": "2017-03-02T15:24:03+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -2197,7 +2149,7 @@ "mock", "xunit" ], - "time": "2017-03-03 06:30:20" + "time": "2017-03-03T06:30:20+00:00" }, { "name": "psr/container", @@ -2246,7 +2198,7 @@ "container-interop", "psr" ], - "time": "2017-02-14 16:28:37" + "time": "2017-02-14T16:28:37+00:00" }, { "name": "psr/http-message", @@ -2296,7 +2248,7 @@ "request", "response" ], - "time": "2016-08-06 14:39:51" + "time": "2016-08-06T14:39:51+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -2341,7 +2293,7 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04 06:30:41" + "time": "2017-03-04T06:30:41+00:00" }, { "name": "sebastian/comparator", @@ -2405,7 +2357,7 @@ "compare", "equality" ], - "time": "2017-03-03 06:26:08" + "time": "2017-03-03T06:26:08+00:00" }, { "name": "sebastian/diff", @@ -2457,7 +2409,7 @@ "keywords": [ "diff" ], - "time": "2015-12-08 07:14:41" + "time": "2015-12-08T07:14:41+00:00" }, { "name": "sebastian/environment", @@ -2507,7 +2459,7 @@ "environment", "hhvm" ], - "time": "2016-11-26 07:53:53" + "time": "2016-11-26T07:53:53+00:00" }, { "name": "sebastian/exporter", @@ -2574,7 +2526,7 @@ "export", "exporter" ], - "time": "2017-03-03 06:25:06" + "time": "2017-03-03T06:25:06+00:00" }, { "name": "sebastian/global-state", @@ -2625,25 +2577,24 @@ "keywords": [ "global state" ], - "time": "2015-10-12 03:26:01" + "time": "2015-10-12T03:26:01+00:00" }, { "name": "sebastian/object-enumerator", - "version": "3.0.2", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "31dd3379d16446c5d86dec32ab1ad1f378581ad8" + "reference": "de6e32f7192dfea2e4bedc892434f4830b5c5794" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/31dd3379d16446c5d86dec32ab1ad1f378581ad8", - "reference": "31dd3379d16446c5d86dec32ab1ad1f378581ad8", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/de6e32f7192dfea2e4bedc892434f4830b5c5794", + "reference": "de6e32f7192dfea2e4bedc892434f4830b5c5794", "shasum": "" }, "require": { "php": "^7.0", - "sebastian/object-reflector": "^1.0", "sebastian/recursion-context": "^3.0" }, "require-dev": { @@ -2672,52 +2623,7 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-03-12 15:17:29" - }, - { - "name": "sebastian/object-reflector", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "2201553542d60d25db9c5b2c54330df776648008" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/2201553542d60d25db9c5b2c54330df776648008", - "reference": "2201553542d60d25db9c5b2c54330df776648008", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-12 15:10:22" + "time": "2017-03-03T06:21:01+00:00" }, { "name": "sebastian/recursion-context", @@ -2770,7 +2676,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03 06:23:57" + "time": "2017-03-03T06:23:57+00:00" }, { "name": "sebastian/resource-operations", @@ -2812,7 +2718,7 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28 20:34:47" + "time": "2015-07-28T20:34:47+00:00" }, { "name": "sebastian/version", @@ -2855,20 +2761,20 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03 07:35:21" + "time": "2016-10-03T07:35:21+00:00" }, { "name": "symfony/browser-kit", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "2fe0caa60c1a1dfeefd0425741182687a9b382b8" + "reference": "394a2475a3a89089353fde5714a7f402fbb83880" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/2fe0caa60c1a1dfeefd0425741182687a9b382b8", - "reference": "2fe0caa60c1a1dfeefd0425741182687a9b382b8", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/394a2475a3a89089353fde5714a7f402fbb83880", + "reference": "394a2475a3a89089353fde5714a7f402fbb83880", "shasum": "" }, "require": { @@ -2912,20 +2818,20 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2017-02-21 09:12:04" + "time": "2017-01-31T21:49:23+00:00" }, { "name": "symfony/class-loader", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/class-loader.git", - "reference": "c29a5bc6ca14cfff1f5e3d7781ed74b6e898d2b9" + "reference": "2847d56f518ad5721bf85aa9174b3aa3fd12aa03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/c29a5bc6ca14cfff1f5e3d7781ed74b6e898d2b9", - "reference": "c29a5bc6ca14cfff1f5e3d7781ed74b6e898d2b9", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/2847d56f518ad5721bf85aa9174b3aa3fd12aa03", + "reference": "2847d56f518ad5721bf85aa9174b3aa3fd12aa03", "shasum": "" }, "require": { @@ -2968,20 +2874,20 @@ ], "description": "Symfony ClassLoader Component", "homepage": "https://symfony.com", - "time": "2017-02-18 17:28:00" + "time": "2017-01-21T17:06:35+00:00" }, { "name": "symfony/config", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "741d6d4cd1414d67d48eb71aba6072b46ba740c2" + "reference": "9f99453e77771e629af8a25eeb0a6c4ed1e19da2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/741d6d4cd1414d67d48eb71aba6072b46ba740c2", - "reference": "741d6d4cd1414d67d48eb71aba6072b46ba740c2", + "url": "https://api.github.com/repos/symfony/config/zipball/9f99453e77771e629af8a25eeb0a6c4ed1e19da2", + "reference": "9f99453e77771e629af8a25eeb0a6c4ed1e19da2", "shasum": "" }, "require": { @@ -3024,20 +2930,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2017-03-01 18:18:25" + "time": "2017-02-14T16:27:43+00:00" }, { "name": "symfony/console", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "28fb243a2b5727774ca309ec2d92da240f1af0dd" + "reference": "0e5e6899f82230fcb1153bcaf0e106ffaa44b870" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/28fb243a2b5727774ca309ec2d92da240f1af0dd", - "reference": "28fb243a2b5727774ca309ec2d92da240f1af0dd", + "url": "https://api.github.com/repos/symfony/console/zipball/0e5e6899f82230fcb1153bcaf0e106ffaa44b870", + "reference": "0e5e6899f82230fcb1153bcaf0e106ffaa44b870", "shasum": "" }, "require": { @@ -3087,20 +2993,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-03-06 19:30:27" + "time": "2017-02-16T14:07:22+00:00" }, { "name": "symfony/css-selector", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "a48f13dc83c168f1253a5d2a5a4fb46c36244c4c" + "reference": "f0e628f04fc055c934b3211cfabdb1c59eefbfaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/a48f13dc83c168f1253a5d2a5a4fb46c36244c4c", - "reference": "a48f13dc83c168f1253a5d2a5a4fb46c36244c4c", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/f0e628f04fc055c934b3211cfabdb1c59eefbfaa", + "reference": "f0e628f04fc055c934b3211cfabdb1c59eefbfaa", "shasum": "" }, "require": { @@ -3140,20 +3046,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2017-02-21 09:12:04" + "time": "2017-01-02T20:32:22+00:00" }, { "name": "symfony/debug", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "b90c9f91ad8ac37d9f114e369042d3226b34dc1a" + "reference": "9b98854cb45bc59d100b7d4cc4cf9e05f21026b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/b90c9f91ad8ac37d9f114e369042d3226b34dc1a", - "reference": "b90c9f91ad8ac37d9f114e369042d3226b34dc1a", + "url": "https://api.github.com/repos/symfony/debug/zipball/9b98854cb45bc59d100b7d4cc4cf9e05f21026b9", + "reference": "9b98854cb45bc59d100b7d4cc4cf9e05f21026b9", "shasum": "" }, "require": { @@ -3197,20 +3103,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2017-02-18 17:28:00" + "time": "2017-02-16T16:34:18+00:00" }, { "name": "symfony/dependency-injection", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "74e0935e414ad33d5e82074212c0eedb4681a691" + "reference": "130aa55b8ed7e6d0d75b0ed37256cec687a22f41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/74e0935e414ad33d5e82074212c0eedb4681a691", - "reference": "74e0935e414ad33d5e82074212c0eedb4681a691", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/130aa55b8ed7e6d0d75b0ed37256cec687a22f41", + "reference": "130aa55b8ed7e6d0d75b0ed37256cec687a22f41", "shasum": "" }, "require": { @@ -3260,20 +3166,20 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2017-03-05 00:06:55" + "time": "2017-02-16T22:46:52+00:00" }, { "name": "symfony/dom-crawler", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "403944e294cf4ceb3b8447f54cbad88ea7b99cee" + "reference": "b814b41373fc4e535aff8c765abe39545216f391" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/403944e294cf4ceb3b8447f54cbad88ea7b99cee", - "reference": "403944e294cf4ceb3b8447f54cbad88ea7b99cee", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b814b41373fc4e535aff8c765abe39545216f391", + "reference": "b814b41373fc4e535aff8c765abe39545216f391", "shasum": "" }, "require": { @@ -3316,20 +3222,20 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2017-02-21 09:12:04" + "time": "2017-01-21T17:14:11+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d" + "reference": "9137eb3a3328e413212826d63eeeb0217836e2b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d", - "reference": "b7a1b9e0a0f623ce43b4c8d775eb138f190c9d8d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9137eb3a3328e413212826d63eeeb0217836e2b6", + "reference": "9137eb3a3328e413212826d63eeeb0217836e2b6", "shasum": "" }, "require": { @@ -3376,20 +3282,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-02-21 09:12:04" + "time": "2017-01-02T20:32:22+00:00" }, { "name": "symfony/filesystem", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "bc0f17bed914df2cceb989972c3b996043c4da4a" + "reference": "a0c6ef2dc78d33b58d91d3a49f49797a184d06f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/bc0f17bed914df2cceb989972c3b996043c4da4a", - "reference": "bc0f17bed914df2cceb989972c3b996043c4da4a", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/a0c6ef2dc78d33b58d91d3a49f49797a184d06f4", + "reference": "a0c6ef2dc78d33b58d91d3a49f49797a184d06f4", "shasum": "" }, "require": { @@ -3425,7 +3331,7 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2017-03-06 19:30:27" + "time": "2017-01-08T20:47:33+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -3484,20 +3390,20 @@ "portable", "shim" ], - "time": "2016-11-14 01:06:16" + "time": "2016-11-14T01:06:16+00:00" }, { "name": "symfony/translation", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690" + "reference": "d6825c6bb2f1da13f564678f9f236fe8242c0029" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690", - "reference": "0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690", + "url": "https://api.github.com/repos/symfony/translation/zipball/d6825c6bb2f1da13f564678f9f236fe8242c0029", + "reference": "d6825c6bb2f1da13f564678f9f236fe8242c0029", "shasum": "" }, "require": { @@ -3510,7 +3416,7 @@ "require-dev": { "psr/log": "~1.0", "symfony/config": "~2.8|~3.0", - "symfony/intl": "^2.8.18|^3.2.5", + "symfony/intl": "~2.8|~3.0", "symfony/yaml": "~2.8|~3.0" }, "suggest": { @@ -3548,20 +3454,20 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2017-03-04 12:23:14" + "time": "2017-02-16T22:46:52+00:00" }, { "name": "symfony/yaml", - "version": "v3.2.6", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a" + "reference": "9724c684646fcb5387d579b4bfaa63ee0b0c64c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/093e416ad096355149e265ea2e4cc1f9ee40ab1a", - "reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a", + "url": "https://api.github.com/repos/symfony/yaml/zipball/9724c684646fcb5387d579b4bfaa63ee0b0c64c8", + "reference": "9724c684646fcb5387d579b4bfaa63ee0b0c64c8", "shasum": "" }, "require": { @@ -3603,7 +3509,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-03-07 16:47:02" + "time": "2017-02-16T22:46:52+00:00" }, { "name": "webmozart/assert", @@ -3653,7 +3559,7 @@ "check", "validate" ], - "time": "2016-11-23 20:04:58" + "time": "2016-11-23T20:04:58+00:00" } ], "aliases": [], diff --git a/include/feedutils.php b/include/feedutils.php index 477685f9a..a5161dc6e 100644 --- a/include/feedutils.php +++ b/include/feedutils.php @@ -2,20 +2,24 @@ /** - * @brief Generate an Atom feed. + * @brief Return an Atom feed for channel. + * + * @see get_feed_for() * * @param array $channel - * @param array $params + * @param array $params associative array which configures the feed + * @return string with an atom feed */ function get_public_feed($channel, $params) { - $type = 'xml'; +/* $type = 'xml'; $begin = NULL_DATE; $end = ''; $start = 0; $records = 40; $direction = 'desc'; $pages = 0; +*/ if(! $params) $params = array(); @@ -28,7 +32,7 @@ function get_public_feed($channel, $params) { $params['direction'] = ((x($params,'direction')) ? $params['direction'] : 'desc'); $params['pages'] = ((x($params,'pages')) ? intval($params['pages']) : 0); $params['top'] = ((x($params,'top')) ? intval($params['top']) : 0); - $params['cat'] = ((x($params,'cat')) ? $params['cat'] : ''); + $params['cat'] = ((x($params,'cat')) ? $params['cat'] : ''); // put a sane lower limit on feed requests if not specified @@ -50,12 +54,12 @@ function get_public_feed($channel, $params) { } /** - * @brief + * @brief Create an atom feed for $channel from template. * * @param array $channel - * @param string $observer_hash + * @param string $observer_hash xchan_hash from observer * @param array $params - * @return string + * @return string with an atom feed */ function get_feed_for($channel, $observer_hash, $params) { @@ -74,14 +78,14 @@ function get_feed_for($channel, $observer_hash, $params) { 'datequery' => $params['end'], 'datequery2' => $params['begin'], 'start' => $params['start'], // FIXME - 'records' => $params['records'], // FIXME + 'records' => $params['records'], // FIXME 'direction' => $params['direction'], // FIXME 'pages' => $params['pages'], 'order' => 'post', 'top' => $params['top'], 'cat' => $params['cat'] ), $channel, $observer_hash, CLIENT_MODE_NORMAL, App::$module); - + $feed_template = get_markup_template('atom_feed.tpl'); @@ -92,7 +96,7 @@ function get_feed_for($channel, $observer_hash, $params) { '$red' => xmlify(Zotlabs\Lib\System::get_platform_name()), '$feed_id' => xmlify($channel['xchan_url']), '$feed_title' => xmlify($channel['channel_name']), - '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now' , ATOM_TIME)) , + '$feed_updated' => xmlify(datetime_convert('UTC', 'UTC', 'now', ATOM_TIME)), '$hub' => '', // feed_hublinks(), '$salmon' => '', // feed_salmonlinks($channel['channel_address']), '$name' => xmlify($channel['channel_name']), @@ -129,10 +133,10 @@ function get_feed_for($channel, $observer_hash, $params) { } /** - * @brief + * @brief Return the verb for an item, or fall back to ACTIVITY_POST. * * @param array $item an associative array with - * * \b string \b verb + * * \e string \b verb * @return string item's verb if set, default ACTIVITY_POST see boot.php */ function construct_verb($item) { @@ -165,9 +169,11 @@ function construct_activity_object($item) { else $o .= '<link rel="alternate" type="text/html" href="' . xmlify($r->link) . '" />' . "\r\n"; } - if($r->content) + if($r->content) { $o .= '<content type="html" >' . xmlify(bbcode($r->content)) . '</content>' . "\r\n"; + } $o .= '</as:object>' . "\r\n"; + return $o; } @@ -210,14 +216,16 @@ function construct_activity_target($item) { } /** - * @param object $feed + * @brief Return an array with a parsed atom item. + * + * @param SimplePie $feed * @param array $item * @param[out] array $author - * @return multitype:multitype: string NULL number Ambigous <NULL, string, number> Ambigous <mixed, string> Ambigous <multitype:multitype:string Ambigous <NULL, string> , multitype:multitype:string unknown > multitype:NULL unknown + * @return array Associative array with the parsed item data */ function get_atom_elements($feed, $item, &$author) { - //$best_photo = array(); + require_once('include/html2bbcode.php'); $res = array(); @@ -246,7 +254,7 @@ function get_atom_elements($feed, $item, &$author) { // removing the content of the title if its identically to the body // This helps with auto generated titles e.g. from tumblr - if (title_is_body($res["title"], $res["body"])) + if (title_is_body($res['title'], $res['body'])) $res['title'] = ""; if($res['plink']) @@ -268,15 +276,14 @@ function get_atom_elements($feed, $item, &$author) { if((x($res,'verb')) && ($res['verb'] === 'http://ostatus.org/schema/1.0/unfollow')) $res['verb'] = ACTIVITY_UNFOLLOW; - - if(array_key_exists('verb',$res) && $res['verb'] === ACTIVITY_SHARE) { // For Mastodon shares ("boosts"), we need to parse the original author information - // from the activity:object -> author structure + // from the activity:object -> author structure $rawobj = $item->get_item_tags(NAMESPACE_ACTIVITY, 'object'); if($rawobj) { - $rawauthor = $rawobj->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'author'); + $rawauthor = $rawobj->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author'); + if($rawauthor && $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name']) { $author['author_name'] = unxmlify($rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name']); } @@ -313,7 +320,7 @@ function get_atom_elements($feed, $item, &$author) { $rawactor = $item->get_item_tags(NAMESPACE_ACTIVITY, 'actor'); - if($rawactor && activity_match($rawactor[0]['child'][NAMESPACE_ACTIVITY]['obj_type'][0]['data'],ACTIVITY_OBJ_PERSON)) { + if($rawactor && activity_match($rawactor[0]['child'][NAMESPACE_ACTIVITY]['obj_type'][0]['data'], ACTIVITY_OBJ_PERSON)) { $base = $rawactor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']; if($base && count($base)) { foreach($base as $link) { @@ -374,9 +381,9 @@ function get_atom_elements($feed, $item, &$author) { } } - $ostatus_protocol = (($item->get_item_tags(NAMESPACE_OSTATUS,'conversation')) ? true : false); + $ostatus_protocol = (($item->get_item_tags(NAMESPACE_OSTATUS, 'conversation')) ? true : false); - $apps = $item->get_item_tags(NAMESPACE_STATUSNET,'notice_info'); + $apps = $item->get_item_tags(NAMESPACE_STATUSNET, 'notice_info'); if($apps && $apps[0]['attribs']['']['source']) { $res['app'] = strip_tags(unxmlify($apps[0]['attribs']['']['source'])); } @@ -389,7 +396,7 @@ function get_atom_elements($feed, $item, &$author) { $rawenv = $item->get_item_tags(NAMESPACE_DFRN, 'env'); if(! $rawenv) - $rawenv = $item->get_item_tags(NAMESPACE_ZOT,'source'); + $rawenv = $item->get_item_tags(NAMESPACE_ZOT, 'source'); if($rawenv) { $have_real_body = true; $res['body'] = $rawenv[0]['data']; @@ -436,9 +443,9 @@ function get_atom_elements($feed, $item, &$author) { } - // strip title and don't apply "title-in-body" if the feed involved + // strip title and don't apply "title-in-body" if the feed involved // uses the OStatus stack. We need a more generalised way for the calling - // function to specify this behaviour or for plugins to alter it. + // function to specify this behaviour or for plugins to alter it. if($ostatus_protocol) { $res['title'] = ''; @@ -464,7 +471,7 @@ function get_atom_elements($feed, $item, &$author) { ); } - $private = $item->get_item_tags(NAMESPACE_DFRN,'private'); + $private = $item->get_item_tags(NAMESPACE_DFRN, 'private'); if($private && intval($private[0]['data']) > 0) $res['item_private'] = ((intval($private[0]['data'])) ? 1 : 0); else @@ -474,11 +481,11 @@ function get_atom_elements($feed, $item, &$author) { if($rawlocation) $res['location'] = unxmlify($rawlocation[0]['data']); - $rawcreated = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'published'); + $rawcreated = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published'); if($rawcreated) $res['created'] = unxmlify($rawcreated[0]['data']); - $rawedited = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'updated'); + $rawedited = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated'); if($rawedited) $res['edited'] = unxmlify($rawedited[0]['data']); @@ -508,7 +515,7 @@ function get_atom_elements($feed, $item, &$author) { $rawowner = $item->get_item_tags(NAMESPACE_DFRN, 'owner'); if(! $rawowner) - $rawowner = $item->get_item_tags(NAMESPACE_ZOT,'owner'); + $rawowner = $item->get_item_tags(NAMESPACE_ZOT, 'owner'); if($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']) $author['owner_name'] = unxmlify($rawowner[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data']); @@ -530,20 +537,21 @@ function get_atom_elements($feed, $item, &$author) { } } - $rawgeo = $item->get_item_tags(NAMESPACE_GEORSS,'point'); + $rawgeo = $item->get_item_tags(NAMESPACE_GEORSS, 'point'); if($rawgeo) $res['coord'] = unxmlify($rawgeo[0]['data']); - $cats = $item->get_categories(); if($cats) { if(is_null($terms)) $terms = array(); + foreach($cats as $cat) { $term = $cat->get_term(); if(! $term) $term = $cat->get_label(); + $scheme = $cat->get_scheme(); $termurl = ''; if($scheme && $term && stristr($scheme,'X-DFRN:')) { @@ -558,7 +566,7 @@ function get_atom_elements($feed, $item, &$author) { if($termterm) { $terms[] = array( 'otype' => TERM_OBJ_POST, - 'ttype' => $termtype, + 'ttype' => $termtype, 'url' => $termurl, 'term' => $termterm, ); @@ -615,6 +623,7 @@ function get_atom_elements($feed, $item, &$author) { $body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['content'][0]['data']; if(! $body) $body = $child[SIMPLEPIE_NAMESPACE_ATOM_10]['summary'][0]['data']; + // preserve a copy of the original body content in case we later need to parse out any microformat information, e.g. events $obj['orig'] = xmlify($body); if((strpos($body,'<') !== false) || (strpos($body,'>') !== false)) { @@ -666,18 +675,28 @@ function get_atom_elements($feed, $item, &$author) { $res['target'] = $obj; } - - $arr = array('feed' => $feed, 'item' => $item, 'author' => $author, 'result' => $res); + // build array to pass to hook + $arr = [ + 'feed' => $feed, + 'item' => $item, + 'author' => $author, + 'result' => $res + ]; call_hooks('parse_atom', $arr); - logger('get_atom_elements: author: ' . print_r($arr['author'],true),LOGGER_DATA); - - logger('get_atom_elements: ' . print_r($arr['result'],true),LOGGER_DATA); + logger('author: ' .print_r($arr['author'], true), LOGGER_DATA); + logger('result: ' .print_r($arr['result'], true), LOGGER_DATA); return $arr['result']; } +/** + * @brief Encodes SimplePie_Item link arrays. + * + * @param array $links Array with SimplePie_Item link tags + * @return array + */ function encode_rel_links($links) { $o = array(); if(! ((is_array($links)) && (count($links)))) @@ -691,26 +710,27 @@ function encode_rel_links($links) { $l['type'] = $link['attribs']['']['type']; if($link['attribs']['']['href']) $l['href'] = $link['attribs']['']['href']; - if( (x($link['attribs'],NAMESPACE_MEDIA)) && $link['attribs'][NAMESPACE_MEDIA]['width']) + if( (x($link['attribs'], NAMESPACE_MEDIA)) && $link['attribs'][NAMESPACE_MEDIA]['width']) $l['width'] = $link['attribs'][NAMESPACE_MEDIA]['width']; - if( (x($link['attribs'],NAMESPACE_MEDIA)) && $link['attribs'][NAMESPACE_MEDIA]['height']) + if( (x($link['attribs'], NAMESPACE_MEDIA)) && $link['attribs'][NAMESPACE_MEDIA]['height']) $l['height'] = $link['attribs'][NAMESPACE_MEDIA]['height']; if($l) $o[] = $l; } + return $o; } /** * @brief Process atom feed and update anything/everything we might need to update. * - * @param array $xml + * @param string $xml * The (atom) feed to consume - RSS isn't as fully supported but may work for simple feeds. * @param $importer * The contact_record (joined to user_record) of the local user who owns this * relationship. It is this person's stuff that is going to be updated. - * @param $contact + * @param array $contact[in,out] * The person who is sending us stuff. If not set, we MAY be processing a "follow" activity * from an external network and MAY create an appropriate contact record. Otherwise, we MUST * have a contact record. @@ -728,14 +748,12 @@ function encode_rel_links($links) { */ function consume_feed($xml, $importer, &$contact, $pass = 0) { - require_once('library/simplepie/simplepie.inc'); - if(! strlen($xml)) { - logger('consume_feed: empty input'); + logger('Empty input'); return; } - $sys_expire = intval(get_config('system','default_expire_days')); + $sys_expire = intval(get_config('system', 'default_expire_days')); $chn_expire = intval($importer['channel_expire_days']); $expire_days = $sys_expire; @@ -743,14 +761,19 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { if(($chn_expire != 0) && ($chn_expire < $sys_expire)) $expire_days = $chn_expire; - // logger('expire_days: ' . $expire_days); - $feed = new SimplePie(); $feed->set_raw_data($xml); + + // We can preserve iframes because we will strip them in the purifier after + // checking for supported video sources. + $strip_htmltags = $feed->strip_htmltags; + array_splice($strip_htmltags, array_search('iframe', $strip_htmltags), 1); + $feed->strip_htmltags($strip_htmltags); + $feed->init(); if($feed->error()) - logger('consume_feed: Error parsing XML: ' . $feed->error()); + logger('Error parsing XML: ' . $feed->error()); $permalink = $feed->get_permalink(); @@ -784,7 +807,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { $item = $r[0]; if(! intval($item['item_deleted'])) { - logger('consume_feed: deleting item ' . $item['id'] . ' mid=' . $item['mid'], LOGGER_DEBUG); + logger('deleting item ' . $item['id'] . ' mid=' . $item['mid'], LOGGER_DEBUG); drop_item($item['id'],false); } } @@ -796,7 +819,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { if($feed->get_item_quantity()) { - logger('consume_feed: feed item count = ' . $feed->get_item_quantity(), LOGGER_DEBUG); + logger('feed item count = ' . $feed->get_item_quantity(), LOGGER_DEBUG); $items = $feed->get_items(); @@ -805,7 +828,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { $is_reply = false; $item_id = normalise_id($item->get_id()); - logger('consume_feed: processing ' . $raw_item_id, LOGGER_DEBUG); + logger('processing ' . $item->get_id(), LOGGER_DEBUG); $rawthread = $item->get_item_tags( NAMESPACE_THREAD,'in-reply-to'); if(isset($rawthread[0]['attribs']['']['ref'])) { @@ -827,7 +850,6 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { if($datarray['mid']) $datarray['mid'] = normalise_id($item->get_id()); - if($contact['xchan_network'] === 'rss') { $datarray['public_policy'] = 'specific'; $datarray['comment_policy'] = 'none'; @@ -882,11 +904,10 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { $datarray['parent_mid'] = $parent_mid; - $datarray['aid'] = $importer['channel_account_id']; $datarray['uid'] = $importer['channel_id']; - logger('consume_feed: ' . print_r($datarray,true),LOGGER_DATA); + logger('data: ' . print_r($datarray, true), LOGGER_DATA); $xx = item_store($datarray); $r = $xx['item_id']; @@ -908,7 +929,6 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { $datarray['comment_policy'] = 'none'; } - if(is_array($contact)) { if((! x($author,'author_name')) || ($author['author_is_feed'])) $author['author_name'] = $contact['xchan_name']; @@ -919,7 +939,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { } if((! x($author,'author_name')) || (! x($author,'author_link'))) { - logger('consume_feed: no author information! ' . print_r($author,true)); + logger('No author information! ' . print_r($author,true)); continue; } @@ -931,6 +951,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { if($cb['caught']) { if($cb['return_code']) http_status_exit($cb['return_code']); + continue; } } @@ -955,7 +976,6 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { } - $r = q("SELECT edited FROM item WHERE mid = '%s' AND uid = %d LIMIT 1", dbesc($item_id), intval($importer['channel_id']) @@ -977,55 +997,58 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) { continue; } - $datarray['parent_mid'] = $item_id; $datarray['uid'] = $importer['channel_id']; $datarray['aid'] = $importer['channel_account_id']; - if(! link_compare($author['owner_link'],$contact['xchan_url'])) { - logger('consume_feed: Correcting item owner.', LOGGER_DEBUG); + if(! link_compare($author['owner_link'], $contact['xchan_url'])) { + logger('Correcting item owner.', LOGGER_DEBUG); $author['owner_name'] = $contact['name']; $author['owner_link'] = $contact['url']; $author['owner_avatar'] = $contact['thumb']; } - if(! post_is_importable($datarray,$contact)) + if(! post_is_importable($datarray, $contact)) continue; - logger('consume_feed: author ' . print_r($author,true),LOGGER_DEBUG); - - logger('consume_feed: ' . print_r($datarray,true),LOGGER_DATA); + logger('author: ' . print_r($author, true), LOGGER_DEBUG); + logger('data: ' . print_r($datarray, true), LOGGER_DATA); $xx = item_store($datarray); $r = $xx['item_id']; + continue; } } } } - +/** + * @brief Normalise an id. + * + * Strip "X-ZOT:" from $id. + * + * @param string $id + * @return string + */ function normalise_id($id) { - return str_replace('X-ZOT:','',$id); + return str_replace('X-ZOT:', '', $id); } /** - * @brief Process atom feed and return the first post and structure + * @brief Process atom feed and return the first post and structure. * - * @param array $xml + * @param string $xml * The (atom) feed to consume - RSS isn't as fully supported but may work for simple feeds. * @param $importer * The contact_record (joined to user_record) of the local user who owns this * relationship. It is this person's stuff that is going to be updated. */ - function process_salmon_feed($xml, $importer) { $ret = array(); - require_once('library/simplepie/simplepie.inc'); - if(! strlen($xml)) { logger('process_feed: empty input'); return; @@ -1033,6 +1056,13 @@ function process_salmon_feed($xml, $importer) { $feed = new SimplePie(); $feed->set_raw_data($xml); + + // We can preserve iframes because we will strip them in the purifier after + // checking for supported video sources. + $strip_htmltags = $feed->strip_htmltags; + array_splice($strip_htmltags, array_search('iframe', $strip_htmltags), 1); + $feed->strip_htmltags($strip_htmltags); + $feed->init(); if($feed->error()) @@ -1054,7 +1084,7 @@ function process_salmon_feed($xml, $importer) { logger('processing ' . $item_id, LOGGER_DEBUG); - $rawthread = $item->get_item_tags( NAMESPACE_THREAD,'in-reply-to'); + $rawthread = $item->get_item_tags( NAMESPACE_THREAD, 'in-reply-to'); if(isset($rawthread[0]['attribs']['']['ref'])) { $is_reply = true; $parent_mid = normalise_id($rawthread[0]['attribs']['']['ref']); @@ -1065,94 +1095,107 @@ function process_salmon_feed($xml, $importer) { $ret['author'] = array(); - $datarray = get_atom_elements($feed,$item,$ret['author']); + $datarray = get_atom_elements($feed, $item, $ret['author']); // reset policies which are restricted by default for RSS connections - // This item is likely coming from GNU-social via salmon and allows public interaction + // This item is likely coming from GNU-social via salmon and allows public interaction $datarray['public_policy'] = ''; $datarray['comment_policy'] = ''; - $ret['item'] = $datarray; + $ret['item'] = $datarray; } } return $ret; } -/* - * Given an xml (atom) feed, find author and hub links - */ - +/** + * @brief Given an xml (atom) feed, find author and hub links. + * + * @param string $xml + * @return array + */ function feed_meta($xml) { - require_once('library/simplepie/simplepie.inc'); $ret = array(); - if(! strlen($xml)) { - logger('empty input'); - return $ret; - } + if(! strlen($xml)) { + logger('empty input'); + return $ret; + } - $feed = new SimplePie(); - $feed->set_raw_data($xml); - $feed->init(); + $feed = new SimplePie(); + $feed->set_raw_data($xml); + $feed->init(); - if($feed->error()) { - logger('Error parsing XML: ' . $feed->error()); + if($feed->error()) { + logger('Error parsing XML: ' . $feed->error()); return $ret; } - $ret['hubs'] = $feed->get_links('hub'); + $ret['hubs'] = $feed->get_links('hub'); + + //logger('hubs: ' . print_r($hubs,true), LOGGER_DATA); -// logger('consume_feed: hubs: ' . print_r($hubs,true), LOGGER_DATA); - $author = array(); - $found_author = $feed->get_author(); - if($found_author) { - $author['author_name'] = unxmlify($found_author->get_name()); - $author['author_link'] = unxmlify($found_author->get_link()); + $found_author = $feed->get_author(); + if($found_author) { + $author['author_name'] = unxmlify($found_author->get_name()); + $author['author_link'] = unxmlify($found_author->get_link()); - $rawauthor = $feed->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'author'); - logger('rawauthor: ' . print_r($rawauthor,true)); + $rawauthor = $feed->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author'); + logger('rawauthor: ' . print_r($rawauthor, true)); - if($rawauthor) { + if($rawauthor) { if($rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) { - $base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']; - foreach($base as $link) { - if(!x($author, 'author_photo') || ! $author['author_photo']) { - if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar') { - $author['author_photo'] = unxmlify($link['attribs']['']['href']); + $base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']; + foreach($base as $link) { + if(!x($author, 'author_photo') || ! $author['author_photo']) { + if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar') { + $author['author_photo'] = unxmlify($link['attribs']['']['href']); break; } - } - } + } + } } if($rawauthor[0]['child'][NAMESPACE_POCO]['displayName'][0]['data']) $author['full_name'] = unxmlify($rawauthor[0]['child'][NAMESPACE_POCO]['displayName'][0]['data']); if($rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']) $author['author_uri'] = unxmlify($rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data']); - } - } + } - if(substr($author['author_link'],-1,1) == '/') - $author['author_link'] = substr($author['author_link'],0,-1); + if(substr($author['author_link'],-1,1) == '/') + $author['author_link'] = substr($author['author_link'],0,-1); - $ret['author'] = $author; + $ret['author'] = $author; return $ret; } - - -function update_feed_item($uid,$datarray) { - logger('update_feed_item: not implemented! ' . $uid . ' ' . print_r($datarray,true), LOGGER_DATA); +/** + * @brief Not yet implemented function to update feed item. + * + * @param int $uid + * @param array $datarray + */ +function update_feed_item($uid, $datarray) { + logger('Not implemented! ' . $uid . ' ' . print_r($datarray, true), LOGGER_DATA); } - -function handle_feed($uid,$abook_id,$url) { +/** + * @brief Fetch the content of a feed and further consume it. + * + * It will first process parent items and in a second run child items. + * @see consume_feed() + * + * @param int $uid + * @param int $abook_id + * @param string $url URL of the feed + */ +function handle_feed($uid, $abook_id, $url) { $channel = channelx_by_n($uid); if(! $channel) @@ -1164,18 +1207,29 @@ function handle_feed($uid,$abook_id,$url) { ); $recurse = 0; - $z = z_fetch_url($url,false,$recurse,array('novalidate' => true)); + $z = z_fetch_url($url, false, $recurse, array('novalidate' => true)); -//logger('handle_feed:' . print_r($z,true)); + //logger('data:' . print_r($z, true), LOGGER_DATA); if($z['success']) { - consume_feed($z['body'],$channel,$x[0],1); - consume_feed($z['body'],$channel,$x[0],2); + consume_feed($z['body'], $channel, $x[0], 1); + consume_feed($z['body'], $channel, $x[0], 2); } } - -function atom_author($tag,$name,$uri,$h,$w,$type,$photo) { +/** + * @brief Return a XML tag with author information. + * + * @param string $tag The XML tag to create + * @param string $name Name of the author + * @param string $uri + * @param int $h image height + * @param int $w image width + * @param string $type profile photo mime type + * @param string $photo Fully qualified URL to a profile/avator photo + * @return string + */ +function atom_author($tag, $name, $uri, $h, $w, $type, $photo) { $o = ''; if(! $tag) return $o; @@ -1199,7 +1253,20 @@ function atom_author($tag,$name,$uri,$h,$w,$type,$photo) { return $o; } -function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) { +/** + * @brief Create an item for the Atom feed. + * + * @see get_feed_for() + * + * @param array $item + * @param string $type + * @param array $author + * @param array $owner + * @param string $comment default false + * @param number $cid default 0 + * @return void|string + */ +function atom_entry($item, $type, $author, $owner, $comment = false, $cid = 0) { if(! $item['parent']) return; @@ -1207,7 +1274,6 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) { if($item['deleted']) return '<at:deleted-entry ref="' . xmlify($item['mid']) . '" when="' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '" />' . "\r\n"; - create_export_photo_body($item); if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid']) @@ -1227,12 +1293,11 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) { if(($item['parent'] != $item['id']) || ($item['parent_mid'] !== $item['mid']) || (($item['thr_parent'] !== '') && ($item['thr_parent'] !== $item['mid']))) { $parent_item = (($item['thr_parent']) ? $item['thr_parent'] : $item['parent_mid']); $o .= '<thr:in-reply-to ref="' . 'X-ZOT:' . xmlify($parent_item) . '" type="text/html" href="' . xmlify($item['plink']) . '" />' . "\r\n"; - } if(activity_match($item['obj_type'],ACTIVITY_OBJ_EVENT) && activity_match($item['verb'],ACTIVITY_POST)) { $obj = ((is_array($item['obj'])) ? $item['obj'] : json_decode($item['obj'],true)); - + $o .= '<title>' . xmlify($item['title']) . '</title>' . "\r\n"; $o .= '<summary xmlns="urn:ietf:params:xml:ns:xcal">' . xmlify(bbcode($obj['title'])) . '</summary>' . "\r\n"; $o .= '<dtstart xmlns="urn:ietf:params:xml:ns:xcal">' . datetime_convert('UTC','UTC', $obj['dtstart'],'Ymd\\THis' . (($obj['adjust']) ? '\\Z' : '')) . '</dtstart>' . "\r\n"; @@ -1270,13 +1335,13 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) { $actobj = construct_activity_object($item); if(strlen($actobj)) $o .= $actobj; + $actarg = construct_activity_target($item); if(strlen($actarg)) $o .= $actarg; - if($item['attach']) { - $enclosures = json_decode($item['attach'],true); + $enclosures = json_decode($item['attach'], true); if($enclosures) { foreach($enclosures as $enc) { $o .= '<link rel="enclosure" ' @@ -1291,7 +1356,7 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) { if($item['term']) { foreach($item['term'] as $term) { $scheme = ''; - $label = ''; + $label = ''; switch($term['ttype']) { case TERM_UNKNOWN: $scheme = NAMESPACE_ZOT . '/term/unknown'; @@ -1322,34 +1387,46 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) { $o .= '</entry>' . "\r\n"; - $x = [ - 'item' => $item, - 'type' => $type, - 'author' => $author, - 'owner' => $owner, - 'comment' => $comment, - 'abook_id' => $cid, - 'entry' => $o + // build array to pass to hook + $x = [ + 'item' => $item, + 'type' => $type, + 'author' => $author, + 'owner' => $owner, + 'comment' => $comment, + 'abook_id' => $cid, + 'entry' => $o ]; - call_hooks('atom_entry', $x); return $x['entry']; } - +/** + * @brief + * + * @param array $items + * @return array + */ function gen_asld($items) { $ret = array(); if(! $items) return $ret; + foreach($items as $item) { $ret[] = i2asld($item); } + return $ret; } - +/** + * @brief + * + * @param array $i + * @return array + */ function i2asld($i) { if(! $i) @@ -1379,12 +1456,9 @@ function i2asld($i) { if($i['obj_type'] === ACTIVITY_OBJ_NOTE) $ret['object'] = asencode_note($i); - $ret['actor'] = asencode_person($i['author']); - return $ret; - } function asencode_note($i) { @@ -1395,6 +1469,7 @@ function asencode_note($i) { $ret['@id'] = $i['plink']; if($i['title']) $ret['title'] = bbcode($i['title']); + $ret['content'] = bbcode($i['body']); $ret['zot:owner'] = asencode_person($i['owner']); $ret['published'] = datetime_convert('UTC','UTC',$i['created'],ATOM_TIME); diff --git a/include/network.php b/include/network.php index e6a6fc2b4..6cc53e8b5 100644 --- a/include/network.php +++ b/include/network.php @@ -75,7 +75,7 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { if(x($opts,'readfunc')) @curl_setopt($ch, CURLOPT_READFUNCTION, $opts['readfunc']); - // When using the session option and fetching from our own site, + // When using the session option and fetching from our own site, // append the PHPSESSID cookie to any existing headers. // Don't add to $opts['headers'] so that the cookie does not get // sent to other sites via redirects @@ -398,18 +398,22 @@ function json_return_and_die($x, $content_type = 'application/json') { } - -// Generic XML return -// Outputs a basic dfrn XML status structure to STDOUT, with a <status> variable -// of $st and an optional text <message> of $message and terminates the current process. - - +/** + * @brief Generic XML return. + * + * Outputs a basic dfrn XML status structure to STDOUT, with a <status> variable + * of $st and an optional text <message> of $message and terminates the current + * process. + * + * @param string $st + * @param string $message + */ function xml_status($st, $message = '') { $xml_message = ((strlen($message)) ? "\t<message>" . xmlify($message) . "</message>\r\n" : ''); if($st) - logger('xml_status returning non_zero: ' . $st . " message=" . $message); + logger('Returning non_zero: ' . $st . " message=" . $message); header( "Content-type: text/xml" ); echo '<?xml version="1.0" encoding="UTF-8"?>'."\r\n"; @@ -418,15 +422,13 @@ function xml_status($st, $message = '') { } - /** - * @brief Send HTTP status header + * @brief Send HTTP status header. * * @param int $val * integer HTTP status result value * @param string $msg * optional message - * @returns nil */ function http_status($val, $msg = '') { if ($val >= 400) @@ -434,12 +436,11 @@ function http_status($val, $msg = '') { if ($val >= 200 && $val < 300) $msg = (($msg) ? $msg : 'OK'); - logger('http_status_exit ' . $val . ' ' . $msg); + logger('' . $val . ' ' . $msg); header($_SERVER['SERVER_PROTOCOL'] . ' ' . $val . ' ' . $msg); } - /** * @brief Send HTTP status header and exit. * @@ -447,58 +448,57 @@ function http_status($val, $msg = '') { * integer HTTP status result value * @param string $msg * optional message - * @returns (does not return, process is terminated) + * @return does not return, process is terminated */ function http_status_exit($val, $msg = '') { http_status($val, $msg); killme(); } - - -// convert an XML document to a normalised, case-corrected array -// used by webfinger - - +/** + * @brief convert an XML document to a normalised, case-corrected array used by webfinger. + * + * @param string|array|SimpleXMLElement $xml_element + * @param int $recursion_depth[in,out] + * @return NULL|string|array + */ function convert_xml_element_to_array($xml_element, &$recursion_depth=0) { - // If we're getting too deep, bail out - if ($recursion_depth > 512) { - return(null); - } - - if (!is_string($xml_element) && - !is_array($xml_element) && - (get_class($xml_element) == 'SimpleXMLElement')) { - $xml_element_copy = $xml_element; - $xml_element = get_object_vars($xml_element); - } + // If we're getting too deep, bail out + if ($recursion_depth > 512) { + return(null); + } - if (is_array($xml_element)) { - $result_array = array(); - if (count($xml_element) <= 0) { - return (trim(strval($xml_element_copy))); - } + if (!is_string($xml_element) && + !is_array($xml_element) && + (get_class($xml_element) == 'SimpleXMLElement')) { + $xml_element_copy = $xml_element; + $xml_element = get_object_vars($xml_element); + } - foreach($xml_element as $key=>$value) { + if (is_array($xml_element)) { + $result_array = array(); + if (count($xml_element) <= 0) { + return (trim(strval($xml_element_copy))); + } - $recursion_depth++; - $result_array[strtolower($key)] = + foreach($xml_element as $key=>$value) { + $recursion_depth++; + $result_array[strtolower($key)] = convert_xml_element_to_array($value, $recursion_depth); - $recursion_depth--; - } - if ($recursion_depth == 0) { - $temp_array = $result_array; - $result_array = array( - strtolower($xml_element_copy->getName()) => $temp_array, - ); - } - - return ($result_array); - - } else { - return (trim(strval($xml_element))); + $recursion_depth--; } + if ($recursion_depth == 0) { + $temp_array = $result_array; + $result_array = array( + strtolower($xml_element_copy->getName()) => $temp_array, + ); + } + + return ($result_array); + } else { + return (trim(strval($xml_element))); + } } @@ -512,7 +512,7 @@ function z_dns_check($h,$check_mx = 0) { if(is_array(\App::$config) && array_key_exists('system',\App::$config) && is_array(\App::$config['system']) - && array_key_exists('do_not_check_dns',\App::$config['system']) + && array_key_exists('do_not_check_dns',\App::$config['system']) && \App::$config['system']['do_not_check_dns']) return true; @@ -520,56 +520,71 @@ function z_dns_check($h,$check_mx = 0) { //$opts = DNS_A + DNS_CNAME + DNS_PTR; //if($check_mx) // $opts += DNS_MX; - // Specific record type flags are unreliable on FreeBSD and Mac, - // so now we'll ignore these and just check for the existence of any DNS record. + // Specific record type flags are unreliable on FreeBSD and Mac, + // so now we'll ignore these and just check for the existence of any DNS record. return((@dns_get_record($h) || filter_var($h, FILTER_VALIDATE_IP)) ? true : false); - } -// Take a URL from the wild, prepend http:// if necessary -// and check DNS to see if it's real (or check if is a valid IP address) -// return true if it's OK, false if something is wrong with it - - +/** + * @brief Validates a given URL + * + * Take a URL from the wild, prepend http:// if necessary and check DNS to see + * if it's real (or check if is a valid IP address). + * + * @see z_dns_check() + * + * @param string $url[in,out] URL to check + * @return boolean Return true if it's OK, false if something is wrong with it + */ function validate_url(&$url) { // no naked subdomains (allow localhost for tests) - if(strpos($url,'.') === false && strpos($url,'/localhost/') === false) + if(strpos($url, '.') === false && strpos($url, '/localhost/') === false) return false; - if(substr($url,0,4) != 'http') + + if(substr($url, 0, 4) != 'http') $url = 'http://' . $url; + $h = @parse_url($url); if(($h) && z_dns_check($h['host'])) { return true; } + return false; } -// checks that email is an actual resolvable internet address - - +/** + * @brief Checks that email is an actual resolvable internet address. + * + * @param string $addr + * @return boolean + */ function validate_email($addr) { - if(get_config('system','disable_email_validation')) + if(get_config('system', 'disable_email_validation')) return true; - if(! strpos($addr,'@')) + if(! strpos($addr, '@')) return false; - $h = substr($addr,strpos($addr,'@') + 1); - if(($h) && z_dns_check($h,true)) { + $h = substr($addr, strpos($addr, '@') + 1); + + if(($h) && z_dns_check($h, true)) { return true; } + return false; } -// Check $url against our list of allowed sites, -// wildcards allowed. If allowed_sites is unset return true; -// If url is allowed, return true. -// otherwise, return false - - +/** + * @brief Check $url against our list of allowed sites. + * + * Wildcards allowed. If allowed_sites is unset return true. + * + * @param string $url + * @return boolean Return true if url is allowed, otherwise return false + */ function allowed_url($url) { $h = @parse_url($url); @@ -578,7 +593,7 @@ function allowed_url($url) { return false; } - $str_allowed = get_config('system','allowed_sites'); + $str_allowed = get_config('system', 'allowed_sites'); if(! $str_allowed) return true; @@ -606,21 +621,23 @@ function allowed_url($url) { return $found; } -// check if email address is allowed to register here. -// Compare against our list (wildcards allowed). -// Returns false if not allowed, true if allowed or if -// allowed list is not configured. - - +/** + * @brief Check if email address is allowed to register here. + * + * Compare against our list (wildcards allowed). + * + * @param string $email + * @return boolean Returns false if not allowed, true if allowed or if allowed list is + * not configured. + */ function allowed_email($email) { - - $domain = strtolower(substr($email,strpos($email,'@') + 1)); + $domain = strtolower(substr($email, strpos($email, '@') + 1)); if(! $domain) return false; - $str_allowed = get_config('system','allowed_email'); - $str_not_allowed = get_config('system','not_allowed_email'); + $str_allowed = get_config('system', 'allowed_email'); + $str_not_allowed = get_config('system', 'not_allowed_email'); if(! $str_allowed && ! $str_not_allowed) return true; @@ -631,7 +648,7 @@ function allowed_email($email) { $fnmatch = function_exists('fnmatch'); - $allowed = explode(',',$str_allowed); + $allowed = explode(',', $str_allowed); if(count($allowed)) { foreach($allowed as $a) { @@ -643,7 +660,7 @@ function allowed_email($email) { } } - $not_allowed = explode(',',$str_not_allowed); + $not_allowed = explode(',', $str_not_allowed); if(count($not_allowed)) { foreach($not_allowed as $na) { @@ -660,6 +677,7 @@ function allowed_email($email) { } elseif (!$str_allowed && !$found_not_allowed) { $return = true; } + return $return; } @@ -669,10 +687,12 @@ function parse_xml_string($s,$strict = true) { if($strict) { if(! strstr($s,'<?xml')) return false; + $s2 = substr($s,strpos($s,'<?xml')); } else $s2 = $s; + libxml_use_internal_errors(true); $x = @simplexml_load_string($s2); @@ -680,8 +700,10 @@ function parse_xml_string($s,$strict = true) { logger('libxml: parse: error: ' . $s2, LOGGER_DATA); foreach(libxml_get_errors() as $err) logger('libxml: parse: ' . $err->code." at ".$err->line.":".$err->column." : ".$err->message, LOGGER_DATA); + libxml_clear_errors(); } + return $x; } @@ -697,7 +719,7 @@ function scale_external_images($s, $include_link = true, $scale_replace = false) require_once('include/photo/photo_driver.php'); foreach($matches as $mtch) { - logger('scale_external_image: ' . $mtch[2] . ' ' . $mtch[3]); + logger('data: ' . $mtch[2] . ' ' . $mtch[3]); if(substr($mtch[1],0,1) == '=') { $owidth = intval(substr($mtch[2],1)); @@ -748,12 +770,12 @@ function scale_external_images($s, $include_link = true, $scale_replace = false) $ph->scaleImage(1024); $new_width = $ph->getWidth(); $new_height = $ph->getHeight(); - logger('scale_external_images: ' . $orig_width . '->' . $new_width . 'w ' . $orig_height . '->' . $new_height . 'h' . ' match: ' . $mtch[0], LOGGER_DEBUG); + logger('data: ' . $orig_width . '->' . $new_width . 'w ' . $orig_height . '->' . $new_height . 'h' . ' match: ' . $mtch[0], LOGGER_DEBUG); $s = str_replace($mtch[0],'[' . $tag . '=' . $new_width . 'x' . $new_height. ']' . $scaled . '[/' . $tag . ']' . "\n" . (($include_link) ? '[zrl=' . $mtch[2] . ']' . t('view full size') . '[/zrl]' . "\n" : ''),$s); - logger('scale_external_images: new string: ' . $s, LOGGER_DEBUG); + logger('new string: ' . $s, LOGGER_DEBUG); } } } @@ -768,27 +790,31 @@ function scale_external_images($s, $include_link = true, $scale_replace = false) } /** - * xml2array() will convert the given XML text to an array in the XML structure. + * @brief xml2array() will convert the given XML text to an array in the XML structure. + * * Link: http://www.bin-co.com/php/scripts/xml2array/ - * Portions significantly re-written by mike@macgirvin.com for Friendica (namespaces, lowercase tags, get_attribute default changed, more...) - * Arguments : $contents - The XML text - * $namespaces - true or false include namespace information in the returned array as array elements. - * $get_attributes - 1 or 0. If this is 1 the function will get the attributes as well as the tag values - this results in a different array structure in the return value. - * $priority - Can be 'tag' or 'attribute'. This will change the way the resulting array sturcture. For 'tag', the tags are given more importance. - * Return: The parsed XML in an array form. Use print_r() to see the resulting array structure. + * Portions significantly re-written by mike@macgirvin.com for Friendica + * (namespaces, lowercase tags, get_attribute default changed, more...) + * * Examples: $array = xml2array(file_get_contents('feed.xml')); - * $array = xml2array(file_get_contents('feed.xml', true, 1, 'attribute')); + * $array = xml2array(file_get_contents('feed.xml', true, 1, 'attribute')); + * + * @param string $contents The XML text + * @param boolean $namespaces true or false include namespace information in the returned array as array elements + * @param int $get_attributes 1 or 0. If this is 1 the function will get the attributes as well as the tag values - this results in a different array structure in the return value. + * @param string $priority Can be 'tag' or 'attribute'. This will change the way the resulting array sturcture. For 'tag', the tags are given more importance. + * + * @return array The parsed XML in an array form. Use print_r() to see the resulting array structure. */ - function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = 'attribute') { - if(!$contents) return array(); + if(!$contents) + return array(); if(!function_exists('xml_parser_create')) { logger('xml2array: parser function missing'); return array(); } - libxml_use_internal_errors(true); libxml_clear_errors(); @@ -814,6 +840,7 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = foreach(libxml_get_errors() as $err) logger('libxml: parse: ' . $err->code . " at " . $err->line . ":" . $err->column . " : " . $err->message, LOGGER_DATA); libxml_clear_errors(); + return; } @@ -880,7 +907,6 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = $current[$tag]['0_attr'] = $current[$tag.'_attr']; unset($current[$tag.'_attr']); } - } $last_item_index = $repeated_tag_index[$tag.'_'.$level]-1; $current = &$current[$tag][$last_item_index]; @@ -891,7 +917,8 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = if(!isset($current[$tag])) { //New Key $current[$tag] = $result; $repeated_tag_index[$tag.'_'.$level] = 1; - if($priority == 'tag' and $attributes_data) $current[$tag. '_attr'] = $attributes_data; + if($priority == 'tag' and $attributes_data) + $current[$tag. '_attr'] = $attributes_data; } else { // If taken, put all things inside a list(array) if(isset($current[$tag][0]) and is_array($current[$tag])) { // If it is already an array... @@ -903,13 +930,11 @@ function xml2array($contents, $namespaces = true, $get_attributes=1, $priority = $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data; } $repeated_tag_index[$tag.'_'.$level]++; - } else { // If it is not an array... $current[$tag] = array($current[$tag],$result); //...Make it an array using using the existing value and the new value $repeated_tag_index[$tag.'_'.$level] = 1; if($priority == 'tag' and $get_attributes) { if(isset($current[$tag.'_attr'])) { // The attribute of the last(0th) tag must be moved as well - $current[$tag]['0_attr'] = $current[$tag.'_attr']; unset($current[$tag.'_attr']); } @@ -982,14 +1007,21 @@ function email_header_encode($in_str, $charset = 'UTF-8') { return $out_str; } - -function discover_by_url($url,$arr = null) { - require_once('library/HTML5/Parser.php'); +/** + * @brief Creates an xchan entry for URL. + * + * @param string $url URL to discover + * @param array $arr fallback values if scrape_feed() is empty + * + * @return boolean + */ +function discover_by_url($url, $arr = null) { $x = scrape_feed($url); if(! $x) { if(! $arr) return false; + $network = (($arr['network']) ? $arr['network'] : 'unknown'); $name = (($arr['name']) ? $arr['name'] : 'unknown'); $photo = (($arr['photo']) ? $arr['photo'] : ''); @@ -1012,24 +1044,23 @@ function discover_by_url($url,$arr = null) { // try and discover stuff from the feeed - require_once('library/simplepie/simplepie.inc'); $feed = new SimplePie(); $level = 0; - $x = z_fetch_url($guid,false,$level,array('novalidate' => true)); + $x = z_fetch_url($guid, false, $level, array('novalidate' => true)); if(! $x['success']) { - logger('probe_url: feed fetch failed for ' . $poll); + logger('Feed fetch failed for ' . $guid); return false; } $xml = $x['body']; - logger('probe_url: fetch feed: ' . $guid . ' returns: ' . $xml, LOGGER_DATA); - logger('probe_url: scrape_feed: headers: ' . $x['header'], LOGGER_DATA); + logger('Fetch feed: ' . $guid . ' returns: ' . $xml, LOGGER_DATA); + logger('scrape_feed: headers: ' . $x['header'], LOGGER_DATA); // Don't try and parse an empty string $feed->set_raw_data(($xml) ? $xml : '<?xml version="1.0" encoding="utf-8" ?><xml></xml>'); $feed->init(); if($feed->error()) - logger('probe_url: scrape_feed: Error parsing XML: ' . $feed->error()); + logger('scrape_feed: Error parsing XML: ' . $feed->error()); $name = unxmlify(trim($feed->get_title())); $photo = $feed->get_image_url(); @@ -1070,7 +1101,7 @@ function discover_by_url($url,$arr = null) { $profile = trim(unxmlify($author->get_link())); } if(! $photo) { - $rawmedia = $item->get_item_tags('http://search.yahoo.com/mrss/','thumbnail'); + $rawmedia = $item->get_item_tags('http://search.yahoo.com/mrss/', 'thumbnail'); if($rawmedia && $rawmedia[0]['attribs']['']['url']) $photo = unxmlify($rawmedia[0]['attribs']['']['url']); } @@ -1084,7 +1115,7 @@ function discover_by_url($url,$arr = null) { } } } - if($poll === $profile) + if($guid === $profile) $lnk = $feed->get_permalink(); if(isset($lnk) && strlen($lnk)) $profile = $lnk; @@ -1096,9 +1127,6 @@ function discover_by_url($url,$arr = null) { if(! $name) $name = notags($feed->get_description()); - if(! $guid) - return false; - $r = q("select * from xchan where xchan_hash = '%s' limit 1", dbesc($guid) ); @@ -1112,7 +1140,6 @@ function discover_by_url($url,$arr = null) { [ 'xchan_hash' => $guid, 'xchan_guid' => $guid, - 'xchan_pubkey' => $pubkey, 'xchan_addr' => $addr, 'xchan_url' => $profile, 'xchan_name' => $name, @@ -1130,11 +1157,10 @@ function discover_by_url($url,$arr = null) { dbesc($photos[3]), dbesc($guid) ); - return true; + return true; } - function discover_by_webbie($webbie) { $result = []; @@ -1183,7 +1209,6 @@ function discover_by_webbie($webbie) { function webfinger_rfc7033($webbie,$zot = false) { - if(strpos($webbie,'@')) { $lhs = substr($webbie,0,strpos($webbie,'@')); $rhs = substr($webbie,strpos($webbie,'@')+1); @@ -1268,14 +1293,14 @@ function fetch_lrdd_template($host) { } if(! strpos($tpl,'{uri}')) $tpl = ''; - return $tpl; + return $tpl; } function fetch_xrd_links($url) { - logger('fetch_xrd_links: ' . $url, LOGGER_DEBUG); + logger('url: ' . $url, LOGGER_DEBUG); $redirects = 0; $x = z_fetch_url($url,false,$redirects,array('timeout' => 20)); @@ -1284,7 +1309,7 @@ function fetch_xrd_links($url) { return array(); $xml = $x['body']; - logger('fetch_xrd_links: ' . $xml, LOGGER_DATA); + logger('data: ' . $xml, LOGGER_DATA); if ((! $xml) || (! stristr($xml,'<xrd'))) return array(); @@ -1322,13 +1347,21 @@ function fetch_xrd_links($url) { $links[]['@attributes'] = array('rel' => 'subject' , 'href' => $arr['xrd']['subject']); } - logger('fetch_xrd_links: ' . print_r($links,true), LOGGER_DATA); + logger('data: ' . print_r($links, true), LOGGER_DATA); return $links; } +/** + * @brief + * + * @param string $url The URL to scrape + * @return array + */ + function scrape_feed($url) { + require_once('library/HTML5/Parser.php'); $ret = array(); $level = 0; @@ -1341,15 +1374,14 @@ function scrape_feed($url) { $code = $x['return_code']; $s = $x['body']; - logger('scrape_feed: returns: ' . $code . ' headers=' . $headers, LOGGER_DEBUG); + logger('returns: ' . $code . ' headers=' . $headers, LOGGER_DEBUG); if(! $s) { - logger('scrape_feed: no data returned for ' . $url); + logger('No data returned for ' . $url); return $ret; } - - $lines = explode("\n",$headers); + $lines = explode("\n", $headers); if(count($lines)) { foreach($lines as $line) { if(stristr($line,'content-type:')) { @@ -1373,15 +1405,14 @@ function scrape_feed($url) { try { $dom = HTML5_Parser::parse($s); } catch (DOMException $e) { - logger('scrape_feed: parse error: ' . $e); + logger('Parse error: ' . $e); } if(! $dom) { - logger('scrape_feed: failed to parse.'); + logger('Failed to parse.'); return $ret; } - $head = $dom->getElementsByTagName('base'); if($head) { foreach($head as $head0) { @@ -1426,11 +1457,12 @@ function format_and_send_email($sender,$xchan,$item) { $title = $item['title']; $body = $item['body']; - $textversion = strip_tags(html_entity_decode(bbcode(str_replace(array("\\r", "\\n"), array( "", "\n"), $body)),ENT_QUOTES,'UTF-8')); + $textversion = strip_tags(html_entity_decode(bbcode(str_replace(array("\\r", "\\n"), array( "", "\n"), $body)),ENT_QUOTES,'UTF-8')); $htmlversion = bbcode(str_replace(array("\\r","\\n"), array("","<br />\n"),$body)); $banner = t('$Projectname Notification'); + $product = t('$projectname'); // PLATFORM_NAME; $siteurl = z_root(); $thanks = t('Thank You,'); @@ -1537,8 +1569,6 @@ function do_delivery($deliveries) { if($deliver) Zotlabs\Daemon\Master::Summon(array('Deliver',$deliver)); - - } @@ -1595,7 +1625,7 @@ function get_site_info() { $commit = ''; } else { - $version = $commit = ''; + $version = $commit = ''; } //Statistics @@ -1612,12 +1642,12 @@ function get_site_info() { foreach(App::$config['feature_lock'] as $k => $v) { if($k === 'config_loaded') continue; + $locked_features[$k] = intval($v); } } - $data = [ 'url' => z_root(), 'platform' => Zotlabs\Lib\System::get_platform_name(), @@ -1645,16 +1675,20 @@ function get_site_info() { 'local_posts' => $local_posts_stat, 'hide_in_statistics' => $hide_in_statistics ]; + return $data; } - - +/** + * @brief + * + * @param string $url + * @return boolean + */ function check_siteallowed($url) { $retvalue = true; - $arr = array('url' => $url); call_hooks('check_siteallowed',$arr); @@ -1680,9 +1714,16 @@ function check_siteallowed($url) { } } } + return $retvalue; } +/** + * @brief + * + * @param string $hash + * @return boolean + */ function check_channelallowed($hash) { $retvalue = true; @@ -1712,6 +1753,7 @@ function check_channelallowed($hash) { } } } + return $retvalue; } @@ -1742,9 +1784,14 @@ function get_repository_version($branch = 'master') { return $matches[3]; } return '?.?'; - } +/** + * @brief Get translated network name. + * + * @param string $s Network string, see boot.php + * @return string Translated name of the network + */ function network_to_name($s) { $nets = array( @@ -1767,27 +1814,24 @@ function network_to_name($s) { $search = array_keys($nets); $replace = array_values($nets); - return str_replace($search,$replace,$s); - + return str_replace($search, $replace, $s); } - +/** + * @brief Send a text email message. + * + * @param array $params an assoziative array with: + * * \e string \b fromName name of the sender + * * \e string \b fromEmail email of the sender + * * \e string \b replyTo replyTo address to direct responses + * * \e string \b toEmail destination email address + * * \e string \b messageSubject subject of the message + * * \e string \b htmlVersion html version of the message + * * \e string \b textVersion text only version of the message + * * \e string \b additionalMailHeader additions to the smtp mail header + */ function z_mail($params) { - /** - * @brief Send a text email message - * - * @param array $params an assoziative array with: - * * \e string \b fromName name of the sender - * * \e string \b fromEmail email of the sender - * * \e string \b replyTo replyTo address to direct responses - * * \e string \b toEmail destination email address - * * \e string \b messageSubject subject of the message - * * \e string \b htmlVersion html version of the message - * * \e string \b textVersion text only version of the message - * * \e string \b additionalMailHeader additions to the smtp mail header - */ - if(! $params['fromEmail']) { $params['fromEmail'] = get_config('system','from_email'); if(! $params['fromEmail']) @@ -1833,8 +1877,13 @@ function z_mail($params) { return $res; } -// discover the best API path available for redmatrix/hubzilla servers +/** + * @brief Discover the best API path available for redmatrix/hubzilla servers. + * + * @param string $host + * @return string + */ function probe_api_path($host) { $schemes = ['https', 'http' ]; @@ -1844,8 +1893,8 @@ function probe_api_path($host) { foreach($paths as $path) { $curpath = $scheme . '://' . $host . $path; $x = z_fetch_url($curpath); - if($x['success'] && ! strlen($x['body'],'not implemented')) - return str_replace('version','',$curpath); + if($x['success'] && ! strlen($x['body'], 'not implemented')) + return str_replace('version', '', $curpath); } } diff --git a/include/photos.php b/include/photos.php index 9b2515658..896f3e1f2 100644 --- a/include/photos.php +++ b/include/photos.php @@ -470,6 +470,7 @@ function photos_albums_list($channel, $observer, $sort_key = 'display_path', $di intval($channel_id) ); if($x) { + require_once('include/attach.php'); foreach($r as $rv) { foreach($x as $xv) { if($xv['folder'] === $rv['hash']) { diff --git a/library/bootstrap/css/bootstrap-grid.css b/library/bootstrap/css/bootstrap-grid.css index ab8ae240d..0bb960ecc 100644 --- a/library/bootstrap/css/bootstrap-grid.css +++ b/library/bootstrap/css/bootstrap-grid.css @@ -79,6 +79,7 @@ html { } .container-fluid { + width: 100%; margin-right: auto; margin-left: auto; padding-right: 15px; @@ -245,99 +246,51 @@ html { } .col-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.333333%; - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; + width: 8.333333%; } .col-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.666667%; - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; + width: 16.666667%; } .col-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; + width: 25%; } .col-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.333333%; - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; + width: 33.333333%; } .col-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.666667%; - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; + width: 41.666667%; } .col-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; + width: 50%; } .col-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.333333%; - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; + width: 58.333333%; } .col-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.666667%; - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; + width: 66.666667%; } .col-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; + width: 75%; } .col-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.333333%; - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; + width: 83.333333%; } .col-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.666667%; - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; + width: 91.666667%; } .col-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; + width: 100%; } .pull-0 { @@ -507,88 +460,40 @@ html { width: auto; } .col-sm-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.333333%; - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; + width: 8.333333%; } .col-sm-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.666667%; - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; + width: 16.666667%; } .col-sm-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; + width: 25%; } .col-sm-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.333333%; - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; + width: 33.333333%; } .col-sm-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.666667%; - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; + width: 41.666667%; } .col-sm-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; + width: 50%; } .col-sm-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.333333%; - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; + width: 58.333333%; } .col-sm-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.666667%; - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; + width: 66.666667%; } .col-sm-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; + width: 75%; } .col-sm-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.333333%; - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; + width: 83.333333%; } .col-sm-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.666667%; - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; + width: 91.666667%; } .col-sm-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; + width: 100%; } .pull-sm-0 { right: auto; @@ -725,88 +630,40 @@ html { width: auto; } .col-md-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.333333%; - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; + width: 8.333333%; } .col-md-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.666667%; - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; + width: 16.666667%; } .col-md-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; + width: 25%; } .col-md-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.333333%; - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; + width: 33.333333%; } .col-md-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.666667%; - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; + width: 41.666667%; } .col-md-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; + width: 50%; } .col-md-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.333333%; - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; + width: 58.333333%; } .col-md-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.666667%; - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; + width: 66.666667%; } .col-md-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; + width: 75%; } .col-md-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.333333%; - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; + width: 83.333333%; } .col-md-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.666667%; - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; + width: 91.666667%; } .col-md-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; + width: 100%; } .pull-md-0 { right: auto; @@ -943,88 +800,40 @@ html { width: auto; } .col-lg-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.333333%; - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; + width: 8.333333%; } .col-lg-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.666667%; - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; + width: 16.666667%; } .col-lg-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; + width: 25%; } .col-lg-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.333333%; - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; + width: 33.333333%; } .col-lg-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.666667%; - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; + width: 41.666667%; } .col-lg-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; + width: 50%; } .col-lg-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.333333%; - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; + width: 58.333333%; } .col-lg-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.666667%; - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; + width: 66.666667%; } .col-lg-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; + width: 75%; } .col-lg-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.333333%; - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; + width: 83.333333%; } .col-lg-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.666667%; - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; + width: 91.666667%; } .col-lg-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; + width: 100%; } .pull-lg-0 { right: auto; @@ -1161,88 +970,40 @@ html { width: auto; } .col-xl-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.333333%; - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; + width: 8.333333%; } .col-xl-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.666667%; - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; + width: 16.666667%; } .col-xl-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; + width: 25%; } .col-xl-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.333333%; - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; + width: 33.333333%; } .col-xl-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.666667%; - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; + width: 41.666667%; } .col-xl-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; + width: 50%; } .col-xl-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.333333%; - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; + width: 58.333333%; } .col-xl-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.666667%; - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; + width: 66.666667%; } .col-xl-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; + width: 75%; } .col-xl-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.333333%; - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; + width: 83.333333%; } .col-xl-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.666667%; - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; + width: 91.666667%; } .col-xl-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; + width: 100%; } .pull-xl-0 { right: auto; diff --git a/library/bootstrap/css/bootstrap-grid.css.map b/library/bootstrap/css/bootstrap-grid.css.map index c658ac647..04fef978c 100644 --- a/library/bootstrap/css/bootstrap-grid.css.map +++ b/library/bootstrap/css/bootstrap-grid.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/bootstrap-grid.scss","bootstrap-grid.css","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/mixins/_grid-framework.scss","../../scss/utilities/_flex.scss"],"names":[],"mappings":"AAUE;EAAgB,oBAAmB;CCRpC;;ADWD;EACE,+BAAsB;UAAtB,uBAAsB;EACtB,8BAA6B;CAC9B;;AAED;;;EAGE,4BAAmB;UAAnB,oBAAmB;CACpB;;AEjBC;ECAA,mBAAkB;EAClB,kBAAiB;EAKb,oBAA4B;EAC5B,mBAA4B;CDJ/B;;AEgDC;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CDmBF;;AG6BG;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CD0BF;;AGsBG;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CDiCF;;AGeG;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CDwCF;;AGQG;EFnDF;ICiBI,aE8KK;IF7KL,gBAAe;GDflB;CD+CF;;AGCG;EFnDF;ICiBI,aE+KK;IF9KL,gBAAe;GDflB;CDsDF;;AGNG;EFnDF;ICiBI,aEgLK;IF/KL,gBAAe;GDflB;CD6DF;;AGbG;EFnDF;ICiBI,cEiLM;IFhLN,gBAAe;GDflB;CDoEF;;AC3DC;ECZA,mBAAkB;EAClB,kBAAiB;EAKb,oBAA4B;EAC5B,mBAA4B;CDO/B;;AEqCC;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDO/B;CDuEF;;AGlCG;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDO/B;CD8EF;;AGzCG;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDO/B;CDqFF;;AGhDG;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDO/B;CD4FF;;ACpFC;ECYA,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,wBAAe;MAAf,oBAAe;UAAf,gBAAe;EAKX,oBAA4B;EAC5B,mBAA4B;CDjB/B;;AE2BC;EF7BF;ICkBI,oBAA4B;IAC5B,mBAA4B;GDjB/B;CDgGF;;AGrEG;EF7BF;ICkBI,oBAA4B;IAC5B,mBAA4B;GDjB/B;CDuGF;;AG5EG;EF7BF;ICkBI,oBAA4B;IAC5B,mBAA4B;GDjB/B;CD8GF;;AGnFG;EF7BF;ICkBI,oBAA4B;IAC5B,mBAA4B;GDjB/B;CDqHF;;ACjHC;EACE,gBAAe;EACf,eAAc;CAOf;;AATD;;EAMI,iB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","file":"bootstrap-grid.css","sourcesContent":[null,"@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .container {\n width: 540px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n width: 720px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n width: 960px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n width: 1140px;\n max-width: 100%;\n }\n}\n\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n@media (min-width: 576px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 768px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 992px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 1200px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.pull-0 {\n right: auto;\n}\n\n.pull-1 {\n right: 8.333333%;\n}\n\n.pull-2 {\n right: 16.666667%;\n}\n\n.pull-3 {\n right: 25%;\n}\n\n.pull-4 {\n right: 33.333333%;\n}\n\n.pull-5 {\n right: 41.666667%;\n}\n\n.pull-6 {\n right: 50%;\n}\n\n.pull-7 {\n right: 58.333333%;\n}\n\n.pull-8 {\n right: 66.666667%;\n}\n\n.pull-9 {\n right: 75%;\n}\n\n.pull-10 {\n right: 83.333333%;\n}\n\n.pull-11 {\n right: 91.666667%;\n}\n\n.pull-12 {\n right: 100%;\n}\n\n.push-0 {\n left: auto;\n}\n\n.push-1 {\n left: 8.333333%;\n}\n\n.push-2 {\n left: 16.666667%;\n}\n\n.push-3 {\n left: 25%;\n}\n\n.push-4 {\n left: 33.333333%;\n}\n\n.push-5 {\n left: 41.666667%;\n}\n\n.push-6 {\n left: 50%;\n}\n\n.push-7 {\n left: 58.333333%;\n}\n\n.push-8 {\n left: 66.666667%;\n}\n\n.push-9 {\n left: 75%;\n}\n\n.push-10 {\n left: 83.333333%;\n}\n\n.push-11 {\n left: 91.666667%;\n}\n\n.push-12 {\n left: 100%;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-sm-0 {\n right: auto;\n }\n .pull-sm-1 {\n right: 8.333333%;\n }\n .pull-sm-2 {\n right: 16.666667%;\n }\n .pull-sm-3 {\n right: 25%;\n }\n .pull-sm-4 {\n right: 33.333333%;\n }\n .pull-sm-5 {\n right: 41.666667%;\n }\n .pull-sm-6 {\n right: 50%;\n }\n .pull-sm-7 {\n right: 58.333333%;\n }\n .pull-sm-8 {\n right: 66.666667%;\n }\n .pull-sm-9 {\n right: 75%;\n }\n .pull-sm-10 {\n right: 83.333333%;\n }\n .pull-sm-11 {\n right: 91.666667%;\n }\n .pull-sm-12 {\n right: 100%;\n }\n .push-sm-0 {\n left: auto;\n }\n .push-sm-1 {\n left: 8.333333%;\n }\n .push-sm-2 {\n left: 16.666667%;\n }\n .push-sm-3 {\n left: 25%;\n }\n .push-sm-4 {\n left: 33.333333%;\n }\n .push-sm-5 {\n left: 41.666667%;\n }\n .push-sm-6 {\n left: 50%;\n }\n .push-sm-7 {\n left: 58.333333%;\n }\n .push-sm-8 {\n left: 66.666667%;\n }\n .push-sm-9 {\n left: 75%;\n }\n .push-sm-10 {\n left: 83.333333%;\n }\n .push-sm-11 {\n left: 91.666667%;\n }\n .push-sm-12 {\n left: 100%;\n }\n .offset-sm-0 {\n margin-left: 0%;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-md-0 {\n right: auto;\n }\n .pull-md-1 {\n right: 8.333333%;\n }\n .pull-md-2 {\n right: 16.666667%;\n }\n .pull-md-3 {\n right: 25%;\n }\n .pull-md-4 {\n right: 33.333333%;\n }\n .pull-md-5 {\n right: 41.666667%;\n }\n .pull-md-6 {\n right: 50%;\n }\n .pull-md-7 {\n right: 58.333333%;\n }\n .pull-md-8 {\n right: 66.666667%;\n }\n .pull-md-9 {\n right: 75%;\n }\n .pull-md-10 {\n right: 83.333333%;\n }\n .pull-md-11 {\n right: 91.666667%;\n }\n .pull-md-12 {\n right: 100%;\n }\n .push-md-0 {\n left: auto;\n }\n .push-md-1 {\n left: 8.333333%;\n }\n .push-md-2 {\n left: 16.666667%;\n }\n .push-md-3 {\n left: 25%;\n }\n .push-md-4 {\n left: 33.333333%;\n }\n .push-md-5 {\n left: 41.666667%;\n }\n .push-md-6 {\n left: 50%;\n }\n .push-md-7 {\n left: 58.333333%;\n }\n .push-md-8 {\n left: 66.666667%;\n }\n .push-md-9 {\n left: 75%;\n }\n .push-md-10 {\n left: 83.333333%;\n }\n .push-md-11 {\n left: 91.666667%;\n }\n .push-md-12 {\n left: 100%;\n }\n .offset-md-0 {\n margin-left: 0%;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-lg-0 {\n right: auto;\n }\n .pull-lg-1 {\n right: 8.333333%;\n }\n .pull-lg-2 {\n right: 16.666667%;\n }\n .pull-lg-3 {\n right: 25%;\n }\n .pull-lg-4 {\n right: 33.333333%;\n }\n .pull-lg-5 {\n right: 41.666667%;\n }\n .pull-lg-6 {\n right: 50%;\n }\n .pull-lg-7 {\n right: 58.333333%;\n }\n .pull-lg-8 {\n right: 66.666667%;\n }\n .pull-lg-9 {\n right: 75%;\n }\n .pull-lg-10 {\n right: 83.333333%;\n }\n .pull-lg-11 {\n right: 91.666667%;\n }\n .pull-lg-12 {\n right: 100%;\n }\n .push-lg-0 {\n left: auto;\n }\n .push-lg-1 {\n left: 8.333333%;\n }\n .push-lg-2 {\n left: 16.666667%;\n }\n .push-lg-3 {\n left: 25%;\n }\n .push-lg-4 {\n left: 33.333333%;\n }\n .push-lg-5 {\n left: 41.666667%;\n }\n .push-lg-6 {\n left: 50%;\n }\n .push-lg-7 {\n left: 58.333333%;\n }\n .push-lg-8 {\n left: 66.666667%;\n }\n .push-lg-9 {\n left: 75%;\n }\n .push-lg-10 {\n left: 83.333333%;\n }\n .push-lg-11 {\n left: 91.666667%;\n }\n .push-lg-12 {\n left: 100%;\n }\n .offset-lg-0 {\n margin-left: 0%;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-xl-0 {\n right: auto;\n }\n .pull-xl-1 {\n right: 8.333333%;\n }\n .pull-xl-2 {\n right: 16.666667%;\n }\n .pull-xl-3 {\n right: 25%;\n }\n .pull-xl-4 {\n right: 33.333333%;\n }\n .pull-xl-5 {\n right: 41.666667%;\n }\n .pull-xl-6 {\n right: 50%;\n }\n .pull-xl-7 {\n right: 58.333333%;\n }\n .pull-xl-8 {\n right: 66.666667%;\n }\n .pull-xl-9 {\n right: 75%;\n }\n .pull-xl-10 {\n right: 83.333333%;\n }\n .pull-xl-11 {\n right: 91.666667%;\n }\n .pull-xl-12 {\n right: 100%;\n }\n .push-xl-0 {\n left: auto;\n }\n .push-xl-1 {\n left: 8.333333%;\n }\n .push-xl-2 {\n left: 16.666667%;\n }\n .push-xl-3 {\n left: 25%;\n }\n .push-xl-4 {\n left: 33.333333%;\n }\n .push-xl-5 {\n left: 41.666667%;\n }\n .push-xl-6 {\n left: 50%;\n }\n .push-xl-7 {\n left: 58.333333%;\n }\n .push-xl-8 {\n left: 66.666667%;\n }\n .push-xl-9 {\n left: 75%;\n }\n .push-xl-10 {\n left: 83.333333%;\n }\n .push-xl-11 {\n left: 91.666667%;\n }\n .push-xl-12 {\n left: 100%;\n }\n .offset-xl-0 {\n margin-left: 0%;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 1;\n}\n\n.order-0 {\n order: 0;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 1;\n }\n .order-sm-0 {\n order: 0;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 1;\n }\n .order-md-0 {\n order: 0;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 1;\n }\n .order-lg-0 {\n order: 0;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 1;\n }\n .order-xl-0 {\n order: 0;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */",null,null,null,null,null,null]}
\ No newline at end of file +{"version":3,"sources":["../../scss/bootstrap-grid.scss","bootstrap-grid.css","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/mixins/_grid-framework.scss","../../scss/utilities/_flex.scss"],"names":[],"mappings":"AAUE;EAAgB,oBAAmB;CCRpC;;ADWD;EACE,+BAAsB;UAAtB,uBAAsB;EACtB,8BAA6B;CAC9B;;AAED;;;EAGE,4BAAmB;UAAnB,oBAAmB;CACpB;;AEjBC;ECAA,mBAAkB;EAClB,kBAAiB;EAKb,oBAA4B;EAC5B,mBAA4B;CDJ/B;;AEgDC;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CDmBF;;AG6BG;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CD0BF;;AGsBG;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CDiCF;;AGeG;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CDwCF;;AGQG;EFnDF;ICiBI,aE8KK;IF7KL,gBAAe;GDflB;CD+CF;;AGCG;EFnDF;ICiBI,aE+KK;IF9KL,gBAAe;GDflB;CDsDF;;AGNG;EFnDF;ICiBI,aEgLK;IF/KL,gBAAe;GDflB;CD6DF;;AGbG;EFnDF;ICiBI,cEiLM;IFhLN,gBAAe;GDflB;CDoEF;;AC3DC;EACE,YAAW;ECbb,mBAAkB;EAClB,kBAAiB;EAKb,oBAA4B;EAC5B,mBAA4B;CDQ/B;;AEoCC;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDQ/B;CDuEF;;AGnCG;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDQ/B;CD8EF;;AG1CG;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDQ/B;CDqFF;;AGjDG;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDQ/B;CD4FF;;ACpFC;ECWA,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,wBAAe;MAAf,oBAAe;UAAf,gBAAe;EAKX,oBAA4B;EAC5B,mBAA4B;CDhB/B;;AE0BC;EF5BF;ICiBI,oBAA4B;IAC5B,mBAA4B;GDhB/B;CDgGF;;AGtEG;EF5BF;ICiBI,oBAA4B;IAC5B,mBAA4B;GDhB/B;CDuGF;;AG7EG;EF5BF;ICiBI,oBAA4B;IAC5B,mBAA4B;GDhB/B;CD8GF;;AGpFG;EF5BF;ICiBI,oBAA4B;IAC5B,mBAA4B;GDhB/B;CDqHF;;ACjHC;EACE,gBAAe;EACf,eAAc;CAOf;;AAT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","file":"bootstrap-grid.css","sourcesContent":[null,"@-ms-viewport {\n width: device-width;\n}\n\nhtml {\n box-sizing: border-box;\n -ms-overflow-style: scrollbar;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .container {\n width: 540px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n width: 720px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n width: 960px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n width: 1140px;\n max-width: 100%;\n }\n}\n\n.container-fluid {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n@media (min-width: 576px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 768px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 992px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 1200px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n width: 8.333333%;\n}\n\n.col-2 {\n width: 16.666667%;\n}\n\n.col-3 {\n width: 25%;\n}\n\n.col-4 {\n width: 33.333333%;\n}\n\n.col-5 {\n width: 41.666667%;\n}\n\n.col-6 {\n width: 50%;\n}\n\n.col-7 {\n width: 58.333333%;\n}\n\n.col-8 {\n width: 66.666667%;\n}\n\n.col-9 {\n width: 75%;\n}\n\n.col-10 {\n width: 83.333333%;\n}\n\n.col-11 {\n width: 91.666667%;\n}\n\n.col-12 {\n width: 100%;\n}\n\n.pull-0 {\n right: auto;\n}\n\n.pull-1 {\n right: 8.333333%;\n}\n\n.pull-2 {\n right: 16.666667%;\n}\n\n.pull-3 {\n right: 25%;\n}\n\n.pull-4 {\n right: 33.333333%;\n}\n\n.pull-5 {\n right: 41.666667%;\n}\n\n.pull-6 {\n right: 50%;\n}\n\n.pull-7 {\n right: 58.333333%;\n}\n\n.pull-8 {\n right: 66.666667%;\n}\n\n.pull-9 {\n right: 75%;\n}\n\n.pull-10 {\n right: 83.333333%;\n}\n\n.pull-11 {\n right: 91.666667%;\n}\n\n.pull-12 {\n right: 100%;\n}\n\n.push-0 {\n left: auto;\n}\n\n.push-1 {\n left: 8.333333%;\n}\n\n.push-2 {\n left: 16.666667%;\n}\n\n.push-3 {\n left: 25%;\n}\n\n.push-4 {\n left: 33.333333%;\n}\n\n.push-5 {\n left: 41.666667%;\n}\n\n.push-6 {\n left: 50%;\n}\n\n.push-7 {\n left: 58.333333%;\n}\n\n.push-8 {\n left: 66.666667%;\n}\n\n.push-9 {\n left: 75%;\n}\n\n.push-10 {\n left: 83.333333%;\n}\n\n.push-11 {\n left: 91.666667%;\n}\n\n.push-12 {\n left: 100%;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n width: 8.333333%;\n }\n .col-sm-2 {\n width: 16.666667%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-4 {\n width: 33.333333%;\n }\n .col-sm-5 {\n width: 41.666667%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-7 {\n width: 58.333333%;\n }\n .col-sm-8 {\n width: 66.666667%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-10 {\n width: 83.333333%;\n }\n .col-sm-11 {\n width: 91.666667%;\n }\n .col-sm-12 {\n width: 100%;\n }\n .pull-sm-0 {\n right: auto;\n }\n .pull-sm-1 {\n right: 8.333333%;\n }\n .pull-sm-2 {\n right: 16.666667%;\n }\n .pull-sm-3 {\n right: 25%;\n }\n .pull-sm-4 {\n right: 33.333333%;\n }\n .pull-sm-5 {\n right: 41.666667%;\n }\n .pull-sm-6 {\n right: 50%;\n }\n .pull-sm-7 {\n right: 58.333333%;\n }\n .pull-sm-8 {\n right: 66.666667%;\n }\n .pull-sm-9 {\n right: 75%;\n }\n .pull-sm-10 {\n right: 83.333333%;\n }\n .pull-sm-11 {\n right: 91.666667%;\n }\n .pull-sm-12 {\n right: 100%;\n }\n .push-sm-0 {\n left: auto;\n }\n .push-sm-1 {\n left: 8.333333%;\n }\n .push-sm-2 {\n left: 16.666667%;\n }\n .push-sm-3 {\n left: 25%;\n }\n .push-sm-4 {\n left: 33.333333%;\n }\n .push-sm-5 {\n left: 41.666667%;\n }\n .push-sm-6 {\n left: 50%;\n }\n .push-sm-7 {\n left: 58.333333%;\n }\n .push-sm-8 {\n left: 66.666667%;\n }\n .push-sm-9 {\n left: 75%;\n }\n .push-sm-10 {\n left: 83.333333%;\n }\n .push-sm-11 {\n left: 91.666667%;\n }\n .push-sm-12 {\n left: 100%;\n }\n .offset-sm-0 {\n margin-left: 0%;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n width: 8.333333%;\n }\n .col-md-2 {\n width: 16.666667%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-4 {\n width: 33.333333%;\n }\n .col-md-5 {\n width: 41.666667%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-7 {\n width: 58.333333%;\n }\n .col-md-8 {\n width: 66.666667%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-10 {\n width: 83.333333%;\n }\n .col-md-11 {\n width: 91.666667%;\n }\n .col-md-12 {\n width: 100%;\n }\n .pull-md-0 {\n right: auto;\n }\n .pull-md-1 {\n right: 8.333333%;\n }\n .pull-md-2 {\n right: 16.666667%;\n }\n .pull-md-3 {\n right: 25%;\n }\n .pull-md-4 {\n right: 33.333333%;\n }\n .pull-md-5 {\n right: 41.666667%;\n }\n .pull-md-6 {\n right: 50%;\n }\n .pull-md-7 {\n right: 58.333333%;\n }\n .pull-md-8 {\n right: 66.666667%;\n }\n .pull-md-9 {\n right: 75%;\n }\n .pull-md-10 {\n right: 83.333333%;\n }\n .pull-md-11 {\n right: 91.666667%;\n }\n .pull-md-12 {\n right: 100%;\n }\n .push-md-0 {\n left: auto;\n }\n .push-md-1 {\n left: 8.333333%;\n }\n .push-md-2 {\n left: 16.666667%;\n }\n .push-md-3 {\n left: 25%;\n }\n .push-md-4 {\n left: 33.333333%;\n }\n .push-md-5 {\n left: 41.666667%;\n }\n .push-md-6 {\n left: 50%;\n }\n .push-md-7 {\n left: 58.333333%;\n }\n .push-md-8 {\n left: 66.666667%;\n }\n .push-md-9 {\n left: 75%;\n }\n .push-md-10 {\n left: 83.333333%;\n }\n .push-md-11 {\n left: 91.666667%;\n }\n .push-md-12 {\n left: 100%;\n }\n .offset-md-0 {\n margin-left: 0%;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n width: 8.333333%;\n }\n .col-lg-2 {\n width: 16.666667%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-4 {\n width: 33.333333%;\n }\n .col-lg-5 {\n width: 41.666667%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-7 {\n width: 58.333333%;\n }\n .col-lg-8 {\n width: 66.666667%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-10 {\n width: 83.333333%;\n }\n .col-lg-11 {\n width: 91.666667%;\n }\n .col-lg-12 {\n width: 100%;\n }\n .pull-lg-0 {\n right: auto;\n }\n .pull-lg-1 {\n right: 8.333333%;\n }\n .pull-lg-2 {\n right: 16.666667%;\n }\n .pull-lg-3 {\n right: 25%;\n }\n .pull-lg-4 {\n right: 33.333333%;\n }\n .pull-lg-5 {\n right: 41.666667%;\n }\n .pull-lg-6 {\n right: 50%;\n }\n .pull-lg-7 {\n right: 58.333333%;\n }\n .pull-lg-8 {\n right: 66.666667%;\n }\n .pull-lg-9 {\n right: 75%;\n }\n .pull-lg-10 {\n right: 83.333333%;\n }\n .pull-lg-11 {\n right: 91.666667%;\n }\n .pull-lg-12 {\n right: 100%;\n }\n .push-lg-0 {\n left: auto;\n }\n .push-lg-1 {\n left: 8.333333%;\n }\n .push-lg-2 {\n left: 16.666667%;\n }\n .push-lg-3 {\n left: 25%;\n }\n .push-lg-4 {\n left: 33.333333%;\n }\n .push-lg-5 {\n left: 41.666667%;\n }\n .push-lg-6 {\n left: 50%;\n }\n .push-lg-7 {\n left: 58.333333%;\n }\n .push-lg-8 {\n left: 66.666667%;\n }\n .push-lg-9 {\n left: 75%;\n }\n .push-lg-10 {\n left: 83.333333%;\n }\n .push-lg-11 {\n left: 91.666667%;\n }\n .push-lg-12 {\n left: 100%;\n }\n .offset-lg-0 {\n margin-left: 0%;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n width: 8.333333%;\n }\n .col-xl-2 {\n width: 16.666667%;\n }\n .col-xl-3 {\n width: 25%;\n }\n .col-xl-4 {\n width: 33.333333%;\n }\n .col-xl-5 {\n width: 41.666667%;\n }\n .col-xl-6 {\n width: 50%;\n }\n .col-xl-7 {\n width: 58.333333%;\n }\n .col-xl-8 {\n width: 66.666667%;\n }\n .col-xl-9 {\n width: 75%;\n }\n .col-xl-10 {\n width: 83.333333%;\n }\n .col-xl-11 {\n width: 91.666667%;\n }\n .col-xl-12 {\n width: 100%;\n }\n .pull-xl-0 {\n right: auto;\n }\n .pull-xl-1 {\n right: 8.333333%;\n }\n .pull-xl-2 {\n right: 16.666667%;\n }\n .pull-xl-3 {\n right: 25%;\n }\n .pull-xl-4 {\n right: 33.333333%;\n }\n .pull-xl-5 {\n right: 41.666667%;\n }\n .pull-xl-6 {\n right: 50%;\n }\n .pull-xl-7 {\n right: 58.333333%;\n }\n .pull-xl-8 {\n right: 66.666667%;\n }\n .pull-xl-9 {\n right: 75%;\n }\n .pull-xl-10 {\n right: 83.333333%;\n }\n .pull-xl-11 {\n right: 91.666667%;\n }\n .pull-xl-12 {\n right: 100%;\n }\n .push-xl-0 {\n left: auto;\n }\n .push-xl-1 {\n left: 8.333333%;\n }\n .push-xl-2 {\n left: 16.666667%;\n }\n .push-xl-3 {\n left: 25%;\n }\n .push-xl-4 {\n left: 33.333333%;\n }\n .push-xl-5 {\n left: 41.666667%;\n }\n .push-xl-6 {\n left: 50%;\n }\n .push-xl-7 {\n left: 58.333333%;\n }\n .push-xl-8 {\n left: 66.666667%;\n }\n .push-xl-9 {\n left: 75%;\n }\n .push-xl-10 {\n left: 83.333333%;\n }\n .push-xl-11 {\n left: 91.666667%;\n }\n .push-xl-12 {\n left: 100%;\n }\n .offset-xl-0 {\n margin-left: 0%;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 1;\n}\n\n.order-0 {\n order: 0;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 1;\n }\n .order-sm-0 {\n order: 0;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 1;\n }\n .order-md-0 {\n order: 0;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 1;\n }\n .order-lg-0 {\n order: 0;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 1;\n }\n .order-xl-0 {\n order: 0;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */",null,null,null,null,null,null]}
\ No newline at end of file diff --git a/library/bootstrap/css/bootstrap-grid.min.css b/library/bootstrap/css/bootstrap-grid.min.css index d17ef327f..c225dffab 100644 --- a/library/bootstrap/css/bootstrap-grid.min.css +++ b/library/bootstrap/css/bootstrap-grid.min.css @@ -1 +1 @@ -@-ms-viewport{width:device-width}html{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-overflow-style:scrollbar}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}.container{margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container{padding-right:15px;padding-left:15px}}@media (min-width:576px){.container{width:540px;max-width:100%}}@media (min-width:768px){.container{width:720px;max-width:100%}}@media (min-width:992px){.container{width:960px;max-width:100%}}@media (min-width:1200px){.container{width:1140px;max-width:100%}}.container-fluid{margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container-fluid{padding-right:15px;padding-left:15px}}.row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}@media (min-width:576px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:768px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:992px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:1200px){.row{margin-right:-15px;margin-left:-15px}}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:768px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:992px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}.col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-0{right:auto}.pull-1{right:8.333333%}.pull-2{right:16.666667%}.pull-3{right:25%}.pull-4{right:33.333333%}.pull-5{right:41.666667%}.pull-6{right:50%}.pull-7{right:58.333333%}.pull-8{right:66.666667%}.pull-9{right:75%}.pull-10{right:83.333333%}.pull-11{right:91.666667%}.pull-12{right:100%}.push-0{left:auto}.push-1{left:8.333333%}.push-2{left:16.666667%}.push-3{left:25%}.push-4{left:33.333333%}.push-5{left:41.666667%}.push-6{left:50%}.push-7{left:58.333333%}.push-8{left:66.666667%}.push-9{left:75%}.push-10{left:83.333333%}.push-11{left:91.666667%}.push-12{left:100%}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.333333%}.pull-sm-2{right:16.666667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.333333%}.pull-sm-5{right:41.666667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.333333%}.pull-sm-8{right:66.666667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.333333%}.pull-sm-11{right:91.666667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.333333%}.push-sm-2{left:16.666667%}.push-sm-3{left:25%}.push-sm-4{left:33.333333%}.push-sm-5{left:41.666667%}.push-sm-6{left:50%}.push-sm-7{left:58.333333%}.push-sm-8{left:66.666667%}.push-sm-9{left:75%}.push-sm-10{left:83.333333%}.push-sm-11{left:91.666667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.333333%}.pull-md-2{right:16.666667%}.pull-md-3{right:25%}.pull-md-4{right:33.333333%}.pull-md-5{right:41.666667%}.pull-md-6{right:50%}.pull-md-7{right:58.333333%}.pull-md-8{right:66.666667%}.pull-md-9{right:75%}.pull-md-10{right:83.333333%}.pull-md-11{right:91.666667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.333333%}.push-md-2{left:16.666667%}.push-md-3{left:25%}.push-md-4{left:33.333333%}.push-md-5{left:41.666667%}.push-md-6{left:50%}.push-md-7{left:58.333333%}.push-md-8{left:66.666667%}.push-md-9{left:75%}.push-md-10{left:83.333333%}.push-md-11{left:91.666667%}.push-md-12{left:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.333333%}.pull-lg-2{right:16.666667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.333333%}.pull-lg-5{right:41.666667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.333333%}.pull-lg-8{right:66.666667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.333333%}.pull-lg-11{right:91.666667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.333333%}.push-lg-2{left:16.666667%}.push-lg-3{left:25%}.push-lg-4{left:33.333333%}.push-lg-5{left:41.666667%}.push-lg-6{left:50%}.push-lg-7{left:58.333333%}.push-lg-8{left:66.666667%}.push-lg-9{left:75%}.push-lg-10{left:83.333333%}.push-lg-11{left:91.666667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.333333%}.pull-xl-2{right:16.666667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.333333%}.pull-xl-5{right:41.666667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.333333%}.pull-xl-8{right:66.666667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.333333%}.pull-xl-11{right:91.666667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.333333%}.push-xl-2{left:16.666667%}.push-xl-3{left:25%}.push-xl-4{left:33.333333%}.push-xl-5{left:41.666667%}.push-xl-6{left:50%}.push-xl-7{left:58.333333%}.push-xl-8{left:66.666667%}.push-xl-9{left:75%}.push-xl-10{left:83.333333%}.push-xl-11{left:91.666667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.order-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.order-sm-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-sm-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-sm-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-sm-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.order-md-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-md-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-md-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-md-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.order-lg-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-lg-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-lg-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-lg-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.order-xl-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-xl-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-xl-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-xl-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}/*# sourceMappingURL=bootstrap-grid.min.css.map */
\ No newline at end of file +@-ms-viewport{width:device-width}html{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-overflow-style:scrollbar}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}.container{margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container{padding-right:15px;padding-left:15px}}@media (min-width:576px){.container{width:540px;max-width:100%}}@media (min-width:768px){.container{width:720px;max-width:100%}}@media (min-width:992px){.container{width:960px;max-width:100%}}@media (min-width:1200px){.container{width:1140px;max-width:100%}}.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container-fluid{padding-right:15px;padding-left:15px}}.row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}@media (min-width:576px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:768px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:992px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:1200px){.row{margin-right:-15px;margin-left:-15px}}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:768px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:992px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}.col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-1{width:8.333333%}.col-2{width:16.666667%}.col-3{width:25%}.col-4{width:33.333333%}.col-5{width:41.666667%}.col-6{width:50%}.col-7{width:58.333333%}.col-8{width:66.666667%}.col-9{width:75%}.col-10{width:83.333333%}.col-11{width:91.666667%}.col-12{width:100%}.pull-0{right:auto}.pull-1{right:8.333333%}.pull-2{right:16.666667%}.pull-3{right:25%}.pull-4{right:33.333333%}.pull-5{right:41.666667%}.pull-6{right:50%}.pull-7{right:58.333333%}.pull-8{right:66.666667%}.pull-9{right:75%}.pull-10{right:83.333333%}.pull-11{right:91.666667%}.pull-12{right:100%}.push-0{left:auto}.push-1{left:8.333333%}.push-2{left:16.666667%}.push-3{left:25%}.push-4{left:33.333333%}.push-5{left:41.666667%}.push-6{left:50%}.push-7{left:58.333333%}.push-8{left:66.666667%}.push-9{left:75%}.push-10{left:83.333333%}.push-11{left:91.666667%}.push-12{left:100%}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-1{width:8.333333%}.col-sm-2{width:16.666667%}.col-sm-3{width:25%}.col-sm-4{width:33.333333%}.col-sm-5{width:41.666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333%}.col-sm-8{width:66.666667%}.col-sm-9{width:75%}.col-sm-10{width:83.333333%}.col-sm-11{width:91.666667%}.col-sm-12{width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.333333%}.pull-sm-2{right:16.666667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.333333%}.pull-sm-5{right:41.666667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.333333%}.pull-sm-8{right:66.666667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.333333%}.pull-sm-11{right:91.666667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.333333%}.push-sm-2{left:16.666667%}.push-sm-3{left:25%}.push-sm-4{left:33.333333%}.push-sm-5{left:41.666667%}.push-sm-6{left:50%}.push-sm-7{left:58.333333%}.push-sm-8{left:66.666667%}.push-sm-9{left:75%}.push-sm-10{left:83.333333%}.push-sm-11{left:91.666667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-1{width:8.333333%}.col-md-2{width:16.666667%}.col-md-3{width:25%}.col-md-4{width:33.333333%}.col-md-5{width:41.666667%}.col-md-6{width:50%}.col-md-7{width:58.333333%}.col-md-8{width:66.666667%}.col-md-9{width:75%}.col-md-10{width:83.333333%}.col-md-11{width:91.666667%}.col-md-12{width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.333333%}.pull-md-2{right:16.666667%}.pull-md-3{right:25%}.pull-md-4{right:33.333333%}.pull-md-5{right:41.666667%}.pull-md-6{right:50%}.pull-md-7{right:58.333333%}.pull-md-8{right:66.666667%}.pull-md-9{right:75%}.pull-md-10{right:83.333333%}.pull-md-11{right:91.666667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.333333%}.push-md-2{left:16.666667%}.push-md-3{left:25%}.push-md-4{left:33.333333%}.push-md-5{left:41.666667%}.push-md-6{left:50%}.push-md-7{left:58.333333%}.push-md-8{left:66.666667%}.push-md-9{left:75%}.push-md-10{left:83.333333%}.push-md-11{left:91.666667%}.push-md-12{left:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-1{width:8.333333%}.col-lg-2{width:16.666667%}.col-lg-3{width:25%}.col-lg-4{width:33.333333%}.col-lg-5{width:41.666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333%}.col-lg-8{width:66.666667%}.col-lg-9{width:75%}.col-lg-10{width:83.333333%}.col-lg-11{width:91.666667%}.col-lg-12{width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.333333%}.pull-lg-2{right:16.666667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.333333%}.pull-lg-5{right:41.666667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.333333%}.pull-lg-8{right:66.666667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.333333%}.pull-lg-11{right:91.666667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.333333%}.push-lg-2{left:16.666667%}.push-lg-3{left:25%}.push-lg-4{left:33.333333%}.push-lg-5{left:41.666667%}.push-lg-6{left:50%}.push-lg-7{left:58.333333%}.push-lg-8{left:66.666667%}.push-lg-9{left:75%}.push-lg-10{left:83.333333%}.push-lg-11{left:91.666667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-1{width:8.333333%}.col-xl-2{width:16.666667%}.col-xl-3{width:25%}.col-xl-4{width:33.333333%}.col-xl-5{width:41.666667%}.col-xl-6{width:50%}.col-xl-7{width:58.333333%}.col-xl-8{width:66.666667%}.col-xl-9{width:75%}.col-xl-10{width:83.333333%}.col-xl-11{width:91.666667%}.col-xl-12{width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.333333%}.pull-xl-2{right:16.666667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.333333%}.pull-xl-5{right:41.666667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.333333%}.pull-xl-8{right:66.666667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.333333%}.pull-xl-11{right:91.666667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.333333%}.push-xl-2{left:16.666667%}.push-xl-3{left:25%}.push-xl-4{left:33.333333%}.push-xl-5{left:41.666667%}.push-xl-6{left:50%}.push-xl-7{left:58.333333%}.push-xl-8{left:66.666667%}.push-xl-9{left:75%}.push-xl-10{left:83.333333%}.push-xl-11{left:91.666667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.order-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.order-sm-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-sm-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-sm-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-sm-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.order-md-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-md-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-md-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-md-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.order-lg-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-lg-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-lg-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-lg-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.order-xl-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-xl-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-xl-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-xl-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}/*# sourceMappingURL=bootstrap-grid.min.css.map */
\ No newline at end of file diff --git a/library/bootstrap/css/bootstrap-grid.min.css.map b/library/bootstrap/css/bootstrap-grid.min.css.map index 2210b2a68..6750e0e3c 100644 --- a/library/bootstrap/css/bootstrap-grid.min.css.map +++ b/library/bootstrap/css/bootstrap-grid.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/bootstrap-grid.scss","dist/css/bootstrap-grid.css","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/utilities/_flex.scss"],"names":[],"mappings":"AAUE,cAAgB,MAAA,aAGlB,KACE,mBAAA,WAAA,WAAA,WACA,mBAAA,UAGF,ECNA,QADA,SDUE,mBAAA,QAAA,WAAA,QEhBA,WCAA,aAAA,KACA,YAAA,KAKI,cAAA,KACA,aAAA,KC4CF,yBFnDF,WCMI,cAAA,KACA,aAAA,MC4CF,yBFnDF,WCMI,cAAA,KACA,aAAA,MC4CF,yBFnDF,WCMI,cAAA,KACA,aAAA,MC4CF,0BFnDF,WCMI,cAAA,KACA,aAAA,MC4CF,yBFnDF,WCiBI,MAAA,MACA,UAAA,MCiCF,yBFnDF,WCiBI,MAAA,MACA,UAAA,MCiCF,yBFnDF,WCiBI,MAAA,MACA,UAAA,MCiCF,0BFnDF,WCiBI,MAAA,OACA,UAAA,MDNJ,iBCZA,aAAA,KACA,YAAA,KAKI,cAAA,KACA,aAAA,KC4CF,yBFvCF,iBCNI,cAAA,KACA,aAAA,MC4CF,yBFvCF,iBCNI,cAAA,KACA,aAAA,MC4CF,yBFvCF,iBCNI,cAAA,KACA,aAAA,MC4CF,0BFvCF,iBCNI,cAAA,KACA,aAAA,MDeJ,KCYA,QAAA,YAAA,QAAA,aAAA,QAAA,YAAA,QAAA,KACA,kBAAA,KAAA,cAAA,KAAA,UAAA,KAKI,aAAA,MACA,YAAA,MCUF,yBF7BF,KCkBI,aAAA,MACA,YAAA,OCUF,yBF7BF,KCkBI,aAAA,MACA,YAAA,OCUF,yBF7BF,KCkBI,aAAA,MACA,YAAA,OCUF,0BF7BF,KCkBI,aAAA,MACA,YAAA,ODbJ,YACE,aAAA,EACA,YAAA,EAFF,iBDgIF,0BC1HM,cAAA,EACA,aAAA,EGjCJ,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OJgKF,UAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFkJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACnG,aAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aInKI,SAAA,SACA,MAAA,KACA,WAAA,IFsBE,cAAA,KACA,aAAA,KCuBF,yBCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OJ8KA,UAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFkJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACnG,aAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aEzJI,cAAA,KACA,aAAA,MCuBF,yBCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OJ0LA,UAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFkJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACnG,aAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aErKI,cAAA,KACA,aAAA,MCuBF,yBCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OJsMA,UAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFkJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACnG,aAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aEjLI,cAAA,KACA,aAAA,MCuBF,0BCjDF,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OJkNA,UAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFkJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACnG,aAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aE7LI,cAAA,KACA,aAAA,MEFA,KACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,UACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,OF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UEhCM,OF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,OF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,OF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,OF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,OF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,OF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,OF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,OF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,QF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,QF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,QF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KEzBQ,QFqCR,MAAA,KErCQ,QFqCR,MAAA,UErCQ,QFqCR,MAAA,WErCQ,QFqCR,MAAA,IErCQ,QFqCR,MAAA,WErCQ,QFqCR,MAAA,WErCQ,QFqCR,MAAA,IErCQ,QFqCR,MAAA,WErCQ,QFqCR,MAAA,WErCQ,QFqCR,MAAA,IErCQ,SFqCR,MAAA,WErCQ,SFqCR,MAAA,WErCQ,SFqCR,MAAA,KErCQ,QFiCR,KAAA,KEjCQ,QFiCR,KAAA,UEjCQ,QFiCR,KAAA,WEjCQ,QFiCR,KAAA,IEjCQ,QFiCR,KAAA,WEjCQ,QFiCR,KAAA,WEjCQ,QFiCR,KAAA,IEjCQ,QFiCR,KAAA,WEjCQ,QFiCR,KAAA,WEjCQ,QFiCR,KAAA,IEjCQ,SFiCR,KAAA,WEjCQ,SFiCR,KAAA,WEjCQ,SFiCR,KAAA,KExBQ,UFoBR,YAAA,UEpBQ,UFoBR,YAAA,WEpBQ,UFoBR,YAAA,IEpBQ,UFoBR,YAAA,WEpBQ,UFoBR,YAAA,WEpBQ,UFoBR,YAAA,IEpBQ,UFoBR,YAAA,WEpBQ,UFoBR,YAAA,WEpBQ,UFoBR,YAAA,IEpBQ,WFoBR,YAAA,WEpBQ,WFoBR,YAAA,WCtBE,yBCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KEzBQ,WFqCR,MAAA,KErCQ,WFqCR,MAAA,UErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,YFqCR,MAAA,WErCQ,YFqCR,MAAA,WErCQ,YFqCR,MAAA,KErCQ,WFiCR,KAAA,KEjCQ,WFiCR,KAAA,UEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,YFiCR,KAAA,WEjCQ,YFiCR,KAAA,WEjCQ,YFiCR,KAAA,KExBQ,aFoBR,YAAA,EEpBQ,aFoBR,YAAA,UEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,cFoBR,YAAA,WEpBQ,cFoBR,YAAA,YCtBE,yBCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KEzBQ,WFqCR,MAAA,KErCQ,WFqCR,MAAA,UErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,YFqCR,MAAA,WErCQ,YFqCR,MAAA,WErCQ,YFqCR,MAAA,KErCQ,WFiCR,KAAA,KEjCQ,WFiCR,KAAA,UEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,YFiCR,KAAA,WEjCQ,YFiCR,KAAA,WEjCQ,YFiCR,KAAA,KExBQ,aFoBR,YAAA,EEpBQ,aFoBR,YAAA,UEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,cFoBR,YAAA,WEpBQ,cFoBR,YAAA,YCtBE,yBCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KEzBQ,WFqCR,MAAA,KErCQ,WFqCR,MAAA,UErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,YFqCR,MAAA,WErCQ,YFqCR,MAAA,WErCQ,YFqCR,MAAA,KErCQ,WFiCR,KAAA,KEjCQ,WFiCR,KAAA,UEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,YFiCR,KAAA,WEjCQ,YFiCR,KAAA,WEjCQ,YFiCR,KAAA,KExBQ,aFoBR,YAAA,EEpBQ,aFoBR,YAAA,UEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,cFoBR,YAAA,WEpBQ,cFoBR,YAAA,YCtBE,0BCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,UAAA,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAKA,UAAA,UEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,UF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,IAAA,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAKA,UAAA,IEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,WAAA,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAKA,UAAA,WEhCM,WF2BN,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAKA,UAAA,KEzBQ,WFqCR,MAAA,KErCQ,WFqCR,MAAA,UErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,WErCQ,WFqCR,MAAA,IErCQ,YFqCR,MAAA,WErCQ,YFqCR,MAAA,WErCQ,YFqCR,MAAA,KErCQ,WFiCR,KAAA,KEjCQ,WFiCR,KAAA,UEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,WEjCQ,WFiCR,KAAA,IEjCQ,YFiCR,KAAA,WEjCQ,YFiCR,KAAA,WEjCQ,YFiCR,KAAA,KExBQ,aFoBR,YAAA,EEpBQ,aFoBR,YAAA,UEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,WEpBQ,aFoBR,YAAA,IEpBQ,cFoBR,YAAA,WEpBQ,cFoBR,YAAA,YGtEE,aAAwB,0BAAA,EAAA,cAAA,GAAA,eAAA,GAAA,MAAA,GACxB,YAAwB,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EACxB,SAAwB,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAExB,UAAgC,mBAAA,qBAAA,sBAAA,iBAAA,uBAAA,cAAA,mBAAA,cAAA,eAAA,cAChC,aAAgC,mBAAA,mBAAA,sBAAA,iBAAA,uBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,kBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,uBAAA,sBAAA,mBAAA,sBAAA,eAAA,sBAChC,qBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,uBAAA,yBAAA,mBAAA,yBAAA,eAAA,yBAEhC,WAA8B,kBAAA,eAAA,cAAA,eAAA,UAAA,eAC9B,aAA8B,kBAAA,iBAAA,cAAA,iBAAA,UAAA,iBAC9B,mBAA8B,kBAAA,uBAAA,cAAA,uBAAA,UAAA,uBAE9B,uBAAoC,iBAAA,gBAAA,wBAAA,qBAAA,cAAA,gBAAA,gBAAA,qBACpC,qBAAoC,iBAAA,cAAA,wBAAA,mBAAA,cAAA,cAAA,gBAAA,mBACpC,wBAAoC,iBAAA,iBAAA,wBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,yBAAoC,iBAAA,kBAAA,wBAAA,wBAAA,cAAA,kBAAA,gBAAA,wBACpC,wBAAoC,wBAAA,uBAAA,cAAA,qBAAA,gBAAA,uBAEpC,mBAAiC,kBAAA,gBAAA,oBAAA,qBAAA,eAAA,gBAAA,YAAA,qBACjC,iBAAiC,kBAAA,cAAA,oBAAA,mBAAA,eAAA,cAAA,YAAA,mBACjC,oBAAiC,kBAAA,iBAAA,oBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,sBAAiC,kBAAA,mBAAA,oBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,qBAAiC,kBAAA,kBAAA,oBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,qBAAkC,sBAAA,qBAAA,mBAAA,gBAAA,cAAA,qBAClC,mBAAkC,sBAAA,mBAAA,mBAAA,cAAA,cAAA,mBAClC,sBAAkC,sBAAA,iBAAA,mBAAA,iBAAA,cAAA,iBAClC,uBAAkC,sBAAA,wBAAA,mBAAA,kBAAA,cAAA,wBAClC,sBAAkC,sBAAA,uBAAA,mBAAA,qBAAA,cAAA,uBAClC,uBAAkC,sBAAA,kBAAA,mBAAA,kBAAA,cAAA,kBAElC,iBAAgC,mBAAA,eAAA,oBAAA,eAAA,mBAAA,eAAA,WAAA,eAChC,kBAAgC,mBAAA,qBAAA,oBAAA,gBAAA,WAAA,qBAChC,gBAAgC,mBAAA,mBAAA,oBAAA,cAAA,WAAA,mBAChC,mBAAgC,mBAAA,iBAAA,oBAAA,iBAAA,mBAAA,iBAAA,WAAA,iBAChC,qBAAgC,mBAAA,mBAAA,oBAAA,mBAAA,WAAA,mBAChC,oBAAgC,mBAAA,kBAAA,oBAAA,kBAAA,mBAAA,kBAAA,WAAA,kBFWhC,yBEhDA,gBAAwB,0BAAA,EAAA,cAAA,GAAA,eAAA,GAAA,MAAA,GACxB,eAAwB,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EACxB,YAAwB,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAExB,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,uBAAA,cAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,uBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,uBAAA,sBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,uBAAA,yBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,kBAAA,eAAA,cAAA,eAAA,UAAA,eAC9B,gBAA8B,kBAAA,iBAAA,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,kBAAA,uBAAA,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,wBAAA,qBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,wBAAA,mBAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,wBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,wBAAA,wBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,wBAAA,uBAAA,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,oBAAA,qBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,oBAAA,mBAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,oBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,oBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,oBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,sBAAA,qBAAA,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,sBAAA,mBAAA,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,sBAAA,iBAAA,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,sBAAA,wBAAA,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,sBAAA,uBAAA,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,sBAAA,kBAAA,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,mBAAA,eAAA,oBAAA,eAAA,mBAAA,eAAA,WAAA,eAChC,qBAAgC,mBAAA,qBAAA,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,mBAAA,mBAAA,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,mBAAA,iBAAA,oBAAA,iBAAA,mBAAA,iBAAA,WAAA,iBAChC,wBAAgC,mBAAA,mBAAA,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,mBAAA,kBAAA,oBAAA,kBAAA,mBAAA,kBAAA,WAAA,mBFWhC,yBEhDA,gBAAwB,0BAAA,EAAA,cAAA,GAAA,eAAA,GAAA,MAAA,GACxB,eAAwB,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EACxB,YAAwB,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAExB,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,uBAAA,cAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,uBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,uBAAA,sBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,uBAAA,yBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,kBAAA,eAAA,cAAA,eAAA,UAAA,eAC9B,gBAA8B,kBAAA,iBAAA,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,kBAAA,uBAAA,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,wBAAA,qBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,wBAAA,mBAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,wBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,wBAAA,wBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,wBAAA,uBAAA,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,oBAAA,qBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,oBAAA,mBAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,oBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,oBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,oBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,sBAAA,qBAAA,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,sBAAA,mBAAA,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,sBAAA,iBAAA,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,sBAAA,wBAAA,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,sBAAA,uBAAA,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,sBAAA,kBAAA,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,mBAAA,eAAA,oBAAA,eAAA,mBAAA,eAAA,WAAA,eAChC,qBAAgC,mBAAA,qBAAA,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,mBAAA,mBAAA,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,mBAAA,iBAAA,oBAAA,iBAAA,mBAAA,iBAAA,WAAA,iBAChC,wBAAgC,mBAAA,mBAAA,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,mBAAA,kBAAA,oBAAA,kBAAA,mBAAA,kBAAA,WAAA,mBFWhC,yBEhDA,gBAAwB,0BAAA,EAAA,cAAA,GAAA,eAAA,GAAA,MAAA,GACxB,eAAwB,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EACxB,YAAwB,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAExB,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,uBAAA,cAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,uBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,uBAAA,sBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,uBAAA,yBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,kBAAA,eAAA,cAAA,eAAA,UAAA,eAC9B,gBAA8B,kBAAA,iBAAA,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,kBAAA,uBAAA,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,wBAAA,qBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,wBAAA,mBAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,wBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,wBAAA,wBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,wBAAA,uBAAA,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,oBAAA,qBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,oBAAA,mBAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,oBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,oBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,oBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,sBAAA,qBAAA,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,sBAAA,mBAAA,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,sBAAA,iBAAA,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,sBAAA,wBAAA,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,sBAAA,uBAAA,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,sBAAA,kBAAA,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,mBAAA,eAAA,oBAAA,eAAA,mBAAA,eAAA,WAAA,eAChC,qBAAgC,mBAAA,qBAAA,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,mBAAA,mBAAA,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,mBAAA,iBAAA,oBAAA,iBAAA,mBAAA,iBAAA,WAAA,iBAChC,wBAAgC,mBAAA,mBAAA,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,mBAAA,kBAAA,oBAAA,kBAAA,mBAAA,kBAAA,WAAA,mBFWhC,0BEhDA,gBAAwB,0BAAA,EAAA,cAAA,GAAA,eAAA,GAAA,MAAA,GACxB,eAAwB,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EACxB,YAAwB,0BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,MAAA,EAExB,aAAgC,mBAAA,qBAAA,sBAAA,iBAAA,uBAAA,cAAA,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,mBAAA,sBAAA,iBAAA,uBAAA,iBAAA,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,qBAAA,sBAAA,kBAAA,uBAAA,sBAAA,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,mBAAA,sBAAA,kBAAA,uBAAA,yBAAA,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,kBAAA,eAAA,cAAA,eAAA,UAAA,eAC9B,gBAA8B,kBAAA,iBAAA,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,kBAAA,uBAAA,cAAA,uBAAA,UAAA,uBAE9B,0BAAoC,iBAAA,gBAAA,wBAAA,qBAAA,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,iBAAA,cAAA,wBAAA,mBAAA,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,iBAAA,iBAAA,wBAAA,iBAAA,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,iBAAA,kBAAA,wBAAA,wBAAA,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,wBAAA,uBAAA,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,kBAAA,gBAAA,oBAAA,qBAAA,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,kBAAA,cAAA,oBAAA,mBAAA,eAAA,cAAA,YAAA,mBACjC,uBAAiC,kBAAA,iBAAA,oBAAA,iBAAA,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,kBAAA,mBAAA,oBAAA,mBAAA,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,kBAAA,kBAAA,oBAAA,kBAAA,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,sBAAA,qBAAA,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,sBAAA,mBAAA,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,sBAAA,iBAAA,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,sBAAA,wBAAA,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,sBAAA,uBAAA,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,sBAAA,kBAAA,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,mBAAA,eAAA,oBAAA,eAAA,mBAAA,eAAA,WAAA,eAChC,qBAAgC,mBAAA,qBAAA,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,mBAAA,mBAAA,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,mBAAA,iBAAA,oBAAA,iBAAA,mBAAA,iBAAA,WAAA,iBAChC,wBAAgC,mBAAA,mBAAA,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,mBAAA,kBAAA,oBAAA,kBAAA,mBAAA,kBAAA,WAAA"}
\ No newline at end of file +{"version":3,"sources":["../../scss/bootstrap-grid.scss","dist/css/bootstrap-grid.css","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/utilities/_flex.scss"],"names":[],"mappings":"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F4BR,KAAA,WE5BQ,QF4BR,KAAA,IE5BQ,QF4BR,KAAA,WE5BQ,QF4BR,KAAA,WE5BQ,QF4BR,KAAA,IE5BQ,SF4BR,KAAA,WE5BQ,SF4BR,KAAA,WE5BQ,SF4BR,KAAA,KEnBQ,UFeR,YAAA,UEfQ,UFeR,YAAA,WEfQ,UFeR,YAAA,IEfQ,UFeR,YAAA,WEfQ,UFeR,YAAA,WEfQ,UFeR,YAAA,IEfQ,UFeR,YAAA,WEfQ,UFeR,YAAA,WEfQ,UFeR,YAAA,IEfQ,WFeR,YAAA,WEfQ,WFeR,YAAA,WCjBE,yBCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF2BN,MAAA,UE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,KEpBQ,WFgCR,MAAA,KEhCQ,WFgCR,MAAA,UEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,KEhCQ,WF4BR,KAAA,KE5BQ,WF4BR,KAAA,UE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,KEnBQ,aFeR,YAAA,EEfQ,aFeR,YAAA,UEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,cFeR,YAAA,WEfQ,cFeR,YAAA,YCjBE,yBCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF2BN,MAAA,UE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,KEpBQ,WFgCR,MAAA,KEhCQ,WFgCR,MAAA,UEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,KEhCQ,WF4BR,KAAA,KE5BQ,WF4BR,KAAA,UE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,KEnBQ,aFeR,YAAA,EEfQ,aFeR,YAAA,UEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,cFeR,YAAA,WEfQ,cFeR,YAAA,YCjBE,yBCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF2BN,MAAA,UE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,KEpBQ,WFgCR,MAAA,KEhCQ,WFgCR,MAAA,UEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,KEhCQ,WF4BR,KAAA,KE5BQ,WF4BR,KAAA,UE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,KEnBQ,aFeR,YAAA,EEfQ,aFeR,YAAA,UEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,cFeR,YAAA,WEfQ,cFeR,YAAA,YCjBE,0BCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF2BN,MAAA,UE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,U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"}
\ No newline at end of file diff --git a/library/bootstrap/css/bootstrap-reboot.css b/library/bootstrap/css/bootstrap-reboot.css index 6509cf5b2..8216b6eb2 100644 --- a/library/bootstrap/css/bootstrap-reboot.css +++ b/library/bootstrap/css/bootstrap-reboot.css @@ -22,7 +22,7 @@ html { body { margin: 0; - font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 1rem; font-weight: normal; line-height: 1.5; diff --git a/library/bootstrap/css/bootstrap-reboot.css.map b/library/bootstrap/css/bootstrap-reboot.css.map index 04f3a70f7..f04b54c86 100644 --- a/library/bootstrap/css/bootstrap-reboot.css.map +++ b/library/bootstrap/css/bootstrap-reboot.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/_reboot.scss","bootstrap-reboot.css","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"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","file":"bootstrap-reboot.css","sourcesContent":[null,"html {\n box-sizing: border-box;\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #292b2c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #636c72;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"radio\"]:disabled,\ninput[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */",null,null]}
\ No newline at end of file +{"version":3,"sources":["../../scss/_reboot.scss","bootstrap-reboot.css","../../scss/_variables.scss","../../scss/mixins/_hover.scss"],"names":[],"mappings":"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","file":"bootstrap-reboot.css","sourcesContent":[null,"html {\n box-sizing: border-box;\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #292b2c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #636c72;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"radio\"]:disabled,\ninput[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */",null,null]}
\ No newline at end of file diff --git a/library/bootstrap/css/bootstrap-reboot.min.css b/library/bootstrap/css/bootstrap-reboot.min.css index c39472e73..8aa58abe6 100644 --- a/library/bootstrap/css/bootstrap-reboot.min.css +++ b/library/bootstrap/css/bootstrap-reboot.min.css @@ -1 +1 @@ -html{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}body{margin:0;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0275d8;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */
\ No newline at end of file +html{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0275d8;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}/*# sourceMappingURL=bootstrap-reboot.min.css.map */
\ No newline at end of file diff --git a/library/bootstrap/css/bootstrap-reboot.min.css.map b/library/bootstrap/css/bootstrap-reboot.min.css.map index a99e82ef6..7c627bc9a 100644 --- a/library/bootstrap/css/bootstrap-reboot.min.css.map +++ b/library/bootstrap/css/bootstrap-reboot.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/_reboot.scss","dist/css/bootstrap-reboot.css","bootstrap-reboot.css","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAoBA,KACE,mBAAA,WAAA,WAAA,WACA,YAAA,WACA,YAAA,KACA,yBAAA,KACA,qBAAA,KACA,mBAAA,UACA,4BAAA,YAGF,ECjBA,QADA,SDqBE,mBAAA,QAAA,WAAA,QAKA,cAAgB,MAAA,aASlB,KACE,OAAA,EACA,YAAA,aAAA,CAAA,SAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KExBF,sBFiCE,QAAA,YASF,GACE,mBAAA,YAAA,WAAA,YACA,OAAA,EACA,SAAA,QAYF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAOF,EACE,WAAA,EACA,cAAA,KC5CF,0BDsDA,YAEE,gBAAA,UACA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QClDF,GDqDA,GCtDA,GDyDE,WAAA,EACA,cAAA,KAGF,MCrDA,MACA,MAFA,MD0DE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,IACE,WAAA,OAGF,ECtDA,ODwDE,YAAA,OAGF,MACE,UAAA,IAQF,IC3DA,ID6DE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YACA,6BAAA,QGhLE,QHmLA,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KGrLE,oCAAA,oCHwLA,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,EC7DJ,KACA,IDqEA,ICpEA,KDwEE,YAAA,SAAA,CAAA,UACA,UAAA,IAGF,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,eACE,SAAA,OC/EF,cD6FA,EC/FA,KACA,OAEA,MACA,MACA,OACA,QACA,SDiGE,iBAAA,aAAA,aAAA,aAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAEE,WAAA,KAQF,MAEE,QAAA,aACA,cAAA,MAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBC3GF,OD8GA,MC5GA,SADA,OAEA,SDgHE,OAAA,EACA,YAAA,QACA,UAAA,QACA,YAAA,QAGF,OC9GA,MDgHE,SAAA,QAGF,OC9GA,ODgHE,eAAA,KC1GF,aACA,cD+GA,OCjHA,mBDqHE,mBAAA,OC9GF,gCACA,+BACA,gCDgHA,yBAIE,QAAA,EACA,aAAA,KC/GF,qBDkHA,kBAEE,mBAAA,WAAA,WAAA,WACA,QAAA,EC9GF,8BD2GA,2BASI,OAAA,YAKJ,iBCnHA,2BACA,kBAFA,iBD6HE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SErIF,yCDMA,yCDqIE,OAAA,KEtIF,cF8IE,eAAA,KACA,mBAAA,KE1IF,4CDMA,yCD6IE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UAGF,SACE,QAAA,KEvJF,SF6JE,QAAA"}
\ No newline at end of file +{"version":3,"sources":["../../scss/_reboot.scss","dist/css/bootstrap-reboot.css","bootstrap-reboot.css","../../scss/mixins/_hover.scss"],"names":[],"mappings":"AAoBA,KACE,mBAAA,WAAA,WAAA,WACA,YAAA,WACA,YAAA,KACA,yBAAA,KACA,qBAAA,KACA,mBAAA,UACA,4BAAA,YAGF,ECjBA,QADA,SDqBE,mBAAA,QAAA,WAAA,QAKA,cAAgB,MAAA,aASlB,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KExBF,sBFiCE,QAAA,YASF,GACE,mBAAA,YAAA,WAAA,YACA,OAAA,EACA,SAAA,QAYF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAOF,EACE,WAAA,EACA,cAAA,KC5CF,0BDsDA,YAEE,gBAAA,UACA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QClDF,GDqDA,GCtDA,GDyDE,WAAA,EACA,cAAA,KAGF,MCrDA,MACA,MAFA,MD0DE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,IACE,WAAA,OAGF,ECtDA,ODwDE,YAAA,OAGF,MACE,UAAA,IAQF,IC3DA,ID6DE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YACA,6BAAA,QGhLE,QHmLA,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KGrLE,oCAAA,oCHwLA,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,EC7DJ,KACA,IDqEA,ICpEA,KDwEE,YAAA,SAAA,CAAA,UACA,UAAA,IAGF,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,eACE,SAAA,OC/EF,cD6FA,EC/FA,KACA,OAEA,MACA,MACA,OACA,QACA,SDiGE,iBAAA,aAAA,aAAA,aAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAEE,WAAA,KAQF,MAEE,QAAA,aACA,cAAA,MAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBC3GF,OD8GA,MC5GA,SADA,OAEA,SDgHE,OAAA,EACA,YAAA,QACA,UAAA,QACA,YAAA,QAGF,OC9GA,MDgHE,SAAA,QAGF,OC9GA,ODgHE,eAAA,KC1GF,aACA,cD+GA,OCjHA,mBDqHE,mBAAA,OC9GF,gCACA,+BACA,gCDgHA,yBAIE,QAAA,EACA,aAAA,KC/GF,qBDkHA,kBAEE,mBAAA,WAAA,WAAA,WACA,QAAA,EC9GF,8BD2GA,2BASI,OAAA,YAKJ,iBCnHA,2BACA,kBAFA,iBD6HE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SErIF,yCDMA,yCDqIE,OAAA,KEtIF,cF8IE,eAAA,KACA,mBAAA,KE1IF,4CDMA,yCD6IE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UAGF,SACE,QAAA,KEvJF,SF6JE,QAAA"}
\ No newline at end of file diff --git a/library/bootstrap/css/bootstrap.css b/library/bootstrap/css/bootstrap.css index a579723ea..2c4e30b07 100644 --- a/library/bootstrap/css/bootstrap.css +++ b/library/bootstrap/css/bootstrap.css @@ -95,7 +95,7 @@ html { body { margin: 0; - font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 1rem; font-weight: normal; line-height: 1.5; @@ -693,6 +693,7 @@ pre code { } .container-fluid { + width: 100%; margin-right: auto; margin-left: auto; padding-right: 15px; @@ -859,99 +860,51 @@ pre code { } .col-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.333333%; - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; + width: 8.333333%; } .col-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.666667%; - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; + width: 16.666667%; } .col-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; + width: 25%; } .col-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.333333%; - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; + width: 33.333333%; } .col-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.666667%; - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; + width: 41.666667%; } .col-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; + width: 50%; } .col-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.333333%; - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; + width: 58.333333%; } .col-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.666667%; - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; + width: 66.666667%; } .col-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; + width: 75%; } .col-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.333333%; - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; + width: 83.333333%; } .col-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.666667%; - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; + width: 91.666667%; } .col-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; + width: 100%; } .pull-0 { @@ -1121,88 +1074,40 @@ pre code { width: auto; } .col-sm-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.333333%; - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; + width: 8.333333%; } .col-sm-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.666667%; - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; + width: 16.666667%; } .col-sm-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; + width: 25%; } .col-sm-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.333333%; - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; + width: 33.333333%; } .col-sm-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.666667%; - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; + width: 41.666667%; } .col-sm-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; + width: 50%; } .col-sm-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.333333%; - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; + width: 58.333333%; } .col-sm-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.666667%; - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; + width: 66.666667%; } .col-sm-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; + width: 75%; } .col-sm-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.333333%; - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; + width: 83.333333%; } .col-sm-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.666667%; - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; + width: 91.666667%; } .col-sm-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; + width: 100%; } .pull-sm-0 { right: auto; @@ -1339,88 +1244,40 @@ pre code { width: auto; } .col-md-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.333333%; - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; + width: 8.333333%; } .col-md-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.666667%; - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; + width: 16.666667%; } .col-md-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; + width: 25%; } .col-md-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.333333%; - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; + width: 33.333333%; } .col-md-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.666667%; - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; + width: 41.666667%; } .col-md-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; + width: 50%; } .col-md-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.333333%; - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; + width: 58.333333%; } .col-md-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.666667%; - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; + width: 66.666667%; } .col-md-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; + width: 75%; } .col-md-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.333333%; - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; + width: 83.333333%; } .col-md-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.666667%; - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; + width: 91.666667%; } .col-md-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; + width: 100%; } .pull-md-0 { right: auto; @@ -1557,88 +1414,40 @@ pre code { width: auto; } .col-lg-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.333333%; - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; + width: 8.333333%; } .col-lg-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.666667%; - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; + width: 16.666667%; } .col-lg-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; + width: 25%; } .col-lg-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.333333%; - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; + width: 33.333333%; } .col-lg-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.666667%; - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; + width: 41.666667%; } .col-lg-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; + width: 50%; } .col-lg-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.333333%; - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; + width: 58.333333%; } .col-lg-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.666667%; - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; + width: 66.666667%; } .col-lg-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; + width: 75%; } .col-lg-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.333333%; - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; + width: 83.333333%; } .col-lg-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.666667%; - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; + width: 91.666667%; } .col-lg-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; + width: 100%; } .pull-lg-0 { right: auto; @@ -1775,88 +1584,40 @@ pre code { width: auto; } .col-xl-1 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 8.333333%; - -ms-flex: 0 0 8.333333%; - flex: 0 0 8.333333%; - max-width: 8.333333%; + width: 8.333333%; } .col-xl-2 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 16.666667%; - -ms-flex: 0 0 16.666667%; - flex: 0 0 16.666667%; - max-width: 16.666667%; + width: 16.666667%; } .col-xl-3 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 25%; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; + width: 25%; } .col-xl-4 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 33.333333%; - -ms-flex: 0 0 33.333333%; - flex: 0 0 33.333333%; - max-width: 33.333333%; + width: 33.333333%; } .col-xl-5 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 41.666667%; - -ms-flex: 0 0 41.666667%; - flex: 0 0 41.666667%; - max-width: 41.666667%; + width: 41.666667%; } .col-xl-6 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 50%; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; + width: 50%; } .col-xl-7 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 58.333333%; - -ms-flex: 0 0 58.333333%; - flex: 0 0 58.333333%; - max-width: 58.333333%; + width: 58.333333%; } .col-xl-8 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 66.666667%; - -ms-flex: 0 0 66.666667%; - flex: 0 0 66.666667%; - max-width: 66.666667%; + width: 66.666667%; } .col-xl-9 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 75%; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; + width: 75%; } .col-xl-10 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 83.333333%; - -ms-flex: 0 0 83.333333%; - flex: 0 0 83.333333%; - max-width: 83.333333%; + width: 83.333333%; } .col-xl-11 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 91.666667%; - -ms-flex: 0 0 91.666667%; - flex: 0 0 91.666667%; - max-width: 91.666667%; + width: 91.666667%; } .col-xl-12 { - -webkit-box-flex: 0; - -webkit-flex: 0 0 100%; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; + width: 100%; } .pull-xl-0 { right: auto; @@ -3070,6 +2831,10 @@ tbody.collapse.show { border-left: 0.3em solid transparent; } +.dropdown-toggle:empty::after { + margin-left: 0; +} + .dropup .dropdown-toggle::after { border-top: 0; border-bottom: 0.3em solid; @@ -3106,7 +2871,7 @@ tbody.collapse.show { .dropdown-item { display: block; width: 100%; - padding: 3px 1.5rem; + padding: 0.25rem 1.5rem; clear: both; font-weight: normal; color: #292b2c; @@ -3275,11 +3040,6 @@ tbody.collapse.show { border-bottom-left-radius: 0; } -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} - .btn + .dropdown-toggle-split { padding-right: 0.75rem; padding-left: 0.75rem; @@ -3794,7 +3554,7 @@ tbody.collapse.show { } .nav-pills .nav-link.active, -.nav-pills .nav-item.show .nav-link { +.show .nav-pills .nav-link { color: #fff; background-color: #0275d8; } @@ -3835,6 +3595,10 @@ tbody.collapse.show { -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; @@ -3851,6 +3615,10 @@ tbody.collapse.show { -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -ms-flex-pack: justify; @@ -3868,9 +3636,6 @@ tbody.collapse.show { .navbar-brand { display: inline-block; - -webkit-align-self: flex-start; - -ms-flex-item-align: start; - align-self: flex-start; padding-top: 0.3125rem; padding-bottom: 0.3125rem; margin-right: 1rem; @@ -3916,9 +3681,6 @@ tbody.collapse.show { } .navbar-toggler { - -webkit-align-self: flex-start; - -ms-flex-item-align: start; - align-self: flex-start; padding: 0.25rem 0.75rem; font-size: 1.25rem; line-height: 1; @@ -3964,10 +3726,6 @@ tbody.collapse.show { -webkit-flex-wrap: nowrap; -ms-flex-wrap: nowrap; flex-wrap: nowrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -webkit-box-pack: start; -webkit-justify-content: flex-start; -ms-flex-pack: start; @@ -3980,6 +3738,9 @@ tbody.collapse.show { -ms-flex-direction: row; flex-direction: row; } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } .navbar-expand-sm .navbar-nav .nav-link { padding-right: .5rem; padding-left: .5rem; @@ -3989,10 +3750,6 @@ tbody.collapse.show { -webkit-flex-wrap: nowrap; -ms-flex-wrap: nowrap; flex-wrap: nowrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; } .navbar-expand-sm .navbar-collapse { display: -webkit-box !important; @@ -4027,10 +3784,6 @@ tbody.collapse.show { -webkit-flex-wrap: nowrap; -ms-flex-wrap: nowrap; flex-wrap: nowrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -webkit-box-pack: start; -webkit-justify-content: flex-start; -ms-flex-pack: start; @@ -4043,6 +3796,9 @@ tbody.collapse.show { -ms-flex-direction: row; flex-direction: row; } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } .navbar-expand-md .navbar-nav .nav-link { padding-right: .5rem; padding-left: .5rem; @@ -4052,10 +3808,6 @@ tbody.collapse.show { -webkit-flex-wrap: nowrap; -ms-flex-wrap: nowrap; flex-wrap: nowrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; } .navbar-expand-md .navbar-collapse { display: -webkit-box !important; @@ -4090,10 +3842,6 @@ tbody.collapse.show { -webkit-flex-wrap: nowrap; -ms-flex-wrap: nowrap; flex-wrap: nowrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -webkit-box-pack: start; -webkit-justify-content: flex-start; -ms-flex-pack: start; @@ -4106,6 +3854,9 @@ tbody.collapse.show { -ms-flex-direction: row; flex-direction: row; } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } .navbar-expand-lg .navbar-nav .nav-link { padding-right: .5rem; padding-left: .5rem; @@ -4115,10 +3866,6 @@ tbody.collapse.show { -webkit-flex-wrap: nowrap; -ms-flex-wrap: nowrap; flex-wrap: nowrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; } .navbar-expand-lg .navbar-collapse { display: -webkit-box !important; @@ -4153,10 +3900,6 @@ tbody.collapse.show { -webkit-flex-wrap: nowrap; -ms-flex-wrap: nowrap; flex-wrap: nowrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -webkit-box-pack: start; -webkit-justify-content: flex-start; -ms-flex-pack: start; @@ -4169,6 +3912,9 @@ tbody.collapse.show { -ms-flex-direction: row; flex-direction: row; } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } .navbar-expand-xl .navbar-nav .nav-link { padding-right: .5rem; padding-left: .5rem; @@ -4178,10 +3924,6 @@ tbody.collapse.show { -webkit-flex-wrap: nowrap; -ms-flex-wrap: nowrap; flex-wrap: nowrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; } .navbar-expand-xl .navbar-collapse { display: -webkit-box !important; @@ -4203,10 +3945,6 @@ tbody.collapse.show { -webkit-flex-wrap: nowrap; -ms-flex-wrap: nowrap; flex-wrap: nowrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; -webkit-box-pack: start; -webkit-justify-content: flex-start; -ms-flex-pack: start; @@ -4232,6 +3970,10 @@ tbody.collapse.show { flex-direction: row; } +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} + .navbar-expand .navbar-nav .nav-link { padding-right: .5rem; padding-left: .5rem; @@ -4242,10 +3984,6 @@ tbody.collapse.show { -webkit-flex-wrap: nowrap; -ms-flex-wrap: nowrap; flex-wrap: nowrap; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; } .navbar-expand .navbar-collapse { @@ -4279,9 +4017,9 @@ tbody.collapse.show { color: rgba(0, 0, 0, 0.3); } -.navbar-light .navbar-nav .open > .nav-link, +.navbar-light .navbar-nav .show > .nav-link, .navbar-light .navbar-nav .active > .nav-link, -.navbar-light .navbar-nav .nav-link.open, +.navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .nav-link.active { color: rgba(0, 0, 0, 0.9); } @@ -4319,9 +4057,9 @@ tbody.collapse.show { color: rgba(255, 255, 255, 0.25); } -.navbar-inverse .navbar-nav .open > .nav-link, +.navbar-inverse .navbar-nav .show > .nav-link, .navbar-inverse .navbar-nav .active > .nav-link, -.navbar-inverse .navbar-nav .nav-link.open, +.navbar-inverse .navbar-nav .nav-link.show, .navbar-inverse .navbar-nav .nav-link.active { color: white; } @@ -4482,31 +4220,67 @@ tbody.collapse.show { border-color: #0275d8; } +.card-outline-primary .card-header, +.card-outline-primary .card-footer { + background-color: transparent; + border-color: #0275d8; +} + .card-outline-secondary { background-color: transparent; border-color: #ccc; } +.card-outline-secondary .card-header, +.card-outline-secondary .card-footer { + background-color: transparent; + border-color: #ccc; +} + .card-outline-info { background-color: transparent; border-color: #5bc0de; } +.card-outline-info .card-header, +.card-outline-info .card-footer { + background-color: transparent; + border-color: #5bc0de; +} + .card-outline-success { background-color: transparent; border-color: #5cb85c; } +.card-outline-success .card-header, +.card-outline-success .card-footer { + background-color: transparent; + border-color: #5cb85c; +} + .card-outline-warning { background-color: transparent; border-color: #f0ad4e; } +.card-outline-warning .card-header, +.card-outline-warning .card-footer { + background-color: transparent; + border-color: #f0ad4e; +} + .card-outline-danger { background-color: transparent; border-color: #d9534f; } +.card-outline-danger .card-header, +.card-outline-danger .card-footer { + background-color: transparent; + border-color: #d9534f; +} + .card-inverse { color: rgba(255, 255, 255, 0.65); } @@ -4651,6 +4425,10 @@ tbody.collapse.show { } } +.card-columns .card { + margin-bottom: 0.75rem; +} + @media (min-width: 576px) { .card-columns { -webkit-column-count: 3; @@ -4663,7 +4441,6 @@ tbody.collapse.show { .card-columns .card { display: inline-block; width: 100%; - margin-bottom: 0.75rem; } } @@ -4883,10 +4660,6 @@ a.badge:focus, a.badge:hover { } } -.jumbotron-hr { - border-top-color: #d0d5d8; -} - .jumbotron-fluid { padding-right: 0; padding-left: 0; @@ -5017,6 +4790,9 @@ a.badge:focus, a.badge:hover { line-height: 1rem; color: #fff; background-color: #0275d8; + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; } .progress-bar-striped { @@ -5460,7 +5236,7 @@ button.close { position: absolute; z-index: 1070; display: block; - font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-style: normal; font-weight: normal; line-height: 1.5; @@ -5564,7 +5340,7 @@ button.close { display: block; max-width: 276px; padding: 1px; - font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-style: normal; font-weight: normal; line-height: 1.5; @@ -5735,35 +5511,20 @@ button.close { .carousel-item { position: relative; display: none; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; width: 100%; -} - -@media (-webkit-transform-3d) { - .carousel-item { - -webkit-transition: -webkit-transform 0.6s ease-in-out; - transition: -webkit-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } -} - -@supports ((-webkit-transform: translate3d(0, 0, 0)) or (transform: translate3d(0, 0, 0))) { - .carousel-item { - -webkit-transition: -webkit-transform 0.6s ease-in-out; - transition: -webkit-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out, -o-transform 0.6s ease-in-out; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } + -webkit-transition: -webkit-transform 0.6s ease; + transition: -webkit-transform 0.6s ease; + -o-transition: -o-transform 0.6s ease; + transition: transform 0.6s ease; + transition: transform 0.6s ease, -webkit-transform 0.6s ease, -o-transform 0.6s ease; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; } .carousel-item.active, @@ -5781,40 +5542,22 @@ button.close { top: 0; } -@media (-webkit-transform-3d) { - .carousel-item-next.carousel-item-left, - .carousel-item-prev.carousel-item-right { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - .carousel-item-next, - .active.carousel-item-right { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-item-prev, - .active.carousel-item-left { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } +.carousel-item-next.carousel-item-left, +.carousel-item-prev.carousel-item-right { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } -@supports ((-webkit-transform: translate3d(0, 0, 0)) or (transform: translate3d(0, 0, 0))) { - .carousel-item-next.carousel-item-left, - .carousel-item-prev.carousel-item-right { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - } - .carousel-item-next, - .active.carousel-item-right { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-item-prev, - .active.carousel-item-left { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } +.carousel-item-next, +.active.carousel-item-right { + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); +} + +.carousel-item-prev, +.active.carousel-item-left { + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); } .carousel-control-prev, diff --git a/library/bootstrap/css/bootstrap.css.map b/library/bootstrap/css/bootstrap.css.map index 4aa01bc4e..4a8fcd2be 100644 --- a/library/bootstrap/css/bootstrap.css.map +++ b/library/bootstrap/css/bootstrap.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_print.scss","bootstrap.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/mixins/_transition.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/mixins/_cards.scss","../../scss/_breadcrumb.scss","../../scss/mixins/_clearfix.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_responsive-embed.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_transforms.scss","../../scss/utilities/_align.scss","../../scss/utilities/_background.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss"],"names":[],"mappings":"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;IAChB,sBAAqB;IACrB,sBf6C4B;Ie5C5B,4BAA2B;GAC5B;EAnFL;IAuFM,OAAM;GACP;CjBo0DJ;;AmBlsED;EACE,sBAAqB;EACrB,oBjBuPyB;EiBtPzB,mBAAkB;EAClB,oBAAmB;EACnB,uBAAsB;EACtB,0BAAiB;KAAjB,uBAAiB;MAAjB,sBAAiB;UAAjB,kBAAiB;EACjB,8BAAiD;ECqEjD,qBlBkQ8B;EkBjQ9B,gBlBuKmB;EkBtKnB,kBlBkQ8B;EMlV5B,uBNgO2B;EO/NzB,yCPiY8C;EOjY9C,oCPiY8C;EOjY9C,iCPiY8C;CiB9VnD;;AhBlBG;EgBHA,sBAAqB;ChBMpB;;AgBnBL;EAiBI,WAAU;EACV,sDjB4EY;UiB5EZ,8CjB4EY;CiB3Eb;;AAnBH;EAwBI,oBjBqZwC;EiBpZxC,aAAY;CAEb;;AA3BH;EA+BI,uBAAsB;CAEvB;;AAIH;;EAEE,qBAAoB;CACrB;;AAOD;EC5CE,YlBqFW;EkBpFX,0BlB0Fc;EkBzFd,sBlByFc;CiB7Cf;;AhB5CG;EiBKA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,qDlB0EU;UkB1EV,6ClB0EU;CkBxEb;;AAGD;EAEE,0BlBmEY;EkBlEZ,sBlBkEY;CkBjEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADWH;EC/CE,elBiGiC;EkBhGjC,uBlBoFW;EkBnFX,mBlBgWmC;CiBjTpC;;AhB/CG;EiBKA,elB0F+B;EkBzF/B,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,uDlBiV+B;UkBjV/B,+ClBiV+B;CkB/UlC;;AAGD;EAEE,uBlB6DS;EkB5DT,mBlByUiC;CkBxUlC;;AAED;;EAGE,elBkE+B;EkBjE/B,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADcH;EClDE,YlBqFW;EkBpFX,0BlB2Fc;EkB1Fd,sBlB0Fc;CiBxCf;;AhBlDG;EiBKA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,sDlB2EU;UkB3EV,8ClB2EU;CkBzEb;;AAGD;EAEE,0BlBoEY;EkBnEZ,sBlBmEY;CkBlEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADiBH;ECrDE,YlBqFW;EkBpFX,0BlByFc;EkBxFd,sBlBwFc;CiBnCf;;AhBrDG;EiBKA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,qDlByEU;UkBzEV,6ClByEU;CkBvEb;;AAGD;EAEE,0BlBkEY;EkBjEZ,sBlBiEY;CkBhEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADoBH;ECxDE,YlBqFW;EkBpFX,0BlBuFc;EkBtFd,sBlBsFc;CiB9Bf;;AhBxDG;EiBKA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,sDlBuEU;UkBvEV,8ClBuEU;CkBrEb;;AAGD;EAEE,0BlBgEY;EkB/DZ,sBlB+DY;CkB9Db;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADuBH;EC3DE,YlBqFW;EkBpFX,0BlBsFc;EkBrFd,sBlBqFc;CiB1Bf;;AhB3DG;EiBKA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,qDlBsEU;UkBtEV,6ClBsEU;CkBpEb;;AAGD;EAEE,0BlB+DY;EkB9DZ,sBlB8DY;CkB7Db;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;AD4BH;ECxBE,elBmDc;EkBlDd,8BAA6B;EAC7B,uBAAsB;EACtB,sBlBgDc;CiBzBf;;AhBhEG;EiB4CA,YlBuCS;EkBtCT,0BlB4CY;EkB3CZ,sBlB2CY;CCzFS;;AiBiDvB;EAEE,qDlBsCY;UkBtCZ,6ClBsCY;CkBrCb;;AAED;EAEE,elBiCY;EkBhCZ,8BAA6B;CAC9B;;AAED;;EAGE,YlBoBS;EkBnBT,0BlByBY;EkBxBZ,sBlBwBY;CkBvBb;;ADDH;EC3BE,YlB0TmC;EkBzTnC,8BAA6B;EAC7B,uBAAsB;EACtB,mBlBuTmC;CiB7RpC;;AhBnEG;EiB4CA,elBmD+B;EkBlD/B,uBlBmTiC;EkBlTjC,mBlBkTiC;CChWZ;;AiBiDvB;EAEE,uDlB6SiC;UkB7SjC,+ClB6SiC;CkB5SlC;;AAED;EAEE,YlBwSiC;EkBvSjC,8BAA6B;CAC9B;;AAED;;EAGE,elBgC+B;EkB/B/B,uBlBgSiC;EkB/RjC,mBlB+RiC;CkB9RlC;;ADEH;EC9BE,elBoDc;EkBnDd,8BAA6B;EAC7B,uBAAsB;EACtB,sBlBiDc;CiBpBf;;AhBtEG;EiB4CA,YlBuCS;EkBtCT,0BlB6CY;EkB5CZ,sBlB4CY;CC1FS;;AiBiDvB;EAEE,sDlBuCY;UkBvCZ,8ClBuCY;CkBtCb;;AAED;EAEE,elBkCY;EkBjCZ,8BAA6B;CAC9B;;AAED;;EAGE,YlBoBS;EkBnBT,0BlB0BY;EkBzBZ,sBlByBY;CkBxBb;;ADKH;ECjCE,elBkDc;EkBjDd,8BAA6B;EAC7B,uBAAsB;EACtB,sBlB+Cc;CiBff;;AhBzEG;EiB4CA,YlBuCS;EkBtCT,0BlB2CY;EkB1CZ,sBlB0CY;CCxFS;;AiBiDvB;EAEE,qDlBqCY;UkBrCZ,6ClBqCY;CkBpCb;;AAED;EAEE,elBgCY;EkB/BZ,8BAA6B;CAC9B;;AAED;;EAGE,YlBoBS;EkBnBT,0BlBwBY;EkBvBZ,sBlBuBY;CkBtBb;;ADQH;ECpCE,elBgDc;EkB/Cd,8BAA6B;EAC7B,uBAAsB;EACtB,sBlB6Cc;CiBVf;;AhB5EG;EiB4CA,YlBuCS;EkBtCT,0BlByCY;EkBxCZ,sBlBwCY;CCtFS;;AiBiDvB;EAEE,sDlBmCY;UkBnCZ,8ClBmCY;CkBlCb;;AAED;EAEE,elB8BY;EkB7BZ,8BAA6B;CAC9B;;AAED;;EAGE,YlBoBS;EkBnBT,0BlBsBY;EkBrBZ,sBlBqBY;CkBpBb;;ADWH;ECvCE,elB+Cc;EkB9Cd,8BAA6B;EAC7B,uBAAsB;EACtB,sBlB4Cc;CiBNf;;AhB/EG;EiB4CA,YlBuCS;EkBtCT,0BlBwCY;EkBvCZ,sBlBuCY;CCrFS;;AiBiDvB;EAEE,qDlBkCY;UkBlCZ,6ClBkC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ACpB,oB/BoZwC;E+BnZxC,uB/B8DS;E+B7DT,mB/BqmBuC;C+BpmBxC;;AAGH;EACE,mBAAkB;EAClB,eAAc;EACd,wB/BukB0C;E+BtkB1C,kBAAiB;EACjB,kB/B2kBwC;E+B1kBxC,e/ByDc;E+BxDd,uB/BkDW;E+BjDX,uB/B6kByC;C+BrkB1C;;A9B/BG;E8B0BA,e/B2H4C;E+B1H5C,sBAAqB;EACrB,0B/B2D+B;E+B1D/B,mB/B2kBuC;CCrmBtC;;A+BtBH;EACE,wBhC+mBwC;EgC9mBxC,mBhCsPoB;CgCrPrB;;AAIG;E1BqBF,+BNsM0B;EMrM1B,kCNqM0B;CgCzNvB;;AAGD;E1BEF,gCNoN0B;EMnN1B,mCNmN0B;CgCpNvB;;AAdL;EACE,wBhC6mBuC;EgC5mBvC,oBhCuPoB;CgCtPrB;;AAIG;E1BqBF,+BNuM0B;EMtM1B,kCNsM0B;CgC1NvB;;AAGD;E1BEF,gCNqN0B;EMpN1B,mCNoN0B;CgCrNvB;;ACZP;EACE,sBAAqB;EACrB,sBjCwuBgC;EiCvuBhC,ejCquB+B;EiCpuB/B,kBjCuPqB;EiCtPrB,eAAc;EACd,YjCmFW;EiClFX,mBAAkB;EAClB,oBAAmB;EACnB,yBAAwB;E3BVtB,uBNgO2B;CiC/M9B;;AAhBD;EAcI,cAAa;CACd;;AAIH;EACE,mBAAkB;EAClB,UAAS;CACV;;AhCLG;EgCWA,YjC6DS;EiC5DT,sBAAqB;ChCTpB;;AgCkBL;EACE,qBjCssBgC;EiCrsBhC,oBjCqsBgC;EM9uB9B,qBNivB+B;CiCtsBlC;;AAMD;EClDE,0BlCyGiC;CiCrDlC;;AhCjCG;EiCfE,0BAAqC;CjCkBtC;;AgCgCL;ECtDE,0BlCiGc;CiCzCf;;AhCrCG;EiCfE,0BAAqC;CjCkBtC;;AgCoCL;EC1DE,0BlCgGc;CiCpCf;;AhCzCG;EiCfE,0BAAqC;CjCkBtC;;AgCwCL;EC9DE,0BlCkGc;CiClCf;;AhC7CG;EiCfE,0BAAqC;CjCkBtC;;AgC4CL;EClEE,0BlC8Fc;CiC1Bf;;AhCjDG;EiCfE,0BAAqC;CjCkBtC;;AgCgDL;ECtEE,0BlC6Fc;CiCrBf;;AhCrDG;EiCfE,0BAAqC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","file":"bootstrap.css","sourcesContent":[null,null,"/*!\n * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n@media print {\n *,\n *::before,\n *::after,\n p::first-letter,\n div::first-letter,\n blockquote::first-letter,\n li::first-letter,\n p::first-line,\n div::first-line,\n blockquote::first-line,\n li::first-line {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n\nhtml {\n box-sizing: border-box;\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #292b2c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #636c72;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"radio\"]:disabled,\ninput[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: normal;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 5px;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n padding: 0.5rem 1rem;\n margin-bottom: 1rem;\n font-size: 1.25rem;\n border-left: 0.25rem solid #eceeef;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #636c72;\n}\n\n.blockquote-footer::before {\n content: \"\\2014 \\00A0\";\n}\n\n.blockquote-reverse {\n padding-right: 1rem;\n padding-left: 0;\n text-align: right;\n border-right: 0.25rem solid #eceeef;\n border-left: 0;\n}\n\n.blockquote-reverse .blockquote-footer::before {\n content: \"\";\n}\n\n.blockquote-reverse .blockquote-footer::after {\n content: \"\\00A0 \\2014\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 0.25rem;\n transition: all 0.2s ease-in-out;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #636c72;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #bd4147;\n background-color: #f7f7f9;\n border-radius: 0.25rem;\n}\n\na > code {\n padding: 0;\n color: inherit;\n background-color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #fff;\n background-color: #292b2c;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: 90%;\n color: #292b2c;\n}\n\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .container {\n width: 540px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n width: 720px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n width: 960px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n width: 1140px;\n max-width: 100%;\n }\n}\n\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n@media (min-width: 576px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 768px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 992px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 1200px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n}\n\n.col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n}\n\n.col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n}\n\n.col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n}\n\n.col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n}\n\n.col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n}\n\n.col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n}\n\n.col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n}\n\n.col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n}\n\n.pull-0 {\n right: auto;\n}\n\n.pull-1 {\n right: 8.333333%;\n}\n\n.pull-2 {\n right: 16.666667%;\n}\n\n.pull-3 {\n right: 25%;\n}\n\n.pull-4 {\n right: 33.333333%;\n}\n\n.pull-5 {\n right: 41.666667%;\n}\n\n.pull-6 {\n right: 50%;\n}\n\n.pull-7 {\n right: 58.333333%;\n}\n\n.pull-8 {\n right: 66.666667%;\n}\n\n.pull-9 {\n right: 75%;\n}\n\n.pull-10 {\n right: 83.333333%;\n}\n\n.pull-11 {\n right: 91.666667%;\n}\n\n.pull-12 {\n right: 100%;\n}\n\n.push-0 {\n left: auto;\n}\n\n.push-1 {\n left: 8.333333%;\n}\n\n.push-2 {\n left: 16.666667%;\n}\n\n.push-3 {\n left: 25%;\n}\n\n.push-4 {\n left: 33.333333%;\n}\n\n.push-5 {\n left: 41.666667%;\n}\n\n.push-6 {\n left: 50%;\n}\n\n.push-7 {\n left: 58.333333%;\n}\n\n.push-8 {\n left: 66.666667%;\n}\n\n.push-9 {\n left: 75%;\n}\n\n.push-10 {\n left: 83.333333%;\n}\n\n.push-11 {\n left: 91.666667%;\n}\n\n.push-12 {\n left: 100%;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-sm-0 {\n right: auto;\n }\n .pull-sm-1 {\n right: 8.333333%;\n }\n .pull-sm-2 {\n right: 16.666667%;\n }\n .pull-sm-3 {\n right: 25%;\n }\n .pull-sm-4 {\n right: 33.333333%;\n }\n .pull-sm-5 {\n right: 41.666667%;\n }\n .pull-sm-6 {\n right: 50%;\n }\n .pull-sm-7 {\n right: 58.333333%;\n }\n .pull-sm-8 {\n right: 66.666667%;\n }\n .pull-sm-9 {\n right: 75%;\n }\n .pull-sm-10 {\n right: 83.333333%;\n }\n .pull-sm-11 {\n right: 91.666667%;\n }\n .pull-sm-12 {\n right: 100%;\n }\n .push-sm-0 {\n left: auto;\n }\n .push-sm-1 {\n left: 8.333333%;\n }\n .push-sm-2 {\n left: 16.666667%;\n }\n .push-sm-3 {\n left: 25%;\n }\n .push-sm-4 {\n left: 33.333333%;\n }\n .push-sm-5 {\n left: 41.666667%;\n }\n .push-sm-6 {\n left: 50%;\n }\n .push-sm-7 {\n left: 58.333333%;\n }\n .push-sm-8 {\n left: 66.666667%;\n }\n .push-sm-9 {\n left: 75%;\n }\n .push-sm-10 {\n left: 83.333333%;\n }\n .push-sm-11 {\n left: 91.666667%;\n }\n .push-sm-12 {\n left: 100%;\n }\n .offset-sm-0 {\n margin-left: 0%;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-md-0 {\n right: auto;\n }\n .pull-md-1 {\n right: 8.333333%;\n }\n .pull-md-2 {\n right: 16.666667%;\n }\n .pull-md-3 {\n right: 25%;\n }\n .pull-md-4 {\n right: 33.333333%;\n }\n .pull-md-5 {\n right: 41.666667%;\n }\n .pull-md-6 {\n right: 50%;\n }\n .pull-md-7 {\n right: 58.333333%;\n }\n .pull-md-8 {\n right: 66.666667%;\n }\n .pull-md-9 {\n right: 75%;\n }\n .pull-md-10 {\n right: 83.333333%;\n }\n .pull-md-11 {\n right: 91.666667%;\n }\n .pull-md-12 {\n right: 100%;\n }\n .push-md-0 {\n left: auto;\n }\n .push-md-1 {\n left: 8.333333%;\n }\n .push-md-2 {\n left: 16.666667%;\n }\n .push-md-3 {\n left: 25%;\n }\n .push-md-4 {\n left: 33.333333%;\n }\n .push-md-5 {\n left: 41.666667%;\n }\n .push-md-6 {\n left: 50%;\n }\n .push-md-7 {\n left: 58.333333%;\n }\n .push-md-8 {\n left: 66.666667%;\n }\n .push-md-9 {\n left: 75%;\n }\n .push-md-10 {\n left: 83.333333%;\n }\n .push-md-11 {\n left: 91.666667%;\n }\n .push-md-12 {\n left: 100%;\n }\n .offset-md-0 {\n margin-left: 0%;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-lg-0 {\n right: auto;\n }\n .pull-lg-1 {\n right: 8.333333%;\n }\n .pull-lg-2 {\n right: 16.666667%;\n }\n .pull-lg-3 {\n right: 25%;\n }\n .pull-lg-4 {\n right: 33.333333%;\n }\n .pull-lg-5 {\n right: 41.666667%;\n }\n .pull-lg-6 {\n right: 50%;\n }\n .pull-lg-7 {\n right: 58.333333%;\n }\n .pull-lg-8 {\n right: 66.666667%;\n }\n .pull-lg-9 {\n right: 75%;\n }\n .pull-lg-10 {\n right: 83.333333%;\n }\n .pull-lg-11 {\n right: 91.666667%;\n }\n .pull-lg-12 {\n right: 100%;\n }\n .push-lg-0 {\n left: auto;\n }\n .push-lg-1 {\n left: 8.333333%;\n }\n .push-lg-2 {\n left: 16.666667%;\n }\n .push-lg-3 {\n left: 25%;\n }\n .push-lg-4 {\n left: 33.333333%;\n }\n .push-lg-5 {\n left: 41.666667%;\n }\n .push-lg-6 {\n left: 50%;\n }\n .push-lg-7 {\n left: 58.333333%;\n }\n .push-lg-8 {\n left: 66.666667%;\n }\n .push-lg-9 {\n left: 75%;\n }\n .push-lg-10 {\n left: 83.333333%;\n }\n .push-lg-11 {\n left: 91.666667%;\n }\n .push-lg-12 {\n left: 100%;\n }\n .offset-lg-0 {\n margin-left: 0%;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .pull-xl-0 {\n right: auto;\n }\n .pull-xl-1 {\n right: 8.333333%;\n }\n .pull-xl-2 {\n right: 16.666667%;\n }\n .pull-xl-3 {\n right: 25%;\n }\n .pull-xl-4 {\n right: 33.333333%;\n }\n .pull-xl-5 {\n right: 41.666667%;\n }\n .pull-xl-6 {\n right: 50%;\n }\n .pull-xl-7 {\n right: 58.333333%;\n }\n .pull-xl-8 {\n right: 66.666667%;\n }\n .pull-xl-9 {\n right: 75%;\n }\n .pull-xl-10 {\n right: 83.333333%;\n }\n .pull-xl-11 {\n right: 91.666667%;\n }\n .pull-xl-12 {\n right: 100%;\n }\n .push-xl-0 {\n left: auto;\n }\n .push-xl-1 {\n left: 8.333333%;\n }\n .push-xl-2 {\n left: 16.666667%;\n }\n .push-xl-3 {\n left: 25%;\n }\n .push-xl-4 {\n left: 33.333333%;\n }\n .push-xl-5 {\n left: 41.666667%;\n }\n .push-xl-6 {\n left: 50%;\n }\n .push-xl-7 {\n left: 58.333333%;\n }\n .push-xl-8 {\n left: 66.666667%;\n }\n .push-xl-9 {\n left: 75%;\n }\n .push-xl-10 {\n left: 83.333333%;\n }\n .push-xl-11 {\n left: 91.666667%;\n }\n .push-xl-12 {\n left: 100%;\n }\n .offset-xl-0 {\n margin-left: 0%;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #eceeef;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #eceeef;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #eceeef;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #eceeef;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #eceeef;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #dff0d8;\n}\n\n.table-hover .table-success:hover {\n background-color: #d0e9c6;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #d0e9c6;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #d9edf7;\n}\n\n.table-hover .table-info:hover {\n background-color: #c4e3f3;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #c4e3f3;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #fcf8e3;\n}\n\n.table-hover .table-warning:hover {\n background-color: #faf2cc;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #faf2cc;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f2dede;\n}\n\n.table-hover .table-danger:hover {\n background-color: #ebcccc;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #ebcccc;\n}\n\n.thead-inverse th {\n color: #fff;\n background-color: #292b2c;\n}\n\n.thead-default th {\n color: #464a4c;\n background-color: #eceeef;\n}\n\n.table-inverse {\n color: #fff;\n background-color: #292b2c;\n}\n\n.table-inverse th,\n.table-inverse td,\n.table-inverse thead th {\n border-color: #3b3e40;\n}\n\n.table-inverse.table-bordered {\n border: 0;\n}\n\n.table-inverse.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-inverse.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 991px) {\n .table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive.table-bordered {\n border: 0;\n }\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.5rem 1rem;\n font-size: 1rem;\n line-height: 1.25;\n color: #464a4c;\n background-color: #fff;\n background-image: none;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #464a4c;\n background-color: #fff;\n border-color: #5cb3fd;\n outline: none;\n}\n\n.form-control::placeholder {\n color: #636c72;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #eceeef;\n opacity: 1;\n}\n\n.form-control:disabled {\n cursor: not-allowed;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n color: #464a4c;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n}\n\n.col-form-label {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n margin-bottom: 0;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem - 1px * 2);\n padding-bottom: calc(0.25rem - 1px * 2);\n font-size: 0.875rem;\n}\n\n.col-form-legend {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n font-size: 1rem;\n}\n\n.form-control-static {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n line-height: 1.25;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-static.form-control-sm, .input-group-sm > .form-control-static.form-control,\n.input-group-sm > .form-control-static.input-group-addon,\n.input-group-sm > .input-group-btn > .form-control-static.btn, .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control,\n.input-group-lg > .form-control-static.input-group-addon,\n.input-group-lg > .input-group-btn > .form-control-static.btn {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > select.input-group-addon:not([size]):not([multiple]),\n.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(1.8125rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > select.input-group-addon:not([size]):not([multiple]),\n.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(2.875rem + 2px);\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-check {\n position: relative;\n display: block;\n margin-bottom: 0.5rem;\n}\n\n.form-check.disabled .form-check-label {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.form-check-label {\n padding-left: 1.25rem;\n margin-bottom: 0;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.25rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:only-child {\n position: static;\n}\n\n.form-check-inline {\n display: inline-block;\n}\n\n.form-check-inline .form-check-label {\n vertical-align: middle;\n}\n\n.form-check-inline + .form-check-inline {\n margin-left: 0.75rem;\n}\n\n.form-control-feedback {\n margin-top: 0.25rem;\n}\n\n.form-control-success,\n.form-control-warning,\n.form-control-danger {\n padding-right: 3rem;\n background-repeat: no-repeat;\n background-position: center right 0.5625rem;\n background-size: 1.125rem 1.125rem;\n}\n\n.has-success .form-control-feedback,\n.has-success .form-control-label,\n.has-success .col-form-label,\n.has-success .form-check-label,\n.has-success .custom-control {\n color: #5cb85c;\n}\n\n.has-success .form-control,\n.has-success .custom-select,\n.has-success .custom-file-control {\n border-color: #5cb85c;\n}\n\n.has-success .input-group-addon {\n color: #5cb85c;\n background-color: #eaf6ea;\n border-color: #5cb85c;\n}\n\n.has-success .form-control-success {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E\");\n}\n\n.has-warning .form-control-feedback,\n.has-warning .form-control-label,\n.has-warning .col-form-label,\n.has-warning .form-check-label,\n.has-warning .custom-control {\n color: #f0ad4e;\n}\n\n.has-warning .form-control,\n.has-warning .custom-select,\n.has-warning .custom-file-control {\n border-color: #f0ad4e;\n}\n\n.has-warning .input-group-addon {\n color: #f0ad4e;\n background-color: white;\n border-color: #f0ad4e;\n}\n\n.has-warning .form-control-warning {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E\");\n}\n\n.has-danger .form-control-feedback,\n.has-danger .form-control-label,\n.has-danger .col-form-label,\n.has-danger .form-check-label,\n.has-danger .custom-control {\n color: #d9534f;\n}\n\n.has-danger .form-control,\n.has-danger .custom-select,\n.has-danger .custom-file-control {\n border-color: #d9534f;\n}\n\n.has-danger .input-group-addon {\n color: #d9534f;\n background-color: #fdf7f7;\n border-color: #d9534f;\n}\n\n.has-danger .form-control-danger {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E\");\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-inline .form-check-label {\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: 0;\n }\n .form-inline .custom-control-indicator {\n position: static;\n display: inline-block;\n margin-right: 0.25rem;\n vertical-align: text-bottom;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: normal;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.5rem 1rem;\n font-size: 1rem;\n line-height: 1.25;\n border-radius: 0.25rem;\n transition: all 0.2s ease-in-out;\n}\n\n.btn:focus, .btn:hover {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n cursor: not-allowed;\n opacity: .65;\n}\n\n.btn:active, .btn.active {\n background-image: none;\n}\n\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #025aa5;\n border-color: #01549b;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-primary:active, .btn-primary.active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #025aa5;\n background-image: none;\n border-color: #01549b;\n}\n\n.btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n}\n\n.btn-secondary:hover {\n color: #292b2c;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n background-color: #fff;\n border-color: #ccc;\n}\n\n.btn-secondary:active, .btn-secondary.active,\n.show > .btn-secondary.dropdown-toggle {\n color: #292b2c;\n background-color: #e6e6e6;\n background-image: none;\n border-color: #adadad;\n}\n\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #2aabd2;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-info:active, .btn-info.active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #31b0d5;\n background-image: none;\n border-color: #2aabd2;\n}\n\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #419641;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-success:active, .btn-success.active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #449d44;\n background-image: none;\n border-color: #419641;\n}\n\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #eb9316;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-warning:active, .btn-warning.active,\n.show > .btn-warning.dropdown-toggle {\n color: #fff;\n background-color: #ec971f;\n background-image: none;\n border-color: #eb9316;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #c12e2a;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-danger:active, .btn-danger.active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #c9302c;\n background-image: none;\n border-color: #c12e2a;\n}\n\n.btn-outline-primary {\n color: #0275d8;\n background-color: transparent;\n background-image: none;\n border-color: #0275d8;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #0275d8;\n background-color: transparent;\n}\n\n.btn-outline-primary:active, .btn-outline-primary.active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-outline-secondary {\n color: #ccc;\n background-color: transparent;\n background-image: none;\n border-color: #ccc;\n}\n\n.btn-outline-secondary:hover {\n color: #292b2c;\n background-color: #ccc;\n border-color: #ccc;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #ccc;\n background-color: transparent;\n}\n\n.btn-outline-secondary:active, .btn-outline-secondary.active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #292b2c;\n background-color: #ccc;\n border-color: #ccc;\n}\n\n.btn-outline-info {\n color: #5bc0de;\n background-color: transparent;\n background-image: none;\n border-color: #5bc0de;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #5bc0de;\n background-color: transparent;\n}\n\n.btn-outline-info:active, .btn-outline-info.active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-outline-success {\n color: #5cb85c;\n background-color: transparent;\n background-image: none;\n border-color: #5cb85c;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #5cb85c;\n background-color: transparent;\n}\n\n.btn-outline-success:active, .btn-outline-success.active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-outline-warning {\n color: #f0ad4e;\n background-color: transparent;\n background-image: none;\n border-color: #f0ad4e;\n}\n\n.btn-outline-warning:hover {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #f0ad4e;\n background-color: transparent;\n}\n\n.btn-outline-warning:active, .btn-outline-warning.active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-outline-danger {\n color: #d9534f;\n background-color: transparent;\n background-image: none;\n border-color: #d9534f;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #d9534f;\n background-color: transparent;\n}\n\n.btn-outline-danger:active, .btn-outline-danger.active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-link {\n font-weight: normal;\n color: #0275d8;\n border-radius: 0;\n}\n\n.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled {\n background-color: transparent;\n}\n\n.btn-link, .btn-link:focus, .btn-link:active {\n border-color: transparent;\n}\n\n.btn-link:hover {\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link:hover {\n color: #014c8c;\n text-decoration: underline;\n background-color: transparent;\n}\n\n.btn-link:disabled {\n color: #636c72;\n}\n\n.btn-link:disabled:focus, .btn-link:disabled:hover {\n text-decoration: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.fade.show {\n opacity: 1;\n}\n\n.collapse {\n display: none;\n}\n\n.collapse.show {\n display: block;\n}\n\ntr.collapse.show {\n display: table-row;\n}\n\ntbody.collapse.show {\n display: table-row-group;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.3em;\n vertical-align: middle;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle::after {\n border-top: 0;\n border-bottom: 0.3em solid;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #292b2c;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #eceeef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 3px 1.5rem;\n clear: both;\n font-weight: normal;\n color: #292b2c;\n text-align: inherit;\n white-space: nowrap;\n background: none;\n border: 0;\n}\n\n.dropdown-item:focus, .dropdown-item:hover {\n color: #1d1e1f;\n text-decoration: none;\n background-color: #f7f7f9;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #0275d8;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: transparent;\n}\n\n.show > .dropdown-menu {\n display: block;\n}\n\n.show > a {\n outline: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #636c72;\n white-space: nowrap;\n}\n\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 0.125rem;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 0 1 auto;\n margin-bottom: 0;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 2;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group > .btn-group {\n float: left;\n}\n\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n.btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn + .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.input-group .form-control {\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover {\n z-index: 3;\n}\n\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: flex;\n align-items: center;\n}\n\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.input-group-addon,\n.input-group-btn {\n white-space: nowrap;\n vertical-align: middle;\n}\n\n.input-group-addon {\n padding: 0.5rem 1rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.25;\n color: #464a4c;\n text-align: center;\n background-color: #eceeef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.input-group-addon.form-control-sm,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .input-group-addon.btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\n.input-group-addon.form-control-lg,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .input-group-addon.btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group .form-control:not(:last-child),\n.input-group-addon:not(:last-child),\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group > .btn,\n.input-group-btn:not(:last-child) > .dropdown-toggle,\n.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group-addon:not(:last-child) {\n border-right: 0;\n}\n\n.input-group .form-control:not(:first-child),\n.input-group-addon:not(:first-child),\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group > .btn,\n.input-group-btn:not(:first-child) > .dropdown-toggle,\n.input-group-btn:not(:last-child) > .btn:not(:first-child),\n.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.form-control + .input-group-addon:not(:first-child) {\n border-left: 0;\n}\n\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n\n.input-group-btn > .btn {\n position: relative;\n}\n\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n\n.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover {\n z-index: 3;\n}\n\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group {\n margin-right: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover,\n.input-group-btn:not(:first-child) > .btn-group:focus,\n.input-group-btn:not(:first-child) > .btn-group:active,\n.input-group-btn:not(:first-child) > .btn-group:hover {\n z-index: 3;\n}\n\n.custom-control {\n position: relative;\n display: inline-flex;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-indicator {\n color: #fff;\n background-color: #0275d8;\n}\n\n.custom-control-input:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 3px #0275d8;\n}\n\n.custom-control-input:active ~ .custom-control-indicator {\n color: #fff;\n background-color: #8fcafe;\n}\n\n.custom-control-input:disabled ~ .custom-control-indicator {\n cursor: not-allowed;\n background-color: #eceeef;\n}\n\n.custom-control-input:disabled ~ .custom-control-description {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.custom-control-indicator {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n user-select: none;\n background-color: #ddd;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-indicator {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator {\n background-color: #0275d8;\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-indicator {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-controls-stacked {\n display: flex;\n flex-direction: column;\n}\n\n.custom-controls-stacked .custom-control {\n margin-bottom: 0.25rem;\n}\n\n.custom-controls-stacked .custom-control + .custom-control {\n margin-left: 0;\n}\n\n.custom-select {\n display: inline-block;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.25;\n color: #464a4c;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #5cb3fd;\n outline: none;\n}\n\n.custom-select:focus::-ms-value {\n color: #464a4c;\n background-color: #fff;\n}\n\n.custom-select:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: #eceeef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n max-width: 100%;\n height: 2.5rem;\n margin-bottom: 0;\n}\n\n.custom-file-input {\n min-width: 14rem;\n max-width: 100%;\n height: 2.5rem;\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-control {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 5;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #464a4c;\n pointer-events: none;\n user-select: none;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.custom-file-control:lang(en):empty::after {\n content: \"Choose file...\";\n}\n\n.custom-file-control::before {\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n z-index: 6;\n display: block;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #464a4c;\n background-color: #eceeef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-file-control:lang(en)::before {\n content: \"Browse\";\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:focus, .nav-link:hover {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #eceeef #eceeef #ddd;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #636c72;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #464a4c;\n background-color: #fff;\n border-color: #ddd #ddd #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .nav-item.show .nav-link {\n color: #fff;\n background-color: #0275d8;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n\n@media (max-width: 575px) {\n .navbar > .container,\n .navbar > .container-fluid {\n width: 100%;\n margin-right: 0;\n margin-left: 0;\n }\n}\n\n.navbar-brand {\n display: inline-block;\n align-self: flex-start;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:focus, .navbar-brand:hover {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n}\n\n.navbar-toggler {\n align-self: flex-start;\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:focus, .navbar-toggler:hover {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575px) {\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991px) {\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199px) {\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n flex-wrap: nowrap;\n align-items: center;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: flex-start;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n flex-wrap: nowrap;\n align-items: center;\n}\n\n.navbar-expand .navbar-collapse {\n display: flex !important;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .open > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.open,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-inverse .navbar-brand {\n color: white;\n}\n\n.navbar-inverse .navbar-brand:focus, .navbar-inverse .navbar-brand:hover {\n color: white;\n}\n\n.navbar-inverse .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-inverse .navbar-nav .nav-link:focus, .navbar-inverse .navbar-nav .nav-link:hover {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-inverse .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-inverse .navbar-nav .open > .nav-link,\n.navbar-inverse .navbar-nav .active > .nav-link,\n.navbar-inverse .navbar-nav .nav-link.open,\n.navbar-inverse .navbar-nav .nav-link.active {\n color: white;\n}\n\n.navbar-inverse .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-inverse .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-inverse .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card-block {\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: #f7f7f9;\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: #f7f7f9;\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-primary {\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.card-primary .card-header,\n.card-primary .card-footer {\n background-color: transparent;\n}\n\n.card-success {\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.card-success .card-header,\n.card-success .card-footer {\n background-color: transparent;\n}\n\n.card-info {\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.card-info .card-header,\n.card-info .card-footer {\n background-color: transparent;\n}\n\n.card-warning {\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.card-warning .card-header,\n.card-warning .card-footer {\n background-color: transparent;\n}\n\n.card-danger {\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.card-danger .card-header,\n.card-danger .card-footer {\n background-color: transparent;\n}\n\n.card-outline-primary {\n background-color: transparent;\n border-color: #0275d8;\n}\n\n.card-outline-secondary {\n background-color: transparent;\n border-color: #ccc;\n}\n\n.card-outline-info {\n background-color: transparent;\n border-color: #5bc0de;\n}\n\n.card-outline-success {\n background-color: transparent;\n border-color: #5cb85c;\n}\n\n.card-outline-warning {\n background-color: transparent;\n border-color: #f0ad4e;\n}\n\n.card-outline-danger {\n background-color: transparent;\n border-color: #d9534f;\n}\n\n.card-inverse {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.card-inverse .card-header,\n.card-inverse .card-footer {\n background-color: transparent;\n border-color: rgba(255, 255, 255, 0.2);\n}\n\n.card-inverse .card-header,\n.card-inverse .card-footer,\n.card-inverse .card-title,\n.card-inverse .card-blockquote {\n color: #fff;\n}\n\n.card-inverse .card-link,\n.card-inverse .card-text,\n.card-inverse .card-subtitle,\n.card-inverse .card-blockquote .blockquote-footer {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.card-inverse .card-link:focus, .card-inverse .card-link:hover {\n color: #fff;\n}\n\n.card-blockquote {\n padding: 0;\n margin-bottom: 0;\n border-left: 0;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n@media (min-width: 576px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: flex;\n flex: 1 0 0;\n flex-direction: column;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group .card {\n flex: 1 0 0;\n }\n .card-group .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group .card:first-child .card-img-top {\n border-top-right-radius: 0;\n }\n .card-group .card:first-child .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n .card-group .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group .card:last-child .card-img-top {\n border-top-left-radius: 0;\n }\n .card-group .card:last-child .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) .card-img-top,\n .card-group .card:not(:first-child):not(:last-child) .card-img-bottom {\n border-radius: 0;\n }\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n margin-bottom: 0.75rem;\n }\n}\n\n.breadcrumb {\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #eceeef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.breadcrumb-item {\n float: left;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #636c72;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #636c72;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 2;\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.page-item.disabled .page-link {\n color: #636c72;\n pointer-events: none;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #0275d8;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n\n.page-link:focus, .page-link:hover {\n color: #014c8c;\n text-decoration: none;\n background-color: #eceeef;\n border-color: #ddd;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\na.badge:focus, a.badge:hover {\n color: #fff;\n text-decoration: none;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-default {\n background-color: #636c72;\n}\n\n.badge-default[href]:focus, .badge-default[href]:hover {\n background-color: #4b5257;\n}\n\n.badge-primary {\n background-color: #0275d8;\n}\n\n.badge-primary[href]:focus, .badge-primary[href]:hover {\n background-color: #025aa5;\n}\n\n.badge-success {\n background-color: #5cb85c;\n}\n\n.badge-success[href]:focus, .badge-success[href]:hover {\n background-color: #449d44;\n}\n\n.badge-info {\n background-color: #5bc0de;\n}\n\n.badge-info[href]:focus, .badge-info[href]:hover {\n background-color: #31b0d5;\n}\n\n.badge-warning {\n background-color: #f0ad4e;\n}\n\n.badge-warning[href]:focus, .badge-warning[href]:hover {\n background-color: #ec971f;\n}\n\n.badge-danger {\n background-color: #d9534f;\n}\n\n.badge-danger[href]:focus, .badge-danger[href]:hover {\n background-color: #c9302c;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #eceeef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-hr {\n border-top-color: #d0d5d8;\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: bold;\n}\n\n.alert-dismissible .close {\n position: relative;\n top: -0.75rem;\n right: -1.25rem;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d0e9c6;\n}\n\n.alert-success hr {\n border-top-color: #c1e2b3;\n}\n\n.alert-success .alert-link {\n color: #2b542c;\n}\n\n.alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bcdff1;\n}\n\n.alert-info hr {\n border-top-color: #a6d5ec;\n}\n\n.alert-info .alert-link {\n color: #245269;\n}\n\n.alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faf2cc;\n}\n\n.alert-warning hr {\n border-top-color: #f7ecb5;\n}\n\n.alert-warning .alert-link {\n color: #66512c;\n}\n\n.alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebcccc;\n}\n\n.alert-danger hr {\n border-top-color: #e4b9b9;\n}\n\n.alert-danger .alert-link {\n color: #843534;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n overflow: hidden;\n font-size: 0.75rem;\n line-height: 1rem;\n text-align: center;\n background-color: #eceeef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n height: 1rem;\n line-height: 1rem;\n color: #fff;\n background-color: #0275d8;\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #464a4c;\n text-align: inherit;\n}\n\n.list-group-item-action:focus, .list-group-item-action:hover {\n color: #464a4c;\n text-decoration: none;\n background-color: #f7f7f9;\n}\n\n.list-group-item-action:active {\n color: #292b2c;\n background-color: #eceeef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:focus, .list-group-item:hover {\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n}\n\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\n\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\n\na.list-group-item-success:focus, a.list-group-item-success:hover,\nbutton.list-group-item-success:focus,\nbutton.list-group-item-success:hover {\n color: #3c763d;\n background-color: #d0e9c6;\n}\n\na.list-group-item-success.active,\nbutton.list-group-item-success.active {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\n\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\n\na.list-group-item-info:focus, a.list-group-item-info:hover,\nbutton.list-group-item-info:focus,\nbutton.list-group-item-info:hover {\n color: #31708f;\n background-color: #c4e3f3;\n}\n\na.list-group-item-info.active,\nbutton.list-group-item-info.active {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\n\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\n\na.list-group-item-warning:focus, a.list-group-item-warning:hover,\nbutton.list-group-item-warning:focus,\nbutton.list-group-item-warning:hover {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\n\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\n\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\n\na.list-group-item-danger:focus, a.list-group-item-danger:hover,\nbutton.list-group-item-danger:focus,\nbutton.list-group-item-danger:hover {\n color: #a94442;\n background-color: #ebcccc;\n}\n\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:focus, .close:hover {\n color: #000;\n text-decoration: none;\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n transform: translate(0, 0);\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 15px;\n border-bottom: 1px solid #eceeef;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 15px;\n}\n\n.modal-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 15px;\n border-top: 1px solid #eceeef;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 30px auto;\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip.tooltip-top, .tooltip.bs-tether-element-attached-bottom {\n padding: 5px 0;\n margin-top: -3px;\n}\n\n.tooltip.tooltip-top .tooltip-inner::before, .tooltip.bs-tether-element-attached-bottom .tooltip-inner::before {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n content: \"\";\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n\n.tooltip.tooltip-right, .tooltip.bs-tether-element-attached-left {\n padding: 0 5px;\n margin-left: 3px;\n}\n\n.tooltip.tooltip-right .tooltip-inner::before, .tooltip.bs-tether-element-attached-left .tooltip-inner::before {\n top: 50%;\n left: 0;\n margin-top: -5px;\n content: \"\";\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n\n.tooltip.tooltip-bottom, .tooltip.bs-tether-element-attached-top {\n padding: 5px 0;\n margin-top: 3px;\n}\n\n.tooltip.tooltip-bottom .tooltip-inner::before, .tooltip.bs-tether-element-attached-top .tooltip-inner::before {\n top: 0;\n left: 50%;\n margin-left: -5px;\n content: \"\";\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n\n.tooltip.tooltip-left, .tooltip.bs-tether-element-attached-right {\n padding: 0 5px;\n margin-left: -3px;\n}\n\n.tooltip.tooltip-left .tooltip-inner::before, .tooltip.bs-tether-element-attached-right .tooltip-inner::before {\n top: 50%;\n right: 0;\n margin-top: -5px;\n content: \"\";\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.tooltip-inner::before {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n padding: 1px;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover.popover-top, .popover.bs-tether-element-attached-bottom {\n margin-top: -10px;\n}\n\n.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after {\n left: 50%;\n border-bottom-width: 0;\n}\n\n.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before {\n bottom: -11px;\n margin-left: -11px;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after {\n bottom: -10px;\n margin-left: -10px;\n border-top-color: #fff;\n}\n\n.popover.popover-right, .popover.bs-tether-element-attached-left {\n margin-left: 10px;\n}\n\n.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after {\n top: 50%;\n border-left-width: 0;\n}\n\n.popover.popover-right::before, .popover.bs-tether-element-attached-left::before {\n left: -11px;\n margin-top: -11px;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-right::after, .popover.bs-tether-element-attached-left::after {\n left: -10px;\n margin-top: -10px;\n border-right-color: #fff;\n}\n\n.popover.popover-bottom, .popover.bs-tether-element-attached-top {\n margin-top: 10px;\n}\n\n.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after {\n left: 50%;\n border-top-width: 0;\n}\n\n.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before {\n top: -11px;\n margin-left: -11px;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {\n top: -10px;\n margin-left: -10px;\n border-bottom-color: #f7f7f7;\n}\n\n.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 20px;\n margin-left: -10px;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.popover.popover-left, .popover.bs-tether-element-attached-right {\n margin-left: -10px;\n}\n\n.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after {\n top: 50%;\n border-right-width: 0;\n}\n\n.popover.popover-left::before, .popover.bs-tether-element-attached-right::before {\n right: -11px;\n margin-top: -11px;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-left::after, .popover.bs-tether-element-attached-right::after {\n right: -10px;\n margin-top: -10px;\n border-left-color: #fff;\n}\n\n.popover-title {\n padding: 8px 14px;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-title:empty {\n display: none;\n}\n\n.popover-content {\n padding: 9px 14px;\n color: #292b2c;\n}\n\n.popover::before,\n.popover::after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover::before {\n content: \"\";\n border-width: 11px;\n}\n\n.popover::after {\n content: \"\";\n border-width: 10px;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n width: 100%;\n}\n\n@media (-webkit-transform-3d) {\n .carousel-item {\n transition: transform 0.6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000px;\n }\n}\n\n@supports (transform: translate3d(0, 0, 0)) {\n .carousel-item {\n transition: transform 0.6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000px;\n }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: flex;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n@media (-webkit-transform-3d) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n transform: translate3d(0, 0, 0);\n }\n .carousel-item-next,\n .active.carousel-item-right {\n transform: translate3d(100%, 0, 0);\n }\n .carousel-item-prev,\n .active.carousel-item-left {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n@supports (transform: translate3d(0, 0, 0)) {\n .carousel-item-next.carousel-item-left,\n .carousel-item-prev.carousel-item-right {\n transform: translate3d(0, 0, 0);\n }\n .carousel-item-next,\n .active.carousel-item-right {\n transform: translate3d(100%, 0, 0);\n }\n .carousel-item-prev,\n .active.carousel-item-left {\n transform: translate3d(-100%, 0, 0);\n }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n}\n\n.carousel-control-prev:focus, .carousel-control-prev:hover,\n.carousel-control-next:focus,\n.carousel-control-next:hover {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n position: relative;\n flex: 1 0 auto;\n max-width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators .active {\n background-color: #fff;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-faded {\n background-color: #f7f7f7;\n}\n\n.bg-primary {\n background-color: #0275d8 !important;\n}\n\na.bg-primary:focus, a.bg-primary:hover {\n background-color: #025aa5 !important;\n}\n\n.bg-success {\n background-color: #5cb85c !important;\n}\n\na.bg-success:focus, a.bg-success:hover {\n background-color: #449d44 !important;\n}\n\n.bg-info {\n background-color: #5bc0de !important;\n}\n\na.bg-info:focus, a.bg-info:hover {\n background-color: #31b0d5 !important;\n}\n\n.bg-warning {\n background-color: #f0ad4e !important;\n}\n\na.bg-warning:focus, a.bg-warning:hover {\n background-color: #ec971f !important;\n}\n\n.bg-danger {\n background-color: #d9534f !important;\n}\n\na.bg-danger:focus, a.bg-danger:hover {\n background-color: #c9302c !important;\n}\n\n.bg-inverse {\n background-color: #292b2c !important;\n}\n\na.bg-inverse:focus, a.bg-inverse:hover {\n background-color: #101112 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.rounded {\n border-radius: 0.25rem;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.rounded-circle {\n border-radius: 50%;\n}\n\n.rounded-0 {\n border-radius: 0;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.d-print-block {\n display: none !important;\n}\n\n@media print {\n .d-print-block {\n display: block !important;\n }\n}\n\n.d-print-inline {\n display: none !important;\n}\n\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n}\n\n.d-print-inline-block {\n display: none !important;\n}\n\n@media print {\n .d-print-inline-block {\n display: inline-block !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 1;\n}\n\n.order-0 {\n order: 0;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 1;\n }\n .order-sm-0 {\n order: 0;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 1;\n }\n .order-md-0 {\n order: 0;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 1;\n }\n .order-lg-0 {\n order: 0;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 1;\n }\n .order-xl-0 {\n order: 0;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n.sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n clip-path: inset(50%);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n clip-path: none;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mr-0 {\n margin-right: 0 !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0 {\n margin-left: 0 !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1 {\n margin-left: 0.25rem !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2 {\n margin-left: 0.5rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3 {\n margin-left: 1rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4 {\n margin-left: 1.5rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5 {\n margin-left: 3rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pr-0 {\n padding-right: 0 !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0 {\n padding-left: 0 !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1 {\n padding-left: 0.25rem !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2 {\n padding-left: 0.5rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3 {\n padding-left: 1rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4 {\n padding-left: 1.5rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5 {\n padding-left: 3rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.mr-auto {\n margin-right: auto !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto {\n margin-left: auto !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0 {\n margin-left: 0 !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1 {\n margin-left: 0.25rem !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2 {\n margin-left: 0.5rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3 {\n margin-left: 1rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4 {\n margin-left: 1.5rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5 {\n margin-left: 3rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0 {\n padding-left: 0 !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1 {\n padding-left: 0.25rem !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2 {\n padding-left: 0.5rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3 {\n padding-left: 1rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4 {\n padding-left: 1.5rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5 {\n padding-left: 3rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto {\n margin-left: auto !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0 {\n margin-left: 0 !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1 {\n margin-left: 0.25rem !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2 {\n margin-left: 0.5rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3 {\n margin-left: 1rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4 {\n margin-left: 1.5rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5 {\n margin-left: 3rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0 {\n padding-left: 0 !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1 {\n padding-left: 0.25rem !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2 {\n padding-left: 0.5rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3 {\n padding-left: 1rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4 {\n padding-left: 1.5rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5 {\n padding-left: 3rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto {\n margin-left: auto !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0 {\n margin-left: 0 !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1 {\n margin-left: 0.25rem !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2 {\n margin-left: 0.5rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3 {\n margin-left: 1rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4 {\n margin-left: 1.5rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5 {\n margin-left: 3rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0 {\n padding-left: 0 !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1 {\n padding-left: 0.25rem !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2 {\n padding-left: 0.5rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3 {\n padding-left: 1rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4 {\n padding-left: 1.5rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5 {\n padding-left: 3rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto {\n margin-left: auto !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0 {\n margin-left: 0 !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1 {\n margin-left: 0.25rem !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2 {\n margin-left: 0.5rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3 {\n margin-left: 1rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4 {\n margin-left: 1.5rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5 {\n margin-left: 3rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0 {\n padding-left: 0 !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1 {\n padding-left: 0.25rem !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2 {\n padding-left: 0.5rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3 {\n padding-left: 1rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4 {\n padding-left: 1.5rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5 {\n padding-left: 3rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto {\n margin-left: auto !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-normal {\n font-weight: normal;\n}\n\n.font-weight-bold {\n font-weight: bold;\n}\n\n.font-italic {\n font-style: italic;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-muted {\n color: #636c72 !important;\n}\n\na.text-muted:focus, a.text-muted:hover {\n color: #4b5257 !important;\n}\n\n.text-primary {\n color: #0275d8 !important;\n}\n\na.text-primary:focus, a.text-primary:hover {\n color: #025aa5 !important;\n}\n\n.text-success {\n color: #5cb85c !important;\n}\n\na.text-success:focus, a.text-success:hover {\n color: #449d44 !important;\n}\n\n.text-info {\n color: #5bc0de !important;\n}\n\na.text-info:focus, a.text-info:hover {\n color: #31b0d5 !important;\n}\n\n.text-warning {\n color: #f0ad4e !important;\n}\n\na.text-warning:focus, a.text-warning:hover {\n color: #ec971f !important;\n}\n\n.text-danger {\n color: #d9534f !important;\n}\n\na.text-danger:focus, a.text-danger:hover {\n color: #c9302c !important;\n}\n\n.text-gray-dark {\n color: #292b2c !important;\n}\n\na.text-gray-dark:focus, a.text-gray-dark:hover {\n color: #101112 !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n/*# sourceMappingURL=bootstrap.css.map */",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}
\ No newline at end of file +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_print.scss","bootstrap.css","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/mixins/_transition.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/mixins/_cards.scss","../../scss/_breadcrumb.scss","../../scss/mixins/_clearfix.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_responsive-embed.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/utilities/_align.scss","../../scss/utilities/_background.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss"],"names":[],"mappings":"AAAA;;;;;GAKG;ACMD;EACE;;;;;;;;;;;IAcE,6BAA4B;IAE5B,oCAA2B;YAA3B,4BAA2B;GAC5B;EAED;;IAEE,2BAA0B;GAC3B;EAOD;IACE,8BAA6B;GAC9B;EAaD;IACE,iCAAgC;GACjC;EACD;;IAEE,uBAAgC;IAChC,yBAAwB;GACzB;EAOD;IACE,4BAA2B;GAC5B;EAED;;IAEE,yBAAwB;GACzB;EAED;;;IAGE,WAAU;IACV,UAAS;GACV;EAED;;IAEE,wBAAuB;GACxB;EAKD;IACE,cAAa;GACd;EACD;IACE,uBAAgC;GACjC;EAED;IACE,qCAAoC;GAMrC;EAPD;;IAKI,kCAAiC;GAClC;EAEH;;IAGI,kCAAiC;GAClC;CC3CN;;AClDD;EACE,+BAAsB;UAAtB,uBAAsB;EACtB,wBAAuB;EACvB,kBAAiB;EACjB,+BAA8B;EAC9B,2BAA0B;EAC1B,8BAA6B;EAC7B,yCAA0C;CAC3C;;AAED;;;EAGE,4BAAmB;UAAnB,oBAAmB;CACpB;;AAIC;EAAgB,oBAAmB;CDoDpC;;AC3CD;EACE,UAAS;EACT,wGCqMiH;EDpMjH,gBCwMmB;EDvMnB,oBC4MyB;ED3MzB,iBC+MoB;ED9MpB,eCqDiC;EDpDjC,uBCwCW;CDvCZ;;AD+CD;ECvCE,yBAAwB;CACzB;;AAQD;EACE,gCAAuB;UAAvB,wBAAuB;EACvB,UAAS;EACT,kBAAiB;CAClB;;AAWD;EACE,cAAa;EACb,qBAAoB;CACrB;;AAMD;EACE,cAAa;EACb,oBAAmB;CACpB;;AASD;;EAEE,2BAA0B;EAC1B,kCAAiC;EACjC,aAAY;EACZ,iBAAgB;CACjB;;AAED;EACE,oBAAmB;EACnB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;;EAGE,cAAa;EACb,oBAAmB;CACpB;;AAED;;;;EAIE,iBAAgB;CACjB;;AAED;EACE,kBCuHqB;CDtHtB;;AAED;EACE,qBAAoB;EACpB,eAAc;CACf;;AAED;EACE,iBAAgB;CACjB;;AAED;EACE,mBAAkB;CACnB;;AAED;;EAEE,oBAAmB;CACpB;;AAED;EACE,eAAc;CACf;;AAOD;;EAEE,mBAAkB;EAClB,eAAc;EACd,eAAc;EACd,yBAAwB;CACzB;;AAED;EAAM,eAAc;CAAK;;AACzB;EAAM,WAAU;CAAK;;AAOrB;EACE,eCpFc;EDqFd,sBCf0B;EDgB1B,8BAA6B;EAC7B,sCAAqC;CAMtC;;AEtLG;EFmLA,eCnB4C;EDoB5C,2BCnB6B;CCjKR;;AF8LzB;EACE,eAAc;EACd,sBAAqB;CAUtB;;AE/LG;EFwLA,eAAc;EACd,sBAAqB;CEtLpB;;AFgLL;EAUI,WAAU;CACX;;AAQH;;;;EAIE,kCAAiC;EACjC,eAAc;CACf;;AAED;EAEE,cAAa;EAEb,oBAAmB;EAEnB,eAAc;CACf;;AAOD;EAEE,iBAAgB;CACjB;;AAOD;EACE,uBAAsB;EACtB,mBAAkB;CACnB;;AAED;EACE,iBAAgB;CACjB;;AAaD;;;;;;;;;EASE,+BAA0B;MAA1B,2BAA0B;CAC3B;;AAOD;EACE,0BAAyB;CAC1B;;AAED;EACE,qBCoBoC;EDnBpC,wBCmBoC;EDlBpC,eC5LiC;ED6LjC,iBAAgB;EAChB,qBAAoB;CACrB;;AAED;EAEE,iBAAgB;CACjB;;AAOD;EAEE,sBAAqB;EACrB,qBAAoB;CACrB;;AAMD;EACE,oBAAmB;EACnB,2CAA0C;CAC3C;;AAED;;;;;EAKE,UAAS;EACT,qBAAoB;EACpB,mBAAkB;EAClB,qBAAoB;CACrB;;AAED;;EAEE,kBAAiB;CAClB;;AAED;;EAEE,qBAAoB;CACrB;;AAKD;;;;EAIE,2BAA0B;CAC3B;;AAGD;;;;EAIE,WAAU;EACV,mBAAkB;CACnB;;AAED;;EAEE,+BAAsB;UAAtB,uBAAsB;EACtB,WAAU;CAQX;;AAXD;;EASI,oBC4DwC;CD3DzC;;AAIH;;;;EASE,4BAA2B;CAC5B;;AAED;EACE,eAAc;EAEd,iBAAgB;CACjB;;AAED;EAME,aAAY;EAEZ,WAAU;EACV,UAAS;EACT,UAAS;CACV;;AAID;EACE,eAAc;EACd,YAAW;EACX,gBAAe;EACf,WAAU;EACV,qBAAoB;EACpB,kBAAiB;EACjB,qBAAoB;EACpB,eAAc;EACd,oBAAmB;CACpB;;AAED;EACE,yBAAwB;CACzB;;AD9DD;;ECmEE,aAAY;CACb;;AD/DD;ECsEE,qBAAoB;EACpB,yBAAwB;CACzB;;ADnED;;EC2EE,yBAAwB;CACzB;;AAOD;EACE,cAAa;EACb,2BAA0B;CAC3B;;AAMD;EACE,sBAAqB;CACtB;;AAED;EACE,mBAAkB;CACnB;;AAED;EACE,cAAa;CACd;;ADhFD;ECqFE,yBAAwB;CACzB;;AG/dD;;EAEE,sBFsQoC;EErQpC,qBFsQ8B;EErQ9B,iBFsQ0B;EErQ1B,iBFsQ0B;EErQ1B,eFsQ8B;CErQ/B;;AAED;EAAU,kBFwPW;CExPiB;;AACtC;EAAU,gBFwPS;CExPmB;;AACtC;EAAU,mBFwPY;CExPgB;;AACtC;EAAU,kBFwPW;CExPiB;;AACtC;EAAU,mBFwPY;CExPgB;;AACtC;EAAU,gBFwPS;CExPmB;;AAEtC;EACE,mBFwQwB;EEvQxB,iBFwQoB;CEvQrB;;AAGD;EACE,gBFuPkB;EEtPlB,iBF2PuB;EE1PvB,iBFkP0B;CEjP3B;;AACD;EACE,kBFmPoB;EElPpB,iBFuPuB;EEtPvB,iBF6O0B;CE5O3B;;AACD;EACE,kBF+OoB;EE9OpB,iBFmPuB;EElPvB,iBFwO0B;CEvO3B;;AACD;EACE,kBF2OoB;EE1OpB,iBF+OuB;EE9OvB,iBFmO0B;CElO3B;;AAOD;EACE,iBAAgB;EAChB,oBAAmB;EACnB,UAAS;EACT,yCFuCW;CEtCZ;;AAOD;;EAEE,eF8NmB;EE7NnB,oBF4LyB;CE3L1B;;AAED;;EAEE,eFoOiB;EEnOjB,0BFolBsC;CEnlBvC;;AAOD;EC7EE,gBAAe;EACf,iBAAgB;CD8EjB;;AAGD;EClFE,gBAAe;EACf,iBAAgB;CDmFjB;;AACD;EACE,sBAAqB;CAKtB;;AAND;EAII,kBFsNqB;CErNtB;;AASH;EACE,eAAc;EACd,0BAAyB;CAC1B;;AAGD;EACE,qBF8BW;EE7BX,oBF6BW;EE5BX,mBFqLgD;EEpLhD,mCFJiC;CEKlC;;AAED;EACE,eAAc;EACd,eAAc;EACd,eFXiC;CEgBlC;;AARD;EAMI,uBAAsB;CACvB;;AAIH;EACE,oBFYW;EEXX,gBAAe;EACf,kBAAiB;EACjB,oCFtBiC;EEuBjC,eAAc;CACf;;AAED;EAEI,YAAW;CACZ;;AAHH;EAKI,uBAAsB;CACvB;;AEtIH;ECIE,gBAAe;EAGf,aAAY;CDLb;;AAID;EACE,iBJ80BkC;EI70BlC,uBJ+EW;EI9EX,uBJ+0BgC;EM31B9B,uBNgO2B;EO/NzB,yCP61B2C;EO71B3C,oCP61B2C;EO71B3C,iCP61B2C;EKv1B/C,gBAAe;EAGf,aAAY;CDSb;;AAMD;EAEE,sBAAqB;CACtB;;AAED;EACE,sBAA4B;EAC5B,eAAc;CACf;;AAED;EACE,eJ+zB4B;EI9zB5B,eJmEiC;CIlElC;;AIzCD;;;;EAIE,kFRkP2F;CQjP5F;;AAGD;EACE,uBR84BiC;EQ74BjC,eR24B+B;EQ14B/B,eR64BmC;EQ54BnC,0BRiGiC;EM1G/B,uBNgO2B;CQ9M9B;;AALC;EACE,WAAU;EACV,eAAc;EACd,0BAAyB;CAC1B;;AAIH;EACE,uBR83BiC;EQ73BjC,eR23B+B;EQ13B/B,YRkEW;EQjEX,0BR6EiC;EMtG/B,sBNkO0B;CQ/L7B;;AAdD;EASI,WAAU;EACV,gBAAe;EACf,kBR4NmB;CQ1NpB;;AAIH;EACE,eAAc;EACd,cAAa;EACb,oBAAmB;EACnB,eRw2B+B;EQv2B/B,eR2DiC;CQjDlC;;AAfD;EASI,WAAU;EACV,mBAAkB;EAClB,eAAc;EACd,8BAA6B;EAC7B,iBAAgB;CACjB;;AAIH;EACE,kBRm2BiC;EQl2BjC,mBAAkB;CACnB;;AC1DC;ECAA,mBAAkB;EAClB,kBAAiB;EAKb,oBAA4B;EAC5B,mBAA4B;CDJ/B;;AEgDC;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CXmnBF;;AankBG;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CX0nBF;;Aa1kBG;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CXioBF;;AajlBG;EFnDF;ICMI,oBAA4B;IAC5B,mBAA4B;GDJ/B;CXwoBF;;AaxlBG;EFnDF;ICiBI,aV8KK;IU7KL,gBAAe;GDflB;CX+oBF;;Aa/lBG;EFnDF;ICiBI,aV+KK;IU9KL,gBAAe;GDflB;CXspBF;;AatmBG;EFnDF;ICiBI,aVgLK;IU/KL,gBAAe;GDflB;CX6pBF;;Aa7mBG;EFnDF;ICiBI,cViLM;IUhLN,gBAAe;GDflB;CXoqBF;;AW3pBC;EACE,YAAW;ECbb,mBAAkB;EAClB,kBAAiB;EAKb,oBAA4B;EAC5B,mBAA4B;CDQ/B;;AEoCC;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDQ/B;CXuqBF;;AanoBG;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDQ/B;CX8qBF;;Aa1oBG;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDQ/B;CXqrBF;;AajpBG;EFvCF;ICNI,oBAA4B;IAC5B,mBAA4B;GDQ/B;CX4rBF;;AWprBC;ECWA,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,wBAAe;MAAf,oBAAe;UAAf,gBAAe;EAKX,oBAA4B;EAC5B,mBAA4B;CDhB/B;;AE0BC;EF5BF;ICiBI,oBAA4B;IAC5B,mBAA4B;GDhB/B;CXgsBF;;AatqBG;EF5BF;ICiBI,oBAA4B;IAC5B,mBAA4B;GDhB/B;CXusBF;;Aa7qBG;EF5BF;ICiBI,oBAA4B;IAC5B,mBAA4B;GDhB/B;CX8sBF;;AaprBG;EF5BF;ICiBI,oBAA4B;IAC5B,mBAA4B;GDhB/B;CXqtBF;;AWjtBC;EACE,gBAAe;EACf,eAAc;CAOf;;AATD;;EAMI,iBAAgB;EAChB,gBAAe;CAChB;;AGnCH;;;;;;EACE,mBAAkB;EAClB,YAAW;EACX,gBAAe;EFsBb,oBAA4B;EAC5B,mBAA4B;CEpB/B;;AD2CC;ECjDF;;;;;;IFyBI,oBAA4B;IAC5B,mBAA4B;GEpB/B;Cd0wBF;;Aa/tBG;ECjDF;;;;;;IFyBI,oBAA4B;IAC5B,mBAA4B;GEpB/B;CdsxBF;;Aa3uBG;ECjDF;;;;;;IFyBI,oBAA4B;IAC5B,mBAA4B;GEpB/B;CdkyBF;;AavvBG;ECjDF;;;;;;IFyBI,oBAA4B;IAC5B,mBAA4B;GEpB/B;Cd8yBF;;Ac5xBK;EACE,sBAAa;MAAb,2BAAa;UAAb,cAAa;EACb,oBAAY;EAAZ,qBAAY;MAAZ,qBAAY;UAAZ,aAAY;EACZ,gBAAe;CAChB;;AACD;EACE,oBAAc;EAAd,uBAAc;MAAd,mBAAc;UAAd,eAAc;EACd,YAAW;CACZ;;AAGC;EF2BN,iBAAmC;CEzB5B;;AAFD;EF2BN,kBAAmC;CEzB5B;;AAFD;EF2BN,WAAmC;CEzB5B;;AAFD;EF2BN,kBAAmC;CEzB5B;;AAFD;EF2BN,kBAAmC;CEzB5B;;AAFD;EF2BN,WAAmC;CEzB5B;;AAFD;EF2BN,kBAAmC;CEzB5B;;AAFD;EF2BN,kBAAmC;CEzB5B;;AAFD;EF2BN,WAAmC;CEzB5B;;AAFD;EF2BN,kBAAmC;CEzB5B;;AAFD;EF2BN,kBAAmC;CEzB5B;;AAFD;EF2BN,YAAmC;CEzB5B;;AAKC;EFgCR,YAAuD;CE9B9C;;AAFD;EFgCR,iBAAiD;CE9BxC;;AAFD;EFgCR,kBAAiD;CE9BxC;;AAFD;EFgCR,WAAiD;CE9BxC;;AAFD;EFgCR,kBAAiD;CE9BxC;;AAFD;EFgCR,kBAAiD;CE9BxC;;AAFD;EFgCR,WAAiD;CE9BxC;;AAFD;EFgCR,kBAAiD;CE9BxC;;AAFD;EFgCR,kBAAiD;CE9BxC;;AAFD;EFgCR,WAAiD;CE9BxC;;AAFD;EFgCR,kBAAiD;CE9BxC;;AAFD;EFgCR,kBAAiD;CE9BxC;;AAFD;EFgCR,YAAiD;CE9BxC;;AAFD;EF4BR,WAAsD;CE1B7C;;AAFD;EF4BR,gBAAgD;CE1BvC;;AAFD;EF4BR,iBAAgD;CE1BvC;;AAFD;EF4BR,UAAgD;CE1BvC;;AAFD;EF4BR,iBAAgD;CE1BvC;;AAFD;EF4BR,iBAAgD;CE1BvC;;AAFD;EF4BR,UAAgD;CE1BvC;;AAFD;EF4BR,iBAAgD;CE1BvC;;AAFD;EF4BR,iBAAgD;CE1BvC;;AAFD;EF4BR,UAAgD;CE1BvC;;AAFD;EF4BR,iBAAgD;CE1BvC;;AAFD;EF4BR,iBAAgD;CE1BvC;;AAFD;EF4BR,WAAgD;CE1BvC;;AAOD;EFeR,uBAAyC;CEbhC;;AAFD;EFeR,wBAAyC;CEbhC;;AAFD;EFeR,iBAAyC;CEbhC;;AAFD;EFeR,wBAAyC;CEbhC;;AAFD;EFeR,wBAAyC;CEbhC;;AAFD;EFeR,iBAAyC;CEbhC;;AAFD;EFeR,wBAAyC;CEbhC;;AAFD;EFeR,wBAAyC;CEbhC;;AAFD;EFeR,iBAAyC;CEbhC;;AAFD;EFeR,wBAAyC;CEbhC;;AAFD;EFeR,wBAAyC;CEbhC;;ADJP;ECzBE;IACE,sBAAa;QAAb,2BAAa;YAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;QAAZ,qBAAY;YAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,uBAAc;QAAd,mBAAc;YAAd,eAAc;IACd,YAAW;GACZ;EAGC;IF2BN,iBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,YAAmC;GEzB5B;EAKC;IFgCR,YAAuD;GE9B9C;EAFD;IFgCR,iBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,YAAiD;GE9BxC;EAFD;IF4BR,WAAsD;GE1B7C;EAFD;IF4BR,gBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,WAAgD;GE1BvC;EAOD;IFeR,gBAAyC;GEbhC;EAFD;IFeR,uBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;CdgnCV;;AapnCG;ECzBE;IACE,sBAAa;QAAb,2BAAa;YAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;QAAZ,qBAAY;YAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,uBAAc;QAAd,mBAAc;YAAd,eAAc;IACd,YAAW;GACZ;EAGC;IF2BN,iBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,YAAmC;GEzB5B;EAKC;IFgCR,YAAuD;GE9B9C;EAFD;IFgCR,iBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,YAAiD;GE9BxC;EAFD;IF4BR,WAAsD;GE1B7C;EAFD;IF4BR,gBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,WAAgD;GE1BvC;EAOD;IFeR,gBAAyC;GEbhC;EAFD;IFeR,uBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;CdkxCV;;AatxCG;ECzBE;IACE,sBAAa;QAAb,2BAAa;YAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;QAAZ,qBAAY;YAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,uBAAc;QAAd,mBAAc;YAAd,eAAc;IACd,YAAW;GACZ;EAGC;IF2BN,iBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,YAAmC;GEzB5B;EAKC;IFgCR,YAAuD;GE9B9C;EAFD;IFgCR,iBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,YAAiD;GE9BxC;EAFD;IF4BR,WAAsD;GE1B7C;EAFD;IF4BR,gBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,WAAgD;GE1BvC;EAOD;IFeR,gBAAyC;GEbhC;EAFD;IFeR,uBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;Cdo7CV;;Aax7CG;ECzBE;IACE,sBAAa;QAAb,2BAAa;YAAb,cAAa;IACb,oBAAY;IAAZ,qBAAY;QAAZ,qBAAY;YAAZ,aAAY;IACZ,gBAAe;GAChB;EACD;IACE,oBAAc;IAAd,uBAAc;QAAd,mBAAc;YAAd,eAAc;IACd,YAAW;GACZ;EAGC;IF2BN,iBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,WAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,kBAAmC;GEzB5B;EAFD;IF2BN,YAAmC;GEzB5B;EAKC;IFgCR,YAAuD;GE9B9C;EAFD;IFgCR,iBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,WAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,kBAAiD;GE9BxC;EAFD;IFgCR,YAAiD;GE9BxC;EAFD;IF4BR,WAAsD;GE1B7C;EAFD;IF4BR,gBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,UAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,iBAAgD;GE1BvC;EAFD;IF4BR,WAAgD;GE1BvC;EAOD;IFeR,gBAAyC;GEbhC;EAFD;IFeR,uBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,iBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;EAFD;IFeR,wBAAyC;GEbhC;CdslDV;;Ae9oDD;EACE,YAAW;EACX,gBAAe;EACf,oBbqIW;EapIX,8BbqTyC;CahS1C;;AAzBD;;EAQI,iBb8SkC;Ea7SlC,oBAAmB;EACnB,8Bb+F+B;Ca9FhC;;AAXH;EAcI,uBAAsB;EACtB,iCb0F+B;CazFhC;;AAhBH;EAmBI,8BbsF+B;CarFhC;;AApBH;EAuBI,uBbmES;CalEV;;AAQH;;EAGI,gBboRiC;CanRlC;;AAQH;EACE,0Bb4DiC;Ca/ClC;;AAdD;;EAKI,0BbwD+B;CavDhC;;AANH;;EAWM,yBAA8C;CAC/C;;AASL;EAEI,sCbwBS;CavBV;;AAQH;EAGM,uCbYO;CCpFY;;AaNvB;;;EAII,uCdsFO;CcrFR;;AAKH;EAKM,uCAJsC;CbLrB;;AaIvB;;EASQ,uCARoC;CASrC;;AApBP;;;EAII,0Bd4oBkC;Cc3oBnC;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BdgpBkC;Cc/oBnC;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BdopBkC;CcnpBnC;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;AApBP;;;EAII,0BdypBkC;CcxpBnC;;AAKH;EAKM,0BAJsC;CbLrB;;AaIvB;;EASQ,0BARoC;CASrC;;ADiFT;EAEI,YbdS;EaeT,0BbH+B;CaIhC;;AAGH;EAEI,ebR+B;EaS/B,0BbP+B;CaQhC;;AAGH;EACE,Yb3BW;Ea4BX,0BbhBiC;CayClC;;AA3BD;;;EAOI,sBb6MqD;Ca5MtD;;AARH;EAWI,UAAS;CACV;;AAZH;EAgBM,4Cb1CO;Ca2CR;;AAjBL;EAuBQ,6CbjDK;CCnFY;;AU0DrB;EEuFJ;IAEI,eAAc;IACd,YAAW;IACX,iBAAgB;IAChB,6CAA4C;GAO/C;EAZD;IASM,UAAS;GACV;Cf0pDJ;;AiB1zDD;EACE,eAAc;EACd,YAAW;EAGX,qBf0U8B;EezU9B,gBf8OmB;Ee7OnB,kBfyU8B;EexU9B,ef6FiC;Ee5FjC,uBf+EW;Ee7EX,uBAAsB;EACtB,qCAA4B;UAA5B,6BAA4B;EAC5B,sCf4EW;EevET,uBf4M2B;EO/NzB,yFP6ZqF;EO7ZrF,iFP6ZqF;EO7ZrF,4EP6ZqF;EO7ZrF,yEP6ZqF;EO7ZrF,+GP6ZqF;CelW1F;;AA1DD;EA6BI,8BAA6B;EAC7B,UAAS;CACV;;ACUD;EACE,ehB2D+B;EgB1D/B,uBhB6CS;EgB5CT,sBhBsWyD;EgBrWzD,cAAa;CAEd;;AD/CH;EAsCI,efgE+B;Ee9D/B,WAAU;CACX;;AAzCH;EAsCI,efgE+B;Ee9D/B,WAAU;CACX;;AAzCH;EAsCI,efgE+B;Ee9D/B,WAAU;CACX;;AAzCH;EAsCI,efgE+B;Ee9D/B,WAAU;CACX;;AAzCH;EAkDI,0BfqD+B;EenD/B,WAAU;CACX;;AArDH;EAwDI,oBfqXwC;CepXzC;;AAGH;EAGI,4BAAwD;CACzD;;AAJH;EAYI,ef6B+B;Ee5B/B,uBfeS;CedV;;AAIH;;EAEE,eAAc;CACf;;AASD;EACE,oCAA2E;EAC3E,uCAA8E;EAC9E,iBAAgB;CACjB;;AAED;EACE,oCAA8E;EAC9E,uCAAiF;EACjF,mBfkJsB;CejJvB;;AAED;EACE,qCAA8E;EAC9E,wCAAiF;EACjF,oBf6IsB;Ce5IvB;;AASD;EACE,oBf0N+B;EezN/B,uBfyN+B;EexN/B,iBAAgB;EAChB,gBf6HmB;Ce5HpB;;AAQD;EACE,oBf6M+B;Ee5M/B,uBf4M+B;Ee3M/B,iBAAgB;EAChB,kBf4M8B;Ee3M9B,0BAAyB;EACzB,oBAAuC;CAOxC;;AAbD;;;;;EAUI,iBAAgB;EAChB,gBAAe;CAChB;;AAYH;;;EACE,wBf0L+B;EezL/B,oBf4FsB;Ee3FtB,iBfyL6B;EMtV3B,sBNkO0B;CenE7B;;AAED;;;EAGI,8BAA2D;CAC5D;;AAGH;;;EACE,qBfgL8B;Ee/K9B,mBf6EsB;Ee5EtB,iBf+K6B;EM1V3B,sBNiO0B;CepD7B;;AAED;;;EAGI,6BAA2D;CAC5D;;AASH;EACE,oBf6OmC;Ce5OpC;;AAED;EACE,eAAc;EACd,oBf8N+B;Ce7NhC;;AAOD;EACE,mBAAkB;EAClB,eAAc;EACd,sBfsN+B;Ce9MhC;;AAXD;EAOM,efzG6B;Ee0G7B,oBf6NsC;Ce5NvC;;AAIL;EACE,sBf4MiC;Ee3MjC,iBAAgB;CACjB;;AAED;EACE,mBAAkB;EAClB,oBfuMgC;EetMhC,sBfqMiC;CehMlC;;AARD;EAMI,iBAAgB;CACjB;;AAIH;EACE,sBAAqB;CAStB;;AAVD;EAII,uBAAsB;CACvB;;AALH;EAQI,qBfyL+B;CexLhC;;AAQH;EACE,oBfuK+B;CetKhC;;AAED;;;EAGE,oBAAyC;EACzC,6BAA4B;EAC5B,4CAAqD;EACrD,2CAAwD;UAAxD,mCAAwD;CACzD;;AChQC;;;;;EAKE,ehBuFY;CgBtFb;;AAGD;;;EAGE,sBhBgFY;CgB3Eb;;AAGD;EACE,ehBuEY;EgBtEZ,0BAAsC;EACtC,sBhBqEY;CgBpEb;;AD2OH;EAII,0QfzMuI;Ce0MxI;;ACxQD;;;;;EAKE,ehBqFY;CgBpFb;;AAGD;;;EAGE,sBhB8EY;CgBzEb;;AAGD;EACE,ehBqEY;EgBpEZ,wBAAsC;EACtC,sBhBmEY;CgBlEb;;ADmPH;EAII,mVfjNuI;CekNxI;;AChRD;;;;;EAKE,ehBoFY;CgBnFb;;AAGD;;;EAGE,sBhB6EY;CgBxEb;;AAGD;EACE,ehBoEY;EgBnEZ,0BAAsC;EACtC,sBhBkEY;CgBjEb;;AD2PH;EAII,oTfzNuI;Ce0NxI;;AAaH;EACE,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,+BAAmB;EAAnB,8BAAmB;EAAnB,4BAAmB;MAAnB,wBAAmB;UAAnB,oBAAmB;EACnB,0BAAmB;EAAnB,4BAAmB;MAAnB,uBAAmB;UAAnB,oBAAmB;CAuFpB;;AA1FD;EASI,YAAW;CACZ;;AJ9PC;EIoPJ;IAeM,qBAAa;IAAb,sBAAa;IAAb,qBAAa;IAAb,cAAa;IACb,0BAAmB;IAAnB,4BAAmB;QAAnB,uBAAmB;YAAnB,oBAAmB;IACnB,yBAAuB;IAAvB,gCAAuB;QAAvB,sBAAuB;YAAvB,wBAAuB;IACvB,iBAAgB;GACjB;EAnBL;IAuBM,qBAAa;IAAb,sBAAa;IAAb,qBAAa;IAAb,cAAa;IACb,oBAAc;IAAd,uBAAc;QAAd,mBAAc;YAAd,eAAc;IACd,+BAAmB;IAAnB,8BAAmB;IAAnB,4BAAmB;QAAnB,wBAAmB;YAAnB,oBAAmB;IACnB,0BAAmB;IAAnB,4BAAmB;QAAnB,uBAAmB;YAAnB,oBAAmB;IACnB,iBAAgB;GACjB;EA5BL;IAgCM,sBAAqB;IACrB,YAAW;IACX,uBAAsB;GACvB;EAnCL;IAuCM,sBAAqB;GACtB;EAxCL;IA2CM,YAAW;GACZ;EA5CL;IA+CM,iBAAgB;IAChB,uBAAsB;GACvB;EAjDL;IAsDM,qBAAa;IAAb,sBAAa;IAAb,qBAAa;IAAb,cAAa;IACb,0BAAmB;IAAnB,4BAAmB;QAAnB,uBAAmB;YAAnB,oBAAmB;IACnB,yBAAuB;IAAvB,gCAAuB;QAAvB,sBAAuB;YAAvB,wBAAuB;IACvB,YAAW;IACX,cAAa;IACb,iBAAgB;GACjB;EA5DL;IA8DM,gBAAe;GAChB;EA/DL;IAiEM,mBAAkB;IAClB,cAAa;IACb,sBf2D4B;Ie1D5B,eAAc;GACf;EArEL;IAyEM,qBAAa;IAAb,sBAAa;IAAb,qBAAa;IAAb,cAAa;IACb,0BAAmB;IAAnB,4BAAmB;QAAnB,uBAAmB;YAAnB,oBAAmB;IACnB,yBAAuB;IAAvB,gCAAuB;QAAvB,sBAAuB;YAAvB,wBAAuB;IACvB,gBAAe;GAChB;EA7EL;IA+EM,iBAAgB;IAChB,sBAAqB;IACrB,sBf6C4B;Ie5C5B,4BAA2B;GAC5B;EAnFL;IAuFM,OAAM;GACP;CjBywDJ;;AmBvoED;EACE,sBAAqB;EACrB,oBjBuPyB;EiBtPzB,mBAAkB;EAClB,oBAAmB;EACnB,uBAAsB;EACtB,0BAAiB;KAAjB,uBAAiB;MAAjB,sBAAiB;UAAjB,kBAAiB;EACjB,8BAAiD;ECqEjD,qBlBmQ8B;EkBlQ9B,gBlBuKmB;EkBtKnB,kBlBkQ8B;EMlV5B,uBNgO2B;EO/NzB,yCPiY8C;EOjY9C,oCPiY8C;EOjY9C,iCPiY8C;CiB9VnD;;AhBlBG;EgBHA,sBAAqB;ChBMpB;;AgBnBL;EAiBI,WAAU;EACV,sDjB4EY;UiB5EZ,8CjB4EY;CiB3Eb;;AAnBH;EAwBI,oBjBqZwC;EiBpZxC,aAAY;CAEb;;AA3BH;EA+BI,uBAAsB;CAEvB;;AAIH;;EAEE,qBAAoB;CACrB;;AAOD;EC5CE,YlBqFW;EkBpFX,0BlB0Fc;EkBzFd,sBlByFc;CiB7Cf;;AhB5CG;EiBKA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,qDlB0EU;UkB1EV,6ClB0EU;CkBxEb;;AAGD;EAEE,0BlBmEY;EkBlEZ,sBlBkEY;CkBjEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADWH;EC/CE,elBiGiC;EkBhGjC,uBlBoFW;EkBnFX,mBlBgWmC;CiBjTpC;;AhB/CG;EiBKA,elB0F+B;EkBzF/B,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,uDlBiV+B;UkBjV/B,+ClBiV+B;CkB/UlC;;AAGD;EAEE,uBlB6DS;EkB5DT,mBlByUiC;CkBxUlC;;AAED;;EAGE,elBkE+B;EkBjE/B,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADcH;EClDE,YlBqFW;EkBpFX,0BlB2Fc;EkB1Fd,sBlB0Fc;CiBxCf;;AhBlDG;EiBKA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,sDlB2EU;UkB3EV,8ClB2EU;CkBzEb;;AAGD;EAEE,0BlBoEY;EkBnEZ,sBlBmEY;CkBlEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADiBH;ECrDE,YlBqFW;EkBpFX,0BlByFc;EkBxFd,sBlBwFc;CiBnCf;;AhBrDG;EiBKA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,qDlByEU;UkBzEV,6ClByEU;CkBvEb;;AAGD;EAEE,0BlBkEY;EkBjEZ,sBlBiEY;CkBhEb;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADoBH;ECxDE,YlBqFW;EkBpFX,0BlBuFc;EkBtFd,sBlBsFc;CiB9Bf;;AhBxDG;EiBKA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,sDlBuEU;UkBvEV,8ClBuEU;CkBrEb;;AAGD;EAEE,0BlBgEY;EkB/DZ,sBlB+DY;CkB9Db;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;ADuBH;EC3DE,YlBqFW;EkBpFX,0BlBsFc;EkBrFd,sBlBqFc;CiB1Bf;;AhB3DG;EiBKA,YlB8ES;EkB7ET,0BAX0C;EAY1C,sBAXkC;CjBIb;;AiBSvB;EAMI,qDlBsEU;UkBtEV,6ClBsEU;CkBpEb;;AAGD;EAEE,0BlB+DY;EkB9DZ,sBlB8DY;CkB7Db;;AAED;;EAGE,YlBsDS;EkBrDT,0BAnC0C;EAoC1C,uBAAsB;EACtB,sBApCkC;CAsCnC;;AD4BH;ECxBE,elBmDc;EkBlDd,8BAA6B;EAC7B,uBAAsB;EACtB,sBlBgDc;CiBzBf;;AhBhEG;EiB4CA,YlBuCS;EkBtCT,0BlB4CY;EkB3CZ,sBlB2CY;CCzFS;;AiBiDvB;EAEE,qDlBsCY;UkBtCZ,6ClBsCY;CkBrCb;;AAED;EAEE,elBiCY;EkBhCZ,8BAA6B;CAC9B;;AAED;;EAGE,YlBoBS;EkBnBT,0BlByBY;EkBxBZ,sBlBwBY;CkBvBb;;ADDH;EC3BE,YlB0TmC;EkBzTnC,8BAA6B;EAC7B,uBAAsB;EACtB,mBlBuTmC;CiB7RpC;;AhBnEG;EiB4CA,elBmD+B;EkBlD/B,uBlBmTiC;EkBlTjC,mBlBkTiC;CChWZ;;AiBiDvB;EAEE,uDlB6SiC;UkB7SjC,+ClB6SiC;CkB5SlC;;AAED;EAEE,YlBwSiC;EkBvSjC,8BAA6B;CAC9B;;AAED;;EAGE,elBgC+B;EkB/B/B,uBlBgSiC;EkB/RjC,mBlB+RiC;CkB9RlC;;ADEH;EC9BE,elBoDc;EkBnDd,8BAA6B;EAC7B,uBAAsB;EACtB,sBlBiDc;CiBpBf;;AhBtEG;EiB4CA,YlBuCS;EkBtCT,0BlB6CY;EkB5CZ,sBlB4CY;CC1FS;;AiBiDvB;EAEE,sDlBuCY;UkBvCZ,8ClBuCY;CkBtCb;;AAED;EAEE,elBkCY;EkBjCZ,8BAA6B;CAC9B;;AAED;;EAGE,YlBoBS;EkBnBT,0BlB0BY;EkBzBZ,sBlByBY;CkBxBb;;ADKH;ECjCE,elBkDc;EkBjDd,8BAA6B;EAC7B,uBAAsB;EACtB,sBlB+Cc;CiBff;;AhBzEG;EiB4CA,YlBuCS;EkBtCT,0BlB2CY;EkB1CZ,sBlB0CY;CCxFS;;AiBiDvB;EAEE,qDlBqCY;UkBrCZ,6ClBqCY;CkBpCb;;AAED;EAEE,elBgCY;EkB/BZ,8BAA6B;CAC9B;;AAED;;EAGE,YlBoBS;EkBnBT,0BlBwBY;EkBvBZ,sBlBuBY;CkBtBb;;ADQH;ECpCE,elBgDc;EkB/Cd,8BAA6B;EAC7B,uBAAsB;EACtB,sBlB6Cc;CiBVf;;AhB5EG;EiB4CA,YlBuCS;EkBtCT,0BlByCY;EkBxCZ,sBlBwCY;CCtFS;;AiBiDvB;EAEE,sDlBmCY;UkBnCZ,8ClBmCY;CkBlCb;;AAED;EAEE,elB8BY;EkB7BZ,8BAA6B;CAC9B;;AAED;;EAGE,YlBoBS;EkBnBT,0BlBsBY;EkBrBZ,sBlBqBY;CkBpBb;;ADWH;ECvCE,elB+Cc;EkB9Cd,8BAA6B;EAC7B,uBAAsB;EACtB,sBlB4Cc;CiBNf;;AhB/EG;EiB4CA,YlBuCS;EkBtCT,0BlBwCY;EkBvCZ,sBlBuCY;CCrFS;;AiBiDvB;EAEE,qDlBkCY;UkBlCZ,6ClBkCY;CkBjCb;;AAED;EAEE,elB6BY;EkB5BZ,8BAA6B;CAC9B;;AAED;;EAGE,YlBoBS;EkBnBT,0BlBqBY;EkBpBZ,sBlBoBY;CkBnBb;;ADqBH;EACE,oBjB4JyB;EiB3JzB,ejBAc;EiBCd,iBAAgB;CA6BjB;;AAhCD;EASI,8BAA6B;CAE9B;;AAXH;EAeI,0BAAyB;CAC1B;;AhBvGC;EgByGA,0BAAyB;ChBzGJ;;AAWrB;EgBiGA,ejBoD4C;EiBnD5C,2BjBoD6B;EiBnD7B,8BAA6B;ChBhG5B;;AgByEL;EA0BI,ejBhB+B;CiBqBhC;;AhB3GC;EgByGE,sBAAqB;ChBtGtB;;AgBgHL;ECvDE,qBlB2Q8B;EkB1Q9B,mBlBwKsB;EkBvKtB,iBlB2I0B;EM3NxB,sBNiO0B;CiB1F7B;;AAED;EC3DE,wBlBuQ+B;EkBtQ/B,oBlByKsB;EkBxKtB,iBlB4I0B;EM5NxB,sBNkO0B;CiBvF7B;;AAOD;EACE,eAAc;EACd,YAAW;CACZ;;AAGD;EACE,mBjBkOoC;CiBjOrC;;AAGD;;;EAII,YAAW;CACZ;;AEtKH;EACE,WAAU;EZIN,yCPyOsC;EOzOtC,oCPyOsC;EOzOtC,iCPyOsC;CmBvO3C;;AAPD;EAKI,WAAU;CACX;;AAGH;EACE,cAAa;CAId;;AALD;EAGI,eAAc;CACf;;AAGH;EAEI,mBAAkB;CACnB;;AAGH;EAEI,yBAAwB;CACzB;;AAGH;EACE,mBAAkB;EAClB,UAAS;EACT,iB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,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EAEb,gBAAe;EACf,iBAAgB;EzBAd,uBNgO2B;C+B9N9B;;AAED;EAGM,eAAc;EzBoBhB,gCNqM2B;EMpM3B,mCNoM2B;C+BvN1B;;AALL;EzBSI,iCNmN2B;EMlN3B,oCNkN2B;C+BlN1B;;AAVL;EAcI,WAAU;EACV,Y/BuES;E+BtET,0B/B4EY;E+B3EZ,sB/B2EY;C+B1Eb;;AAlBH;EAqBI,e/B+E+B;E+B9E/B,qBAAoB;EACpB,oB/BoZwC;E+BnZxC,uB/B8DS;E+B7DT,mB/BsmBuC;C+BrmBxC;;AAGH;EACE,mBAAkB;EAClB,eAAc;EACd,wB/BykB0C;E+BxkB1C,kBAAiB;EACjB,kB/B4kBwC;E+B3kBxC,e/ByDc;E+BxDd,uB/BkDW;E+BjDX,uB/B8kByC;C+BtkB1C;;A9B/BG;E8B0BA,e/B2H4C;E+B1H5C,sBAAqB;EACrB,0B/B2D+B;E+B1D/B,mB/B4kBuC;CCtmBtC;;A+BtBH;EACE,wBhCinBwC;EgChnBxC,mBhCsPoB;CgCrPrB;;AAIG;E1BqBF,+BNsM0B;EMrM1B,kCNqM0B;CgCzNvB;;AAGD;E1BEF,gCNoN0B;EMnN1B,mCNmN0B;CgCpNvB;;AAdL;EACE,wBhC+mBuC;EgC9mBvC,oBhCuPoB;CgCtPrB;;AAIG;E1BqBF,+BNuM0B;EMtM1B,kCNsM0B;CgC1NvB;;AAGD;E1BEF,gCNqN0B;EMpN1B,mCNoN0B;CgCrNvB;;ACZP;EACE,sBAAqB;EACrB,sBjC0uBgC;EiCzuBhC,ejCsuB+B;EiCruB/B,kBjCuPqB;EiCtPrB,eAAc;EACd,YjCmFW;EiClFX,mBAAkB;EAClB,oBAAmB;EACnB,yBAAwB;E3BVtB,uBNgO2B;CiC/M9B;;AAhBD;EAcI,cAAa;CACd;;AAIH;EACE,mBAAkB;EAClB,UAAS;CACV;;AhCLG;EgCWA,YjC6DS;EiC5DT,sBAAqB;ChCTpB;;AgCkBL;EACE,qBjCusBgC;EiCtsBhC,oBjCssBgC;EM/uB9B,qBNkvB+B;CiCvsBlC;;AAMD;EClDE,0BlCyGiC;CiCrDlC;;AhCjCG;EiCfE,0BAAqC;CjCkBtC;;AgCgCL;ECtDE,0BlCiGc;CiCzCf;;AhCrCG;EiCfE,0BAAqC;CjCkBtC;;AgCoCL;EC1DE,0BlCgGc;CiCpCf;;AhCzCG;EiCfE,0BAAqC;CjCkBtC;;AgCwCL;EC9DE,0BlCkGc;CiClCf;;AhC7CG;EiCfE,0BAAqC;CjCkBtC;;AgC4CL;EClEE,0BlC8Fc;CiC1Bf;;AhCjDG;EiCfE,0BAAqC;CjCkBtC;;AgCgDL;ECtEE,0BlC6Fc;CiCrBf;;AhCrDG;EiCfE,0BAAqC;CjCkBtC;;AkCzBL;EACE,mBAAoD;EACpD,oBnC0oBmC;EmCzoBnC,0BnC0GiC;EMzG/B,sBNiO0B;CmC5N7B;;AxB+CG;EwBxDJ;IAOI,mBnCqoBiC;GmCnoBpC;CrCyqIA;;AqCvqID;EACE,iBAAgB;EAChB,gBAAe;E7BTb,iB6BUsB;CACzB;;ACXD;EACE,yBpCwxBmC;EoCvxBnC,oBpCwxBgC;EoCvxBhC,8BAA6C;E9BH3C,uBNgO2B;CoC3N9B;;AAGD;EAEE,eAAc;CACf;;AAGD;EACE,kBpC6OqB;CoC5OtB;;AAOD;EAGI,mBAAkB;EAClB,cpC6vBgC;EoC5vBhC,gBpC6vBiC;EoC5vBjC,yBpC4vBiC;EoC3vBjC,eAAc;CACf;;AAQH;ECxCE,erCipBsC;EqChpBtC,0BrCipBsC;EqChpBtC,sBrCipB4D;CoCzmB7D;;ACtCC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ADkCH;EC3CE,erCqpBsC;EqCppBtC,0BrCqpBsC;EqCppBtC,sBrCqpByD;CoC1mB1D;;ACzCC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ADqCH;EC9CE,erCypBsC;EqCxpBtC,0BrCypBsC;EqCxpBtC,sBrC0pB4D;CoC5mB7D;;AC5CC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ADwCH;ECjDE,erC8pBsC;EqC7pBtC,0BrC8pBsC;EqC7pBtC,sBrC8pB2D;CoC7mB5D;;AC/CC;EACE,0BAAqC;CACtC;;AACD;EACE,eAA+B;CAChC;;ACZH;EACE;IAAO,4BAAuC;GxC2wI7C;EwC1wID;IAAK,yBAAwB;GxC6wI5B;CACF;;AwChxID;EACE;IAAO,4BAAuC;GxC2wI7C;EwC1wID;IAAK,yBAAwB;GxC6wI5B;CACF;;AwChxID;EACE;IAAO,4BAAuC;GxC2wI7C;EwC1wID;IAAK,yBAAwB;GxC6wI5B;CACF;;AwC3wID;EACE,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,iBAAgB;EAChB,mBtC+yBoC;EsC9yBpC,kBtC6yBkC;EsC5yBlC,mBAAkB;EAClB,0BtCkGiC;EMzG/B,uBNgO2B;CsCvN9B;;AAED;EACE,atCsyBkC;EsCryBlC,kBtCqyBkC;EsCpyBlC,YtC4EW;EsC3EX,0BtCiFc;EO/FV,oCPyzBwC;EOzzBxC,+BPyzBwC;EOzzBxC,4BPyzBwC;CsCzyB7C;;AAED;ECYE,8MAA6I;EAA7I,yMAA6I;EAA7I,sMAA6I;EDV7I,mCtC6xBkC;UsC7xBlC,2BtC6xBkC;CsC5xBnC;;AAED;EACE,2DtCgyBgD;OsChyBhD,sDtCgyBgD;UsChyBhD,mDtCgyBgD;CsC/xBjD;;AE9BD;EACE,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,yBAAuB;EAAvB,gCAAuB;MAAvB,sBAAuB;UAAvB,wBAAuB;CACxB;;AAED;EACE,oBAAO;EAAP,gBAAO;MAAP,YAAO;UAAP,aAAO;CACR;;ACHD;EACE,qBAAa;EAAb,sBAAa;EAAb,qBAAa;EAAb,cAAa;EACb,6BAAsB;EAAtB,8BAAsB;EAAtB,+BAAsB;MAAtB,2BAAsB;UAAtB,uBAAsB;EAGtB,gBAAe;EACf,iBAAgB;CACjB;;AAQD;EACE,YAAW;EACX,ezCsFiC;EyCrFjC,oBAAmB;CAapB;;AxCbG;EwCIA,ezCiF+B;EyChF/B,sBAAqB;EACrB,0BzCkF+B;CCrF9B;;AwCNL;EAaI,ezC0E+B;EyCzE/B,0BzC4E+B;CyC3EhC;;AAQH;EACE,mBAAkB;EAClB,eAAc;EACd,yBzC4xBsC;EyC1xBtC,oBzCmLgB;EyClLhB,uBzC8CW;EyC7CX,uCzC8CW;CyCjBZ;;AApCD;EnChCI,gCN0N2B;EMzN3B,iCNyN2B;CyC/K5B;;AAXH;EAcI,iBAAgB;EnChChB,oCN4M2B;EM3M3B,mCN2M2B;CyC1K5B;;AxCpCC;EwCuCA,sBAAqB;CxCpCpB;;AwCiBL;EAwBI,ezC0C+B;EyCzC/B,oBzCgXwC;EyC/WxC,uBzC0BS;CyCzBV;;AA3BH;EA+BI,WAAU;EACV,YzCoBS;EyCnBT,0BzCyBY;EyCxBZ,sBzCwBY;CyCvBb;;AASH;EAEI,gBAAe;EACf,eAAc;EACd,iBAAgB;CACjB;;AALH;EASM,cAAa;CACd;;AAVL;EAeM,iBAAgB;CACjB;;ACnGH;EACE,e1CgpBoC;E0C/oBpC,0B1CgpBoC;C0C/oBrC;;AAGD;;EAEE,e1CyoBoC;C0C7nBrC;;AzCDC;;;EyCRE,e1CsoBkC;E0CroBlC,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B1CgoBkC;E0C/nBlC,sB1C+nBkC;C0C9nBnC;;AAnBH;EACE,e1CopBoC;E0CnpBpC,0B1CopBoC;C0CnpBrC;;AAGD;;EAEE,e1C6oBoC;C0CjoBrC;;AzCDC;;;EyCRE,e1C0oBkC;E0CzoBlC,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B1CooBkC;E0CnoBlC,sB1CmoBkC;C0CloBnC;;AAnBH;EACE,e1CwpBoC;E0CvpBpC,0B1CwpBoC;C0CvpBrC;;AAGD;;EAEE,e1CipBoC;C0CroBrC;;AzCDC;;;EyCRE,e1C8oBkC;E0C7oBlC,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B1CwoBkC;E0CvoBlC,sB1CuoBkC;C0CtoBnC;;AAnBH;EACE,e1C6pBoC;E0C5pBpC,0B1C6pBoC;C0C5pBrC;;AAGD;;EAEE,e1CspBoC;C0C1oBrC;;AzCDC;;;EyCRE,e1CmpBkC;E0ClpBlC,0BAAyC;CzCU1C;;AyChBH;;EAUI,YAAW;EACX,0B1C6oBkC;E0C5oBlC,sB1C4oBkC;C0C3oBnC;;ACpBL;EACE,mBAAkB;EAClB,eAAc;EACd,YAAW;EACX,WAAU;EACV,iBAAgB;CAoBjB;;AAzBD;EAQI,eAAc;EACd,YAAW;CACZ;;AAVH;;;;;EAiBI,mBAAkB;EAClB,OAAM;EACN,UAAS;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","file":"bootstrap.css","sourcesContent":[null,null,"/*!\n * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com)\n * Copyright 2011-2017 The Bootstrap Authors\n * Copyright 2011-2017 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n@media print {\n *,\n *::before,\n *::after,\n p::first-letter,\n div::first-letter,\n blockquote::first-letter,\n li::first-letter,\n p::first-line,\n div::first-line,\n blockquote::first-line,\n li::first-line {\n text-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n abbr[title]::after {\n content: \" (\" attr(title) \")\";\n }\n pre {\n white-space: pre-wrap !important;\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .badge {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n\nhtml {\n box-sizing: border-box;\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n -ms-overflow-style: scrollbar;\n -webkit-tap-highlight-color: transparent;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\n@-ms-viewport {\n width: device-width;\n}\n\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.5;\n color: #292b2c;\n background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n outline: none !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin-top: 0;\n margin-bottom: .5rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n text-decoration: underline;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: bold;\n}\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\ndfn {\n font-style: italic;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\na {\n color: #0275d8;\n text-decoration: none;\n background-color: transparent;\n -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n color: #014c8c;\n text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\na,\narea,\nbutton,\n[role=\"button\"],\ninput,\nlabel,\nselect,\nsummary,\ntextarea {\n touch-action: manipulation;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem;\n color: #636c72;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: left;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: .5rem;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type=\"radio\"]:disabled,\ninput[type=\"checkbox\"]:disabled {\n cursor: not-allowed;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: .5rem;\n font-size: 1.5rem;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n outline-offset: -2px;\n -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n margin-bottom: 0.5rem;\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\n\nh1, .h1 {\n font-size: 2.5rem;\n}\n\nh2, .h2 {\n font-size: 2rem;\n}\n\nh3, .h3 {\n font-size: 1.75rem;\n}\n\nh4, .h4 {\n font-size: 1.5rem;\n}\n\nh5, .h5 {\n font-size: 1.25rem;\n}\n\nh6, .h6 {\n font-size: 1rem;\n}\n\n.lead {\n font-size: 1.25rem;\n font-weight: 300;\n}\n\n.display-1 {\n font-size: 6rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-2 {\n font-size: 5.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-3 {\n font-size: 4.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\n.display-4 {\n font-size: 3.5rem;\n font-weight: 300;\n line-height: 1.1;\n}\n\nhr {\n margin-top: 1rem;\n margin-bottom: 1rem;\n border: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n font-size: 80%;\n font-weight: normal;\n}\n\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline {\n padding-left: 0;\n list-style: none;\n}\n\n.list-inline-item {\n display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n margin-right: 5px;\n}\n\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n.blockquote {\n padding: 0.5rem 1rem;\n margin-bottom: 1rem;\n font-size: 1.25rem;\n border-left: 0.25rem solid #eceeef;\n}\n\n.blockquote-footer {\n display: block;\n font-size: 80%;\n color: #636c72;\n}\n\n.blockquote-footer::before {\n content: \"\\2014 \\00A0\";\n}\n\n.blockquote-reverse {\n padding-right: 1rem;\n padding-left: 0;\n text-align: right;\n border-right: 0.25rem solid #eceeef;\n border-left: 0;\n}\n\n.blockquote-reverse .blockquote-footer::before {\n content: \"\";\n}\n\n.blockquote-reverse .blockquote-footer::after {\n content: \"\\00A0 \\2014\";\n}\n\n.img-fluid {\n max-width: 100%;\n height: auto;\n}\n\n.img-thumbnail {\n padding: 0.25rem;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 0.25rem;\n transition: all 0.2s ease-in-out;\n max-width: 100%;\n height: auto;\n}\n\n.figure {\n display: inline-block;\n}\n\n.figure-img {\n margin-bottom: 0.5rem;\n line-height: 1;\n}\n\n.figure-caption {\n font-size: 90%;\n color: #636c72;\n}\n\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\ncode {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #bd4147;\n background-color: #f7f7f9;\n border-radius: 0.25rem;\n}\n\na > code {\n padding: 0;\n color: inherit;\n background-color: inherit;\n}\n\nkbd {\n padding: 0.2rem 0.4rem;\n font-size: 90%;\n color: #fff;\n background-color: #292b2c;\n border-radius: 0.2rem;\n}\n\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n font-size: 90%;\n color: #292b2c;\n}\n\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n background-color: transparent;\n border-radius: 0;\n}\n\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .container {\n width: 540px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n width: 720px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 992px) {\n .container {\n width: 960px;\n max-width: 100%;\n }\n}\n\n@media (min-width: 1200px) {\n .container {\n width: 1140px;\n max-width: 100%;\n }\n}\n\n.container-fluid {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -15px;\n margin-left: -15px;\n}\n\n@media (min-width: 576px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 768px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 992px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n@media (min-width: 1200px) {\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n}\n\n.no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n position: relative;\n width: 100%;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n\n@media (min-width: 576px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 768px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n@media (min-width: 1200px) {\n .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n .col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n .col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n .col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n .col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n .col-xl-auto {\n padding-right: 15px;\n padding-left: 15px;\n }\n}\n\n.col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n width: 8.333333%;\n}\n\n.col-2 {\n width: 16.666667%;\n}\n\n.col-3 {\n width: 25%;\n}\n\n.col-4 {\n width: 33.333333%;\n}\n\n.col-5 {\n width: 41.666667%;\n}\n\n.col-6 {\n width: 50%;\n}\n\n.col-7 {\n width: 58.333333%;\n}\n\n.col-8 {\n width: 66.666667%;\n}\n\n.col-9 {\n width: 75%;\n}\n\n.col-10 {\n width: 83.333333%;\n}\n\n.col-11 {\n width: 91.666667%;\n}\n\n.col-12 {\n width: 100%;\n}\n\n.pull-0 {\n right: auto;\n}\n\n.pull-1 {\n right: 8.333333%;\n}\n\n.pull-2 {\n right: 16.666667%;\n}\n\n.pull-3 {\n right: 25%;\n}\n\n.pull-4 {\n right: 33.333333%;\n}\n\n.pull-5 {\n right: 41.666667%;\n}\n\n.pull-6 {\n right: 50%;\n}\n\n.pull-7 {\n right: 58.333333%;\n}\n\n.pull-8 {\n right: 66.666667%;\n}\n\n.pull-9 {\n right: 75%;\n}\n\n.pull-10 {\n right: 83.333333%;\n}\n\n.pull-11 {\n right: 91.666667%;\n}\n\n.pull-12 {\n right: 100%;\n}\n\n.push-0 {\n left: auto;\n}\n\n.push-1 {\n left: 8.333333%;\n}\n\n.push-2 {\n left: 16.666667%;\n}\n\n.push-3 {\n left: 25%;\n}\n\n.push-4 {\n left: 33.333333%;\n}\n\n.push-5 {\n left: 41.666667%;\n}\n\n.push-6 {\n left: 50%;\n}\n\n.push-7 {\n left: 58.333333%;\n}\n\n.push-8 {\n left: 66.666667%;\n}\n\n.push-9 {\n left: 75%;\n}\n\n.push-10 {\n left: 83.333333%;\n}\n\n.push-11 {\n left: 91.666667%;\n}\n\n.push-12 {\n left: 100%;\n}\n\n.offset-1 {\n margin-left: 8.333333%;\n}\n\n.offset-2 {\n margin-left: 16.666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.333333%;\n}\n\n.offset-5 {\n margin-left: 41.666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.333333%;\n}\n\n.offset-8 {\n margin-left: 66.666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.333333%;\n}\n\n.offset-11 {\n margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n width: 8.333333%;\n }\n .col-sm-2 {\n width: 16.666667%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-4 {\n width: 33.333333%;\n }\n .col-sm-5 {\n width: 41.666667%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-7 {\n width: 58.333333%;\n }\n .col-sm-8 {\n width: 66.666667%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-10 {\n width: 83.333333%;\n }\n .col-sm-11 {\n width: 91.666667%;\n }\n .col-sm-12 {\n width: 100%;\n }\n .pull-sm-0 {\n right: auto;\n }\n .pull-sm-1 {\n right: 8.333333%;\n }\n .pull-sm-2 {\n right: 16.666667%;\n }\n .pull-sm-3 {\n right: 25%;\n }\n .pull-sm-4 {\n right: 33.333333%;\n }\n .pull-sm-5 {\n right: 41.666667%;\n }\n .pull-sm-6 {\n right: 50%;\n }\n .pull-sm-7 {\n right: 58.333333%;\n }\n .pull-sm-8 {\n right: 66.666667%;\n }\n .pull-sm-9 {\n right: 75%;\n }\n .pull-sm-10 {\n right: 83.333333%;\n }\n .pull-sm-11 {\n right: 91.666667%;\n }\n .pull-sm-12 {\n right: 100%;\n }\n .push-sm-0 {\n left: auto;\n }\n .push-sm-1 {\n left: 8.333333%;\n }\n .push-sm-2 {\n left: 16.666667%;\n }\n .push-sm-3 {\n left: 25%;\n }\n .push-sm-4 {\n left: 33.333333%;\n }\n .push-sm-5 {\n left: 41.666667%;\n }\n .push-sm-6 {\n left: 50%;\n }\n .push-sm-7 {\n left: 58.333333%;\n }\n .push-sm-8 {\n left: 66.666667%;\n }\n .push-sm-9 {\n left: 75%;\n }\n .push-sm-10 {\n left: 83.333333%;\n }\n .push-sm-11 {\n left: 91.666667%;\n }\n .push-sm-12 {\n left: 100%;\n }\n .offset-sm-0 {\n margin-left: 0%;\n }\n .offset-sm-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 768px) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n width: 8.333333%;\n }\n .col-md-2 {\n width: 16.666667%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-4 {\n width: 33.333333%;\n }\n .col-md-5 {\n width: 41.666667%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-7 {\n width: 58.333333%;\n }\n .col-md-8 {\n width: 66.666667%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-10 {\n width: 83.333333%;\n }\n .col-md-11 {\n width: 91.666667%;\n }\n .col-md-12 {\n width: 100%;\n }\n .pull-md-0 {\n right: auto;\n }\n .pull-md-1 {\n right: 8.333333%;\n }\n .pull-md-2 {\n right: 16.666667%;\n }\n .pull-md-3 {\n right: 25%;\n }\n .pull-md-4 {\n right: 33.333333%;\n }\n .pull-md-5 {\n right: 41.666667%;\n }\n .pull-md-6 {\n right: 50%;\n }\n .pull-md-7 {\n right: 58.333333%;\n }\n .pull-md-8 {\n right: 66.666667%;\n }\n .pull-md-9 {\n right: 75%;\n }\n .pull-md-10 {\n right: 83.333333%;\n }\n .pull-md-11 {\n right: 91.666667%;\n }\n .pull-md-12 {\n right: 100%;\n }\n .push-md-0 {\n left: auto;\n }\n .push-md-1 {\n left: 8.333333%;\n }\n .push-md-2 {\n left: 16.666667%;\n }\n .push-md-3 {\n left: 25%;\n }\n .push-md-4 {\n left: 33.333333%;\n }\n .push-md-5 {\n left: 41.666667%;\n }\n .push-md-6 {\n left: 50%;\n }\n .push-md-7 {\n left: 58.333333%;\n }\n .push-md-8 {\n left: 66.666667%;\n }\n .push-md-9 {\n left: 75%;\n }\n .push-md-10 {\n left: 83.333333%;\n }\n .push-md-11 {\n left: 91.666667%;\n }\n .push-md-12 {\n left: 100%;\n }\n .offset-md-0 {\n margin-left: 0%;\n }\n .offset-md-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 992px) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n width: 8.333333%;\n }\n .col-lg-2 {\n width: 16.666667%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-4 {\n width: 33.333333%;\n }\n .col-lg-5 {\n width: 41.666667%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-7 {\n width: 58.333333%;\n }\n .col-lg-8 {\n width: 66.666667%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-10 {\n width: 83.333333%;\n }\n .col-lg-11 {\n width: 91.666667%;\n }\n .col-lg-12 {\n width: 100%;\n }\n .pull-lg-0 {\n right: auto;\n }\n .pull-lg-1 {\n right: 8.333333%;\n }\n .pull-lg-2 {\n right: 16.666667%;\n }\n .pull-lg-3 {\n right: 25%;\n }\n .pull-lg-4 {\n right: 33.333333%;\n }\n .pull-lg-5 {\n right: 41.666667%;\n }\n .pull-lg-6 {\n right: 50%;\n }\n .pull-lg-7 {\n right: 58.333333%;\n }\n .pull-lg-8 {\n right: 66.666667%;\n }\n .pull-lg-9 {\n right: 75%;\n }\n .pull-lg-10 {\n right: 83.333333%;\n }\n .pull-lg-11 {\n right: 91.666667%;\n }\n .pull-lg-12 {\n right: 100%;\n }\n .push-lg-0 {\n left: auto;\n }\n .push-lg-1 {\n left: 8.333333%;\n }\n .push-lg-2 {\n left: 16.666667%;\n }\n .push-lg-3 {\n left: 25%;\n }\n .push-lg-4 {\n left: 33.333333%;\n }\n .push-lg-5 {\n left: 41.666667%;\n }\n .push-lg-6 {\n left: 50%;\n }\n .push-lg-7 {\n left: 58.333333%;\n }\n .push-lg-8 {\n left: 66.666667%;\n }\n .push-lg-9 {\n left: 75%;\n }\n .push-lg-10 {\n left: 83.333333%;\n }\n .push-lg-11 {\n left: 91.666667%;\n }\n .push-lg-12 {\n left: 100%;\n }\n .offset-lg-0 {\n margin-left: 0%;\n }\n .offset-lg-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11 {\n margin-left: 91.666667%;\n }\n}\n\n@media (min-width: 1200px) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n width: 8.333333%;\n }\n .col-xl-2 {\n width: 16.666667%;\n }\n .col-xl-3 {\n width: 25%;\n }\n .col-xl-4 {\n width: 33.333333%;\n }\n .col-xl-5 {\n width: 41.666667%;\n }\n .col-xl-6 {\n width: 50%;\n }\n .col-xl-7 {\n width: 58.333333%;\n }\n .col-xl-8 {\n width: 66.666667%;\n }\n .col-xl-9 {\n width: 75%;\n }\n .col-xl-10 {\n width: 83.333333%;\n }\n .col-xl-11 {\n width: 91.666667%;\n }\n .col-xl-12 {\n width: 100%;\n }\n .pull-xl-0 {\n right: auto;\n }\n .pull-xl-1 {\n right: 8.333333%;\n }\n .pull-xl-2 {\n right: 16.666667%;\n }\n .pull-xl-3 {\n right: 25%;\n }\n .pull-xl-4 {\n right: 33.333333%;\n }\n .pull-xl-5 {\n right: 41.666667%;\n }\n .pull-xl-6 {\n right: 50%;\n }\n .pull-xl-7 {\n right: 58.333333%;\n }\n .pull-xl-8 {\n right: 66.666667%;\n }\n .pull-xl-9 {\n right: 75%;\n }\n .pull-xl-10 {\n right: 83.333333%;\n }\n .pull-xl-11 {\n right: 91.666667%;\n }\n .pull-xl-12 {\n right: 100%;\n }\n .push-xl-0 {\n left: auto;\n }\n .push-xl-1 {\n left: 8.333333%;\n }\n .push-xl-2 {\n left: 16.666667%;\n }\n .push-xl-3 {\n left: 25%;\n }\n .push-xl-4 {\n left: 33.333333%;\n }\n .push-xl-5 {\n left: 41.666667%;\n }\n .push-xl-6 {\n left: 50%;\n }\n .push-xl-7 {\n left: 58.333333%;\n }\n .push-xl-8 {\n left: 66.666667%;\n }\n .push-xl-9 {\n left: 75%;\n }\n .push-xl-10 {\n left: 83.333333%;\n }\n .push-xl-11 {\n left: 91.666667%;\n }\n .push-xl-12 {\n left: 100%;\n }\n .offset-xl-0 {\n margin-left: 0%;\n }\n .offset-xl-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11 {\n margin-left: 91.666667%;\n }\n}\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 1rem;\n background-color: transparent;\n}\n\n.table th,\n.table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid #eceeef;\n}\n\n.table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid #eceeef;\n}\n\n.table tbody + tbody {\n border-top: 2px solid #eceeef;\n}\n\n.table .table {\n background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n padding: 0.3rem;\n}\n\n.table-bordered {\n border: 1px solid #eceeef;\n}\n\n.table-bordered th,\n.table-bordered td {\n border: 1px solid #eceeef;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n border-bottom-width: 2px;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n background-color: #dff0d8;\n}\n\n.table-hover .table-success:hover {\n background-color: #d0e9c6;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n background-color: #d0e9c6;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n background-color: #d9edf7;\n}\n\n.table-hover .table-info:hover {\n background-color: #c4e3f3;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n background-color: #c4e3f3;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n background-color: #fcf8e3;\n}\n\n.table-hover .table-warning:hover {\n background-color: #faf2cc;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n background-color: #faf2cc;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n background-color: #f2dede;\n}\n\n.table-hover .table-danger:hover {\n background-color: #ebcccc;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n background-color: #ebcccc;\n}\n\n.thead-inverse th {\n color: #fff;\n background-color: #292b2c;\n}\n\n.thead-default th {\n color: #464a4c;\n background-color: #eceeef;\n}\n\n.table-inverse {\n color: #fff;\n background-color: #292b2c;\n}\n\n.table-inverse th,\n.table-inverse td,\n.table-inverse thead th {\n border-color: #3b3e40;\n}\n\n.table-inverse.table-bordered {\n border: 0;\n}\n\n.table-inverse.table-striped tbody tr:nth-of-type(odd) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-inverse.table-hover tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 991px) {\n .table-responsive {\n display: block;\n width: 100%;\n overflow-x: auto;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n }\n .table-responsive.table-bordered {\n border: 0;\n }\n}\n\n.form-control {\n display: block;\n width: 100%;\n padding: 0.5rem 1rem;\n font-size: 1rem;\n line-height: 1.25;\n color: #464a4c;\n background-color: #fff;\n background-image: none;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n\n.form-control:focus {\n color: #464a4c;\n background-color: #fff;\n border-color: #5cb3fd;\n outline: none;\n}\n\n.form-control::placeholder {\n color: #636c72;\n opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n background-color: #eceeef;\n opacity: 1;\n}\n\n.form-control:disabled {\n cursor: not-allowed;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n color: #464a4c;\n background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n display: block;\n}\n\n.col-form-label {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n margin-bottom: 0;\n}\n\n.col-form-label-lg {\n padding-top: calc(0.5rem - 1px * 2);\n padding-bottom: calc(0.5rem - 1px * 2);\n font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n padding-top: calc(0.25rem - 1px * 2);\n padding-bottom: calc(0.25rem - 1px * 2);\n font-size: 0.875rem;\n}\n\n.col-form-legend {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n font-size: 1rem;\n}\n\n.form-control-static {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n margin-bottom: 0;\n line-height: 1.25;\n border: solid transparent;\n border-width: 1px 0;\n}\n\n.form-control-static.form-control-sm, .input-group-sm > .form-control-static.form-control,\n.input-group-sm > .form-control-static.input-group-addon,\n.input-group-sm > .input-group-btn > .form-control-static.btn, .form-control-static.form-control-lg, .input-group-lg > .form-control-static.form-control,\n.input-group-lg > .form-control-static.input-group-addon,\n.input-group-lg > .input-group-btn > .form-control-static.btn {\n padding-right: 0;\n padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > select.input-group-addon:not([size]):not([multiple]),\n.input-group-sm > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(1.8125rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > select.input-group-addon:not([size]):not([multiple]),\n.input-group-lg > .input-group-btn > select.btn:not([size]):not([multiple]) {\n height: calc(2.875rem + 2px);\n}\n\n.form-group {\n margin-bottom: 1rem;\n}\n\n.form-text {\n display: block;\n margin-top: 0.25rem;\n}\n\n.form-check {\n position: relative;\n display: block;\n margin-bottom: 0.5rem;\n}\n\n.form-check.disabled .form-check-label {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.form-check-label {\n padding-left: 1.25rem;\n margin-bottom: 0;\n}\n\n.form-check-input {\n position: absolute;\n margin-top: 0.25rem;\n margin-left: -1.25rem;\n}\n\n.form-check-input:only-child {\n position: static;\n}\n\n.form-check-inline {\n display: inline-block;\n}\n\n.form-check-inline .form-check-label {\n vertical-align: middle;\n}\n\n.form-check-inline + .form-check-inline {\n margin-left: 0.75rem;\n}\n\n.form-control-feedback {\n margin-top: 0.25rem;\n}\n\n.form-control-success,\n.form-control-warning,\n.form-control-danger {\n padding-right: 3rem;\n background-repeat: no-repeat;\n background-position: center right 0.5625rem;\n background-size: 1.125rem 1.125rem;\n}\n\n.has-success .form-control-feedback,\n.has-success .form-control-label,\n.has-success .col-form-label,\n.has-success .form-check-label,\n.has-success .custom-control {\n color: #5cb85c;\n}\n\n.has-success .form-control,\n.has-success .custom-select,\n.has-success .custom-file-control {\n border-color: #5cb85c;\n}\n\n.has-success .input-group-addon {\n color: #5cb85c;\n background-color: #eaf6ea;\n border-color: #5cb85c;\n}\n\n.has-success .form-control-success {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E\");\n}\n\n.has-warning .form-control-feedback,\n.has-warning .form-control-label,\n.has-warning .col-form-label,\n.has-warning .form-check-label,\n.has-warning .custom-control {\n color: #f0ad4e;\n}\n\n.has-warning .form-control,\n.has-warning .custom-select,\n.has-warning .custom-file-control {\n border-color: #f0ad4e;\n}\n\n.has-warning .input-group-addon {\n color: #f0ad4e;\n background-color: white;\n border-color: #f0ad4e;\n}\n\n.has-warning .form-control-warning {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E\");\n}\n\n.has-danger .form-control-feedback,\n.has-danger .form-control-label,\n.has-danger .col-form-label,\n.has-danger .form-check-label,\n.has-danger .custom-control {\n color: #d9534f;\n}\n\n.has-danger .form-control,\n.has-danger .custom-select,\n.has-danger .custom-file-control {\n border-color: #d9534f;\n}\n\n.has-danger .input-group-addon {\n color: #d9534f;\n background-color: #fdf7f7;\n border-color: #d9534f;\n}\n\n.has-danger .form-control-danger {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E\");\n}\n\n.form-inline {\n display: flex;\n flex-flow: row wrap;\n align-items: center;\n}\n\n.form-inline .form-check {\n width: 100%;\n}\n\n@media (min-width: 576px) {\n .form-inline label {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0;\n }\n .form-inline .form-group {\n display: flex;\n flex: 0 0 auto;\n flex-flow: row wrap;\n align-items: center;\n margin-bottom: 0;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n width: auto;\n }\n .form-inline .form-control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-check {\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-inline .form-check-label {\n padding-left: 0;\n }\n .form-inline .form-check-input {\n position: relative;\n margin-top: 0;\n margin-right: 0.25rem;\n margin-left: 0;\n }\n .form-inline .custom-control {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: 0;\n }\n .form-inline .custom-control-indicator {\n position: static;\n display: inline-block;\n margin-right: 0.25rem;\n vertical-align: text-bottom;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n\n.btn {\n display: inline-block;\n font-weight: normal;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n user-select: none;\n border: 1px solid transparent;\n padding: 0.5rem 1rem;\n font-size: 1rem;\n line-height: 1.25;\n border-radius: 0.25rem;\n transition: all 0.2s ease-in-out;\n}\n\n.btn:focus, .btn:hover {\n text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n outline: 0;\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n cursor: not-allowed;\n opacity: .65;\n}\n\n.btn:active, .btn.active {\n background-image: none;\n}\n\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n\n.btn-primary {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-primary:hover {\n color: #fff;\n background-color: #025aa5;\n border-color: #01549b;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-primary:active, .btn-primary.active,\n.show > .btn-primary.dropdown-toggle {\n color: #fff;\n background-color: #025aa5;\n background-image: none;\n border-color: #01549b;\n}\n\n.btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n}\n\n.btn-secondary:hover {\n color: #292b2c;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n background-color: #fff;\n border-color: #ccc;\n}\n\n.btn-secondary:active, .btn-secondary.active,\n.show > .btn-secondary.dropdown-toggle {\n color: #292b2c;\n background-color: #e6e6e6;\n background-image: none;\n border-color: #adadad;\n}\n\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #2aabd2;\n}\n\n.btn-info:focus, .btn-info.focus {\n box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-info:active, .btn-info.active,\n.show > .btn-info.dropdown-toggle {\n color: #fff;\n background-color: #31b0d5;\n background-image: none;\n border-color: #2aabd2;\n}\n\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #419641;\n}\n\n.btn-success:focus, .btn-success.focus {\n box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-success:active, .btn-success.active,\n.show > .btn-success.dropdown-toggle {\n color: #fff;\n background-color: #449d44;\n background-image: none;\n border-color: #419641;\n}\n\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #eb9316;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-warning:active, .btn-warning.active,\n.show > .btn-warning.dropdown-toggle {\n color: #fff;\n background-color: #ec971f;\n background-image: none;\n border-color: #eb9316;\n}\n\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #c12e2a;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-danger:active, .btn-danger.active,\n.show > .btn-danger.dropdown-toggle {\n color: #fff;\n background-color: #c9302c;\n background-image: none;\n border-color: #c12e2a;\n}\n\n.btn-outline-primary {\n color: #0275d8;\n background-color: transparent;\n background-image: none;\n border-color: #0275d8;\n}\n\n.btn-outline-primary:hover {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n box-shadow: 0 0 0 2px rgba(2, 117, 216, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n color: #0275d8;\n background-color: transparent;\n}\n\n.btn-outline-primary:active, .btn-outline-primary.active,\n.show > .btn-outline-primary.dropdown-toggle {\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.btn-outline-secondary {\n color: #ccc;\n background-color: transparent;\n background-image: none;\n border-color: #ccc;\n}\n\n.btn-outline-secondary:hover {\n color: #292b2c;\n background-color: #ccc;\n border-color: #ccc;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n box-shadow: 0 0 0 2px rgba(204, 204, 204, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n color: #ccc;\n background-color: transparent;\n}\n\n.btn-outline-secondary:active, .btn-outline-secondary.active,\n.show > .btn-outline-secondary.dropdown-toggle {\n color: #292b2c;\n background-color: #ccc;\n border-color: #ccc;\n}\n\n.btn-outline-info {\n color: #5bc0de;\n background-color: transparent;\n background-image: none;\n border-color: #5bc0de;\n}\n\n.btn-outline-info:hover {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n box-shadow: 0 0 0 2px rgba(91, 192, 222, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n color: #5bc0de;\n background-color: transparent;\n}\n\n.btn-outline-info:active, .btn-outline-info.active,\n.show > .btn-outline-info.dropdown-toggle {\n color: #fff;\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.btn-outline-success {\n color: #5cb85c;\n background-color: transparent;\n background-image: none;\n border-color: #5cb85c;\n}\n\n.btn-outline-success:hover {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n box-shadow: 0 0 0 2px rgba(92, 184, 92, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n color: #5cb85c;\n background-color: transparent;\n}\n\n.btn-outline-success:active, .btn-outline-success.active,\n.show > .btn-outline-success.dropdown-toggle {\n color: #fff;\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.btn-outline-warning {\n color: #f0ad4e;\n background-color: transparent;\n background-image: none;\n border-color: #f0ad4e;\n}\n\n.btn-outline-warning:hover {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n box-shadow: 0 0 0 2px rgba(240, 173, 78, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n color: #f0ad4e;\n background-color: transparent;\n}\n\n.btn-outline-warning:active, .btn-outline-warning.active,\n.show > .btn-outline-warning.dropdown-toggle {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.btn-outline-danger {\n color: #d9534f;\n background-color: transparent;\n background-image: none;\n border-color: #d9534f;\n}\n\n.btn-outline-danger:hover {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n color: #d9534f;\n background-color: transparent;\n}\n\n.btn-outline-danger:active, .btn-outline-danger.active,\n.show > .btn-outline-danger.dropdown-toggle {\n color: #fff;\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.btn-link {\n font-weight: normal;\n color: #0275d8;\n border-radius: 0;\n}\n\n.btn-link, .btn-link:active, .btn-link.active, .btn-link:disabled {\n background-color: transparent;\n}\n\n.btn-link, .btn-link:focus, .btn-link:active {\n border-color: transparent;\n}\n\n.btn-link:hover {\n border-color: transparent;\n}\n\n.btn-link:focus, .btn-link:hover {\n color: #014c8c;\n text-decoration: underline;\n background-color: transparent;\n}\n\n.btn-link:disabled {\n color: #636c72;\n}\n\n.btn-link:disabled:focus, .btn-link:disabled:hover {\n text-decoration: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n line-height: 1.5;\n border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n line-height: 1.5;\n border-radius: 0.2rem;\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-block + .btn-block {\n margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n\n.fade {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.fade.show {\n opacity: 1;\n}\n\n.collapse {\n display: none;\n}\n\n.collapse.show {\n display: block;\n}\n\ntr.collapse.show {\n display: table-row;\n}\n\ntbody.collapse.show {\n display: table-row-group;\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n\n.dropup,\n.dropdown {\n position: relative;\n}\n\n.dropdown-toggle::after {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 0.3em;\n vertical-align: middle;\n content: \"\";\n border-top: 0.3em solid;\n border-right: 0.3em solid transparent;\n border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n margin-left: 0;\n}\n\n.dropup .dropdown-toggle::after {\n border-top: 0;\n border-bottom: 0.3em solid;\n}\n\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 10rem;\n padding: 0.5rem 0;\n margin: 0.125rem 0 0;\n font-size: 1rem;\n color: #292b2c;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid #eceeef;\n}\n\n.dropdown-item {\n display: block;\n width: 100%;\n padding: 0.25rem 1.5rem;\n clear: both;\n font-weight: normal;\n color: #292b2c;\n text-align: inherit;\n white-space: nowrap;\n background: none;\n border: 0;\n}\n\n.dropdown-item:focus, .dropdown-item:hover {\n color: #1d1e1f;\n text-decoration: none;\n background-color: #f7f7f9;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n color: #fff;\n text-decoration: none;\n background-color: #0275d8;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: transparent;\n}\n\n.show > .dropdown-menu {\n display: block;\n}\n\n.show > a {\n outline: 0;\n}\n\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n.dropdown-header {\n display: block;\n padding: 0.5rem 1.5rem;\n margin-bottom: 0;\n font-size: 0.875rem;\n color: #636c72;\n white-space: nowrap;\n}\n\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n\n.dropup .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 0.125rem;\n}\n\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n flex: 0 1 auto;\n margin-bottom: 0;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n z-index: 2;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n margin-left: -1px;\n}\n\n.btn-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n width: auto;\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group > .btn-group {\n float: left;\n}\n\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn + .dropdown-toggle-split::after {\n margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n padding-right: 0.375rem;\n padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.input-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.input-group .form-control {\n position: relative;\n z-index: 2;\n flex: 1 1 auto;\n width: 1%;\n margin-bottom: 0;\n}\n\n.input-group .form-control:focus, .input-group .form-control:active, .input-group .form-control:hover {\n z-index: 3;\n}\n\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: flex;\n align-items: center;\n}\n\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n.input-group-addon,\n.input-group-btn {\n white-space: nowrap;\n vertical-align: middle;\n}\n\n.input-group-addon {\n padding: 0.5rem 1rem;\n margin-bottom: 0;\n font-size: 1rem;\n font-weight: normal;\n line-height: 1.25;\n color: #464a4c;\n text-align: center;\n background-color: #eceeef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.input-group-addon.form-control-sm,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .input-group-addon.btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n border-radius: 0.2rem;\n}\n\n.input-group-addon.form-control-lg,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .input-group-addon.btn {\n padding: 0.5rem 1rem;\n font-size: 1.25rem;\n border-radius: 0.3rem;\n}\n\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n\n.input-group .form-control:not(:last-child),\n.input-group-addon:not(:last-child),\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group > .btn,\n.input-group-btn:not(:last-child) > .dropdown-toggle,\n.input-group-btn:not(:first-child) > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.input-group-addon:not(:last-child) {\n border-right: 0;\n}\n\n.input-group .form-control:not(:first-child),\n.input-group-addon:not(:first-child),\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group > .btn,\n.input-group-btn:not(:first-child) > .dropdown-toggle,\n.input-group-btn:not(:last-child) > .btn:not(:first-child),\n.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.form-control + .input-group-addon:not(:first-child) {\n border-left: 0;\n}\n\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n\n.input-group-btn > .btn {\n position: relative;\n}\n\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n\n.input-group-btn > .btn:focus, .input-group-btn > .btn:active, .input-group-btn > .btn:hover {\n z-index: 3;\n}\n\n.input-group-btn:not(:last-child) > .btn,\n.input-group-btn:not(:last-child) > .btn-group {\n margin-right: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn,\n.input-group-btn:not(:first-child) > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n\n.input-group-btn:not(:first-child) > .btn:focus, .input-group-btn:not(:first-child) > .btn:active, .input-group-btn:not(:first-child) > .btn:hover,\n.input-group-btn:not(:first-child) > .btn-group:focus,\n.input-group-btn:not(:first-child) > .btn-group:active,\n.input-group-btn:not(:first-child) > .btn-group:hover {\n z-index: 3;\n}\n\n.custom-control {\n position: relative;\n display: inline-flex;\n min-height: 1.5rem;\n padding-left: 1.5rem;\n margin-right: 1rem;\n}\n\n.custom-control-input {\n position: absolute;\n z-index: -1;\n opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-indicator {\n color: #fff;\n background-color: #0275d8;\n}\n\n.custom-control-input:focus ~ .custom-control-indicator {\n box-shadow: 0 0 0 1px #fff, 0 0 0 3px #0275d8;\n}\n\n.custom-control-input:active ~ .custom-control-indicator {\n color: #fff;\n background-color: #8fcafe;\n}\n\n.custom-control-input:disabled ~ .custom-control-indicator {\n cursor: not-allowed;\n background-color: #eceeef;\n}\n\n.custom-control-input:disabled ~ .custom-control-description {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.custom-control-indicator {\n position: absolute;\n top: 0.25rem;\n left: 0;\n display: block;\n width: 1rem;\n height: 1rem;\n pointer-events: none;\n user-select: none;\n background-color: #ddd;\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-indicator {\n border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-indicator {\n background-color: #0275d8;\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-indicator {\n border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-indicator {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-controls-stacked {\n display: flex;\n flex-direction: column;\n}\n\n.custom-controls-stacked .custom-control {\n margin-bottom: 0.25rem;\n}\n\n.custom-controls-stacked .custom-control + .custom-control {\n margin-left: 0;\n}\n\n.custom-select {\n display: inline-block;\n max-width: 100%;\n height: calc(2.25rem + 2px);\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n line-height: 1.25;\n color: #464a4c;\n vertical-align: middle;\n background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n background-size: 8px 10px;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n appearance: none;\n}\n\n.custom-select:focus {\n border-color: #5cb3fd;\n outline: none;\n}\n\n.custom-select:focus::-ms-value {\n color: #464a4c;\n background-color: #fff;\n}\n\n.custom-select:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: #eceeef;\n}\n\n.custom-select::-ms-expand {\n opacity: 0;\n}\n\n.custom-select-sm {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n font-size: 75%;\n}\n\n.custom-file {\n position: relative;\n display: inline-block;\n max-width: 100%;\n height: 2.5rem;\n margin-bottom: 0;\n}\n\n.custom-file-input {\n min-width: 14rem;\n max-width: 100%;\n height: 2.5rem;\n margin: 0;\n opacity: 0;\n}\n\n.custom-file-control {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: 5;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #464a4c;\n pointer-events: none;\n user-select: none;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0.25rem;\n}\n\n.custom-file-control:lang(en):empty::after {\n content: \"Choose file...\";\n}\n\n.custom-file-control::before {\n position: absolute;\n top: -1px;\n right: -1px;\n bottom: -1px;\n z-index: 6;\n display: block;\n height: 2.5rem;\n padding: 0.5rem 1rem;\n line-height: 1.5;\n color: #464a4c;\n background-color: #eceeef;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-file-control:lang(en)::before {\n content: \"Browse\";\n}\n\n.nav {\n display: flex;\n flex-wrap: wrap;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.nav-link {\n display: block;\n padding: 0.5rem 1rem;\n}\n\n.nav-link:focus, .nav-link:hover {\n text-decoration: none;\n}\n\n.nav-link.disabled {\n color: #636c72;\n cursor: not-allowed;\n}\n\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n\n.nav-tabs .nav-item {\n margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n border: 1px solid transparent;\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover {\n border-color: #eceeef #eceeef #ddd;\n}\n\n.nav-tabs .nav-link.disabled {\n color: #636c72;\n background-color: transparent;\n border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n color: #464a4c;\n background-color: #fff;\n border-color: #ddd #ddd #fff;\n}\n\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.show .nav-pills .nav-link {\n color: #fff;\n background-color: #0275d8;\n}\n\n.nav-fill .nav-item {\n flex: 1 1 auto;\n text-align: center;\n}\n\n.nav-justified .nav-item {\n flex-basis: 0;\n flex-grow: 1;\n text-align: center;\n}\n\n.tab-content > .tab-pane {\n display: none;\n}\n\n.tab-content > .active {\n display: block;\n}\n\n.navbar {\n position: relative;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n}\n\n@media (max-width: 575px) {\n .navbar > .container,\n .navbar > .container-fluid {\n width: 100%;\n margin-right: 0;\n margin-left: 0;\n }\n}\n\n.navbar-brand {\n display: inline-block;\n padding-top: 0.3125rem;\n padding-bottom: 0.3125rem;\n margin-right: 1rem;\n font-size: 1.25rem;\n line-height: inherit;\n white-space: nowrap;\n}\n\n.navbar-brand:focus, .navbar-brand:hover {\n text-decoration: none;\n}\n\n.navbar-nav {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n\n.navbar-nav .nav-link {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-text {\n display: inline-block;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n flex-basis: 100%;\n}\n\n.navbar-toggler {\n padding: 0.25rem 0.75rem;\n font-size: 1.25rem;\n line-height: 1;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.navbar-toggler:focus, .navbar-toggler:hover {\n text-decoration: none;\n}\n\n.navbar-toggler-icon {\n display: inline-block;\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n content: \"\";\n background: no-repeat center center;\n background-size: 100% 100%;\n}\n\n@media (max-width: 575px) {\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 576px) {\n .navbar-expand-sm {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-sm .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-sm .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-sm .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-sm > .container,\n .navbar-expand-sm > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-sm .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-sm .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 767px) {\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 768px) {\n .navbar-expand-md {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-md .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-md .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-md .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-md > .container,\n .navbar-expand-md > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-md .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-md .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 991px) {\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 992px) {\n .navbar-expand-lg {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-lg .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-lg .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-lg .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-lg > .container,\n .navbar-expand-lg > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-lg .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-lg .navbar-toggler {\n display: none;\n }\n}\n\n@media (max-width: 1199px) {\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n@media (min-width: 1200px) {\n .navbar-expand-xl {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n .navbar-expand-xl .navbar-nav {\n flex-direction: row;\n }\n .navbar-expand-xl .navbar-nav .dropdown-menu {\n position: absolute;\n }\n .navbar-expand-xl .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n }\n .navbar-expand-xl > .container,\n .navbar-expand-xl > .container-fluid {\n flex-wrap: nowrap;\n }\n .navbar-expand-xl .navbar-collapse {\n display: flex !important;\n }\n .navbar-expand-xl .navbar-toggler {\n display: none;\n }\n}\n\n.navbar-expand {\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: flex-start;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: static;\n float: none;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n padding-right: 0;\n padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n padding-right: .5rem;\n padding-left: .5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n display: flex !important;\n}\n\n.navbar-expand .navbar-toggler {\n display: none;\n}\n\n.navbar-light .navbar-brand {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:focus, .navbar-light .navbar-brand:hover {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:focus, .navbar-light .navbar-nav .nav-link:hover {\n color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n color: rgba(0, 0, 0, 0.5);\n border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-inverse .navbar-brand {\n color: white;\n}\n\n.navbar-inverse .navbar-brand:focus, .navbar-inverse .navbar-brand:hover {\n color: white;\n}\n\n.navbar-inverse .navbar-nav .nav-link {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-inverse .navbar-nav .nav-link:focus, .navbar-inverse .navbar-nav .nav-link:hover {\n color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-inverse .navbar-nav .nav-link.disabled {\n color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-inverse .navbar-nav .show > .nav-link,\n.navbar-inverse .navbar-nav .active > .nav-link,\n.navbar-inverse .navbar-nav .nav-link.show,\n.navbar-inverse .navbar-nav .nav-link.active {\n color: white;\n}\n\n.navbar-inverse .navbar-toggler {\n color: rgba(255, 255, 255, 0.5);\n border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-inverse .navbar-toggler-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-inverse .navbar-text {\n color: rgba(255, 255, 255, 0.5);\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0.25rem;\n}\n\n.card-block {\n flex: 1 1 auto;\n padding: 1.25rem;\n}\n\n.card-title {\n margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n margin-top: -0.375rem;\n margin-bottom: 0;\n}\n\n.card-text:last-child {\n margin-bottom: 0;\n}\n\n.card-link:hover {\n text-decoration: none;\n}\n\n.card-link + .card-link {\n margin-left: 1.25rem;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.card-header {\n padding: 0.75rem 1.25rem;\n margin-bottom: 0;\n background-color: #f7f7f9;\n border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n padding: 0.75rem 1.25rem;\n background-color: #f7f7f9;\n border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n margin-right: -0.625rem;\n margin-bottom: -0.75rem;\n margin-left: -0.625rem;\n border-bottom: 0;\n}\n\n.card-header-pills {\n margin-right: -0.625rem;\n margin-left: -0.625rem;\n}\n\n.card-primary {\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.card-primary .card-header,\n.card-primary .card-footer {\n background-color: transparent;\n}\n\n.card-success {\n background-color: #5cb85c;\n border-color: #5cb85c;\n}\n\n.card-success .card-header,\n.card-success .card-footer {\n background-color: transparent;\n}\n\n.card-info {\n background-color: #5bc0de;\n border-color: #5bc0de;\n}\n\n.card-info .card-header,\n.card-info .card-footer {\n background-color: transparent;\n}\n\n.card-warning {\n background-color: #f0ad4e;\n border-color: #f0ad4e;\n}\n\n.card-warning .card-header,\n.card-warning .card-footer {\n background-color: transparent;\n}\n\n.card-danger {\n background-color: #d9534f;\n border-color: #d9534f;\n}\n\n.card-danger .card-header,\n.card-danger .card-footer {\n background-color: transparent;\n}\n\n.card-outline-primary {\n background-color: transparent;\n border-color: #0275d8;\n}\n\n.card-outline-primary .card-header,\n.card-outline-primary .card-footer {\n background-color: transparent;\n border-color: #0275d8;\n}\n\n.card-outline-secondary {\n background-color: transparent;\n border-color: #ccc;\n}\n\n.card-outline-secondary .card-header,\n.card-outline-secondary .card-footer {\n background-color: transparent;\n border-color: #ccc;\n}\n\n.card-outline-info {\n background-color: transparent;\n border-color: #5bc0de;\n}\n\n.card-outline-info .card-header,\n.card-outline-info .card-footer {\n background-color: transparent;\n border-color: #5bc0de;\n}\n\n.card-outline-success {\n background-color: transparent;\n border-color: #5cb85c;\n}\n\n.card-outline-success .card-header,\n.card-outline-success .card-footer {\n background-color: transparent;\n border-color: #5cb85c;\n}\n\n.card-outline-warning {\n background-color: transparent;\n border-color: #f0ad4e;\n}\n\n.card-outline-warning .card-header,\n.card-outline-warning .card-footer {\n background-color: transparent;\n border-color: #f0ad4e;\n}\n\n.card-outline-danger {\n background-color: transparent;\n border-color: #d9534f;\n}\n\n.card-outline-danger .card-header,\n.card-outline-danger .card-footer {\n background-color: transparent;\n border-color: #d9534f;\n}\n\n.card-inverse {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.card-inverse .card-header,\n.card-inverse .card-footer {\n background-color: transparent;\n border-color: rgba(255, 255, 255, 0.2);\n}\n\n.card-inverse .card-header,\n.card-inverse .card-footer,\n.card-inverse .card-title,\n.card-inverse .card-blockquote {\n color: #fff;\n}\n\n.card-inverse .card-link,\n.card-inverse .card-text,\n.card-inverse .card-subtitle,\n.card-inverse .card-blockquote .blockquote-footer {\n color: rgba(255, 255, 255, 0.65);\n}\n\n.card-inverse .card-link:focus, .card-inverse .card-link:hover {\n color: #fff;\n}\n\n.card-blockquote {\n padding: 0;\n margin-bottom: 0;\n border-left: 0;\n}\n\n.card-img-overlay {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n padding: 1.25rem;\n}\n\n.card-img {\n width: 100%;\n border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n width: 100%;\n border-top-left-radius: calc(0.25rem - 1px);\n border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n width: 100%;\n border-bottom-right-radius: calc(0.25rem - 1px);\n border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n@media (min-width: 576px) {\n .card-deck {\n display: flex;\n flex-flow: row wrap;\n margin-right: -15px;\n margin-left: -15px;\n }\n .card-deck .card {\n display: flex;\n flex: 1 0 0;\n flex-direction: column;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n\n@media (min-width: 576px) {\n .card-group {\n display: flex;\n flex-flow: row wrap;\n }\n .card-group .card {\n flex: 1 0 0;\n }\n .card-group .card + .card {\n margin-left: 0;\n border-left: 0;\n }\n .card-group .card:first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .card-group .card:first-child .card-img-top {\n border-top-right-radius: 0;\n }\n .card-group .card:first-child .card-img-bottom {\n border-bottom-right-radius: 0;\n }\n .card-group .card:last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .card-group .card:last-child .card-img-top {\n border-top-left-radius: 0;\n }\n .card-group .card:last-child .card-img-bottom {\n border-bottom-left-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .card-group .card:not(:first-child):not(:last-child) .card-img-top,\n .card-group .card:not(:first-child):not(:last-child) .card-img-bottom {\n border-radius: 0;\n }\n}\n\n.card-columns .card {\n margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n .card-columns {\n column-count: 3;\n column-gap: 1.25rem;\n }\n .card-columns .card {\n display: inline-block;\n width: 100%;\n }\n}\n\n.breadcrumb {\n padding: 0.75rem 1rem;\n margin-bottom: 1rem;\n list-style: none;\n background-color: #eceeef;\n border-radius: 0.25rem;\n}\n\n.breadcrumb::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.breadcrumb-item {\n float: left;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n display: inline-block;\n padding-right: 0.5rem;\n padding-left: 0.5rem;\n color: #636c72;\n content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n text-decoration: none;\n}\n\n.breadcrumb-item.active {\n color: #636c72;\n}\n\n.pagination {\n display: flex;\n padding-left: 0;\n list-style: none;\n border-radius: 0.25rem;\n}\n\n.page-item:first-child .page-link {\n margin-left: 0;\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n z-index: 2;\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.page-item.disabled .page-link {\n color: #636c72;\n pointer-events: none;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n\n.page-link {\n position: relative;\n display: block;\n padding: 0.5rem 0.75rem;\n margin-left: -1px;\n line-height: 1.25;\n color: #0275d8;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n\n.page-link:focus, .page-link:hover {\n color: #014c8c;\n text-decoration: none;\n background-color: #eceeef;\n border-color: #ddd;\n}\n\n.pagination-lg .page-link {\n padding: 0.75rem 1.5rem;\n font-size: 1.25rem;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n border-top-left-radius: 0.3rem;\n border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n border-top-right-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n padding: 0.25rem 0.5rem;\n font-size: 0.875rem;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n border-top-left-radius: 0.2rem;\n border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n border-top-right-radius: 0.2rem;\n border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n display: inline-block;\n padding: 0.25em 0.4em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25rem;\n}\n\n.badge:empty {\n display: none;\n}\n\n.btn .badge {\n position: relative;\n top: -1px;\n}\n\na.badge:focus, a.badge:hover {\n color: #fff;\n text-decoration: none;\n}\n\n.badge-pill {\n padding-right: 0.6em;\n padding-left: 0.6em;\n border-radius: 10rem;\n}\n\n.badge-default {\n background-color: #636c72;\n}\n\n.badge-default[href]:focus, .badge-default[href]:hover {\n background-color: #4b5257;\n}\n\n.badge-primary {\n background-color: #0275d8;\n}\n\n.badge-primary[href]:focus, .badge-primary[href]:hover {\n background-color: #025aa5;\n}\n\n.badge-success {\n background-color: #5cb85c;\n}\n\n.badge-success[href]:focus, .badge-success[href]:hover {\n background-color: #449d44;\n}\n\n.badge-info {\n background-color: #5bc0de;\n}\n\n.badge-info[href]:focus, .badge-info[href]:hover {\n background-color: #31b0d5;\n}\n\n.badge-warning {\n background-color: #f0ad4e;\n}\n\n.badge-warning[href]:focus, .badge-warning[href]:hover {\n background-color: #ec971f;\n}\n\n.badge-danger {\n background-color: #d9534f;\n}\n\n.badge-danger[href]:focus, .badge-danger[href]:hover {\n background-color: #c9302c;\n}\n\n.jumbotron {\n padding: 2rem 1rem;\n margin-bottom: 2rem;\n background-color: #eceeef;\n border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n .jumbotron {\n padding: 4rem 2rem;\n }\n}\n\n.jumbotron-fluid {\n padding-right: 0;\n padding-left: 0;\n border-radius: 0;\n}\n\n.alert {\n padding: 0.75rem 1.25rem;\n margin-bottom: 1rem;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n}\n\n.alert-heading {\n color: inherit;\n}\n\n.alert-link {\n font-weight: bold;\n}\n\n.alert-dismissible .close {\n position: relative;\n top: -0.75rem;\n right: -1.25rem;\n padding: 0.75rem 1.25rem;\n color: inherit;\n}\n\n.alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d0e9c6;\n}\n\n.alert-success hr {\n border-top-color: #c1e2b3;\n}\n\n.alert-success .alert-link {\n color: #2b542c;\n}\n\n.alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bcdff1;\n}\n\n.alert-info hr {\n border-top-color: #a6d5ec;\n}\n\n.alert-info .alert-link {\n color: #245269;\n}\n\n.alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faf2cc;\n}\n\n.alert-warning hr {\n border-top-color: #f7ecb5;\n}\n\n.alert-warning .alert-link {\n color: #66512c;\n}\n\n.alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebcccc;\n}\n\n.alert-danger hr {\n border-top-color: #e4b9b9;\n}\n\n.alert-danger .alert-link {\n color: #843534;\n}\n\n@keyframes progress-bar-stripes {\n from {\n background-position: 1rem 0;\n }\n to {\n background-position: 0 0;\n }\n}\n\n.progress {\n display: flex;\n overflow: hidden;\n font-size: 0.75rem;\n line-height: 1rem;\n text-align: center;\n background-color: #eceeef;\n border-radius: 0.25rem;\n}\n\n.progress-bar {\n height: 1rem;\n line-height: 1rem;\n color: #fff;\n background-color: #0275d8;\n transition: width 0.6s ease;\n}\n\n.progress-bar-striped {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n display: flex;\n align-items: flex-start;\n}\n\n.media-body {\n flex: 1;\n}\n\n.list-group {\n display: flex;\n flex-direction: column;\n padding-left: 0;\n margin-bottom: 0;\n}\n\n.list-group-item-action {\n width: 100%;\n color: #464a4c;\n text-align: inherit;\n}\n\n.list-group-item-action:focus, .list-group-item-action:hover {\n color: #464a4c;\n text-decoration: none;\n background-color: #f7f7f9;\n}\n\n.list-group-item-action:active {\n color: #292b2c;\n background-color: #eceeef;\n}\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 0.75rem 1.25rem;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:focus, .list-group-item:hover {\n text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n color: #636c72;\n cursor: not-allowed;\n background-color: #fff;\n}\n\n.list-group-item.active {\n z-index: 2;\n color: #fff;\n background-color: #0275d8;\n border-color: #0275d8;\n}\n\n.list-group-flush .list-group-item {\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n border-bottom: 0;\n}\n\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\n\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\n\na.list-group-item-success:focus, a.list-group-item-success:hover,\nbutton.list-group-item-success:focus,\nbutton.list-group-item-success:hover {\n color: #3c763d;\n background-color: #d0e9c6;\n}\n\na.list-group-item-success.active,\nbutton.list-group-item-success.active {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\n\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\n\na.list-group-item-info:focus, a.list-group-item-info:hover,\nbutton.list-group-item-info:focus,\nbutton.list-group-item-info:hover {\n color: #31708f;\n background-color: #c4e3f3;\n}\n\na.list-group-item-info.active,\nbutton.list-group-item-info.active {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\n\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\n\na.list-group-item-warning:focus, a.list-group-item-warning:hover,\nbutton.list-group-item-warning:focus,\nbutton.list-group-item-warning:hover {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\n\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\n\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\n\na.list-group-item-danger:focus, a.list-group-item-danger:hover,\nbutton.list-group-item-danger:focus,\nbutton.list-group-item-danger:hover {\n color: #a94442;\n background-color: #ebcccc;\n}\n\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n\n.embed-responsive {\n position: relative;\n display: block;\n width: 100%;\n padding: 0;\n overflow: hidden;\n}\n\n.embed-responsive::before {\n display: block;\n content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n\n.embed-responsive-21by9::before {\n padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n padding-top: 100%;\n}\n\n.close {\n float: right;\n font-size: 1.5rem;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: .5;\n}\n\n.close:focus, .close:hover {\n color: #000;\n text-decoration: none;\n opacity: .75;\n}\n\nbutton.close {\n padding: 0;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n\n.modal-open {\n overflow: hidden;\n}\n\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n outline: 0;\n}\n\n.modal.fade .modal-dialog {\n transition: transform 0.3s ease-out;\n transform: translate(0, -25%);\n}\n\n.modal.show .modal-dialog {\n transform: translate(0, 0);\n}\n\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n.modal-content {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n outline: 0;\n}\n\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n\n.modal-backdrop.fade {\n opacity: 0;\n}\n\n.modal-backdrop.show {\n opacity: 0.5;\n}\n\n.modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 15px;\n border-bottom: 1px solid #eceeef;\n}\n\n.modal-title {\n margin-bottom: 0;\n line-height: 1.5;\n}\n\n.modal-body {\n position: relative;\n flex: 1 1 auto;\n padding: 15px;\n}\n\n.modal-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 15px;\n border-top: 1px solid #eceeef;\n}\n\n.modal-footer > :not(:first-child) {\n margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n@media (min-width: 576px) {\n .modal-dialog {\n max-width: 500px;\n margin: 30px auto;\n }\n .modal-sm {\n max-width: 300px;\n }\n}\n\n@media (min-width: 992px) {\n .modal-lg {\n max-width: 800px;\n }\n}\n\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n opacity: 0;\n}\n\n.tooltip.show {\n opacity: 0.9;\n}\n\n.tooltip.tooltip-top, .tooltip.bs-tether-element-attached-bottom {\n padding: 5px 0;\n margin-top: -3px;\n}\n\n.tooltip.tooltip-top .tooltip-inner::before, .tooltip.bs-tether-element-attached-bottom .tooltip-inner::before {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n content: \"\";\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n\n.tooltip.tooltip-right, .tooltip.bs-tether-element-attached-left {\n padding: 0 5px;\n margin-left: 3px;\n}\n\n.tooltip.tooltip-right .tooltip-inner::before, .tooltip.bs-tether-element-attached-left .tooltip-inner::before {\n top: 50%;\n left: 0;\n margin-top: -5px;\n content: \"\";\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n\n.tooltip.tooltip-bottom, .tooltip.bs-tether-element-attached-top {\n padding: 5px 0;\n margin-top: 3px;\n}\n\n.tooltip.tooltip-bottom .tooltip-inner::before, .tooltip.bs-tether-element-attached-top .tooltip-inner::before {\n top: 0;\n left: 50%;\n margin-left: -5px;\n content: \"\";\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n\n.tooltip.tooltip-left, .tooltip.bs-tether-element-attached-right {\n padding: 0 5px;\n margin-left: -3px;\n}\n\n.tooltip.tooltip-left .tooltip-inner::before, .tooltip.bs-tether-element-attached-right .tooltip-inner::before {\n top: 50%;\n right: 0;\n margin-top: -5px;\n content: \"\";\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 0.25rem;\n}\n\n.tooltip-inner::before {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: block;\n max-width: 276px;\n padding: 1px;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n line-height: 1.5;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n white-space: normal;\n line-break: auto;\n font-size: 0.875rem;\n word-wrap: break-word;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 0.3rem;\n}\n\n.popover.popover-top, .popover.bs-tether-element-attached-bottom {\n margin-top: -10px;\n}\n\n.popover.popover-top::before, .popover.popover-top::after, .popover.bs-tether-element-attached-bottom::before, .popover.bs-tether-element-attached-bottom::after {\n left: 50%;\n border-bottom-width: 0;\n}\n\n.popover.popover-top::before, .popover.bs-tether-element-attached-bottom::before {\n bottom: -11px;\n margin-left: -11px;\n border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-top::after, .popover.bs-tether-element-attached-bottom::after {\n bottom: -10px;\n margin-left: -10px;\n border-top-color: #fff;\n}\n\n.popover.popover-right, .popover.bs-tether-element-attached-left {\n margin-left: 10px;\n}\n\n.popover.popover-right::before, .popover.popover-right::after, .popover.bs-tether-element-attached-left::before, .popover.bs-tether-element-attached-left::after {\n top: 50%;\n border-left-width: 0;\n}\n\n.popover.popover-right::before, .popover.bs-tether-element-attached-left::before {\n left: -11px;\n margin-top: -11px;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-right::after, .popover.bs-tether-element-attached-left::after {\n left: -10px;\n margin-top: -10px;\n border-right-color: #fff;\n}\n\n.popover.popover-bottom, .popover.bs-tether-element-attached-top {\n margin-top: 10px;\n}\n\n.popover.popover-bottom::before, .popover.popover-bottom::after, .popover.bs-tether-element-attached-top::before, .popover.bs-tether-element-attached-top::after {\n left: 50%;\n border-top-width: 0;\n}\n\n.popover.popover-bottom::before, .popover.bs-tether-element-attached-top::before {\n top: -11px;\n margin-left: -11px;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-bottom::after, .popover.bs-tether-element-attached-top::after {\n top: -10px;\n margin-left: -10px;\n border-bottom-color: #f7f7f7;\n}\n\n.popover.popover-bottom .popover-title::before, .popover.bs-tether-element-attached-top .popover-title::before {\n position: absolute;\n top: 0;\n left: 50%;\n display: block;\n width: 20px;\n margin-left: -10px;\n content: \"\";\n border-bottom: 1px solid #f7f7f7;\n}\n\n.popover.popover-left, .popover.bs-tether-element-attached-right {\n margin-left: -10px;\n}\n\n.popover.popover-left::before, .popover.popover-left::after, .popover.bs-tether-element-attached-right::before, .popover.bs-tether-element-attached-right::after {\n top: 50%;\n border-right-width: 0;\n}\n\n.popover.popover-left::before, .popover.bs-tether-element-attached-right::before {\n right: -11px;\n margin-top: -11px;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n.popover.popover-left::after, .popover.bs-tether-element-attached-right::after {\n right: -10px;\n margin-top: -10px;\n border-left-color: #fff;\n}\n\n.popover-title {\n padding: 8px 14px;\n margin-bottom: 0;\n font-size: 1rem;\n color: inherit;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-top-left-radius: calc(0.3rem - 1px);\n border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-title:empty {\n display: none;\n}\n\n.popover-content {\n padding: 9px 14px;\n color: #292b2c;\n}\n\n.popover::before,\n.popover::after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n\n.popover::before {\n content: \"\";\n border-width: 11px;\n}\n\n.popover::after {\n content: \"\";\n border-width: 10px;\n}\n\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-item {\n position: relative;\n display: none;\n align-items: center;\n width: 100%;\n transition: transform 0.6s ease;\n backface-visibility: hidden;\n perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n display: flex;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n position: absolute;\n top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n transform: translate3d(0, 0, 0);\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n transform: translate3d(100%, 0, 0);\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n transform: translate3d(-100%, 0, 0);\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n position: absolute;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 15%;\n color: #fff;\n text-align: center;\n opacity: 0.5;\n}\n\n.carousel-control-prev:focus, .carousel-control-prev:hover,\n.carousel-control-next:focus,\n.carousel-control-next:hover {\n color: #fff;\n text-decoration: none;\n outline: 0;\n opacity: .9;\n}\n\n.carousel-control-prev {\n left: 0;\n}\n\n.carousel-control-next {\n right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n display: inline-block;\n width: 20px;\n height: 20px;\n background: transparent no-repeat center center;\n background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n position: absolute;\n right: 0;\n bottom: 10px;\n left: 0;\n z-index: 15;\n display: flex;\n justify-content: center;\n padding-left: 0;\n margin-right: 15%;\n margin-left: 15%;\n list-style: none;\n}\n\n.carousel-indicators li {\n position: relative;\n flex: 1 0 auto;\n max-width: 30px;\n height: 3px;\n margin-right: 3px;\n margin-left: 3px;\n text-indent: -999px;\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n position: absolute;\n top: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators li::after {\n position: absolute;\n bottom: -10px;\n left: 0;\n display: inline-block;\n width: 100%;\n height: 10px;\n content: \"\";\n}\n\n.carousel-indicators .active {\n background-color: #fff;\n}\n\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n}\n\n.align-baseline {\n vertical-align: baseline !important;\n}\n\n.align-top {\n vertical-align: top !important;\n}\n\n.align-middle {\n vertical-align: middle !important;\n}\n\n.align-bottom {\n vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n vertical-align: text-top !important;\n}\n\n.bg-faded {\n background-color: #f7f7f7;\n}\n\n.bg-primary {\n background-color: #0275d8 !important;\n}\n\na.bg-primary:focus, a.bg-primary:hover {\n background-color: #025aa5 !important;\n}\n\n.bg-success {\n background-color: #5cb85c !important;\n}\n\na.bg-success:focus, a.bg-success:hover {\n background-color: #449d44 !important;\n}\n\n.bg-info {\n background-color: #5bc0de !important;\n}\n\na.bg-info:focus, a.bg-info:hover {\n background-color: #31b0d5 !important;\n}\n\n.bg-warning {\n background-color: #f0ad4e !important;\n}\n\na.bg-warning:focus, a.bg-warning:hover {\n background-color: #ec971f !important;\n}\n\n.bg-danger {\n background-color: #d9534f !important;\n}\n\na.bg-danger:focus, a.bg-danger:hover {\n background-color: #c9302c !important;\n}\n\n.bg-inverse {\n background-color: #292b2c !important;\n}\n\na.bg-inverse:focus, a.bg-inverse:hover {\n background-color: #101112 !important;\n}\n\n.border-0 {\n border: 0 !important;\n}\n\n.border-top-0 {\n border-top: 0 !important;\n}\n\n.border-right-0 {\n border-right: 0 !important;\n}\n\n.border-bottom-0 {\n border-bottom: 0 !important;\n}\n\n.border-left-0 {\n border-left: 0 !important;\n}\n\n.rounded {\n border-radius: 0.25rem;\n}\n\n.rounded-top {\n border-top-left-radius: 0.25rem;\n border-top-right-radius: 0.25rem;\n}\n\n.rounded-right {\n border-top-right-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n}\n\n.rounded-bottom {\n border-bottom-right-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.rounded-left {\n border-top-left-radius: 0.25rem;\n border-bottom-left-radius: 0.25rem;\n}\n\n.rounded-circle {\n border-radius: 50%;\n}\n\n.rounded-0 {\n border-radius: 0;\n}\n\n.clearfix::after {\n display: block;\n clear: both;\n content: \"\";\n}\n\n.d-none {\n display: none !important;\n}\n\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-none {\n display: none !important;\n }\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 768px) {\n .d-md-none {\n display: none !important;\n }\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 992px) {\n .d-lg-none {\n display: none !important;\n }\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n}\n\n@media (min-width: 1200px) {\n .d-xl-none {\n display: none !important;\n }\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n}\n\n.d-print-block {\n display: none !important;\n}\n\n@media print {\n .d-print-block {\n display: block !important;\n }\n}\n\n.d-print-inline {\n display: none !important;\n}\n\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n}\n\n.d-print-inline-block {\n display: none !important;\n}\n\n@media print {\n .d-print-inline-block {\n display: inline-block !important;\n }\n}\n\n@media print {\n .d-print-none {\n display: none !important;\n }\n}\n\n.order-first {\n order: -1;\n}\n\n.order-last {\n order: 1;\n}\n\n.order-0 {\n order: 0;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 1;\n }\n .order-sm-0 {\n order: 0;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 768px) {\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 1;\n }\n .order-md-0 {\n order: 0;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 992px) {\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 1;\n }\n .order-lg-0 {\n order: 0;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n}\n\n@media (min-width: 1200px) {\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 1;\n }\n .order-xl-0 {\n order: 0;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n}\n\n.float-left {\n float: left !important;\n}\n\n.float-right {\n float: right !important;\n}\n\n.float-none {\n float: none !important;\n}\n\n@media (min-width: 576px) {\n .float-sm-left {\n float: left !important;\n }\n .float-sm-right {\n float: right !important;\n }\n .float-sm-none {\n float: none !important;\n }\n}\n\n@media (min-width: 768px) {\n .float-md-left {\n float: left !important;\n }\n .float-md-right {\n float: right !important;\n }\n .float-md-none {\n float: none !important;\n }\n}\n\n@media (min-width: 992px) {\n .float-lg-left {\n float: left !important;\n }\n .float-lg-right {\n float: right !important;\n }\n .float-lg-none {\n float: none !important;\n }\n}\n\n@media (min-width: 1200px) {\n .float-xl-left {\n float: left !important;\n }\n .float-xl-right {\n float: right !important;\n }\n .float-xl-none {\n float: none !important;\n }\n}\n\n.fixed-top {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n\n.fixed-bottom {\n position: fixed;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1030;\n}\n\n.sticky-top {\n position: sticky;\n top: 0;\n z-index: 1020;\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n clip-path: inset(50%);\n border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n overflow: visible;\n clip: auto;\n white-space: normal;\n clip-path: none;\n}\n\n.w-25 {\n width: 25% !important;\n}\n\n.w-50 {\n width: 50% !important;\n}\n\n.w-75 {\n width: 75% !important;\n}\n\n.w-100 {\n width: 100% !important;\n}\n\n.h-25 {\n height: 25% !important;\n}\n\n.h-50 {\n height: 50% !important;\n}\n\n.h-75 {\n height: 75% !important;\n}\n\n.h-100 {\n height: 100% !important;\n}\n\n.mw-100 {\n max-width: 100% !important;\n}\n\n.mh-100 {\n max-height: 100% !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mr-0 {\n margin-right: 0 !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.ml-0 {\n margin-left: 0 !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mr-1 {\n margin-right: 0.25rem !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.ml-1 {\n margin-left: 0.25rem !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mr-2 {\n margin-right: 0.5rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.ml-2 {\n margin-left: 0.5rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mr-3 {\n margin-right: 1rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.ml-3 {\n margin-left: 1rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mr-4 {\n margin-right: 1.5rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.ml-4 {\n margin-left: 1.5rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mr-5 {\n margin-right: 3rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.ml-5 {\n margin-left: 3rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pr-0 {\n padding-right: 0 !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pl-0 {\n padding-left: 0 !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pr-1 {\n padding-right: 0.25rem !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pl-1 {\n padding-left: 0.25rem !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pr-2 {\n padding-right: 0.5rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pl-2 {\n padding-left: 0.5rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pr-3 {\n padding-right: 1rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pl-3 {\n padding-left: 1rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pr-4 {\n padding-right: 1.5rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pl-4 {\n padding-left: 1.5rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pr-5 {\n padding-right: 3rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.pl-5 {\n padding-left: 3rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.mr-auto {\n margin-right: auto !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ml-auto {\n margin-left: auto !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n@media (min-width: 576px) {\n .m-sm-0 {\n margin: 0 !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mr-sm-0 {\n margin-right: 0 !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .ml-sm-0 {\n margin-left: 0 !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mr-sm-1 {\n margin-right: 0.25rem !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-sm-1 {\n margin-left: 0.25rem !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mr-sm-2 {\n margin-right: 0.5rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-sm-2 {\n margin-left: 0.5rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mr-sm-3 {\n margin-right: 1rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .ml-sm-3 {\n margin-left: 1rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mr-sm-4 {\n margin-right: 1.5rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-sm-4 {\n margin-left: 1.5rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mr-sm-5 {\n margin-right: 3rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .ml-sm-5 {\n margin-left: 3rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pr-sm-0 {\n padding-right: 0 !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pl-sm-0 {\n padding-left: 0 !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pr-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-sm-1 {\n padding-left: 0.25rem !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pr-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-sm-2 {\n padding-left: 0.5rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pr-sm-3 {\n padding-right: 1rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pl-sm-3 {\n padding-left: 1rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pr-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-sm-4 {\n padding-left: 1.5rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pr-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .pl-sm-5 {\n padding-left: 3rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .mr-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ml-sm-auto {\n margin-left: auto !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 768px) {\n .m-md-0 {\n margin: 0 !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mr-md-0 {\n margin-right: 0 !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .ml-md-0 {\n margin-left: 0 !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mr-md-1 {\n margin-right: 0.25rem !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-md-1 {\n margin-left: 0.25rem !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mr-md-2 {\n margin-right: 0.5rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-md-2 {\n margin-left: 0.5rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mr-md-3 {\n margin-right: 1rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .ml-md-3 {\n margin-left: 1rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mr-md-4 {\n margin-right: 1.5rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-md-4 {\n margin-left: 1.5rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mr-md-5 {\n margin-right: 3rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .ml-md-5 {\n margin-left: 3rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pr-md-0 {\n padding-right: 0 !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pl-md-0 {\n padding-left: 0 !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pr-md-1 {\n padding-right: 0.25rem !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-md-1 {\n padding-left: 0.25rem !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pr-md-2 {\n padding-right: 0.5rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-md-2 {\n padding-left: 0.5rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pr-md-3 {\n padding-right: 1rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pl-md-3 {\n padding-left: 1rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pr-md-4 {\n padding-right: 1.5rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-md-4 {\n padding-left: 1.5rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pr-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .pl-md-5 {\n padding-left: 3rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .mr-md-auto {\n margin-right: auto !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ml-md-auto {\n margin-left: auto !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 992px) {\n .m-lg-0 {\n margin: 0 !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mr-lg-0 {\n margin-right: 0 !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .ml-lg-0 {\n margin-left: 0 !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mr-lg-1 {\n margin-right: 0.25rem !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-lg-1 {\n margin-left: 0.25rem !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mr-lg-2 {\n margin-right: 0.5rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-lg-2 {\n margin-left: 0.5rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mr-lg-3 {\n margin-right: 1rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .ml-lg-3 {\n margin-left: 1rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mr-lg-4 {\n margin-right: 1.5rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-lg-4 {\n margin-left: 1.5rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mr-lg-5 {\n margin-right: 3rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .ml-lg-5 {\n margin-left: 3rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pr-lg-0 {\n padding-right: 0 !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pl-lg-0 {\n padding-left: 0 !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pr-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-lg-1 {\n padding-left: 0.25rem !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pr-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-lg-2 {\n padding-left: 0.5rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pr-lg-3 {\n padding-right: 1rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pl-lg-3 {\n padding-left: 1rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pr-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-lg-4 {\n padding-left: 1.5rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pr-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .pl-lg-5 {\n padding-left: 3rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .mr-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ml-lg-auto {\n margin-left: auto !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n@media (min-width: 1200px) {\n .m-xl-0 {\n margin: 0 !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mr-xl-0 {\n margin-right: 0 !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .ml-xl-0 {\n margin-left: 0 !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mr-xl-1 {\n margin-right: 0.25rem !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .ml-xl-1 {\n margin-left: 0.25rem !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mr-xl-2 {\n margin-right: 0.5rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .ml-xl-2 {\n margin-left: 0.5rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mr-xl-3 {\n margin-right: 1rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .ml-xl-3 {\n margin-left: 1rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mr-xl-4 {\n margin-right: 1.5rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .ml-xl-4 {\n margin-left: 1.5rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mr-xl-5 {\n margin-right: 3rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .ml-xl-5 {\n margin-left: 3rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pr-xl-0 {\n padding-right: 0 !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pl-xl-0 {\n padding-left: 0 !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pr-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pl-xl-1 {\n padding-left: 0.25rem !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pr-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pl-xl-2 {\n padding-left: 0.5rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pr-xl-3 {\n padding-right: 1rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pl-xl-3 {\n padding-left: 1rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pr-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pl-xl-4 {\n padding-left: 1.5rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pr-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .pl-xl-5 {\n padding-left: 3rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .mr-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ml-xl-auto {\n margin-left: auto !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n}\n\n.text-justify {\n text-align: justify !important;\n}\n\n.text-nowrap {\n white-space: nowrap !important;\n}\n\n.text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.text-left {\n text-align: left !important;\n}\n\n.text-right {\n text-align: right !important;\n}\n\n.text-center {\n text-align: center !important;\n}\n\n@media (min-width: 576px) {\n .text-sm-left {\n text-align: left !important;\n }\n .text-sm-right {\n text-align: right !important;\n }\n .text-sm-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 768px) {\n .text-md-left {\n text-align: left !important;\n }\n .text-md-right {\n text-align: right !important;\n }\n .text-md-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 992px) {\n .text-lg-left {\n text-align: left !important;\n }\n .text-lg-right {\n text-align: right !important;\n }\n .text-lg-center {\n text-align: center !important;\n }\n}\n\n@media (min-width: 1200px) {\n .text-xl-left {\n text-align: left !important;\n }\n .text-xl-right {\n text-align: right !important;\n }\n .text-xl-center {\n text-align: center !important;\n }\n}\n\n.text-lowercase {\n text-transform: lowercase !important;\n}\n\n.text-uppercase {\n text-transform: uppercase !important;\n}\n\n.text-capitalize {\n text-transform: capitalize !important;\n}\n\n.font-weight-normal {\n font-weight: normal;\n}\n\n.font-weight-bold {\n font-weight: bold;\n}\n\n.font-italic {\n font-style: italic;\n}\n\n.text-white {\n color: #fff !important;\n}\n\n.text-muted {\n color: #636c72 !important;\n}\n\na.text-muted:focus, a.text-muted:hover {\n color: #4b5257 !important;\n}\n\n.text-primary {\n color: #0275d8 !important;\n}\n\na.text-primary:focus, a.text-primary:hover {\n color: #025aa5 !important;\n}\n\n.text-success {\n color: #5cb85c !important;\n}\n\na.text-success:focus, a.text-success:hover {\n color: #449d44 !important;\n}\n\n.text-info {\n color: #5bc0de !important;\n}\n\na.text-info:focus, a.text-info:hover {\n color: #31b0d5 !important;\n}\n\n.text-warning {\n color: #f0ad4e !important;\n}\n\na.text-warning:focus, a.text-warning:hover {\n color: #ec971f !important;\n}\n\n.text-danger {\n color: #d9534f !important;\n}\n\na.text-danger:focus, a.text-danger:hover {\n color: #c9302c !important;\n}\n\n.text-gray-dark {\n color: #292b2c !important;\n}\n\na.text-gray-dark:focus, a.text-gray-dark:hover {\n color: #101112 !important;\n}\n\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n\n/*# sourceMappingURL=bootstrap.css.map */",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}
\ No newline at end of file diff --git a/library/bootstrap/css/bootstrap.min.css b/library/bootstrap/css/bootstrap.min.css index 64a3d9e14..673c77d02 100644 --- a/library/bootstrap/css/bootstrap.min.css +++ b/library/bootstrap/css/bootstrap.min.css @@ -3,4 +3,4 @@ * Copyright 2011-2017 The Bootstrap Authors * Copyright 2011-2017 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */@media print{*,::after,::before,blockquote::first-letter,blockquote::first-line,div::first-letter,div::first-line,li::first-letter,li::first-line,p::first-letter,p::first-line{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}body{margin:0;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0275d8;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.1}.display-2{font-size:5.5rem;font-weight:300;line-height:1.1}.display-3{font-size:4.5rem;font-weight:300;line-height:1.1}.display-4{font-size:3.5rem;font-weight:300;line-height:1.1}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:5px}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;margin-bottom:1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote-footer{display:block;font-size:80%;color:#636c72}.blockquote-footer::before{content:"\2014 \00A0"}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse .blockquote-footer::before{content:""}.blockquote-reverse .blockquote-footer::after{content:"\00A0 \2014"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#636c72}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{padding:.2rem .4rem;font-size:90%;color:#bd4147;background-color:#f7f7f9;border-radius:.25rem}a>code{padding:0;color:inherit;background-color:inherit}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#292b2c;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;margin-bottom:1rem;font-size:90%;color:#292b2c}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container{padding-right:15px;padding-left:15px}}@media (min-width:576px){.container{width:540px;max-width:100%}}@media (min-width:768px){.container{width:720px;max-width:100%}}@media (min-width:992px){.container{width:960px;max-width:100%}}@media (min-width:1200px){.container{width:1140px;max-width:100%}}.container-fluid{margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container-fluid{padding-right:15px;padding-left:15px}}.row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}@media (min-width:576px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:768px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:992px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:1200px){.row{margin-right:-15px;margin-left:-15px}}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:768px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:992px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}.col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-0{right:auto}.pull-1{right:8.333333%}.pull-2{right:16.666667%}.pull-3{right:25%}.pull-4{right:33.333333%}.pull-5{right:41.666667%}.pull-6{right:50%}.pull-7{right:58.333333%}.pull-8{right:66.666667%}.pull-9{right:75%}.pull-10{right:83.333333%}.pull-11{right:91.666667%}.pull-12{right:100%}.push-0{left:auto}.push-1{left:8.333333%}.push-2{left:16.666667%}.push-3{left:25%}.push-4{left:33.333333%}.push-5{left:41.666667%}.push-6{left:50%}.push-7{left:58.333333%}.push-8{left:66.666667%}.push-9{left:75%}.push-10{left:83.333333%}.push-11{left:91.666667%}.push-12{left:100%}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.333333%}.pull-sm-2{right:16.666667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.333333%}.pull-sm-5{right:41.666667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.333333%}.pull-sm-8{right:66.666667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.333333%}.pull-sm-11{right:91.666667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.333333%}.push-sm-2{left:16.666667%}.push-sm-3{left:25%}.push-sm-4{left:33.333333%}.push-sm-5{left:41.666667%}.push-sm-6{left:50%}.push-sm-7{left:58.333333%}.push-sm-8{left:66.666667%}.push-sm-9{left:75%}.push-sm-10{left:83.333333%}.push-sm-11{left:91.666667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.333333%}.pull-md-2{right:16.666667%}.pull-md-3{right:25%}.pull-md-4{right:33.333333%}.pull-md-5{right:41.666667%}.pull-md-6{right:50%}.pull-md-7{right:58.333333%}.pull-md-8{right:66.666667%}.pull-md-9{right:75%}.pull-md-10{right:83.333333%}.pull-md-11{right:91.666667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.333333%}.push-md-2{left:16.666667%}.push-md-3{left:25%}.push-md-4{left:33.333333%}.push-md-5{left:41.666667%}.push-md-6{left:50%}.push-md-7{left:58.333333%}.push-md-8{left:66.666667%}.push-md-9{left:75%}.push-md-10{left:83.333333%}.push-md-11{left:91.666667%}.push-md-12{left:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.333333%}.pull-lg-2{right:16.666667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.333333%}.pull-lg-5{right:41.666667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.333333%}.pull-lg-8{right:66.666667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.333333%}.pull-lg-11{right:91.666667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.333333%}.push-lg-2{left:16.666667%}.push-lg-3{left:25%}.push-lg-4{left:33.333333%}.push-lg-5{left:41.666667%}.push-lg-6{left:50%}.push-lg-7{left:58.333333%}.push-lg-8{left:66.666667%}.push-lg-9{left:75%}.push-lg-10{left:83.333333%}.push-lg-11{left:91.666667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-1{-webkit-box-flex:0;-webkit-flex:0 0 8.333333%;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-webkit-flex:0 0 16.666667%;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-webkit-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-webkit-flex:0 0 33.333333%;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-webkit-flex:0 0 41.666667%;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-webkit-flex:0 0 58.333333%;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-webkit-flex:0 0 66.666667%;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-webkit-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-webkit-flex:0 0 83.333333%;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-webkit-flex:0 0 91.666667%;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.333333%}.pull-xl-2{right:16.666667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.333333%}.pull-xl-5{right:41.666667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.333333%}.pull-xl-8{right:66.666667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.333333%}.pull-xl-11{right:91.666667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.333333%}.push-xl-2{left:16.666667%}.push-xl-3{left:25%}.push-xl-4{left:33.333333%}.push-xl-5{left:41.666667%}.push-xl-6{left:50%}.push-xl-7{left:58.333333%}.push-xl-8{left:66.666667%}.push-xl-9{left:75%}.push-xl-10{left:83.333333%}.push-xl-11{left:91.666667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #eceeef}.table-bordered td,.table-bordered th{border:1px solid #eceeef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table-success,.table-success>td,.table-success>th{background-color:#dff0d8}.table-hover .table-success:hover{background-color:#d0e9c6}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>td,.table-info>th{background-color:#d9edf7}.table-hover .table-info:hover{background-color:#c4e3f3}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fcf8e3}.table-hover .table-warning:hover{background-color:#faf2cc}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>td,.table-danger>th{background-color:#f2dede}.table-hover .table-danger:hover{background-color:#ebcccc}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.thead-inverse th{color:#fff;background-color:#292b2c}.thead-default th{color:#464a4c;background-color:#eceeef}.table-inverse{color:#fff;background-color:#292b2c}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#3b3e40}.table-inverse.table-bordered{border:0}.table-inverse.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-inverse.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:991px){.table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive.table-bordered{border:0}}.form-control{display:block;width:100%;padding:.5rem 1rem;font-size:1rem;line-height:1.25;color:#464a4c;background-color:#fff;background-image:none;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#464a4c;background-color:#fff;border-color:#5cb3fd;outline:0}.form-control::-webkit-input-placeholder{color:#636c72;opacity:1}.form-control::-moz-placeholder{color:#636c72;opacity:1}.form-control:-ms-input-placeholder{color:#636c72;opacity:1}.form-control::placeholder{color:#636c72;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eceeef;opacity:1}.form-control:disabled{cursor:not-allowed}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#464a4c;background-color:#fff}.form-control-file,.form-control-range{display:block}.col-form-label{padding-top:calc(.5rem - 1px * 2);padding-bottom:calc(.5rem - 1px * 2);margin-bottom:0}.col-form-label-lg{padding-top:calc(.5rem - 1px * 2);padding-bottom:calc(.5rem - 1px * 2);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem - 1px * 2);padding-bottom:calc(.25rem - 1px * 2);font-size:.875rem}.col-form-legend{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;font-size:1rem}.form-control-static{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;line-height:1.25;border:solid transparent;border-width:1px 0}.form-control-static.form-control-lg,.form-control-static.form-control-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>select.input-group-addon:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>select.input-group-addon:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-check{position:relative;display:block;margin-bottom:.5rem}.form-check.disabled .form-check-label{color:#636c72;cursor:not-allowed}.form-check-label{padding-left:1.25rem;margin-bottom:0}.form-check-input{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.form-check-input:only-child{position:static}.form-check-inline{display:inline-block}.form-check-inline .form-check-label{vertical-align:middle}.form-check-inline+.form-check-inline{margin-left:.75rem}.form-control-feedback{margin-top:.25rem}.form-control-danger,.form-control-success,.form-control-warning{padding-right:3rem;background-repeat:no-repeat;background-position:center right .5625rem;-webkit-background-size:1.125rem 1.125rem;background-size:1.125rem 1.125rem}.has-success .col-form-label,.has-success .custom-control,.has-success .form-check-label,.has-success .form-control-feedback,.has-success .form-control-label{color:#5cb85c}.has-success .custom-file-control,.has-success .custom-select,.has-success .form-control{border-color:#5cb85c}.has-success .input-group-addon{color:#5cb85c;background-color:#eaf6ea;border-color:#5cb85c}.has-success .form-control-success{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E")}.has-warning .col-form-label,.has-warning .custom-control,.has-warning .form-check-label,.has-warning .form-control-feedback,.has-warning .form-control-label{color:#f0ad4e}.has-warning .custom-file-control,.has-warning .custom-select,.has-warning .form-control{border-color:#f0ad4e}.has-warning .input-group-addon{color:#f0ad4e;background-color:#fff;border-color:#f0ad4e}.has-warning .form-control-warning{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E")}.has-danger .col-form-label,.has-danger .custom-control,.has-danger .form-check-label,.has-danger .form-control-feedback,.has-danger .form-control-label{color:#d9534f}.has-danger .custom-file-control,.has-danger .custom-select,.has-danger .form-control{border-color:#d9534f}.has-danger .input-group-addon{color:#d9534f;background-color:#fdf7f7;border-color:#d9534f}.has-danger .form-control-danger{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E")}.form-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-control-label{margin-bottom:0;vertical-align:middle}.form-inline .form-check{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:auto;margin-top:0;margin-bottom:0}.form-inline .form-check-label{padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0}.form-inline .custom-control-indicator{position:static;display:inline-block;margin-right:.25rem;vertical-align:text-bottom}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;line-height:1.25;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.btn.disabled,.btn:disabled{cursor:not-allowed;opacity:.65}.btn.active,.btn:active{background-image:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.btn-primary.focus,.btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.btn-primary.disabled,.btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary.focus,.btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.btn-secondary.disabled,.btn-secondary:disabled{background-color:#fff;border-color:#ccc}.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.btn-info.focus,.btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.btn-info.disabled,.btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.btn-success.focus,.btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.btn-success.disabled,.btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.btn-warning.focus,.btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.btn-warning.disabled,.btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.btn-danger.focus,.btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.btn-danger.disabled,.btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.btn-outline-primary{color:#0275d8;background-color:transparent;background-image:none;border-color:#0275d8}.btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-outline-primary.focus,.btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.btn-outline-primary.active,.btn-outline-primary:active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-outline-secondary{color:#ccc;background-color:transparent;background-image:none;border-color:#ccc}.btn-outline-secondary:hover{color:#292b2c;background-color:#ccc;border-color:#ccc}.btn-outline-secondary.focus,.btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.btn-outline-secondary.active,.btn-outline-secondary:active,.show>.btn-outline-secondary.dropdown-toggle{color:#292b2c;background-color:#ccc;border-color:#ccc}.btn-outline-info{color:#5bc0de;background-color:transparent;background-image:none;border-color:#5bc0de}.btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-info.focus,.btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.btn-outline-info.active,.btn-outline-info:active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-success{color:#5cb85c;background-color:transparent;background-image:none;border-color:#5cb85c}.btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-success.focus,.btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.btn-outline-success.active,.btn-outline-success:active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-warning{color:#f0ad4e;background-color:transparent;background-image:none;border-color:#f0ad4e}.btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning.focus,.btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.btn-outline-warning.active,.btn-outline-warning:active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-danger{color:#d9534f;background-color:transparent;background-image:none;border-color:#d9534f}.btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-outline-danger.focus,.btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.btn-outline-danger.active,.btn-outline-danger:active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-link{font-weight:400;color:#0275d8;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus{border-color:transparent}.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.btn-link:disabled{color:#636c72}.btn-link:disabled:focus,.btn-link:disabled:hover{text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.3em;vertical-align:middle;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropup .dropdown-toggle::after{border-top:0;border-bottom:.3em solid}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#292b2c;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #eceeef}.dropdown-item{display:block;width:100%;padding:3px 1.5rem;clear:both;font-weight:400;color:#292b2c;text-align:inherit;white-space:nowrap;background:0 0;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1d1e1f;text-decoration:none;background-color:#f7f7f9}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0275d8}.dropdown-item.disabled,.dropdown-item:disabled{color:#636c72;cursor:not-allowed;background-color:transparent}.show>.dropdown-menu{display:block}.show>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#636c72;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.dropup .dropdown-menu{top:auto;bottom:100%;margin-bottom:.125rem}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;margin-bottom:0}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn+.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%}.input-group .form-control{position:relative;z-index:2;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group .form-control:active,.input-group .form-control:focus,.input-group .form-control:hover{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.25;color:#464a4c;text-align:center;background-color:#eceeef;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:not(:last-child),.input-group-addon:not(:last-child),.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.btn,.input-group-btn:not(:first-child)>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group>.btn,.input-group-btn:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:not(:last-child){border-right:0}.input-group .form-control:not(:first-child),.input-group-addon:not(:first-child),.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group>.btn,.input-group-btn:not(:first-child)>.dropdown-toggle,.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.btn,.input-group-btn:not(:last-child)>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.form-control+.input-group-addon:not(:first-child){border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:3}.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group{margin-right:-1px}.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group{z-index:2;margin-left:-1px}.input-group-btn:not(:first-child)>.btn-group:active,.input-group-btn:not(:first-child)>.btn-group:focus,.input-group-btn:not(:first-child)>.btn-group:hover,.input-group-btn:not(:first-child)>.btn:active,.input-group-btn:not(:first-child)>.btn:focus,.input-group-btn:not(:first-child)>.btn:hover{z-index:3}.custom-control{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;min-height:1.5rem;padding-left:1.5rem;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-indicator{color:#fff;background-color:#0275d8}.custom-control-input:focus~.custom-control-indicator{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #0275d8;box-shadow:0 0 0 1px #fff,0 0 0 3px #0275d8}.custom-control-input:active~.custom-control-indicator{color:#fff;background-color:#8fcafe}.custom-control-input:disabled~.custom-control-indicator{cursor:not-allowed;background-color:#eceeef}.custom-control-input:disabled~.custom-control-description{color:#636c72;cursor:not-allowed}.custom-control-indicator{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#ddd;background-repeat:no-repeat;background-position:center center;-webkit-background-size:50% 50%;background-size:50% 50%}.custom-checkbox .custom-control-indicator{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator{background-color:#0275d8;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-radio .custom-control-indicator{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-controls-stacked{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.custom-controls-stacked .custom-control{margin-bottom:.25rem}.custom-controls-stacked .custom-control+.custom-control{margin-left:0}.custom-select{display:inline-block;max-width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.25;color:#464a4c;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;-webkit-background-size:8px 10px;background-size:8px 10px;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#5cb3fd;outline:0}.custom-select:focus::-ms-value{color:#464a4c;background-color:#fff}.custom-select:disabled{color:#636c72;cursor:not-allowed;background-color:#eceeef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-file{position:relative;display:inline-block;max-width:100%;height:2.5rem;margin-bottom:0}.custom-file-input{min-width:14rem;max-width:100%;height:2.5rem;margin:0;opacity:0}.custom-file-control{position:absolute;top:0;right:0;left:0;z-index:5;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#464a4c;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.custom-file-control:lang(en):empty::after{content:"Choose file..."}.custom-file-control::before{position:absolute;top:-1px;right:-1px;bottom:-1px;z-index:6;display:block;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#464a4c;background-color:#eceeef;border:1px solid rgba(0,0,0,.15);border-radius:0 .25rem .25rem 0}.custom-file-control:lang(en)::before{content:"Browse"}.nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#636c72;cursor:not-allowed}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .nav-link.disabled{color:#636c72;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#464a4c;background-color:#fff;border-color:#ddd #ddd #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-item.show .nav-link,.nav-pills .nav-link.active{color:#fff;background-color:#0275d8}.nav-fill .nav-item{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}@media (max-width:575px){.navbar>.container,.navbar>.container-fluid{width:100%;margin-right:0;margin-left:0}}.navbar-brand{display:inline-block;-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.navbar-toggler{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start;padding:.25rem .75rem;font-size:1.25rem;line-height:1;background:0 0;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}@media (max-width:575px){.navbar-expand-sm .navbar-nav .dropdown-menu{position:static;float:none}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767px){.navbar-expand-md .navbar-nav .dropdown-menu{position:static;float:none}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991px){.navbar-expand-lg .navbar-nav .dropdown-menu{position:static;float:none}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199px){.navbar-expand-xl .navbar-nav .dropdown-menu{position:static;float:none}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand .navbar-nav .dropdown-menu{position:static;float:none}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.open,.navbar-light .navbar-nav .open>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff}.navbar-inverse .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-inverse .navbar-nav .nav-link:focus,.navbar-inverse .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-inverse .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-inverse .navbar-nav .active>.nav-link,.navbar-inverse .navbar-nav .nav-link.active,.navbar-inverse .navbar-nav .nav-link.open,.navbar-inverse .navbar-nav .open>.nav-link{color:#fff}.navbar-inverse .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-inverse .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-inverse .navbar-text{color:rgba(255,255,255,.5)}.card{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:#fff;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card-block{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f7f7f9;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:#f7f7f9;border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-primary{background-color:#0275d8;border-color:#0275d8}.card-primary .card-footer,.card-primary .card-header{background-color:transparent}.card-success{background-color:#5cb85c;border-color:#5cb85c}.card-success .card-footer,.card-success .card-header{background-color:transparent}.card-info{background-color:#5bc0de;border-color:#5bc0de}.card-info .card-footer,.card-info .card-header{background-color:transparent}.card-warning{background-color:#f0ad4e;border-color:#f0ad4e}.card-warning .card-footer,.card-warning .card-header{background-color:transparent}.card-danger{background-color:#d9534f;border-color:#d9534f}.card-danger .card-footer,.card-danger .card-header{background-color:transparent}.card-outline-primary{background-color:transparent;border-color:#0275d8}.card-outline-secondary{background-color:transparent;border-color:#ccc}.card-outline-info{background-color:transparent;border-color:#5bc0de}.card-outline-success{background-color:transparent;border-color:#5cb85c}.card-outline-warning{background-color:transparent;border-color:#f0ad4e}.card-outline-danger{background-color:transparent;border-color:#d9534f}.card-inverse{color:rgba(255,255,255,.65)}.card-inverse .card-footer,.card-inverse .card-header{background-color:transparent;border-color:rgba(255,255,255,.2)}.card-inverse .card-blockquote,.card-inverse .card-footer,.card-inverse .card-header,.card-inverse .card-title{color:#fff}.card-inverse .card-blockquote .blockquote-footer,.card-inverse .card-link,.card-inverse .card-subtitle,.card-inverse .card-text{color:rgba(255,255,255,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}@media (min-width:576px){.card-deck{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1 0 0;-ms-flex:1 0 0px;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-left:15px}}@media (min-width:576px){.card-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group .card{-webkit-box-flex:1;-webkit-flex:1 0 0;-ms-flex:1 0 0px;flex:1 0 0%}.card-group .card+.card{margin-left:0;border-left:0}.card-group .card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group .card:first-child .card-img-top{border-top-right-radius:0}.card-group .card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group .card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group .card:last-child .card-img-top{border-top-left-radius:0}.card-group .card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group .card:not(:first-child):not(:last-child){border-radius:0}.card-group .card:not(:first-child):not(:last-child) .card-img-bottom,.card-group .card:not(:first-child):not(:last-child) .card-img-top{border-radius:0}}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%;margin-bottom:.75rem}}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eceeef;border-radius:.25rem}.breadcrumb::after{display:block;clear:both;content:""}.breadcrumb-item{float:left}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#636c72;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#636c72}.pagination{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.page-item.disabled .page-link{color:#636c72;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#0275d8;background-color:#fff;border:1px solid #ddd}.page-link:focus,.page-link:hover{color:#014c8c;text-decoration:none;background-color:#eceeef;border-color:#ddd}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-default{background-color:#636c72}.badge-default[href]:focus,.badge-default[href]:hover{background-color:#4b5257}.badge-primary{background-color:#0275d8}.badge-primary[href]:focus,.badge-primary[href]:hover{background-color:#025aa5}.badge-success{background-color:#5cb85c}.badge-success[href]:focus,.badge-success[href]:hover{background-color:#449d44}.badge-info{background-color:#5bc0de}.badge-info[href]:focus,.badge-info[href]:hover{background-color:#31b0d5}.badge-warning{background-color:#f0ad4e}.badge-warning[href]:focus,.badge-warning[href]:hover{background-color:#ec971f}.badge-danger{background-color:#d9534f}.badge-danger[href]:focus,.badge-danger[href]:hover{background-color:#c9302c}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-hr{border-top-color:#d0d5d8}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible .close{position:relative;top:-.75rem;right:-1.25rem;padding:.75rem 1.25rem;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d0e9c6}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faf2cc}.alert-warning hr{border-top-color:#f7ecb5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebcccc}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;font-size:.75rem;line-height:1rem;text-align:center;background-color:#eceeef;border-radius:.25rem}.progress-bar{height:1rem;line-height:1rem;color:#fff;background-color:#0275d8}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;-o-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1 1 0%}.list-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#464a4c;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#464a4c;text-decoration:none;background-color:#f7f7f9}.list-group-item-action:active{color:#292b2c;background-color:#eceeef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#636c72;cursor:not-allowed;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active{color:#fff;background-color:#a94442;border-color:#a94442}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}button.close{padding:0;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:15px;border-bottom:1px solid #eceeef}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:15px}.modal-footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;padding:15px;border-top:1px solid #eceeef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:30px auto}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip.bs-tether-element-attached-bottom,.tooltip.tooltip-top{padding:5px 0;margin-top:-3px}.tooltip.bs-tether-element-attached-bottom .tooltip-inner::before,.tooltip.tooltip-top .tooltip-inner::before{bottom:0;left:50%;margin-left:-5px;content:"";border-width:5px 5px 0;border-top-color:#000}.tooltip.bs-tether-element-attached-left,.tooltip.tooltip-right{padding:0 5px;margin-left:3px}.tooltip.bs-tether-element-attached-left .tooltip-inner::before,.tooltip.tooltip-right .tooltip-inner::before{top:50%;left:0;margin-top:-5px;content:"";border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.bs-tether-element-attached-top,.tooltip.tooltip-bottom{padding:5px 0;margin-top:3px}.tooltip.bs-tether-element-attached-top .tooltip-inner::before,.tooltip.tooltip-bottom .tooltip-inner::before{top:0;left:50%;margin-left:-5px;content:"";border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bs-tether-element-attached-right,.tooltip.tooltip-left{padding:0 5px;margin-left:-3px}.tooltip.bs-tether-element-attached-right .tooltip-inner::before,.tooltip.tooltip-left .tooltip-inner::before{top:50%;right:0;margin-top:-5px;content:"";border-width:5px 0 5px 5px;border-left-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.tooltip-inner::before{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;padding:1px;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover.bs-tether-element-attached-bottom,.popover.popover-top{margin-top:-10px}.popover.bs-tether-element-attached-bottom::after,.popover.bs-tether-element-attached-bottom::before,.popover.popover-top::after,.popover.popover-top::before{left:50%;border-bottom-width:0}.popover.bs-tether-element-attached-bottom::before,.popover.popover-top::before{bottom:-11px;margin-left:-11px;border-top-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-bottom::after,.popover.popover-top::after{bottom:-10px;margin-left:-10px;border-top-color:#fff}.popover.bs-tether-element-attached-left,.popover.popover-right{margin-left:10px}.popover.bs-tether-element-attached-left::after,.popover.bs-tether-element-attached-left::before,.popover.popover-right::after,.popover.popover-right::before{top:50%;border-left-width:0}.popover.bs-tether-element-attached-left::before,.popover.popover-right::before{left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-left::after,.popover.popover-right::after{left:-10px;margin-top:-10px;border-right-color:#fff}.popover.bs-tether-element-attached-top,.popover.popover-bottom{margin-top:10px}.popover.bs-tether-element-attached-top::after,.popover.bs-tether-element-attached-top::before,.popover.popover-bottom::after,.popover.popover-bottom::before{left:50%;border-top-width:0}.popover.bs-tether-element-attached-top::before,.popover.popover-bottom::before{top:-11px;margin-left:-11px;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-top::after,.popover.popover-bottom::after{top:-10px;margin-left:-10px;border-bottom-color:#f7f7f7}.popover.bs-tether-element-attached-top .popover-title::before,.popover.popover-bottom .popover-title::before{position:absolute;top:0;left:50%;display:block;width:20px;margin-left:-10px;content:"";border-bottom:1px solid #f7f7f7}.popover.bs-tether-element-attached-right,.popover.popover-left{margin-left:-10px}.popover.bs-tether-element-attached-right::after,.popover.bs-tether-element-attached-right::before,.popover.popover-left::after,.popover.popover-left::before{top:50%;border-right-width:0}.popover.bs-tether-element-attached-right::before,.popover.popover-left::before{right:-11px;margin-top:-11px;border-left-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-right::after,.popover.popover-left::after{right:-10px;margin-top:-10px;border-left-color:#fff}.popover-title{padding:8px 14px;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-title:empty{display:none}.popover-content{padding:9px 14px;color:#292b2c}.popover::after,.popover::before{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover::before{content:"";border-width:11px}.popover::after{content:"";border-width:10px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;width:100%}@media (-webkit-transform-3d){.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}}@supports ((-webkit-transform:translate3d(0,0,0)) or (transform:translate3d(0,0,0))){.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out,-o-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}@media (-webkit-transform-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@supports ((-webkit-transform:translate3d(0,0,0)) or (transform:translate3d(0,0,0))){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;max-width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-faded{background-color:#f7f7f7}.bg-primary{background-color:#0275d8!important}a.bg-primary:focus,a.bg-primary:hover{background-color:#025aa5!important}.bg-success{background-color:#5cb85c!important}a.bg-success:focus,a.bg-success:hover{background-color:#449d44!important}.bg-info{background-color:#5bc0de!important}a.bg-info:focus,a.bg-info:hover{background-color:#31b0d5!important}.bg-warning{background-color:#f0ad4e!important}a.bg-warning:focus,a.bg-warning:hover{background-color:#ec971f!important}.bg-danger{background-color:#d9534f!important}a.bg-danger:focus,a.bg-danger:hover{background-color:#c9302c!important}.bg-inverse{background-color:#292b2c!important}a.bg-inverse:focus,a.bg-inverse:hover{background-color:#101112!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.rounded{border-radius:.25rem}.rounded-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-right{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-left{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-circle{border-radius:50%}.rounded-0{border-radius:0}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.d-print-block{display:none!important}@media print{.d-print-block{display:block!important}}.d-print-inline{display:none!important}@media print{.d-print-inline{display:inline!important}}.d-print-inline-block{display:none!important}@media print{.d-print-inline-block{display:inline-block!important}}@media print{.d-print-none{display:none!important}}.order-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.order-sm-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-sm-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-sm-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-sm-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.order-md-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-md-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-md-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-md-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.order-lg-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-lg-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-lg-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-lg-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.order-xl-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-xl-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-xl-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-xl-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-right:0!important;margin-left:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1{margin-left:.25rem!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-2{margin:.5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-3{margin:1rem!important}.mt-3{margin-top:1rem!important}.mr-3{margin-right:1rem!important}.mb-3{margin-bottom:1rem!important}.ml-3{margin-left:1rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-4{margin:1.5rem!important}.mt-4{margin-top:1.5rem!important}.mr-4{margin-right:1.5rem!important}.mb-4{margin-bottom:1.5rem!important}.ml-4{margin-left:1.5rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-5{margin:3rem!important}.mt-5{margin-top:3rem!important}.mr-5{margin-right:3rem!important}.mb-5{margin-bottom:3rem!important}.ml-5{margin-left:3rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-right:0!important;padding-left:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1{padding-left:.25rem!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-2{padding:.5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-3{padding:1rem!important}.pt-3{padding-top:1rem!important}.pr-3{padding-right:1rem!important}.pb-3{padding-bottom:1rem!important}.pl-3{padding-left:1rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-4{padding:1.5rem!important}.pt-4{padding-top:1.5rem!important}.pr-4{padding-right:1.5rem!important}.pb-4{padding-bottom:1.5rem!important}.pl-4{padding-left:1.5rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-5{padding:3rem!important}.pt-5{padding-top:3rem!important}.pr-5{padding-right:3rem!important}.pb-5{padding-bottom:3rem!important}.pl-5{padding-left:3rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-auto{margin:auto!important}.mt-auto{margin-top:auto!important}.mr-auto{margin-right:auto!important}.mb-auto{margin-bottom:auto!important}.ml-auto{margin-left:auto!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0{margin-top:0!important}.mr-sm-0{margin-right:0!important}.mb-sm-0{margin-bottom:0!important}.ml-sm-0{margin-left:0!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1{margin-top:.25rem!important}.mr-sm-1{margin-right:.25rem!important}.mb-sm-1{margin-bottom:.25rem!important}.ml-sm-1{margin-left:.25rem!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2{margin-top:.5rem!important}.mr-sm-2{margin-right:.5rem!important}.mb-sm-2{margin-bottom:.5rem!important}.ml-sm-2{margin-left:.5rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3{margin-top:1rem!important}.mr-sm-3{margin-right:1rem!important}.mb-sm-3{margin-bottom:1rem!important}.ml-sm-3{margin-left:1rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4{margin-top:1.5rem!important}.mr-sm-4{margin-right:1.5rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.ml-sm-4{margin-left:1.5rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5{margin-top:3rem!important}.mr-sm-5{margin-right:3rem!important}.mb-sm-5{margin-bottom:3rem!important}.ml-sm-5{margin-left:3rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0{padding-top:0!important}.pr-sm-0{padding-right:0!important}.pb-sm-0{padding-bottom:0!important}.pl-sm-0{padding-left:0!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1{padding-top:.25rem!important}.pr-sm-1{padding-right:.25rem!important}.pb-sm-1{padding-bottom:.25rem!important}.pl-sm-1{padding-left:.25rem!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2{padding-top:.5rem!important}.pr-sm-2{padding-right:.5rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pl-sm-2{padding-left:.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3{padding-top:1rem!important}.pr-sm-3{padding-right:1rem!important}.pb-sm-3{padding-bottom:1rem!important}.pl-sm-3{padding-left:1rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4{padding-top:1.5rem!important}.pr-sm-4{padding-right:1.5rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pl-sm-4{padding-left:1.5rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5{padding-top:3rem!important}.pr-sm-5{padding-right:3rem!important}.pb-sm-5{padding-bottom:3rem!important}.pl-sm-5{padding-left:3rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-auto{margin-left:auto!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0{margin-top:0!important}.mr-md-0{margin-right:0!important}.mb-md-0{margin-bottom:0!important}.ml-md-0{margin-left:0!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.m-md-1{margin:.25rem!important}.mt-md-1{margin-top:.25rem!important}.mr-md-1{margin-right:.25rem!important}.mb-md-1{margin-bottom:.25rem!important}.ml-md-1{margin-left:.25rem!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2{margin-top:.5rem!important}.mr-md-2{margin-right:.5rem!important}.mb-md-2{margin-bottom:.5rem!important}.ml-md-2{margin-left:.5rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3{margin-top:1rem!important}.mr-md-3{margin-right:1rem!important}.mb-md-3{margin-bottom:1rem!important}.ml-md-3{margin-left:1rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4{margin-top:1.5rem!important}.mr-md-4{margin-right:1.5rem!important}.mb-md-4{margin-bottom:1.5rem!important}.ml-md-4{margin-left:1.5rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5{margin-top:3rem!important}.mr-md-5{margin-right:3rem!important}.mb-md-5{margin-bottom:3rem!important}.ml-md-5{margin-left:3rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-md-0{padding:0!important}.pt-md-0{padding-top:0!important}.pr-md-0{padding-right:0!important}.pb-md-0{padding-bottom:0!important}.pl-md-0{padding-left:0!important}.px-md-0{padding-right:0!important;padding-left:0!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.p-md-1{padding:.25rem!important}.pt-md-1{padding-top:.25rem!important}.pr-md-1{padding-right:.25rem!important}.pb-md-1{padding-bottom:.25rem!important}.pl-md-1{padding-left:.25rem!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2{padding-top:.5rem!important}.pr-md-2{padding-right:.5rem!important}.pb-md-2{padding-bottom:.5rem!important}.pl-md-2{padding-left:.5rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3{padding-top:1rem!important}.pr-md-3{padding-right:1rem!important}.pb-md-3{padding-bottom:1rem!important}.pl-md-3{padding-left:1rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4{padding-top:1.5rem!important}.pr-md-4{padding-right:1.5rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pl-md-4{padding-left:1.5rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5{padding-top:3rem!important}.pr-md-5{padding-right:3rem!important}.pb-md-5{padding-bottom:3rem!important}.pl-md-5{padding-left:3rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto{margin-top:auto!important}.mr-md-auto{margin-right:auto!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-auto{margin-left:auto!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0{margin-top:0!important}.mr-lg-0{margin-right:0!important}.mb-lg-0{margin-bottom:0!important}.ml-lg-0{margin-left:0!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1{margin-top:.25rem!important}.mr-lg-1{margin-right:.25rem!important}.mb-lg-1{margin-bottom:.25rem!important}.ml-lg-1{margin-left:.25rem!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2{margin-top:.5rem!important}.mr-lg-2{margin-right:.5rem!important}.mb-lg-2{margin-bottom:.5rem!important}.ml-lg-2{margin-left:.5rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3{margin-top:1rem!important}.mr-lg-3{margin-right:1rem!important}.mb-lg-3{margin-bottom:1rem!important}.ml-lg-3{margin-left:1rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4{margin-top:1.5rem!important}.mr-lg-4{margin-right:1.5rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.ml-lg-4{margin-left:1.5rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5{margin-top:3rem!important}.mr-lg-5{margin-right:3rem!important}.mb-lg-5{margin-bottom:3rem!important}.ml-lg-5{margin-left:3rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0{padding-top:0!important}.pr-lg-0{padding-right:0!important}.pb-lg-0{padding-bottom:0!important}.pl-lg-0{padding-left:0!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1{padding-top:.25rem!important}.pr-lg-1{padding-right:.25rem!important}.pb-lg-1{padding-bottom:.25rem!important}.pl-lg-1{padding-left:.25rem!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2{padding-top:.5rem!important}.pr-lg-2{padding-right:.5rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pl-lg-2{padding-left:.5rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3{padding-top:1rem!important}.pr-lg-3{padding-right:1rem!important}.pb-lg-3{padding-bottom:1rem!important}.pl-lg-3{padding-left:1rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4{padding-top:1.5rem!important}.pr-lg-4{padding-right:1.5rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pl-lg-4{padding-left:1.5rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5{padding-top:3rem!important}.pr-lg-5{padding-right:3rem!important}.pb-lg-5{padding-bottom:3rem!important}.pl-lg-5{padding-left:3rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-auto{margin-left:auto!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0{margin-top:0!important}.mr-xl-0{margin-right:0!important}.mb-xl-0{margin-bottom:0!important}.ml-xl-0{margin-left:0!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1{margin-top:.25rem!important}.mr-xl-1{margin-right:.25rem!important}.mb-xl-1{margin-bottom:.25rem!important}.ml-xl-1{margin-left:.25rem!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2{margin-top:.5rem!important}.mr-xl-2{margin-right:.5rem!important}.mb-xl-2{margin-bottom:.5rem!important}.ml-xl-2{margin-left:.5rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3{margin-top:1rem!important}.mr-xl-3{margin-right:1rem!important}.mb-xl-3{margin-bottom:1rem!important}.ml-xl-3{margin-left:1rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4{margin-top:1.5rem!important}.mr-xl-4{margin-right:1.5rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.ml-xl-4{margin-left:1.5rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5{margin-top:3rem!important}.mr-xl-5{margin-right:3rem!important}.mb-xl-5{margin-bottom:3rem!important}.ml-xl-5{margin-left:3rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0{padding-top:0!important}.pr-xl-0{padding-right:0!important}.pb-xl-0{padding-bottom:0!important}.pl-xl-0{padding-left:0!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1{padding-top:.25rem!important}.pr-xl-1{padding-right:.25rem!important}.pb-xl-1{padding-bottom:.25rem!important}.pl-xl-1{padding-left:.25rem!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2{padding-top:.5rem!important}.pr-xl-2{padding-right:.5rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pl-xl-2{padding-left:.5rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3{padding-top:1rem!important}.pr-xl-3{padding-right:1rem!important}.pb-xl-3{padding-bottom:1rem!important}.pl-xl-3{padding-left:1rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4{padding-top:1.5rem!important}.pr-xl-4{padding-right:1.5rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pl-xl-4{padding-left:1.5rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5{padding-top:3rem!important}.pr-xl-5{padding-right:3rem!important}.pb-xl-5{padding-bottom:3rem!important}.pl-xl-5{padding-left:3rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-auto{margin-left:auto!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-normal{font-weight:400}.font-weight-bold{font-weight:700}.font-italic{font-style:italic}.text-white{color:#fff!important}.text-muted{color:#636c72!important}a.text-muted:focus,a.text-muted:hover{color:#4b5257!important}.text-primary{color:#0275d8!important}a.text-primary:focus,a.text-primary:hover{color:#025aa5!important}.text-success{color:#5cb85c!important}a.text-success:focus,a.text-success:hover{color:#449d44!important}.text-info{color:#5bc0de!important}a.text-info:focus,a.text-info:hover{color:#31b0d5!important}.text-warning{color:#f0ad4e!important}a.text-warning:focus,a.text-warning:hover{color:#ec971f!important}.text-danger{color:#d9534f!important}a.text-danger:focus,a.text-danger:hover{color:#c9302c!important}.text-gray-dark{color:#292b2c!important}a.text-gray-dark:focus,a.text-gray-dark:hover{color:#101112!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file + */@media print{*,::after,::before,blockquote::first-letter,blockquote::first-line,div::first-letter,div::first-line,li::first-letter,li::first-line,p::first-letter,p::first-line{text-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#292b2c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0275d8;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#014c8c;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#636c72;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.1}.display-2{font-size:5.5rem;font-weight:300;line-height:1.1}.display-3{font-size:4.5rem;font-weight:300;line-height:1.1}.display-4{font-size:3.5rem;font-weight:300;line-height:1.1}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:5px}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;margin-bottom:1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote-footer{display:block;font-size:80%;color:#636c72}.blockquote-footer::before{content:"\2014 \00A0"}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse .blockquote-footer::before{content:""}.blockquote-reverse .blockquote-footer::after{content:"\00A0 \2014"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#636c72}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{padding:.2rem .4rem;font-size:90%;color:#bd4147;background-color:#f7f7f9;border-radius:.25rem}a>code{padding:0;color:inherit;background-color:inherit}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#292b2c;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;margin-bottom:1rem;font-size:90%;color:#292b2c}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container{padding-right:15px;padding-left:15px}}@media (min-width:576px){.container{width:540px;max-width:100%}}@media (min-width:768px){.container{width:720px;max-width:100%}}@media (min-width:992px){.container{width:960px;max-width:100%}}@media (min-width:1200px){.container{width:1140px;max-width:100%}}.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:15px;padding-left:15px}@media (min-width:576px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:768px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:992px){.container-fluid{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.container-fluid{padding-right:15px;padding-left:15px}}.row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}@media (min-width:576px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:768px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:992px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:1200px){.row{margin-right:-15px;margin-left:-15px}}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:768px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:992px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{padding-right:15px;padding-left:15px}}.col{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-1{width:8.333333%}.col-2{width:16.666667%}.col-3{width:25%}.col-4{width:33.333333%}.col-5{width:41.666667%}.col-6{width:50%}.col-7{width:58.333333%}.col-8{width:66.666667%}.col-9{width:75%}.col-10{width:83.333333%}.col-11{width:91.666667%}.col-12{width:100%}.pull-0{right:auto}.pull-1{right:8.333333%}.pull-2{right:16.666667%}.pull-3{right:25%}.pull-4{right:33.333333%}.pull-5{right:41.666667%}.pull-6{right:50%}.pull-7{right:58.333333%}.pull-8{right:66.666667%}.pull-9{right:75%}.pull-10{right:83.333333%}.pull-11{right:91.666667%}.pull-12{right:100%}.push-0{left:auto}.push-1{left:8.333333%}.push-2{left:16.666667%}.push-3{left:25%}.push-4{left:33.333333%}.push-5{left:41.666667%}.push-6{left:50%}.push-7{left:58.333333%}.push-8{left:66.666667%}.push-9{left:75%}.push-10{left:83.333333%}.push-11{left:91.666667%}.push-12{left:100%}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-1{width:8.333333%}.col-sm-2{width:16.666667%}.col-sm-3{width:25%}.col-sm-4{width:33.333333%}.col-sm-5{width:41.666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333%}.col-sm-8{width:66.666667%}.col-sm-9{width:75%}.col-sm-10{width:83.333333%}.col-sm-11{width:91.666667%}.col-sm-12{width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.333333%}.pull-sm-2{right:16.666667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.333333%}.pull-sm-5{right:41.666667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.333333%}.pull-sm-8{right:66.666667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.333333%}.pull-sm-11{right:91.666667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.333333%}.push-sm-2{left:16.666667%}.push-sm-3{left:25%}.push-sm-4{left:33.333333%}.push-sm-5{left:41.666667%}.push-sm-6{left:50%}.push-sm-7{left:58.333333%}.push-sm-8{left:66.666667%}.push-sm-9{left:75%}.push-sm-10{left:83.333333%}.push-sm-11{left:91.666667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-1{width:8.333333%}.col-md-2{width:16.666667%}.col-md-3{width:25%}.col-md-4{width:33.333333%}.col-md-5{width:41.666667%}.col-md-6{width:50%}.col-md-7{width:58.333333%}.col-md-8{width:66.666667%}.col-md-9{width:75%}.col-md-10{width:83.333333%}.col-md-11{width:91.666667%}.col-md-12{width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.333333%}.pull-md-2{right:16.666667%}.pull-md-3{right:25%}.pull-md-4{right:33.333333%}.pull-md-5{right:41.666667%}.pull-md-6{right:50%}.pull-md-7{right:58.333333%}.pull-md-8{right:66.666667%}.pull-md-9{right:75%}.pull-md-10{right:83.333333%}.pull-md-11{right:91.666667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.333333%}.push-md-2{left:16.666667%}.push-md-3{left:25%}.push-md-4{left:33.333333%}.push-md-5{left:41.666667%}.push-md-6{left:50%}.push-md-7{left:58.333333%}.push-md-8{left:66.666667%}.push-md-9{left:75%}.push-md-10{left:83.333333%}.push-md-11{left:91.666667%}.push-md-12{left:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-1{width:8.333333%}.col-lg-2{width:16.666667%}.col-lg-3{width:25%}.col-lg-4{width:33.333333%}.col-lg-5{width:41.666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333%}.col-lg-8{width:66.666667%}.col-lg-9{width:75%}.col-lg-10{width:83.333333%}.col-lg-11{width:91.666667%}.col-lg-12{width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.333333%}.pull-lg-2{right:16.666667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.333333%}.pull-lg-5{right:41.666667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.333333%}.pull-lg-8{right:66.666667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.333333%}.pull-lg-11{right:91.666667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.333333%}.push-lg-2{left:16.666667%}.push-lg-3{left:25%}.push-lg-4{left:33.333333%}.push-lg-5{left:41.666667%}.push-lg-6{left:50%}.push-lg-7{left:58.333333%}.push-lg-8{left:66.666667%}.push-lg-9{left:75%}.push-lg-10{left:83.333333%}.push-lg-11{left:91.666667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-1{width:8.333333%}.col-xl-2{width:16.666667%}.col-xl-3{width:25%}.col-xl-4{width:33.333333%}.col-xl-5{width:41.666667%}.col-xl-6{width:50%}.col-xl-7{width:58.333333%}.col-xl-8{width:66.666667%}.col-xl-9{width:75%}.col-xl-10{width:83.333333%}.col-xl-11{width:91.666667%}.col-xl-12{width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.333333%}.pull-xl-2{right:16.666667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.333333%}.pull-xl-5{right:41.666667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.333333%}.pull-xl-8{right:66.666667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.333333%}.pull-xl-11{right:91.666667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.333333%}.push-xl-2{left:16.666667%}.push-xl-3{left:25%}.push-xl-4{left:33.333333%}.push-xl-5{left:41.666667%}.push-xl-6{left:50%}.push-xl-7{left:58.333333%}.push-xl-8{left:66.666667%}.push-xl-9{left:75%}.push-xl-10{left:83.333333%}.push-xl-11{left:91.666667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #eceeef}.table-bordered td,.table-bordered th{border:1px solid #eceeef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table-success,.table-success>td,.table-success>th{background-color:#dff0d8}.table-hover .table-success:hover{background-color:#d0e9c6}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>td,.table-info>th{background-color:#d9edf7}.table-hover .table-info:hover{background-color:#c4e3f3}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fcf8e3}.table-hover .table-warning:hover{background-color:#faf2cc}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>td,.table-danger>th{background-color:#f2dede}.table-hover .table-danger:hover{background-color:#ebcccc}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.thead-inverse th{color:#fff;background-color:#292b2c}.thead-default th{color:#464a4c;background-color:#eceeef}.table-inverse{color:#fff;background-color:#292b2c}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#3b3e40}.table-inverse.table-bordered{border:0}.table-inverse.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-inverse.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:991px){.table-responsive{display:block;width:100%;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive.table-bordered{border:0}}.form-control{display:block;width:100%;padding:.5rem 1rem;font-size:1rem;line-height:1.25;color:#464a4c;background-color:#fff;background-image:none;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#464a4c;background-color:#fff;border-color:#5cb3fd;outline:0}.form-control::-webkit-input-placeholder{color:#636c72;opacity:1}.form-control::-moz-placeholder{color:#636c72;opacity:1}.form-control:-ms-input-placeholder{color:#636c72;opacity:1}.form-control::placeholder{color:#636c72;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eceeef;opacity:1}.form-control:disabled{cursor:not-allowed}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#464a4c;background-color:#fff}.form-control-file,.form-control-range{display:block}.col-form-label{padding-top:calc(.5rem - 1px * 2);padding-bottom:calc(.5rem - 1px * 2);margin-bottom:0}.col-form-label-lg{padding-top:calc(.5rem - 1px * 2);padding-bottom:calc(.5rem - 1px * 2);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem - 1px * 2);padding-bottom:calc(.25rem - 1px * 2);font-size:.875rem}.col-form-legend{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;font-size:1rem}.form-control-static{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0;line-height:1.25;border:solid transparent;border-width:1px 0}.form-control-static.form-control-lg,.form-control-static.form-control-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>select.input-group-addon:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>select.input-group-addon:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-check{position:relative;display:block;margin-bottom:.5rem}.form-check.disabled .form-check-label{color:#636c72;cursor:not-allowed}.form-check-label{padding-left:1.25rem;margin-bottom:0}.form-check-input{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.form-check-input:only-child{position:static}.form-check-inline{display:inline-block}.form-check-inline .form-check-label{vertical-align:middle}.form-check-inline+.form-check-inline{margin-left:.75rem}.form-control-feedback{margin-top:.25rem}.form-control-danger,.form-control-success,.form-control-warning{padding-right:3rem;background-repeat:no-repeat;background-position:center right .5625rem;-webkit-background-size:1.125rem 1.125rem;background-size:1.125rem 1.125rem}.has-success .col-form-label,.has-success .custom-control,.has-success .form-check-label,.has-success .form-control-feedback,.has-success .form-control-label{color:#5cb85c}.has-success .custom-file-control,.has-success .custom-select,.has-success .form-control{border-color:#5cb85c}.has-success .input-group-addon{color:#5cb85c;background-color:#eaf6ea;border-color:#5cb85c}.has-success .form-control-success{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235cb85c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E")}.has-warning .col-form-label,.has-warning .custom-control,.has-warning .form-check-label,.has-warning .form-control-feedback,.has-warning .form-control-label{color:#f0ad4e}.has-warning .custom-file-control,.has-warning .custom-select,.has-warning .form-control{border-color:#f0ad4e}.has-warning .input-group-addon{color:#f0ad4e;background-color:#fff;border-color:#f0ad4e}.has-warning .form-control-warning{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23f0ad4e' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E")}.has-danger .col-form-label,.has-danger .custom-control,.has-danger .form-check-label,.has-danger .form-control-feedback,.has-danger .form-control-label{color:#d9534f}.has-danger .custom-file-control,.has-danger .custom-select,.has-danger .form-control{border-color:#d9534f}.has-danger .input-group-addon{color:#d9534f;background-color:#fdf7f7;border-color:#d9534f}.has-danger .form-control-danger{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23d9534f' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E")}.form-inline{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-control-label{margin-bottom:0;vertical-align:middle}.form-inline .form-check{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:auto;margin-top:0;margin-bottom:0}.form-inline .form-check-label{padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0}.form-inline .custom-control-indicator{position:static;display:inline-block;margin-right:.25rem;vertical-align:text-bottom}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;line-height:1.25;border-radius:.25rem;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.25);box-shadow:0 0 0 2px rgba(2,117,216,.25)}.btn.disabled,.btn:disabled{cursor:not-allowed;opacity:.65}.btn.active,.btn:active{background-image:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-primary:hover{color:#fff;background-color:#025aa5;border-color:#01549b}.btn-primary.focus,.btn-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.btn-primary.disabled,.btn-primary:disabled{background-color:#0275d8;border-color:#0275d8}.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#025aa5;background-image:none;border-color:#01549b}.btn-secondary{color:#292b2c;background-color:#fff;border-color:#ccc}.btn-secondary:hover{color:#292b2c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary.focus,.btn-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.btn-secondary.disabled,.btn-secondary:disabled{background-color:#fff;border-color:#ccc}.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#292b2c;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.btn-info.focus,.btn-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.btn-info.disabled,.btn-info:disabled{background-color:#5bc0de;border-color:#5bc0de}.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;background-image:none;border-color:#2aabd2}.btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.btn-success.focus,.btn-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.btn-success.disabled,.btn-success:disabled{background-color:#5cb85c;border-color:#5cb85c}.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;background-image:none;border-color:#419641}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.btn-warning.focus,.btn-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.btn-warning.disabled,.btn-warning:disabled{background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;background-image:none;border-color:#eb9316}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#c12e2a}.btn-danger.focus,.btn-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.btn-danger.disabled,.btn-danger:disabled{background-color:#d9534f;border-color:#d9534f}.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;background-image:none;border-color:#c12e2a}.btn-outline-primary{color:#0275d8;background-color:transparent;background-image:none;border-color:#0275d8}.btn-outline-primary:hover{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-outline-primary.focus,.btn-outline-primary:focus{-webkit-box-shadow:0 0 0 2px rgba(2,117,216,.5);box-shadow:0 0 0 2px rgba(2,117,216,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0275d8;background-color:transparent}.btn-outline-primary.active,.btn-outline-primary:active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#0275d8;border-color:#0275d8}.btn-outline-secondary{color:#ccc;background-color:transparent;background-image:none;border-color:#ccc}.btn-outline-secondary:hover{color:#292b2c;background-color:#ccc;border-color:#ccc}.btn-outline-secondary.focus,.btn-outline-secondary:focus{-webkit-box-shadow:0 0 0 2px rgba(204,204,204,.5);box-shadow:0 0 0 2px rgba(204,204,204,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#ccc;background-color:transparent}.btn-outline-secondary.active,.btn-outline-secondary:active,.show>.btn-outline-secondary.dropdown-toggle{color:#292b2c;background-color:#ccc;border-color:#ccc}.btn-outline-info{color:#5bc0de;background-color:transparent;background-image:none;border-color:#5bc0de}.btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-info.focus,.btn-outline-info:focus{-webkit-box-shadow:0 0 0 2px rgba(91,192,222,.5);box-shadow:0 0 0 2px rgba(91,192,222,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#5bc0de;background-color:transparent}.btn-outline-info.active,.btn-outline-info:active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-success{color:#5cb85c;background-color:transparent;background-image:none;border-color:#5cb85c}.btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-success.focus,.btn-outline-success:focus{-webkit-box-shadow:0 0 0 2px rgba(92,184,92,.5);box-shadow:0 0 0 2px rgba(92,184,92,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#5cb85c;background-color:transparent}.btn-outline-success.active,.btn-outline-success:active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-warning{color:#f0ad4e;background-color:transparent;background-image:none;border-color:#f0ad4e}.btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning.focus,.btn-outline-warning:focus{-webkit-box-shadow:0 0 0 2px rgba(240,173,78,.5);box-shadow:0 0 0 2px rgba(240,173,78,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#f0ad4e;background-color:transparent}.btn-outline-warning.active,.btn-outline-warning:active,.show>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-danger{color:#d9534f;background-color:transparent;background-image:none;border-color:#d9534f}.btn-outline-danger:hover{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-outline-danger.focus,.btn-outline-danger:focus{-webkit-box-shadow:0 0 0 2px rgba(217,83,79,.5);box-shadow:0 0 0 2px rgba(217,83,79,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#d9534f;background-color:transparent}.btn-outline-danger.active,.btn-outline-danger:active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#d9534f;border-color:#d9534f}.btn-link{font-weight:400;color:#0275d8;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus{border-color:transparent}.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#014c8c;text-decoration:underline;background-color:transparent}.btn-link:disabled{color:#636c72}.btn-link:disabled:focus,.btn-link:disabled:hover{text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.3em;vertical-align:middle;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropup .dropdown-toggle::after{border-top:0;border-bottom:.3em solid}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#292b2c;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #eceeef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#292b2c;text-align:inherit;white-space:nowrap;background:0 0;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1d1e1f;text-decoration:none;background-color:#f7f7f9}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0275d8}.dropdown-item.disabled,.dropdown-item:disabled{color:#636c72;cursor:not-allowed;background-color:transparent}.show>.dropdown-menu{display:block}.show>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#636c72;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.dropup .dropdown-menu{top:auto;bottom:100%;margin-bottom:.125rem}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;margin-bottom:0}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn+.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%}.input-group .form-control{position:relative;z-index:2;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group .form-control:active,.input-group .form-control:focus,.input-group .form-control:hover{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.25;color:#464a4c;text-align:center;background-color:#eceeef;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:not(:last-child),.input-group-addon:not(:last-child),.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.btn,.input-group-btn:not(:first-child)>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group>.btn,.input-group-btn:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:not(:last-child){border-right:0}.input-group .form-control:not(:first-child),.input-group-addon:not(:first-child),.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group>.btn,.input-group-btn:not(:first-child)>.dropdown-toggle,.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.btn,.input-group-btn:not(:last-child)>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.form-control+.input-group-addon:not(:first-child){border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:3}.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group{margin-right:-1px}.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group{z-index:2;margin-left:-1px}.input-group-btn:not(:first-child)>.btn-group:active,.input-group-btn:not(:first-child)>.btn-group:focus,.input-group-btn:not(:first-child)>.btn-group:hover,.input-group-btn:not(:first-child)>.btn:active,.input-group-btn:not(:first-child)>.btn:focus,.input-group-btn:not(:first-child)>.btn:hover{z-index:3}.custom-control{position:relative;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;min-height:1.5rem;padding-left:1.5rem;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-indicator{color:#fff;background-color:#0275d8}.custom-control-input:focus~.custom-control-indicator{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #0275d8;box-shadow:0 0 0 1px #fff,0 0 0 3px #0275d8}.custom-control-input:active~.custom-control-indicator{color:#fff;background-color:#8fcafe}.custom-control-input:disabled~.custom-control-indicator{cursor:not-allowed;background-color:#eceeef}.custom-control-input:disabled~.custom-control-description{color:#636c72;cursor:not-allowed}.custom-control-indicator{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#ddd;background-repeat:no-repeat;background-position:center center;-webkit-background-size:50% 50%;background-size:50% 50%}.custom-checkbox .custom-control-indicator{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator{background-color:#0275d8;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-radio .custom-control-indicator{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-controls-stacked{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.custom-controls-stacked .custom-control{margin-bottom:.25rem}.custom-controls-stacked .custom-control+.custom-control{margin-left:0}.custom-select{display:inline-block;max-width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.25;color:#464a4c;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;-webkit-background-size:8px 10px;background-size:8px 10px;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#5cb3fd;outline:0}.custom-select:focus::-ms-value{color:#464a4c;background-color:#fff}.custom-select:disabled{color:#636c72;cursor:not-allowed;background-color:#eceeef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-file{position:relative;display:inline-block;max-width:100%;height:2.5rem;margin-bottom:0}.custom-file-input{min-width:14rem;max-width:100%;height:2.5rem;margin:0;opacity:0}.custom-file-control{position:absolute;top:0;right:0;left:0;z-index:5;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#464a4c;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.custom-file-control:lang(en):empty::after{content:"Choose file..."}.custom-file-control::before{position:absolute;top:-1px;right:-1px;bottom:-1px;z-index:6;display:block;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#464a4c;background-color:#eceeef;border:1px solid rgba(0,0,0,.15);border-radius:0 .25rem .25rem 0}.custom-file-control:lang(en)::before{content:"Browse"}.nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#636c72;cursor:not-allowed}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .nav-link.disabled{color:#636c72;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#464a4c;background-color:#fff;border-color:#ddd #ddd #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.show .nav-pills .nav-link{color:#fff;background-color:#0275d8}.nav-fill .nav-item{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}@media (max-width:575px){.navbar>.container,.navbar>.container-fluid{width:100%;margin-right:0;margin-left:0}}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background:0 0;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}@media (max-width:575px){.navbar-expand-sm .navbar-nav .dropdown-menu{position:static;float:none}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767px){.navbar-expand-md .navbar-nav .dropdown-menu{position:static;float:none}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991px){.navbar-expand-lg .navbar-nav .dropdown-menu{position:static;float:none}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199px){.navbar-expand-xl .navbar-nav .dropdown-menu{position:static;float:none}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand .navbar-nav .dropdown-menu{position:static;float:none}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-inverse .navbar-brand{color:#fff}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff}.navbar-inverse .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-inverse .navbar-nav .nav-link:focus,.navbar-inverse .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-inverse .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-inverse .navbar-nav .active>.nav-link,.navbar-inverse .navbar-nav .nav-link.active,.navbar-inverse .navbar-nav .nav-link.show,.navbar-inverse .navbar-nav .show>.nav-link{color:#fff}.navbar-inverse .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-inverse .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-inverse .navbar-text{color:rgba(255,255,255,.5)}.card{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:#fff;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card-block{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f7f7f9;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:#f7f7f9;border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-primary{background-color:#0275d8;border-color:#0275d8}.card-primary .card-footer,.card-primary .card-header{background-color:transparent}.card-success{background-color:#5cb85c;border-color:#5cb85c}.card-success .card-footer,.card-success .card-header{background-color:transparent}.card-info{background-color:#5bc0de;border-color:#5bc0de}.card-info .card-footer,.card-info .card-header{background-color:transparent}.card-warning{background-color:#f0ad4e;border-color:#f0ad4e}.card-warning .card-footer,.card-warning .card-header{background-color:transparent}.card-danger{background-color:#d9534f;border-color:#d9534f}.card-danger .card-footer,.card-danger .card-header{background-color:transparent}.card-outline-primary{background-color:transparent;border-color:#0275d8}.card-outline-primary .card-footer,.card-outline-primary .card-header{background-color:transparent;border-color:#0275d8}.card-outline-secondary{background-color:transparent;border-color:#ccc}.card-outline-secondary .card-footer,.card-outline-secondary .card-header{background-color:transparent;border-color:#ccc}.card-outline-info{background-color:transparent;border-color:#5bc0de}.card-outline-info .card-footer,.card-outline-info .card-header{background-color:transparent;border-color:#5bc0de}.card-outline-success{background-color:transparent;border-color:#5cb85c}.card-outline-success .card-footer,.card-outline-success .card-header{background-color:transparent;border-color:#5cb85c}.card-outline-warning{background-color:transparent;border-color:#f0ad4e}.card-outline-warning .card-footer,.card-outline-warning .card-header{background-color:transparent;border-color:#f0ad4e}.card-outline-danger{background-color:transparent;border-color:#d9534f}.card-outline-danger .card-footer,.card-outline-danger .card-header{background-color:transparent;border-color:#d9534f}.card-inverse{color:rgba(255,255,255,.65)}.card-inverse .card-footer,.card-inverse .card-header{background-color:transparent;border-color:rgba(255,255,255,.2)}.card-inverse .card-blockquote,.card-inverse .card-footer,.card-inverse .card-header,.card-inverse .card-title{color:#fff}.card-inverse .card-blockquote .blockquote-footer,.card-inverse .card-link,.card-inverse .card-subtitle,.card-inverse .card-text{color:rgba(255,255,255,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}@media (min-width:576px){.card-deck{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1 0 0;-ms-flex:1 0 0px;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-left:15px}}@media (min-width:576px){.card-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group .card{-webkit-box-flex:1;-webkit-flex:1 0 0;-ms-flex:1 0 0px;flex:1 0 0%}.card-group .card+.card{margin-left:0;border-left:0}.card-group .card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group .card:first-child .card-img-top{border-top-right-radius:0}.card-group .card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group .card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group .card:last-child .card-img-top{border-top-left-radius:0}.card-group .card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group .card:not(:first-child):not(:last-child){border-radius:0}.card-group .card:not(:first-child):not(:last-child) .card-img-bottom,.card-group .card:not(:first-child):not(:last-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eceeef;border-radius:.25rem}.breadcrumb::after{display:block;clear:both;content:""}.breadcrumb-item{float:left}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#636c72;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#636c72}.pagination{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.page-item.disabled .page-link{color:#636c72;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#0275d8;background-color:#fff;border:1px solid #ddd}.page-link:focus,.page-link:hover{color:#014c8c;text-decoration:none;background-color:#eceeef;border-color:#ddd}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-default{background-color:#636c72}.badge-default[href]:focus,.badge-default[href]:hover{background-color:#4b5257}.badge-primary{background-color:#0275d8}.badge-primary[href]:focus,.badge-primary[href]:hover{background-color:#025aa5}.badge-success{background-color:#5cb85c}.badge-success[href]:focus,.badge-success[href]:hover{background-color:#449d44}.badge-info{background-color:#5bc0de}.badge-info[href]:focus,.badge-info[href]:hover{background-color:#31b0d5}.badge-warning{background-color:#f0ad4e}.badge-warning[href]:focus,.badge-warning[href]:hover{background-color:#ec971f}.badge-danger{background-color:#d9534f}.badge-danger[href]:focus,.badge-danger[href]:hover{background-color:#c9302c}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible .close{position:relative;top:-.75rem;right:-1.25rem;padding:.75rem 1.25rem;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d0e9c6}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bcdff1}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faf2cc}.alert-warning hr{border-top-color:#f7ecb5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebcccc}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;font-size:.75rem;line-height:1rem;text-align:center;background-color:#eceeef;border-radius:.25rem}.progress-bar{height:1rem;line-height:1rem;color:#fff;background-color:#0275d8;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:1rem 1rem;background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;-o-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1 1 0%}.list-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#464a4c;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#464a4c;text-decoration:none;background-color:#f7f7f9}.list-group-item-action:active{color:#292b2c;background-color:#eceeef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#636c72;cursor:not-allowed;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0275d8;border-color:#0275d8}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active{color:#fff;background-color:#a94442;border-color:#a94442}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}button.close{padding:0;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:15px;border-bottom:1px solid #eceeef}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;padding:15px}.modal-footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;padding:15px;border-top:1px solid #eceeef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:30px auto}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip.bs-tether-element-attached-bottom,.tooltip.tooltip-top{padding:5px 0;margin-top:-3px}.tooltip.bs-tether-element-attached-bottom .tooltip-inner::before,.tooltip.tooltip-top .tooltip-inner::before{bottom:0;left:50%;margin-left:-5px;content:"";border-width:5px 5px 0;border-top-color:#000}.tooltip.bs-tether-element-attached-left,.tooltip.tooltip-right{padding:0 5px;margin-left:3px}.tooltip.bs-tether-element-attached-left .tooltip-inner::before,.tooltip.tooltip-right .tooltip-inner::before{top:50%;left:0;margin-top:-5px;content:"";border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.bs-tether-element-attached-top,.tooltip.tooltip-bottom{padding:5px 0;margin-top:3px}.tooltip.bs-tether-element-attached-top .tooltip-inner::before,.tooltip.tooltip-bottom .tooltip-inner::before{top:0;left:50%;margin-left:-5px;content:"";border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bs-tether-element-attached-right,.tooltip.tooltip-left{padding:0 5px;margin-left:-3px}.tooltip.bs-tether-element-attached-right .tooltip-inner::before,.tooltip.tooltip-left .tooltip-inner::before{top:50%;right:0;margin-top:-5px;content:"";border-width:5px 0 5px 5px;border-left-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.tooltip-inner::before{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;padding:1px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover.bs-tether-element-attached-bottom,.popover.popover-top{margin-top:-10px}.popover.bs-tether-element-attached-bottom::after,.popover.bs-tether-element-attached-bottom::before,.popover.popover-top::after,.popover.popover-top::before{left:50%;border-bottom-width:0}.popover.bs-tether-element-attached-bottom::before,.popover.popover-top::before{bottom:-11px;margin-left:-11px;border-top-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-bottom::after,.popover.popover-top::after{bottom:-10px;margin-left:-10px;border-top-color:#fff}.popover.bs-tether-element-attached-left,.popover.popover-right{margin-left:10px}.popover.bs-tether-element-attached-left::after,.popover.bs-tether-element-attached-left::before,.popover.popover-right::after,.popover.popover-right::before{top:50%;border-left-width:0}.popover.bs-tether-element-attached-left::before,.popover.popover-right::before{left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-left::after,.popover.popover-right::after{left:-10px;margin-top:-10px;border-right-color:#fff}.popover.bs-tether-element-attached-top,.popover.popover-bottom{margin-top:10px}.popover.bs-tether-element-attached-top::after,.popover.bs-tether-element-attached-top::before,.popover.popover-bottom::after,.popover.popover-bottom::before{left:50%;border-top-width:0}.popover.bs-tether-element-attached-top::before,.popover.popover-bottom::before{top:-11px;margin-left:-11px;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-top::after,.popover.popover-bottom::after{top:-10px;margin-left:-10px;border-bottom-color:#f7f7f7}.popover.bs-tether-element-attached-top .popover-title::before,.popover.popover-bottom .popover-title::before{position:absolute;top:0;left:50%;display:block;width:20px;margin-left:-10px;content:"";border-bottom:1px solid #f7f7f7}.popover.bs-tether-element-attached-right,.popover.popover-left{margin-left:-10px}.popover.bs-tether-element-attached-right::after,.popover.bs-tether-element-attached-right::before,.popover.popover-left::after,.popover.popover-left::before{top:50%;border-right-width:0}.popover.bs-tether-element-attached-right::before,.popover.popover-left::before{right:-11px;margin-top:-11px;border-left-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-right::after,.popover.popover-left::after{right:-10px;margin-top:-10px;border-left-color:#fff}.popover-title{padding:8px 14px;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-title:empty{display:none}.popover-content{padding:9px 14px;color:#292b2c}.popover::after,.popover::before{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover::before{content:"";border-width:11px}.popover::after{content:"";border-width:10px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;width:100%;-webkit-transition:-webkit-transform .6s ease;transition:-webkit-transform .6s ease;-o-transition:-o-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease,-o-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;-webkit-background-size:100% 100%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;max-width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-faded{background-color:#f7f7f7}.bg-primary{background-color:#0275d8!important}a.bg-primary:focus,a.bg-primary:hover{background-color:#025aa5!important}.bg-success{background-color:#5cb85c!important}a.bg-success:focus,a.bg-success:hover{background-color:#449d44!important}.bg-info{background-color:#5bc0de!important}a.bg-info:focus,a.bg-info:hover{background-color:#31b0d5!important}.bg-warning{background-color:#f0ad4e!important}a.bg-warning:focus,a.bg-warning:hover{background-color:#ec971f!important}.bg-danger{background-color:#d9534f!important}a.bg-danger:focus,a.bg-danger:hover{background-color:#c9302c!important}.bg-inverse{background-color:#292b2c!important}a.bg-inverse:focus,a.bg-inverse:hover{background-color:#101112!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.rounded{border-radius:.25rem}.rounded-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-right{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-left{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-circle{border-radius:50%}.rounded-0{border-radius:0}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.d-print-block{display:none!important}@media print{.d-print-block{display:block!important}}.d-print-inline{display:none!important}@media print{.d-print-inline{display:inline!important}}.d-print-inline-block{display:none!important}@media print{.d-print-inline-block{display:inline-block!important}}@media print{.d-print-none{display:none!important}}.order-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.order-sm-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-sm-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-sm-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-sm-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.order-md-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-md-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-md-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-md-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.order-lg-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-lg-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-lg-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-lg-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.order-xl-first{-webkit-box-ordinal-group:0;-webkit-order:-1;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1}.order-xl-0{-webkit-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0}.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-webkit-flex-direction:row!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-webkit-flex-direction:column!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:row-reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-webkit-flex-direction:column-reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-webkit-flex-wrap:wrap!important;-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-webkit-flex-wrap:nowrap!important;-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-webkit-justify-content:flex-start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-webkit-justify-content:flex-end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-webkit-justify-content:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-webkit-justify-content:space-between!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-webkit-justify-content:space-around!important;-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-webkit-align-items:flex-start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-webkit-align-items:flex-end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-webkit-align-items:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-webkit-align-items:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-webkit-align-items:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-webkit-align-content:flex-start!important;-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-webkit-align-content:flex-end!important;-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-webkit-align-content:center!important;-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-webkit-align-content:space-between!important;-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-webkit-align-content:space-around!important;-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-webkit-align-content:stretch!important;-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-webkit-align-self:auto!important;-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-xl-start{-webkit-align-self:flex-start!important;-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-webkit-align-self:flex-end!important;-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-webkit-align-self:center!important;-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-xl-baseline{-webkit-align-self:baseline!important;-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-webkit-align-self:stretch!important;-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-right:0!important;margin-left:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1{margin-left:.25rem!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-2{margin:.5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-3{margin:1rem!important}.mt-3{margin-top:1rem!important}.mr-3{margin-right:1rem!important}.mb-3{margin-bottom:1rem!important}.ml-3{margin-left:1rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-4{margin:1.5rem!important}.mt-4{margin-top:1.5rem!important}.mr-4{margin-right:1.5rem!important}.mb-4{margin-bottom:1.5rem!important}.ml-4{margin-left:1.5rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-5{margin:3rem!important}.mt-5{margin-top:3rem!important}.mr-5{margin-right:3rem!important}.mb-5{margin-bottom:3rem!important}.ml-5{margin-left:3rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-right:0!important;padding-left:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1{padding-left:.25rem!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-2{padding:.5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-3{padding:1rem!important}.pt-3{padding-top:1rem!important}.pr-3{padding-right:1rem!important}.pb-3{padding-bottom:1rem!important}.pl-3{padding-left:1rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-4{padding:1.5rem!important}.pt-4{padding-top:1.5rem!important}.pr-4{padding-right:1.5rem!important}.pb-4{padding-bottom:1.5rem!important}.pl-4{padding-left:1.5rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-5{padding:3rem!important}.pt-5{padding-top:3rem!important}.pr-5{padding-right:3rem!important}.pb-5{padding-bottom:3rem!important}.pl-5{padding-left:3rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-auto{margin:auto!important}.mt-auto{margin-top:auto!important}.mr-auto{margin-right:auto!important}.mb-auto{margin-bottom:auto!important}.ml-auto{margin-left:auto!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0{margin-top:0!important}.mr-sm-0{margin-right:0!important}.mb-sm-0{margin-bottom:0!important}.ml-sm-0{margin-left:0!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1{margin-top:.25rem!important}.mr-sm-1{margin-right:.25rem!important}.mb-sm-1{margin-bottom:.25rem!important}.ml-sm-1{margin-left:.25rem!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2{margin-top:.5rem!important}.mr-sm-2{margin-right:.5rem!important}.mb-sm-2{margin-bottom:.5rem!important}.ml-sm-2{margin-left:.5rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3{margin-top:1rem!important}.mr-sm-3{margin-right:1rem!important}.mb-sm-3{margin-bottom:1rem!important}.ml-sm-3{margin-left:1rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4{margin-top:1.5rem!important}.mr-sm-4{margin-right:1.5rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.ml-sm-4{margin-left:1.5rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5{margin-top:3rem!important}.mr-sm-5{margin-right:3rem!important}.mb-sm-5{margin-bottom:3rem!important}.ml-sm-5{margin-left:3rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0{padding-top:0!important}.pr-sm-0{padding-right:0!important}.pb-sm-0{padding-bottom:0!important}.pl-sm-0{padding-left:0!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1{padding-top:.25rem!important}.pr-sm-1{padding-right:.25rem!important}.pb-sm-1{padding-bottom:.25rem!important}.pl-sm-1{padding-left:.25rem!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2{padding-top:.5rem!important}.pr-sm-2{padding-right:.5rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pl-sm-2{padding-left:.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3{padding-top:1rem!important}.pr-sm-3{padding-right:1rem!important}.pb-sm-3{padding-bottom:1rem!important}.pl-sm-3{padding-left:1rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4{padding-top:1.5rem!important}.pr-sm-4{padding-right:1.5rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pl-sm-4{padding-left:1.5rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5{padding-top:3rem!important}.pr-sm-5{padding-right:3rem!important}.pb-sm-5{padding-bottom:3rem!important}.pl-sm-5{padding-left:3rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-auto{margin-left:auto!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0{margin-top:0!important}.mr-md-0{margin-right:0!important}.mb-md-0{margin-bottom:0!important}.ml-md-0{margin-left:0!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.m-md-1{margin:.25rem!important}.mt-md-1{margin-top:.25rem!important}.mr-md-1{margin-right:.25rem!important}.mb-md-1{margin-bottom:.25rem!important}.ml-md-1{margin-left:.25rem!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2{margin-top:.5rem!important}.mr-md-2{margin-right:.5rem!important}.mb-md-2{margin-bottom:.5rem!important}.ml-md-2{margin-left:.5rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3{margin-top:1rem!important}.mr-md-3{margin-right:1rem!important}.mb-md-3{margin-bottom:1rem!important}.ml-md-3{margin-left:1rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4{margin-top:1.5rem!important}.mr-md-4{margin-right:1.5rem!important}.mb-md-4{margin-bottom:1.5rem!important}.ml-md-4{margin-left:1.5rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5{margin-top:3rem!important}.mr-md-5{margin-right:3rem!important}.mb-md-5{margin-bottom:3rem!important}.ml-md-5{margin-left:3rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-md-0{padding:0!important}.pt-md-0{padding-top:0!important}.pr-md-0{padding-right:0!important}.pb-md-0{padding-bottom:0!important}.pl-md-0{padding-left:0!important}.px-md-0{padding-right:0!important;padding-left:0!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.p-md-1{padding:.25rem!important}.pt-md-1{padding-top:.25rem!important}.pr-md-1{padding-right:.25rem!important}.pb-md-1{padding-bottom:.25rem!important}.pl-md-1{padding-left:.25rem!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2{padding-top:.5rem!important}.pr-md-2{padding-right:.5rem!important}.pb-md-2{padding-bottom:.5rem!important}.pl-md-2{padding-left:.5rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3{padding-top:1rem!important}.pr-md-3{padding-right:1rem!important}.pb-md-3{padding-bottom:1rem!important}.pl-md-3{padding-left:1rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4{padding-top:1.5rem!important}.pr-md-4{padding-right:1.5rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pl-md-4{padding-left:1.5rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5{padding-top:3rem!important}.pr-md-5{padding-right:3rem!important}.pb-md-5{padding-bottom:3rem!important}.pl-md-5{padding-left:3rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto{margin-top:auto!important}.mr-md-auto{margin-right:auto!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-auto{margin-left:auto!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0{margin-top:0!important}.mr-lg-0{margin-right:0!important}.mb-lg-0{margin-bottom:0!important}.ml-lg-0{margin-left:0!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1{margin-top:.25rem!important}.mr-lg-1{margin-right:.25rem!important}.mb-lg-1{margin-bottom:.25rem!important}.ml-lg-1{margin-left:.25rem!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2{margin-top:.5rem!important}.mr-lg-2{margin-right:.5rem!important}.mb-lg-2{margin-bottom:.5rem!important}.ml-lg-2{margin-left:.5rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3{margin-top:1rem!important}.mr-lg-3{margin-right:1rem!important}.mb-lg-3{margin-bottom:1rem!important}.ml-lg-3{margin-left:1rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4{margin-top:1.5rem!important}.mr-lg-4{margin-right:1.5rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.ml-lg-4{margin-left:1.5rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5{margin-top:3rem!important}.mr-lg-5{margin-right:3rem!important}.mb-lg-5{margin-bottom:3rem!important}.ml-lg-5{margin-left:3rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0{padding-top:0!important}.pr-lg-0{padding-right:0!important}.pb-lg-0{padding-bottom:0!important}.pl-lg-0{padding-left:0!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1{padding-top:.25rem!important}.pr-lg-1{padding-right:.25rem!important}.pb-lg-1{padding-bottom:.25rem!important}.pl-lg-1{padding-left:.25rem!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2{padding-top:.5rem!important}.pr-lg-2{padding-right:.5rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pl-lg-2{padding-left:.5rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3{padding-top:1rem!important}.pr-lg-3{padding-right:1rem!important}.pb-lg-3{padding-bottom:1rem!important}.pl-lg-3{padding-left:1rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4{padding-top:1.5rem!important}.pr-lg-4{padding-right:1.5rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pl-lg-4{padding-left:1.5rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5{padding-top:3rem!important}.pr-lg-5{padding-right:3rem!important}.pb-lg-5{padding-bottom:3rem!important}.pl-lg-5{padding-left:3rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-auto{margin-left:auto!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0{margin-top:0!important}.mr-xl-0{margin-right:0!important}.mb-xl-0{margin-bottom:0!important}.ml-xl-0{margin-left:0!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1{margin-top:.25rem!important}.mr-xl-1{margin-right:.25rem!important}.mb-xl-1{margin-bottom:.25rem!important}.ml-xl-1{margin-left:.25rem!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2{margin-top:.5rem!important}.mr-xl-2{margin-right:.5rem!important}.mb-xl-2{margin-bottom:.5rem!important}.ml-xl-2{margin-left:.5rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3{margin-top:1rem!important}.mr-xl-3{margin-right:1rem!important}.mb-xl-3{margin-bottom:1rem!important}.ml-xl-3{margin-left:1rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4{margin-top:1.5rem!important}.mr-xl-4{margin-right:1.5rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.ml-xl-4{margin-left:1.5rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5{margin-top:3rem!important}.mr-xl-5{margin-right:3rem!important}.mb-xl-5{margin-bottom:3rem!important}.ml-xl-5{margin-left:3rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0{padding-top:0!important}.pr-xl-0{padding-right:0!important}.pb-xl-0{padding-bottom:0!important}.pl-xl-0{padding-left:0!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1{padding-top:.25rem!important}.pr-xl-1{padding-right:.25rem!important}.pb-xl-1{padding-bottom:.25rem!important}.pl-xl-1{padding-left:.25rem!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2{padding-top:.5rem!important}.pr-xl-2{padding-right:.5rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pl-xl-2{padding-left:.5rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3{padding-top:1rem!important}.pr-xl-3{padding-right:1rem!important}.pb-xl-3{padding-bottom:1rem!important}.pl-xl-3{padding-left:1rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4{padding-top:1.5rem!important}.pr-xl-4{padding-right:1.5rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pl-xl-4{padding-left:1.5rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5{padding-top:3rem!important}.pr-xl-5{padding-right:3rem!important}.pb-xl-5{padding-bottom:3rem!important}.pl-xl-5{padding-left:3rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-auto{margin-left:auto!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-normal{font-weight:400}.font-weight-bold{font-weight:700}.font-italic{font-style:italic}.text-white{color:#fff!important}.text-muted{color:#636c72!important}a.text-muted:focus,a.text-muted:hover{color:#4b5257!important}.text-primary{color:#0275d8!important}a.text-primary:focus,a.text-primary:hover{color:#025aa5!important}.text-success{color:#5cb85c!important}a.text-success:focus,a.text-success:hover{color:#449d44!important}.text-info{color:#5bc0de!important}a.text-info:focus,a.text-info:hover{color:#31b0d5!important}.text-warning{color:#f0ad4e!important}a.text-warning:focus,a.text-warning:hover{color:#ec971f!important}.text-danger{color:#d9534f!important}a.text-danger:focus,a.text-danger:hover{color:#c9302c!important}.text-gray-dark{color:#292b2c!important}a.text-gray-dark:focus,a.text-gray-dark:hover{color:#101112!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file diff --git a/library/bootstrap/css/bootstrap.min.css.map b/library/bootstrap/css/bootstrap.min.css.map index 27684094b..67b5ad80a 100644 --- a/library/bootstrap/css/bootstrap.min.css.map +++ b/library/bootstrap/css/bootstrap.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_print.scss","dist/css/bootstrap.css","../../scss/_reboot.scss","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/mixins/_transition.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/mixins/_cards.scss","../../scss/_breadcrumb.scss","../../scss/mixins/_clearfix.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_responsive-embed.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_transforms.scss","../../scss/utilities/_align.scss","../../scss/utilities/_background.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss"],"names":[],"mappings":"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"}
\ No newline at end of file +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_print.scss","dist/css/bootstrap.css","../../scss/_reboot.scss","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/mixins/_transition.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/mixins/_cards.scss","../../scss/_breadcrumb.scss","../../scss/mixins/_clearfix.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/mixins/_gradients.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_responsive-embed.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/utilities/_align.scss","../../scss/utilities/_background.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_borders.scss","../../scss/utilities/_display.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss"],"names":[],"mappings":"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CQ,QFgCR,MAAA,WEhCQ,QFgCR,MAAA,WEhCQ,QFgCR,MAAA,IEhCQ,SFgCR,MAAA,WEhCQ,SFgCR,MAAA,WEhCQ,SFgCR,MAAA,KEhCQ,QF4BR,KAAA,KE5BQ,QF4BR,KAAA,UE5BQ,QF4BR,KAAA,WE5BQ,QF4BR,KAAA,IE5BQ,QF4BR,KAAA,WE5BQ,QF4BR,KAAA,WE5BQ,QF4BR,KAAA,IE5BQ,QF4BR,KAAA,WE5BQ,QF4BR,KAAA,WE5BQ,QF4BR,KAAA,IE5BQ,SF4BR,KAAA,WE5BQ,SF4BR,KAAA,WE5BQ,SF4BR,KAAA,KEnBQ,UFeR,YAAA,UEfQ,UFeR,YAAA,WEfQ,UFeR,YAAA,IEfQ,UFeR,YAAA,WEfQ,UFeR,YAAA,WEfQ,UFeR,YAAA,IEfQ,UFeR,YAAA,WEfQ,UFeR,YAAA,WEfQ,UFeR,YAAA,IEfQ,WFeR,YAAA,WEfQ,WFeR,YAAA,WCjBE,yBCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF2BN,MAAA,UE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,KEpBQ,WFgCR,MAAA,KEhCQ,WFgCR,MAAA,UEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,KEhCQ,WF4BR,KAAA,KE5BQ,WF4BR,KAAA,UE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,KEnBQ,aFeR,YAAA,EEfQ,aFeR,YAAA,UEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,cFeR,YAAA,WEfQ,cFeR,YAAA,YCjBE,yBCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF2BN,MAAA,UE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,KEpBQ,WFgCR,MAAA,KEhCQ,WFgCR,MAAA,UEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,KEhCQ,WF4BR,KAAA,KE5BQ,WF4BR,KAAA,UE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,KEnBQ,aFeR,YAAA,EEfQ,aFeR,YAAA,UEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,cFeR,YAAA,WEfQ,cFeR,YAAA,YCjBE,yBCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,iBAAA,EAAA,aAAA,EAAA,EAAA,KAAA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KAIA,UF2BN,MAAA,UE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,WE3BM,UF2BN,MAAA,IE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,WE3BM,WF2BN,MAAA,KEpBQ,WFgCR,MAAA,KEhCQ,WFgCR,MAAA,UEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,WEhCQ,WFgCR,MAAA,IEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,WEhCQ,YFgCR,MAAA,KEhCQ,WF4BR,KAAA,KE5BQ,WF4BR,KAAA,UE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,WE5BQ,WF4BR,KAAA,IE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,WE5BQ,YF4BR,KAAA,KEnBQ,aFeR,YAAA,EEfQ,aFeR,YAAA,UEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,WEfQ,aFeR,YAAA,IEfQ,cFeR,YAAA,WEfQ,cFeR,YAAA,YCjBE,0BCzBE,QACE,mBAAA,EAAA,wBAAA,EAAA,WAAA,EACA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,U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"}
\ No newline at end of file diff --git a/library/bootstrap/js/bootstrap.js b/library/bootstrap/js/bootstrap.js index 5f2db5c86..5599d7165 100644 --- a/library/bootstrap/js/bootstrap.js +++ b/library/bootstrap/js/bootstrap.js @@ -1713,7 +1713,8 @@ var Modal = function ($) { DIALOG: '.modal-dialog', DATA_TOGGLE: '[data-toggle="modal"]', DATA_DISMISS: '[data-dismiss="modal"]', - FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top' + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', + NAVBAR_TOGGLER: '.navbar-toggler' }; /** @@ -1852,7 +1853,6 @@ var Modal = function ($) { this._isShown = null; this._isBodyOverflowing = null; this._ignoreBackdropClick = null; - this._originalBodyPadding = null; this._scrollbarWidth = null; }; @@ -2065,17 +2065,55 @@ var Modal = function ($) { }; Modal.prototype._setScrollbar = function _setScrollbar() { - var bodyPadding = parseInt($(Selector.FIXED_CONTENT).css('padding-right') || 0, 10); - - this._originalBodyPadding = document.body.style.paddingRight || ''; + var _this17 = this; if (this._isBodyOverflowing) { - document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + // Note: DOMNode.style.paddingRight returns the actual value or '' if not set + // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set + + // Adjust fixed content padding + $(Selector.FIXED_CONTENT).each(function (index, element) { + var actualPadding = $(element)[0].style.paddingRight; + var calculatedPadding = $(element).css('padding-right'); + $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this17._scrollbarWidth + 'px'); + }); + + // Adjust navbar-toggler margin + $(Selector.NAVBAR_TOGGLER).each(function (index, element) { + var actualMargin = $(element)[0].style.marginRight; + var calculatedMargin = $(element).css('margin-right'); + $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this17._scrollbarWidth + 'px'); + }); + + // Adjust body padding + var actualPadding = document.body.style.paddingRight; + var calculatedPadding = $('body').css('padding-right'); + $('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + 'px'); } }; Modal.prototype._resetScrollbar = function _resetScrollbar() { - document.body.style.paddingRight = this._originalBodyPadding; + // Restore fixed content padding + $(Selector.FIXED_CONTENT).each(function (index, element) { + var padding = $(element).data('padding-right'); + if (typeof padding !== 'undefined') { + $(element).css('padding-right', padding).removeData('padding-right'); + } + }); + + // Restore navbar-toggler margin + $(Selector.NAVBAR_TOGGLER).each(function (index, element) { + var margin = $(element).data('margin-right'); + if (typeof margin !== 'undefined') { + $(element).css('margin-right', margin).removeData('margin-right'); + } + }); + + // Restore body padding + var padding = $('body').data('padding-right'); + if (typeof padding !== 'undefined') { + $('body').css('padding-right', padding).removeData('padding-right'); + } }; Modal.prototype._getScrollbarWidth = function _getScrollbarWidth() { @@ -2133,7 +2171,7 @@ var Modal = function ($) { */ $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - var _this17 = this; + var _this18 = this; var target = void 0; var selector = Util.getSelectorFromElement(this); @@ -2155,8 +2193,8 @@ var Modal = function ($) { } $target.one(Event.HIDDEN, function () { - if ($(_this17).is(':visible')) { - _this17.focus(); + if ($(_this18).is(':visible')) { + _this18.focus(); } }); }); @@ -2223,18 +2261,15 @@ var ScrollSpy = function ($) { var ClassName = { DROPDOWN_ITEM: 'dropdown-item', DROPDOWN_MENU: 'dropdown-menu', - NAV_LINK: 'nav-link', - NAV: 'nav', ACTIVE: 'active' }; var Selector = { DATA_SPY: '[data-spy="scroll"]', ACTIVE: '.active', - LIST_ITEM: '.list-item', - LI: 'li', - LI_DROPDOWN: 'li.dropdown', + NAV_LIST_GROUP: '.nav, .list-group', NAV_LINKS: '.nav-link', + LIST_ITEMS: '.list-group-item', DROPDOWN: '.dropdown', DROPDOWN_ITEMS: '.dropdown-item', DROPDOWN_TOGGLE: '.dropdown-toggle' @@ -2253,21 +2288,21 @@ var ScrollSpy = function ($) { var ScrollSpy = function () { function ScrollSpy(element, config) { - var _this18 = this; + var _this19 = this; _classCallCheck(this, ScrollSpy); this._element = element; this._scrollElement = element.tagName === 'BODY' ? window : element; this._config = this._getConfig(config); - this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS); + this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.LIST_ITEMS + ',') + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS); this._offsets = []; this._targets = []; this._activeTarget = null; this._scrollHeight = 0; $(this._scrollElement).on(Event.SCROLL, function (event) { - return _this18._process(event); + return _this19._process(event); }); this.refresh(); @@ -2279,7 +2314,7 @@ var ScrollSpy = function ($) { // public ScrollSpy.prototype.refresh = function refresh() { - var _this19 = this; + var _this20 = this; var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; @@ -2315,8 +2350,8 @@ var ScrollSpy = function ($) { }).sort(function (a, b) { return a[0] - b[0]; }).forEach(function (item) { - _this19._offsets.push(item[0]); - _this19._targets.push(item[1]); + _this20._offsets.push(item[0]); + _this20._targets.push(item[1]); }); }; @@ -2414,9 +2449,11 @@ var ScrollSpy = function ($) { $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); $link.addClass(ClassName.ACTIVE); } else { - // todo (fat) this is kinda sus... - // recursively add actives to tested nav-links - $link.parents(Selector.LI).find('> ' + Selector.NAV_LINKS).addClass(ClassName.ACTIVE); + // Set triggered link as active + $link.addClass(ClassName.ACTIVE); + // Set triggered links parents as active + // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor + $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ', ' + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); } $(this._scrollElement).trigger(Event.ACTIVATE, { @@ -2535,14 +2572,10 @@ var Tab = function ($) { }; var Selector = { - A: 'a', - LI: 'li', DROPDOWN: '.dropdown', - LIST: 'ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu), .list-group:not(.dropdown-menu)', - FADE_CHILD: '> .nav-item .fade, > .list-group-item .fade, > .fade', + NAV_LIST_GROUP: '.nav, .list-group', ACTIVE: '.active', - ACTIVE_CHILD: '> .nav-item > .active, > .list-group-item > .active, > .active', - DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', + DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', DROPDOWN_TOGGLE: '.dropdown-toggle', DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' }; @@ -2565,7 +2598,7 @@ var Tab = function ($) { // public Tab.prototype.show = function show() { - var _this20 = this; + var _this21 = this; if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) { return; @@ -2573,7 +2606,7 @@ var Tab = function ($) { var target = void 0; var previous = void 0; - var listElement = $(this._element).closest(Selector.LIST)[0]; + var listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]; var selector = Util.getSelectorFromElement(this._element); if (listElement) { @@ -2607,7 +2640,7 @@ var Tab = function ($) { var complete = function complete() { var hiddenEvent = $.Event(Event.HIDDEN, { - relatedTarget: _this20._element + relatedTarget: _this21._element }); var shownEvent = $.Event(Event.SHOWN, { @@ -2615,7 +2648,7 @@ var Tab = function ($) { }); $(previous).trigger(hiddenEvent); - $(_this20._element).trigger(shownEvent); + $(_this21._element).trigger(shownEvent); }; if (target) { @@ -2633,13 +2666,13 @@ var Tab = function ($) { // private Tab.prototype._activate = function _activate(element, container, callback) { - var _this21 = this; + var _this22 = this; - var active = $(container).find(Selector.ACTIVE_CHILD)[0]; - var isTransitioning = callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || Boolean($(container).find(Selector.FADE_CHILD)[0])); + var active = $(container).find(Selector.ACTIVE)[0]; + var isTransitioning = callback && Util.supportsTransitionEnd() && active && $(active).hasClass(ClassName.FADE); var complete = function complete() { - return _this21._transitionComplete(element, active, isTransitioning, callback); + return _this22._transitionComplete(element, active, isTransitioning, callback); }; if (active && isTransitioning) { @@ -2656,9 +2689,6 @@ var Tab = function ($) { Tab.prototype._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) { if (active) { $(active).removeClass(ClassName.ACTIVE); - if ($(active).hasClass('list-group-item')) { - $(active).find('a.nav-link').removeClass(ClassName.ACTIVE); - } var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; @@ -2670,9 +2700,6 @@ var Tab = function ($) { } $(element).addClass(ClassName.ACTIVE); - if ($(element.parentNode).hasClass('list-group-item')) { - $(element.parentNode).addClass(ClassName.ACTIVE); - } element.setAttribute('aria-expanded', true); if (isTransitioning) { @@ -2959,7 +2986,7 @@ var Tooltip = function ($) { }; Tooltip.prototype.show = function show() { - var _this22 = this; + var _this23 = this; if ($(this.element).css('display') === 'none') { throw new Error('Please use show on visible elements'); @@ -3018,13 +3045,13 @@ var Tooltip = function ($) { $(tip).addClass(ClassName.SHOW); var complete = function complete() { - var prevHoverState = _this22._hoverState; - _this22._hoverState = null; + var prevHoverState = _this23._hoverState; + _this23._hoverState = null; - $(_this22.element).trigger(_this22.constructor.Event.SHOWN); + $(_this23.element).trigger(_this23.constructor.Event.SHOWN); if (prevHoverState === HoverState.OUT) { - _this22._leave(null, _this22); + _this23._leave(null, _this23); } }; @@ -3038,19 +3065,19 @@ var Tooltip = function ($) { }; Tooltip.prototype.hide = function hide(callback) { - var _this23 = this; + var _this24 = this; var tip = this.getTipElement(); var hideEvent = $.Event(this.constructor.Event.HIDE); var complete = function complete() { - if (_this23._hoverState !== HoverState.SHOW && tip.parentNode) { + if (_this24._hoverState !== HoverState.SHOW && tip.parentNode) { tip.parentNode.removeChild(tip); } - _this23._cleanTipClass(); - _this23.element.removeAttribute('aria-describedby'); - $(_this23.element).trigger(_this23.constructor.Event.HIDDEN); - _this23.cleanupTether(); + _this24._cleanTipClass(); + _this24.element.removeAttribute('aria-describedby'); + $(_this24.element).trigger(_this24.constructor.Event.HIDDEN); + _this24.cleanupTether(); if (callback) { callback(); @@ -3146,28 +3173,28 @@ var Tooltip = function ($) { }; Tooltip.prototype._setListeners = function _setListeners() { - var _this24 = this; + var _this25 = this; var triggers = this.config.trigger.split(' '); triggers.forEach(function (trigger) { if (trigger === 'click') { - $(_this24.element).on(_this24.constructor.Event.CLICK, _this24.config.selector, function (event) { - return _this24.toggle(event); + $(_this25.element).on(_this25.constructor.Event.CLICK, _this25.config.selector, function (event) { + return _this25.toggle(event); }); } else if (trigger !== Trigger.MANUAL) { - var eventIn = trigger === Trigger.HOVER ? _this24.constructor.Event.MOUSEENTER : _this24.constructor.Event.FOCUSIN; - var eventOut = trigger === Trigger.HOVER ? _this24.constructor.Event.MOUSELEAVE : _this24.constructor.Event.FOCUSOUT; + var eventIn = trigger === Trigger.HOVER ? _this25.constructor.Event.MOUSEENTER : _this25.constructor.Event.FOCUSIN; + var eventOut = trigger === Trigger.HOVER ? _this25.constructor.Event.MOUSELEAVE : _this25.constructor.Event.FOCUSOUT; - $(_this24.element).on(eventIn, _this24.config.selector, function (event) { - return _this24._enter(event); - }).on(eventOut, _this24.config.selector, function (event) { - return _this24._leave(event); + $(_this25.element).on(eventIn, _this25.config.selector, function (event) { + return _this25._enter(event); + }).on(eventOut, _this25.config.selector, function (event) { + return _this25._leave(event); }); } - $(_this24.element).closest('.modal').on('hide.bs.modal', function () { - return _this24.hide(); + $(_this25.element).closest('.modal').on('hide.bs.modal', function () { + return _this25.hide(); }); }); diff --git a/library/bootstrap/js/bootstrap.min.js b/library/bootstrap/js/bootstrap.min.js index b1b3a0bce..d96ee2c90 100644 --- a/library/bootstrap/js/bootstrap.min.js +++ b/library/bootstrap/js/bootstrap.min.js @@ -3,5 +3,5 @@ * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");+function(t){var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(jQuery),function(){function t(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function e(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),r=function(t){function e(t){return{}.toString.call(t).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}function n(t){return(t[0]||t).nodeType}function i(){return{bindType:s.end,delegateType:s.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}}function o(){if(window.QUnit)return!1;var t=document.createElement("bootstrap");for(var e in a)if(void 0!==t.style[e])return{end:a[e]};return!1}function r(e){var n=this,i=!1;return t(this).one(l.TRANSITION_END,function(){i=!0}),setTimeout(function(){i||l.triggerTransitionEnd(n)},e),this}var s=!1,a={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},l={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(e){var n=e.getAttribute("data-target");n&&"#"!==n||(n=e.getAttribute("href")||"");try{return t(n).length>0?n:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(e){t(e).trigger(s.end)},supportsTransitionEnd:function(){return Boolean(s)},typeCheckConfig:function(t,i,o){for(var r in o)if(o.hasOwnProperty(r)){var s=o[r],a=i[r],l=a&&n(a)?"element":e(a);if(!new RegExp(s).test(l))throw new Error(t.toUpperCase()+': Option "'+r+'" provided type "'+l+'" but expected type "'+s+'".')}}};return function(){s=o(),t.fn.emulateTransitionEnd=r,l.supportsTransitionEnd()&&(t.event.special[l.TRANSITION_END]=i())}(),l}(jQuery),s=(function(t){var e="alert",i=t.fn[e],s={DISMISS:'[data-dismiss="alert"]'},a={CLOSE:"close.bs.alert",CLOSED:"closed.bs.alert",CLICK_DATA_API:"click.bs.alert.data-api"},l={ALERT:"alert",FADE:"fade",SHOW:"show"},c=function(){function e(t){n(this,e),this._element=t}return e.prototype.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.prototype.dispose=function(){t.removeData(this._element,"bs.alert"),this._element=null},e.prototype._getRootElement=function(e){var n=r.getSelectorFromElement(e),i=!1;return n&&(i=t(n)[0]),i||(i=t(e).closest("."+l.ALERT)[0]),i},e.prototype._triggerCloseEvent=function(e){var n=t.Event(a.CLOSE);return t(e).trigger(n),n},e.prototype._removeElement=function(e){var n=this;if(t(e).removeClass(l.SHOW),!r.supportsTransitionEnd()||!t(e).hasClass(l.FADE))return void this._destroyElement(e);t(e).one(r.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(150)},e.prototype._destroyElement=function(e){t(e).detach().trigger(a.CLOSED).remove()},e._jQueryInterface=function(n){return this.each(function(){var i=t(this),o=i.data("bs.alert");o||(o=new e(this),i.data("bs.alert",o)),"close"===n&&o[n](this)})},e._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}}]),e}();t(document).on(a.CLICK_DATA_API,s.DISMISS,c._handleDismiss(new c)),t.fn[e]=c._jQueryInterface,t.fn[e].Constructor=c,t.fn[e].noConflict=function(){return t.fn[e]=i,c._jQueryInterface},c}(jQuery),function(t){var e="button",i=t.fn[e],r={ACTIVE:"active",BUTTON:"btn",FOCUS:"focus"},s={DATA_TOGGLE_CARROT:'[data-toggle^="button"]',DATA_TOGGLE:'[data-toggle="buttons"]',INPUT:"input",ACTIVE:".active",BUTTON:".btn"},a={CLICK_DATA_API:"click.bs.button.data-api",FOCUS_BLUR_DATA_API:"focus.bs.button.data-api blur.bs.button.data-api"},l=function(){function e(t){n(this,e),this._element=t}return e.prototype.toggle=function(){var e=!0,n=t(this._element).closest(s.DATA_TOGGLE)[0];if(n){var i=t(this._element).find(s.INPUT)[0];if(i){if("radio"===i.type)if(i.checked&&t(this._element).hasClass(r.ACTIVE))e=!1;else{var o=t(n).find(s.ACTIVE)[0];o&&t(o).removeClass(r.ACTIVE)}e&&(i.checked=!t(this._element).hasClass(r.ACTIVE),t(i).trigger("change")),i.focus()}}this._element.setAttribute("aria-pressed",!t(this._element).hasClass(r.ACTIVE)),e&&t(this._element).toggleClass(r.ACTIVE)},e.prototype.dispose=function(){t.removeData(this._element,"bs.button"),this._element=null},e._jQueryInterface=function(n){return this.each(function(){var i=t(this).data("bs.button");i||(i=new e(this),t(this).data("bs.button",i)),"toggle"===n&&i[n]()})},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}}]),e}();t(document).on(a.CLICK_DATA_API,s.DATA_TOGGLE_CARROT,function(e){e.preventDefault();var n=e.target;t(n).hasClass(r.BUTTON)||(n=t(n).closest(s.BUTTON)),l._jQueryInterface.call(t(n),"toggle")}).on(a.FOCUS_BLUR_DATA_API,s.DATA_TOGGLE_CARROT,function(e){t(t(e.target).closest(s.BUTTON)[0]).toggleClass(r.FOCUS,/^focus(in)?$/.test(e.type))}),t.fn[e]=l._jQueryInterface,t.fn[e].Constructor=l,t.fn[e].noConflict=function(){return t.fn[e]=i,l._jQueryInterface},l}(jQuery),function(t){var e="carousel",s="bs.carousel",a="."+s,l=t.fn[e],c={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},h={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},u={NEXT:"next",PREV:"prev",LEFT:"left",RIGHT:"right"},d={SLIDE:"slide"+a,SLID:"slid"+a,KEYDOWN:"keydown"+a,MOUSEENTER:"mouseenter"+a,MOUSELEAVE:"mouseleave"+a,LOAD_DATA_API:"load.bs.carousel.data-api",CLICK_DATA_API:"click.bs.carousel.data-api"},f={CAROUSEL:"carousel",ACTIVE:"active",SLIDE:"slide",RIGHT:"carousel-item-right",LEFT:"carousel-item-left",NEXT:"carousel-item-next",PREV:"carousel-item-prev",ITEM:"carousel-item"},_={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},p=function(){function l(e,i){n(this,l),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this._config=this._getConfig(i),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(_.INDICATORS)[0],this._addEventListeners()}return l.prototype.next=function(){this._isSliding||this._slide(u.NEXT)},l.prototype.nextWhenVisible=function(){document.hidden||this.next()},l.prototype.prev=function(){this._isSliding||this._slide(u.PREV)},l.prototype.pause=function(e){e||(this._isPaused=!0),t(this._element).find(_.NEXT_PREV)[0]&&r.supportsTransitionEnd()&&(r.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},l.prototype.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},l.prototype.to=function(e){var n=this;this._activeElement=t(this._element).find(_.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0)){if(this._isSliding)return void t(this._element).one(d.SLID,function(){return n.to(e)});if(i===e)return this.pause(),void this.cycle();var o=e>i?u.NEXT:u.PREV;this._slide(o,this._items[e])}},l.prototype.dispose=function(){t(this._element).off(a),t.removeData(this._element,s),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},l.prototype._getConfig=function(n){return n=t.extend({},c,n),r.typeCheckConfig(e,n,h),n},l.prototype._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"!==this._config.pause||"ontouchstart"in document.documentElement||t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)})},l.prototype._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next();break;default:return}},l.prototype._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(_.ITEM)),this._items.indexOf(e)},l.prototype._getItemByDirection=function(t,e){var n=t===u.NEXT,i=t===u.PREV,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=t===u.PREV?-1:1,a=(o+s)%this._items.length;return a===-1?this._items[this._items.length-1]:this._items[a]},l.prototype._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),o=this._getItemIndex(t(this._element).find(_.ACTIVE_ITEM)[0]),r=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:o,to:i});return t(this._element).trigger(r),r},l.prototype._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(_.ACTIVE).removeClass(f.ACTIVE);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(f.ACTIVE)}},l.prototype._slide=function(e,n){var i=this,o=t(this._element).find(_.ACTIVE_ITEM)[0],s=this._getItemIndex(o),a=n||o&&this._getItemByDirection(e,o),l=this._getItemIndex(a),c=Boolean(this._interval),h=void 0,p=void 0,g=void 0;if(e===u.NEXT?(h=f.LEFT,p=f.NEXT,g=u.LEFT):(h=f.RIGHT,p=f.PREV,g=u.RIGHT),a&&t(a).hasClass(f.ACTIVE))return void(this._isSliding=!1);if(!this._triggerSlideEvent(a,g).isDefaultPrevented()&&o&&a){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(a);var m=t.Event(d.SLID,{relatedTarget:a,direction:g,from:s,to:l});r.supportsTransitionEnd()&&t(this._element).hasClass(f.SLIDE)?(t(a).addClass(p),r.reflow(a),t(o).addClass(h),t(a).addClass(h),t(o).one(r.TRANSITION_END,function(){t(a).removeClass(h+" "+p).addClass(f.ACTIVE),t(o).removeClass(f.ACTIVE+" "+p+" "+h),i._isSliding=!1,setTimeout(function(){return t(i._element).trigger(m)},0)}).emulateTransitionEnd(600)):(t(o).removeClass(f.ACTIVE),t(a).addClass(f.ACTIVE),this._isSliding=!1,t(this._element).trigger(m)),c&&this.cycle()}},l._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(s),o=t.extend({},c,t(this).data());"object"===(void 0===e?"undefined":i(e))&&t.extend(o,e);var r="string"==typeof e?e:o.slide;if(n||(n=new l(this,o),t(this).data(s,n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if(void 0===n[r])throw new Error('No method named "'+r+'"');n[r]()}else o.interval&&(n.pause(),n.cycle())})},l._dataApiClickHandler=function(e){var n=r.getSelectorFromElement(this);if(n){var i=t(n)[0];if(i&&t(i).hasClass(f.CAROUSEL)){var o=t.extend({},t(i).data(),t(this).data()),a=this.getAttribute("data-slide-to");a&&(o.interval=!1),l._jQueryInterface.call(t(i),o),a&&t(i).data(s).to(a),e.preventDefault()}}},o(l,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return c}}]),l}();t(document).on(d.CLICK_DATA_API,_.DATA_SLIDE,p._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(_.DATA_RIDE).each(function(){var e=t(this);p._jQueryInterface.call(e,e.data())})}),t.fn[e]=p._jQueryInterface,t.fn[e].Constructor=p,t.fn[e].noConflict=function(){return t.fn[e]=l,p._jQueryInterface},p}(jQuery),function(t){var e="collapse",s="bs.collapse",a=t.fn[e],l={toggle:!0,parent:""},c={toggle:"boolean",parent:"string"},h={SHOW:"show."+s,SHOWN:"shown."+s,HIDE:"hide."+s,HIDDEN:"hidden."+s,CLICK_DATA_API:"click.bs.collapse.data-api"},u={SHOW:"show",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},d={WIDTH:"width",HEIGHT:"height"},f={ACTIVES:".card > .show, .card > .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]',DATA_CHILDREN:"data-children"},_=function(){function a(e,i){if(n(this,a),this._isTransitioning=!1,this._element=e,this._config=this._getConfig(i),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]')),this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._selectorActives=f.ACTIVES,this._parent){var o=this._parent.hasAttribute(f.DATA_CHILDREN)?this._parent.getAttribute(f.DATA_CHILDREN):null;null!==o&&(this._selectorActives=o+" > .show, "+o+" > .collapsing")}this._config.toggle&&this.toggle()}return a.prototype.toggle=function(){t(this._element).hasClass(u.SHOW)?this.hide():this.show()},a.prototype.show=function(){var e=this;if(!this._isTransitioning&&!t(this._element).hasClass(u.SHOW)){var n=void 0,i=void 0;if(this._parent&&(n=t.makeArray(t(this._parent).find(this._selectorActives)),n.length||(n=null)),!(n&&(i=t(n).data(s))&&i._isTransitioning)){var o=t.Event(h.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){n&&(a._jQueryInterface.call(t(n),"hide"),i||t(n).data(s,null));var l=this._getDimension();t(this._element).removeClass(u.COLLAPSE).addClass(u.COLLAPSING),this._element.style[l]=0,this._element.setAttribute("aria-expanded",!0),this._triggerArray.length&&t(this._triggerArray).removeClass(u.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var c=function(){t(e._element).removeClass(u.COLLAPSING).addClass(u.COLLAPSE).addClass(u.SHOW),e._element.style[l]="",e.setTransitioning(!1),t(e._element).trigger(h.SHOWN)};if(!r.supportsTransitionEnd())return void c();var d=l[0].toUpperCase()+l.slice(1),f="scroll"+d;t(this._element).one(r.TRANSITION_END,c).emulateTransitionEnd(600),this._element.style[l]=this._element[f]+"px"}}}},a.prototype.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(u.SHOW)){var n=t.Event(h.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",r.reflow(this._element),t(this._element).addClass(u.COLLAPSING).removeClass(u.COLLAPSE).removeClass(u.SHOW),this._element.setAttribute("aria-expanded",!1),this._triggerArray.length&&t(this._triggerArray).addClass(u.COLLAPSED).attr("aria-expanded",!1),this.setTransitioning(!0);var o=function(){e.setTransitioning(!1),t(e._element).removeClass(u.COLLAPSING).addClass(u.COLLAPSE).trigger(h.HIDDEN)};if(this._element.style[i]="",!r.supportsTransitionEnd())return void o();t(this._element).one(r.TRANSITION_END,o).emulateTransitionEnd(600)}}},a.prototype.setTransitioning=function(t){this._isTransitioning=t},a.prototype.dispose=function(){t.removeData(this._element,s),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},a.prototype._getConfig=function(n){return n=t.extend({},l,n),n.toggle=Boolean(n.toggle),r.typeCheckConfig(e,n,c),n},a.prototype._getDimension=function(){return t(this._element).hasClass(d.WIDTH)?d.WIDTH:d.HEIGHT},a.prototype._getParent=function(){var e=this,n=t(this._config.parent)[0],i='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return t(n).find(i).each(function(t,n){e._addAriaAndCollapsedClass(a._getTargetFromElement(n),[n])}),n},a.prototype._addAriaAndCollapsedClass=function(e,n){if(e){var i=t(e).hasClass(u.SHOW);e.setAttribute("aria-expanded",i),n.length&&t(n).toggleClass(u.COLLAPSED,!i).attr("aria-expanded",i)}},a._getTargetFromElement=function(e){var n=r.getSelectorFromElement(e);return n?t(n)[0]:null},a._jQueryInterface=function(e){return this.each(function(){var n=t(this),o=n.data(s),r=t.extend({},l,n.data(),"object"===(void 0===e?"undefined":i(e))&&e);if(!o&&r.toggle&&/show|hide/.test(e)&&(r.toggle=!1),o||(o=new a(this,r),n.data(s,o)),"string"==typeof e){if(void 0===o[e])throw new Error('No method named "'+e+'"');o[e]()}})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return l}}]),a}();t(document).on(h.CLICK_DATA_API,f.DATA_TOGGLE,function(e){/input|textarea/i.test(e.target.tagName)||e.preventDefault();var n=_._getTargetFromElement(this),i=t(n).data(s),o=i?"toggle":t(this).data();_._jQueryInterface.call(t(n),o)}),t.fn[e]=_._jQueryInterface,t.fn[e].Constructor=_,t.fn[e].noConflict=function(){return t.fn[e]=a,_._jQueryInterface},_}(jQuery),function(t){var e="dropdown",i=".bs.dropdown",s=t.fn[e],a=new RegExp("38|40|27|32"),l={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,CLICK:"click"+i,CLICK_DATA_API:"click.bs.dropdown.data-api",FOCUSIN_DATA_API:"focusin.bs.dropdown.data-api",KEYDOWN_DATA_API:"keydown.bs.dropdown.data-api"},c={BACKDROP:"dropdown-backdrop",DISABLED:"disabled",SHOW:"show"},h={BACKDROP:".dropdown-backdrop",DATA_TOGGLE:'[data-toggle="dropdown"]',FORM_CHILD:".dropdown form",ROLE_MENU:'[role="menu"]',ROLE_LISTBOX:'[role="listbox"]',NAVBAR_NAV:".navbar-nav",VISIBLE_ITEMS:'[role="menu"] li:not(.disabled) a, [role="listbox"] li:not(.disabled) a'},u=function(){function e(t){n(this,e),this._element=t,this._addEventListeners()}return e.prototype.toggle=function(){if(this.disabled||t(this).hasClass(c.DISABLED))return!1;var n=e._getParentFromElement(this),i=t(n).hasClass(c.SHOW);if(e._clearMenus(),i)return!1;var o={relatedTarget:this},r=t.Event(l.SHOW,o);if(t(n).trigger(r),r.isDefaultPrevented())return!1;if("ontouchstart"in document.documentElement&&!t(n).closest(h.NAVBAR_NAV).length){var s=document.createElement("div");s.className=c.BACKDROP,t(s).insertBefore(this),t(s).on("click",e._clearMenus)}return this.focus(),this.setAttribute("aria-expanded",!0),t(n).toggleClass(c.SHOW),t(n).trigger(t.Event(l.SHOWN,o)),!1},e.prototype.dispose=function(){t.removeData(this._element,"bs.dropdown"),t(this._element).off(i),this._element=null},e.prototype._addEventListeners=function(){t(this._element).on(l.CLICK,this.toggle)},e._jQueryInterface=function(n){return this.each(function(){var i=t(this).data("bs.dropdown");if(i||(i=new e(this),t(this).data("bs.dropdown",i)),"string"==typeof n){if(void 0===i[n])throw new Error('No method named "'+n+'"');i[n].call(this)}})},e._clearMenus=function(n){if(!n||3!==n.which)for(var i=t.makeArray(t(h.DATA_TOGGLE)),o=0;o<i.length;o++){var r=e._getParentFromElement(i[o]),s={relatedTarget:i[o]};if(t(r).hasClass(c.SHOW)&&!(n&&("click"===n.type&&/input|textarea/i.test(n.target.tagName)||"focusin"===n.type)&&t.contains(r,n.target))){var a=t.Event(l.HIDE,s);if(t(r).trigger(a),!a.isDefaultPrevented()){var u=t(r).find(h.BACKDROP)[0];u&&u.parentNode.removeChild(u),i[o].setAttribute("aria-expanded","false"),t(r).removeClass(c.SHOW).trigger(t.Event(l.HIDDEN,s))}}}},e._getParentFromElement=function(e){var n=void 0,i=r.getSelectorFromElement(e);return i&&(n=t(i)[0]),n||e.parentNode},e._dataApiKeydownHandler=function(n){if(a.test(n.which)&&!/input|textarea/i.test(n.target.tagName)&&(n.preventDefault(),n.stopPropagation(),!this.disabled&&!t(this).hasClass(c.DISABLED))){var i=e._getParentFromElement(this),o=t(i).hasClass(c.SHOW);if(!o&&27!==n.which||o&&27===n.which){if(27===n.which){t(t(i).find(h.DATA_TOGGLE)[0]).trigger("focus")}return void t(this).trigger("click")}var r=t(i).find(h.VISIBLE_ITEMS).get();if(r.length){var s=r.indexOf(n.target);38===n.which&&s>0&&s--,40===n.which&&s<r.length-1&&s++,s<0&&(s=0),r[s].focus()}}},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}}]),e}();t(document).on(l.KEYDOWN_DATA_API,h.DATA_TOGGLE,u._dataApiKeydownHandler).on(l.KEYDOWN_DATA_API,h.ROLE_MENU,u._dataApiKeydownHandler).on(l.KEYDOWN_DATA_API,h.ROLE_LISTBOX,u._dataApiKeydownHandler).on(l.CLICK_DATA_API+" "+l.FOCUSIN_DATA_API,u._clearMenus).on(l.CLICK_DATA_API,h.DATA_TOGGLE,u.prototype.toggle).on(l.CLICK_DATA_API,h.FORM_CHILD,function(t){t.stopPropagation()}),t.fn[e]=u._jQueryInterface,t.fn[e].Constructor=u,t.fn[e].noConflict=function(){return t.fn[e]=s,u._jQueryInterface},u}(jQuery),function(t){var e="modal",s=".bs.modal",a=t.fn[e],l={backdrop:!0,keyboard:!0,focus:!0,show:!0},c={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},h={HIDE:"hide.bs.modal",HIDDEN:"hidden.bs.modal",SHOW:"show.bs.modal",SHOWN:"shown.bs.modal",FOCUSIN:"focusin.bs.modal",RESIZE:"resize.bs.modal",CLICK_DISMISS:"click.dismiss.bs.modal",KEYDOWN_DISMISS:"keydown.dismiss.bs.modal",MOUSEUP_DISMISS:"mouseup.dismiss.bs.modal",MOUSEDOWN_DISMISS:"mousedown.dismiss.bs.modal",CLICK_DATA_API:"click.bs.modal.data-api"},u={SCROLLBAR_MEASURER:"modal-scrollbar-measure",BACKDROP:"modal-backdrop",OPEN:"modal-open",FADE:"fade",SHOW:"show"},d={DIALOG:".modal-dialog",DATA_TOGGLE:'[data-toggle="modal"]',DATA_DISMISS:'[data-dismiss="modal"]',FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"},f=function(){function a(e,i){n(this,a),this._config=this._getConfig(i),this._element=e,this._dialog=t(e).find(d.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._originalBodyPadding=0,this._scrollbarWidth=0}return a.prototype.toggle=function(t){return this._isShown?this.hide():this.show(t)},a.prototype.show=function(e){var n=this;if(!this._isTransitioning){r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE)&&(this._isTransitioning=!0);var i=t.Event(h.SHOW,{relatedTarget:e});t(this._element).trigger(i),this._isShown||i.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),t(document.body).addClass(u.OPEN),this._setEscapeEvent(),this._setResizeEvent(),t(this._element).on(h.CLICK_DISMISS,d.DATA_DISMISS,function(t){return n.hide(t)}),t(this._dialog).on(h.MOUSEDOWN_DISMISS,function(){t(n._element).one(h.MOUSEUP_DISMISS,function(e){t(e.target).is(n._element)&&(n._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return n._showElement(e)}))}},a.prototype.hide=function(e){var n=this;if(e&&e.preventDefault(),!this._isTransitioning&&this._isShown){var i=r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE);i&&(this._isTransitioning=!0);var o=t.Event(h.HIDE);t(this._element).trigger(o),this._isShown&&!o.isDefaultPrevented()&&(this._isShown=!1,this._setEscapeEvent(),this._setResizeEvent(),t(document).off(h.FOCUSIN),t(this._element).removeClass(u.SHOW),t(this._element).off(h.CLICK_DISMISS),t(this._dialog).off(h.MOUSEDOWN_DISMISS),i?t(this._element).one(r.TRANSITION_END,function(t){return n._hideModal(t)}).emulateTransitionEnd(300):this._hideModal())}},a.prototype.dispose=function(){t.removeData(this._element,"bs.modal"),t(window,document,this._element,this._backdrop).off(s),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._originalBodyPadding=null,this._scrollbarWidth=null},a.prototype.handleUpdate=function(){this._adjustDialog()},a.prototype._getConfig=function(n){return n=t.extend({},l,n),r.typeCheckConfig(e,n,c),n},a.prototype._showElement=function(e){var n=this,i=r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.scrollTop=0,i&&r.reflow(this._element),t(this._element).addClass(u.SHOW),this._config.focus&&this._enforceFocus();var o=t.Event(h.SHOWN,{relatedTarget:e}),s=function(){n._config.focus&&n._element.focus(),n._isTransitioning=!1,t(n._element).trigger(o)};i?t(this._dialog).one(r.TRANSITION_END,s).emulateTransitionEnd(300):s()},a.prototype._enforceFocus=function(){var e=this;t(document).off(h.FOCUSIN).on(h.FOCUSIN,function(n){document===n.target||e._element===n.target||t(e._element).has(n.target).length||e._element.focus()})},a.prototype._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?t(this._element).on(h.KEYDOWN_DISMISS,function(t){27===t.which&&e.hide()}):this._isShown||t(this._element).off(h.KEYDOWN_DISMISS)},a.prototype._setResizeEvent=function(){var e=this;this._isShown?t(window).on(h.RESIZE,function(t){return e.handleUpdate(t)}):t(window).off(h.RESIZE)},a.prototype._hideModal=function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._isTransitioning=!1,this._showBackdrop(function(){t(document.body).removeClass(u.OPEN),e._resetAdjustments(),e._resetScrollbar(),t(e._element).trigger(h.HIDDEN)})},a.prototype._removeBackdrop=function(){this._backdrop&&(t(this._backdrop).remove(),this._backdrop=null)},a.prototype._showBackdrop=function(e){var n=this,i=t(this._element).hasClass(u.FADE)?u.FADE:"";if(this._isShown&&this._config.backdrop){var o=r.supportsTransitionEnd()&&i;if(this._backdrop=document.createElement("div"),this._backdrop.className=u.BACKDROP,i&&t(this._backdrop).addClass(i),t(this._backdrop).appendTo(document.body),t(this._element).on(h.CLICK_DISMISS,function(t){if(n._ignoreBackdropClick)return void(n._ignoreBackdropClick=!1);t.target===t.currentTarget&&("static"===n._config.backdrop?n._element.focus():n.hide())}),o&&r.reflow(this._backdrop),t(this._backdrop).addClass(u.SHOW),!e)return;if(!o)return void e();t(this._backdrop).one(r.TRANSITION_END,e).emulateTransitionEnd(150)}else if(!this._isShown&&this._backdrop){t(this._backdrop).removeClass(u.SHOW);var s=function(){n._removeBackdrop(),e&&e()};r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE)?t(this._backdrop).one(r.TRANSITION_END,s).emulateTransitionEnd(150):s()}else e&&e()},a.prototype._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},a.prototype._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},a.prototype._checkScrollbar=function(){this._isBodyOverflowing=document.body.clientWidth<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},a.prototype._setScrollbar=function(){var e=parseInt(t(d.FIXED_CONTENT).css("padding-right")||0,10);this._originalBodyPadding=document.body.style.paddingRight||"",this._isBodyOverflowing&&(document.body.style.paddingRight=e+this._scrollbarWidth+"px")},a.prototype._resetScrollbar=function(){document.body.style.paddingRight=this._originalBodyPadding},a.prototype._getScrollbarWidth=function(){var t=document.createElement("div");t.className=u.SCROLLBAR_MEASURER,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},a._jQueryInterface=function(e,n){return this.each(function(){var o=t(this).data("bs.modal"),r=t.extend({},a.Default,t(this).data(),"object"===(void 0===e?"undefined":i(e))&&e);if(o||(o=new a(this,r),t(this).data("bs.modal",o)),"string"==typeof e){if(void 0===o[e])throw new Error('No method named "'+e+'"');o[e](n)}else r.show&&o.show(n)})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return l}}]),a}();t(document).on(h.CLICK_DATA_API,d.DATA_TOGGLE,function(e){var n=this,i=void 0,o=r.getSelectorFromElement(this);o&&(i=t(o)[0]);var s=t(i).data("bs.modal")?"toggle":t.extend({},t(i).data(),t(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||e.preventDefault();var a=t(i).one(h.SHOW,function(e){e.isDefaultPrevented()||a.one(h.HIDDEN,function(){t(n).is(":visible")&&n.focus()})});f._jQueryInterface.call(t(i),s,this)}),t.fn[e]=f._jQueryInterface,t.fn[e].Constructor=f,t.fn[e].noConflict=function(){return t.fn[e]=a,f._jQueryInterface},f}(jQuery),function(t){var e="scrollspy",s=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},c={ACTIVATE:"activate.bs.scrollspy",SCROLL:"scroll.bs.scrollspy",LOAD_DATA_API:"load.bs.scrollspy.data-api"},h={DROPDOWN_ITEM:"dropdown-item",DROPDOWN_MENU:"dropdown-menu",NAV_LINK:"nav-link",NAV:"nav",ACTIVE:"active"},u={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",LIST_ITEM:".list-item",LI:"li",LI_DROPDOWN:"li.dropdown",NAV_LINKS:".nav-link",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d={OFFSET:"offset",POSITION:"position"},f=function(){function s(e,i){var o=this;n(this,s),this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(i),this._selector=this._config.target+" "+u.NAV_LINKS+","+this._config.target+" "+u.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(c.SCROLL,function(t){return o._process(t)}),this.refresh(),this._process()}return s.prototype.refresh=function(){var e=this,n=this._scrollElement!==this._scrollElement.window?d.POSITION:d.OFFSET,i="auto"===this._config.method?n:this._config.method,o=i===d.POSITION?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n=void 0,s=r.getSelectorFromElement(e);if(s&&(n=t(s)[0]),n){var a=n.getBoundingClientRect();if(a.width||a.height)return[t(n)[i]().top+o,s]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},s.prototype.dispose=function(){t.removeData(this._element,"bs.scrollspy"),t(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},s.prototype._getConfig=function(n){if(n=t.extend({},a,n),"string"!=typeof n.target){var i=t(n.target).attr("id");i||(i=r.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return r.typeCheckConfig(e,n,l),n},s.prototype._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},s.prototype._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},s.prototype._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},s.prototype._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];return void(this._activeTarget!==i&&this._activate(i))}if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}},s.prototype._activate=function(e){this._activeTarget=e,this._clear();var n=this._selector.split(",");n=n.map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'});var i=t(n.join(","));i.hasClass(h.DROPDOWN_ITEM)?(i.closest(u.DROPDOWN).find(u.DROPDOWN_TOGGLE).addClass(h.ACTIVE), -i.addClass(h.ACTIVE)):i.parents(u.LI).find("> "+u.NAV_LINKS).addClass(h.ACTIVE),t(this._scrollElement).trigger(c.ACTIVATE,{relatedTarget:e})},s.prototype._clear=function(){t(this._selector).filter(u.ACTIVE).removeClass(h.ACTIVE)},s._jQueryInterface=function(e){return this.each(function(){var n=t(this).data("bs.scrollspy"),o="object"===(void 0===e?"undefined":i(e))&&e;if(n||(n=new s(this,o),t(this).data("bs.scrollspy",n)),"string"==typeof e){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(s,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return a}}]),s}();t(window).on(c.LOAD_DATA_API,function(){for(var e=t.makeArray(t(u.DATA_SPY)),n=e.length;n--;){var i=t(e[n]);f._jQueryInterface.call(i,i.data())}}),t.fn[e]=f._jQueryInterface,t.fn[e].Constructor=f,t.fn[e].noConflict=function(){return t.fn[e]=s,f._jQueryInterface},f}(jQuery),function(t){var e=t.fn.tab,i={HIDE:"hide.bs.tab",HIDDEN:"hidden.bs.tab",SHOW:"show.bs.tab",SHOWN:"shown.bs.tab",CLICK_DATA_API:"click.bs.tab.data-api"},s={DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active",DISABLED:"disabled",FADE:"fade",SHOW:"show"},a={A:"a",LI:"li",DROPDOWN:".dropdown",LIST:"ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu), .list-group:not(.dropdown-menu)",FADE_CHILD:"> .nav-item .fade, > .list-group-item .fade, > .fade",ACTIVE:".active",ACTIVE_CHILD:"> .nav-item > .active, > .list-group-item > .active, > .active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"]',DROPDOWN_TOGGLE:".dropdown-toggle",DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu .active"},l=function(){function e(t){n(this,e),this._element=t}return e.prototype.show=function(){var e=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&t(this._element).hasClass(s.ACTIVE)||t(this._element).hasClass(s.DISABLED))){var n=void 0,o=void 0,l=t(this._element).closest(a.LIST)[0],c=r.getSelectorFromElement(this._element);l&&(o=t.makeArray(t(l).find(a.ACTIVE)),o=o[o.length-1]);var h=t.Event(i.HIDE,{relatedTarget:this._element}),u=t.Event(i.SHOW,{relatedTarget:o});if(o&&t(o).trigger(h),t(this._element).trigger(u),!u.isDefaultPrevented()&&!h.isDefaultPrevented()){c&&(n=t(c)[0]),this._activate(this._element,l);var d=function(){var n=t.Event(i.HIDDEN,{relatedTarget:e._element}),r=t.Event(i.SHOWN,{relatedTarget:o});t(o).trigger(n),t(e._element).trigger(r)};n?this._activate(n,n.parentNode,d):d()}}},e.prototype.dispose=function(){t.removeClass(this._element,"bs.tab"),this._element=null},e.prototype._activate=function(e,n,i){var o=this,l=t(n).find(a.ACTIVE_CHILD)[0],c=i&&r.supportsTransitionEnd()&&(l&&t(l).hasClass(s.FADE)||Boolean(t(n).find(a.FADE_CHILD)[0])),h=function(){return o._transitionComplete(e,l,c,i)};l&&c?t(l).one(r.TRANSITION_END,h).emulateTransitionEnd(150):h(),l&&t(l).removeClass(s.SHOW)},e.prototype._transitionComplete=function(e,n,i,o){if(n){t(n).removeClass(s.ACTIVE),t(n).hasClass("list-group-item")&&t(n).find("a.nav-link").removeClass(s.ACTIVE);var l=t(n.parentNode).find(a.DROPDOWN_ACTIVE_CHILD)[0];l&&t(l).removeClass(s.ACTIVE),n.setAttribute("aria-expanded",!1)}if(t(e).addClass(s.ACTIVE),t(e.parentNode).hasClass("list-group-item")&&t(e.parentNode).addClass(s.ACTIVE),e.setAttribute("aria-expanded",!0),i?(r.reflow(e),t(e).addClass(s.SHOW)):t(e).removeClass(s.FADE),e.parentNode&&t(e.parentNode).hasClass(s.DROPDOWN_MENU)){var c=t(e).closest(a.DROPDOWN)[0];c&&t(c).find(a.DROPDOWN_TOGGLE).addClass(s.ACTIVE),e.setAttribute("aria-expanded",!0)}o&&o()},e._jQueryInterface=function(n){return this.each(function(){var i=t(this),o=i.data("bs.tab");if(o||(o=new e(this),i.data("bs.tab",o)),"string"==typeof n){if(void 0===o[n])throw new Error('No method named "'+n+'"');o[n]()}})},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}}]),e}();t(document).on(i.CLICK_DATA_API,a.DATA_TOGGLE,function(e){e.preventDefault(),l._jQueryInterface.call(t(this),"show")}),t.fn.tab=l._jQueryInterface,t.fn.tab.Constructor=l,t.fn.tab.noConflict=function(){return t.fn.tab=e,l._jQueryInterface},l}(jQuery),function(t){if("undefined"==typeof Tether)throw new Error("Bootstrap tooltips require Tether (http://tether.io/)");var e="tooltip",s=".bs.tooltip",a=t.fn[e],l=new RegExp("(^|\\s)bs-tether\\S+","g"),c={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:"0 0",constraints:[],container:!1},h={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"string",constraints:"array",container:"(string|element|boolean)"},u={TOP:"bottom center",RIGHT:"middle left",BOTTOM:"top center",LEFT:"middle right"},d={SHOW:"show",OUT:"out"},f={HIDE:"hide"+s,HIDDEN:"hidden"+s,SHOW:"show"+s,SHOWN:"shown"+s,INSERTED:"inserted"+s,CLICK:"click"+s,FOCUSIN:"focusin"+s,FOCUSOUT:"focusout"+s,MOUSEENTER:"mouseenter"+s,MOUSELEAVE:"mouseleave"+s},_={FADE:"fade",SHOW:"show"},p={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner"},g={element:!1,enabled:!1},m={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},E=function(){function a(t,e){n(this,a),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._tether=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}return a.prototype.enable=function(){this._isEnabled=!0},a.prototype.disable=function(){this._isEnabled=!1},a.prototype.toggleEnabled=function(){this._isEnabled=!this._isEnabled},a.prototype.toggle=function(e){if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(_.SHOW))return void this._leave(null,this);this._enter(null,this)}},a.prototype.dispose=function(){clearTimeout(this._timeout),this.cleanupTether(),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._tether=null,this.element=null,this.config=null,this.tip=null},a.prototype.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var n=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(n);var i=t.contains(this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!i)return;var o=this.getTipElement(),s=r.getUID(this.constructor.NAME);o.setAttribute("id",s),this.element.setAttribute("aria-describedby",s),this.setContent(),this.config.animation&&t(o).addClass(_.FADE);var l="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,c=this._getAttachment(l),h=this.config.container===!1?document.body:t(this.config.container);t(o).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(o).appendTo(h),t(this.element).trigger(this.constructor.Event.INSERTED),this._tether=new Tether({attachment:c,element:o,target:this.element,classes:g,classPrefix:"bs-tether",offset:this.config.offset,constraints:this.config.constraints,addTargetClasses:!1}),r.reflow(o),this._tether.position(),t(o).addClass(_.SHOW);var u=function(){var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d.OUT&&e._leave(null,e)};if(r.supportsTransitionEnd()&&t(this.tip).hasClass(_.FADE))return void t(this.tip).one(r.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION);u()}},a.prototype.hide=function(e){var n=this,i=this.getTipElement(),o=t.Event(this.constructor.Event.HIDE),s=function(){n._hoverState!==d.SHOW&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),n.cleanupTether(),e&&e()};t(this.element).trigger(o),o.isDefaultPrevented()||(t(i).removeClass(_.SHOW),this._activeTrigger[m.CLICK]=!1,this._activeTrigger[m.FOCUS]=!1,this._activeTrigger[m.HOVER]=!1,r.supportsTransitionEnd()&&t(this.tip).hasClass(_.FADE)?t(i).one(r.TRANSITION_END,s).emulateTransitionEnd(150):s(),this._hoverState="")},a.prototype.isWithContent=function(){return Boolean(this.getTitle())},a.prototype.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0]},a.prototype.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(p.TOOLTIP_INNER),this.getTitle()),e.removeClass(_.FADE+" "+_.SHOW),this.cleanupTether()},a.prototype.setElementContent=function(e,n){var o=this.config.html;"object"===(void 0===n?"undefined":i(n))&&(n.nodeType||n.jquery)?o?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[o?"html":"text"](n)},a.prototype.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},a.prototype.cleanupTether=function(){this._tether&&this._tether.destroy()},a.prototype._getAttachment=function(t){return u[t.toUpperCase()]},a.prototype._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},a.prototype._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==m.MANUAL){var i=n===m.HOVER?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,o=n===m.HOVER?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(o,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=t.extend({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},a.prototype._fixTitle=function(){var t=i(this.element.getAttribute("data-original-title"));(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},a.prototype._enter=function(e,n){var i=this.constructor.DATA_KEY;return n=n||t(e.currentTarget).data(i),n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?m.FOCUS:m.HOVER]=!0),t(n.getTipElement()).hasClass(_.SHOW)||n._hoverState===d.SHOW?void(n._hoverState=d.SHOW):(clearTimeout(n._timeout),n._hoverState=d.SHOW,n.config.delay&&n.config.delay.show?void(n._timeout=setTimeout(function(){n._hoverState===d.SHOW&&n.show()},n.config.delay.show)):void n.show())},a.prototype._leave=function(e,n){var i=this.constructor.DATA_KEY;if(n=n||t(e.currentTarget).data(i),n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?m.FOCUS:m.HOVER]=!1),!n._isWithActiveTrigger()){if(clearTimeout(n._timeout),n._hoverState=d.OUT,!n.config.delay||!n.config.delay.hide)return void n.hide();n._timeout=setTimeout(function(){n._hoverState===d.OUT&&n.hide()},n.config.delay.hide)}},a.prototype._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},a.prototype._getConfig=function(n){return n=t.extend({},this.constructor.Default,t(this.element).data(),n),n.delay&&"number"==typeof n.delay&&(n.delay={show:n.delay,hide:n.delay}),n.title&&"number"==typeof n.title&&(n.title=n.title.toString()),n.content&&"number"==typeof n.content&&(n.content=n.content.toString()),r.typeCheckConfig(e,n,this.constructor.DefaultType),n},a.prototype._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data("bs.tooltip"),o="object"===(void 0===e?"undefined":i(e))&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,o),t(this).data("bs.tooltip",n)),"string"==typeof e)){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return c}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return f}},{key:"EVENT_KEY",get:function(){return s}},{key:"DefaultType",get:function(){return h}}]),a}();return t.fn[e]=E._jQueryInterface,t.fn[e].Constructor=E,t.fn[e].noConflict=function(){return t.fn[e]=a,E._jQueryInterface},E}(jQuery));!function(r){var a="popover",l=".bs.popover",c=r.fn[a],h=r.extend({},s.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),u=r.extend({},s.DefaultType,{content:"(string|element|function)"}),d={FADE:"fade",SHOW:"show"},f={TITLE:".popover-title",CONTENT:".popover-content"},_={HIDE:"hide"+l,HIDDEN:"hidden"+l,SHOW:"show"+l,SHOWN:"shown"+l,INSERTED:"inserted"+l,CLICK:"click"+l,FOCUSIN:"focusin"+l,FOCUSOUT:"focusout"+l,MOUSEENTER:"mouseenter"+l,MOUSELEAVE:"mouseleave"+l},p=function(s){function c(){return n(this,c),t(this,s.apply(this,arguments))}return e(c,s),c.prototype.isWithContent=function(){return this.getTitle()||this._getContent()},c.prototype.getTipElement=function(){return this.tip=this.tip||r(this.config.template)[0]},c.prototype.setContent=function(){var t=r(this.getTipElement());this.setElementContent(t.find(f.TITLE),this.getTitle()),this.setElementContent(t.find(f.CONTENT),this._getContent()),t.removeClass(d.FADE+" "+d.SHOW),this.cleanupTether()},c.prototype._getContent=function(){return this.element.getAttribute("data-content")||("function"==typeof this.config.content?this.config.content.call(this.element):this.config.content)},c._jQueryInterface=function(t){return this.each(function(){var e=r(this).data("bs.popover"),n="object"===(void 0===t?"undefined":i(t))?t:null;if((e||!/destroy|hide/.test(t))&&(e||(e=new c(this,n),r(this).data("bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new Error('No method named "'+t+'"');e[t]()}})},o(c,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return h}},{key:"NAME",get:function(){return a}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return l}},{key:"DefaultType",get:function(){return u}}]),c}(s);r.fn[a]=p._jQueryInterface,r.fn[a].Constructor=p,r.fn[a].noConflict=function(){return r.fn[a]=c,p._jQueryInterface},p}(jQuery)}();
\ No newline at end of file +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");+function(t){var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(jQuery),function(){function t(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function e(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),r=function(t){function e(t){return{}.toString.call(t).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}function n(t){return(t[0]||t).nodeType}function i(){return{bindType:s.end,delegateType:s.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}}function o(){if(window.QUnit)return!1;var t=document.createElement("bootstrap");for(var e in a)if(void 0!==t.style[e])return{end:a[e]};return!1}function r(e){var n=this,i=!1;return t(this).one(l.TRANSITION_END,function(){i=!0}),setTimeout(function(){i||l.triggerTransitionEnd(n)},e),this}var s=!1,a={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},l={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(e){var n=e.getAttribute("data-target");n&&"#"!==n||(n=e.getAttribute("href")||"");try{return t(n).length>0?n:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(e){t(e).trigger(s.end)},supportsTransitionEnd:function(){return Boolean(s)},typeCheckConfig:function(t,i,o){for(var r in o)if(o.hasOwnProperty(r)){var s=o[r],a=i[r],l=a&&n(a)?"element":e(a);if(!new RegExp(s).test(l))throw new Error(t.toUpperCase()+': Option "'+r+'" provided type "'+l+'" but expected type "'+s+'".')}}};return function(){s=o(),t.fn.emulateTransitionEnd=r,l.supportsTransitionEnd()&&(t.event.special[l.TRANSITION_END]=i())}(),l}(jQuery),s=(function(t){var e="alert",i=t.fn[e],s={DISMISS:'[data-dismiss="alert"]'},a={CLOSE:"close.bs.alert",CLOSED:"closed.bs.alert",CLICK_DATA_API:"click.bs.alert.data-api"},l={ALERT:"alert",FADE:"fade",SHOW:"show"},h=function(){function e(t){n(this,e),this._element=t}return e.prototype.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.prototype.dispose=function(){t.removeData(this._element,"bs.alert"),this._element=null},e.prototype._getRootElement=function(e){var n=r.getSelectorFromElement(e),i=!1;return n&&(i=t(n)[0]),i||(i=t(e).closest("."+l.ALERT)[0]),i},e.prototype._triggerCloseEvent=function(e){var n=t.Event(a.CLOSE);return t(e).trigger(n),n},e.prototype._removeElement=function(e){var n=this;if(t(e).removeClass(l.SHOW),!r.supportsTransitionEnd()||!t(e).hasClass(l.FADE))return void this._destroyElement(e);t(e).one(r.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(150)},e.prototype._destroyElement=function(e){t(e).detach().trigger(a.CLOSED).remove()},e._jQueryInterface=function(n){return this.each(function(){var i=t(this),o=i.data("bs.alert");o||(o=new e(this),i.data("bs.alert",o)),"close"===n&&o[n](this)})},e._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}}]),e}();t(document).on(a.CLICK_DATA_API,s.DISMISS,h._handleDismiss(new h)),t.fn[e]=h._jQueryInterface,t.fn[e].Constructor=h,t.fn[e].noConflict=function(){return t.fn[e]=i,h._jQueryInterface},h}(jQuery),function(t){var e="button",i=t.fn[e],r={ACTIVE:"active",BUTTON:"btn",FOCUS:"focus"},s={DATA_TOGGLE_CARROT:'[data-toggle^="button"]',DATA_TOGGLE:'[data-toggle="buttons"]',INPUT:"input",ACTIVE:".active",BUTTON:".btn"},a={CLICK_DATA_API:"click.bs.button.data-api",FOCUS_BLUR_DATA_API:"focus.bs.button.data-api blur.bs.button.data-api"},l=function(){function e(t){n(this,e),this._element=t}return e.prototype.toggle=function(){var e=!0,n=t(this._element).closest(s.DATA_TOGGLE)[0];if(n){var i=t(this._element).find(s.INPUT)[0];if(i){if("radio"===i.type)if(i.checked&&t(this._element).hasClass(r.ACTIVE))e=!1;else{var o=t(n).find(s.ACTIVE)[0];o&&t(o).removeClass(r.ACTIVE)}e&&(i.checked=!t(this._element).hasClass(r.ACTIVE),t(i).trigger("change")),i.focus()}}this._element.setAttribute("aria-pressed",!t(this._element).hasClass(r.ACTIVE)),e&&t(this._element).toggleClass(r.ACTIVE)},e.prototype.dispose=function(){t.removeData(this._element,"bs.button"),this._element=null},e._jQueryInterface=function(n){return this.each(function(){var i=t(this).data("bs.button");i||(i=new e(this),t(this).data("bs.button",i)),"toggle"===n&&i[n]()})},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}}]),e}();t(document).on(a.CLICK_DATA_API,s.DATA_TOGGLE_CARROT,function(e){e.preventDefault();var n=e.target;t(n).hasClass(r.BUTTON)||(n=t(n).closest(s.BUTTON)),l._jQueryInterface.call(t(n),"toggle")}).on(a.FOCUS_BLUR_DATA_API,s.DATA_TOGGLE_CARROT,function(e){t(t(e.target).closest(s.BUTTON)[0]).toggleClass(r.FOCUS,/^focus(in)?$/.test(e.type))}),t.fn[e]=l._jQueryInterface,t.fn[e].Constructor=l,t.fn[e].noConflict=function(){return t.fn[e]=i,l._jQueryInterface},l}(jQuery),function(t){var e="carousel",s="bs.carousel",a="."+s,l=t.fn[e],h={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},c={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},u={NEXT:"next",PREV:"prev",LEFT:"left",RIGHT:"right"},d={SLIDE:"slide"+a,SLID:"slid"+a,KEYDOWN:"keydown"+a,MOUSEENTER:"mouseenter"+a,MOUSELEAVE:"mouseleave"+a,LOAD_DATA_API:"load.bs.carousel.data-api",CLICK_DATA_API:"click.bs.carousel.data-api"},f={CAROUSEL:"carousel",ACTIVE:"active",SLIDE:"slide",RIGHT:"carousel-item-right",LEFT:"carousel-item-left",NEXT:"carousel-item-next",PREV:"carousel-item-prev",ITEM:"carousel-item"},_={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},g=function(){function l(e,i){n(this,l),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this._config=this._getConfig(i),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(_.INDICATORS)[0],this._addEventListeners()}return l.prototype.next=function(){this._isSliding||this._slide(u.NEXT)},l.prototype.nextWhenVisible=function(){document.hidden||this.next()},l.prototype.prev=function(){this._isSliding||this._slide(u.PREV)},l.prototype.pause=function(e){e||(this._isPaused=!0),t(this._element).find(_.NEXT_PREV)[0]&&r.supportsTransitionEnd()&&(r.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},l.prototype.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},l.prototype.to=function(e){var n=this;this._activeElement=t(this._element).find(_.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0)){if(this._isSliding)return void t(this._element).one(d.SLID,function(){return n.to(e)});if(i===e)return this.pause(),void this.cycle();var o=e>i?u.NEXT:u.PREV;this._slide(o,this._items[e])}},l.prototype.dispose=function(){t(this._element).off(a),t.removeData(this._element,s),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},l.prototype._getConfig=function(n){return n=t.extend({},h,n),r.typeCheckConfig(e,n,c),n},l.prototype._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"!==this._config.pause||"ontouchstart"in document.documentElement||t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)})},l.prototype._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next();break;default:return}},l.prototype._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(_.ITEM)),this._items.indexOf(e)},l.prototype._getItemByDirection=function(t,e){var n=t===u.NEXT,i=t===u.PREV,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=t===u.PREV?-1:1,a=(o+s)%this._items.length;return a===-1?this._items[this._items.length-1]:this._items[a]},l.prototype._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),o=this._getItemIndex(t(this._element).find(_.ACTIVE_ITEM)[0]),r=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:o,to:i});return t(this._element).trigger(r),r},l.prototype._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(_.ACTIVE).removeClass(f.ACTIVE);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(f.ACTIVE)}},l.prototype._slide=function(e,n){var i=this,o=t(this._element).find(_.ACTIVE_ITEM)[0],s=this._getItemIndex(o),a=n||o&&this._getItemByDirection(e,o),l=this._getItemIndex(a),h=Boolean(this._interval),c=void 0,g=void 0,p=void 0;if(e===u.NEXT?(c=f.LEFT,g=f.NEXT,p=u.LEFT):(c=f.RIGHT,g=f.PREV,p=u.RIGHT),a&&t(a).hasClass(f.ACTIVE))return void(this._isSliding=!1);if(!this._triggerSlideEvent(a,p).isDefaultPrevented()&&o&&a){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(a);var m=t.Event(d.SLID,{relatedTarget:a,direction:p,from:s,to:l});r.supportsTransitionEnd()&&t(this._element).hasClass(f.SLIDE)?(t(a).addClass(g),r.reflow(a),t(o).addClass(c),t(a).addClass(c),t(o).one(r.TRANSITION_END,function(){t(a).removeClass(c+" "+g).addClass(f.ACTIVE),t(o).removeClass(f.ACTIVE+" "+g+" "+c),i._isSliding=!1,setTimeout(function(){return t(i._element).trigger(m)},0)}).emulateTransitionEnd(600)):(t(o).removeClass(f.ACTIVE),t(a).addClass(f.ACTIVE),this._isSliding=!1,t(this._element).trigger(m)),h&&this.cycle()}},l._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(s),o=t.extend({},h,t(this).data());"object"===(void 0===e?"undefined":i(e))&&t.extend(o,e);var r="string"==typeof e?e:o.slide;if(n||(n=new l(this,o),t(this).data(s,n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if(void 0===n[r])throw new Error('No method named "'+r+'"');n[r]()}else o.interval&&(n.pause(),n.cycle())})},l._dataApiClickHandler=function(e){var n=r.getSelectorFromElement(this);if(n){var i=t(n)[0];if(i&&t(i).hasClass(f.CAROUSEL)){var o=t.extend({},t(i).data(),t(this).data()),a=this.getAttribute("data-slide-to");a&&(o.interval=!1),l._jQueryInterface.call(t(i),o),a&&t(i).data(s).to(a),e.preventDefault()}}},o(l,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return h}}]),l}();t(document).on(d.CLICK_DATA_API,_.DATA_SLIDE,g._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(_.DATA_RIDE).each(function(){var e=t(this);g._jQueryInterface.call(e,e.data())})}),t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=l,g._jQueryInterface},g}(jQuery),function(t){var e="collapse",s="bs.collapse",a=t.fn[e],l={toggle:!0,parent:""},h={toggle:"boolean",parent:"string"},c={SHOW:"show."+s,SHOWN:"shown."+s,HIDE:"hide."+s,HIDDEN:"hidden."+s,CLICK_DATA_API:"click.bs.collapse.data-api"},u={SHOW:"show",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},d={WIDTH:"width",HEIGHT:"height"},f={ACTIVES:".card > .show, .card > .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]',DATA_CHILDREN:"data-children"},_=function(){function a(e,i){if(n(this,a),this._isTransitioning=!1,this._element=e,this._config=this._getConfig(i),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]')),this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._selectorActives=f.ACTIVES,this._parent){var o=this._parent.hasAttribute(f.DATA_CHILDREN)?this._parent.getAttribute(f.DATA_CHILDREN):null;null!==o&&(this._selectorActives=o+" > .show, "+o+" > .collapsing")}this._config.toggle&&this.toggle()}return a.prototype.toggle=function(){t(this._element).hasClass(u.SHOW)?this.hide():this.show()},a.prototype.show=function(){var e=this;if(!this._isTransitioning&&!t(this._element).hasClass(u.SHOW)){var n=void 0,i=void 0;if(this._parent&&(n=t.makeArray(t(this._parent).find(this._selectorActives)),n.length||(n=null)),!(n&&(i=t(n).data(s))&&i._isTransitioning)){var o=t.Event(c.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){n&&(a._jQueryInterface.call(t(n),"hide"),i||t(n).data(s,null));var l=this._getDimension();t(this._element).removeClass(u.COLLAPSE).addClass(u.COLLAPSING),this._element.style[l]=0,this._element.setAttribute("aria-expanded",!0),this._triggerArray.length&&t(this._triggerArray).removeClass(u.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var h=function(){t(e._element).removeClass(u.COLLAPSING).addClass(u.COLLAPSE).addClass(u.SHOW),e._element.style[l]="",e.setTransitioning(!1),t(e._element).trigger(c.SHOWN)};if(!r.supportsTransitionEnd())return void h();var d=l[0].toUpperCase()+l.slice(1),f="scroll"+d;t(this._element).one(r.TRANSITION_END,h).emulateTransitionEnd(600),this._element.style[l]=this._element[f]+"px"}}}},a.prototype.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(u.SHOW)){var n=t.Event(c.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",r.reflow(this._element),t(this._element).addClass(u.COLLAPSING).removeClass(u.COLLAPSE).removeClass(u.SHOW),this._element.setAttribute("aria-expanded",!1),this._triggerArray.length&&t(this._triggerArray).addClass(u.COLLAPSED).attr("aria-expanded",!1),this.setTransitioning(!0);var o=function(){e.setTransitioning(!1),t(e._element).removeClass(u.COLLAPSING).addClass(u.COLLAPSE).trigger(c.HIDDEN)};if(this._element.style[i]="",!r.supportsTransitionEnd())return void o();t(this._element).one(r.TRANSITION_END,o).emulateTransitionEnd(600)}}},a.prototype.setTransitioning=function(t){this._isTransitioning=t},a.prototype.dispose=function(){t.removeData(this._element,s),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},a.prototype._getConfig=function(n){return n=t.extend({},l,n),n.toggle=Boolean(n.toggle),r.typeCheckConfig(e,n,h),n},a.prototype._getDimension=function(){return t(this._element).hasClass(d.WIDTH)?d.WIDTH:d.HEIGHT},a.prototype._getParent=function(){var e=this,n=t(this._config.parent)[0],i='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return t(n).find(i).each(function(t,n){e._addAriaAndCollapsedClass(a._getTargetFromElement(n),[n])}),n},a.prototype._addAriaAndCollapsedClass=function(e,n){if(e){var i=t(e).hasClass(u.SHOW);e.setAttribute("aria-expanded",i),n.length&&t(n).toggleClass(u.COLLAPSED,!i).attr("aria-expanded",i)}},a._getTargetFromElement=function(e){var n=r.getSelectorFromElement(e);return n?t(n)[0]:null},a._jQueryInterface=function(e){return this.each(function(){var n=t(this),o=n.data(s),r=t.extend({},l,n.data(),"object"===(void 0===e?"undefined":i(e))&&e);if(!o&&r.toggle&&/show|hide/.test(e)&&(r.toggle=!1),o||(o=new a(this,r),n.data(s,o)),"string"==typeof e){if(void 0===o[e])throw new Error('No method named "'+e+'"');o[e]()}})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return l}}]),a}();t(document).on(c.CLICK_DATA_API,f.DATA_TOGGLE,function(e){/input|textarea/i.test(e.target.tagName)||e.preventDefault();var n=_._getTargetFromElement(this),i=t(n).data(s),o=i?"toggle":t(this).data();_._jQueryInterface.call(t(n),o)}),t.fn[e]=_._jQueryInterface,t.fn[e].Constructor=_,t.fn[e].noConflict=function(){return t.fn[e]=a,_._jQueryInterface},_}(jQuery),function(t){var e="dropdown",i=".bs.dropdown",s=t.fn[e],a=new RegExp("38|40|27|32"),l={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,CLICK:"click"+i,CLICK_DATA_API:"click.bs.dropdown.data-api",FOCUSIN_DATA_API:"focusin.bs.dropdown.data-api",KEYDOWN_DATA_API:"keydown.bs.dropdown.data-api"},h={BACKDROP:"dropdown-backdrop",DISABLED:"disabled",SHOW:"show"},c={BACKDROP:".dropdown-backdrop",DATA_TOGGLE:'[data-toggle="dropdown"]',FORM_CHILD:".dropdown form",ROLE_MENU:'[role="menu"]',ROLE_LISTBOX:'[role="listbox"]',NAVBAR_NAV:".navbar-nav",VISIBLE_ITEMS:'[role="menu"] li:not(.disabled) a, [role="listbox"] li:not(.disabled) a'},u=function(){function e(t){n(this,e),this._element=t,this._addEventListeners()}return e.prototype.toggle=function(){if(this.disabled||t(this).hasClass(h.DISABLED))return!1;var n=e._getParentFromElement(this),i=t(n).hasClass(h.SHOW);if(e._clearMenus(),i)return!1;var o={relatedTarget:this},r=t.Event(l.SHOW,o);if(t(n).trigger(r),r.isDefaultPrevented())return!1;if("ontouchstart"in document.documentElement&&!t(n).closest(c.NAVBAR_NAV).length){var s=document.createElement("div");s.className=h.BACKDROP,t(s).insertBefore(this),t(s).on("click",e._clearMenus)}return this.focus(),this.setAttribute("aria-expanded",!0),t(n).toggleClass(h.SHOW),t(n).trigger(t.Event(l.SHOWN,o)),!1},e.prototype.dispose=function(){t.removeData(this._element,"bs.dropdown"),t(this._element).off(i),this._element=null},e.prototype._addEventListeners=function(){t(this._element).on(l.CLICK,this.toggle)},e._jQueryInterface=function(n){return this.each(function(){var i=t(this).data("bs.dropdown");if(i||(i=new e(this),t(this).data("bs.dropdown",i)),"string"==typeof n){if(void 0===i[n])throw new Error('No method named "'+n+'"');i[n].call(this)}})},e._clearMenus=function(n){if(!n||3!==n.which)for(var i=t.makeArray(t(c.DATA_TOGGLE)),o=0;o<i.length;o++){var r=e._getParentFromElement(i[o]),s={relatedTarget:i[o]};if(t(r).hasClass(h.SHOW)&&!(n&&("click"===n.type&&/input|textarea/i.test(n.target.tagName)||"focusin"===n.type)&&t.contains(r,n.target))){var a=t.Event(l.HIDE,s);if(t(r).trigger(a),!a.isDefaultPrevented()){var u=t(r).find(c.BACKDROP)[0];u&&u.parentNode.removeChild(u),i[o].setAttribute("aria-expanded","false"),t(r).removeClass(h.SHOW).trigger(t.Event(l.HIDDEN,s))}}}},e._getParentFromElement=function(e){var n=void 0,i=r.getSelectorFromElement(e);return i&&(n=t(i)[0]),n||e.parentNode},e._dataApiKeydownHandler=function(n){if(a.test(n.which)&&!/input|textarea/i.test(n.target.tagName)&&(n.preventDefault(),n.stopPropagation(),!this.disabled&&!t(this).hasClass(h.DISABLED))){var i=e._getParentFromElement(this),o=t(i).hasClass(h.SHOW);if(!o&&27!==n.which||o&&27===n.which){if(27===n.which){t(t(i).find(c.DATA_TOGGLE)[0]).trigger("focus")}return void t(this).trigger("click")}var r=t(i).find(c.VISIBLE_ITEMS).get();if(r.length){var s=r.indexOf(n.target);38===n.which&&s>0&&s--,40===n.which&&s<r.length-1&&s++,s<0&&(s=0),r[s].focus()}}},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}}]),e}();t(document).on(l.KEYDOWN_DATA_API,c.DATA_TOGGLE,u._dataApiKeydownHandler).on(l.KEYDOWN_DATA_API,c.ROLE_MENU,u._dataApiKeydownHandler).on(l.KEYDOWN_DATA_API,c.ROLE_LISTBOX,u._dataApiKeydownHandler).on(l.CLICK_DATA_API+" "+l.FOCUSIN_DATA_API,u._clearMenus).on(l.CLICK_DATA_API,c.DATA_TOGGLE,u.prototype.toggle).on(l.CLICK_DATA_API,c.FORM_CHILD,function(t){t.stopPropagation()}),t.fn[e]=u._jQueryInterface,t.fn[e].Constructor=u,t.fn[e].noConflict=function(){return t.fn[e]=s,u._jQueryInterface},u}(jQuery),function(t){var e="modal",s=".bs.modal",a=t.fn[e],l={backdrop:!0,keyboard:!0,focus:!0,show:!0},h={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},c={HIDE:"hide.bs.modal",HIDDEN:"hidden.bs.modal",SHOW:"show.bs.modal",SHOWN:"shown.bs.modal",FOCUSIN:"focusin.bs.modal",RESIZE:"resize.bs.modal",CLICK_DISMISS:"click.dismiss.bs.modal",KEYDOWN_DISMISS:"keydown.dismiss.bs.modal",MOUSEUP_DISMISS:"mouseup.dismiss.bs.modal",MOUSEDOWN_DISMISS:"mousedown.dismiss.bs.modal",CLICK_DATA_API:"click.bs.modal.data-api"},u={SCROLLBAR_MEASURER:"modal-scrollbar-measure",BACKDROP:"modal-backdrop",OPEN:"modal-open",FADE:"fade",SHOW:"show"},d={DIALOG:".modal-dialog",DATA_TOGGLE:'[data-toggle="modal"]',DATA_DISMISS:'[data-dismiss="modal"]',FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",NAVBAR_TOGGLER:".navbar-toggler"},f=function(){function a(e,i){n(this,a),this._config=this._getConfig(i),this._element=e,this._dialog=t(e).find(d.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._originalBodyPadding=0,this._scrollbarWidth=0}return a.prototype.toggle=function(t){return this._isShown?this.hide():this.show(t)},a.prototype.show=function(e){var n=this;if(!this._isTransitioning){r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE)&&(this._isTransitioning=!0);var i=t.Event(c.SHOW,{relatedTarget:e});t(this._element).trigger(i),this._isShown||i.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),t(document.body).addClass(u.OPEN),this._setEscapeEvent(),this._setResizeEvent(),t(this._element).on(c.CLICK_DISMISS,d.DATA_DISMISS,function(t){return n.hide(t)}),t(this._dialog).on(c.MOUSEDOWN_DISMISS,function(){t(n._element).one(c.MOUSEUP_DISMISS,function(e){t(e.target).is(n._element)&&(n._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return n._showElement(e)}))}},a.prototype.hide=function(e){var n=this;if(e&&e.preventDefault(),!this._isTransitioning&&this._isShown){var i=r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE);i&&(this._isTransitioning=!0);var o=t.Event(c.HIDE);t(this._element).trigger(o),this._isShown&&!o.isDefaultPrevented()&&(this._isShown=!1,this._setEscapeEvent(),this._setResizeEvent(),t(document).off(c.FOCUSIN),t(this._element).removeClass(u.SHOW),t(this._element).off(c.CLICK_DISMISS),t(this._dialog).off(c.MOUSEDOWN_DISMISS),i?t(this._element).one(r.TRANSITION_END,function(t){return n._hideModal(t)}).emulateTransitionEnd(300):this._hideModal())}},a.prototype.dispose=function(){t.removeData(this._element,"bs.modal"),t(window,document,this._element,this._backdrop).off(s),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._scrollbarWidth=null},a.prototype.handleUpdate=function(){this._adjustDialog()},a.prototype._getConfig=function(n){return n=t.extend({},l,n),r.typeCheckConfig(e,n,h),n},a.prototype._showElement=function(e){var n=this,i=r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.scrollTop=0,i&&r.reflow(this._element),t(this._element).addClass(u.SHOW),this._config.focus&&this._enforceFocus();var o=t.Event(c.SHOWN,{relatedTarget:e}),s=function(){n._config.focus&&n._element.focus(),n._isTransitioning=!1,t(n._element).trigger(o)};i?t(this._dialog).one(r.TRANSITION_END,s).emulateTransitionEnd(300):s()},a.prototype._enforceFocus=function(){var e=this;t(document).off(c.FOCUSIN).on(c.FOCUSIN,function(n){document===n.target||e._element===n.target||t(e._element).has(n.target).length||e._element.focus()})},a.prototype._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?t(this._element).on(c.KEYDOWN_DISMISS,function(t){27===t.which&&e.hide()}):this._isShown||t(this._element).off(c.KEYDOWN_DISMISS)},a.prototype._setResizeEvent=function(){var e=this;this._isShown?t(window).on(c.RESIZE,function(t){return e.handleUpdate(t)}):t(window).off(c.RESIZE)},a.prototype._hideModal=function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._isTransitioning=!1,this._showBackdrop(function(){t(document.body).removeClass(u.OPEN),e._resetAdjustments(),e._resetScrollbar(),t(e._element).trigger(c.HIDDEN)})},a.prototype._removeBackdrop=function(){this._backdrop&&(t(this._backdrop).remove(),this._backdrop=null)},a.prototype._showBackdrop=function(e){var n=this,i=t(this._element).hasClass(u.FADE)?u.FADE:"";if(this._isShown&&this._config.backdrop){var o=r.supportsTransitionEnd()&&i;if(this._backdrop=document.createElement("div"),this._backdrop.className=u.BACKDROP,i&&t(this._backdrop).addClass(i),t(this._backdrop).appendTo(document.body),t(this._element).on(c.CLICK_DISMISS,function(t){if(n._ignoreBackdropClick)return void(n._ignoreBackdropClick=!1);t.target===t.currentTarget&&("static"===n._config.backdrop?n._element.focus():n.hide())}),o&&r.reflow(this._backdrop),t(this._backdrop).addClass(u.SHOW),!e)return;if(!o)return void e();t(this._backdrop).one(r.TRANSITION_END,e).emulateTransitionEnd(150)}else if(!this._isShown&&this._backdrop){t(this._backdrop).removeClass(u.SHOW);var s=function(){n._removeBackdrop(),e&&e()};r.supportsTransitionEnd()&&t(this._element).hasClass(u.FADE)?t(this._backdrop).one(r.TRANSITION_END,s).emulateTransitionEnd(150):s()}else e&&e()},a.prototype._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},a.prototype._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},a.prototype._checkScrollbar=function(){this._isBodyOverflowing=document.body.clientWidth<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},a.prototype._setScrollbar=function(){var e=this;if(this._isBodyOverflowing){t(d.FIXED_CONTENT).each(function(n,i){var o=t(i)[0].style.paddingRight,r=t(i).css("padding-right");t(i).data("padding-right",o).css("padding-right",parseFloat(r)+e._scrollbarWidth+"px")}),t(d.NAVBAR_TOGGLER).each(function(n,i){var o=t(i)[0].style.marginRight,r=t(i).css("margin-right");t(i).data("margin-right",o).css("margin-right",parseFloat(r)+e._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=t("body").css("padding-right");t("body").data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}},a.prototype._resetScrollbar=function(){t(d.FIXED_CONTENT).each(function(e,n){var i=t(n).data("padding-right");void 0!==i&&t(n).css("padding-right",i).removeData("padding-right")}),t(d.NAVBAR_TOGGLER).each(function(e,n){var i=t(n).data("margin-right");void 0!==i&&t(n).css("margin-right",i).removeData("margin-right")});var e=t("body").data("padding-right");void 0!==e&&t("body").css("padding-right",e).removeData("padding-right")},a.prototype._getScrollbarWidth=function(){var t=document.createElement("div");t.className=u.SCROLLBAR_MEASURER,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},a._jQueryInterface=function(e,n){return this.each(function(){var o=t(this).data("bs.modal"),r=t.extend({},a.Default,t(this).data(),"object"===(void 0===e?"undefined":i(e))&&e);if(o||(o=new a(this,r),t(this).data("bs.modal",o)),"string"==typeof e){if(void 0===o[e])throw new Error('No method named "'+e+'"');o[e](n)}else r.show&&o.show(n)})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return l}}]),a}();t(document).on(c.CLICK_DATA_API,d.DATA_TOGGLE,function(e){var n=this,i=void 0,o=r.getSelectorFromElement(this);o&&(i=t(o)[0]);var s=t(i).data("bs.modal")?"toggle":t.extend({},t(i).data(),t(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||e.preventDefault();var a=t(i).one(c.SHOW,function(e){e.isDefaultPrevented()||a.one(c.HIDDEN,function(){t(n).is(":visible")&&n.focus()})});f._jQueryInterface.call(t(i),s,this)}),t.fn[e]=f._jQueryInterface,t.fn[e].Constructor=f,t.fn[e].noConflict=function(){return t.fn[e]=a,f._jQueryInterface},f}(jQuery),function(t){var e="scrollspy",s=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},h={ACTIVATE:"activate.bs.scrollspy",SCROLL:"scroll.bs.scrollspy",LOAD_DATA_API:"load.bs.scrollspy.data-api"},c={DROPDOWN_ITEM:"dropdown-item",DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active"},u={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d={OFFSET:"offset",POSITION:"position"},f=function(){function s(e,i){var o=this;n(this,s),this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(i),this._selector=this._config.target+" "+u.NAV_LINKS+","+this._config.target+" "+u.LIST_ITEMS+","+this._config.target+" "+u.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(h.SCROLL,function(t){return o._process(t)}),this.refresh(),this._process()}return s.prototype.refresh=function(){var e=this,n=this._scrollElement!==this._scrollElement.window?d.POSITION:d.OFFSET,i="auto"===this._config.method?n:this._config.method,o=i===d.POSITION?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n=void 0,s=r.getSelectorFromElement(e);if(s&&(n=t(s)[0]),n){var a=n.getBoundingClientRect();if(a.width||a.height)return[t(n)[i]().top+o,s]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},s.prototype.dispose=function(){t.removeData(this._element,"bs.scrollspy"),t(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},s.prototype._getConfig=function(n){if(n=t.extend({},a,n),"string"!=typeof n.target){var i=t(n.target).attr("id");i||(i=r.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return r.typeCheckConfig(e,n,l),n},s.prototype._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},s.prototype._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},s.prototype._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},s.prototype._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight() +;if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];return void(this._activeTarget!==i&&this._activate(i))}if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}},s.prototype._activate=function(e){this._activeTarget=e,this._clear();var n=this._selector.split(",");n=n.map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'});var i=t(n.join(","));i.hasClass(c.DROPDOWN_ITEM)?(i.closest(u.DROPDOWN).find(u.DROPDOWN_TOGGLE).addClass(c.ACTIVE),i.addClass(c.ACTIVE)):(i.addClass(c.ACTIVE),i.parents(u.NAV_LIST_GROUP).prev(u.NAV_LINKS+", "+u.LIST_ITEMS).addClass(c.ACTIVE)),t(this._scrollElement).trigger(h.ACTIVATE,{relatedTarget:e})},s.prototype._clear=function(){t(this._selector).filter(u.ACTIVE).removeClass(c.ACTIVE)},s._jQueryInterface=function(e){return this.each(function(){var n=t(this).data("bs.scrollspy"),o="object"===(void 0===e?"undefined":i(e))&&e;if(n||(n=new s(this,o),t(this).data("bs.scrollspy",n)),"string"==typeof e){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(s,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return a}}]),s}();t(window).on(h.LOAD_DATA_API,function(){for(var e=t.makeArray(t(u.DATA_SPY)),n=e.length;n--;){var i=t(e[n]);f._jQueryInterface.call(i,i.data())}}),t.fn[e]=f._jQueryInterface,t.fn[e].Constructor=f,t.fn[e].noConflict=function(){return t.fn[e]=s,f._jQueryInterface},f}(jQuery),function(t){var e=t.fn.tab,i={HIDE:"hide.bs.tab",HIDDEN:"hidden.bs.tab",SHOW:"show.bs.tab",SHOWN:"shown.bs.tab",CLICK_DATA_API:"click.bs.tab.data-api"},s={DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active",DISABLED:"disabled",FADE:"fade",SHOW:"show"},a={DROPDOWN:".dropdown",NAV_LIST_GROUP:".nav, .list-group",ACTIVE:".active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',DROPDOWN_TOGGLE:".dropdown-toggle",DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu .active"},l=function(){function e(t){n(this,e),this._element=t}return e.prototype.show=function(){var e=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&t(this._element).hasClass(s.ACTIVE)||t(this._element).hasClass(s.DISABLED))){var n=void 0,o=void 0,l=t(this._element).closest(a.NAV_LIST_GROUP)[0],h=r.getSelectorFromElement(this._element);l&&(o=t.makeArray(t(l).find(a.ACTIVE)),o=o[o.length-1]);var c=t.Event(i.HIDE,{relatedTarget:this._element}),u=t.Event(i.SHOW,{relatedTarget:o});if(o&&t(o).trigger(c),t(this._element).trigger(u),!u.isDefaultPrevented()&&!c.isDefaultPrevented()){h&&(n=t(h)[0]),this._activate(this._element,l);var d=function(){var n=t.Event(i.HIDDEN,{relatedTarget:e._element}),r=t.Event(i.SHOWN,{relatedTarget:o});t(o).trigger(n),t(e._element).trigger(r)};n?this._activate(n,n.parentNode,d):d()}}},e.prototype.dispose=function(){t.removeClass(this._element,"bs.tab"),this._element=null},e.prototype._activate=function(e,n,i){var o=this,l=t(n).find(a.ACTIVE)[0],h=i&&r.supportsTransitionEnd()&&l&&t(l).hasClass(s.FADE),c=function(){return o._transitionComplete(e,l,h,i)};l&&h?t(l).one(r.TRANSITION_END,c).emulateTransitionEnd(150):c(),l&&t(l).removeClass(s.SHOW)},e.prototype._transitionComplete=function(e,n,i,o){if(n){t(n).removeClass(s.ACTIVE);var l=t(n.parentNode).find(a.DROPDOWN_ACTIVE_CHILD)[0];l&&t(l).removeClass(s.ACTIVE),n.setAttribute("aria-expanded",!1)}if(t(e).addClass(s.ACTIVE),e.setAttribute("aria-expanded",!0),i?(r.reflow(e),t(e).addClass(s.SHOW)):t(e).removeClass(s.FADE),e.parentNode&&t(e.parentNode).hasClass(s.DROPDOWN_MENU)){var h=t(e).closest(a.DROPDOWN)[0];h&&t(h).find(a.DROPDOWN_TOGGLE).addClass(s.ACTIVE),e.setAttribute("aria-expanded",!0)}o&&o()},e._jQueryInterface=function(n){return this.each(function(){var i=t(this),o=i.data("bs.tab");if(o||(o=new e(this),i.data("bs.tab",o)),"string"==typeof n){if(void 0===o[n])throw new Error('No method named "'+n+'"');o[n]()}})},o(e,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}}]),e}();t(document).on(i.CLICK_DATA_API,a.DATA_TOGGLE,function(e){e.preventDefault(),l._jQueryInterface.call(t(this),"show")}),t.fn.tab=l._jQueryInterface,t.fn.tab.Constructor=l,t.fn.tab.noConflict=function(){return t.fn.tab=e,l._jQueryInterface},l}(jQuery),function(t){if("undefined"==typeof Tether)throw new Error("Bootstrap tooltips require Tether (http://tether.io/)");var e="tooltip",s=".bs.tooltip",a=t.fn[e],l=new RegExp("(^|\\s)bs-tether\\S+","g"),h={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:"0 0",constraints:[],container:!1},c={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"string",constraints:"array",container:"(string|element|boolean)"},u={TOP:"bottom center",RIGHT:"middle left",BOTTOM:"top center",LEFT:"middle right"},d={SHOW:"show",OUT:"out"},f={HIDE:"hide"+s,HIDDEN:"hidden"+s,SHOW:"show"+s,SHOWN:"shown"+s,INSERTED:"inserted"+s,CLICK:"click"+s,FOCUSIN:"focusin"+s,FOCUSOUT:"focusout"+s,MOUSEENTER:"mouseenter"+s,MOUSELEAVE:"mouseleave"+s},_={FADE:"fade",SHOW:"show"},g={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner"},p={element:!1,enabled:!1},m={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},E=function(){function a(t,e){n(this,a),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._tether=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}return a.prototype.enable=function(){this._isEnabled=!0},a.prototype.disable=function(){this._isEnabled=!1},a.prototype.toggleEnabled=function(){this._isEnabled=!this._isEnabled},a.prototype.toggle=function(e){if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(_.SHOW))return void this._leave(null,this);this._enter(null,this)}},a.prototype.dispose=function(){clearTimeout(this._timeout),this.cleanupTether(),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._tether=null,this.element=null,this.config=null,this.tip=null},a.prototype.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var n=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(n);var i=t.contains(this.element.ownerDocument.documentElement,this.element);if(n.isDefaultPrevented()||!i)return;var o=this.getTipElement(),s=r.getUID(this.constructor.NAME);o.setAttribute("id",s),this.element.setAttribute("aria-describedby",s),this.setContent(),this.config.animation&&t(o).addClass(_.FADE);var l="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,h=this._getAttachment(l),c=this.config.container===!1?document.body:t(this.config.container);t(o).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(o).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._tether=new Tether({attachment:h,element:o,target:this.element,classes:p,classPrefix:"bs-tether",offset:this.config.offset,constraints:this.config.constraints,addTargetClasses:!1}),r.reflow(o),this._tether.position(),t(o).addClass(_.SHOW);var u=function(){var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d.OUT&&e._leave(null,e)};if(r.supportsTransitionEnd()&&t(this.tip).hasClass(_.FADE))return void t(this.tip).one(r.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION);u()}},a.prototype.hide=function(e){var n=this,i=this.getTipElement(),o=t.Event(this.constructor.Event.HIDE),s=function(){n._hoverState!==d.SHOW&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),n.cleanupTether(),e&&e()};t(this.element).trigger(o),o.isDefaultPrevented()||(t(i).removeClass(_.SHOW),this._activeTrigger[m.CLICK]=!1,this._activeTrigger[m.FOCUS]=!1,this._activeTrigger[m.HOVER]=!1,r.supportsTransitionEnd()&&t(this.tip).hasClass(_.FADE)?t(i).one(r.TRANSITION_END,s).emulateTransitionEnd(150):s(),this._hoverState="")},a.prototype.isWithContent=function(){return Boolean(this.getTitle())},a.prototype.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0]},a.prototype.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(g.TOOLTIP_INNER),this.getTitle()),e.removeClass(_.FADE+" "+_.SHOW),this.cleanupTether()},a.prototype.setElementContent=function(e,n){var o=this.config.html;"object"===(void 0===n?"undefined":i(n))&&(n.nodeType||n.jquery)?o?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[o?"html":"text"](n)},a.prototype.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},a.prototype.cleanupTether=function(){this._tether&&this._tether.destroy()},a.prototype._getAttachment=function(t){return u[t.toUpperCase()]},a.prototype._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},a.prototype._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==m.MANUAL){var i=n===m.HOVER?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,o=n===m.HOVER?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(o,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=t.extend({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},a.prototype._fixTitle=function(){var t=i(this.element.getAttribute("data-original-title"));(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},a.prototype._enter=function(e,n){var i=this.constructor.DATA_KEY;return n=n||t(e.currentTarget).data(i),n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?m.FOCUS:m.HOVER]=!0),t(n.getTipElement()).hasClass(_.SHOW)||n._hoverState===d.SHOW?void(n._hoverState=d.SHOW):(clearTimeout(n._timeout),n._hoverState=d.SHOW,n.config.delay&&n.config.delay.show?void(n._timeout=setTimeout(function(){n._hoverState===d.SHOW&&n.show()},n.config.delay.show)):void n.show())},a.prototype._leave=function(e,n){var i=this.constructor.DATA_KEY;if(n=n||t(e.currentTarget).data(i),n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?m.FOCUS:m.HOVER]=!1),!n._isWithActiveTrigger()){if(clearTimeout(n._timeout),n._hoverState=d.OUT,!n.config.delay||!n.config.delay.hide)return void n.hide();n._timeout=setTimeout(function(){n._hoverState===d.OUT&&n.hide()},n.config.delay.hide)}},a.prototype._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},a.prototype._getConfig=function(n){return n=t.extend({},this.constructor.Default,t(this.element).data(),n),n.delay&&"number"==typeof n.delay&&(n.delay={show:n.delay,hide:n.delay}),n.title&&"number"==typeof n.title&&(n.title=n.title.toString()),n.content&&"number"==typeof n.content&&(n.content=n.content.toString()),r.typeCheckConfig(e,n,this.constructor.DefaultType),n},a.prototype._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data("bs.tooltip"),o="object"===(void 0===e?"undefined":i(e))&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,o),t(this).data("bs.tooltip",n)),"string"==typeof e)){if(void 0===n[e])throw new Error('No method named "'+e+'"');n[e]()}})},o(a,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return h}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return f}},{key:"EVENT_KEY",get:function(){return s}},{key:"DefaultType",get:function(){return c}}]),a}();return t.fn[e]=E._jQueryInterface,t.fn[e].Constructor=E,t.fn[e].noConflict=function(){return t.fn[e]=a,E._jQueryInterface},E}(jQuery));!function(r){var a="popover",l=".bs.popover",h=r.fn[a],c=r.extend({},s.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),u=r.extend({},s.DefaultType,{content:"(string|element|function)"}),d={FADE:"fade",SHOW:"show"},f={TITLE:".popover-title",CONTENT:".popover-content"},_={HIDE:"hide"+l,HIDDEN:"hidden"+l,SHOW:"show"+l,SHOWN:"shown"+l,INSERTED:"inserted"+l,CLICK:"click"+l,FOCUSIN:"focusin"+l,FOCUSOUT:"focusout"+l,MOUSEENTER:"mouseenter"+l,MOUSELEAVE:"mouseleave"+l},g=function(s){function h(){return n(this,h),t(this,s.apply(this,arguments))}return e(h,s),h.prototype.isWithContent=function(){return this.getTitle()||this._getContent()},h.prototype.getTipElement=function(){return this.tip=this.tip||r(this.config.template)[0]},h.prototype.setContent=function(){var t=r(this.getTipElement());this.setElementContent(t.find(f.TITLE),this.getTitle()),this.setElementContent(t.find(f.CONTENT),this._getContent()),t.removeClass(d.FADE+" "+d.SHOW),this.cleanupTether()},h.prototype._getContent=function(){return this.element.getAttribute("data-content")||("function"==typeof this.config.content?this.config.content.call(this.element):this.config.content)},h._jQueryInterface=function(t){return this.each(function(){var e=r(this).data("bs.popover"),n="object"===(void 0===t?"undefined":i(t))?t:null;if((e||!/destroy|hide/.test(t))&&(e||(e=new h(this,n),r(this).data("bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new Error('No method named "'+t+'"');e[t]()}})},o(h,null,[{key:"VERSION",get:function(){return"4.0.0-alpha.6"}},{key:"Default",get:function(){return c}},{key:"NAME",get:function(){return a}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return l}},{key:"DefaultType",get:function(){return u}}]),h}(s);r.fn[a]=g._jQueryInterface,r.fn[a].Constructor=g,r.fn[a].noConflict=function(){return r.fn[a]=h,g._jQueryInterface},g}(jQuery)}();
\ No newline at end of file diff --git a/library/simplepie/README.markdown b/library/simplepie/README.markdown deleted file mode 100644 index e5ca021ce..000000000 --- a/library/simplepie/README.markdown +++ /dev/null @@ -1,53 +0,0 @@ -# SimplePie - -## Authors and contributors - -* [Ryan Parman](http://ryanparman.com) -* [Geoffrey Sneddon](http://gsnedders.com) -* [Ryan McCue](http://ryanmccue.info) -* [Michael Shipley](http://michaelpshipley.com) -* [Steve Minutillo](http://minutillo.com/steve/) - - -## License - -[New BSD license](http://www.opensource.org/licenses/bsd-license.php) - - -## Project status - -SimplePie is currently maintained by Ryan McCue. - -At the moment, there isn't a lot of active development happening. If the community decides that SimplePie is a valuable tool, then the community will come together to maintain it into the future. - -If you're interested in getting involved with SimplePie, please get in touch with Ryan McCue. - - -## What comes in the package? - -1. `simplepie.inc` - The SimplePie library. This is all that's required for your pages. -2. `README.markdown` - This document. -3. `LICENSE.txt` - A copy of the BSD license. -4. `compatibility_test/` - The SimplePie compatibility test that checks your server for required settings. -5. `demo/` - A basic feed reader demo that shows off some of SimplePie's more noticable features. -6. `idn/` - A third-party library that SimplePie can optionally use to understand Internationalized Domain Names (IDNs). -7. `test/` - SimplePie's unit test suite. - - -## To start the demo - -1. Upload this package to your webserver. -2. Make sure that the cache folder inside of the demo folder is server-writable. -3. Navigate your browser to the demo folder. - - -## Need support? - -For further setup and install documentation, function references, etc., visit: -[http://simplepie.org/wiki/](http://simplepie.org/wiki/) - -For bug reports and feature requests, visit: -[http://github.com/rmccue/simplepie/issues](http://github.com/rmccue/simplepie/issues) - -Support mailing list -- powered by users, for users. -[http://tech.groups.yahoo.com/group/simplepie-support/](http://tech.groups.yahoo.com/group/simplepie-support/) diff --git a/library/simplepie/compatibility_test/COMPATIBILITY README.txt b/library/simplepie/compatibility_test/COMPATIBILITY README.txt deleted file mode 100644 index 5b2498992..000000000 --- a/library/simplepie/compatibility_test/COMPATIBILITY README.txt +++ /dev/null @@ -1,7 +0,0 @@ -SIMPLEPIE COMPATIBILITY TEST - -1) Upload sp_compatibility_test.php to the web-accessible root of your website. -For example, if your website is www.example.com, upload it so that you can get -to it at www.example.com/sp_compatibility_test.php - -2) Open your web browser and go to the page you just uploaded.
\ No newline at end of file diff --git a/library/simplepie/compatibility_test/sp_compatibility_test.php b/library/simplepie/compatibility_test/sp_compatibility_test.php deleted file mode 100644 index a7a7f5fde..000000000 --- a/library/simplepie/compatibility_test/sp_compatibility_test.php +++ /dev/null @@ -1,330 +0,0 @@ -<?php -if (isset($_GET['logopng'])) -{ - $data='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'; - header('Content-type: image/png'); - echo base64_decode($data); - exit; -} -else if (isset($_GET['background'])) -{ - $data='R0lGODlhMAEeAeYAAP///8ni6cTf5+72+PD3+c3k6+nz9ufy9ev099Pn7bnZ48bg6LfY4uHv8/r8/f3+/v7//7bX4cjh6fj7/Mvj6vz9/rva4+z19/X6+/f7/Pn8/fb6+7jZ4vv9/bra473b5Lzb5LXX4b7c5b/c5e31+NTo7tvs8dfq7/H3+bjY4tnq79Hm7c/l69nr8PL4+t7t8sDd5cLe5uPw9Nvr8Mri6fP4+tLn7er099Hm7O/2+dDm7OTw9OXx9Nbp7tbp7+Lv8+Du8szj6sXg57bY4d3s8djq7+jz9tzs8cPe58fh6M7k68Pf5+by9fz+/sDd5vT5+vT5+97t8bbY4trr8P7+/v7+/+Pw8+Xx9dXo7sHe5vH4+fP5+sHd5t/u8s/l7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAwAR4BAAf/gCGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKNEaWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExbBDyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7KUuHi4+Tl5ufo6err7O3u7/Dx8vP09fb34wz6+/z9/v8AAwocSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2osmKKjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qc+ZGDzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1aAKsmrdyrWr169gw4odS7as2bNo06pdy7at27dw/+PKnUu3rt27ePOS9cC3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sz5sIXPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fqkEIH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOLb/6hvPnz6NOrX8++vfv38OPLn0+/vv37+PPr38+/v///AAYo4IAEFgifCAgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZo4okoTjjCiiy26OKLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap5P+SNsLg5JNQRinllFRWaeWVWGap5ZZcdunll2CGKeaYZELpxJlopqnmmmy26eabcMYp55x01mnnnXjmqeeefPaZJheABirooIQWauihiCaq6KKMNuroo5BGKumklFZqqaBZZKrpppx26umnoIYq6qiklmrqqaimquqqrLbq6qubxiDrrLTWauutuOaq66689urrr8AGK+ywxBZr7LHI0orEssw26+yz0EYr7bTUVmvttdhmq+223Hbr7bfghtvsEuSWa+656Kar7rrstuvuu/DGK++89NZr77345quvuQL06++/AAcs8MAEF2zwwQgnrPDCDDfs8MMQRyzxxBRXbPH/xRhnrPHGHHeMsBAghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNdss8gL5Kzzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGdNdBJcd+3112CHLfbYZJdt9tlop6322my37fbbcMctt9cS1G333XjnrffefPft99+ABy744IQXbvjhiCeu+OKMN+7445BHLvnklFcOeACYZ6755px37vnnoIcu+uikl2766ainrvrqrLfu+uuwxy777LTXbvvtuI9Ow+689+7778AHL/zwxBdv/PHIJ6/88sw37/zz0EffOwXUV2/99dhnr/323Hfv/ffghy/+//jkl2/++einr/767Lfv/vvwxy///PR/H8T9+Oev//789+///wAMoAAHSMACGvCACEygAhfIwAbmrwAQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTDcoBJmSMMa2vCGOMyhDnfIwx768IdADKIQh0jEIhrxiEhMYg1ZwMQmOvGJUIyiFKdIxSpa8YpYzKIWt8jFLnrxi2AMoxid6IUymvGMaEyjGtfIxja68Y1wjKMc50jHOtrxjnjMox73eEYd+PGPgAykIAdJyEIa8pCITKQiF8nIRjrykZCMpCQnSUlA4uCSmMykJjfJyU568v+ToAylKEdJylKa8pSoTKUqV8nKVmZyBbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhpTljZIpjKXycxmOvOZ0IymNKdJzWpa85rYzKY2t8nNbnrzm8tMgDjHSc5ymvOc6EynOtfJzna6853wjKc850nPetrznvjMpz73yc9++vOfAA2oQNtZgoIa9KAITahCF8rQhjr0oRCNqEQnStGKWvSiGM2oRjd6UCx49KMgDalIR0rSkpr0pChNqUpXytKWuvSlMI2pTGdKU5D24KY4zalOd8rTnvr0p0ANqlCHStSiGvWoSE2qUpfK1Kbm1AdQjapUp0rVqlr1qlj/zapWt8rVrnr1q2ANq1jHStaymlWqJ0irWtfK1ra69a1wjatc50rXutr1rnjNq173yte++vWvay2CYAdL2MIa9rCITaxiF8vYxjr2sZCNrGQnS9nKWvaymCWsCjbL2c569rOgDa1oR0va0pr2tKhNrWpXy9rWuva1sI1tZ1tA29ra9ra4za1ud8vb3vr2t8ANrnCHS9ziGve4yE2ucm07heY697nQja50p0vd6lr3utjNrna3y93ueve74A2veMf73BmY97zoTa9618ve9rr3vfCNr3znS9/62ve++M2vfvfLX/Sa4L8ADrCAB0zgAhv4wAhOsIIXzOAGO/jBEI6w/4QnTOEKB/gIGM6whjfM4Q57+MMgDrGIR0ziEpv4xChOsYpXzOIWu1jDRIixjGdM4xrb+MY4zrGOd8zjHvv4x0AOspCHTOQiG/nIM46CkpfM5CY7+clQjrKUp0zlKlv5yljOspa3zOUue/nLYGbyC8ZM5jKb+cxoTrOa18zmNrv5zXCOs5znTOc62/nOeM5zmbvA5z77+c+ADrSgB03oQhv60IhOtKIXzehGO/rRkI60pP0MhEpb+tKYzrSmN83pTnv606AOtahHTepSm/rUqE61qld96Qa4+tWwjrWsZ03rWtv61rjOta53zete+/rXwA62sIdN7GIb+9jITrayl//N7GY7O9c/iLa0p03talv72tjOtra3ze1ue/vb4A63uMdN7nKb+9zTtoK6183udrv73fCOt7znTe962/ve+M63vvfN7377+98AZ7cMBk7wghv84AhPuMIXzvCGO/zhEI+4xCdO8Ypb/OIYz3jBd8Dxjnv84yAPuchHTvKSm/zkKE+5ylfO8pa7/OUwj7nMPc6Dmtv85jjPuc53zvOe+/znQA+60IdO9KIb/ehIT7rSl37zKzj96VCPutSnTvWqW/3qWM+61rfO9a57/etgD7vYx052qDPh7GhPu9rXzva2u/3tcI+73OdO97rb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'; - header('Content-type: image/gif'); - echo base64_decode($data); - exit; -} - -$php_ok = (function_exists('version_compare') && version_compare(phpversion(), '4.3.0', '>=')); -$pcre_ok = extension_loaded('pcre'); -$curl_ok = function_exists('curl_exec'); -$zlib_ok = extension_loaded('zlib'); -$mbstring_ok = extension_loaded('mbstring'); -$iconv_ok = extension_loaded('iconv'); -if (extension_loaded('xmlreader')) -{ - $xml_ok = true; -} -elseif (extension_loaded('xml')) -{ - $parser_check = xml_parser_create(); - xml_parse_into_struct($parser_check, '<foo>&</foo>', $values); - xml_parser_free($parser_check); - $xml_ok = isset($values[0]['value']); -} -else -{ - $xml_ok = false; -} - -header('Content-type: text/html; charset=UTF-8'); - -?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> - -<html lang="en"> -<head> -<title>SimplePie: Server Compatibility Test 1.2</title> - -<style type="text/css"> -body { - font:14px/1.4em "Lucida Grande", Verdana, Arial, Helvetica, Clean, Sans, sans-serif; - letter-spacing:0px; - color:#333; - margin:0; - padding:0; - background:#fff url(<?php echo pathinfo(__FILE__, PATHINFO_BASENAME); ?>?background) repeat-x top left; -} - -div#site { - width:550px; - margin:20px auto 0 auto; -} - -a { - color:#000; - text-decoration:underline; - padding:0 1px; -} - -a:hover { - color:#fff; - background-color:#333; - text-decoration:none; - padding:0 1px; -} - -p { - margin:0; - padding:5px 0; -} - -em { - font-style:normal; - background-color:#ffc; -} - -ul, ol { - margin:10px 0 10px 20px; - padding:0 0 0 15px; -} - -ul li, ol li { - margin:0 0 7px 0; - padding:0 0 0 3px; -} - -h2 { - font-size:18px; - padding:0; - margin:30px 0 10px 0; -} - -h3 { - font-size:16px; - padding:0; - margin:20px 0 5px 0; -} - -h4 { - font-size:14px; - padding:0; - margin:15px 0 5px 0; -} - -code { - font-size:1.1em; - background-color:#f3f3ff; - color:#000; -} - -em strong { - text-transform: uppercase; -} - -table#chart { - border-collapse:collapse; -} - -table#chart th { - background-color:#eee; - padding:2px 3px; - border:1px solid #fff; -} - -table#chart td { - text-align:center; - padding:2px 3px; - border:1px solid #eee; -} - -table#chart tr.enabled td { - /* Leave this alone */ -} - -table#chart tr.disabled td, -table#chart tr.disabled td a { - color:#999; - font-style:italic; -} - -table#chart tr.disabled td a { - text-decoration:underline; -} - -div.chunk { - margin:20px 0 0 0; - padding:0 0 10px 0; - border-bottom:1px solid #ccc; -} - -.footnote, -.footnote a { - font:10px/12px verdana, sans-serif; - color:#aaa; -} - -.footnote em { - background-color:transparent; - font-style:italic; -} -</style> - -<script type="text/javascript"> -// Sleight - Alpha transparency PNG's in Internet Explorer 5.5/6.0 -// (c) 2001, Aaron Boodman; http://www.youngpup.net - -if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) { - document.writeln('<style type="text/css">img, input.image { visibility:hidden; } </style>'); - window.attachEvent("onload", fnLoadPngs); -} - -function fnLoadPngs() { - var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, ''); - var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5); - - for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--) { - if (itsAllGood && img.src.match(/\png$/i) != null) { - var src = img.src; - var div = document.createElement("DIV"); - div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizing='scale')"; - div.style.width = img.width + "px"; - div.style.height = img.height + "px"; - img.replaceNode(div); - } - img.style.visibility = "visible"; - } -} -</script> - -</head> - -<body> - -<div id="site"> - <div id="content"> - - <div class="chunk"> - <h2 style="text-align:center;"><img src="<?php echo pathinfo(__FILE__, PATHINFO_BASENAME); ?>?logopng" alt="SimplePie Compatibility Test" title="SimplePie Compatibility Test" /></h2> - <table cellpadding="0" cellspacing="0" border="0" width="100%" id="chart"> - <thead> - <tr> - <th>Test</th> - <th>Should Be</th> - <th>What You Have</th> - </tr> - </thead> - <tbody> - <tr class="<?php echo ($php_ok) ? 'enabled' : 'disabled'; ?>"> - <td>PHP¹</td> - <td>4.3.0 or higher</td> - <td><?php echo phpversion(); ?></td> - </tr> - <tr class="<?php echo ($xml_ok) ? 'enabled, and sane' : 'disabled, or broken'; ?>"> - <td><a href="http://php.net/xml">XML</a></td> - <td>Enabled</td> - <td><?php echo ($xml_ok) ? 'Enabled, and sane' : 'Disabled, or broken'; ?></td> - </tr> - <tr class="<?php echo ($pcre_ok) ? 'enabled' : 'disabled'; ?>"> - <td><a href="http://php.net/pcre">PCRE</a>²</td> - <td>Enabled</td> - <td><?php echo ($pcre_ok) ? 'Enabled' : 'Disabled'; ?></td> - </tr> - <tr class="<?php echo ($curl_ok) ? 'enabled' : 'disabled'; ?>"> - <td><a href="http://php.net/curl">cURL</a></td> - <td>Enabled</td> - <td><?php echo (extension_loaded('curl')) ? 'Enabled' : 'Disabled'; ?></td> - </tr> - <tr class="<?php echo ($zlib_ok) ? 'enabled' : 'disabled'; ?>"> - <td><a href="http://php.net/zlib">Zlib</a></td> - <td>Enabled</td> - <td><?php echo ($zlib_ok) ? 'Enabled' : 'Disabled'; ?></td> - </tr> - <tr class="<?php echo ($mbstring_ok) ? 'enabled' : 'disabled'; ?>"> - <td><a href="http://php.net/mbstring">mbstring</a></td> - <td>Enabled</td> - <td><?php echo ($mbstring_ok) ? 'Enabled' : 'Disabled'; ?></td> - </tr> - <tr class="<?php echo ($iconv_ok) ? 'enabled' : 'disabled'; ?>"> - <td><a href="http://php.net/iconv">iconv</a></td> - <td>Enabled</td> - <td><?php echo ($iconv_ok) ? 'Enabled' : 'Disabled'; ?></td> - </tr> - </tbody> - </table> - </div> - - <div class="chunk"> - <h3>What does this mean?</h3> - <ol> - <?php if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $iconv_ok && $curl_ok && $zlib_ok): ?> - <li><em>You have everything you need to run SimplePie properly! Congratulations!</em></li> - <?php else: ?> - <?php if ($php_ok): ?> - <li><strong>PHP:</strong> You are running a supported version of PHP. <em>No problems here.</em></li> - <?php if ($xml_ok): ?> - <li><strong>XML:</strong> You have XMLReader support or a version of XML support that isn't broken installed. <em>No problems here.</em></li> - <?php if ($pcre_ok): ?> - <li><strong>PCRE:</strong> You have PCRE support installed. <em>No problems here.</em></li> - <?php if ($curl_ok): ?> - <li><strong>cURL:</strong> You have <code>cURL</code> support installed. <em>No problems here.</em></li> - <?php else: ?> - <li><strong>cURL:</strong> The <code>cURL</code> extension is not available. SimplePie will use <code>fsockopen()</code> instead.</li> - <?php endif; ?> - - <?php if ($zlib_ok): ?> - <li><strong>Zlib:</strong> You have <code>Zlib</code> enabled. This allows SimplePie to support GZIP-encoded feeds. <em>No problems here.</em></li> - <?php else: ?> - <li><strong>Zlib:</strong> The <code>Zlib</code> extension is not available. SimplePie will ignore any GZIP-encoding, and instead handle feeds as uncompressed text.</li> - <?php endif; ?> - - <?php if ($mbstring_ok && $iconv_ok): ?> - <li><strong>mbstring and iconv:</strong> You have both <code>mbstring</code> and <code>iconv</code> installed! This will allow SimplePie to handle the greatest number of languages. Check the <a href="http://simplepie.org/wiki/faq/supported_character_encodings">Supported Character Encodings</a> chart to see what's supported on your webhost.</li> - <?php elseif ($mbstring_ok): ?> - <li><strong>mbstring:</strong> <code>mbstring</code> is installed, but <code>iconv</code> is not. Check the <a href="http://simplepie.org/wiki/faq/supported_character_encodings">Supported Character Encodings</a> chart to see what's supported on your webhost.</li> - <?php elseif ($iconv_ok): ?> - <li><strong>iconv:</strong> <code>iconv</code> is installed, but <code>mbstring</code> is not. Check the <a href="http://simplepie.org/wiki/faq/supported_character_encodings">Supported Character Encodings</a> chart to see what's supported on your webhost.</li> - <?php else: ?> - <li><strong>mbstring and iconv:</strong> <em>You do not have either of the extensions installed.</em> This will significantly impair your ability to read non-English feeds, as well as even some English ones. Check the <a href="http://simplepie.org/wiki/faq/supported_character_encodings">Supported Character Encodings</a> chart to see what's supported on your webhost.</li> - <?php endif; ?> - <?php else: ?> - <li><strong>PCRE:</strong> Your PHP installation doesn't support Perl-Compatible Regular Expressions. <em>SimplePie is a no-go at the moment.</em></li> - <?php endif; ?> - <?php else: ?> - <li><strong>XML:</strong> Your PHP installation doesn't support XML parsing. <em>SimplePie is a no-go at the moment.</em></li> - <?php endif; ?> - <?php else: ?> - <li><strong>PHP:</strong> You are running an unsupported version of PHP. <em>SimplePie is a no-go at the moment.</em></li> - <?php endif; ?> - <?php endif; ?> - </ol> - </div> - - <div class="chunk"> - <?php if ($php_ok && $xml_ok && $pcre_ok && $mbstring_ok && $iconv_ok) { ?> - <h3>Bottom Line: Yes, you can!</h3> - <p><em>Your webhost has its act together!</em></p> - <p>You can download the latest version of SimplePie from <a href="http://simplepie.org/downloads/">SimplePie.org</a> and install it by <a href="http://simplepie.org/wiki/setup/start">following the instructions</a>. You can find example uses with <a href="http://simplepie.org/ideas/">SimplePie Ideas</a>.</p> - <p>Take the time to read <a href="http://simplepie.org/wiki/setup/start">Requirements and Getting Started</a> to make sure you're prepared to use SimplePie. No seriously, read them.</p> - <p class="footnote"><em><strong>Note</strong></em>: Passing this test does not guarantee that SimplePie will run on your webhost — it only ensures that the basic requirements have been addressed.</p> - <?php } else if ($php_ok && $xml_ok && $pcre_ok) { ?> - <h3>Bottom Line: Yes, you can!</h3> - <p><em>For most feeds, it'll run with no problems.</em> There are <a href="http://simplepie.org/wiki/faq/supported_character_encodings">certain languages</a> that you might have a hard time with though.</p> - <p>You can download the latest version of SimplePie from <a href="http://simplepie.org/downloads/">SimplePie.org</a> and install it by <a href="http://simplepie.org/wiki/setup/start">following the instructions</a>. You can find example uses with <a href="http://simplepie.org/ideas/">SimplePie Ideas</a>.</p> - <p>Take the time to read <a href="http://simplepie.org/wiki/setup/start">Requirements and Getting Started</a> to make sure you're prepared to use SimplePie. No seriously, read them.</p> - <p class="footnote"><em><strong>Note</strong></em>: Passing this test does not guarantee that SimplePie will run on your webhost — it only ensures that the basic requirements have been addressed.</p> - <?php } else { ?> - <h3>Bottom Line: We're sorry…</h3> - <p><em>Your webhost does not support the minimum requirements for SimplePie.</em> It may be a good idea to contact your webhost, and ask them to install a more recent version of PHP as well as the <code>xmlreader</code>, <code>xml</code>, <code>mbstring</code>, <code>iconv</code>, <code>curl</code>, and <code>zlib</code> extensions.</p> - <?php } ?> - </div> - - <div class="chunk"> - <p class="footnote">¹ — SimplePie 2 will not support PHP 4.x. The core PHP team has discontinued PHP 4.x patches and support. <a href="http://simplepie.org/blog/2007/07/13/simplepie-is-going-php5-only/">Read the announcement.</a></p> - <p class="footnote">² — Some recent versions of the PCRE (PERL-Compatible Regular Expression) engine compiled into PHP have been buggy, and are the source of PHP segmentation faults (e.g. crashes) which cause random things like blank, white screens. Check the <a href="http://simplepie.org/support/">Support Forums</a> for the latest information on patches and ongoing fixes.</p> - </div> - - </div> - -</div> - -</body> -</html>
\ No newline at end of file diff --git a/library/simplepie/create.php b/library/simplepie/create.php deleted file mode 100644 index 908ed182b..000000000 --- a/library/simplepie/create.php +++ /dev/null @@ -1,178 +0,0 @@ -<?php - -require_once 'simplepie.inc'; - -function normalize_character_set($charset) -{ - return strtolower(preg_replace('/(?:[^a-zA-Z0-9]+|([^0-9])0+)/', '\1', $charset)); -} - -function build_character_set_list() -{ - $file = new SimplePie_File('http://www.iana.org/assignments/character-sets'); - if (!$file->success && !($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300))) - { - return false; - } - else - { - $data = explode("\n", $file->body); - unset($file); - - foreach ($data as $line) - { - // New character set - if (substr($line, 0, 5) === 'Name:') - { - // If we already have one, push it on to the array - if (isset($aliases)) - { - for ($i = 0, $count = count($aliases); $i < $count; $i++) - { - $aliases[$i] = normalize_character_set($aliases[$i]); - } - $charsets[$preferred] = array_unique($aliases); - natsort($charsets[$preferred]); - } - - $start = 5 + strspn($line, "\x09\x0A\x0B\xC\x0D\x20", 5); - $chars = strcspn($line, "\x09\x0A\x0B\xC\x0D\x20", $start); - $aliases = array(substr($line, $start, $chars)); - $preferred = end($aliases); - } - // Another alias - elseif(substr($line, 0, 6) === 'Alias:') - { - $start = 7 + strspn($line, "\x09\x0A\x0B\xC\x0D\x20", 7); - $chars = strcspn($line, "\x09\x0A\x0B\xC\x0D\x20", $start); - $aliases[] = substr($line, $start, $chars); - - if (end($aliases) === 'None') - { - array_pop($aliases); - } - elseif (substr($line, 7 + $chars + 1, 21) === '(preferred MIME name)') - { - $preferred = end($aliases); - } - } - } - - // Compatibility replacements - $compat = array( - 'EUC-KR' => 'windows-949', - 'GB2312' => 'GBK', - 'GB_2312-80' => 'GBK', - 'ISO-8859-1' => 'windows-1252', - 'ISO-8859-9' => 'windows-1254', - 'ISO-8859-11' => 'windows-874', - 'KS_C_5601-1987' => 'windows-949', - 'TIS-620' => 'windows-874', - //'US-ASCII' => 'windows-1252', - 'x-x-big5' => 'Big5', - ); - - foreach ($compat as $real => $replace) - { - if (isset($charsets[$real]) && isset($charsets[$replace])) - { - $charsets[$replace] = array_merge($charsets[$replace], $charsets[$real]); - unset($charsets[$real]); - } - elseif (isset($charsets[$real])) - { - $charsets[$replace] = $charsets[$real]; - $charsets[$replace][] = normalize_character_set($replace); - unset($charsets[$real]); - } - else - { - $charsets[$replace][] = normalize_character_set($real); - } - $charsets[$replace] = array_unique($charsets[$replace]); - natsort($charsets[$replace]); - } - - // Sort it - uksort($charsets, 'strnatcasecmp'); - - // Check that nothing matches more than one - $all = call_user_func_array('array_merge', $charsets); - $all_count = array_count_values($all); - if (max($all_count) > 1) - { - echo "Duplicated charsets:\n"; - foreach ($all_count as $charset => $count) - { - if ($count > 1) - { - echo "$charset\n"; - } - } - } - - // And we're done! - return $charsets; - } -} - -function charset($charset) -{ - $normalized_charset = normalize_character_set($charset); - if ($charsets = build_character_set_list()) - { - foreach ($charsets as $preferred => $aliases) - { - if (in_array($normalized_charset, $aliases)) - { - return $preferred; - } - } - return $charset; - } - else - { - return false; - } -} - -function build_function() -{ - if ($charsets = build_character_set_list()) - { - $return = <<<EOF -function charset(\$charset) -{ - // Normalization from UTS #22 - switch (strtolower(preg_replace('/(?:[^a-zA-Z0-9]+|([^0-9])0+)/', '\\1', \$charset))) - { - -EOF; - foreach ($charsets as $preferred => $aliases) - { - foreach ($aliases as $alias) - { - $return .= "\t\tcase " . var_export($alias, true) . ":\n"; - } - $return .= "\t\t\treturn " . var_export($preferred, true) . ";\n\n"; - } - $return .= <<<EOF - default: - return \$charset; - } -} -EOF; - return $return; - } - else - { - return false; - } -} - -if (php_sapi_name() === 'cli' && realpath($_SERVER['argv'][0]) === __FILE__) -{ - echo build_function(); -} - -?>
\ No newline at end of file diff --git a/library/simplepie/simplepie.inc b/library/simplepie/simplepie.inc deleted file mode 100644 index 96ad06678..000000000 --- a/library/simplepie/simplepie.inc +++ /dev/null @@ -1,15150 +0,0 @@ -<?php -/** - * SimplePie - * - * A PHP-Based RSS and Atom Feed Framework. - * Takes the hard work out of managing a complete RSS/Atom solution. - * - * Copyright (c) 2004-2009, Ryan Parman and Geoffrey Sneddon - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * * Neither the name of the SimplePie Team nor the names of its contributors may be used - * to endorse or promote products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS - * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * @package SimplePie - * @version 1.2.1-dev - * @copyright 2004-2009 Ryan Parman, Geoffrey Sneddon - * @author Ryan Parman - * @author Geoffrey Sneddon - * @link http://simplepie.org/ SimplePie - * @link http://simplepie.org/support/ Please submit all bug reports and feature requests to the SimplePie forums - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @todo phpDoc comments - */ - -/** - * SimplePie Name - */ -define('SIMPLEPIE_NAME', 'SimplePie'); - -/** - * SimplePie Version - */ -define('SIMPLEPIE_VERSION', '1.2.1-dev'); - -/** - * SimplePie Build - * @todo Hardcode for release (there's no need to have to call SimplePie_Misc::parse_date() only every load of simplepie.inc) - */ -define('SIMPLEPIE_BUILD', gmdate('YmdHis', SimplePie_Misc::parse_date(substr('$Date$', 7, 25)) ? SimplePie_Misc::parse_date(substr('$Date$', 7, 25)) : filemtime(__FILE__))); - -/** - * SimplePie Website URL - */ -define('SIMPLEPIE_URL', 'http://simplepie.org'); - -/** - * SimplePie Useragent - * @see SimplePie::set_useragent() - */ -define('SIMPLEPIE_USERAGENT', SIMPLEPIE_NAME . '/' . SIMPLEPIE_VERSION . ' (Feed Parser; ' . SIMPLEPIE_URL . '; Allow like Gecko) Build/' . SIMPLEPIE_BUILD); - -/** - * SimplePie Linkback - */ -define('SIMPLEPIE_LINKBACK', '<a href="' . SIMPLEPIE_URL . '" title="' . SIMPLEPIE_NAME . ' ' . SIMPLEPIE_VERSION . '">' . SIMPLEPIE_NAME . '</a>'); - -/** - * No Autodiscovery - * @see SimplePie::set_autodiscovery_level() - */ -define('SIMPLEPIE_LOCATOR_NONE', 0); - -/** - * Feed Link Element Autodiscovery - * @see SimplePie::set_autodiscovery_level() - */ -define('SIMPLEPIE_LOCATOR_AUTODISCOVERY', 1); - -/** - * Local Feed Extension Autodiscovery - * @see SimplePie::set_autodiscovery_level() - */ -define('SIMPLEPIE_LOCATOR_LOCAL_EXTENSION', 2); - -/** - * Local Feed Body Autodiscovery - * @see SimplePie::set_autodiscovery_level() - */ -define('SIMPLEPIE_LOCATOR_LOCAL_BODY', 4); - -/** - * Remote Feed Extension Autodiscovery - * @see SimplePie::set_autodiscovery_level() - */ -define('SIMPLEPIE_LOCATOR_REMOTE_EXTENSION', 8); - -/** - * Remote Feed Body Autodiscovery - * @see SimplePie::set_autodiscovery_level() - */ -define('SIMPLEPIE_LOCATOR_REMOTE_BODY', 16); - -/** - * All Feed Autodiscovery - * @see SimplePie::set_autodiscovery_level() - */ -define('SIMPLEPIE_LOCATOR_ALL', 31); - -/** - * No known feed type - */ -define('SIMPLEPIE_TYPE_NONE', 0); - -/** - * RSS 0.90 - */ -define('SIMPLEPIE_TYPE_RSS_090', 1); - -/** - * RSS 0.91 (Netscape) - */ -define('SIMPLEPIE_TYPE_RSS_091_NETSCAPE', 2); - -/** - * RSS 0.91 (Userland) - */ -define('SIMPLEPIE_TYPE_RSS_091_USERLAND', 4); - -/** - * RSS 0.91 (both Netscape and Userland) - */ -define('SIMPLEPIE_TYPE_RSS_091', 6); - -/** - * RSS 0.92 - */ -define('SIMPLEPIE_TYPE_RSS_092', 8); - -/** - * RSS 0.93 - */ -define('SIMPLEPIE_TYPE_RSS_093', 16); - -/** - * RSS 0.94 - */ -define('SIMPLEPIE_TYPE_RSS_094', 32); - -/** - * RSS 1.0 - */ -define('SIMPLEPIE_TYPE_RSS_10', 64); - -/** - * RSS 2.0 - */ -define('SIMPLEPIE_TYPE_RSS_20', 128); - -/** - * RDF-based RSS - */ -define('SIMPLEPIE_TYPE_RSS_RDF', 65); - -/** - * Non-RDF-based RSS (truly intended as syndication format) - */ -define('SIMPLEPIE_TYPE_RSS_SYNDICATION', 190); - -/** - * All RSS - */ -define('SIMPLEPIE_TYPE_RSS_ALL', 255); - -/** - * Atom 0.3 - */ -define('SIMPLEPIE_TYPE_ATOM_03', 256); - -/** - * Atom 1.0 - */ -define('SIMPLEPIE_TYPE_ATOM_10', 512); - -/** - * All Atom - */ -define('SIMPLEPIE_TYPE_ATOM_ALL', 768); - -/** - * All feed types - */ -define('SIMPLEPIE_TYPE_ALL', 1023); - -/** - * No construct - */ -define('SIMPLEPIE_CONSTRUCT_NONE', 0); - -/** - * Text construct - */ -define('SIMPLEPIE_CONSTRUCT_TEXT', 1); - -/** - * HTML construct - */ -define('SIMPLEPIE_CONSTRUCT_HTML', 2); - -/** - * XHTML construct - */ -define('SIMPLEPIE_CONSTRUCT_XHTML', 4); - -/** - * base64-encoded construct - */ -define('SIMPLEPIE_CONSTRUCT_BASE64', 8); - -/** - * IRI construct - */ -define('SIMPLEPIE_CONSTRUCT_IRI', 16); - -/** - * A construct that might be HTML - */ -define('SIMPLEPIE_CONSTRUCT_MAYBE_HTML', 32); - -/** - * All constructs - */ -define('SIMPLEPIE_CONSTRUCT_ALL', 63); - -/** - * Don't change case - */ -define('SIMPLEPIE_SAME_CASE', 1); - -/** - * Change to lowercase - */ -define('SIMPLEPIE_LOWERCASE', 2); - -/** - * Change to uppercase - */ -define('SIMPLEPIE_UPPERCASE', 4); - -/** - * PCRE for HTML attributes - */ -define('SIMPLEPIE_PCRE_HTML_ATTRIBUTE', '((?:[\x09\x0A\x0B\x0C\x0D\x20]+[^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?)*)[\x09\x0A\x0B\x0C\x0D\x20]*'); - -/** - * PCRE for XML attributes - */ -define('SIMPLEPIE_PCRE_XML_ATTRIBUTE', '((?:\s+(?:(?:[^\s:]+:)?[^\s:]+)\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'))*)\s*'); - -/** - * XML Namespace - */ -define('SIMPLEPIE_NAMESPACE_XML', 'http://www.w3.org/XML/1998/namespace'); - -/** - * Atom 1.0 Namespace - */ -define('SIMPLEPIE_NAMESPACE_ATOM_10', 'http://www.w3.org/2005/Atom'); - -/** - * Atom 0.3 Namespace - */ -define('SIMPLEPIE_NAMESPACE_ATOM_03', 'http://purl.org/atom/ns#'); - -/** - * RDF Namespace - */ -define('SIMPLEPIE_NAMESPACE_RDF', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'); - -/** - * RSS 0.90 Namespace - */ -define('SIMPLEPIE_NAMESPACE_RSS_090', 'http://my.netscape.com/rdf/simple/0.9/'); - -/** - * RSS 1.0 Namespace - */ -define('SIMPLEPIE_NAMESPACE_RSS_10', 'http://purl.org/rss/1.0/'); - -/** - * RSS 1.0 Content Module Namespace - */ -define('SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT', 'http://purl.org/rss/1.0/modules/content/'); - -/** - * RSS 2.0 Namespace - * (Stupid, I know, but I'm certain it will confuse people less with support.) - */ -define('SIMPLEPIE_NAMESPACE_RSS_20', ''); - -/** - * DC 1.0 Namespace - */ -define('SIMPLEPIE_NAMESPACE_DC_10', 'http://purl.org/dc/elements/1.0/'); - -/** - * DC 1.1 Namespace - */ -define('SIMPLEPIE_NAMESPACE_DC_11', 'http://purl.org/dc/elements/1.1/'); - -/** - * W3C Basic Geo (WGS84 lat/long) Vocabulary Namespace - */ -define('SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO', 'http://www.w3.org/2003/01/geo/wgs84_pos#'); - -/** - * GeoRSS Namespace - */ -define('SIMPLEPIE_NAMESPACE_GEORSS', 'http://www.georss.org/georss'); - -/** - * Media RSS Namespace - */ -define('SIMPLEPIE_NAMESPACE_MEDIARSS', 'http://search.yahoo.com/mrss/'); - -/** - * Wrong Media RSS Namespace - */ -define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG', 'http://search.yahoo.com/mrss'); - -/** - * iTunes RSS Namespace - */ -define('SIMPLEPIE_NAMESPACE_ITUNES', 'http://www.itunes.com/dtds/podcast-1.0.dtd'); - -/** - * XHTML Namespace - */ -define('SIMPLEPIE_NAMESPACE_XHTML', 'http://www.w3.org/1999/xhtml'); - -/** - * IANA Link Relations Registry - */ -define('SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY', 'http://www.iana.org/assignments/relation/'); - -/** - * Whether we're running on PHP5 - */ -define('SIMPLEPIE_PHP5', version_compare(PHP_VERSION, '5.0.0', '>=')); - -/** - * No file source - */ -define('SIMPLEPIE_FILE_SOURCE_NONE', 0); - -/** - * Remote file source - */ -define('SIMPLEPIE_FILE_SOURCE_REMOTE', 1); - -/** - * Local file source - */ -define('SIMPLEPIE_FILE_SOURCE_LOCAL', 2); - -/** - * fsockopen() file source - */ -define('SIMPLEPIE_FILE_SOURCE_FSOCKOPEN', 4); - -/** - * cURL file source - */ -define('SIMPLEPIE_FILE_SOURCE_CURL', 8); - -/** - * file_get_contents() file source - */ -define('SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS', 16); - -/** - * SimplePie - * - * @package SimplePie - */ -class SimplePie -{ - /** - * @var array Raw data - * @access private - */ - var $data = array(); - - /** - * @var mixed Error string - * @access private - */ - var $error; - - /** - * @var object Instance of SimplePie_Sanitize (or other class) - * @see SimplePie::set_sanitize_class() - * @access private - */ - var $sanitize; - - /** - * @var string SimplePie Useragent - * @see SimplePie::set_useragent() - * @access private - */ - var $useragent = SIMPLEPIE_USERAGENT; - - /** - * @var string Feed URL - * @see SimplePie::set_feed_url() - * @access private - */ - var $feed_url; - - /** - * @var object Instance of SimplePie_File to use as a feed - * @see SimplePie::set_file() - * @access private - */ - var $file; - - /** - * @var string Raw feed data - * @see SimplePie::set_raw_data() - * @access private - */ - var $raw_data; - - /** - * @var int Timeout for fetching remote files - * @see SimplePie::set_timeout() - * @access private - */ - var $timeout = 10; - - /** - * @var bool Forces fsockopen() to be used for remote files instead - * of cURL, even if a new enough version is installed - * @see SimplePie::force_fsockopen() - * @access private - */ - var $force_fsockopen = false; - - /** - * @var bool Force the given data/URL to be treated as a feed no matter what - * it appears like - * @see SimplePie::force_feed() - * @access private - */ - var $force_feed = false; - - /** - * @var bool Enable/Disable XML dump - * @see SimplePie::enable_xml_dump() - * @access private - */ - var $xml_dump = false; - - /** - * @var bool Enable/Disable Caching - * @see SimplePie::enable_cache() - * @access private - */ - var $cache = true; - - /** - * @var int Cache duration (in seconds) - * @see SimplePie::set_cache_duration() - * @access private - */ - var $cache_duration = 3600; - - /** - * @var int Auto-discovery cache duration (in seconds) - * @see SimplePie::set_autodiscovery_cache_duration() - * @access private - */ - var $autodiscovery_cache_duration = 604800; // 7 Days. - - /** - * @var string Cache location (relative to executing script) - * @see SimplePie::set_cache_location() - * @access private - */ - var $cache_location = './cache'; - - /** - * @var string Function that creates the cache filename - * @see SimplePie::set_cache_name_function() - * @access private - */ - var $cache_name_function = 'md5'; - - /** - * @var bool Reorder feed by date descending - * @see SimplePie::enable_order_by_date() - * @access private - */ - var $order_by_date = true; - - /** - * @var mixed Force input encoding to be set to the follow value - * (false, or anything type-cast to false, disables this feature) - * @see SimplePie::set_input_encoding() - * @access private - */ - var $input_encoding = false; - - /** - * @var int Feed Autodiscovery Level - * @see SimplePie::set_autodiscovery_level() - * @access private - */ - var $autodiscovery = SIMPLEPIE_LOCATOR_ALL; - - /** - * @var string Class used for caching feeds - * @see SimplePie::set_cache_class() - * @access private - */ - var $cache_class = 'SimplePie_Cache'; - - /** - * @var string Class used for locating feeds - * @see SimplePie::set_locator_class() - * @access private - */ - var $locator_class = 'SimplePie_Locator'; - - /** - * @var string Class used for parsing feeds - * @see SimplePie::set_parser_class() - * @access private - */ - var $parser_class = 'SimplePie_Parser'; - - /** - * @var string Class used for fetching feeds - * @see SimplePie::set_file_class() - * @access private - */ - var $file_class = 'SimplePie_File'; - - /** - * @var string Class used for items - * @see SimplePie::set_item_class() - * @access private - */ - var $item_class = 'SimplePie_Item'; - - /** - * @var string Class used for authors - * @see SimplePie::set_author_class() - * @access private - */ - var $author_class = 'SimplePie_Author'; - - /** - * @var string Class used for categories - * @see SimplePie::set_category_class() - * @access private - */ - var $category_class = 'SimplePie_Category'; - - /** - * @var string Class used for enclosures - * @see SimplePie::set_enclosures_class() - * @access private - */ - var $enclosure_class = 'SimplePie_Enclosure'; - - /** - * @var string Class used for Media RSS <media:text> captions - * @see SimplePie::set_caption_class() - * @access private - */ - var $caption_class = 'SimplePie_Caption'; - - /** - * @var string Class used for Media RSS <media:copyright> - * @see SimplePie::set_copyright_class() - * @access private - */ - var $copyright_class = 'SimplePie_Copyright'; - - /** - * @var string Class used for Media RSS <media:credit> - * @see SimplePie::set_credit_class() - * @access private - */ - var $credit_class = 'SimplePie_Credit'; - - /** - * @var string Class used for Media RSS <media:rating> - * @see SimplePie::set_rating_class() - * @access private - */ - var $rating_class = 'SimplePie_Rating'; - - /** - * @var string Class used for Media RSS <media:restriction> - * @see SimplePie::set_restriction_class() - * @access private - */ - var $restriction_class = 'SimplePie_Restriction'; - - /** - * @var string Class used for content-type sniffing - * @see SimplePie::set_content_type_sniffer_class() - * @access private - */ - var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer'; - - /** - * @var string Class used for item sources. - * @see SimplePie::set_source_class() - * @access private - */ - var $source_class = 'SimplePie_Source'; - - /** - * @var mixed Set javascript query string parameter (false, or - * anything type-cast to false, disables this feature) - * @see SimplePie::set_javascript() - * @access private - */ - var $javascript = 'js'; - - /** - * @var int Maximum number of feeds to check with autodiscovery - * @see SimplePie::set_max_checked_feeds() - * @access private - */ - var $max_checked_feeds = 10; - - /** - * @var array All the feeds found during the autodiscovery process - * @see SimplePie::get_all_discovered_feeds() - * @access private - */ - var $all_discovered_feeds = array(); - - /** - * @var string Web-accessible path to the handler_favicon.php file. - * @see SimplePie::set_favicon_handler() - * @access private - */ - var $favicon_handler = ''; - - /** - * @var string Web-accessible path to the handler_image.php file. - * @see SimplePie::set_image_handler() - * @access private - */ - var $image_handler = ''; - - /** - * @var array Stores the URLs when multiple feeds are being initialized. - * @see SimplePie::set_feed_url() - * @access private - */ - var $multifeed_url = array(); - - /** - * @var array Stores SimplePie objects when multiple feeds initialized. - * @access private - */ - var $multifeed_objects = array(); - - /** - * @var array Stores the get_object_vars() array for use with multifeeds. - * @see SimplePie::set_feed_url() - * @access private - */ - var $config_settings = null; - - /** - * @var integer Stores the number of items to return per-feed with multifeeds. - * @see SimplePie::set_item_limit() - * @access private - */ - var $item_limit = 0; - - /** - * @var array Stores the default attributes to be stripped by strip_attributes(). - * @see SimplePie::strip_attributes() - * @access private - */ - var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'); - - /** - * @var array Stores the default tags to be stripped by strip_htmltags(). - * @see SimplePie::strip_htmltags() - * @access private - */ - var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'); - - /** - * The SimplePie class contains feed level data and options - * - * There are two ways that you can create a new SimplePie object. The first - * is by passing a feed URL as a parameter to the SimplePie constructor - * (as well as optionally setting the cache location and cache expiry). This - * will initialise the whole feed with all of the default settings, and you - * can begin accessing methods and properties immediately. - * - * The second way is to create the SimplePie object with no parameters - * at all. This will enable you to set configuration options. After setting - * them, you must initialise the feed using $feed->init(). At that point the - * object's methods and properties will be available to you. This format is - * what is used throughout this documentation. - * - * @access public - * @since 1.0 Preview Release - * @param string $feed_url This is the URL you want to parse. - * @param string $cache_location This is where you want the cache to be stored. - * @param int $cache_duration This is the number of seconds that you want to store the cache file for. - */ - function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null) - { - // Other objects, instances created here so we can set options on them - $this->sanitize = new SimplePie_Sanitize; - - // Set options if they're passed to the constructor - if ($cache_location !== null) - { - $this->set_cache_location($cache_location); - } - - if ($cache_duration !== null) - { - $this->set_cache_duration($cache_duration); - } - - // Only init the script if we're passed a feed URL - if ($feed_url !== null) - { - $this->set_feed_url($feed_url); - $this->init(); - } - } - - /** - * Used for converting object to a string - */ - function __toString() - { - return md5(serialize($this->data)); - } - - /** - * Remove items that link back to this before destroying this object - */ - function __destruct() - { - if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode')) - { - if (!empty($this->data['items'])) - { - foreach ($this->data['items'] as $item) - { - $item->__destruct(); - } - unset($item, $this->data['items']); - } - if (!empty($this->data['ordered_items'])) - { - foreach ($this->data['ordered_items'] as $item) - { - $item->__destruct(); - } - unset($item, $this->data['ordered_items']); - } - } - } - - /** - * Force the given data/URL to be treated as a feed no matter what it - * appears like - * - * @access public - * @since 1.1 - * @param bool $enable Force the given data/URL to be treated as a feed - */ - function force_feed($enable = false) - { - $this->force_feed = (bool) $enable; - } - - /** - * This is the URL of the feed you want to parse. - * - * This allows you to enter the URL of the feed you want to parse, or the - * website you want to try to use auto-discovery on. This takes priority - * over any set raw data. - * - * You can set multiple feeds to mash together by passing an array instead - * of a string for the $url. Remember that with each additional feed comes - * additional processing and resources. - * - * @access public - * @since 1.0 Preview Release - * @param mixed $url This is the URL (or array of URLs) that you want to parse. - * @see SimplePie::set_raw_data() - */ - function set_feed_url($url) - { - if (is_array($url)) - { - $this->multifeed_url = array(); - foreach ($url as $value) - { - $this->multifeed_url[] = SimplePie_Misc::fix_protocol($value, 1); - } - } - else - { - $this->feed_url = SimplePie_Misc::fix_protocol($url, 1); - } - } - - /** - * Provides an instance of SimplePie_File to use as a feed - * - * @access public - * @param object &$file Instance of SimplePie_File (or subclass) - * @return bool True on success, false on failure - */ - function set_file(&$file) - { - if (is_a($file, 'SimplePie_File')) - { - $this->feed_url = $file->url; - $this->file =& $file; - return true; - } - return false; - } - - /** - * Allows you to use a string of RSS/Atom data instead of a remote feed. - * - * If you have a feed available as a string in PHP, you can tell SimplePie - * to parse that data string instead of a remote feed. Any set feed URL - * takes precedence. - * - * @access public - * @since 1.0 Beta 3 - * @param string $data RSS or Atom data as a string. - * @see SimplePie::set_feed_url() - */ - function set_raw_data($data) - { - $this->raw_data = $data; - } - - /** - * Allows you to override the default timeout for fetching remote feeds. - * - * This allows you to change the maximum time the feed's server to respond - * and send the feed back. - * - * @access public - * @since 1.0 Beta 3 - * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed. - */ - function set_timeout($timeout = 10) - { - $this->timeout = (int) $timeout; - } - - /** - * Forces SimplePie to use fsockopen() instead of the preferred cURL - * functions. - * - * @access public - * @since 1.0 Beta 3 - * @param bool $enable Force fsockopen() to be used - */ - function force_fsockopen($enable = false) - { - $this->force_fsockopen = (bool) $enable; - } - - /** - * Outputs the raw XML content of the feed, after it has gone through - * SimplePie's filters. - * - * Used only for debugging, this function will output the XML content as - * text/xml. When SimplePie reads in a feed, it does a bit of cleaning up - * before trying to parse it. Many parts of the feed are re-written in - * memory, and in the end, you have a parsable feed. XML dump shows you the - * actual XML that SimplePie tries to parse, which may or may not be very - * different from the original feed. - * - * @access public - * @since 1.0 Preview Release - * @param bool $enable Enable XML dump - */ - function enable_xml_dump($enable = false) - { - $this->xml_dump = (bool) $enable; - } - - /** - * Enables/disables caching in SimplePie. - * - * This option allows you to disable caching all-together in SimplePie. - * However, disabling the cache can lead to longer load times. - * - * @access public - * @since 1.0 Preview Release - * @param bool $enable Enable caching - */ - function enable_cache($enable = true) - { - $this->cache = (bool) $enable; - } - - /** - * Set the length of time (in seconds) that the contents of a feed - * will be cached. - * - * @access public - * @param int $seconds The feed content cache duration. - */ - function set_cache_duration($seconds = 3600) - { - $this->cache_duration = (int) $seconds; - } - - /** - * Set the length of time (in seconds) that the autodiscovered feed - * URL will be cached. - * - * @access public - * @param int $seconds The autodiscovered feed URL cache duration. - */ - function set_autodiscovery_cache_duration($seconds = 604800) - { - $this->autodiscovery_cache_duration = (int) $seconds; - } - - /** - * Set the file system location where the cached files should be stored. - * - * @access public - * @param string $location The file system location. - */ - function set_cache_location($location = './cache') - { - $this->cache_location = (string) $location; - } - - /** - * Determines whether feed items should be sorted into reverse chronological order. - * - * @access public - * @param bool $enable Sort as reverse chronological order. - */ - function enable_order_by_date($enable = true) - { - $this->order_by_date = (bool) $enable; - } - - /** - * Allows you to override the character encoding reported by the feed. - * - * @access public - * @param string $encoding Character encoding. - */ - function set_input_encoding($encoding = false) - { - if ($encoding) - { - $this->input_encoding = (string) $encoding; - } - else - { - $this->input_encoding = false; - } - } - - /** - * Set how much feed autodiscovery to do - * - * @access public - * @see SIMPLEPIE_LOCATOR_NONE - * @see SIMPLEPIE_LOCATOR_AUTODISCOVERY - * @see SIMPLEPIE_LOCATOR_LOCAL_EXTENSION - * @see SIMPLEPIE_LOCATOR_LOCAL_BODY - * @see SIMPLEPIE_LOCATOR_REMOTE_EXTENSION - * @see SIMPLEPIE_LOCATOR_REMOTE_BODY - * @see SIMPLEPIE_LOCATOR_ALL - * @param int $level Feed Autodiscovery Level (level can be a - * combination of the above constants, see bitwise OR operator) - */ - function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL) - { - $this->autodiscovery = (int) $level; - } - - /** - * Allows you to change which class SimplePie uses for caching. - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_cache_class($class = 'SimplePie_Cache') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Cache')) - { - $this->cache_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for auto-discovery. - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_locator_class($class = 'SimplePie_Locator') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Locator')) - { - $this->locator_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for XML parsing. - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_parser_class($class = 'SimplePie_Parser') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Parser')) - { - $this->parser_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for remote file fetching. - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_file_class($class = 'SimplePie_File') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_File')) - { - $this->file_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for data sanitization. - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_sanitize_class($class = 'SimplePie_Sanitize') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Sanitize')) - { - $this->sanitize = new $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for handling feed items. - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_item_class($class = 'SimplePie_Item') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Item')) - { - $this->item_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for handling author data. - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_author_class($class = 'SimplePie_Author') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Author')) - { - $this->author_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for handling category data. - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_category_class($class = 'SimplePie_Category') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Category')) - { - $this->category_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for feed enclosures. - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_enclosure_class($class = 'SimplePie_Enclosure') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Enclosure')) - { - $this->enclosure_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for <media:text> captions - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_caption_class($class = 'SimplePie_Caption') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Caption')) - { - $this->caption_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for <media:copyright> - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_copyright_class($class = 'SimplePie_Copyright') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Copyright')) - { - $this->copyright_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for <media:credit> - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_credit_class($class = 'SimplePie_Credit') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Credit')) - { - $this->credit_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for <media:rating> - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_rating_class($class = 'SimplePie_Rating') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Rating')) - { - $this->rating_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for <media:restriction> - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_restriction_class($class = 'SimplePie_Restriction') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Restriction')) - { - $this->restriction_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses for content-type sniffing. - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_content_type_sniffer_class($class = 'SimplePie_Content_Type_Sniffer') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Content_Type_Sniffer')) - { - $this->content_type_sniffer_class = $class; - return true; - } - return false; - } - - /** - * Allows you to change which class SimplePie uses item sources. - * Useful when you are overloading or extending SimplePie's default classes. - * - * @access public - * @param string $class Name of custom class. - * @link http://php.net/manual/en/keyword.extends.php PHP4 extends documentation - * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation - */ - function set_source_class($class = 'SimplePie_Source') - { - if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Source')) - { - $this->source_class = $class; - return true; - } - return false; - } - - /** - * Allows you to override the default user agent string. - * - * @access public - * @param string $ua New user agent string. - */ - function set_useragent($ua = SIMPLEPIE_USERAGENT) - { - $this->useragent = (string) $ua; - } - - /** - * Set callback function to create cache filename with - * - * @access public - * @param mixed $function Callback function - */ - function set_cache_name_function($function = 'md5') - { - if (is_callable($function)) - { - $this->cache_name_function = $function; - } - } - - /** - * Set javascript query string parameter - * - * @access public - * @param mixed $get Javascript query string parameter - */ - function set_javascript($get = 'js') - { - if ($get) - { - $this->javascript = (string) $get; - } - else - { - $this->javascript = false; - } - } - - /** - * Set options to make SP as fast as possible. Forgoes a - * substantial amount of data sanitization in favor of speed. - * - * @access public - * @param bool $set Whether to set them or not - */ - function set_stupidly_fast($set = false) - { - if ($set) - { - $this->enable_order_by_date(false); - $this->remove_div(false); - $this->strip_comments(false); - $this->strip_htmltags(false); - $this->strip_attributes(false); - $this->set_image_handler(false); - } - } - - /** - * Set maximum number of feeds to check with autodiscovery - * - * @access public - * @param int $max Maximum number of feeds to check - */ - function set_max_checked_feeds($max = 10) - { - $this->max_checked_feeds = (int) $max; - } - - function remove_div($enable = true) - { - $this->sanitize->remove_div($enable); - } - - function strip_htmltags($tags = '', $encode = null) - { - if ($tags === '') - { - $tags = $this->strip_htmltags; - } - $this->sanitize->strip_htmltags($tags); - if ($encode !== null) - { - $this->sanitize->encode_instead_of_strip($tags); - } - } - - function encode_instead_of_strip($enable = true) - { - $this->sanitize->encode_instead_of_strip($enable); - } - - function strip_attributes($attribs = '') - { - if ($attribs === '') - { - $attribs = $this->strip_attributes; - } - $this->sanitize->strip_attributes($attribs); - } - - function set_output_encoding($encoding = 'UTF-8') - { - $this->sanitize->set_output_encoding($encoding); - } - - function strip_comments($strip = false) - { - $this->sanitize->strip_comments($strip); - } - - /** - * Set element/attribute key/value pairs of HTML attributes - * containing URLs that need to be resolved relative to the feed - * - * @access public - * @since 1.0 - * @param array $element_attribute Element/attribute key/value pairs - */ - function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite')) - { - $this->sanitize->set_url_replacements($element_attribute); - } - - /** - * Set the handler to enable the display of cached favicons. - * - * @access public - * @param str $page Web-accessible path to the handler_favicon.php file. - * @param str $qs The query string that the value should be passed to. - */ - function set_favicon_handler($page = false, $qs = 'i') - { - if ($page !== false) - { - $this->favicon_handler = $page . '?' . $qs . '='; - } - else - { - $this->favicon_handler = ''; - } - } - - /** - * Set the handler to enable the display of cached images. - * - * @access public - * @param str $page Web-accessible path to the handler_image.php file. - * @param str $qs The query string that the value should be passed to. - */ - function set_image_handler($page = false, $qs = 'i') - { - if ($page !== false) - { - $this->sanitize->set_image_handler($page . '?' . $qs . '='); - } - else - { - $this->image_handler = ''; - } - } - - /** - * Set the limit for items returned per-feed with multifeeds. - * - * @access public - * @param integer $limit The maximum number of items to return. - */ - function set_item_limit($limit = 0) - { - $this->item_limit = (int) $limit; - } - - function init() - { - // Check absolute bare minimum requirements. - if ((function_exists('version_compare') && version_compare(PHP_VERSION, '4.3.0', '<')) || !extension_loaded('xml') || !extension_loaded('pcre')) - { - return false; - } - // Then check the xml extension is sane (i.e., libxml 2.7.x issue on PHP < 5.2.9 and libxml 2.7.0 to 2.7.2 on any version) if we don't have xmlreader. - elseif (!extension_loaded('xmlreader')) - { - static $xml_is_sane = null; - if ($xml_is_sane === null) - { - $parser_check = xml_parser_create(); - xml_parse_into_struct($parser_check, '<foo>&</foo>', $values); - xml_parser_free($parser_check); - $xml_is_sane = isset($values[0]['value']); - } - if (!$xml_is_sane) - { - return false; - } - } - - if (isset($_GET[$this->javascript])) - { - SimplePie_Misc::output_javascript(); - exit; - } - - // Pass whatever was set with config options over to the sanitizer. - $this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->cache_class); - $this->sanitize->pass_file_data($this->file_class, $this->timeout, $this->useragent, $this->force_fsockopen); - - if ($this->feed_url !== null || $this->raw_data !== null) - { - $this->data = array(); - $this->multifeed_objects = array(); - $cache = false; - - if ($this->feed_url !== null) - { - $parsed_feed_url = SimplePie_Misc::parse_url($this->feed_url); - // Decide whether to enable caching - if ($this->cache && $parsed_feed_url['scheme'] !== '') - { - $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc'); - } - // If it's enabled and we don't want an XML dump, use the cache - if ($cache && !$this->xml_dump) - { - // Load the Cache - $this->data = $cache->load(); - if (!empty($this->data)) - { - // If the cache is for an outdated build of SimplePie - if (!isset($this->data['build']) || $this->data['build'] !== SIMPLEPIE_BUILD) - { - $cache->unlink(); - $this->data = array(); - } - // If we've hit a collision just rerun it with caching disabled - elseif (isset($this->data['url']) && $this->data['url'] !== $this->feed_url) - { - $cache = false; - $this->data = array(); - } - // If we've got a non feed_url stored (if the page isn't actually a feed, or is a redirect) use that URL. - elseif (isset($this->data['feed_url'])) - { - // If the autodiscovery cache is still valid use it. - if ($cache->mtime() + $this->autodiscovery_cache_duration > time()) - { - // Do not need to do feed autodiscovery yet. - if ($this->data['feed_url'] === $this->data['url']) - { - $cache->unlink(); - $this->data = array(); - } - else - { - $this->set_feed_url($this->data['feed_url']); - return $this->init(); - } - } - } - // Check if the cache has been updated - elseif ($cache->mtime() + $this->cache_duration < time()) - { - // If we have last-modified and/or etag set - if (isset($this->data['headers']['last-modified']) || isset($this->data['headers']['etag'])) - { - $headers = array(); - if (isset($this->data['headers']['last-modified'])) - { - $headers['if-modified-since'] = $this->data['headers']['last-modified']; - } - if (isset($this->data['headers']['etag'])) - { - $headers['if-none-match'] = '"' . $this->data['headers']['etag'] . '"'; - } - $file = new $this->file_class($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen); - if ($file->success) - { - if ($file->status_code === 304) - { - $cache->touch(); - return true; - } - else - { - $headers = $file->headers; - } - } - else - { - unset($file); - } - } - } - // If the cache is still valid, just return true - else - { - return true; - } - } - // If the cache is empty, delete it - else - { - $cache->unlink(); - $this->data = array(); - } - } - // If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it. - if (!isset($file)) - { - if (is_a($this->file, 'SimplePie_File') && $this->file->url === $this->feed_url) - { - $file =& $this->file; - } - else - { - $file = new $this->file_class($this->feed_url, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen); - } - } - // If the file connection has an error, set SimplePie::error to that and quit - if (!$file->success && !($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300))) - { - $this->error = $file->error; - if (!empty($this->data)) - { - return true; - } - else - { - return false; - } - } - - if (!$this->force_feed) - { - // Check if the supplied URL is a feed, if it isn't, look for it. - $locate = new $this->locator_class($file, $this->timeout, $this->useragent, $this->file_class, $this->max_checked_feeds, $this->content_type_sniffer_class); - if (!$locate->is_feed($file)) - { - // We need to unset this so that if SimplePie::set_file() has been called that object is untouched - unset($file); - if ($file = $locate->find($this->autodiscovery, $this->all_discovered_feeds)) - { - if ($cache) - { - $this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD); - if (!$cache->save($this)) - { - trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING); - } - $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc'); - } - $this->feed_url = $file->url; - } - else - { - $this->error = "A feed could not be found at $this->feed_url. A feed with an invalid mime type may fall victim to this error, or " . SIMPLEPIE_NAME . " was unable to auto-discover it.. Use force_feed() if you are certain this URL is a real feed."; - SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__); - return false; - } - } - $locate = null; - } - - $headers = $file->headers; - $data = $file->body; - $sniffer = new $this->content_type_sniffer_class($file); - $sniffed = $sniffer->get_type(); - } - else - { - $data = $this->raw_data; - } - - // Set up array of possible encodings - $encodings = array(); - - // First check to see if input has been overridden. - if ($this->input_encoding !== false) - { - $encodings[] = $this->input_encoding; - } - - $application_types = array('application/xml', 'application/xml-dtd', 'application/xml-external-parsed-entity'); - $text_types = array('text/xml', 'text/xml-external-parsed-entity'); - - // RFC 3023 (only applies to sniffed content) - if (isset($sniffed)) - { - if (in_array($sniffed, $application_types) || substr($sniffed, 0, 12) === 'application/' && substr($sniffed, -4) === '+xml') - { - if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset)) - { - $encodings[] = strtoupper($charset[1]); - } - $encodings = array_merge($encodings, SimplePie_Misc::xml_encoding($data)); - $encodings[] = 'UTF-8'; - } - elseif (in_array($sniffed, $text_types) || substr($sniffed, 0, 5) === 'text/' && substr($sniffed, -4) === '+xml') - { - if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset)) - { - $encodings[] = $charset[1]; - } - $encodings[] = 'US-ASCII'; - } - // Text MIME-type default - elseif (substr($sniffed, 0, 5) === 'text/') - { - $encodings[] = 'US-ASCII'; - } - } - - // Fallback to XML 1.0 Appendix F.1/UTF-8/ISO-8859-1 - $encodings = array_merge($encodings, SimplePie_Misc::xml_encoding($data)); - $encodings[] = 'UTF-8'; - $encodings[] = 'ISO-8859-1'; - - // There's no point in trying an encoding twice - $encodings = array_unique($encodings); - - // If we want the XML, just output that with the most likely encoding and quit - if ($this->xml_dump) - { - header('Content-type: text/xml; charset=' . $encodings[0]); - echo $data; - exit; - } - - // Loop through each possible encoding, till we return something, or run out of possibilities - foreach ($encodings as $encoding) - { - // Change the encoding to UTF-8 (as we always use UTF-8 internally) - if ($utf8_data = SimplePie_Misc::change_encoding($data, $encoding, 'UTF-8')) - { - // Create new parser - $parser = new $this->parser_class(); - - // If it's parsed fine - if ($parser->parse($utf8_data, 'UTF-8')) - { - $this->data = $parser->get_data(); - if ($this->get_type() & ~SIMPLEPIE_TYPE_NONE) - { - if (isset($headers)) - { - $this->data['headers'] = $headers; - } - $this->data['build'] = SIMPLEPIE_BUILD; - - // Cache the file if caching is enabled - if ($cache && !$cache->save($this)) - { - trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING); - } - return true; - } - else - { - $this->error = "A feed could not be found at $this->feed_url. This does not appear to be a valid RSS or Atom feed."; - SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__); - return false; - } - } - } - } - if (isset($parser)) - { - // We have an error, just set SimplePie_Misc::error to it and quit - $this->error = sprintf('This XML document is invalid, likely due to invalid characters. XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column()); - } - else - { - $this->error = 'The data could not be converted to UTF-8. You MUST have either the iconv or mbstring extension installed. Upgrading to PHP 5.x (which includes iconv) is highly recommended.'; - } - SimplePie_Misc::error($this->error, E_USER_NOTICE, __FILE__, __LINE__); - return false; - } - elseif (!empty($this->multifeed_url)) - { - $i = 0; - $success = 0; - $this->multifeed_objects = array(); - foreach ($this->multifeed_url as $url) - { - if (SIMPLEPIE_PHP5) - { - // This keyword needs to defy coding standards for PHP4 compatibility - $this->multifeed_objects[$i] = clone($this); - } - else - { - $this->multifeed_objects[$i] = $this; - } - $this->multifeed_objects[$i]->set_feed_url($url); - $success |= $this->multifeed_objects[$i]->init(); - $i++; - } - return (bool) $success; - } - else - { - return false; - } - } - - /** - * Return the error message for the occured error - * - * @access public - * @return string Error message - */ - function error() - { - return $this->error; - } - - function get_encoding() - { - return $this->sanitize->output_encoding; - } - - function handle_content_type($mime = 'text/html') - { - if (!headers_sent()) - { - $header = "Content-type: $mime;"; - if ($this->get_encoding()) - { - $header .= ' charset=' . $this->get_encoding(); - } - else - { - $header .= ' charset=UTF-8'; - } - header($header); - } - } - - function get_type() - { - if (!isset($this->data['type'])) - { - $this->data['type'] = SIMPLEPIE_TYPE_ALL; - if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'])) - { - $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_10; - } - elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'])) - { - $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_03; - } - elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'])) - { - if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['channel']) - || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['image']) - || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']) - || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['textinput'])) - { - $this->data['type'] &= SIMPLEPIE_TYPE_RSS_10; - } - if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['channel']) - || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['image']) - || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']) - || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['textinput'])) - { - $this->data['type'] &= SIMPLEPIE_TYPE_RSS_090; - } - } - elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'])) - { - $this->data['type'] &= SIMPLEPIE_TYPE_RSS_ALL; - if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['attribs']['']['version'])) - { - switch (trim($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['attribs']['']['version'])) - { - case '0.91': - $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091; - if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['skiphours']['hour'][0]['data'])) - { - switch (trim($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['skiphours']['hour'][0]['data'])) - { - case '0': - $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_NETSCAPE; - break; - - case '24': - $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_USERLAND; - break; - } - } - break; - - case '0.92': - $this->data['type'] &= SIMPLEPIE_TYPE_RSS_092; - break; - - case '0.93': - $this->data['type'] &= SIMPLEPIE_TYPE_RSS_093; - break; - - case '0.94': - $this->data['type'] &= SIMPLEPIE_TYPE_RSS_094; - break; - - case '2.0': - $this->data['type'] &= SIMPLEPIE_TYPE_RSS_20; - break; - } - } - } - else - { - $this->data['type'] = SIMPLEPIE_TYPE_NONE; - } - } - return $this->data['type']; - } - - /** - * Returns the URL for the favicon of the feed's website. - * - * @todo Cache atom:icon - * @access public - * @since 1.0 - */ - function get_favicon() - { - if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); - } - elseif (($url = $this->get_link()) !== null && preg_match('/^http(s)?:\/\//i', $url)) - { - $favicon = SimplePie_Misc::absolutize_url('/favicon.ico', $url); - - if ($this->cache && $this->favicon_handler) - { - $favicon_filename = call_user_func($this->cache_name_function, $favicon); - $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $favicon_filename, 'spi'); - - if ($cache->load()) - { - return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI); - } - else - { - $file = new $this->file_class($favicon, $this->timeout / 10, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen); - - if ($file->success && ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300)) && strlen($file->body) > 0) - { - $sniffer = new $this->content_type_sniffer_class($file); - if (substr($sniffer->get_type(), 0, 6) === 'image/') - { - if ($cache->save(array('headers' => $file->headers, 'body' => $file->body))) - { - return $this->sanitize($this->favicon_handler . $favicon_filename, SIMPLEPIE_CONSTRUCT_IRI); - } - else - { - trigger_error("$cache->name is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING); - return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI); - } - } - // not an image - else - { - return false; - } - } - } - } - else - { - return $this->sanitize($favicon, SIMPLEPIE_CONSTRUCT_IRI); - } - } - return false; - } - - /** - * @todo If we have a perm redirect we should return the new URL - * @todo When we make the above change, let's support <itunes:new-feed-url> as well - * @todo Also, |atom:link|@rel=self - */ - function subscribe_url() - { - if ($this->feed_url !== null) - { - return $this->sanitize($this->feed_url, SIMPLEPIE_CONSTRUCT_IRI); - } - else - { - return null; - } - } - - function subscribe_feed() - { - if ($this->feed_url !== null) - { - return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI); - } - else - { - return null; - } - } - - function subscribe_outlook() - { - if ($this->feed_url !== null) - { - return $this->sanitize('outlook' . SimplePie_Misc::fix_protocol($this->feed_url, 2), SIMPLEPIE_CONSTRUCT_IRI); - } - else - { - return null; - } - } - - function subscribe_podcast() - { - if ($this->feed_url !== null) - { - return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 3), SIMPLEPIE_CONSTRUCT_IRI); - } - else - { - return null; - } - } - - function subscribe_itunes() - { - if ($this->feed_url !== null) - { - return $this->sanitize(SimplePie_Misc::fix_protocol($this->feed_url, 4), SIMPLEPIE_CONSTRUCT_IRI); - } - else - { - return null; - } - } - - /** - * Creates the subscribe_* methods' return data - * - * @access private - * @param string $feed_url String to prefix to the feed URL - * @param string $site_url String to prefix to the site URL (and - * suffix to the feed URL) - * @return mixed URL if feed exists, false otherwise - */ - function subscribe_service($feed_url, $site_url = null) - { - if ($this->subscribe_url()) - { - $return = $feed_url . rawurlencode($this->feed_url); - if ($site_url !== null && $this->get_link() !== null) - { - $return .= $site_url . rawurlencode($this->get_link()); - } - return $this->sanitize($return, SIMPLEPIE_CONSTRUCT_IRI); - } - else - { - return null; - } - } - - function subscribe_aol() - { - return $this->subscribe_service('http://feeds.my.aol.com/add.jsp?url='); - } - - function subscribe_bloglines() - { - return $this->subscribe_service('http://www.bloglines.com/sub/'); - } - - function subscribe_eskobo() - { - return $this->subscribe_service('http://www.eskobo.com/?AddToMyPage='); - } - - function subscribe_feedfeeds() - { - return $this->subscribe_service('http://www.feedfeeds.com/add?feed='); - } - - function subscribe_feedster() - { - return $this->subscribe_service('http://www.feedster.com/myfeedster.php?action=addrss&confirm=no&rssurl='); - } - - function subscribe_google() - { - return $this->subscribe_service('http://fusion.google.com/add?feedurl='); - } - - function subscribe_gritwire() - { - return $this->subscribe_service('http://my.gritwire.com/feeds/addExternalFeed.aspx?FeedUrl='); - } - - function subscribe_msn() - { - return $this->subscribe_service('http://my.msn.com/addtomymsn.armx?id=rss&ut=', '&ru='); - } - - function subscribe_netvibes() - { - return $this->subscribe_service('http://www.netvibes.com/subscribe.php?url='); - } - - function subscribe_newsburst() - { - return $this->subscribe_service('http://www.newsburst.com/Source/?add='); - } - - function subscribe_newsgator() - { - return $this->subscribe_service('http://www.newsgator.com/ngs/subscriber/subext.aspx?url='); - } - - function subscribe_odeo() - { - return $this->subscribe_service('http://www.odeo.com/listen/subscribe?feed='); - } - - function subscribe_podnova() - { - return $this->subscribe_service('http://www.podnova.com/index_your_podcasts.srf?action=add&url='); - } - - function subscribe_rojo() - { - return $this->subscribe_service('http://www.rojo.com/add-subscription?resource='); - } - - function subscribe_yahoo() - { - return $this->subscribe_service('http://add.my.yahoo.com/rss?url='); - } - - function get_feed_tags($namespace, $tag) - { - $type = $this->get_type(); - if ($type & SIMPLEPIE_TYPE_ATOM_10) - { - if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag])) - { - return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag]; - } - } - if ($type & SIMPLEPIE_TYPE_ATOM_03) - { - if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag])) - { - return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag]; - } - } - if ($type & SIMPLEPIE_TYPE_RSS_RDF) - { - if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag])) - { - return $this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag]; - } - } - if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION) - { - if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][$namespace][$tag])) - { - return $this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][$namespace][$tag]; - } - } - return null; - } - - function get_channel_tags($namespace, $tag) - { - $type = $this->get_type(); - if ($type & SIMPLEPIE_TYPE_ATOM_ALL) - { - if ($return = $this->get_feed_tags($namespace, $tag)) - { - return $return; - } - } - if ($type & SIMPLEPIE_TYPE_RSS_10) - { - if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'channel')) - { - if (isset($channel[0]['child'][$namespace][$tag])) - { - return $channel[0]['child'][$namespace][$tag]; - } - } - } - if ($type & SIMPLEPIE_TYPE_RSS_090) - { - if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'channel')) - { - if (isset($channel[0]['child'][$namespace][$tag])) - { - return $channel[0]['child'][$namespace][$tag]; - } - } - } - if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION) - { - if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'channel')) - { - if (isset($channel[0]['child'][$namespace][$tag])) - { - return $channel[0]['child'][$namespace][$tag]; - } - } - } - return null; - } - - function get_image_tags($namespace, $tag) - { - $type = $this->get_type(); - if ($type & SIMPLEPIE_TYPE_RSS_10) - { - if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'image')) - { - if (isset($image[0]['child'][$namespace][$tag])) - { - return $image[0]['child'][$namespace][$tag]; - } - } - } - if ($type & SIMPLEPIE_TYPE_RSS_090) - { - if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'image')) - { - if (isset($image[0]['child'][$namespace][$tag])) - { - return $image[0]['child'][$namespace][$tag]; - } - } - } - if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION) - { - if ($image = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'image')) - { - if (isset($image[0]['child'][$namespace][$tag])) - { - return $image[0]['child'][$namespace][$tag]; - } - } - } - return null; - } - - function get_base($element = array()) - { - if (!($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION) && !empty($element['xml_base_explicit']) && isset($element['xml_base'])) - { - return $element['xml_base']; - } - elseif ($this->get_link() !== null) - { - return $this->get_link(); - } - else - { - return $this->subscribe_url(); - } - } - - function sanitize($data, $type, $base = '') - { - return $this->sanitize->sanitize($data, $type, $base); - } - - function get_title() - { - if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - return null; - } - } - - function get_category($key = 0) - { - $categories = $this->get_categories(); - if (isset($categories[$key])) - { - return $categories[$key]; - } - else - { - return null; - } - } - - function get_categories() - { - $categories = array(); - - foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category) - { - $term = null; - $scheme = null; - $label = null; - if (isset($category['attribs']['']['term'])) - { - $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($category['attribs']['']['scheme'])) - { - $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($category['attribs']['']['label'])) - { - $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $categories[] = new $this->category_class($term, $scheme, $label); - } - foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category) - { - // This is really the label, but keep this as the term also for BC. - // Label will also work on retrieving because that falls back to term. - $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); - if (isset($category['attribs']['']['domain'])) - { - $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $scheme = null; - } - $categories[] = new $this->category_class($term, $scheme, null); - } - foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category) - { - $categories[] = new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category) - { - $categories[] = new $this->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - - if (!empty($categories)) - { - return SimplePie_Misc::array_unique($categories); - } - else - { - return null; - } - } - - function get_author($key = 0) - { - $authors = $this->get_authors(); - if (isset($authors[$key])) - { - return $authors[$key]; - } - else - { - return null; - } - } - - function get_authors() - { - $authors = array(); - foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author) - { - $name = null; - $uri = null; - $email = null; - $avatar = null; - $name_date = null; - $uri_date = null; - $avatar_date = null; - - if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) - { - $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) - { - $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); - } - if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) - { - $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar'][0]['data'])) - { - $avatar = $this->sanitize($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar'][0])); - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['name-updated'][0]['data'])) - { - $name_date = $author['child']['http://purl.org/macgirvin/dfrn/1.0']['name-updated'][0]['data']; - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['uri-updated'][0]['data'])) - { - $uri_date = $author['child']['http://purl.org/macgirvin/dfrn/1.0']['uri-updated'][0]['data']; - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar-updated'][0]['data'])) - { - $avatar_date = $author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar-updated'][0]['data']; - } - - if ($name !== null || $email !== null || $uri !== null || $avatar !== null || $name_date !== null || $uri_date !== null || $avatar_date !== null ) - { - $authors[] = new $this->author_class($name, $uri, $email, $avatar, $name_date, $uri_date, $avatar_date); - } - } - if ($author = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author')) - { - $name = null; - $url = null; - $email = null; - if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) - { - $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) - { - $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); - } - if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) - { - $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if ($name !== null || $email !== null || $url !== null) - { - $authors[] = new $this->author_class($name, $url, $email); - } - } - foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author) - { - $authors[] = new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author) - { - $authors[] = new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author) - { - $authors[] = new $this->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - - if (!empty($authors)) - { - return SimplePie_Misc::array_unique($authors); - } - else - { - return null; - } - } - - function get_contributor($key = 0) - { - $contributors = $this->get_contributors(); - if (isset($contributors[$key])) - { - return $contributors[$key]; - } - else - { - return null; - } - } - - function get_contributors() - { - $contributors = array(); - foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor) - { - $name = null; - $uri = null; - $email = null; - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) - { - $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) - { - $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) - { - $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if ($name !== null || $email !== null || $uri !== null) - { - $contributors[] = new $this->author_class($name, $uri, $email); - } - } - foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor) - { - $name = null; - $url = null; - $email = null; - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) - { - $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) - { - $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) - { - $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if ($name !== null || $email !== null || $url !== null) - { - $contributors[] = new $this->author_class($name, $url, $email); - } - } - - if (!empty($contributors)) - { - return SimplePie_Misc::array_unique($contributors); - } - else - { - return null; - } - } - - function get_link($key = 0, $rel = 'alternate') - { - $links = $this->get_links($rel); - if (isset($links[$key])) - { - return $links[$key]; - } - else - { - return null; - } - } - - /** - * Added for parity between the parent-level and the item/entry-level. - */ - function get_permalink() - { - return $this->get_link(0); - } - - function get_links($rel = 'alternate') - { - if (!isset($this->data['links'])) - { - $this->data['links'] = array(); - if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link')) - { - foreach ($links as $link) - { - if (isset($link['attribs']['']['href'])) - { - $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; - $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); - } - } - } - if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link')) - { - foreach ($links as $link) - { - if (isset($link['attribs']['']['href'])) - { - $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; - $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); - - } - } - } - if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link')) - { - $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); - } - if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link')) - { - $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); - } - if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link')) - { - $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); - } - - $keys = array_keys($this->data['links']); - foreach ($keys as $key) - { - if (SimplePie_Misc::is_isegment_nz_nc($key)) - { - if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key])) - { - $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]); - $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]; - } - else - { - $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key]; - } - } - elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY) - { - $this->data['links'][substr($key, 41)] =& $this->data['links'][$key]; - } - $this->data['links'][$key] = array_unique($this->data['links'][$key]); - } - } - - if (isset($this->data['links'][$rel])) - { - return $this->data['links'][$rel]; - } - else - { - return null; - } - } - - function get_all_discovered_feeds() - { - return $this->all_discovered_feeds; - } - - function get_description() - { - if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); - } - else - { - return null; - } - } - - function get_copyright() - { - if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'copyright')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - return null; - } - } - - function get_language() - { - if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'language')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang'])) - { - return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang'])) - { - return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang'])) - { - return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif (isset($this->data['headers']['content-language'])) - { - return $this->sanitize($this->data['headers']['content-language'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - return null; - } - } - - function get_latitude() - { - - if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat')) - { - return (float) $return[0]['data']; - } - elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) - { - return (float) $match[1]; - } - else - { - return null; - } - } - - function get_longitude() - { - if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long')) - { - return (float) $return[0]['data']; - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon')) - { - return (float) $return[0]['data']; - } - elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) - { - return (float) $match[2]; - } - else - { - return null; - } - } - - function get_image_title() - { - if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - return null; - } - } - - function get_image_url() - { - if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image')) - { - return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); - } - elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); - } - elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'url')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); - } - elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'url')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); - } - elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'url')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); - } - else - { - return null; - } - } - - function get_image_link() - { - if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); - } - elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); - } - elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); - } - else - { - return null; - } - } - - function get_image_width() - { - if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'width')) - { - return round($return[0]['data']); - } - elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'url')) - { - return 88.0; - } - else - { - return null; - } - } - - function get_image_height() - { - if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'height')) - { - return round($return[0]['data']); - } - elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'url')) - { - return 31.0; - } - else - { - return null; - } - } - - function get_item_quantity($max = 0) - { - $max = (int) $max; - $qty = count($this->get_items()); - if ($max === 0) - { - return $qty; - } - else - { - return ($qty > $max) ? $max : $qty; - } - } - - function get_item($key = 0) - { - $items = $this->get_items(); - if (isset($items[$key])) - { - return $items[$key]; - } - else - { - return null; - } - } - - function get_items($start = 0, $end = 0) - { - if (!isset($this->data['items'])) - { - if (!empty($this->multifeed_objects)) - { - $this->data['items'] = SimplePie::merge_items($this->multifeed_objects, $start, $end, $this->item_limit); - } - else - { - $this->data['items'] = array(); - if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry')) - { - $keys = array_keys($items); - foreach ($keys as $key) - { - $this->data['items'][] = new $this->item_class($this, $items[$key]); - } - } - if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry')) - { - $keys = array_keys($items); - foreach ($keys as $key) - { - $this->data['items'][] = new $this->item_class($this, $items[$key]); - } - } - if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item')) - { - $keys = array_keys($items); - foreach ($keys as $key) - { - $this->data['items'][] = new $this->item_class($this, $items[$key]); - } - } - if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item')) - { - $keys = array_keys($items); - foreach ($keys as $key) - { - $this->data['items'][] = new $this->item_class($this, $items[$key]); - } - } - if ($items = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'item')) - { - $keys = array_keys($items); - foreach ($keys as $key) - { - $this->data['items'][] = new $this->item_class($this, $items[$key]); - } - } - } - } - - if (!empty($this->data['items'])) - { - // If we want to order it by date, check if all items have a date, and then sort it - if ($this->order_by_date && empty($this->multifeed_objects)) - { - if (!isset($this->data['ordered_items'])) - { - $do_sort = true; - foreach ($this->data['items'] as $item) - { - if (!$item->get_date('U')) - { - $do_sort = false; - break; - } - } - $item = null; - $this->data['ordered_items'] = $this->data['items']; - if ($do_sort) - { - usort($this->data['ordered_items'], array(&$this, 'sort_items')); - } - } - $items = $this->data['ordered_items']; - } - else - { - $items = $this->data['items']; - } - - // Slice the data as desired - if ($end === 0) - { - return array_slice($items, $start); - } - else - { - return array_slice($items, $start, $end); - } - } - else - { - return array(); - } - } - - /** - * @static - */ - function sort_items($a, $b) - { - return $a->get_date('U') <= $b->get_date('U'); - } - - /** - * @static - */ - function merge_items($urls, $start = 0, $end = 0, $limit = 0) - { - if (is_array($urls) && sizeof($urls) > 0) - { - $items = array(); - foreach ($urls as $arg) - { - if (is_a($arg, 'SimplePie')) - { - $items = array_merge($items, $arg->get_items(0, $limit)); - } - else - { - trigger_error('Arguments must be SimplePie objects', E_USER_WARNING); - } - } - - $do_sort = true; - foreach ($items as $item) - { - if (!$item->get_date('U')) - { - $do_sort = false; - break; - } - } - $item = null; - if ($do_sort) - { - usort($items, array('SimplePie', 'sort_items')); - } - - if ($end === 0) - { - return array_slice($items, $start); - } - else - { - return array_slice($items, $start, $end); - } - } - else - { - trigger_error('Cannot merge zero SimplePie objects', E_USER_WARNING); - return array(); - } - } -} - -class SimplePie_Item -{ - var $feed; - var $data = array(); - - function SimplePie_Item($feed, $data) - { - $this->feed = $feed; - $this->data = $data; - } - - function __toString() - { - return md5(serialize($this->data)); - } - - /** - * Remove items that link back to this before destroying this object - */ - function __destruct() - { - if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode')) - { - unset($this->feed); - } - } - - function get_item_tags($namespace, $tag) - { - if (isset($this->data['child'][$namespace][$tag])) - { - return $this->data['child'][$namespace][$tag]; - } - else - { - return null; - } - } - - function get_base($element = array()) - { - return $this->feed->get_base($element); - } - - function sanitize($data, $type, $base = '') - { - return $this->feed->sanitize($data, $type, $base); - } - - function get_feed() - { - return $this->feed; - } - - function get_id($hash = false) - { - if (!$hash) - { - if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'id')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'id')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'identifier')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'identifier')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif (($return = $this->get_permalink()) !== null) - { - return $return; - } - elseif (($return = $this->get_title()) !== null) - { - return $return; - } - } - if ($this->get_permalink() !== null || $this->get_title() !== null) - { - return md5($this->get_permalink() . $this->get_title()); - } - else - { - return md5(serialize($this->data)); - } - } - - function get_title() - { - if (!isset($this->data['title'])) - { - if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title')) - { - $this->data['title'] = $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title')) - { - $this->data['title'] = $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title')) - { - $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title')) - { - $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title')) - { - $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title')) - { - $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title')) - { - $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $this->data['title'] = null; - } - } - return $this->data['title']; - } - - function get_description($description_only = false) - { - if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif (!$description_only) - { - return $this->get_content(true); - } - else - { - return null; - } - } - - function get_content($content_only = false) - { - if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_content_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); - } - elseif (!$content_only) - { - return $this->get_description(true); - } - else - { - return null; - } - } - - function get_category($key = 0) - { - $categories = $this->get_categories(); - if (isset($categories[$key])) - { - return $categories[$key]; - } - else - { - return null; - } - } - - function get_categories() - { - $categories = array(); - - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category) - { - $term = null; - $scheme = null; - $label = null; - if (isset($category['attribs']['']['term'])) - { - $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($category['attribs']['']['scheme'])) - { - $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($category['attribs']['']['label'])) - { - $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $categories[] = new $this->feed->category_class($term, $scheme, $label); - } - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category) - { - // This is really the label, but keep this as the term also for BC. - // Label will also work on retrieving because that falls back to term. - $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); - if (isset($category['attribs']['']['domain'])) - { - $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $scheme = null; - } - $categories[] = new $this->feed->category_class($term, $scheme, null); - } - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category) - { - $categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category) - { - $categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - - if (!empty($categories)) - { - return SimplePie_Misc::array_unique($categories); - } - else - { - return null; - } - } - - function get_author($key = 0) - { - $authors = $this->get_authors(); - if (isset($authors[$key])) - { - return $authors[$key]; - } - else - { - return null; - } - } - - function get_contributor($key = 0) - { - $contributors = $this->get_contributors(); - if (isset($contributors[$key])) - { - return $contributors[$key]; - } - else - { - return null; - } - } - - function get_contributors() - { - $contributors = array(); - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor) - { - $name = null; - $uri = null; - $email = null; - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) - { - $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) - { - $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) - { - $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if ($name !== null || $email !== null || $uri !== null) - { - $contributors[] = new $this->feed->author_class($name, $uri, $email); - } - } - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor) - { - $name = null; - $url = null; - $email = null; - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) - { - $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) - { - $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) - { - $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if ($name !== null || $email !== null || $url !== null) - { - $contributors[] = new $this->feed->author_class($name, $url, $email); - } - } - - if (!empty($contributors)) - { - return SimplePie_Misc::array_unique($contributors); - } - else - { - return null; - } - } - - function get_authors() - { - $authors = array(); - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author) - { - $name = null; - $uri = null; - $email = null; - $avatar = null; - $name_date = null; - $uri_date = null; - $avatar_date = null; - if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) - { - $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) - { - $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); - } - if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) - { - $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar'][0]['data'])) - { - $avatar = $this->sanitize($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar'][0])); - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['name-updated'][0]['data'])) - { - $name_date = $author['child']['http://purl.org/macgirvin/dfrn/1.0']['name-updated'][0]['data']; - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['uri-updated'][0]['data'])) - { - $uri_date = $author['child']['http://purl.org/macgirvin/dfrn/1.0']['uri-updated'][0]['data']; - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar-updated'][0]['data'])) - { - $avatar_date = $author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar-updated'][0]['data']; - } - - if ($name !== null || $email !== null || $uri !== null || $avatar !== null || $name_date !== null || $uri_date !== null || $avatar_date !== null ) - { - $authors[] = new $this->feed->author_class($name, $uri, $email, $avatar, $name_date, $uri_date, $avatar_date); - } - } - if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author')) - { - $name = null; - $url = null; - $email = null; - if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) - { - $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) - { - $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); - } - if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) - { - $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if ($name !== null || $email !== null || $url !== null) - { - $authors[] = new $this->feed->author_class($name, $url, $email); - } - } - if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'author')) - { - $authors[] = new $this->feed->author_class(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); - } - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author) - { - $authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author) - { - $authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author) - { - $authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - - if (!empty($authors)) - { - return SimplePie_Misc::array_unique($authors); - } - elseif (($source = $this->get_source()) && ($authors = $source->get_authors())) - { - return $authors; - } - elseif ($authors = $this->feed->get_authors()) - { - return $authors; - } - else - { - return null; - } - } - - function get_copyright() - { - if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - return null; - } - } - - function get_date($date_format = 'j F Y, g:i a') - { - if (!isset($this->data['date'])) - { - if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published')) - { - $this->data['date']['raw'] = $return[0]['data']; - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated')) - { - $this->data['date']['raw'] = $return[0]['data']; - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued')) - { - $this->data['date']['raw'] = $return[0]['data']; - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created')) - { - $this->data['date']['raw'] = $return[0]['data']; - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified')) - { - $this->data['date']['raw'] = $return[0]['data']; - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'pubDate')) - { - $this->data['date']['raw'] = $return[0]['data']; - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date')) - { - $this->data['date']['raw'] = $return[0]['data']; - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date')) - { - $this->data['date']['raw'] = $return[0]['data']; - } - - if (!empty($this->data['date']['raw'])) - { - $parser = SimplePie_Parse_Date::get(); - $this->data['date']['parsed'] = $parser->parse($this->data['date']['raw']); - } - else - { - $this->data['date'] = null; - } - } - if ($this->data['date']) - { - $date_format = (string) $date_format; - switch ($date_format) - { - case '': - return $this->sanitize($this->data['date']['raw'], SIMPLEPIE_CONSTRUCT_TEXT); - - case 'U': - return $this->data['date']['parsed']; - - default: - return date($date_format, $this->data['date']['parsed']); - } - } - else - { - return null; - } - } - - function get_local_date($date_format = '%c') - { - if (!$date_format) - { - return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif (($date = $this->get_date('U')) !== null) - { - return strftime($date_format, $date); - } - else - { - return null; - } - } - - function get_permalink() - { - $link = $this->get_link(); - $enclosure = $this->get_enclosure(0); - if ($link !== null) - { - return $link; - } - elseif ($enclosure !== null) - { - return $enclosure->get_link(); - } - else - { - return null; - } - } - - function get_link($key = 0, $rel = 'alternate') - { - $links = $this->get_links($rel); - if ($links[$key] !== null) - { - return $links[$key]; - } - else - { - return null; - } - } - - function get_links($rel = 'alternate') - { - if (!isset($this->data['links'])) - { - $this->data['links'] = array(); - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link) - { - if (isset($link['attribs']['']['href'])) - { - $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; - $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); - - } - } - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link) - { - if (isset($link['attribs']['']['href'])) - { - $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; - $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); - } - } - if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link')) - { - $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); - } - if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link')) - { - $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); - } - if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link')) - { - $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); - } - if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid')) - { - if (!isset($links[0]['attribs']['']['isPermaLink']) || strtolower(trim($links[0]['attribs']['']['isPermaLink'])) === 'true') - { - $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); - } - } - - $keys = array_keys($this->data['links']); - foreach ($keys as $key) - { - if (SimplePie_Misc::is_isegment_nz_nc($key)) - { - if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key])) - { - $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]); - $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]; - } - else - { - $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key]; - } - } - elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY) - { - $this->data['links'][substr($key, 41)] =& $this->data['links'][$key]; - } - $this->data['links'][$key] = array_unique($this->data['links'][$key]); - } - } - if (isset($this->data['links'][$rel])) - { - return $this->data['links'][$rel]; - } - else - { - return null; - } - } - - /** - * @todo Add ability to prefer one type of content over another (in a media group). - */ - function get_enclosure($key = 0, $prefer = null) - { - $enclosures = $this->get_enclosures(); - if (isset($enclosures[$key])) - { - return $enclosures[$key]; - } - else - { - return null; - } - } - - /** - * Grabs all available enclosures (podcasts, etc.) - * - * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS. - * - * At this point, we're pretty much assuming that all enclosures for an item are the same content. Anything else is too complicated to properly support. - * - * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4). - * @todo If an element exists at a level, but it's value is empty, we should fall back to the value from the parent (if it exists). - */ - function get_enclosures() - { - if (!isset($this->data['enclosures'])) - { - $this->data['enclosures'] = array(); - - // Elements - $captions_parent = null; - $categories_parent = null; - $copyrights_parent = null; - $credits_parent = null; - $description_parent = null; - $duration_parent = null; - $hashes_parent = null; - $keywords_parent = null; - $player_parent = null; - $ratings_parent = null; - $restrictions_parent = null; - $thumbnails_parent = null; - $title_parent = null; - - // Let's do the channel and item-level ones first, and just re-use them if we need to. - $parent = $this->get_feed(); - - // CAPTIONS - if ($captions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text')) - { - foreach ($captions as $caption) - { - $caption_type = null; - $caption_lang = null; - $caption_startTime = null; - $caption_endTime = null; - $caption_text = null; - if (isset($caption['attribs']['']['type'])) - { - $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['lang'])) - { - $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['start'])) - { - $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['end'])) - { - $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['data'])) - { - $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $captions_parent[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); - } - } - elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text')) - { - foreach ($captions as $caption) - { - $caption_type = null; - $caption_lang = null; - $caption_startTime = null; - $caption_endTime = null; - $caption_text = null; - if (isset($caption['attribs']['']['type'])) - { - $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['lang'])) - { - $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['start'])) - { - $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['end'])) - { - $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['data'])) - { - $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $captions_parent[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); - } - } - if (is_array($captions_parent)) - { - $captions_parent = array_values(SimplePie_Misc::array_unique($captions_parent)); - } - - // CATEGORIES - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category) - { - $term = null; - $scheme = null; - $label = null; - if (isset($category['data'])) - { - $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($category['attribs']['']['scheme'])) - { - $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $scheme = 'http://search.yahoo.com/mrss/category_schema'; - } - if (isset($category['attribs']['']['label'])) - { - $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); - } - foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category) - { - $term = null; - $scheme = null; - $label = null; - if (isset($category['data'])) - { - $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($category['attribs']['']['scheme'])) - { - $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $scheme = 'http://search.yahoo.com/mrss/category_schema'; - } - if (isset($category['attribs']['']['label'])) - { - $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); - } - foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category) - { - $term = null; - $scheme = 'http://www.itunes.com/dtds/podcast-1.0.dtd'; - $label = null; - if (isset($category['attribs']['']['text'])) - { - $label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); - - if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'])) - { - foreach ((array) $category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'] as $subcategory) - { - if (isset($subcategory['attribs']['']['text'])) - { - $label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); - } - } - } - if (is_array($categories_parent)) - { - $categories_parent = array_values(SimplePie_Misc::array_unique($categories_parent)); - } - - // COPYRIGHT - if ($copyright = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright')) - { - $copyright_url = null; - $copyright_label = null; - if (isset($copyright[0]['attribs']['']['url'])) - { - $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($copyright[0]['data'])) - { - $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $copyrights_parent = new $this->feed->copyright_class($copyright_url, $copyright_label); - } - elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright')) - { - $copyright_url = null; - $copyright_label = null; - if (isset($copyright[0]['attribs']['']['url'])) - { - $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($copyright[0]['data'])) - { - $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $copyrights_parent = new $this->feed->copyright_class($copyright_url, $copyright_label); - } - - // CREDITS - if ($credits = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit')) - { - foreach ($credits as $credit) - { - $credit_role = null; - $credit_scheme = null; - $credit_name = null; - if (isset($credit['attribs']['']['role'])) - { - $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($credit['attribs']['']['scheme'])) - { - $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $credit_scheme = 'urn:ebu'; - } - if (isset($credit['data'])) - { - $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $credits_parent[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); - } - } - elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit')) - { - foreach ($credits as $credit) - { - $credit_role = null; - $credit_scheme = null; - $credit_name = null; - if (isset($credit['attribs']['']['role'])) - { - $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($credit['attribs']['']['scheme'])) - { - $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $credit_scheme = 'urn:ebu'; - } - if (isset($credit['data'])) - { - $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $credits_parent[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); - } - } - if (is_array($credits_parent)) - { - $credits_parent = array_values(SimplePie_Misc::array_unique($credits_parent)); - } - - // DESCRIPTION - if ($description_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description')) - { - if (isset($description_parent[0]['data'])) - { - $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - } - elseif ($description_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description')) - { - if (isset($description_parent[0]['data'])) - { - $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - } - - // DURATION - if ($duration_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'duration')) - { - $seconds = null; - $minutes = null; - $hours = null; - if (isset($duration_parent[0]['data'])) - { - $temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); - if (sizeof($temp) > 0) - { - (int) $seconds = array_pop($temp); - } - if (sizeof($temp) > 0) - { - (int) $minutes = array_pop($temp); - $seconds += $minutes * 60; - } - if (sizeof($temp) > 0) - { - (int) $hours = array_pop($temp); - $seconds += $hours * 3600; - } - unset($temp); - $duration_parent = $seconds; - } - } - - // HASHES - if ($hashes_iterator = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash')) - { - foreach ($hashes_iterator as $hash) - { - $value = null; - $algo = null; - if (isset($hash['data'])) - { - $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($hash['attribs']['']['algo'])) - { - $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $algo = 'md5'; - } - $hashes_parent[] = $algo.':'.$value; - } - } - elseif ($hashes_iterator = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash')) - { - foreach ($hashes_iterator as $hash) - { - $value = null; - $algo = null; - if (isset($hash['data'])) - { - $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($hash['attribs']['']['algo'])) - { - $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $algo = 'md5'; - } - $hashes_parent[] = $algo.':'.$value; - } - } - if (is_array($hashes_parent)) - { - $hashes_parent = array_values(SimplePie_Misc::array_unique($hashes_parent)); - } - - // KEYWORDS - if ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords')) - { - if (isset($keywords[0]['data'])) - { - $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); - foreach ($temp as $word) - { - $keywords_parent[] = trim($word); - } - } - unset($temp); - } - elseif ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords')) - { - if (isset($keywords[0]['data'])) - { - $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); - foreach ($temp as $word) - { - $keywords_parent[] = trim($word); - } - } - unset($temp); - } - elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords')) - { - if (isset($keywords[0]['data'])) - { - $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); - foreach ($temp as $word) - { - $keywords_parent[] = trim($word); - } - } - unset($temp); - } - elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords')) - { - if (isset($keywords[0]['data'])) - { - $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); - foreach ($temp as $word) - { - $keywords_parent[] = trim($word); - } - } - unset($temp); - } - if (is_array($keywords_parent)) - { - $keywords_parent = array_values(SimplePie_Misc::array_unique($keywords_parent)); - } - - // PLAYER - if ($player_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player')) - { - if (isset($player_parent[0]['attribs']['']['url'])) - { - $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - } - } - elseif ($player_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player')) - { - if (isset($player_parent[0]['attribs']['']['url'])) - { - $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - } - } - - // RATINGS - if ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating')) - { - foreach ($ratings as $rating) - { - $rating_scheme = null; - $rating_value = null; - if (isset($rating['attribs']['']['scheme'])) - { - $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $rating_scheme = 'urn:simple'; - } - if (isset($rating['data'])) - { - $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); - } - } - elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit')) - { - foreach ($ratings as $rating) - { - $rating_scheme = 'urn:itunes'; - $rating_value = null; - if (isset($rating['data'])) - { - $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); - } - } - elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating')) - { - foreach ($ratings as $rating) - { - $rating_scheme = null; - $rating_value = null; - if (isset($rating['attribs']['']['scheme'])) - { - $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $rating_scheme = 'urn:simple'; - } - if (isset($rating['data'])) - { - $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); - } - } - elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit')) - { - foreach ($ratings as $rating) - { - $rating_scheme = 'urn:itunes'; - $rating_value = null; - if (isset($rating['data'])) - { - $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); - } - } - if (is_array($ratings_parent)) - { - $ratings_parent = array_values(SimplePie_Misc::array_unique($ratings_parent)); - } - - // RESTRICTIONS - if ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction')) - { - foreach ($restrictions as $restriction) - { - $restriction_relationship = null; - $restriction_type = null; - $restriction_value = null; - if (isset($restriction['attribs']['']['relationship'])) - { - $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($restriction['attribs']['']['type'])) - { - $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($restriction['data'])) - { - $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); - } - } - elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block')) - { - foreach ($restrictions as $restriction) - { - $restriction_relationship = 'allow'; - $restriction_type = null; - $restriction_value = 'itunes'; - if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes') - { - $restriction_relationship = 'deny'; - } - $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); - } - } - elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction')) - { - foreach ($restrictions as $restriction) - { - $restriction_relationship = null; - $restriction_type = null; - $restriction_value = null; - if (isset($restriction['attribs']['']['relationship'])) - { - $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($restriction['attribs']['']['type'])) - { - $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($restriction['data'])) - { - $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); - } - } - elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block')) - { - foreach ($restrictions as $restriction) - { - $restriction_relationship = 'allow'; - $restriction_type = null; - $restriction_value = 'itunes'; - if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes') - { - $restriction_relationship = 'deny'; - } - $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); - } - } - if (is_array($restrictions_parent)) - { - $restrictions_parent = array_values(SimplePie_Misc::array_unique($restrictions_parent)); - } - - // THUMBNAILS - if ($thumbnails = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail')) - { - foreach ($thumbnails as $thumbnail) - { - if (isset($thumbnail['attribs']['']['url'])) - { - $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - } - } - } - elseif ($thumbnails = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail')) - { - foreach ($thumbnails as $thumbnail) - { - if (isset($thumbnail['attribs']['']['url'])) - { - $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - } - } - } - - // TITLES - if ($title_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title')) - { - if (isset($title_parent[0]['data'])) - { - $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - } - elseif ($title_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title')) - { - if (isset($title_parent[0]['data'])) - { - $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - } - - // Clear the memory - unset($parent); - - // Attributes - $bitrate = null; - $channels = null; - $duration = null; - $expression = null; - $framerate = null; - $height = null; - $javascript = null; - $lang = null; - $length = null; - $medium = null; - $samplingrate = null; - $type = null; - $url = null; - $width = null; - - // Elements - $captions = null; - $categories = null; - $copyrights = null; - $credits = null; - $description = null; - $hashes = null; - $keywords = null; - $player = null; - $ratings = null; - $restrictions = null; - $thumbnails = null; - $title = null; - - // If we have media:group tags, loop through them. - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group) - { - if(isset($group['child']) && isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'])) - { - // If we have media:content tags, loop through them. - foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content) - { - if (isset($content['attribs']['']['url'])) - { - // Attributes - $bitrate = null; - $channels = null; - $duration = null; - $expression = null; - $framerate = null; - $height = null; - $javascript = null; - $lang = null; - $length = null; - $medium = null; - $samplingrate = null; - $type = null; - $url = null; - $width = null; - - // Elements - $captions = null; - $categories = null; - $copyrights = null; - $credits = null; - $description = null; - $hashes = null; - $keywords = null; - $player = null; - $ratings = null; - $restrictions = null; - $thumbnails = null; - $title = null; - - // Start checking the attributes of media:content - if (isset($content['attribs']['']['bitrate'])) - { - $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['channels'])) - { - $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['duration'])) - { - $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $duration = $duration_parent; - } - if (isset($content['attribs']['']['expression'])) - { - $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['framerate'])) - { - $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['height'])) - { - $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['lang'])) - { - $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['fileSize'])) - { - $length = ceil($content['attribs']['']['fileSize']); - } - if (isset($content['attribs']['']['medium'])) - { - $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['samplingrate'])) - { - $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['type'])) - { - $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['width'])) - { - $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - - // Checking the other optional media: elements. Priority: media:content, media:group, item, channel - - // CAPTIONS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption) - { - $caption_type = null; - $caption_lang = null; - $caption_startTime = null; - $caption_endTime = null; - $caption_text = null; - if (isset($caption['attribs']['']['type'])) - { - $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['lang'])) - { - $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['start'])) - { - $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['end'])) - { - $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['data'])) - { - $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $captions[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); - } - if (is_array($captions)) - { - $captions = array_values(SimplePie_Misc::array_unique($captions)); - } - } - elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'])) - { - foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption) - { - $caption_type = null; - $caption_lang = null; - $caption_startTime = null; - $caption_endTime = null; - $caption_text = null; - if (isset($caption['attribs']['']['type'])) - { - $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['lang'])) - { - $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['start'])) - { - $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['end'])) - { - $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['data'])) - { - $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $captions[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); - } - if (is_array($captions)) - { - $captions = array_values(SimplePie_Misc::array_unique($captions)); - } - } - else - { - $captions = $captions_parent; - } - - // CATEGORIES - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'])) - { - foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category) - { - $term = null; - $scheme = null; - $label = null; - if (isset($category['data'])) - { - $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($category['attribs']['']['scheme'])) - { - $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $scheme = 'http://search.yahoo.com/mrss/category_schema'; - } - if (isset($category['attribs']['']['label'])) - { - $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $categories[] = new $this->feed->category_class($term, $scheme, $label); - } - } - if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'])) - { - foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category) - { - $term = null; - $scheme = null; - $label = null; - if (isset($category['data'])) - { - $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($category['attribs']['']['scheme'])) - { - $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $scheme = 'http://search.yahoo.com/mrss/category_schema'; - } - if (isset($category['attribs']['']['label'])) - { - $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $categories[] = new $this->feed->category_class($term, $scheme, $label); - } - } - if (is_array($categories) && is_array($categories_parent)) - { - $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent))); - } - elseif (is_array($categories)) - { - $categories = array_values(SimplePie_Misc::array_unique($categories)); - } - elseif (is_array($categories_parent)) - { - $categories = array_values(SimplePie_Misc::array_unique($categories_parent)); - } - - // COPYRIGHTS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'])) - { - $copyright_url = null; - $copyright_label = null; - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'])) - { - $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'])) - { - $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $copyrights = new $this->feed->copyright_class($copyright_url, $copyright_label); - } - elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'])) - { - $copyright_url = null; - $copyright_label = null; - if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'])) - { - $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'])) - { - $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $copyrights = new $this->feed->copyright_class($copyright_url, $copyright_label); - } - else - { - $copyrights = $copyrights_parent; - } - - // CREDITS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit) - { - $credit_role = null; - $credit_scheme = null; - $credit_name = null; - if (isset($credit['attribs']['']['role'])) - { - $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($credit['attribs']['']['scheme'])) - { - $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $credit_scheme = 'urn:ebu'; - } - if (isset($credit['data'])) - { - $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $credits[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); - } - if (is_array($credits)) - { - $credits = array_values(SimplePie_Misc::array_unique($credits)); - } - } - elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'])) - { - foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit) - { - $credit_role = null; - $credit_scheme = null; - $credit_name = null; - if (isset($credit['attribs']['']['role'])) - { - $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($credit['attribs']['']['scheme'])) - { - $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $credit_scheme = 'urn:ebu'; - } - if (isset($credit['data'])) - { - $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $credits[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); - } - if (is_array($credits)) - { - $credits = array_values(SimplePie_Misc::array_unique($credits)); - } - } - else - { - $credits = $credits_parent; - } - - // DESCRIPTION - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'])) - { - $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'])) - { - $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $description = $description_parent; - } - - // HASHES - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash) - { - $value = null; - $algo = null; - if (isset($hash['data'])) - { - $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($hash['attribs']['']['algo'])) - { - $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $algo = 'md5'; - } - $hashes[] = $algo.':'.$value; - } - if (is_array($hashes)) - { - $hashes = array_values(SimplePie_Misc::array_unique($hashes)); - } - } - elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'])) - { - foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash) - { - $value = null; - $algo = null; - if (isset($hash['data'])) - { - $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($hash['attribs']['']['algo'])) - { - $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $algo = 'md5'; - } - $hashes[] = $algo.':'.$value; - } - if (is_array($hashes)) - { - $hashes = array_values(SimplePie_Misc::array_unique($hashes)); - } - } - else - { - $hashes = $hashes_parent; - } - - // KEYWORDS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'])) - { - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'])) - { - $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); - foreach ($temp as $word) - { - $keywords[] = trim($word); - } - unset($temp); - } - if (is_array($keywords)) - { - $keywords = array_values(SimplePie_Misc::array_unique($keywords)); - } - } - elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'])) - { - if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'])) - { - $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); - foreach ($temp as $word) - { - $keywords[] = trim($word); - } - unset($temp); - } - if (is_array($keywords)) - { - $keywords = array_values(SimplePie_Misc::array_unique($keywords)); - } - } - else - { - $keywords = $keywords_parent; - } - - // PLAYER - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'])) - { - $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - } - elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'])) - { - $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - } - else - { - $player = $player_parent; - } - - // RATINGS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating) - { - $rating_scheme = null; - $rating_value = null; - if (isset($rating['attribs']['']['scheme'])) - { - $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $rating_scheme = 'urn:simple'; - } - if (isset($rating['data'])) - { - $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $ratings[] = new $this->feed->rating_class($rating_scheme, $rating_value); - } - if (is_array($ratings)) - { - $ratings = array_values(SimplePie_Misc::array_unique($ratings)); - } - } - elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'])) - { - foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating) - { - $rating_scheme = null; - $rating_value = null; - if (isset($rating['attribs']['']['scheme'])) - { - $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $rating_scheme = 'urn:simple'; - } - if (isset($rating['data'])) - { - $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $ratings[] = new $this->feed->rating_class($rating_scheme, $rating_value); - } - if (is_array($ratings)) - { - $ratings = array_values(SimplePie_Misc::array_unique($ratings)); - } - } - else - { - $ratings = $ratings_parent; - } - - // RESTRICTIONS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction) - { - $restriction_relationship = null; - $restriction_type = null; - $restriction_value = null; - if (isset($restriction['attribs']['']['relationship'])) - { - $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($restriction['attribs']['']['type'])) - { - $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($restriction['data'])) - { - $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $restrictions[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); - } - if (is_array($restrictions)) - { - $restrictions = array_values(SimplePie_Misc::array_unique($restrictions)); - } - } - elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'])) - { - foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction) - { - $restriction_relationship = null; - $restriction_type = null; - $restriction_value = null; - if (isset($restriction['attribs']['']['relationship'])) - { - $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($restriction['attribs']['']['type'])) - { - $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($restriction['data'])) - { - $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $restrictions[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); - } - if (is_array($restrictions)) - { - $restrictions = array_values(SimplePie_Misc::array_unique($restrictions)); - } - } - else - { - $restrictions = $restrictions_parent; - } - - // THUMBNAILS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail) - { - $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - } - if (is_array($thumbnails)) - { - $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails)); - } - } - elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'])) - { - foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail) - { - $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - } - if (is_array($thumbnails)) - { - $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails)); - } - } - else - { - $thumbnails = $thumbnails_parent; - } - - // TITLES - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'])) - { - $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'])) - { - $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $title = $title_parent; - } - - $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width); - } - } - } - } - - // If we have standalone media:content tags, loop through them. - if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'])) - { - foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content) - { - if (isset($content['attribs']['']['url'])) - { - // Attributes - $bitrate = null; - $channels = null; - $duration = null; - $expression = null; - $framerate = null; - $height = null; - $javascript = null; - $lang = null; - $length = null; - $medium = null; - $samplingrate = null; - $type = null; - $url = null; - $width = null; - - // Elements - $captions = null; - $categories = null; - $copyrights = null; - $credits = null; - $description = null; - $hashes = null; - $keywords = null; - $player = null; - $ratings = null; - $restrictions = null; - $thumbnails = null; - $title = null; - - // Start checking the attributes of media:content - if (isset($content['attribs']['']['bitrate'])) - { - $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['channels'])) - { - $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['duration'])) - { - $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $duration = $duration_parent; - } - if (isset($content['attribs']['']['expression'])) - { - $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['framerate'])) - { - $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['height'])) - { - $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['lang'])) - { - $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['fileSize'])) - { - $length = ceil($content['attribs']['']['fileSize']); - } - if (isset($content['attribs']['']['medium'])) - { - $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['samplingrate'])) - { - $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['type'])) - { - $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['attribs']['']['width'])) - { - $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - - // Checking the other optional media: elements. Priority: media:content, media:group, item, channel - - // CAPTIONS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption) - { - $caption_type = null; - $caption_lang = null; - $caption_startTime = null; - $caption_endTime = null; - $caption_text = null; - if (isset($caption['attribs']['']['type'])) - { - $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['lang'])) - { - $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['start'])) - { - $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['attribs']['']['end'])) - { - $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($caption['data'])) - { - $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $captions[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); - } - if (is_array($captions)) - { - $captions = array_values(SimplePie_Misc::array_unique($captions)); - } - } - else - { - $captions = $captions_parent; - } - - // CATEGORIES - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'])) - { - foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category) - { - $term = null; - $scheme = null; - $label = null; - if (isset($category['data'])) - { - $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($category['attribs']['']['scheme'])) - { - $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $scheme = 'http://search.yahoo.com/mrss/category_schema'; - } - if (isset($category['attribs']['']['label'])) - { - $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $categories[] = new $this->feed->category_class($term, $scheme, $label); - } - } - if (is_array($categories) && is_array($categories_parent)) - { - $categories = array_values(SimplePie_Misc::array_unique(array_merge($categories, $categories_parent))); - } - elseif (is_array($categories)) - { - $categories = array_values(SimplePie_Misc::array_unique($categories)); - } - elseif (is_array($categories_parent)) - { - $categories = array_values(SimplePie_Misc::array_unique($categories_parent)); - } - else - { - $categories = null; - } - - // COPYRIGHTS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'])) - { - $copyright_url = null; - $copyright_label = null; - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'])) - { - $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'])) - { - $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $copyrights = new $this->feed->copyright_class($copyright_url, $copyright_label); - } - else - { - $copyrights = $copyrights_parent; - } - - // CREDITS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit) - { - $credit_role = null; - $credit_scheme = null; - $credit_name = null; - if (isset($credit['attribs']['']['role'])) - { - $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($credit['attribs']['']['scheme'])) - { - $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $credit_scheme = 'urn:ebu'; - } - if (isset($credit['data'])) - { - $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $credits[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); - } - if (is_array($credits)) - { - $credits = array_values(SimplePie_Misc::array_unique($credits)); - } - } - else - { - $credits = $credits_parent; - } - - // DESCRIPTION - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'])) - { - $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $description = $description_parent; - } - - // HASHES - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash) - { - $value = null; - $algo = null; - if (isset($hash['data'])) - { - $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($hash['attribs']['']['algo'])) - { - $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $algo = 'md5'; - } - $hashes[] = $algo.':'.$value; - } - if (is_array($hashes)) - { - $hashes = array_values(SimplePie_Misc::array_unique($hashes)); - } - } - else - { - $hashes = $hashes_parent; - } - - // KEYWORDS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'])) - { - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'])) - { - $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); - foreach ($temp as $word) - { - $keywords[] = trim($word); - } - unset($temp); - } - if (is_array($keywords)) - { - $keywords = array_values(SimplePie_Misc::array_unique($keywords)); - } - } - else - { - $keywords = $keywords_parent; - } - - // PLAYER - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'])) - { - $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - } - else - { - $player = $player_parent; - } - - // RATINGS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating) - { - $rating_scheme = null; - $rating_value = null; - if (isset($rating['attribs']['']['scheme'])) - { - $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $rating_scheme = 'urn:simple'; - } - if (isset($rating['data'])) - { - $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $ratings[] = new $this->feed->rating_class($rating_scheme, $rating_value); - } - if (is_array($ratings)) - { - $ratings = array_values(SimplePie_Misc::array_unique($ratings)); - } - } - else - { - $ratings = $ratings_parent; - } - - // RESTRICTIONS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction) - { - $restriction_relationship = null; - $restriction_type = null; - $restriction_value = null; - if (isset($restriction['attribs']['']['relationship'])) - { - $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($restriction['attribs']['']['type'])) - { - $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($restriction['data'])) - { - $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $restrictions[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); - } - if (is_array($restrictions)) - { - $restrictions = array_values(SimplePie_Misc::array_unique($restrictions)); - } - } - else - { - $restrictions = $restrictions_parent; - } - - // THUMBNAILS - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'])) - { - foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail) - { - $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); - } - if (is_array($thumbnails)) - { - $thumbnails = array_values(SimplePie_Misc::array_unique($thumbnails)); - } - } - else - { - $thumbnails = $thumbnails_parent; - } - - // TITLES - if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'])) - { - $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $title = $title_parent; - } - - $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width); - } - } - } - - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link) - { - if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure') - { - // Attributes - $bitrate = null; - $channels = null; - $duration = null; - $expression = null; - $framerate = null; - $height = null; - $javascript = null; - $lang = null; - $length = null; - $medium = null; - $samplingrate = null; - $type = null; - $url = null; - $width = null; - $title = $title_parent; - - $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); - if (isset($link['attribs']['']['type'])) - { - $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($link['attribs']['']['length'])) - { - $length = ceil($link['attribs']['']['length']); - } - if (isset($link['attribs']['']['title'])) - { - $title = $this->sanitize($link['attribs']['']['title'], SIMPLEPIE_CONSTRUCT_TEXT); - } - - // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor - $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title, $width); - } - } - - foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link) - { - if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure') - { - // Attributes - $bitrate = null; - $channels = null; - $duration = null; - $expression = null; - $framerate = null; - $height = null; - $javascript = null; - $lang = null; - $length = null; - $medium = null; - $samplingrate = null; - $type = null; - $url = null; - $width = null; - - $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); - if (isset($link['attribs']['']['type'])) - { - $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($link['attribs']['']['length'])) - { - $length = ceil($link['attribs']['']['length']); - } - - // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor - $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); - } - } - - if ($enclosure = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'enclosure')) - { - if (isset($enclosure[0]['attribs']['']['url'])) - { - // Attributes - $bitrate = null; - $channels = null; - $duration = null; - $expression = null; - $framerate = null; - $height = null; - $javascript = null; - $lang = null; - $length = null; - $medium = null; - $samplingrate = null; - $type = null; - $url = null; - $width = null; - - $url = $this->sanitize($enclosure[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($enclosure[0])); - if (isset($enclosure[0]['attribs']['']['type'])) - { - $type = $this->sanitize($enclosure[0]['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($enclosure[0]['attribs']['']['length'])) - { - $length = ceil($enclosure[0]['attribs']['']['length']); - } - - // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor - $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); - } - } - - if (sizeof($this->data['enclosures']) === 0 && ($url || $type || $length || $bitrate || $captions_parent || $categories_parent || $channels || $copyrights_parent || $credits_parent || $description_parent || $duration_parent || $expression || $framerate || $hashes_parent || $height || $keywords_parent || $lang || $medium || $player_parent || $ratings_parent || $restrictions_parent || $samplingrate || $thumbnails_parent || $title_parent || $width)) - { - // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor - $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); - } - - $this->data['enclosures'] = array_values(SimplePie_Misc::array_unique($this->data['enclosures'])); - } - if (!empty($this->data['enclosures'])) - { - return $this->data['enclosures']; - } - else - { - return null; - } - } - - function get_latitude() - { - if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat')) - { - return (float) $return[0]['data']; - } - elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) - { - return (float) $match[1]; - } - else - { - return null; - } - } - - function get_longitude() - { - if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long')) - { - return (float) $return[0]['data']; - } - elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon')) - { - return (float) $return[0]['data']; - } - elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) - { - return (float) $match[2]; - } - else - { - return null; - } - } - - function get_source() - { - if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'source')) - { - return new $this->feed->source_class($this, $return[0]); - } - else - { - return null; - } - } - - /** - * Creates the add_to_* methods' return data - * - * @access private - * @param string $item_url String to prefix to the item permalink - * @param string $title_url String to prefix to the item title - * (and suffix to the item permalink) - * @return mixed URL if feed exists, false otherwise - */ - function add_to_service($item_url, $title_url = null, $summary_url = null) - { - if ($this->get_permalink() !== null) - { - $return = $item_url . rawurlencode($this->get_permalink()); - if ($title_url !== null && $this->get_title() !== null) - { - $return .= $title_url . rawurlencode($this->get_title()); - } - if ($summary_url !== null && $this->get_description() !== null) - { - $return .= $summary_url . rawurlencode($this->get_description()); - } - return $this->sanitize($return, SIMPLEPIE_CONSTRUCT_IRI); - } - else - { - return null; - } - } - - function add_to_blinklist() - { - return $this->add_to_service('http://www.blinklist.com/index.php?Action=Blink/addblink.php&Description=&Url=', '&Title='); - } - - function add_to_blogmarks() - { - return $this->add_to_service('http://blogmarks.net/my/new.php?mini=1&simple=1&url=', '&title='); - } - - function add_to_delicious() - { - return $this->add_to_service('http://del.icio.us/post/?v=4&url=', '&title='); - } - - function add_to_digg() - { - return $this->add_to_service('http://digg.com/submit?url=', '&title=', '&bodytext='); - } - - function add_to_furl() - { - return $this->add_to_service('http://www.furl.net/storeIt.jsp?u=', '&t='); - } - - function add_to_magnolia() - { - return $this->add_to_service('http://ma.gnolia.com/bookmarklet/add?url=', '&title='); - } - - function add_to_myweb20() - { - return $this->add_to_service('http://myweb2.search.yahoo.com/myresults/bookmarklet?u=', '&t='); - } - - function add_to_newsvine() - { - return $this->add_to_service('http://www.newsvine.com/_wine/save?u=', '&h='); - } - - function add_to_reddit() - { - return $this->add_to_service('http://reddit.com/submit?url=', '&title='); - } - - function add_to_segnalo() - { - return $this->add_to_service('http://segnalo.com/post.html.php?url=', '&title='); - } - - function add_to_simpy() - { - return $this->add_to_service('http://www.simpy.com/simpy/LinkAdd.do?href=', '&title='); - } - - function add_to_spurl() - { - return $this->add_to_service('http://www.spurl.net/spurl.php?v=3&url=', '&title='); - } - - function add_to_wists() - { - return $this->add_to_service('http://wists.com/r.php?c=&r=', '&title='); - } - - function search_technorati() - { - return $this->add_to_service('http://www.technorati.com/search/'); - } -} - -class SimplePie_Source -{ - var $item; - var $data = array(); - - function SimplePie_Source($item, $data) - { - $this->item = $item; - $this->data = $data; - } - - function __toString() - { - return md5(serialize($this->data)); - } - - function get_source_tags($namespace, $tag) - { - if (isset($this->data['child'][$namespace][$tag])) - { - return $this->data['child'][$namespace][$tag]; - } - else - { - return null; - } - } - - function get_base($element = array()) - { - return $this->item->get_base($element); - } - - function sanitize($data, $type, $base = '') - { - return $this->item->sanitize($data, $type, $base); - } - - function get_item() - { - return $this->item; - } - - function get_title() - { - if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - return null; - } - } - - function get_category($key = 0) - { - $categories = $this->get_categories(); - if (isset($categories[$key])) - { - return $categories[$key]; - } - else - { - return null; - } - } - - function get_categories() - { - $categories = array(); - - foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category) - { - $term = null; - $scheme = null; - $label = null; - if (isset($category['attribs']['']['term'])) - { - $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($category['attribs']['']['scheme'])) - { - $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($category['attribs']['']['label'])) - { - $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); - } - $categories[] = new $this->item->feed->category_class($term, $scheme, $label); - } - foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category) - { - // This is really the label, but keep this as the term also for BC. - // Label will also work on retrieving because that falls back to term. - $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); - if (isset($category['attribs']['']['domain'])) - { - $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - $scheme = null; - } - $categories[] = new $this->item->feed->category_class($term, $scheme, null); - } - foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category) - { - $categories[] = new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category) - { - $categories[] = new $this->item->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - - if (!empty($categories)) - { - return SimplePie_Misc::array_unique($categories); - } - else - { - return null; - } - } - - function get_author($key = 0) - { - $authors = $this->get_authors(); - if (isset($authors[$key])) - { - return $authors[$key]; - } - else - { - return null; - } - } - - function get_authors() - { - $authors = array(); - foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author) - { - $name = null; - $uri = null; - $email = null; - $avatar = null; - $name_date = null; - $uri_date = null; - $avatar_date = null; - - if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) - { - $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) - { - $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); - } - if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) - { - $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar'][0]['data'])) - { - $avatar = $this->sanitize($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar'][0])); - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['name-updated'][0]['data'])) - { - $name_date = $author['child']['http://purl.org/macgirvin/dfrn/1.0']['name-updated'][0]['data']; - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['uri-updated'][0]['data'])) - { - $uri_date = $author['child']['http://purl.org/macgirvin/dfrn/1.0']['uri-updated'][0]['data']; - } - if (isset($author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar-updated'][0]['data'])) - { - $avatar_date = $author['child']['http://purl.org/macgirvin/dfrn/1.0']['avatar-updated'][0]['data']; - } - - if ($name !== null || $email !== null || $uri !== null || $avatar !== null || $name_date !== null || $uri_date !== null || $avatar_date !== null ) - { - $authors[] = new $this->item->feed->author_class($name, $uri, $email, $avatar, $name_date, $uri_date, $avatar_date); - } - } - if ($author = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author')) - { - $name = null; - $url = null; - $email = null; - if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) - { - $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) - { - $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); - } - if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) - { - $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if ($name !== null || $email !== null || $url !== null) - { - $authors[] = new $this->item->feed->author_class($name, $url, $email); - } - } - foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author) - { - $authors[] = new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author) - { - $authors[] = new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author) - { - $authors[] = new $this->item->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); - } - - if (!empty($authors)) - { - return SimplePie_Misc::array_unique($authors); - } - else - { - return null; - } - } - - function get_contributor($key = 0) - { - $contributors = $this->get_contributors(); - if (isset($contributors[$key])) - { - return $contributors[$key]; - } - else - { - return null; - } - } - - function get_contributors() - { - $contributors = array(); - foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor) - { - $name = null; - $uri = null; - $email = null; - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) - { - $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) - { - $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) - { - $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if ($name !== null || $email !== null || $uri !== null) - { - $contributors[] = new $this->item->feed->author_class($name, $uri, $email); - } - } - foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor) - { - $name = null; - $url = null; - $email = null; - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) - { - $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) - { - $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); - } - if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) - { - $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - if ($name !== null || $email !== null || $url !== null) - { - $contributors[] = new $this->item->feed->author_class($name, $url, $email); - } - } - - if (!empty($contributors)) - { - return SimplePie_Misc::array_unique($contributors); - } - else - { - return null; - } - } - - function get_link($key = 0, $rel = 'alternate') - { - $links = $this->get_links($rel); - if (isset($links[$key])) - { - return $links[$key]; - } - else - { - return null; - } - } - - /** - * Added for parity between the parent-level and the item/entry-level. - */ - function get_permalink() - { - return $this->get_link(0); - } - - function get_links($rel = 'alternate') - { - if (!isset($this->data['links'])) - { - $this->data['links'] = array(); - if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link')) - { - foreach ($links as $link) - { - if (isset($link['attribs']['']['href'])) - { - $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; - $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); - } - } - } - if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link')) - { - foreach ($links as $link) - { - if (isset($link['attribs']['']['href'])) - { - $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; - $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); - - } - } - } - if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link')) - { - $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); - } - if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link')) - { - $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); - } - if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link')) - { - $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); - } - - $keys = array_keys($this->data['links']); - foreach ($keys as $key) - { - if (SimplePie_Misc::is_isegment_nz_nc($key)) - { - if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key])) - { - $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]); - $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]; - } - else - { - $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key]; - } - } - elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY) - { - $this->data['links'][substr($key, 41)] =& $this->data['links'][$key]; - } - $this->data['links'][$key] = array_unique($this->data['links'][$key]); - } - } - - if (isset($this->data['links'][$rel])) - { - return $this->data['links'][$rel]; - } - else - { - return null; - } - } - - function get_description() - { - if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); - } - else - { - return null; - } - } - - function get_copyright() - { - if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_10_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright')) - { - return $this->sanitize($return[0]['data'], SimplePie_Misc::atom_03_construct_type($return[0]['attribs']), $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'copyright')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - return null; - } - } - - function get_language() - { - if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'language')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); - } - elseif (isset($this->data['xml_lang'])) - { - return $this->sanitize($this->data['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT); - } - else - { - return null; - } - } - - function get_latitude() - { - if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat')) - { - return (float) $return[0]['data']; - } - elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) - { - return (float) $match[1]; - } - else - { - return null; - } - } - - function get_longitude() - { - if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long')) - { - return (float) $return[0]['data']; - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon')) - { - return (float) $return[0]['data']; - } - elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) - { - return (float) $match[2]; - } - else - { - return null; - } - } - - function get_image_url() - { - if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image')) - { - return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); - } - elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon')) - { - return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); - } - else - { - return null; - } - } -} - -class SimplePie_Author -{ - var $name; - var $link; - var $email; - var $avatar; - var $name_date; - var $uri_date; - var $avatar_date; - - // Constructor, used to input the data - function SimplePie_Author($name = null, $link = null, $email = null, $avatar = null, $name_date = null, $uri_date = null, $avatar_date = null) - { - $this->name = $name; - $this->link = $link; - $this->email = $email; - $this->avatar = $avatar; - $this->name_date = $name_date; - $this->uri_date = $uri_date; - $this->avatar_date = $avatar_date; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_name() - { - if ($this->name !== null) - { - return $this->name; - } - else - { - return null; - } - } - - function get_link() - { - if ($this->link !== null) - { - return $this->link; - } - else - { - return null; - } - } - - function get_email() - { - if ($this->email !== null) - { - return $this->email; - } - else - { - return null; - } - } - - function get_avatar() - { - if ($this->avatar !== null) - { - return $this->avatar; - } - else - { - return null; - } - } - - function get_name_date() - { - if ($this->name_date !== null) - { - return $this->name_date; - } - else - { - return null; - } - } - function get_uri_date() - { - if ($this->uri_date !== null) - { - return $this->uri_date; - } - else - { - return null; - } - } - function get_avatar_date() - { - if ($this->avatar_date !== null) - { - return $this->avatar_date; - } - else - { - return null; - } - } - - -} - -class SimplePie_Category -{ - var $term; - var $scheme; - var $label; - - // Constructor, used to input the data - function SimplePie_Category($term = null, $scheme = null, $label = null) - { - $this->term = $term; - $this->scheme = $scheme; - $this->label = $label; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_term() - { - if ($this->term !== null) - { - return $this->term; - } - else - { - return null; - } - } - - function get_scheme() - { - if ($this->scheme !== null) - { - return $this->scheme; - } - else - { - return null; - } - } - - function get_label() - { - if ($this->label !== null) - { - return $this->label; - } - else - { - return $this->get_term(); - } - } -} - -class SimplePie_Enclosure -{ - var $bitrate; - var $captions; - var $categories; - var $channels; - var $copyright; - var $credits; - var $description; - var $duration; - var $expression; - var $framerate; - var $handler; - var $hashes; - var $height; - var $javascript; - var $keywords; - var $lang; - var $length; - var $link; - var $medium; - var $player; - var $ratings; - var $restrictions; - var $samplingrate; - var $thumbnails; - var $title; - var $type; - var $width; - - // Constructor, used to input the data - function SimplePie_Enclosure($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null) - { - $this->bitrate = $bitrate; - $this->captions = $captions; - $this->categories = $categories; - $this->channels = $channels; - $this->copyright = $copyright; - $this->credits = $credits; - $this->description = $description; - $this->duration = $duration; - $this->expression = $expression; - $this->framerate = $framerate; - $this->hashes = $hashes; - $this->height = $height; - $this->javascript = $javascript; - $this->keywords = $keywords; - $this->lang = $lang; - $this->length = $length; - $this->link = $link; - $this->medium = $medium; - $this->player = $player; - $this->ratings = $ratings; - $this->restrictions = $restrictions; - $this->samplingrate = $samplingrate; - $this->thumbnails = $thumbnails; - $this->title = $title; - $this->type = $type; - $this->width = $width; - if (class_exists('idna_convert')) - { - $idn = new idna_convert; - $parsed = SimplePie_Misc::parse_url($link); - $this->link = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']); - } - $this->handler = $this->get_handler(); // Needs to load last - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_bitrate() - { - if ($this->bitrate !== null) - { - return $this->bitrate; - } - else - { - return null; - } - } - - function get_caption($key = 0) - { - $captions = $this->get_captions(); - if (isset($captions[$key])) - { - return $captions[$key]; - } - else - { - return null; - } - } - - function get_captions() - { - if ($this->captions !== null) - { - return $this->captions; - } - else - { - return null; - } - } - - function get_category($key = 0) - { - $categories = $this->get_categories(); - if (isset($categories[$key])) - { - return $categories[$key]; - } - else - { - return null; - } - } - - function get_categories() - { - if ($this->categories !== null) - { - return $this->categories; - } - else - { - return null; - } - } - - function get_channels() - { - if ($this->channels !== null) - { - return $this->channels; - } - else - { - return null; - } - } - - function get_copyright() - { - if ($this->copyright !== null) - { - return $this->copyright; - } - else - { - return null; - } - } - - function get_credit($key = 0) - { - $credits = $this->get_credits(); - if (isset($credits[$key])) - { - return $credits[$key]; - } - else - { - return null; - } - } - - function get_credits() - { - if ($this->credits !== null) - { - return $this->credits; - } - else - { - return null; - } - } - - function get_description() - { - if ($this->description !== null) - { - return $this->description; - } - else - { - return null; - } - } - - function get_duration($convert = false) - { - if ($this->duration !== null) - { - if ($convert) - { - $time = SimplePie_Misc::time_hms($this->duration); - return $time; - } - else - { - return $this->duration; - } - } - else - { - return null; - } - } - - function get_expression() - { - if ($this->expression !== null) - { - return $this->expression; - } - else - { - return 'full'; - } - } - - function get_extension() - { - if ($this->link !== null) - { - $url = SimplePie_Misc::parse_url($this->link); - if ($url['path'] !== '') - { - return pathinfo($url['path'], PATHINFO_EXTENSION); - } - } - return null; - } - - function get_framerate() - { - if ($this->framerate !== null) - { - return $this->framerate; - } - else - { - return null; - } - } - - function get_handler() - { - return $this->get_real_type(true); - } - - function get_hash($key = 0) - { - $hashes = $this->get_hashes(); - if (isset($hashes[$key])) - { - return $hashes[$key]; - } - else - { - return null; - } - } - - function get_hashes() - { - if ($this->hashes !== null) - { - return $this->hashes; - } - else - { - return null; - } - } - - function get_height() - { - if ($this->height !== null) - { - return $this->height; - } - else - { - return null; - } - } - - function get_language() - { - if ($this->lang !== null) - { - return $this->lang; - } - else - { - return null; - } - } - - function get_keyword($key = 0) - { - $keywords = $this->get_keywords(); - if (isset($keywords[$key])) - { - return $keywords[$key]; - } - else - { - return null; - } - } - - function get_keywords() - { - if ($this->keywords !== null) - { - return $this->keywords; - } - else - { - return null; - } - } - - function get_length() - { - if ($this->length !== null) - { - return $this->length; - } - else - { - return null; - } - } - - function get_link() - { - if ($this->link !== null) - { - return urldecode($this->link); - } - else - { - return null; - } - } - - function get_medium() - { - if ($this->medium !== null) - { - return $this->medium; - } - else - { - return null; - } - } - - function get_player() - { - if ($this->player !== null) - { - return $this->player; - } - else - { - return null; - } - } - - function get_rating($key = 0) - { - $ratings = $this->get_ratings(); - if (isset($ratings[$key])) - { - return $ratings[$key]; - } - else - { - return null; - } - } - - function get_ratings() - { - if ($this->ratings !== null) - { - return $this->ratings; - } - else - { - return null; - } - } - - function get_restriction($key = 0) - { - $restrictions = $this->get_restrictions(); - if (isset($restrictions[$key])) - { - return $restrictions[$key]; - } - else - { - return null; - } - } - - function get_restrictions() - { - if ($this->restrictions !== null) - { - return $this->restrictions; - } - else - { - return null; - } - } - - function get_sampling_rate() - { - if ($this->samplingrate !== null) - { - return $this->samplingrate; - } - else - { - return null; - } - } - - function get_size() - { - $length = $this->get_length(); - if ($length !== null) - { - return round($length/1048576, 2); - } - else - { - return null; - } - } - - function get_thumbnail($key = 0) - { - $thumbnails = $this->get_thumbnails(); - if (isset($thumbnails[$key])) - { - return $thumbnails[$key]; - } - else - { - return null; - } - } - - function get_thumbnails() - { - if ($this->thumbnails !== null) - { - return $this->thumbnails; - } - else - { - return null; - } - } - - function get_title() - { - if ($this->title !== null) - { - return $this->title; - } - else - { - return null; - } - } - - function get_type() - { - if ($this->type !== null) - { - return $this->type; - } - else - { - return null; - } - } - - function get_width() - { - if ($this->width !== null) - { - return $this->width; - } - else - { - return null; - } - } - - function native_embed($options='') - { - return $this->embed($options, true); - } - - /** - * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'. - */ - function embed($options = '', $native = false) - { - // Set up defaults - $audio = ''; - $video = ''; - $alt = ''; - $altclass = ''; - $loop = 'false'; - $width = 'auto'; - $height = 'auto'; - $bgcolor = '#ffffff'; - $mediaplayer = ''; - $widescreen = false; - $handler = $this->get_handler(); - $type = $this->get_real_type(); - - // Process options and reassign values as necessary - if (is_array($options)) - { - extract($options); - } - else - { - $options = explode(',', $options); - foreach($options as $option) - { - $opt = explode(':', $option, 2); - if (isset($opt[0], $opt[1])) - { - $opt[0] = trim($opt[0]); - $opt[1] = trim($opt[1]); - switch ($opt[0]) - { - case 'audio': - $audio = $opt[1]; - break; - - case 'video': - $video = $opt[1]; - break; - - case 'alt': - $alt = $opt[1]; - break; - - case 'altclass': - $altclass = $opt[1]; - break; - - case 'loop': - $loop = $opt[1]; - break; - - case 'width': - $width = $opt[1]; - break; - - case 'height': - $height = $opt[1]; - break; - - case 'bgcolor': - $bgcolor = $opt[1]; - break; - - case 'mediaplayer': - $mediaplayer = $opt[1]; - break; - - case 'widescreen': - $widescreen = $opt[1]; - break; - } - } - } - } - - $mime = explode('/', $type, 2); - $mime = $mime[0]; - - // Process values for 'auto' - if ($width === 'auto') - { - if ($mime === 'video') - { - if ($height === 'auto') - { - $width = 480; - } - elseif ($widescreen) - { - $width = round((intval($height)/9)*16); - } - else - { - $width = round((intval($height)/3)*4); - } - } - else - { - $width = '100%'; - } - } - - if ($height === 'auto') - { - if ($mime === 'audio') - { - $height = 0; - } - elseif ($mime === 'video') - { - if ($width === 'auto') - { - if ($widescreen) - { - $height = 270; - } - else - { - $height = 360; - } - } - elseif ($widescreen) - { - $height = round((intval($width)/16)*9); - } - else - { - $height = round((intval($width)/4)*3); - } - } - else - { - $height = 376; - } - } - elseif ($mime === 'audio') - { - $height = 0; - } - - // Set proper placeholder value - if ($mime === 'audio') - { - $placeholder = $audio; - } - elseif ($mime === 'video') - { - $placeholder = $video; - } - - $embed = ''; - - // Make sure the JS library is included - if (!$native) - { - static $javascript_outputted = null; - if (!$javascript_outputted && $this->javascript) - { - $embed .= '<script type="text/javascript" src="?' . htmlspecialchars($this->javascript) . '"></script>'; - $javascript_outputted = true; - } - } - - // Odeo Feed MP3's - if ($handler === 'odeo') - { - if ($native) - { - $embed .= '<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://adobe.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url=' . $this->get_link() . '"></embed>'; - } - else - { - $embed .= '<script type="text/javascript">embed_odeo("' . $this->get_link() . '");</script>'; - } - } - - // Flash - elseif ($handler === 'flash') - { - if ($native) - { - $embed .= "<embed src=\"" . $this->get_link() . "\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"$type\" quality=\"high\" width=\"$width\" height=\"$height\" bgcolor=\"$bgcolor\" loop=\"$loop\"></embed>"; - } - else - { - $embed .= "<script type='text/javascript'>embed_flash('$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$loop', '$type');</script>"; - } - } - - // Flash Media Player file types. - // Preferred handler for MP3 file types. - elseif ($handler === 'fmedia' || ($handler === 'mp3' && $mediaplayer !== '')) - { - $height += 20; - if ($native) - { - $embed .= "<embed src=\"$mediaplayer\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" quality=\"high\" width=\"$width\" height=\"$height\" wmode=\"transparent\" flashvars=\"file=" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "&autostart=false&repeat=$loop&showdigits=true&showfsbutton=false\"></embed>"; - } - else - { - $embed .= "<script type='text/javascript'>embed_flv('$width', '$height', '" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "', '$placeholder', '$loop', '$mediaplayer');</script>"; - } - } - - // QuickTime 7 file types. Need to test with QuickTime 6. - // Only handle MP3's if the Flash Media Player is not present. - elseif ($handler === 'quicktime' || ($handler === 'mp3' && $mediaplayer === '')) - { - $height += 16; - if ($native) - { - if ($placeholder !== '') - { - $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" href=\"" . $this->get_link() . "\" src=\"$placeholder\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"false\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>"; - } - else - { - $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" src=\"" . $this->get_link() . "\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"true\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>"; - } - } - else - { - $embed .= "<script type='text/javascript'>embed_quicktime('$type', '$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$placeholder', '$loop');</script>"; - } - } - - // Windows Media - elseif ($handler === 'wmedia') - { - $height += 45; - if ($native) - { - $embed .= "<embed type=\"application/x-mplayer2\" src=\"" . $this->get_link() . "\" autosize=\"1\" width=\"$width\" height=\"$height\" showcontrols=\"1\" showstatusbar=\"0\" showdisplay=\"0\" autostart=\"0\"></embed>"; - } - else - { - $embed .= "<script type='text/javascript'>embed_wmedia('$width', '$height', '" . $this->get_link() . "');</script>"; - } - } - - // Everything else - else $embed .= '<a href="' . $this->get_link() . '" class="' . $altclass . '">' . $alt . '</a>'; - - return $embed; - } - - function get_real_type($find_handler = false) - { - // If it's Odeo, let's get it out of the way. - if (substr(strtolower($this->get_link()), 0, 15) === 'http://odeo.com') - { - return 'odeo'; - } - - // Mime-types by handler. - $types_flash = array('application/x-shockwave-flash', 'application/futuresplash'); // Flash - $types_fmedia = array('video/flv', 'video/x-flv','flv-application/octet-stream'); // Flash Media Player - $types_quicktime = array('audio/3gpp', 'audio/3gpp2', 'audio/aac', 'audio/x-aac', 'audio/aiff', 'audio/x-aiff', 'audio/mid', 'audio/midi', 'audio/x-midi', 'audio/mp4', 'audio/m4a', 'audio/x-m4a', 'audio/wav', 'audio/x-wav', 'video/3gpp', 'video/3gpp2', 'video/m4v', 'video/x-m4v', 'video/mp4', 'video/mpeg', 'video/x-mpeg', 'video/quicktime', 'video/sd-video'); // QuickTime - $types_wmedia = array('application/asx', 'application/x-mplayer2', 'audio/x-ms-wma', 'audio/x-ms-wax', 'video/x-ms-asf-plugin', 'video/x-ms-asf', 'video/x-ms-wm', 'video/x-ms-wmv', 'video/x-ms-wvx'); // Windows Media - $types_mp3 = array('audio/mp3', 'audio/x-mp3', 'audio/mpeg', 'audio/x-mpeg'); // MP3 - - if ($this->get_type() !== null) - { - $type = strtolower($this->type); - } - else - { - $type = null; - } - - // If we encounter an unsupported mime-type, check the file extension and guess intelligently. - if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3))) - { - switch (strtolower($this->get_extension())) - { - // Audio mime-types - case 'aac': - case 'adts': - $type = 'audio/acc'; - break; - - case 'aif': - case 'aifc': - case 'aiff': - case 'cdda': - $type = 'audio/aiff'; - break; - - case 'bwf': - $type = 'audio/wav'; - break; - - case 'kar': - case 'mid': - case 'midi': - case 'smf': - $type = 'audio/midi'; - break; - - case 'm4a': - $type = 'audio/x-m4a'; - break; - - case 'mp3': - case 'swa': - $type = 'audio/mp3'; - break; - - case 'wav': - $type = 'audio/wav'; - break; - - case 'wax': - $type = 'audio/x-ms-wax'; - break; - - case 'wma': - $type = 'audio/x-ms-wma'; - break; - - // Video mime-types - case '3gp': - case '3gpp': - $type = 'video/3gpp'; - break; - - case '3g2': - case '3gp2': - $type = 'video/3gpp2'; - break; - - case 'asf': - $type = 'video/x-ms-asf'; - break; - - case 'flv': - $type = 'video/x-flv'; - break; - - case 'm1a': - case 'm1s': - case 'm1v': - case 'm15': - case 'm75': - case 'mp2': - case 'mpa': - case 'mpeg': - case 'mpg': - case 'mpm': - case 'mpv': - $type = 'video/mpeg'; - break; - - case 'm4v': - $type = 'video/x-m4v'; - break; - - case 'mov': - case 'qt': - $type = 'video/quicktime'; - break; - - case 'mp4': - case 'mpg4': - $type = 'video/mp4'; - break; - - case 'sdv': - $type = 'video/sd-video'; - break; - - case 'wm': - $type = 'video/x-ms-wm'; - break; - - case 'wmv': - $type = 'video/x-ms-wmv'; - break; - - case 'wvx': - $type = 'video/x-ms-wvx'; - break; - - // Flash mime-types - case 'spl': - $type = 'application/futuresplash'; - break; - - case 'swf': - $type = 'application/x-shockwave-flash'; - break; - } - } - - if ($find_handler) - { - if (in_array($type, $types_flash)) - { - return 'flash'; - } - elseif (in_array($type, $types_fmedia)) - { - return 'fmedia'; - } - elseif (in_array($type, $types_quicktime)) - { - return 'quicktime'; - } - elseif (in_array($type, $types_wmedia)) - { - return 'wmedia'; - } - elseif (in_array($type, $types_mp3)) - { - return 'mp3'; - } - else - { - return null; - } - } - else - { - return $type; - } - } -} - -class SimplePie_Caption -{ - var $type; - var $lang; - var $startTime; - var $endTime; - var $text; - - // Constructor, used to input the data - function SimplePie_Caption($type = null, $lang = null, $startTime = null, $endTime = null, $text = null) - { - $this->type = $type; - $this->lang = $lang; - $this->startTime = $startTime; - $this->endTime = $endTime; - $this->text = $text; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_endtime() - { - if ($this->endTime !== null) - { - return $this->endTime; - } - else - { - return null; - } - } - - function get_language() - { - if ($this->lang !== null) - { - return $this->lang; - } - else - { - return null; - } - } - - function get_starttime() - { - if ($this->startTime !== null) - { - return $this->startTime; - } - else - { - return null; - } - } - - function get_text() - { - if ($this->text !== null) - { - return $this->text; - } - else - { - return null; - } - } - - function get_type() - { - if ($this->type !== null) - { - return $this->type; - } - else - { - return null; - } - } -} - -class SimplePie_Credit -{ - var $role; - var $scheme; - var $name; - - // Constructor, used to input the data - function SimplePie_Credit($role = null, $scheme = null, $name = null) - { - $this->role = $role; - $this->scheme = $scheme; - $this->name = $name; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_role() - { - if ($this->role !== null) - { - return $this->role; - } - else - { - return null; - } - } - - function get_scheme() - { - if ($this->scheme !== null) - { - return $this->scheme; - } - else - { - return null; - } - } - - function get_name() - { - if ($this->name !== null) - { - return $this->name; - } - else - { - return null; - } - } -} - -class SimplePie_Copyright -{ - var $url; - var $label; - - // Constructor, used to input the data - function SimplePie_Copyright($url = null, $label = null) - { - $this->url = $url; - $this->label = $label; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_url() - { - if ($this->url !== null) - { - return $this->url; - } - else - { - return null; - } - } - - function get_attribution() - { - if ($this->label !== null) - { - return $this->label; - } - else - { - return null; - } - } -} - -class SimplePie_Rating -{ - var $scheme; - var $value; - - // Constructor, used to input the data - function SimplePie_Rating($scheme = null, $value = null) - { - $this->scheme = $scheme; - $this->value = $value; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_scheme() - { - if ($this->scheme !== null) - { - return $this->scheme; - } - else - { - return null; - } - } - - function get_value() - { - if ($this->value !== null) - { - return $this->value; - } - else - { - return null; - } - } -} - -class SimplePie_Restriction -{ - var $relationship; - var $type; - var $value; - - // Constructor, used to input the data - function SimplePie_Restriction($relationship = null, $type = null, $value = null) - { - $this->relationship = $relationship; - $this->type = $type; - $this->value = $value; - } - - function __toString() - { - // There is no $this->data here - return md5(serialize($this)); - } - - function get_relationship() - { - if ($this->relationship !== null) - { - return $this->relationship; - } - else - { - return null; - } - } - - function get_type() - { - if ($this->type !== null) - { - return $this->type; - } - else - { - return null; - } - } - - function get_value() - { - if ($this->value !== null) - { - return $this->value; - } - else - { - return null; - } - } -} - -/** - * @todo Move to properly supporting RFC2616 (HTTP/1.1) - */ -class SimplePie_File -{ - var $url; - var $useragent; - var $success = true; - var $headers = array(); - var $body; - var $status_code; - var $redirects = 0; - var $error; - var $method = SIMPLEPIE_FILE_SOURCE_NONE; - - function SimplePie_File($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false) - { - if (class_exists('idna_convert')) - { - $idn = new idna_convert; - $parsed = SimplePie_Misc::parse_url($url); - $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']); - } - $this->url = $url; - $this->useragent = $useragent; - if (preg_match('/^http(s)?:\/\//i', $url)) - { - if ($useragent === null) - { - $useragent = ini_get('user_agent'); - $this->useragent = $useragent; - } - if (!is_array($headers)) - { - $headers = array(); - } - if (!$force_fsockopen && function_exists('curl_exec')) - { - $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_CURL; - $fp = curl_init(); - $headers2 = array(); - foreach ($headers as $key => $value) - { - $headers2[] = "$key: $value"; - } - if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>=')) - { - curl_setopt($fp, CURLOPT_ENCODING, ''); - } - curl_setopt($fp, CURLOPT_URL, $url); - curl_setopt($fp, CURLOPT_HEADER, 1); - curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($fp, CURLOPT_TIMEOUT, $timeout); - curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout); - curl_setopt($fp, CURLOPT_REFERER, $url); - curl_setopt($fp, CURLOPT_USERAGENT, $useragent); - curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2); - if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>=')) - { - curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1); - curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects); - } - - $this->headers = curl_exec($fp); - if (curl_errno($fp) === 23 || curl_errno($fp) === 61) - { - curl_setopt($fp, CURLOPT_ENCODING, 'none'); - $this->headers = curl_exec($fp); - } - if (curl_errno($fp)) - { - $this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp); - $this->success = false; - } - else - { - $info = curl_getinfo($fp); - curl_close($fp); - $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1); - $this->headers = array_pop($this->headers); - $parser = new SimplePie_HTTP_Parser($this->headers); - if ($parser->parse()) - { - $this->headers = $parser->headers; - $this->body = $parser->body; - $this->status_code = $parser->status_code; - if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects) - { - $this->redirects++; - $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url); - return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen); - } - } - } - } - else - { - $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN; - $url_parts = parse_url($url); - if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https') - { - $url_parts['host'] = "ssl://$url_parts[host]"; - $url_parts['port'] = 443; - } - if (!isset($url_parts['port'])) - { - $url_parts['port'] = 80; - } - $fp = @fsockopen($url_parts['host'], $url_parts['port'], $errno, $errstr, $timeout); - if (!$fp) - { - $this->error = 'fsockopen error: ' . $errstr; - $this->success = false; - } - else - { - stream_set_timeout($fp, $timeout); - if (isset($url_parts['path'])) - { - if (isset($url_parts['query'])) - { - $get = "$url_parts[path]?$url_parts[query]"; - } - else - { - $get = $url_parts['path']; - } - } - else - { - $get = '/'; - } - $out = "GET $get HTTP/1.0\r\n"; - $out .= "Host: $url_parts[host]\r\n"; - $out .= "User-Agent: $useragent\r\n"; - if (extension_loaded('zlib')) - { - $out .= "Accept-Encoding: x-gzip,gzip,deflate\r\n"; - } - - if (isset($url_parts['user']) && isset($url_parts['pass'])) - { - $out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n"; - } - foreach ($headers as $key => $value) - { - $out .= "$key: $value\r\n"; - } - $out .= "Connection: Close\r\n\r\n"; - fwrite($fp, $out); - - $info = stream_get_meta_data($fp); - - $this->headers = ''; - while (!$info['eof'] && !$info['timed_out']) - { - $this->headers .= fread($fp, 1160); - $info = stream_get_meta_data($fp); - } - if (!$info['timed_out']) - { - $parser = new SimplePie_HTTP_Parser($this->headers); - if ($parser->parse()) - { - $this->headers = $parser->headers; - $this->body = $parser->body; - $this->status_code = $parser->status_code; - if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects) - { - $this->redirects++; - $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url); - return $this->SimplePie_File($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen); - } - if (isset($this->headers['content-encoding'])) - { - // Hey, we act dumb elsewhere, so let's do that here too - switch (strtolower(trim($this->headers['content-encoding'], "\x09\x0A\x0D\x20"))) - { - case 'gzip': - case 'x-gzip': - $decoder = new SimplePie_gzdecode($this->body); - if (!$decoder->parse()) - { - $this->error = 'Unable to decode HTTP "gzip" stream'; - $this->success = false; - } - else - { - $this->body = $decoder->data; - } - break; - - case 'deflate': - if (($body = gzuncompress($this->body)) === false) - { - if (($body = gzinflate($this->body)) === false) - { - $this->error = 'Unable to decode HTTP "deflate" stream'; - $this->success = false; - } - } - $this->body = $body; - break; - - default: - $this->error = 'Unknown content coding'; - $this->success = false; - } - } - } - } - else - { - $this->error = 'fsocket timed out'; - $this->success = false; - } - fclose($fp); - } - } - } - else - { - $this->method = SIMPLEPIE_FILE_SOURCE_LOCAL | SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS; - if (!$this->body = file_get_contents($url)) - { - $this->error = 'file_get_contents could not read the file'; - $this->success = false; - } - } - } -} - -/** - * HTTP Response Parser - * - * @package SimplePie - */ -class SimplePie_HTTP_Parser -{ - /** - * HTTP Version - * - * @access public - * @var float - */ - var $http_version = 0.0; - - /** - * Status code - * - * @access public - * @var int - */ - var $status_code = 0; - - /** - * Reason phrase - * - * @access public - * @var string - */ - var $reason = ''; - - /** - * Key/value pairs of the headers - * - * @access public - * @var array - */ - var $headers = array(); - - /** - * Body of the response - * - * @access public - * @var string - */ - var $body = ''; - - /** - * Current state of the state machine - * - * @access private - * @var string - */ - var $state = 'http_version'; - - /** - * Input data - * - * @access private - * @var string - */ - var $data = ''; - - /** - * Input data length (to avoid calling strlen() everytime this is needed) - * - * @access private - * @var int - */ - var $data_length = 0; - - /** - * Current position of the pointer - * - * @var int - * @access private - */ - var $position = 0; - - /** - * Name of the hedaer currently being parsed - * - * @access private - * @var string - */ - var $name = ''; - - /** - * Value of the hedaer currently being parsed - * - * @access private - * @var string - */ - var $value = ''; - - /** - * Create an instance of the class with the input data - * - * @access public - * @param string $data Input data - */ - function SimplePie_HTTP_Parser($data) - { - $this->data = $data; - $this->data_length = strlen($this->data); - } - - /** - * Parse the input data - * - * @access public - * @return bool true on success, false on failure - */ - function parse() - { - while ($this->state && $this->state !== 'emit' && $this->has_data()) - { - $state = $this->state; - $this->$state(); - } - $this->data = ''; - if ($this->state === 'emit' || $this->state === 'body') - { - return true; - } - else - { - $this->http_version = ''; - $this->status_code = ''; - $this->reason = ''; - $this->headers = array(); - $this->body = ''; - return false; - } - } - - /** - * Check whether there is data beyond the pointer - * - * @access private - * @return bool true if there is further data, false if not - */ - function has_data() - { - return (bool) ($this->position < $this->data_length); - } - - /** - * See if the next character is LWS - * - * @access private - * @return bool true if the next character is LWS, false if not - */ - function is_linear_whitespace() - { - return (bool) ($this->data[$this->position] === "\x09" - || $this->data[$this->position] === "\x20" - || ($this->data[$this->position] === "\x0A" - && isset($this->data[$this->position + 1]) - && ($this->data[$this->position + 1] === "\x09" || $this->data[$this->position + 1] === "\x20"))); - } - - /** - * Parse the HTTP version - * - * @access private - */ - function http_version() - { - if (strpos($this->data, "\x0A") !== false && strtoupper(substr($this->data, 0, 5)) === 'HTTP/') - { - $len = strspn($this->data, '0123456789.', 5); - $this->http_version = substr($this->data, 5, $len); - $this->position += 5 + $len; - if (substr_count($this->http_version, '.') <= 1) - { - $this->http_version = (float) $this->http_version; - $this->position += strspn($this->data, "\x09\x20", $this->position); - $this->state = 'status'; - } - else - { - $this->state = false; - } - } - else - { - $this->state = false; - } - } - - /** - * Parse the status code - * - * @access private - */ - function status() - { - if ($len = strspn($this->data, '0123456789', $this->position)) - { - $this->status_code = (int) substr($this->data, $this->position, $len); - $this->position += $len; - $this->state = 'reason'; - } - else - { - $this->state = false; - } - } - - /** - * Parse the reason phrase - * - * @access private - */ - function reason() - { - $len = strcspn($this->data, "\x0A", $this->position); - $this->reason = trim(substr($this->data, $this->position, $len), "\x09\x0D\x20"); - $this->position += $len + 1; - $this->state = 'new_line'; - } - - /** - * Deal with a new line, shifting data around as needed - * - * @access private - */ - function new_line() - { - $this->value = trim($this->value, "\x0D\x20"); - if ($this->name !== '' && $this->value !== '') - { - $this->name = strtolower($this->name); - if (isset($this->headers[$this->name])) - { - $this->headers[$this->name] .= ', ' . $this->value; - } - else - { - $this->headers[$this->name] = $this->value; - } - } - $this->name = ''; - $this->value = ''; - if (substr($this->data[$this->position], 0, 2) === "\x0D\x0A") - { - $this->position += 2; - $this->state = 'body'; - } - elseif ($this->data[$this->position] === "\x0A") - { - $this->position++; - $this->state = 'body'; - } - else - { - $this->state = 'name'; - } - } - - /** - * Parse a header name - * - * @access private - */ - function name() - { - $len = strcspn($this->data, "\x0A:", $this->position); - if (isset($this->data[$this->position + $len])) - { - if ($this->data[$this->position + $len] === "\x0A") - { - $this->position += $len; - $this->state = 'new_line'; - } - else - { - $this->name = substr($this->data, $this->position, $len); - $this->position += $len + 1; - $this->state = 'value'; - } - } - else - { - $this->state = false; - } - } - - /** - * Parse LWS, replacing consecutive LWS characters with a single space - * - * @access private - */ - function linear_whitespace() - { - do - { - if (substr($this->data, $this->position, 2) === "\x0D\x0A") - { - $this->position += 2; - } - elseif ($this->data[$this->position] === "\x0A") - { - $this->position++; - } - $this->position += strspn($this->data, "\x09\x20", $this->position); - } while ($this->has_data() && $this->is_linear_whitespace()); - $this->value .= "\x20"; - } - - /** - * See what state to move to while within non-quoted header values - * - * @access private - */ - function value() - { - if ($this->is_linear_whitespace()) - { - $this->linear_whitespace(); - } - else - { - switch ($this->data[$this->position]) - { - case '"': - $this->position++; - $this->state = 'quote'; - break; - - case "\x0A": - $this->position++; - $this->state = 'new_line'; - break; - - default: - $this->state = 'value_char'; - break; - } - } - } - - /** - * Parse a header value while outside quotes - * - * @access private - */ - function value_char() - { - $len = strcspn($this->data, "\x09\x20\x0A\"", $this->position); - $this->value .= substr($this->data, $this->position, $len); - $this->position += $len; - $this->state = 'value'; - } - - /** - * See what state to move to while within quoted header values - * - * @access private - */ - function quote() - { - if ($this->is_linear_whitespace()) - { - $this->linear_whitespace(); - } - else - { - switch ($this->data[$this->position]) - { - case '"': - $this->position++; - $this->state = 'value'; - break; - - case "\x0A": - $this->position++; - $this->state = 'new_line'; - break; - - case '\\': - $this->position++; - $this->state = 'quote_escaped'; - break; - - default: - $this->state = 'quote_char'; - break; - } - } - } - - /** - * Parse a header value while within quotes - * - * @access private - */ - function quote_char() - { - $len = strcspn($this->data, "\x09\x20\x0A\"\\", $this->position); - $this->value .= substr($this->data, $this->position, $len); - $this->position += $len; - $this->state = 'value'; - } - - /** - * Parse an escaped character within quotes - * - * @access private - */ - function quote_escaped() - { - $this->value .= $this->data[$this->position]; - $this->position++; - $this->state = 'quote'; - } - - /** - * Parse the body - * - * @access private - */ - function body() - { - $this->body = substr($this->data, $this->position); - $this->state = 'emit'; - } -} - -/** - * gzdecode - * - * @package SimplePie - */ -class SimplePie_gzdecode -{ - /** - * Compressed data - * - * @access private - * @see gzdecode::$data - */ - var $compressed_data; - - /** - * Size of compressed data - * - * @access private - */ - var $compressed_size; - - /** - * Minimum size of a valid gzip string - * - * @access private - */ - var $min_compressed_size = 18; - - /** - * Current position of pointer - * - * @access private - */ - var $position = 0; - - /** - * Flags (FLG) - * - * @access private - */ - var $flags; - - /** - * Uncompressed data - * - * @access public - * @see gzdecode::$compressed_data - */ - var $data; - - /** - * Modified time - * - * @access public - */ - var $MTIME; - - /** - * Extra Flags - * - * @access public - */ - var $XFL; - - /** - * Operating System - * - * @access public - */ - var $OS; - - /** - * Subfield ID 1 - * - * @access public - * @see gzdecode::$extra_field - * @see gzdecode::$SI2 - */ - var $SI1; - - /** - * Subfield ID 2 - * - * @access public - * @see gzdecode::$extra_field - * @see gzdecode::$SI1 - */ - var $SI2; - - /** - * Extra field content - * - * @access public - * @see gzdecode::$SI1 - * @see gzdecode::$SI2 - */ - var $extra_field; - - /** - * Original filename - * - * @access public - */ - var $filename; - - /** - * Human readable comment - * - * @access public - */ - var $comment; - - /** - * Don't allow anything to be set - * - * @access public - */ - function __set($name, $value) - { - trigger_error("Cannot write property $name", E_USER_ERROR); - } - - /** - * Set the compressed string and related properties - * - * @access public - */ - function SimplePie_gzdecode($data) - { - $this->compressed_data = $data; - $this->compressed_size = strlen($data); - } - - /** - * Decode the GZIP stream - * - * @access public - */ - function parse() - { - if ($this->compressed_size >= $this->min_compressed_size) - { - // Check ID1, ID2, and CM - if (substr($this->compressed_data, 0, 3) !== "\x1F\x8B\x08") - { - return false; - } - - // Get the FLG (FLaGs) - $this->flags = ord($this->compressed_data[3]); - - // FLG bits above (1 << 4) are reserved - if ($this->flags > 0x1F) - { - return false; - } - - // Advance the pointer after the above - $this->position += 4; - - // MTIME - $mtime = substr($this->compressed_data, $this->position, 4); - // Reverse the string if we're on a big-endian arch because l is the only signed long and is machine endianness - if (current(unpack('S', "\x00\x01")) === 1) - { - $mtime = strrev($mtime); - } - $this->MTIME = current(unpack('l', $mtime)); - $this->position += 4; - - // Get the XFL (eXtra FLags) - $this->XFL = ord($this->compressed_data[$this->position++]); - - // Get the OS (Operating System) - $this->OS = ord($this->compressed_data[$this->position++]); - - // Parse the FEXTRA - if ($this->flags & 4) - { - // Read subfield IDs - $this->SI1 = $this->compressed_data[$this->position++]; - $this->SI2 = $this->compressed_data[$this->position++]; - - // SI2 set to zero is reserved for future use - if ($this->SI2 === "\x00") - { - return false; - } - - // Get the length of the extra field - $len = current(unpack('v', substr($this->compressed_data, $this->position, 2))); - $position += 2; - - // Check the length of the string is still valid - $this->min_compressed_size += $len + 4; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Set the extra field to the given data - $this->extra_field = substr($this->compressed_data, $this->position, $len); - $this->position += $len; - } - else - { - return false; - } - } - - // Parse the FNAME - if ($this->flags & 8) - { - // Get the length of the filename - $len = strcspn($this->compressed_data, "\x00", $this->position); - - // Check the length of the string is still valid - $this->min_compressed_size += $len + 1; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Set the original filename to the given string - $this->filename = substr($this->compressed_data, $this->position, $len); - $this->position += $len + 1; - } - else - { - return false; - } - } - - // Parse the FCOMMENT - if ($this->flags & 16) - { - // Get the length of the comment - $len = strcspn($this->compressed_data, "\x00", $this->position); - - // Check the length of the string is still valid - $this->min_compressed_size += $len + 1; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Set the original comment to the given string - $this->comment = substr($this->compressed_data, $this->position, $len); - $this->position += $len + 1; - } - else - { - return false; - } - } - - // Parse the FHCRC - if ($this->flags & 2) - { - // Check the length of the string is still valid - $this->min_compressed_size += $len + 2; - if ($this->compressed_size >= $this->min_compressed_size) - { - // Read the CRC - $crc = current(unpack('v', substr($this->compressed_data, $this->position, 2))); - - // Check the CRC matches - if ((crc32(substr($this->compressed_data, 0, $this->position)) & 0xFFFF) === $crc) - { - $this->position += 2; - } - else - { - return false; - } - } - else - { - return false; - } - } - - // Decompress the actual data - if (($this->data = gzinflate(substr($this->compressed_data, $this->position, -8))) === false) - { - return false; - } - else - { - $this->position = $this->compressed_size - 8; - } - - // Check CRC of data - $crc = current(unpack('V', substr($this->compressed_data, $this->position, 4))); - $this->position += 4; - /*if (extension_loaded('hash') && sprintf('%u', current(unpack('V', hash('crc32b', $this->data)))) !== sprintf('%u', $crc)) - { - return false; - }*/ - - // Check ISIZE of data - $isize = current(unpack('V', substr($this->compressed_data, $this->position, 4))); - $this->position += 4; - if (sprintf('%u', strlen($this->data) & 0xFFFFFFFF) !== sprintf('%u', $isize)) - { - return false; - } - - // Wow, against all odds, we've actually got a valid gzip string - return true; - } - else - { - return false; - } - } -} - -class SimplePie_Cache -{ - /** - * Don't call the constructor. Please. - * - * @access private - */ - function SimplePie_Cache() - { - trigger_error('Please call SimplePie_Cache::create() instead of the constructor', E_USER_ERROR); - } - - /** - * Create a new SimplePie_Cache object - * - * @static - * @access public - */ - function create($location, $filename, $extension) - { - $location_iri = new SimplePie_IRI($location); - switch ($location_iri->get_scheme()) - { - case 'mysql': - if (extension_loaded('mysql')) - { - return new SimplePie_Cache_MySQL($location_iri, $filename, $extension); - } - break; - - default: - return new SimplePie_Cache_File($location, $filename, $extension); - } - } -} - -class SimplePie_Cache_File -{ - var $location; - var $filename; - var $extension; - var $name; - - function SimplePie_Cache_File($location, $filename, $extension) - { - $this->location = $location; - $this->filename = $filename; - $this->extension = $extension; - $this->name = "$this->location/$this->filename.$this->extension"; - } - - function save($data) - { - if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location)) - { - if (is_a($data, 'SimplePie')) - { - $data = $data->data; - } - - $data = serialize($data); - - if (function_exists('file_put_contents')) - { - return (bool) file_put_contents($this->name, $data); - } - else - { - $fp = fopen($this->name, 'wb'); - if ($fp) - { - fwrite($fp, $data); - fclose($fp); - return true; - } - } - } - return false; - } - - function load() - { - if (file_exists($this->name) && is_readable($this->name)) - { - return unserialize(file_get_contents($this->name)); - } - return false; - } - - function mtime() - { - if (file_exists($this->name)) - { - return filemtime($this->name); - } - return false; - } - - function touch() - { - if (file_exists($this->name)) - { - return touch($this->name); - } - return false; - } - - function unlink() - { - if (file_exists($this->name)) - { - return unlink($this->name); - } - return false; - } -} - -class SimplePie_Cache_DB -{ - function prepare_simplepie_object_for_cache($data) - { - $items = $data->get_items(); - $items_by_id = array(); - - if (!empty($items)) - { - foreach ($items as $item) - { - $items_by_id[$item->get_id()] = $item; - } - - if (count($items_by_id) !== count($items)) - { - $items_by_id = array(); - foreach ($items as $item) - { - $items_by_id[$item->get_id(true)] = $item; - } - } - - if (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0])) - { - $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]; - } - elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0])) - { - $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]; - } - elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0])) - { - $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]; - } - elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0])) - { - $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0]; - } - else - { - $channel = null; - } - - if ($channel !== null) - { - if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry'])) - { - unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']); - } - if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry'])) - { - unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']); - } - if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item'])) - { - unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']); - } - if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item'])) - { - unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']); - } - if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item'])) - { - unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']); - } - } - if (isset($data->data['items'])) - { - unset($data->data['items']); - } - if (isset($data->data['ordered_items'])) - { - unset($data->data['ordered_items']); - } - } - return array(serialize($data->data), $items_by_id); - } -} - -class SimplePie_Cache_MySQL extends SimplePie_Cache_DB -{ - var $mysql; - var $options; - var $id; - - function SimplePie_Cache_MySQL($mysql_location, $name, $extension) - { - $host = $mysql_location->get_host(); - if (SimplePie_Misc::stripos($host, 'unix(') === 0 && substr($host, -1) === ')') - { - $server = ':' . substr($host, 5, -1); - } - else - { - $server = $host; - if ($mysql_location->get_port() !== null) - { - $server .= ':' . $mysql_location->get_port(); - } - } - - if (strpos($mysql_location->get_userinfo(), ':') !== false) - { - list($username, $password) = explode(':', $mysql_location->get_userinfo(), 2); - } - else - { - $username = $mysql_location->get_userinfo(); - $password = null; - } - - if ($this->mysql = mysql_connect($server, $username, $password)) - { - $this->id = $name . $extension; - $this->options = SimplePie_Misc::parse_str($mysql_location->get_query()); - if (!isset($this->options['prefix'][0])) - { - $this->options['prefix'][0] = ''; - } - - if (mysql_select_db(ltrim($mysql_location->get_path(), '/')) - && mysql_query('SET NAMES utf8') - && ($query = mysql_unbuffered_query('SHOW TABLES'))) - { - $db = array(); - while ($row = mysql_fetch_row($query)) - { - $db[] = $row[0]; - } - - if (!in_array($this->options['prefix'][0] . 'cache_data', $db)) - { - if (!mysql_query('CREATE TABLE `' . $this->options['prefix'][0] . 'cache_data` (`id` TEXT CHARACTER SET utf8 NOT NULL, `items` SMALLINT NOT NULL DEFAULT 0, `data` BLOB NOT NULL, `mtime` INT UNSIGNED NOT NULL, UNIQUE (`id`(125)))')) - { - $this->mysql = null; - } - } - - if (!in_array($this->options['prefix'][0] . 'items', $db)) - { - if (!mysql_query('CREATE TABLE `' . $this->options['prefix'][0] . 'items` (`feed_id` TEXT CHARACTER SET utf8 NOT NULL, `id` TEXT CHARACTER SET utf8 NOT NULL, `data` TEXT CHARACTER SET utf8 NOT NULL, `posted` INT UNSIGNED NOT NULL, INDEX `feed_id` (`feed_id`(125)))')) - { - $this->mysql = null; - } - } - } - else - { - $this->mysql = null; - } - } - } - - function save($data) - { - if ($this->mysql) - { - $feed_id = "'" . mysql_real_escape_string($this->id) . "'"; - - if (is_a($data, 'SimplePie')) - { - if (SIMPLEPIE_PHP5) - { - // This keyword needs to defy coding standards for PHP4 compatibility - $data = clone($data); - } - - $prepared = $this->prepare_simplepie_object_for_cache($data); - - if ($query = mysql_query('SELECT `id` FROM `' . $this->options['prefix'][0] . 'cache_data` WHERE `id` = ' . $feed_id, $this->mysql)) - { - if (mysql_num_rows($query)) - { - $items = count($prepared[1]); - if ($items) - { - $sql = 'UPDATE `' . $this->options['prefix'][0] . 'cache_data` SET `items` = ' . $items . ', `data` = \'' . mysql_real_escape_string($prepared[0]) . '\', `mtime` = ' . time() . ' WHERE `id` = ' . $feed_id; - } - else - { - $sql = 'UPDATE `' . $this->options['prefix'][0] . 'cache_data` SET `data` = \'' . mysql_real_escape_string($prepared[0]) . '\', `mtime` = ' . time() . ' WHERE `id` = ' . $feed_id; - } - - if (!mysql_query($sql, $this->mysql)) - { - return false; - } - } - elseif (!mysql_query('INSERT INTO `' . $this->options['prefix'][0] . 'cache_data` (`id`, `items`, `data`, `mtime`) VALUES(' . $feed_id . ', ' . count($prepared[1]) . ', \'' . mysql_real_escape_string($prepared[0]) . '\', ' . time() . ')', $this->mysql)) - { - return false; - } - - $ids = array_keys($prepared[1]); - if (!empty($ids)) - { - foreach ($ids as $id) - { - $database_ids[] = mysql_real_escape_string($id); - } - - if ($query = mysql_unbuffered_query('SELECT `id` FROM `' . $this->options['prefix'][0] . 'items` WHERE `id` = \'' . implode('\' OR `id` = \'', $database_ids) . '\' AND `feed_id` = ' . $feed_id, $this->mysql)) - { - $existing_ids = array(); - while ($row = mysql_fetch_row($query)) - { - $existing_ids[] = $row[0]; - } - - $new_ids = array_diff($ids, $existing_ids); - - foreach ($new_ids as $new_id) - { - if (!($date = $prepared[1][$new_id]->get_date('U'))) - { - $date = time(); - } - - if (!mysql_query('INSERT INTO `' . $this->options['prefix'][0] . 'items` (`feed_id`, `id`, `data`, `posted`) VALUES(' . $feed_id . ', \'' . mysql_real_escape_string($new_id) . '\', \'' . mysql_real_escape_string(serialize($prepared[1][$new_id]->data)) . '\', ' . $date . ')', $this->mysql)) - { - return false; - } - } - return true; - } - } - else - { - return true; - } - } - } - elseif ($query = mysql_query('SELECT `id` FROM `' . $this->options['prefix'][0] . 'cache_data` WHERE `id` = ' . $feed_id, $this->mysql)) - { - if (mysql_num_rows($query)) - { - if (mysql_query('UPDATE `' . $this->options['prefix'][0] . 'cache_data` SET `items` = 0, `data` = \'' . mysql_real_escape_string(serialize($data)) . '\', `mtime` = ' . time() . ' WHERE `id` = ' . $feed_id, $this->mysql)) - { - return true; - } - } - elseif (mysql_query('INSERT INTO `' . $this->options['prefix'][0] . 'cache_data` (`id`, `items`, `data`, `mtime`) VALUES(\'' . mysql_real_escape_string($this->id) . '\', 0, \'' . mysql_real_escape_string(serialize($data)) . '\', ' . time() . ')', $this->mysql)) - { - return true; - } - } - } - return false; - } - - function load() - { - if ($this->mysql && ($query = mysql_query('SELECT `items`, `data` FROM `' . $this->options['prefix'][0] . 'cache_data` WHERE `id` = \'' . mysql_real_escape_string($this->id) . "'", $this->mysql)) && ($row = mysql_fetch_row($query))) - { - $data = unserialize($row[1]); - - if (isset($this->options['items'][0])) - { - $items = (int) $this->options['items'][0]; - } - else - { - $items = (int) $row[0]; - } - - if ($items !== 0) - { - if (isset($data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0])) - { - $feed =& $data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]; - } - elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0])) - { - $feed =& $data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]; - } - elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0])) - { - $feed =& $data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]; - } - elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0])) - { - $feed =& $data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]; - } - else - { - $feed = null; - } - - if ($feed !== null) - { - $sql = 'SELECT `data` FROM `' . $this->options['prefix'][0] . 'items` WHERE `feed_id` = \'' . mysql_real_escape_string($this->id) . '\' ORDER BY `posted` DESC'; - if ($items > 0) - { - $sql .= ' LIMIT ' . $items; - } - - if ($query = mysql_unbuffered_query($sql, $this->mysql)) - { - while ($row = mysql_fetch_row($query)) - { - $feed['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry'][] = unserialize($row[0]); - } - } - else - { - return false; - } - } - } - return $data; - } - return false; - } - - function mtime() - { - if ($this->mysql && ($query = mysql_query('SELECT `mtime` FROM `' . $this->options['prefix'][0] . 'cache_data` WHERE `id` = \'' . mysql_real_escape_string($this->id) . "'", $this->mysql)) && ($row = mysql_fetch_row($query))) - { - return $row[0]; - } - else - { - return false; - } - } - - function touch() - { - if ($this->mysql && ($query = mysql_query('UPDATE `' . $this->options['prefix'][0] . 'cache_data` SET `mtime` = ' . time() . ' WHERE `id` = \'' . mysql_real_escape_string($this->id) . "'", $this->mysql)) && mysql_affected_rows($this->mysql)) - { - return true; - } - else - { - return false; - } - } - - function unlink() - { - if ($this->mysql && ($query = mysql_query('DELETE FROM `' . $this->options['prefix'][0] . 'cache_data` WHERE `id` = \'' . mysql_real_escape_string($this->id) . "'", $this->mysql)) && ($query2 = mysql_query('DELETE FROM `' . $this->options['prefix'][0] . 'items` WHERE `feed_id` = \'' . mysql_real_escape_string($this->id) . "'", $this->mysql))) - { - return true; - } - else - { - return false; - } - } -} - -class SimplePie_Misc -{ - function time_hms($seconds) - { - $time = ''; - - $hours = floor($seconds / 3600); - $remainder = $seconds % 3600; - if ($hours > 0) - { - $time .= $hours.':'; - } - - $minutes = floor($remainder / 60); - $seconds = $remainder % 60; - if ($minutes < 10 && $hours > 0) - { - $minutes = '0' . $minutes; - } - if ($seconds < 10) - { - $seconds = '0' . $seconds; - } - - $time .= $minutes.':'; - $time .= $seconds; - - return $time; - } - - function absolutize_url($relative, $base) - { -return $relative; - $iri = SimplePie_IRI::absolutize(new SimplePie_IRI($base), $relative); - return $iri->get_iri(); - } - - function remove_dot_segments($input) - { - $output = ''; - while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input === '.' || $input === '..') - { - // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise, - if (strpos($input, '../') === 0) - { - $input = substr($input, 3); - } - elseif (strpos($input, './') === 0) - { - $input = substr($input, 2); - } - // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise, - elseif (strpos($input, '/./') === 0) - { - $input = substr_replace($input, '/', 0, 3); - } - elseif ($input === '/.') - { - $input = '/'; - } - // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise, - elseif (strpos($input, '/../') === 0) - { - $input = substr_replace($input, '/', 0, 4); - $output = substr_replace($output, '', strrpos($output, '/')); - } - elseif ($input === '/..') - { - $input = '/'; - $output = substr_replace($output, '', strrpos($output, '/')); - } - // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise, - elseif ($input === '.' || $input === '..') - { - $input = ''; - } - // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer - elseif (($pos = strpos($input, '/', 1)) !== false) - { - $output .= substr($input, 0, $pos); - $input = substr_replace($input, '', 0, $pos); - } - else - { - $output .= $input; - $input = ''; - } - } - return $output . $input; - } - - function get_element($realname, $string) - { - $return = array(); - $name = preg_quote($realname, '/'); - if (preg_match_all("/<($name)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$name>|(\/)?>)/siU", $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) - { - for ($i = 0, $total_matches = count($matches); $i < $total_matches; $i++) - { - $return[$i]['tag'] = $realname; - $return[$i]['full'] = $matches[$i][0][0]; - $return[$i]['offset'] = $matches[$i][0][1]; - if (strlen($matches[$i][3][0]) <= 2) - { - $return[$i]['self_closing'] = true; - } - else - { - $return[$i]['self_closing'] = false; - $return[$i]['content'] = $matches[$i][4][0]; - } - $return[$i]['attribs'] = array(); - if (isset($matches[$i][2][0]) && preg_match_all('/[\x09\x0A\x0B\x0C\x0D\x20]+([^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*)(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"([^"]*)"|\'([^\']*)\'|([^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?/', ' ' . $matches[$i][2][0] . ' ', $attribs, PREG_SET_ORDER)) - { - for ($j = 0, $total_attribs = count($attribs); $j < $total_attribs; $j++) - { - if (count($attribs[$j]) === 2) - { - $attribs[$j][2] = $attribs[$j][1]; - } - $return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j]), 'UTF-8'); - } - } - } - } - return $return; - } - - function element_implode($element) - { - $full = "<$element[tag]"; - foreach ($element['attribs'] as $key => $value) - { - $key = strtolower($key); - $full .= " $key=\"" . htmlspecialchars($value['data']) . '"'; - } - if ($element['self_closing']) - { - $full .= ' />'; - } - else - { - $full .= ">$element[content]</$element[tag]>"; - } - return $full; - } - - function error($message, $level, $file, $line) - { - if ((ini_get('error_reporting') & $level) > 0) - { - switch ($level) - { - case E_USER_ERROR: - $note = 'PHP Error'; - break; - case E_USER_WARNING: - $note = 'PHP Warning'; - break; - case E_USER_NOTICE: - $note = 'PHP Notice'; - break; - default: - $note = 'Unknown Error'; - break; - } - - $log_error = true; - if (!function_exists('error_log')) - { - $log_error = false; - } - - $log_file = @ini_get('error_log'); - if (!empty($log_file) && ('syslog' != $log_file) && !@is_writable($log_file)) - { - $log_error = false; - } - - if ($log_error) - { - @error_log("$note: $message in $file on line $line", 0); - } - } - - return $message; - } - - /** - * If a file has been cached, retrieve and display it. - * - * This is most useful for caching images (get_favicon(), etc.), - * however it works for all cached files. This WILL NOT display ANY - * file/image/page/whatever, but rather only display what has already - * been cached by SimplePie. - * - * @access public - * @see SimplePie::get_favicon() - * @param str $identifier_url URL that is used to identify the content. - * This may or may not be the actual URL of the live content. - * @param str $cache_location Location of SimplePie's cache. Defaults - * to './cache'. - * @param str $cache_extension The file extension that the file was - * cached with. Defaults to 'spc'. - * @param str $cache_class Name of the cache-handling class being used - * in SimplePie. Defaults to 'SimplePie_Cache', and should be left - * as-is unless you've overloaded the class. - * @param str $cache_name_function Obsolete. Exists for backwards - * compatibility reasons only. - */ - function display_cached_file($identifier_url, $cache_location = './cache', $cache_extension = 'spc', $cache_class = 'SimplePie_Cache', $cache_name_function = 'md5') - { - $cache = call_user_func(array($cache_class, 'create'), $cache_location, $identifier_url, $cache_extension); - - if ($file = $cache->load()) - { - if (isset($file['headers']['content-type'])) - { - header('Content-type:' . $file['headers']['content-type']); - } - else - { - header('Content-type: application/octet-stream'); - } - header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days - echo $file['body']; - exit; - } - - die('Cached file for ' . $identifier_url . ' cannot be found.'); - } - - function fix_protocol($url, $http = 1) - { - $url = SimplePie_Misc::normalize_url($url); - $parsed = SimplePie_Misc::parse_url($url); - if ($parsed['scheme'] !== '' && $parsed['scheme'] !== 'http' && $parsed['scheme'] !== 'https') - { - return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['authority'], $parsed['path'], $parsed['query'], $parsed['fragment']), $http); - } - - if ($parsed['scheme'] === '' && $parsed['authority'] === '' && !file_exists($url)) - { - return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['path'], '', $parsed['query'], $parsed['fragment']), $http); - } - - if ($http === 2 && $parsed['scheme'] !== '') - { - return "feed:$url"; - } - elseif ($http === 3 && strtolower($parsed['scheme']) === 'http') - { - return substr_replace($url, 'podcast', 0, 4); - } - elseif ($http === 4 && strtolower($parsed['scheme']) === 'http') - { - return substr_replace($url, 'itpc', 0, 4); - } - else - { - return $url; - } - } - - function parse_url($url) - { - $iri = new SimplePie_IRI($url); - return array( - 'scheme' => (string) $iri->get_scheme(), - 'authority' => (string) $iri->get_authority(), - 'path' => (string) $iri->get_path(), - 'query' => (string) $iri->get_query(), - 'fragment' => (string) $iri->get_fragment() - ); - } - - function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '') - { - $iri = new SimplePie_IRI(''); - $iri->set_scheme($scheme); - $iri->set_authority($authority); - $iri->set_path($path); - $iri->set_query($query); - $iri->set_fragment($fragment); - return $iri->get_iri(); - } - - function normalize_url($url) - { - $iri = new SimplePie_IRI($url); - return $iri->get_iri(); - } - - function percent_encoding_normalization($match) - { - $integer = hexdec($match[1]); - if ($integer >= 0x41 && $integer <= 0x5A || $integer >= 0x61 && $integer <= 0x7A || $integer >= 0x30 && $integer <= 0x39 || $integer === 0x2D || $integer === 0x2E || $integer === 0x5F || $integer === 0x7E) - { - return chr($integer); - } - else - { - return strtoupper($match[0]); - } - } - - /** - * Remove bad UTF-8 bytes - * - * PCRE Pattern to locate bad bytes in a UTF-8 string comes from W3C - * FAQ: Multilingual Forms (modified to include full ASCII range) - * - * @author Geoffrey Sneddon - * @see http://www.w3.org/International/questions/qa-forms-utf-8 - * @param string $str String to remove bad UTF-8 bytes from - * @return string UTF-8 string - */ - function utf8_bad_replace($str) - { - if (function_exists('iconv') && ($return = @iconv('UTF-8', 'UTF-8//IGNORE', $str))) - { - return $return; - } - elseif (function_exists('mb_convert_encoding') && ($return = @mb_convert_encoding($str, 'UTF-8', 'UTF-8'))) - { - return $return; - } - elseif (preg_match_all('/(?:[\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2})+/', $str, $matches)) - { - return implode("\xEF\xBF\xBD", $matches[0]); - } - elseif ($str !== '') - { - return "\xEF\xBF\xBD"; - } - else - { - return ''; - } - } - - /** - * Converts a Windows-1252 encoded string to a UTF-8 encoded string - * - * @static - * @access public - * @param string $string Windows-1252 encoded string - * @return string UTF-8 encoded string - */ - function windows_1252_to_utf8($string) - { - static $convert_table = array("\x80" => "\xE2\x82\xAC", "\x81" => "\xEF\xBF\xBD", "\x82" => "\xE2\x80\x9A", "\x83" => "\xC6\x92", "\x84" => "\xE2\x80\x9E", "\x85" => "\xE2\x80\xA6", "\x86" => "\xE2\x80\xA0", "\x87" => "\xE2\x80\xA1", "\x88" => "\xCB\x86", "\x89" => "\xE2\x80\xB0", "\x8A" => "\xC5\xA0", "\x8B" => "\xE2\x80\xB9", "\x8C" => "\xC5\x92", "\x8D" => "\xEF\xBF\xBD", "\x8E" => "\xC5\xBD", "\x8F" => "\xEF\xBF\xBD", "\x90" => "\xEF\xBF\xBD", "\x91" => "\xE2\x80\x98", "\x92" => "\xE2\x80\x99", "\x93" => "\xE2\x80\x9C", "\x94" => "\xE2\x80\x9D", "\x95" => "\xE2\x80\xA2", "\x96" => "\xE2\x80\x93", "\x97" => "\xE2\x80\x94", "\x98" => "\xCB\x9C", "\x99" => "\xE2\x84\xA2", "\x9A" => "\xC5\xA1", "\x9B" => "\xE2\x80\xBA", "\x9C" => "\xC5\x93", "\x9D" => "\xEF\xBF\xBD", "\x9E" => "\xC5\xBE", "\x9F" => "\xC5\xB8", "\xA0" => "\xC2\xA0", "\xA1" => "\xC2\xA1", "\xA2" => "\xC2\xA2", "\xA3" => "\xC2\xA3", "\xA4" => "\xC2\xA4", "\xA5" => "\xC2\xA5", "\xA6" => "\xC2\xA6", "\xA7" => "\xC2\xA7", "\xA8" => "\xC2\xA8", "\xA9" => "\xC2\xA9", "\xAA" => "\xC2\xAA", "\xAB" => "\xC2\xAB", "\xAC" => "\xC2\xAC", "\xAD" => "\xC2\xAD", "\xAE" => "\xC2\xAE", "\xAF" => "\xC2\xAF", "\xB0" => "\xC2\xB0", "\xB1" => "\xC2\xB1", "\xB2" => "\xC2\xB2", "\xB3" => "\xC2\xB3", "\xB4" => "\xC2\xB4", "\xB5" => "\xC2\xB5", "\xB6" => "\xC2\xB6", "\xB7" => "\xC2\xB7", "\xB8" => "\xC2\xB8", "\xB9" => "\xC2\xB9", "\xBA" => "\xC2\xBA", "\xBB" => "\xC2\xBB", "\xBC" => "\xC2\xBC", "\xBD" => "\xC2\xBD", "\xBE" => "\xC2\xBE", "\xBF" => "\xC2\xBF", "\xC0" => "\xC3\x80", "\xC1" => "\xC3\x81", "\xC2" => "\xC3\x82", "\xC3" => "\xC3\x83", "\xC4" => "\xC3\x84", "\xC5" => "\xC3\x85", "\xC6" => "\xC3\x86", "\xC7" => "\xC3\x87", "\xC8" => "\xC3\x88", "\xC9" => "\xC3\x89", "\xCA" => "\xC3\x8A", "\xCB" => "\xC3\x8B", "\xCC" => "\xC3\x8C", "\xCD" => "\xC3\x8D", "\xCE" => "\xC3\x8E", "\xCF" => "\xC3\x8F", "\xD0" => "\xC3\x90", "\xD1" => "\xC3\x91", "\xD2" => "\xC3\x92", "\xD3" => "\xC3\x93", "\xD4" => "\xC3\x94", "\xD5" => "\xC3\x95", "\xD6" => "\xC3\x96", "\xD7" => "\xC3\x97", "\xD8" => "\xC3\x98", "\xD9" => "\xC3\x99", "\xDA" => "\xC3\x9A", "\xDB" => "\xC3\x9B", "\xDC" => "\xC3\x9C", "\xDD" => "\xC3\x9D", "\xDE" => "\xC3\x9E", "\xDF" => "\xC3\x9F", "\xE0" => "\xC3\xA0", "\xE1" => "\xC3\xA1", "\xE2" => "\xC3\xA2", "\xE3" => "\xC3\xA3", "\xE4" => "\xC3\xA4", "\xE5" => "\xC3\xA5", "\xE6" => "\xC3\xA6", "\xE7" => "\xC3\xA7", "\xE8" => "\xC3\xA8", "\xE9" => "\xC3\xA9", "\xEA" => "\xC3\xAA", "\xEB" => "\xC3\xAB", "\xEC" => "\xC3\xAC", "\xED" => "\xC3\xAD", "\xEE" => "\xC3\xAE", "\xEF" => "\xC3\xAF", "\xF0" => "\xC3\xB0", "\xF1" => "\xC3\xB1", "\xF2" => "\xC3\xB2", "\xF3" => "\xC3\xB3", "\xF4" => "\xC3\xB4", "\xF5" => "\xC3\xB5", "\xF6" => "\xC3\xB6", "\xF7" => "\xC3\xB7", "\xF8" => "\xC3\xB8", "\xF9" => "\xC3\xB9", "\xFA" => "\xC3\xBA", "\xFB" => "\xC3\xBB", "\xFC" => "\xC3\xBC", "\xFD" => "\xC3\xBD", "\xFE" => "\xC3\xBE", "\xFF" => "\xC3\xBF"); - - return strtr($string, $convert_table); - } - - function change_encoding($data, $input, $output) - { - $input = SimplePie_Misc::encoding($input); - $output = SimplePie_Misc::encoding($output); - - // We fail to fail on non US-ASCII bytes - if ($input === 'US-ASCII') - { - static $non_ascii_octects = ''; - if (!$non_ascii_octects) - { - for ($i = 0x80; $i <= 0xFF; $i++) - { - $non_ascii_octects .= chr($i); - } - } - $data = substr($data, 0, strcspn($data, $non_ascii_octects)); - } - - // This is first, as behaviour of this is completely predictable - if ($input === 'Windows-1252' && $output === 'UTF-8') - { - return SimplePie_Misc::windows_1252_to_utf8($data); - } - // This is second, as behaviour of this varies only with PHP version (the middle part of this expression checks the encoding is supported). - elseif (function_exists('mb_convert_encoding') && @mb_convert_encoding("\x80", 'UTF-16BE', $input) !== "\x00\x80" && ($return = @mb_convert_encoding($data, $output, $input))) - { - return $return; - } - // This is last, as behaviour of this varies with OS userland and PHP version - elseif (function_exists('iconv') && ($return = @iconv($input, $output, $data))) - { - return $return; - } - // If we can't do anything, just fail - else - { - return false; - } - } - - function encoding($charset) - { - // Normalization from UTS #22 - switch (strtolower(preg_replace('/(?:[^a-zA-Z0-9]+|([^0-9])0+)/', '\1', $charset))) - { - case 'adobestandardencoding': - case 'csadobestandardencoding': - return 'Adobe-Standard-Encoding'; - - case 'adobesymbolencoding': - case 'cshppsmath': - return 'Adobe-Symbol-Encoding'; - - case 'ami1251': - case 'amiga1251': - return 'Amiga-1251'; - - case 'ansix31101983': - case 'csat5001983': - case 'csiso99naplps': - case 'isoir99': - case 'naplps': - return 'ANSI_X3.110-1983'; - - case 'arabic7': - case 'asmo449': - case 'csiso89asmo449': - case 'iso9036': - case 'isoir89': - return 'ASMO_449'; - - case 'big5': - case 'csbig5': - case 'xxbig5': - return 'Big5'; - - case 'big5hkscs': - return 'Big5-HKSCS'; - - case 'bocu1': - case 'csbocu1': - return 'BOCU-1'; - - case 'brf': - case 'csbrf': - return 'BRF'; - - case 'bs4730': - case 'csiso4unitedkingdom': - case 'gb': - case 'iso646gb': - case 'isoir4': - case 'uk': - return 'BS_4730'; - - case 'bsviewdata': - case 'csiso47bsviewdata': - case 'isoir47': - return 'BS_viewdata'; - - case 'cesu8': - case 'cscesu8': - return 'CESU-8'; - - case 'ca': - case 'csa71': - case 'csaz243419851': - case 'csiso121canadian1': - case 'iso646ca': - case 'isoir121': - return 'CSA_Z243.4-1985-1'; - - case 'csa72': - case 'csaz243419852': - case 'csiso122canadian2': - case 'iso646ca2': - case 'isoir122': - return 'CSA_Z243.4-1985-2'; - - case 'csaz24341985gr': - case 'csiso123csaz24341985gr': - case 'isoir123': - return 'CSA_Z243.4-1985-gr'; - - case 'csiso139csn369103': - case 'csn369103': - case 'isoir139': - return 'CSN_369103'; - - case 'csdecmcs': - case 'dec': - case 'decmcs': - return 'DEC-MCS'; - - case 'csiso21german': - case 'de': - case 'din66003': - case 'iso646de': - case 'isoir21': - return 'DIN_66003'; - - case 'csdkus': - case 'dkus': - return 'dk-us'; - - case 'csiso646danish': - case 'dk': - case 'ds2089': - case 'iso646dk': - return 'DS_2089'; - - case 'csibmebcdicatde': - case 'ebcdicatde': - return 'EBCDIC-AT-DE'; - - case 'csebcdicatdea': - case 'ebcdicatdea': - return 'EBCDIC-AT-DE-A'; - - case 'csebcdiccafr': - case 'ebcdiccafr': - return 'EBCDIC-CA-FR'; - - case 'csebcdicdkno': - case 'ebcdicdkno': - return 'EBCDIC-DK-NO'; - - case 'csebcdicdknoa': - case 'ebcdicdknoa': - return 'EBCDIC-DK-NO-A'; - - case 'csebcdices': - case 'ebcdices': - return 'EBCDIC-ES'; - - case 'csebcdicesa': - case 'ebcdicesa': - return 'EBCDIC-ES-A'; - - case 'csebcdicess': - case 'ebcdicess': - return 'EBCDIC-ES-S'; - - case 'csebcdicfise': - case 'ebcdicfise': - return 'EBCDIC-FI-SE'; - - case 'csebcdicfisea': - case 'ebcdicfisea': - return 'EBCDIC-FI-SE-A'; - - case 'csebcdicfr': - case 'ebcdicfr': - return 'EBCDIC-FR'; - - case 'csebcdicit': - case 'ebcdicit': - return 'EBCDIC-IT'; - - case 'csebcdicpt': - case 'ebcdicpt': - return 'EBCDIC-PT'; - - case 'csebcdicuk': - case 'ebcdicuk': - return 'EBCDIC-UK'; - - case 'csebcdicus': - case 'ebcdicus': - return 'EBCDIC-US'; - - case 'csiso111ecmacyrillic': - case 'ecmacyrillic': - case 'isoir111': - case 'koi8e': - return 'ECMA-cyrillic'; - - case 'csiso17spanish': - case 'es': - case 'iso646es': - case 'isoir17': - return 'ES'; - - case 'csiso85spanish2': - case 'es2': - case 'iso646es2': - case 'isoir85': - return 'ES2'; - - case 'cseucfixwidjapanese': - case 'extendedunixcodefixedwidthforjapanese': - return 'Extended_UNIX_Code_Fixed_Width_for_Japanese'; - - case 'cseucpkdfmtjapanese': - case 'eucjp': - case 'extendedunixcodepackedformatforjapanese': - return 'Extended_UNIX_Code_Packed_Format_for_Japanese'; - - case 'gb18030': - return 'GB18030'; - - case 'chinese': - case 'cp936': - case 'csgb2312': - case 'csiso58gb231280': - case 'gb2312': - case 'gb231280': - case 'gbk': - case 'isoir58': - case 'ms936': - case 'windows936': - return 'GBK'; - - case 'cn': - case 'csiso57gb1988': - case 'gb198880': - case 'iso646cn': - case 'isoir57': - return 'GB_1988-80'; - - case 'csiso153gost1976874': - case 'gost1976874': - case 'isoir153': - case 'stsev35888': - return 'GOST_19768-74'; - - case 'csiso150': - case 'csiso150greekccitt': - case 'greekccitt': - case 'isoir150': - return 'greek-ccitt'; - - case 'csiso88greek7': - case 'greek7': - case 'isoir88': - return 'greek7'; - - case 'csiso18greek7old': - case 'greek7old': - case 'isoir18': - return 'greek7-old'; - - case 'cshpdesktop': - case 'hpdesktop': - return 'HP-DeskTop'; - - case 'cshplegal': - case 'hplegal': - return 'HP-Legal'; - - case 'cshpmath8': - case 'hpmath8': - return 'HP-Math8'; - - case 'cshppifont': - case 'hppifont': - return 'HP-Pi-font'; - - case 'cshproman8': - case 'hproman8': - case 'r8': - case 'roman8': - return 'hp-roman8'; - - case 'hzgb2312': - return 'HZ-GB-2312'; - - case 'csibmsymbols': - case 'ibmsymbols': - return 'IBM-Symbols'; - - case 'csibmthai': - case 'ibmthai': - return 'IBM-Thai'; - - case 'ccsid858': - case 'cp858': - case 'ibm858': - case 'pcmultilingual850euro': - return 'IBM00858'; - - case 'ccsid924': - case 'cp924': - case 'ebcdiclatin9euro': - case 'ibm924': - return 'IBM00924'; - - case 'ccsid1140': - case 'cp1140': - case 'ebcdicus37euro': - case 'ibm1140': - return 'IBM01140'; - - case 'ccsid1141': - case 'cp1141': - case 'ebcdicde273euro': - case 'ibm1141': - return 'IBM01141'; - - case 'ccsid1142': - case 'cp1142': - case 'ebcdicdk277euro': - case 'ebcdicno277euro': - case 'ibm1142': - return 'IBM01142'; - - case 'ccsid1143': - case 'cp1143': - case 'ebcdicfi278euro': - case 'ebcdicse278euro': - case 'ibm1143': - return 'IBM01143'; - - case 'ccsid1144': - case 'cp1144': - case 'ebcdicit280euro': - case 'ibm1144': - return 'IBM01144'; - - case 'ccsid1145': - case 'cp1145': - case 'ebcdices284euro': - case 'ibm1145': - return 'IBM01145'; - - case 'ccsid1146': - case 'cp1146': - case 'ebcdicgb285euro': - case 'ibm1146': - return 'IBM01146'; - - case 'ccsid1147': - case 'cp1147': - case 'ebcdicfr297euro': - case 'ibm1147': - return 'IBM01147'; - - case 'ccsid1148': - case 'cp1148': - case 'ebcdicinternational500euro': - case 'ibm1148': - return 'IBM01148'; - - case 'ccsid1149': - case 'cp1149': - case 'ebcdicis871euro': - case 'ibm1149': - return 'IBM01149'; - - case 'cp37': - case 'csibm37': - case 'ebcdiccpca': - case 'ebcdiccpnl': - case 'ebcdiccpus': - case 'ebcdiccpwt': - case 'ibm37': - return 'IBM037'; - - case 'cp38': - case 'csibm38': - case 'ebcdicint': - case 'ibm38': - return 'IBM038'; - - case 'cp273': - case 'csibm273': - case 'ibm273': - return 'IBM273'; - - case 'cp274': - case 'csibm274': - case 'ebcdicbe': - case 'ibm274': - return 'IBM274'; - - case 'cp275': - case 'csibm275': - case 'ebcdicbr': - case 'ibm275': - return 'IBM275'; - - case 'csibm277': - case 'ebcdiccpdk': - case 'ebcdiccpno': - case 'ibm277': - return 'IBM277'; - - case 'cp278': - case 'csibm278': - case 'ebcdiccpfi': - case 'ebcdiccpse': - case 'ibm278': - return 'IBM278'; - - case 'cp280': - case 'csibm280': - case 'ebcdiccpit': - case 'ibm280': - return 'IBM280'; - - case 'cp281': - case 'csibm281': - case 'ebcdicjpe': - case 'ibm281': - return 'IBM281'; - - case 'cp284': - case 'csibm284': - case 'ebcdiccpes': - case 'ibm284': - return 'IBM284'; - - case 'cp285': - case 'csibm285': - case 'ebcdiccpgb': - case 'ibm285': - return 'IBM285'; - - case 'cp290': - case 'csibm290': - case 'ebcdicjpkana': - case 'ibm290': - return 'IBM290'; - - case 'cp297': - case 'csibm297': - case 'ebcdiccpfr': - case 'ibm297': - return 'IBM297'; - - case 'cp420': - case 'csibm420': - case 'ebcdiccpar1': - case 'ibm420': - return 'IBM420'; - - case 'cp423': - case 'csibm423': - case 'ebcdiccpgr': - case 'ibm423': - return 'IBM423'; - - case 'cp424': - case 'csibm424': - case 'ebcdiccphe': - case 'ibm424': - return 'IBM424'; - - case '437': - case 'cp437': - case 'cspc8codepage437': - case 'ibm437': - return 'IBM437'; - - case 'cp500': - case 'csibm500': - case 'ebcdiccpbe': - case 'ebcdiccpch': - case 'ibm500': - return 'IBM500'; - - case 'cp775': - case 'cspc775baltic': - case 'ibm775': - return 'IBM775'; - - case '850': - case 'cp850': - case 'cspc850multilingual': - case 'ibm850': - return 'IBM850'; - - case '851': - case 'cp851': - case 'csibm851': - case 'ibm851': - return 'IBM851'; - - case '852': - case 'cp852': - case 'cspcp852': - case 'ibm852': - return 'IBM852'; - - case '855': - case 'cp855': - case 'csibm855': - case 'ibm855': - return 'IBM855'; - - case '857': - case 'cp857': - case 'csibm857': - case 'ibm857': - return 'IBM857'; - - case '860': - case 'cp860': - case 'csibm860': - case 'ibm860': - return 'IBM860'; - - case '861': - case 'cp861': - case 'cpis': - case 'csibm861': - case 'ibm861': - return 'IBM861'; - - case '862': - case 'cp862': - case 'cspc862latinhebrew': - case 'ibm862': - return 'IBM862'; - - case '863': - case 'cp863': - case 'csibm863': - case 'ibm863': - return 'IBM863'; - - case 'cp864': - case 'csibm864': - case 'ibm864': - return 'IBM864'; - - case '865': - case 'cp865': - case 'csibm865': - case 'ibm865': - return 'IBM865'; - - case '866': - case 'cp866': - case 'csibm866': - case 'ibm866': - return 'IBM866'; - - case 'cp868': - case 'cpar': - case 'csibm868': - case 'ibm868': - return 'IBM868'; - - case '869': - case 'cp869': - case 'cpgr': - case 'csibm869': - case 'ibm869': - return 'IBM869'; - - case 'cp870': - case 'csibm870': - case 'ebcdiccproece': - case 'ebcdiccpyu': - case 'ibm870': - return 'IBM870'; - - case 'cp871': - case 'csibm871': - case 'ebcdiccpis': - case 'ibm871': - return 'IBM871'; - - case 'cp880': - case 'csibm880': - case 'ebcdiccyrillic': - case 'ibm880': - return 'IBM880'; - - case 'cp891': - case 'csibm891': - case 'ibm891': - return 'IBM891'; - - case 'cp903': - case 'csibm903': - case 'ibm903': - return 'IBM903'; - - case '904': - case 'cp904': - case 'csibbm904': - case 'ibm904': - return 'IBM904'; - - case 'cp905': - case 'csibm905': - case 'ebcdiccptr': - case 'ibm905': - return 'IBM905'; - - case 'cp918': - case 'csibm918': - case 'ebcdiccpar2': - case 'ibm918': - return 'IBM918'; - - case 'cp1026': - case 'csibm1026': - case 'ibm1026': - return 'IBM1026'; - - case 'ibm1047': - return 'IBM1047'; - - case 'csiso143iecp271': - case 'iecp271': - case 'isoir143': - return 'IEC_P27-1'; - - case 'csiso49inis': - case 'inis': - case 'isoir49': - return 'INIS'; - - case 'csiso50inis8': - case 'inis8': - case 'isoir50': - return 'INIS-8'; - - case 'csiso51iniscyrillic': - case 'iniscyrillic': - case 'isoir51': - return 'INIS-cyrillic'; - - case 'csinvariant': - case 'invariant': - return 'INVARIANT'; - - case 'iso2022cn': - return 'ISO-2022-CN'; - - case 'iso2022cnext': - return 'ISO-2022-CN-EXT'; - - case 'csiso2022jp': - case 'iso2022jp': - return 'ISO-2022-JP'; - - case 'csiso2022jp2': - case 'iso2022jp2': - return 'ISO-2022-JP-2'; - - case 'csiso2022kr': - case 'iso2022kr': - return 'ISO-2022-KR'; - - case 'cswindows30latin1': - case 'iso88591windows30latin1': - return 'ISO-8859-1-Windows-3.0-Latin-1'; - - case 'cswindows31latin1': - case 'iso88591windows31latin1': - return 'ISO-8859-1-Windows-3.1-Latin-1'; - - case 'csisolatin2': - case 'iso88592': - case 'iso885921987': - case 'isoir101': - case 'l2': - case 'latin2': - return 'ISO-8859-2'; - - case 'cswindows31latin2': - case 'iso88592windowslatin2': - return 'ISO-8859-2-Windows-Latin-2'; - - case 'csisolatin3': - case 'iso88593': - case 'iso885931988': - case 'isoir109': - case 'l3': - case 'latin3': - return 'ISO-8859-3'; - - case 'csisolatin4': - case 'iso88594': - case 'iso885941988': - case 'isoir110': - case 'l4': - case 'latin4': - return 'ISO-8859-4'; - - case 'csisolatincyrillic': - case 'cyrillic': - case 'iso88595': - case 'iso885951988': - case 'isoir144': - return 'ISO-8859-5'; - - case 'arabic': - case 'asmo708': - case 'csisolatinarabic': - case 'ecma114': - case 'iso88596': - case 'iso885961987': - case 'isoir127': - return 'ISO-8859-6'; - - case 'csiso88596e': - case 'iso88596e': - return 'ISO-8859-6-E'; - - case 'csiso88596i': - case 'iso88596i': - return 'ISO-8859-6-I'; - - case 'csisolatingreek': - case 'ecma118': - case 'elot928': - case 'greek': - case 'greek8': - case 'iso88597': - case 'iso885971987': - case 'isoir126': - return 'ISO-8859-7'; - - case 'csisolatinhebrew': - case 'hebrew': - case 'iso88598': - case 'iso885981988': - case 'isoir138': - return 'ISO-8859-8'; - - case 'csiso88598e': - case 'iso88598e': - return 'ISO-8859-8-E'; - - case 'csiso88598i': - case 'iso88598i': - return 'ISO-8859-8-I'; - - case 'cswindows31latin5': - case 'iso88599windowslatin5': - return 'ISO-8859-9-Windows-Latin-5'; - - case 'csisolatin6': - case 'iso885910': - case 'iso8859101992': - case 'isoir157': - case 'l6': - case 'latin6': - return 'ISO-8859-10'; - - case 'iso885913': - return 'ISO-8859-13'; - - case 'iso885914': - case 'iso8859141998': - case 'isoceltic': - case 'isoir199': - case 'l8': - case 'latin8': - return 'ISO-8859-14'; - - case 'iso885915': - case 'latin9': - return 'ISO-8859-15'; - - case 'iso885916': - case 'iso8859162001': - case 'isoir226': - case 'l10': - case 'latin10': - return 'ISO-8859-16'; - - case 'iso10646j1': - return 'ISO-10646-J-1'; - - case 'csunicode': - case 'iso10646ucs2': - return 'ISO-10646-UCS-2'; - - case 'csucs4': - case 'iso10646ucs4': - return 'ISO-10646-UCS-4'; - - case 'csunicodeascii': - case 'iso10646ucsbasic': - return 'ISO-10646-UCS-Basic'; - - case 'csunicodelatin1': - case 'iso10646': - case 'iso10646unicodelatin1': - return 'ISO-10646-Unicode-Latin1'; - - case 'csiso10646utf1': - case 'iso10646utf1': - return 'ISO-10646-UTF-1'; - - case 'csiso115481': - case 'iso115481': - case 'isotr115481': - return 'ISO-11548-1'; - - case 'csiso90': - case 'isoir90': - return 'iso-ir-90'; - - case 'csunicodeibm1261': - case 'isounicodeibm1261': - return 'ISO-Unicode-IBM-1261'; - - case 'csunicodeibm1264': - case 'isounicodeibm1264': - return 'ISO-Unicode-IBM-1264'; - - case 'csunicodeibm1265': - case 'isounicodeibm1265': - return 'ISO-Unicode-IBM-1265'; - - case 'csunicodeibm1268': - case 'isounicodeibm1268': - return 'ISO-Unicode-IBM-1268'; - - case 'csunicodeibm1276': - case 'isounicodeibm1276': - return 'ISO-Unicode-IBM-1276'; - - case 'csiso646basic1983': - case 'iso646basic1983': - case 'ref': - return 'ISO_646.basic:1983'; - - case 'csiso2intlrefversion': - case 'irv': - case 'iso646irv1983': - case 'isoir2': - return 'ISO_646.irv:1983'; - - case 'csiso2033': - case 'e13b': - case 'iso20331983': - case 'isoir98': - return 'ISO_2033-1983'; - - case 'csiso5427cyrillic': - case 'iso5427': - case 'isoir37': - return 'ISO_5427'; - - case 'iso5427cyrillic1981': - case 'iso54271981': - case 'isoir54': - return 'ISO_5427:1981'; - - case 'csiso5428greek': - case 'iso54281980': - case 'isoir55': - return 'ISO_5428:1980'; - - case 'csiso6937add': - case 'iso6937225': - case 'isoir152': - return 'ISO_6937-2-25'; - - case 'csisotextcomm': - case 'iso69372add': - case 'isoir142': - return 'ISO_6937-2-add'; - - case 'csiso8859supp': - case 'iso8859supp': - case 'isoir154': - case 'latin125': - return 'ISO_8859-supp'; - - case 'csiso10367box': - case 'iso10367box': - case 'isoir155': - return 'ISO_10367-box'; - - case 'csiso15italian': - case 'iso646it': - case 'isoir15': - case 'it': - return 'IT'; - - case 'csiso13jisc6220jp': - case 'isoir13': - case 'jisc62201969': - case 'jisc62201969jp': - case 'katakana': - case 'x2017': - return 'JIS_C6220-1969-jp'; - - case 'csiso14jisc6220ro': - case 'iso646jp': - case 'isoir14': - case 'jisc62201969ro': - case 'jp': - return 'JIS_C6220-1969-ro'; - - case 'csiso42jisc62261978': - case 'isoir42': - case 'jisc62261978': - return 'JIS_C6226-1978'; - - case 'csiso87jisx208': - case 'isoir87': - case 'jisc62261983': - case 'jisx2081983': - case 'x208': - return 'JIS_C6226-1983'; - - case 'csiso91jisc62291984a': - case 'isoir91': - case 'jisc62291984a': - case 'jpocra': - return 'JIS_C6229-1984-a'; - - case 'csiso92jisc62991984b': - case 'iso646jpocrb': - case 'isoir92': - case 'jisc62291984b': - case 'jpocrb': - return 'JIS_C6229-1984-b'; - - case 'csiso93jis62291984badd': - case 'isoir93': - case 'jisc62291984badd': - case 'jpocrbadd': - return 'JIS_C6229-1984-b-add'; - - case 'csiso94jis62291984hand': - case 'isoir94': - case 'jisc62291984hand': - case 'jpocrhand': - return 'JIS_C6229-1984-hand'; - - case 'csiso95jis62291984handadd': - case 'isoir95': - case 'jisc62291984handadd': - case 'jpocrhandadd': - return 'JIS_C6229-1984-hand-add'; - - case 'csiso96jisc62291984kana': - case 'isoir96': - case 'jisc62291984kana': - return 'JIS_C6229-1984-kana'; - - case 'csjisencoding': - case 'jisencoding': - return 'JIS_Encoding'; - - case 'cshalfwidthkatakana': - case 'jisx201': - case 'x201': - return 'JIS_X0201'; - - case 'csiso159jisx2121990': - case 'isoir159': - case 'jisx2121990': - case 'x212': - return 'JIS_X0212-1990'; - - case 'csiso141jusib1002': - case 'iso646yu': - case 'isoir141': - case 'js': - case 'jusib1002': - case 'yu': - return 'JUS_I.B1.002'; - - case 'csiso147macedonian': - case 'isoir147': - case 'jusib1003mac': - case 'macedonian': - return 'JUS_I.B1.003-mac'; - - case 'csiso146serbian': - case 'isoir146': - case 'jusib1003serb': - case 'serbian': - return 'JUS_I.B1.003-serb'; - - case 'koi7switched': - return 'KOI7-switched'; - - case 'cskoi8r': - case 'koi8r': - return 'KOI8-R'; - - case 'koi8u': - return 'KOI8-U'; - - case 'csksc5636': - case 'iso646kr': - case 'ksc5636': - return 'KSC5636'; - - case 'cskz1048': - case 'kz1048': - case 'rk1048': - case 'strk10482002': - return 'KZ-1048'; - - case 'csiso19latingreek': - case 'isoir19': - case 'latingreek': - return 'latin-greek'; - - case 'csiso27latingreek1': - case 'isoir27': - case 'latingreek1': - return 'Latin-greek-1'; - - case 'csiso158lap': - case 'isoir158': - case 'lap': - case 'latinlap': - return 'latin-lap'; - - case 'csmacintosh': - case 'mac': - case 'macintosh': - return 'macintosh'; - - case 'csmicrosoftpublishing': - case 'microsoftpublishing': - return 'Microsoft-Publishing'; - - case 'csmnem': - case 'mnem': - return 'MNEM'; - - case 'csmnemonic': - case 'mnemonic': - return 'MNEMONIC'; - - case 'csiso86hungarian': - case 'hu': - case 'iso646hu': - case 'isoir86': - case 'msz77953': - return 'MSZ_7795.3'; - - case 'csnatsdano': - case 'isoir91': - case 'natsdano': - return 'NATS-DANO'; - - case 'csnatsdanoadd': - case 'isoir92': - case 'natsdanoadd': - return 'NATS-DANO-ADD'; - - case 'csnatssefi': - case 'isoir81': - case 'natssefi': - return 'NATS-SEFI'; - - case 'csnatssefiadd': - case 'isoir82': - case 'natssefiadd': - return 'NATS-SEFI-ADD'; - - case 'csiso151cuba': - case 'cuba': - case 'iso646cu': - case 'isoir151': - case 'ncnc1081': - return 'NC_NC00-10:81'; - - case 'csiso69french': - case 'fr': - case 'iso646fr': - case 'isoir69': - case 'nfz62010': - return 'NF_Z_62-010'; - - case 'csiso25french': - case 'iso646fr1': - case 'isoir25': - case 'nfz620101973': - return 'NF_Z_62-010_(1973)'; - - case 'csiso60danishnorwegian': - case 'csiso60norwegian1': - case 'iso646no': - case 'isoir60': - case 'no': - case 'ns45511': - return 'NS_4551-1'; - - case 'csiso61norwegian2': - case 'iso646no2': - case 'isoir61': - case 'no2': - case 'ns45512': - return 'NS_4551-2'; - - case 'osdebcdicdf3irv': - return 'OSD_EBCDIC_DF03_IRV'; - - case 'osdebcdicdf41': - return 'OSD_EBCDIC_DF04_1'; - - case 'osdebcdicdf415': - return 'OSD_EBCDIC_DF04_15'; - - case 'cspc8danishnorwegian': - case 'pc8danishnorwegian': - return 'PC8-Danish-Norwegian'; - - case 'cspc8turkish': - case 'pc8turkish': - return 'PC8-Turkish'; - - case 'csiso16portuguese': - case 'iso646pt': - case 'isoir16': - case 'pt': - return 'PT'; - - case 'csiso84portuguese2': - case 'iso646pt2': - case 'isoir84': - case 'pt2': - return 'PT2'; - - case 'cp154': - case 'csptcp154': - case 'cyrillicasian': - case 'pt154': - case 'ptcp154': - return 'PTCP154'; - - case 'scsu': - return 'SCSU'; - - case 'csiso10swedish': - case 'fi': - case 'iso646fi': - case 'iso646se': - case 'isoir10': - case 'se': - case 'sen850200b': - return 'SEN_850200_B'; - - case 'csiso11swedishfornames': - case 'iso646se2': - case 'isoir11': - case 'se2': - case 'sen850200c': - return 'SEN_850200_C'; - - case 'csshiftjis': - case 'mskanji': - case 'shiftjis': - return 'Shift_JIS'; - - case 'csiso102t617bit': - case 'isoir102': - case 't617bit': - return 'T.61-7bit'; - - case 'csiso103t618bit': - case 'isoir103': - case 't61': - case 't618bit': - return 'T.61-8bit'; - - case 'csiso128t101g2': - case 'isoir128': - case 't101g2': - return 'T.101-G2'; - - case 'cstscii': - case 'tscii': - return 'TSCII'; - - case 'csunicode11': - case 'unicode11': - return 'UNICODE-1-1'; - - case 'csunicode11utf7': - case 'unicode11utf7': - return 'UNICODE-1-1-UTF-7'; - - case 'csunknown8bit': - case 'unknown8bit': - return 'UNKNOWN-8BIT'; - - case 'ansix341968': - case 'ansix341986': - case 'ascii': - case 'cp367': - case 'csascii': - case 'ibm367': - case 'iso646irv1991': - case 'iso646us': - case 'isoir6': - case 'us': - case 'usascii': - return 'US-ASCII'; - - case 'csusdk': - case 'usdk': - return 'us-dk'; - - case 'utf7': - return 'UTF-7'; - - case 'utf8': - return 'UTF-8'; - - case 'utf16': - return 'UTF-16'; - - case 'utf16be': - return 'UTF-16BE'; - - case 'utf16le': - return 'UTF-16LE'; - - case 'utf32': - return 'UTF-32'; - - case 'utf32be': - return 'UTF-32BE'; - - case 'utf32le': - return 'UTF-32LE'; - - case 'csventurainternational': - case 'venturainternational': - return 'Ventura-International'; - - case 'csventuramath': - case 'venturamath': - return 'Ventura-Math'; - - case 'csventuraus': - case 'venturaus': - return 'Ventura-US'; - - case 'csiso70videotexsupp1': - case 'isoir70': - case 'videotexsuppl': - return 'videotex-suppl'; - - case 'csviqr': - case 'viqr': - return 'VIQR'; - - case 'csviscii': - case 'viscii': - return 'VISCII'; - - case 'cswindows31j': - case 'windows31j': - return 'Windows-31J'; - - case 'iso885911': - case 'tis620': - return 'windows-874'; - - case 'cseuckr': - case 'csksc56011987': - case 'euckr': - case 'isoir149': - case 'korean': - case 'ksc5601': - case 'ksc56011987': - case 'ksc56011989': - case 'windows949': - return 'windows-949'; - - case 'windows1250': - return 'windows-1250'; - - case 'windows1251': - return 'windows-1251'; - - case 'cp819': - case 'csisolatin1': - case 'ibm819': - case 'iso88591': - case 'iso885911987': - case 'isoir100': - case 'l1': - case 'latin1': - case 'windows1252': - return 'windows-1252'; - - case 'windows1253': - return 'windows-1253'; - - case 'csisolatin5': - case 'iso88599': - case 'iso885991989': - case 'isoir148': - case 'l5': - case 'latin5': - case 'windows1254': - return 'windows-1254'; - - case 'windows1255': - return 'windows-1255'; - - case 'windows1256': - return 'windows-1256'; - - case 'windows1257': - return 'windows-1257'; - - case 'windows1258': - return 'windows-1258'; - - default: - return $charset; - } - } - - function get_curl_version() - { - if (is_array($curl = curl_version())) - { - $curl = $curl['version']; - } - elseif (substr($curl, 0, 5) === 'curl/') - { - $curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5)); - } - elseif (substr($curl, 0, 8) === 'libcurl/') - { - $curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8)); - } - else - { - $curl = 0; - } - return $curl; - } - - function is_subclass_of($class1, $class2) - { - if (func_num_args() !== 2) - { - trigger_error('Wrong parameter count for SimplePie_Misc::is_subclass_of()', E_USER_WARNING); - } - elseif (version_compare(PHP_VERSION, '5.0.3', '>=') || is_object($class1)) - { - return is_subclass_of($class1, $class2); - } - elseif (is_string($class1) && is_string($class2)) - { - if (class_exists($class1)) - { - if (class_exists($class2)) - { - $class2 = strtolower($class2); - while ($class1 = strtolower(get_parent_class($class1))) - { - if ($class1 === $class2) - { - return true; - } - } - } - } - else - { - trigger_error('Unknown class passed as parameter', E_USER_WARNNG); - } - } - return false; - } - - /** - * Strip HTML comments - * - * @access public - * @param string $data Data to strip comments from - * @return string Comment stripped string - */ - function strip_comments($data) - { - $output = ''; - while (($start = strpos($data, '<!--')) !== false) - { - $output .= substr($data, 0, $start); - if (($end = strpos($data, '-->', $start)) !== false) - { - $data = substr_replace($data, '', 0, $end + 3); - } - else - { - $data = ''; - } - } - return $output . $data; - } - - function parse_date($dt) - { - $parser = SimplePie_Parse_Date::get(); - return $parser->parse($dt); - } - - /** - * Decode HTML entities - * - * @static - * @access public - * @param string $data Input data - * @return string Output data - */ - function entities_decode($data) - { - $decoder = new SimplePie_Decode_HTML_Entities($data); - return $decoder->parse(); - } - - /** - * Remove RFC822 comments - * - * @access public - * @param string $data Data to strip comments from - * @return string Comment stripped string - */ - function uncomment_rfc822($string) - { - $string = (string) $string; - $position = 0; - $length = strlen($string); - $depth = 0; - - $output = ''; - - while ($position < $length && ($pos = strpos($string, '(', $position)) !== false) - { - $output .= substr($string, $position, $pos - $position); - $position = $pos + 1; - if ($string[$pos - 1] !== '\\') - { - $depth++; - while ($depth && $position < $length) - { - $position += strcspn($string, '()', $position); - if ($string[$position - 1] === '\\') - { - $position++; - continue; - } - elseif (isset($string[$position])) - { - switch ($string[$position]) - { - case '(': - $depth++; - break; - - case ')': - $depth--; - break; - } - $position++; - } - else - { - break; - } - } - } - else - { - $output .= '('; - } - } - $output .= substr($string, $position); - - return $output; - } - - function parse_mime($mime) - { - if (($pos = strpos($mime, ';')) === false) - { - return trim($mime); - } - else - { - return trim(substr($mime, 0, $pos)); - } - } - - function htmlspecialchars_decode($string, $quote_style) - { - if (function_exists('htmlspecialchars_decode')) - { - return htmlspecialchars_decode($string, $quote_style); - } - else - { - return strtr($string, array_flip(get_html_translation_table(HTML_SPECIALCHARS, $quote_style))); - } - } - - function atom_03_construct_type($attribs) - { - if (isset($attribs['']['mode']) && strtolower(trim($attribs['']['mode']) === 'base64')) - { - $mode = SIMPLEPIE_CONSTRUCT_BASE64; - } - else - { - $mode = SIMPLEPIE_CONSTRUCT_NONE; - } - if (isset($attribs['']['type'])) - { - switch (strtolower(trim($attribs['']['type']))) - { - case 'text': - case 'text/plain': - return SIMPLEPIE_CONSTRUCT_TEXT | $mode; - - case 'html': - case 'text/html': - return SIMPLEPIE_CONSTRUCT_HTML | $mode; - - case 'xhtml': - case 'application/xhtml+xml': - return SIMPLEPIE_CONSTRUCT_XHTML | $mode; - - default: - return SIMPLEPIE_CONSTRUCT_NONE | $mode; - } - } - else - { - return SIMPLEPIE_CONSTRUCT_TEXT | $mode; - } - } - - function atom_10_construct_type($attribs) - { - if (isset($attribs['']['type'])) - { - switch (strtolower(trim($attribs['']['type']))) - { - case 'text': - return SIMPLEPIE_CONSTRUCT_TEXT; - - case 'html': - return SIMPLEPIE_CONSTRUCT_HTML; - - case 'xhtml': - return SIMPLEPIE_CONSTRUCT_XHTML; - - default: - return SIMPLEPIE_CONSTRUCT_NONE; - } - } - return SIMPLEPIE_CONSTRUCT_TEXT; - } - - function atom_10_content_construct_type($attribs) - { - if (isset($attribs['']['type'])) - { - $type = strtolower(trim($attribs['']['type'])); - switch ($type) - { - case 'text': - return SIMPLEPIE_CONSTRUCT_TEXT; - - case 'html': - return SIMPLEPIE_CONSTRUCT_HTML; - - case 'xhtml': - return SIMPLEPIE_CONSTRUCT_XHTML; - } - if (in_array(substr($type, -4), array('+xml', '/xml')) || substr($type, 0, 5) === 'text/') - { - return SIMPLEPIE_CONSTRUCT_NONE; - } - else - { - return SIMPLEPIE_CONSTRUCT_BASE64; - } - } - else - { - return SIMPLEPIE_CONSTRUCT_TEXT; - } - } - - function is_isegment_nz_nc($string) - { - return (bool) preg_match('/^([A-Za-z0-9\-._~\x{A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}\x{10000}-\x{1FFFD}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}\x{40000}-\x{4FFFD}\x{50000}-\x{5FFFD}\x{60000}-\x{6FFFD}\x{70000}-\x{7FFFD}\x{80000}-\x{8FFFD}\x{90000}-\x{9FFFD}\x{A0000}-\x{AFFFD}\x{B0000}-\x{BFFFD}\x{C0000}-\x{CFFFD}\x{D0000}-\x{DFFFD}\x{E1000}-\x{EFFFD}!$&\'()*+,;=@]|(%[0-9ABCDEF]{2}))+$/u', $string); - } - - function space_seperated_tokens($string) - { - $space_characters = "\x20\x09\x0A\x0B\x0C\x0D"; - $string_length = strlen($string); - - $position = strspn($string, $space_characters); - $tokens = array(); - - while ($position < $string_length) - { - $len = strcspn($string, $space_characters, $position); - $tokens[] = substr($string, $position, $len); - $position += $len; - $position += strspn($string, $space_characters, $position); - } - - return $tokens; - } - - function array_unique($array) - { - if (version_compare(PHP_VERSION, '5.2', '>=')) - { - return array_unique($array); - } - else - { - $array = (array) $array; - $new_array = array(); - $new_array_strings = array(); - foreach ($array as $key => $value) - { - if (is_object($value)) - { - if (method_exists($value, '__toString')) - { - $cmp = $value->__toString(); - } - else - { - trigger_error('Object of class ' . get_class($value) . ' could not be converted to string', E_USER_ERROR); - } - } - elseif (is_array($value)) - { - $cmp = (string) reset($value); - } - else - { - $cmp = (string) $value; - } - if (!in_array($cmp, $new_array_strings)) - { - $new_array[$key] = $value; - $new_array_strings[] = $cmp; - } - } - return $new_array; - } - } - - /** - * Converts a unicode codepoint to a UTF-8 character - * - * @static - * @access public - * @param int $codepoint Unicode codepoint - * @return string UTF-8 character - */ - function codepoint_to_utf8($codepoint) - { - $codepoint = (int) $codepoint; - if ($codepoint < 0) - { - return false; - } - else if ($codepoint <= 0x7f) - { - return chr($codepoint); - } - else if ($codepoint <= 0x7ff) - { - return chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f)); - } - else if ($codepoint <= 0xffff) - { - return chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f)); - } - else if ($codepoint <= 0x10ffff) - { - return chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f)); - } - else - { - // U+FFFD REPLACEMENT CHARACTER - return "\xEF\xBF\xBD"; - } - } - - /** - * Re-implementation of PHP 5's stripos() - * - * Returns the numeric position of the first occurrence of needle in the - * haystack string. - * - * @static - * @access string - * @param object $haystack - * @param string $needle Note that the needle may be a string of one or more - * characters. If needle is not a string, it is converted to an integer - * and applied as the ordinal value of a character. - * @param int $offset The optional offset parameter allows you to specify which - * character in haystack to start searching. The position returned is still - * relative to the beginning of haystack. - * @return bool If needle is not found, stripos() will return boolean false. - */ - function stripos($haystack, $needle, $offset = 0) - { - if (function_exists('stripos')) - { - return stripos($haystack, $needle, $offset); - } - else - { - if (is_string($needle)) - { - $needle = strtolower($needle); - } - elseif (is_int($needle) || is_bool($needle) || is_double($needle)) - { - $needle = strtolower(chr($needle)); - } - else - { - trigger_error('needle is not a string or an integer', E_USER_WARNING); - return false; - } - - return strpos(strtolower($haystack), $needle, $offset); - } - } - - /** - * Similar to parse_str() - * - * Returns an associative array of name/value pairs, where the value is an - * array of values that have used the same name - * - * @static - * @access string - * @param string $str The input string. - * @return array - */ - function parse_str($str) - { - $return = array(); - $str = explode('&', $str); - - foreach ($str as $section) - { - if (strpos($section, '=') !== false) - { - list($name, $value) = explode('=', $section, 2); - $return[urldecode($name)][] = urldecode($value); - } - else - { - $return[urldecode($section)][] = null; - } - } - - return $return; - } - - /** - * Detect XML encoding, as per XML 1.0 Appendix F.1 - * - * @todo Add support for EBCDIC - * @param string $data XML data - * @return array Possible encodings - */ - function xml_encoding($data) - { - // UTF-32 Big Endian BOM - if (substr($data, 0, 4) === "\x00\x00\xFE\xFF") - { - $encoding[] = 'UTF-32BE'; - } - // UTF-32 Little Endian BOM - elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00") - { - $encoding[] = 'UTF-32LE'; - } - // UTF-16 Big Endian BOM - elseif (substr($data, 0, 2) === "\xFE\xFF") - { - $encoding[] = 'UTF-16BE'; - } - // UTF-16 Little Endian BOM - elseif (substr($data, 0, 2) === "\xFF\xFE") - { - $encoding[] = 'UTF-16LE'; - } - // UTF-8 BOM - elseif (substr($data, 0, 3) === "\xEF\xBB\xBF") - { - $encoding[] = 'UTF-8'; - } - // UTF-32 Big Endian Without BOM - elseif (substr($data, 0, 20) === "\x00\x00\x00\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C") - { - if ($pos = strpos($data, "\x00\x00\x00\x3F\x00\x00\x00\x3E")) - { - $parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32BE', 'UTF-8')); - if ($parser->parse()) - { - $encoding[] = $parser->encoding; - } - } - $encoding[] = 'UTF-32BE'; - } - // UTF-32 Little Endian Without BOM - elseif (substr($data, 0, 20) === "\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C\x00\x00\x00") - { - if ($pos = strpos($data, "\x3F\x00\x00\x00\x3E\x00\x00\x00")) - { - $parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32LE', 'UTF-8')); - if ($parser->parse()) - { - $encoding[] = $parser->encoding; - } - } - $encoding[] = 'UTF-32LE'; - } - // UTF-16 Big Endian Without BOM - elseif (substr($data, 0, 10) === "\x00\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C") - { - if ($pos = strpos($data, "\x00\x3F\x00\x3E")) - { - $parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16BE', 'UTF-8')); - if ($parser->parse()) - { - $encoding[] = $parser->encoding; - } - } - $encoding[] = 'UTF-16BE'; - } - // UTF-16 Little Endian Without BOM - elseif (substr($data, 0, 10) === "\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C\x00") - { - if ($pos = strpos($data, "\x3F\x00\x3E\x00")) - { - $parser = new SimplePie_XML_Declaration_Parser(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16LE', 'UTF-8')); - if ($parser->parse()) - { - $encoding[] = $parser->encoding; - } - } - $encoding[] = 'UTF-16LE'; - } - // US-ASCII (or superset) - elseif (substr($data, 0, 5) === "\x3C\x3F\x78\x6D\x6C") - { - if ($pos = strpos($data, "\x3F\x3E")) - { - $parser = new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5)); - if ($parser->parse()) - { - $encoding[] = $parser->encoding; - } - } - $encoding[] = 'UTF-8'; - } - // Fallback to UTF-8 - else - { - $encoding[] = 'UTF-8'; - } - return $encoding; - } - - function output_javascript() - { - if (function_exists('ob_gzhandler')) - { - ob_start('ob_gzhandler'); - } - header('Content-type: text/javascript; charset: UTF-8'); - header('Cache-Control: must-revalidate'); - header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days - ?> -function embed_odeo(link) { - document.writeln('<embed src="http://odeo.com/flash/audio_player_fullsize.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="440" height="80" wmode="transparent" allowScriptAccess="any" flashvars="valid_sample_rate=true&external_url='+link+'"></embed>'); -} - -function embed_quicktime(type, bgcolor, width, height, link, placeholder, loop) { - if (placeholder != '') { - document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" href="'+link+'" src="'+placeholder+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="false" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>'); - } - else { - document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" src="'+link+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="true" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>'); - } -} - -function embed_flash(bgcolor, width, height, link, loop, type) { - document.writeln('<embed src="'+link+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="'+type+'" quality="high" width="'+width+'" height="'+height+'" bgcolor="'+bgcolor+'" loop="'+loop+'"></embed>'); -} - -function embed_flv(width, height, link, placeholder, loop, player) { - document.writeln('<embed src="'+player+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="'+width+'" height="'+height+'" wmode="transparent" flashvars="file='+link+'&autostart=false&repeat='+loop+'&showdigits=true&showfsbutton=false"></embed>'); -} - -function embed_wmedia(width, height, link) { - document.writeln('<embed type="application/x-mplayer2" src="'+link+'" autosize="1" width="'+width+'" height="'+height+'" showcontrols="1" showstatusbar="0" showdisplay="0" autostart="0"></embed>'); -} - <?php - } -} - -/** - * Decode HTML Entities - * - * This implements HTML5 as of revision 967 (2007-06-28) - * - * @package SimplePie - */ -class SimplePie_Decode_HTML_Entities -{ - /** - * Data to be parsed - * - * @access private - * @var string - */ - var $data = ''; - - /** - * Currently consumed bytes - * - * @access private - * @var string - */ - var $consumed = ''; - - /** - * Position of the current byte being parsed - * - * @access private - * @var int - */ - var $position = 0; - - /** - * Create an instance of the class with the input data - * - * @access public - * @param string $data Input data - */ - function SimplePie_Decode_HTML_Entities($data) - { - $this->data = $data; - } - - /** - * Parse the input data - * - * @access public - * @return string Output data - */ - function parse() - { - while (($this->position = strpos($this->data, '&', $this->position)) !== false) - { - $this->consume(); - $this->entity(); - $this->consumed = ''; - } - return $this->data; - } - - /** - * Consume the next byte - * - * @access private - * @return mixed The next byte, or false, if there is no more data - */ - function consume() - { - if (isset($this->data[$this->position])) - { - $this->consumed .= $this->data[$this->position]; - return $this->data[$this->position++]; - } - else - { - return false; - } - } - - /** - * Consume a range of characters - * - * @access private - * @param string $chars Characters to consume - * @return mixed A series of characters that match the range, or false - */ - function consume_range($chars) - { - if ($len = strspn($this->data, $chars, $this->position)) - { - $data = substr($this->data, $this->position, $len); - $this->consumed .= $data; - $this->position += $len; - return $data; - } - else - { - return false; - } - } - - /** - * Unconsume one byte - * - * @access private - */ - function unconsume() - { - $this->consumed = substr($this->consumed, 0, -1); - $this->position--; - } - - /** - * Decode an entity - * - * @access private - */ - function entity() - { - switch ($this->consume()) - { - case "\x09": - case "\x0A": - case "\x0B": - case "\x0B": - case "\x0C": - case "\x20": - case "\x3C": - case "\x26": - case false: - break; - - case "\x23": - switch ($this->consume()) - { - case "\x78": - case "\x58": - $range = '0123456789ABCDEFabcdef'; - $hex = true; - break; - - default: - $range = '0123456789'; - $hex = false; - $this->unconsume(); - break; - } - - if ($codepoint = $this->consume_range($range)) - { - static $windows_1252_specials = array(0x0D => "\x0A", 0x80 => "\xE2\x82\xAC", 0x81 => "\xEF\xBF\xBD", 0x82 => "\xE2\x80\x9A", 0x83 => "\xC6\x92", 0x84 => "\xE2\x80\x9E", 0x85 => "\xE2\x80\xA6", 0x86 => "\xE2\x80\xA0", 0x87 => "\xE2\x80\xA1", 0x88 => "\xCB\x86", 0x89 => "\xE2\x80\xB0", 0x8A => "\xC5\xA0", 0x8B => "\xE2\x80\xB9", 0x8C => "\xC5\x92", 0x8D => "\xEF\xBF\xBD", 0x8E => "\xC5\xBD", 0x8F => "\xEF\xBF\xBD", 0x90 => "\xEF\xBF\xBD", 0x91 => "\xE2\x80\x98", 0x92 => "\xE2\x80\x99", 0x93 => "\xE2\x80\x9C", 0x94 => "\xE2\x80\x9D", 0x95 => "\xE2\x80\xA2", 0x96 => "\xE2\x80\x93", 0x97 => "\xE2\x80\x94", 0x98 => "\xCB\x9C", 0x99 => "\xE2\x84\xA2", 0x9A => "\xC5\xA1", 0x9B => "\xE2\x80\xBA", 0x9C => "\xC5\x93", 0x9D => "\xEF\xBF\xBD", 0x9E => "\xC5\xBE", 0x9F => "\xC5\xB8"); - - if ($hex) - { - $codepoint = hexdec($codepoint); - } - else - { - $codepoint = intval($codepoint); - } - - if (isset($windows_1252_specials[$codepoint])) - { - $replacement = $windows_1252_specials[$codepoint]; - } - else - { - $replacement = SimplePie_Misc::codepoint_to_utf8($codepoint); - } - - if (!in_array($this->consume(), array(';', false), true)) - { - $this->unconsume(); - } - - $consumed_length = strlen($this->consumed); - $this->data = substr_replace($this->data, $replacement, $this->position - $consumed_length, $consumed_length); - $this->position += strlen($replacement) - $consumed_length; - } - break; - - default: - static $entities = array('Aacute' => "\xC3\x81", 'aacute' => "\xC3\xA1", 'Aacute;' => "\xC3\x81", 'aacute;' => "\xC3\xA1", 'Acirc' => "\xC3\x82", 'acirc' => "\xC3\xA2", 'Acirc;' => "\xC3\x82", 'acirc;' => "\xC3\xA2", 'acute' => "\xC2\xB4", 'acute;' => "\xC2\xB4", 'AElig' => "\xC3\x86", 'aelig' => "\xC3\xA6", 'AElig;' => "\xC3\x86", 'aelig;' => "\xC3\xA6", 'Agrave' => "\xC3\x80", 'agrave' => "\xC3\xA0", 'Agrave;' => "\xC3\x80", 'agrave;' => "\xC3\xA0", 'alefsym;' => "\xE2\x84\xB5", 'Alpha;' => "\xCE\x91", 'alpha;' => "\xCE\xB1", 'AMP' => "\x26", 'amp' => "\x26", 'AMP;' => "\x26", 'amp;' => "\x26", 'and;' => "\xE2\x88\xA7", 'ang;' => "\xE2\x88\xA0", 'apos;' => "\x27", 'Aring' => "\xC3\x85", 'aring' => "\xC3\xA5", 'Aring;' => "\xC3\x85", 'aring;' => "\xC3\xA5", 'asymp;' => "\xE2\x89\x88", 'Atilde' => "\xC3\x83", 'atilde' => "\xC3\xA3", 'Atilde;' => "\xC3\x83", 'atilde;' => "\xC3\xA3", 'Auml' => "\xC3\x84", 'auml' => "\xC3\xA4", 'Auml;' => "\xC3\x84", 'auml;' => "\xC3\xA4", 'bdquo;' => "\xE2\x80\x9E", 'Beta;' => "\xCE\x92", 'beta;' => "\xCE\xB2", 'brvbar' => "\xC2\xA6", 'brvbar;' => "\xC2\xA6", 'bull;' => "\xE2\x80\xA2", 'cap;' => "\xE2\x88\xA9", 'Ccedil' => "\xC3\x87", 'ccedil' => "\xC3\xA7", 'Ccedil;' => "\xC3\x87", 'ccedil;' => "\xC3\xA7", 'cedil' => "\xC2\xB8", 'cedil;' => "\xC2\xB8", 'cent' => "\xC2\xA2", 'cent;' => "\xC2\xA2", 'Chi;' => "\xCE\xA7", 'chi;' => "\xCF\x87", 'circ;' => "\xCB\x86", 'clubs;' => "\xE2\x99\xA3", 'cong;' => "\xE2\x89\x85", 'COPY' => "\xC2\xA9", 'copy' => "\xC2\xA9", 'COPY;' => "\xC2\xA9", 'copy;' => "\xC2\xA9", 'crarr;' => "\xE2\x86\xB5", 'cup;' => "\xE2\x88\xAA", 'curren' => "\xC2\xA4", 'curren;' => "\xC2\xA4", 'Dagger;' => "\xE2\x80\xA1", 'dagger;' => "\xE2\x80\xA0", 'dArr;' => "\xE2\x87\x93", 'darr;' => "\xE2\x86\x93", 'deg' => "\xC2\xB0", 'deg;' => "\xC2\xB0", 'Delta;' => "\xCE\x94", 'delta;' => "\xCE\xB4", 'diams;' => "\xE2\x99\xA6", 'divide' => "\xC3\xB7", 'divide;' => "\xC3\xB7", 'Eacute' => "\xC3\x89", 'eacute' => "\xC3\xA9", 'Eacute;' => "\xC3\x89", 'eacute;' => "\xC3\xA9", 'Ecirc' => "\xC3\x8A", 'ecirc' => "\xC3\xAA", 'Ecirc;' => "\xC3\x8A", 'ecirc;' => "\xC3\xAA", 'Egrave' => "\xC3\x88", 'egrave' => "\xC3\xA8", 'Egrave;' => "\xC3\x88", 'egrave;' => "\xC3\xA8", 'empty;' => "\xE2\x88\x85", 'emsp;' => "\xE2\x80\x83", 'ensp;' => "\xE2\x80\x82", 'Epsilon;' => "\xCE\x95", 'epsilon;' => "\xCE\xB5", 'equiv;' => "\xE2\x89\xA1", 'Eta;' => "\xCE\x97", 'eta;' => "\xCE\xB7", 'ETH' => "\xC3\x90", 'eth' => "\xC3\xB0", 'ETH;' => "\xC3\x90", 'eth;' => "\xC3\xB0", 'Euml' => "\xC3\x8B", 'euml' => "\xC3\xAB", 'Euml;' => "\xC3\x8B", 'euml;' => "\xC3\xAB", 'euro;' => "\xE2\x82\xAC", 'exist;' => "\xE2\x88\x83", 'fnof;' => "\xC6\x92", 'forall;' => "\xE2\x88\x80", 'frac12' => "\xC2\xBD", 'frac12;' => "\xC2\xBD", 'frac14' => "\xC2\xBC", 'frac14;' => "\xC2\xBC", 'frac34' => "\xC2\xBE", 'frac34;' => "\xC2\xBE", 'frasl;' => "\xE2\x81\x84", 'Gamma;' => "\xCE\x93", 'gamma;' => "\xCE\xB3", 'ge;' => "\xE2\x89\xA5", 'GT' => "\x3E", 'gt' => "\x3E", 'GT;' => "\x3E", 'gt;' => "\x3E", 'hArr;' => "\xE2\x87\x94", 'harr;' => "\xE2\x86\x94", 'hearts;' => "\xE2\x99\xA5", 'hellip;' => "\xE2\x80\xA6", 'Iacute' => "\xC3\x8D", 'iacute' => "\xC3\xAD", 'Iacute;' => "\xC3\x8D", 'iacute;' => "\xC3\xAD", 'Icirc' => "\xC3\x8E", 'icirc' => "\xC3\xAE", 'Icirc;' => "\xC3\x8E", 'icirc;' => "\xC3\xAE", 'iexcl' => "\xC2\xA1", 'iexcl;' => "\xC2\xA1", 'Igrave' => "\xC3\x8C", 'igrave' => "\xC3\xAC", 'Igrave;' => "\xC3\x8C", 'igrave;' => "\xC3\xAC", 'image;' => "\xE2\x84\x91", 'infin;' => "\xE2\x88\x9E", 'int;' => "\xE2\x88\xAB", 'Iota;' => "\xCE\x99", 'iota;' => "\xCE\xB9", 'iquest' => "\xC2\xBF", 'iquest;' => "\xC2\xBF", 'isin;' => "\xE2\x88\x88", 'Iuml' => "\xC3\x8F", 'iuml' => "\xC3\xAF", 'Iuml;' => "\xC3\x8F", 'iuml;' => "\xC3\xAF", 'Kappa;' => "\xCE\x9A", 'kappa;' => "\xCE\xBA", 'Lambda;' => "\xCE\x9B", 'lambda;' => "\xCE\xBB", 'lang;' => "\xE3\x80\x88", 'laquo' => "\xC2\xAB", 'laquo;' => "\xC2\xAB", 'lArr;' => "\xE2\x87\x90", 'larr;' => "\xE2\x86\x90", 'lceil;' => "\xE2\x8C\x88", 'ldquo;' => "\xE2\x80\x9C", 'le;' => "\xE2\x89\xA4", 'lfloor;' => "\xE2\x8C\x8A", 'lowast;' => "\xE2\x88\x97", 'loz;' => "\xE2\x97\x8A", 'lrm;' => "\xE2\x80\x8E", 'lsaquo;' => "\xE2\x80\xB9", 'lsquo;' => "\xE2\x80\x98", 'LT' => "\x3C", 'lt' => "\x3C", 'LT;' => "\x3C", 'lt;' => "\x3C", 'macr' => "\xC2\xAF", 'macr;' => "\xC2\xAF", 'mdash;' => "\xE2\x80\x94", 'micro' => "\xC2\xB5", 'micro;' => "\xC2\xB5", 'middot' => "\xC2\xB7", 'middot;' => "\xC2\xB7", 'minus;' => "\xE2\x88\x92", 'Mu;' => "\xCE\x9C", 'mu;' => "\xCE\xBC", 'nabla;' => "\xE2\x88\x87", 'nbsp' => "\xC2\xA0", 'nbsp;' => "\xC2\xA0", 'ndash;' => "\xE2\x80\x93", 'ne;' => "\xE2\x89\xA0", 'ni;' => "\xE2\x88\x8B", 'not' => "\xC2\xAC", 'not;' => "\xC2\xAC", 'notin;' => "\xE2\x88\x89", 'nsub;' => "\xE2\x8A\x84", 'Ntilde' => "\xC3\x91", 'ntilde' => "\xC3\xB1", 'Ntilde;' => "\xC3\x91", 'ntilde;' => "\xC3\xB1", 'Nu;' => "\xCE\x9D", 'nu;' => "\xCE\xBD", 'Oacute' => "\xC3\x93", 'oacute' => "\xC3\xB3", 'Oacute;' => "\xC3\x93", 'oacute;' => "\xC3\xB3", 'Ocirc' => "\xC3\x94", 'ocirc' => "\xC3\xB4", 'Ocirc;' => "\xC3\x94", 'ocirc;' => "\xC3\xB4", 'OElig;' => "\xC5\x92", 'oelig;' => "\xC5\x93", 'Ograve' => "\xC3\x92", 'ograve' => "\xC3\xB2", 'Ograve;' => "\xC3\x92", 'ograve;' => "\xC3\xB2", 'oline;' => "\xE2\x80\xBE", 'Omega;' => "\xCE\xA9", 'omega;' => "\xCF\x89", 'Omicron;' => "\xCE\x9F", 'omicron;' => "\xCE\xBF", 'oplus;' => "\xE2\x8A\x95", 'or;' => "\xE2\x88\xA8", 'ordf' => "\xC2\xAA", 'ordf;' => "\xC2\xAA", 'ordm' => "\xC2\xBA", 'ordm;' => "\xC2\xBA", 'Oslash' => "\xC3\x98", 'oslash' => "\xC3\xB8", 'Oslash;' => "\xC3\x98", 'oslash;' => "\xC3\xB8", 'Otilde' => "\xC3\x95", 'otilde' => "\xC3\xB5", 'Otilde;' => "\xC3\x95", 'otilde;' => "\xC3\xB5", 'otimes;' => "\xE2\x8A\x97", 'Ouml' => "\xC3\x96", 'ouml' => "\xC3\xB6", 'Ouml;' => "\xC3\x96", 'ouml;' => "\xC3\xB6", 'para' => "\xC2\xB6", 'para;' => "\xC2\xB6", 'part;' => "\xE2\x88\x82", 'permil;' => "\xE2\x80\xB0", 'perp;' => "\xE2\x8A\xA5", 'Phi;' => "\xCE\xA6", 'phi;' => "\xCF\x86", 'Pi;' => "\xCE\xA0", 'pi;' => "\xCF\x80", 'piv;' => "\xCF\x96", 'plusmn' => "\xC2\xB1", 'plusmn;' => "\xC2\xB1", 'pound' => "\xC2\xA3", 'pound;' => "\xC2\xA3", 'Prime;' => "\xE2\x80\xB3", 'prime;' => "\xE2\x80\xB2", 'prod;' => "\xE2\x88\x8F", 'prop;' => "\xE2\x88\x9D", 'Psi;' => "\xCE\xA8", 'psi;' => "\xCF\x88", 'QUOT' => "\x22", 'quot' => "\x22", 'QUOT;' => "\x22", 'quot;' => "\x22", 'radic;' => "\xE2\x88\x9A", 'rang;' => "\xE3\x80\x89", 'raquo' => "\xC2\xBB", 'raquo;' => "\xC2\xBB", 'rArr;' => "\xE2\x87\x92", 'rarr;' => "\xE2\x86\x92", 'rceil;' => "\xE2\x8C\x89", 'rdquo;' => "\xE2\x80\x9D", 'real;' => "\xE2\x84\x9C", 'REG' => "\xC2\xAE", 'reg' => "\xC2\xAE", 'REG;' => "\xC2\xAE", 'reg;' => "\xC2\xAE", 'rfloor;' => "\xE2\x8C\x8B", 'Rho;' => "\xCE\xA1", 'rho;' => "\xCF\x81", 'rlm;' => "\xE2\x80\x8F", 'rsaquo;' => "\xE2\x80\xBA", 'rsquo;' => "\xE2\x80\x99", 'sbquo;' => "\xE2\x80\x9A", 'Scaron;' => "\xC5\xA0", 'scaron;' => "\xC5\xA1", 'sdot;' => "\xE2\x8B\x85", 'sect' => "\xC2\xA7", 'sect;' => "\xC2\xA7", 'shy' => "\xC2\xAD", 'shy;' => "\xC2\xAD", 'Sigma;' => "\xCE\xA3", 'sigma;' => "\xCF\x83", 'sigmaf;' => "\xCF\x82", 'sim;' => "\xE2\x88\xBC", 'spades;' => "\xE2\x99\xA0", 'sub;' => "\xE2\x8A\x82", 'sube;' => "\xE2\x8A\x86", 'sum;' => "\xE2\x88\x91", 'sup;' => "\xE2\x8A\x83", 'sup1' => "\xC2\xB9", 'sup1;' => "\xC2\xB9", 'sup2' => "\xC2\xB2", 'sup2;' => "\xC2\xB2", 'sup3' => "\xC2\xB3", 'sup3;' => "\xC2\xB3", 'supe;' => "\xE2\x8A\x87", 'szlig' => "\xC3\x9F", 'szlig;' => "\xC3\x9F", 'Tau;' => "\xCE\xA4", 'tau;' => "\xCF\x84", 'there4;' => "\xE2\x88\xB4", 'Theta;' => "\xCE\x98", 'theta;' => "\xCE\xB8", 'thetasym;' => "\xCF\x91", 'thinsp;' => "\xE2\x80\x89", 'THORN' => "\xC3\x9E", 'thorn' => "\xC3\xBE", 'THORN;' => "\xC3\x9E", 'thorn;' => "\xC3\xBE", 'tilde;' => "\xCB\x9C", 'times' => "\xC3\x97", 'times;' => "\xC3\x97", 'TRADE;' => "\xE2\x84\xA2", 'trade;' => "\xE2\x84\xA2", 'Uacute' => "\xC3\x9A", 'uacute' => "\xC3\xBA", 'Uacute;' => "\xC3\x9A", 'uacute;' => "\xC3\xBA", 'uArr;' => "\xE2\x87\x91", 'uarr;' => "\xE2\x86\x91", 'Ucirc' => "\xC3\x9B", 'ucirc' => "\xC3\xBB", 'Ucirc;' => "\xC3\x9B", 'ucirc;' => "\xC3\xBB", 'Ugrave' => "\xC3\x99", 'ugrave' => "\xC3\xB9", 'Ugrave;' => "\xC3\x99", 'ugrave;' => "\xC3\xB9", 'uml' => "\xC2\xA8", 'uml;' => "\xC2\xA8", 'upsih;' => "\xCF\x92", 'Upsilon;' => "\xCE\xA5", 'upsilon;' => "\xCF\x85", 'Uuml' => "\xC3\x9C", 'uuml' => "\xC3\xBC", 'Uuml;' => "\xC3\x9C", 'uuml;' => "\xC3\xBC", 'weierp;' => "\xE2\x84\x98", 'Xi;' => "\xCE\x9E", 'xi;' => "\xCE\xBE", 'Yacute' => "\xC3\x9D", 'yacute' => "\xC3\xBD", 'Yacute;' => "\xC3\x9D", 'yacute;' => "\xC3\xBD", 'yen' => "\xC2\xA5", 'yen;' => "\xC2\xA5", 'yuml' => "\xC3\xBF", 'Yuml;' => "\xC5\xB8", 'yuml;' => "\xC3\xBF", 'Zeta;' => "\xCE\x96", 'zeta;' => "\xCE\xB6", 'zwj;' => "\xE2\x80\x8D", 'zwnj;' => "\xE2\x80\x8C"); - - for ($i = 0, $match = null; $i < 9 && $this->consume() !== false; $i++) - { - $consumed = substr($this->consumed, 1); - if (isset($entities[$consumed])) - { - $match = $consumed; - } - } - - if ($match !== null) - { - $this->data = substr_replace($this->data, $entities[$match], $this->position - strlen($consumed) - 1, strlen($match) + 1); - $this->position += strlen($entities[$match]) - strlen($consumed) - 1; - } - break; - } - } -} - -/** - * IRI parser/serialiser - * - * @package SimplePie - */ -class SimplePie_IRI -{ - /** - * Scheme - * - * @access private - * @var string - */ - var $scheme; - - /** - * User Information - * - * @access private - * @var string - */ - var $userinfo; - - /** - * Host - * - * @access private - * @var string - */ - var $host; - - /** - * Port - * - * @access private - * @var string - */ - var $port; - - /** - * Path - * - * @access private - * @var string - */ - var $path; - - /** - * Query - * - * @access private - * @var string - */ - var $query; - - /** - * Fragment - * - * @access private - * @var string - */ - var $fragment; - - /** - * Whether the object represents a valid IRI - * - * @access private - * @var array - */ - var $valid = array(); - - /** - * Return the entire IRI when you try and read the object as a string - * - * @access public - * @return string - */ - function __toString() - { - return $this->get_iri(); - } - - /** - * Create a new IRI object, from a specified string - * - * @access public - * @param string $iri - * @return SimplePie_IRI - */ - function SimplePie_IRI($iri) - { - $iri = (string) $iri; - if ($iri !== '') - { - $parsed = $this->parse_iri($iri); - $this->set_scheme($parsed['scheme']); - $this->set_authority($parsed['authority']); - $this->set_path($parsed['path']); - $this->set_query($parsed['query']); - $this->set_fragment($parsed['fragment']); - } - } - - /** - * Create a new IRI object by resolving a relative IRI - * - * @static - * @access public - * @param SimplePie_IRI $base Base IRI - * @param string $relative Relative IRI - * @return SimplePie_IRI - */ - function absolutize($base, $relative) - { - $relative = (string) $relative; - if ($relative !== '') - { - $relative = new SimplePie_IRI($relative); - if ($relative->get_scheme() !== null) - { - $target = $relative; - } - elseif ($base->get_iri() !== null) - { - if ($relative->get_authority() !== null) - { - $target = $relative; - $target->set_scheme($base->get_scheme()); - } - else - { - $target = new SimplePie_IRI(''); - $target->set_scheme($base->get_scheme()); - $target->set_userinfo($base->get_userinfo()); - $target->set_host($base->get_host()); - $target->set_port($base->get_port()); - if ($relative->get_path() !== null) - { - if (strpos($relative->get_path(), '/') === 0) - { - $target->set_path($relative->get_path()); - } - elseif (($base->get_userinfo() !== null || $base->get_host() !== null || $base->get_port() !== null) && $base->get_path() === null) - { - $target->set_path('/' . $relative->get_path()); - } - elseif (($last_segment = strrpos($base->get_path(), '/')) !== false) - { - $target->set_path(substr($base->get_path(), 0, $last_segment + 1) . $relative->get_path()); - } - else - { - $target->set_path($relative->get_path()); - } - $target->set_query($relative->get_query()); - } - else - { - $target->set_path($base->get_path()); - if ($relative->get_query() !== null) - { - $target->set_query($relative->get_query()); - } - elseif ($base->get_query() !== null) - { - $target->set_query($base->get_query()); - } - } - } - $target->set_fragment($relative->get_fragment()); - } - else - { - // No base URL, just return the relative URL - $target = $relative; - } - } - else - { - $target = $base; - } - return $target; - } - - /** - * Parse an IRI into scheme/authority/path/query/fragment segments - * - * @access private - * @param string $iri - * @return array - */ - function parse_iri($iri) - { - preg_match('/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/', $iri, $match); - for ($i = count($match); $i <= 9; $i++) - { - $match[$i] = ''; - } - return array('scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5], 'query' => $match[7], 'fragment' => $match[9]); - } - - /** - * Remove dot segments from a path - * - * @access private - * @param string $input - * @return string - */ - function remove_dot_segments($input) - { - $output = ''; - while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input === '.' || $input === '..') - { - // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise, - if (strpos($input, '../') === 0) - { - $input = substr($input, 3); - } - elseif (strpos($input, './') === 0) - { - $input = substr($input, 2); - } - // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise, - elseif (strpos($input, '/./') === 0) - { - $input = substr_replace($input, '/', 0, 3); - } - elseif ($input === '/.') - { - $input = '/'; - } - // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise, - elseif (strpos($input, '/../') === 0) - { - $input = substr_replace($input, '/', 0, 4); - $output = substr_replace($output, '', strrpos($output, '/')); - } - elseif ($input === '/..') - { - $input = '/'; - $output = substr_replace($output, '', strrpos($output, '/')); - } - // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise, - elseif ($input === '.' || $input === '..') - { - $input = ''; - } - // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer - elseif (($pos = strpos($input, '/', 1)) !== false) - { - $output .= substr($input, 0, $pos); - $input = substr_replace($input, '', 0, $pos); - } - else - { - $output .= $input; - $input = ''; - } - } - return $output . $input; - } - - /** - * Replace invalid character with percent encoding - * - * @access private - * @param string $string Input string - * @param string $valid_chars Valid characters - * @param int $case Normalise case - * @return string - */ - function replace_invalid_with_pct_encoding($string, $valid_chars, $case = SIMPLEPIE_SAME_CASE) - { - // Normalise case - if ($case & SIMPLEPIE_LOWERCASE) - { - $string = strtolower($string); - } - elseif ($case & SIMPLEPIE_UPPERCASE) - { - $string = strtoupper($string); - } - - // Store position and string length (to avoid constantly recalculating this) - $position = 0; - $strlen = strlen($string); - - // Loop as long as we have invalid characters, advancing the position to the next invalid character - while (($position += strspn($string, $valid_chars, $position)) < $strlen) - { - // If we have a % character - if ($string[$position] === '%') - { - // If we have a pct-encoded section - if ($position + 2 < $strlen && strspn($string, '0123456789ABCDEFabcdef', $position + 1, 2) === 2) - { - // Get the the represented character - $chr = chr(hexdec(substr($string, $position + 1, 2))); - - // If the character is valid, replace the pct-encoded with the actual character while normalising case - if (strpos($valid_chars, $chr) !== false) - { - if ($case & SIMPLEPIE_LOWERCASE) - { - $chr = strtolower($chr); - } - elseif ($case & SIMPLEPIE_UPPERCASE) - { - $chr = strtoupper($chr); - } - $string = substr_replace($string, $chr, $position, 3); - $strlen -= 2; - $position++; - } - - // Otherwise just normalise the pct-encoded to uppercase - else - { - $string = substr_replace($string, strtoupper(substr($string, $position + 1, 2)), $position + 1, 2); - $position += 3; - } - } - // If we don't have a pct-encoded section, just replace the % with its own esccaped form - else - { - $string = substr_replace($string, '%25', $position, 1); - $strlen += 2; - $position += 3; - } - } - // If we have an invalid character, change into its pct-encoded form - else - { - $replacement = sprintf("%%%02X", ord($string[$position])); - $string = str_replace($string[$position], $replacement, $string); - $strlen = strlen($string); - } - } - return $string; - } - - /** - * Check if the object represents a valid IRI - * - * @access public - * @return bool - */ - function is_valid() - { - return array_sum($this->valid) === count($this->valid); - } - - /** - * Set the scheme. Returns true on success, false on failure (if there are - * any invalid characters). - * - * @access public - * @param string $scheme - * @return bool - */ - function set_scheme($scheme) - { - if ($scheme === null || $scheme === '') - { - $this->scheme = null; - } - else - { - $len = strlen($scheme); - switch (true) - { - case $len > 1: - if (!strspn($scheme, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-.', 1)) - { - $this->scheme = null; - $this->valid[__FUNCTION__] = false; - return false; - } - - case $len > 0: - if (!strspn($scheme, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', 0, 1)) - { - $this->scheme = null; - $this->valid[__FUNCTION__] = false; - return false; - } - } - $this->scheme = strtolower($scheme); - } - $this->valid[__FUNCTION__] = true; - return true; - } - - /** - * Set the authority. Returns true on success, false on failure (if there are - * any invalid characters). - * - * @access public - * @param string $authority - * @return bool - */ - function set_authority($authority) - { - if (($userinfo_end = strrpos($authority, '@')) !== false) - { - $userinfo = substr($authority, 0, $userinfo_end); - $authority = substr($authority, $userinfo_end + 1); - } - else - { - $userinfo = null; - } - - if (($port_start = strpos($authority, ':')) !== false) - { - $port = substr($authority, $port_start + 1); - $authority = substr($authority, 0, $port_start); - } - else - { - $port = null; - } - - return $this->set_userinfo($userinfo) && $this->set_host($authority) && $this->set_port($port); - } - - /** - * Set the userinfo. - * - * @access public - * @param string $userinfo - * @return bool - */ - function set_userinfo($userinfo) - { - if ($userinfo === null || $userinfo === '') - { - $this->userinfo = null; - } - else - { - $this->userinfo = $this->replace_invalid_with_pct_encoding($userinfo, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$&\'()*+,;=:'); - } - $this->valid[__FUNCTION__] = true; - return true; - } - - /** - * Set the host. Returns true on success, false on failure (if there are - * any invalid characters). - * - * @access public - * @param string $host - * @return bool - */ - function set_host($host) - { - if ($host === null || $host === '') - { - $this->host = null; - $this->valid[__FUNCTION__] = true; - return true; - } - elseif ($host[0] === '[' && substr($host, -1) === ']') - { - if (Net_IPv6::checkIPv6(substr($host, 1, -1))) - { - $this->host = $host; - $this->valid[__FUNCTION__] = true; - return true; - } - else - { - $this->host = null; - $this->valid[__FUNCTION__] = false; - return false; - } - } - else - { - $this->host = $this->replace_invalid_with_pct_encoding($host, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$&\'()*+,;=', SIMPLEPIE_LOWERCASE); - $this->valid[__FUNCTION__] = true; - return true; - } - } - - /** - * Set the port. Returns true on success, false on failure (if there are - * any invalid characters). - * - * @access public - * @param string $port - * @return bool - */ - function set_port($port) - { - if ($port === null || $port === '') - { - $this->port = null; - $this->valid[__FUNCTION__] = true; - return true; - } - elseif (strspn($port, '0123456789') === strlen($port)) - { - $this->port = (int) $port; - $this->valid[__FUNCTION__] = true; - return true; - } - else - { - $this->port = null; - $this->valid[__FUNCTION__] = false; - return false; - } - } - - /** - * Set the path. - * - * @access public - * @param string $path - * @return bool - */ - function set_path($path) - { - if ($path === null || $path === '') - { - $this->path = null; - $this->valid[__FUNCTION__] = true; - return true; - } - elseif (substr($path, 0, 2) === '//' && $this->userinfo === null && $this->host === null && $this->port === null) - { - $this->path = null; - $this->valid[__FUNCTION__] = false; - return false; - } - else - { - $this->path = $this->replace_invalid_with_pct_encoding($path, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$&\'()*+,;=@/'); - if ($this->scheme !== null) - { - $this->path = $this->remove_dot_segments($this->path); - } - $this->valid[__FUNCTION__] = true; - return true; - } - } - - /** - * Set the query. - * - * @access public - * @param string $query - * @return bool - */ - function set_query($query) - { - if ($query === null || $query === '') - { - $this->query = null; - } - else - { - $this->query = $this->replace_invalid_with_pct_encoding($query, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$\'()*+,;:@/?'); - } - $this->valid[__FUNCTION__] = true; - return true; - } - - /** - * Set the fragment. - * - * @access public - * @param string $fragment - * @return bool - */ - function set_fragment($fragment) - { - if ($fragment === null || $fragment === '') - { - $this->fragment = null; - } - else - { - $this->fragment = $this->replace_invalid_with_pct_encoding($fragment, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$&\'()*+,;=:@/?'); - } - $this->valid[__FUNCTION__] = true; - return true; - } - - /** - * Get the complete IRI - * - * @access public - * @return string - */ - function get_iri() - { - $iri = ''; - if ($this->scheme !== null) - { - $iri .= $this->scheme . ':'; - } - if (($authority = $this->get_authority()) !== null) - { - $iri .= '//' . $authority; - } - if ($this->path !== null) - { - $iri .= $this->path; - } - if ($this->query !== null) - { - $iri .= '?' . $this->query; - } - if ($this->fragment !== null) - { - $iri .= '#' . $this->fragment; - } - - if ($iri !== '') - { - return $iri; - } - else - { - return null; - } - } - - /** - * Get the scheme - * - * @access public - * @return string - */ - function get_scheme() - { - return $this->scheme; - } - - /** - * Get the complete authority - * - * @access public - * @return string - */ - function get_authority() - { - $authority = ''; - if ($this->userinfo !== null) - { - $authority .= $this->userinfo . '@'; - } - if ($this->host !== null) - { - $authority .= $this->host; - } - if ($this->port !== null) - { - $authority .= ':' . $this->port; - } - - if ($authority !== '') - { - return $authority; - } - else - { - return null; - } - } - - /** - * Get the user information - * - * @access public - * @return string - */ - function get_userinfo() - { - return $this->userinfo; - } - - /** - * Get the host - * - * @access public - * @return string - */ - function get_host() - { - return $this->host; - } - - /** - * Get the port - * - * @access public - * @return string - */ - function get_port() - { - return $this->port; - } - - /** - * Get the path - * - * @access public - * @return string - */ - function get_path() - { - return $this->path; - } - - /** - * Get the query - * - * @access public - * @return string - */ - function get_query() - { - return $this->query; - } - - /** - * Get the fragment - * - * @access public - * @return string - */ - function get_fragment() - { - return $this->fragment; - } -} - -/** - * Class to validate and to work with IPv6 addresses. - * - * @package SimplePie - * @copyright 2003-2005 The PHP Group - * @license http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/package/Net_IPv6 - * @author Alexander Merz <alexander.merz@web.de> - * @author elfrink at introweb dot nl - * @author Josh Peck <jmp at joshpeck dot org> - * @author Geoffrey Sneddon <geoffers@gmail.com> - */ -class SimplePie_Net_IPv6 -{ - /** - * Removes a possible existing netmask specification of an IP address. - * - * @param string $ip the (compressed) IP as Hex representation - * @return string the IP the without netmask - * @since 1.1.0 - * @access public - * @static - */ - function removeNetmaskSpec($ip) - { - if (strpos($ip, '/') !== false) - { - list($addr, $nm) = explode('/', $ip); - } - else - { - $addr = $ip; - } - return $addr; - } - - /** - * Uncompresses an IPv6 address - * - * RFC 2373 allows you to compress zeros in an address to '::'. This - * function expects an valid IPv6 address and expands the '::' to - * the required zeros. - * - * Example: FF01::101 -> FF01:0:0:0:0:0:0:101 - * ::1 -> 0:0:0:0:0:0:0:1 - * - * @access public - * @static - * @param string $ip a valid IPv6-address (hex format) - * @return string the uncompressed IPv6-address (hex format) - */ - function Uncompress($ip) - { - $uip = SimplePie_Net_IPv6::removeNetmaskSpec($ip); - $c1 = -1; - $c2 = -1; - if (strpos($ip, '::') !== false) - { - list($ip1, $ip2) = explode('::', $ip); - if ($ip1 === '') - { - $c1 = -1; - } - else - { - $pos = 0; - if (($pos = substr_count($ip1, ':')) > 0) - { - $c1 = $pos; - } - else - { - $c1 = 0; - } - } - if ($ip2 === '') - { - $c2 = -1; - } - else - { - $pos = 0; - if (($pos = substr_count($ip2, ':')) > 0) - { - $c2 = $pos; - } - else - { - $c2 = 0; - } - } - if (strstr($ip2, '.')) - { - $c2++; - } - // :: - if ($c1 === -1 && $c2 === -1) - { - $uip = '0:0:0:0:0:0:0:0'; - } - // ::xxx - else if ($c1 === -1) - { - $fill = str_repeat('0:', 7 - $c2); - $uip = str_replace('::', $fill, $uip); - } - // xxx:: - else if ($c2 === -1) - { - $fill = str_repeat(':0', 7 - $c1); - $uip = str_replace('::', $fill, $uip); - } - // xxx::xxx - else - { - $fill = str_repeat(':0:', 6 - $c2 - $c1); - $uip = str_replace('::', $fill, $uip); - $uip = str_replace('::', ':', $uip); - } - } - return $uip; - } - - /** - * Splits an IPv6 address into the IPv6 and a possible IPv4 part - * - * RFC 2373 allows you to note the last two parts of an IPv6 address as - * an IPv4 compatible address - * - * Example: 0:0:0:0:0:0:13.1.68.3 - * 0:0:0:0:0:FFFF:129.144.52.38 - * - * @access public - * @static - * @param string $ip a valid IPv6-address (hex format) - * @return array [0] contains the IPv6 part, [1] the IPv4 part (hex format) - */ - function SplitV64($ip) - { - $ip = SimplePie_Net_IPv6::Uncompress($ip); - if (strstr($ip, '.')) - { - $pos = strrpos($ip, ':'); - $ip[$pos] = '_'; - $ipPart = explode('_', $ip); - return $ipPart; - } - else - { - return array($ip, ''); - } - } - - /** - * Checks an IPv6 address - * - * Checks if the given IP is IPv6-compatible - * - * @access public - * @static - * @param string $ip a valid IPv6-address - * @return bool true if $ip is an IPv6 address - */ - function checkIPv6($ip) - { - $ipPart = SimplePie_Net_IPv6::SplitV64($ip); - $count = 0; - if (!empty($ipPart[0])) - { - $ipv6 = explode(':', $ipPart[0]); - for ($i = 0; $i < count($ipv6); $i++) - { - $dec = hexdec($ipv6[$i]); - $hex = strtoupper(preg_replace('/^[0]{1,3}(.*[0-9a-fA-F])$/', '\\1', $ipv6[$i])); - if ($ipv6[$i] >= 0 && $dec <= 65535 && $hex === strtoupper(dechex($dec))) - { - $count++; - } - } - if ($count === 8) - { - return true; - } - elseif ($count === 6 && !empty($ipPart[1])) - { - $ipv4 = explode('.', $ipPart[1]); - $count = 0; - foreach ($ipv4 as $ipv4_part) - { - if ($ipv4_part >= 0 && $ipv4_part <= 255 && preg_match('/^\d{1,3}$/', $ipv4_part)) - { - $count++; - } - } - if ($count === 4) - { - return true; - } - } - else - { - return false; - } - - } - else - { - return false; - } - } -} - -/** - * Date Parser - * - * @package SimplePie - */ -class SimplePie_Parse_Date -{ - /** - * Input data - * - * @access protected - * @var string - */ - var $date; - - /** - * List of days, calendar day name => ordinal day number in the week - * - * @access protected - * @var array - */ - var $day = array( - // English - 'mon' => 1, - 'monday' => 1, - 'tue' => 2, - 'tuesday' => 2, - 'wed' => 3, - 'wednesday' => 3, - 'thu' => 4, - 'thursday' => 4, - 'fri' => 5, - 'friday' => 5, - 'sat' => 6, - 'saturday' => 6, - 'sun' => 7, - 'sunday' => 7, - // Dutch - 'maandag' => 1, - 'dinsdag' => 2, - 'woensdag' => 3, - 'donderdag' => 4, - 'vrijdag' => 5, - 'zaterdag' => 6, - 'zondag' => 7, - // French - 'lundi' => 1, - 'mardi' => 2, - 'mercredi' => 3, - 'jeudi' => 4, - 'vendredi' => 5, - 'samedi' => 6, - 'dimanche' => 7, - // German - 'montag' => 1, - 'dienstag' => 2, - 'mittwoch' => 3, - 'donnerstag' => 4, - 'freitag' => 5, - 'samstag' => 6, - 'sonnabend' => 6, - 'sonntag' => 7, - // Italian - 'lunedì' => 1, - 'martedì' => 2, - 'mercoledì' => 3, - 'giovedì' => 4, - 'venerdì' => 5, - 'sabato' => 6, - 'domenica' => 7, - // Spanish - 'lunes' => 1, - 'martes' => 2, - 'miércoles' => 3, - 'jueves' => 4, - 'viernes' => 5, - 'sábado' => 6, - 'domingo' => 7, - // Finnish - 'maanantai' => 1, - 'tiistai' => 2, - 'keskiviikko' => 3, - 'torstai' => 4, - 'perjantai' => 5, - 'lauantai' => 6, - 'sunnuntai' => 7, - // Hungarian - 'hétfő' => 1, - 'kedd' => 2, - 'szerda' => 3, - 'csütörtok' => 4, - 'péntek' => 5, - 'szombat' => 6, - 'vasárnap' => 7, - // Greek - 'Δευ' => 1, - 'Τρι' => 2, - 'Τετ' => 3, - 'Πεμ' => 4, - 'Παρ' => 5, - 'Σαβ' => 6, - 'Κυρ' => 7, - ); - - /** - * List of months, calendar month name => calendar month number - * - * @access protected - * @var array - */ - var $month = array( - // English - 'jan' => 1, - 'january' => 1, - 'feb' => 2, - 'february' => 2, - 'mar' => 3, - 'march' => 3, - 'apr' => 4, - 'april' => 4, - 'may' => 5, - // No long form of May - 'jun' => 6, - 'june' => 6, - 'jul' => 7, - 'july' => 7, - 'aug' => 8, - 'august' => 8, - 'sep' => 9, - 'september' => 8, - 'oct' => 10, - 'october' => 10, - 'nov' => 11, - 'november' => 11, - 'dec' => 12, - 'december' => 12, - // Dutch - 'januari' => 1, - 'februari' => 2, - 'maart' => 3, - 'april' => 4, - 'mei' => 5, - 'juni' => 6, - 'juli' => 7, - 'augustus' => 8, - 'september' => 9, - 'oktober' => 10, - 'november' => 11, - 'december' => 12, - // French - 'janvier' => 1, - 'février' => 2, - 'mars' => 3, - 'avril' => 4, - 'mai' => 5, - 'juin' => 6, - 'juillet' => 7, - 'août' => 8, - 'septembre' => 9, - 'octobre' => 10, - 'novembre' => 11, - 'décembre' => 12, - // German - 'januar' => 1, - 'februar' => 2, - 'märz' => 3, - 'april' => 4, - 'mai' => 5, - 'juni' => 6, - 'juli' => 7, - 'august' => 8, - 'september' => 9, - 'oktober' => 10, - 'november' => 11, - 'dezember' => 12, - // Italian - 'gennaio' => 1, - 'febbraio' => 2, - 'marzo' => 3, - 'aprile' => 4, - 'maggio' => 5, - 'giugno' => 6, - 'luglio' => 7, - 'agosto' => 8, - 'settembre' => 9, - 'ottobre' => 10, - 'novembre' => 11, - 'dicembre' => 12, - // Spanish - 'enero' => 1, - 'febrero' => 2, - 'marzo' => 3, - 'abril' => 4, - 'mayo' => 5, - 'junio' => 6, - 'julio' => 7, - 'agosto' => 8, - 'septiembre' => 9, - 'setiembre' => 9, - 'octubre' => 10, - 'noviembre' => 11, - 'diciembre' => 12, - // Finnish - 'tammikuu' => 1, - 'helmikuu' => 2, - 'maaliskuu' => 3, - 'huhtikuu' => 4, - 'toukokuu' => 5, - 'kesäkuu' => 6, - 'heinäkuu' => 7, - 'elokuu' => 8, - 'suuskuu' => 9, - 'lokakuu' => 10, - 'marras' => 11, - 'joulukuu' => 12, - // Hungarian - 'január' => 1, - 'február' => 2, - 'március' => 3, - 'április' => 4, - 'május' => 5, - 'június' => 6, - 'július' => 7, - 'augusztus' => 8, - 'szeptember' => 9, - 'október' => 10, - 'november' => 11, - 'december' => 12, - // Greek - 'Ιαν' => 1, - 'Φεβ' => 2, - 'Μάώ' => 3, - 'Μαώ' => 3, - 'Απρ' => 4, - 'Μάι' => 5, - 'Μαϊ' => 5, - 'Μαι' => 5, - 'Ιούν' => 6, - 'Ιον' => 6, - 'Ιούλ' => 7, - 'Ιολ' => 7, - 'Αύγ' => 8, - 'Αυγ' => 8, - 'Σεπ' => 9, - 'Οκτ' => 10, - 'Νοέ' => 11, - 'Δεκ' => 12, - ); - - /** - * List of timezones, abbreviation => offset from UTC - * - * @access protected - * @var array - */ - var $timezone = array( - 'ACDT' => 37800, - 'ACIT' => 28800, - 'ACST' => 34200, - 'ACT' => -18000, - 'ACWDT' => 35100, - 'ACWST' => 31500, - 'AEDT' => 39600, - 'AEST' => 36000, - 'AFT' => 16200, - 'AKDT' => -28800, - 'AKST' => -32400, - 'AMDT' => 18000, - 'AMT' => -14400, - 'ANAST' => 46800, - 'ANAT' => 43200, - 'ART' => -10800, - 'AZOST' => -3600, - 'AZST' => 18000, - 'AZT' => 14400, - 'BIOT' => 21600, - 'BIT' => -43200, - 'BOT' => -14400, - 'BRST' => -7200, - 'BRT' => -10800, - 'BST' => 3600, - 'BTT' => 21600, - 'CAST' => 18000, - 'CAT' => 7200, - 'CCT' => 23400, - 'CDT' => -18000, - 'CEDT' => 7200, - 'CET' => 3600, - 'CGST' => -7200, - 'CGT' => -10800, - 'CHADT' => 49500, - 'CHAST' => 45900, - 'CIST' => -28800, - 'CKT' => -36000, - 'CLDT' => -10800, - 'CLST' => -14400, - 'COT' => -18000, - 'CST' => -21600, - 'CVT' => -3600, - 'CXT' => 25200, - 'DAVT' => 25200, - 'DTAT' => 36000, - 'EADT' => -18000, - 'EAST' => -21600, - 'EAT' => 10800, - 'ECT' => -18000, - 'EDT' => -14400, - 'EEST' => 10800, - 'EET' => 7200, - 'EGT' => -3600, - 'EKST' => 21600, - 'EST' => -18000, - 'FJT' => 43200, - 'FKDT' => -10800, - 'FKST' => -14400, - 'FNT' => -7200, - 'GALT' => -21600, - 'GEDT' => 14400, - 'GEST' => 10800, - 'GFT' => -10800, - 'GILT' => 43200, - 'GIT' => -32400, - 'GST' => 14400, - 'GST' => -7200, - 'GYT' => -14400, - 'HAA' => -10800, - 'HAC' => -18000, - 'HADT' => -32400, - 'HAE' => -14400, - 'HAP' => -25200, - 'HAR' => -21600, - 'HAST' => -36000, - 'HAT' => -9000, - 'HAY' => -28800, - 'HKST' => 28800, - 'HMT' => 18000, - 'HNA' => -14400, - 'HNC' => -21600, - 'HNE' => -18000, - 'HNP' => -28800, - 'HNR' => -25200, - 'HNT' => -12600, - 'HNY' => -32400, - 'IRDT' => 16200, - 'IRKST' => 32400, - 'IRKT' => 28800, - 'IRST' => 12600, - 'JFDT' => -10800, - 'JFST' => -14400, - 'JST' => 32400, - 'KGST' => 21600, - 'KGT' => 18000, - 'KOST' => 39600, - 'KOVST' => 28800, - 'KOVT' => 25200, - 'KRAST' => 28800, - 'KRAT' => 25200, - 'KST' => 32400, - 'LHDT' => 39600, - 'LHST' => 37800, - 'LINT' => 50400, - 'LKT' => 21600, - 'MAGST' => 43200, - 'MAGT' => 39600, - 'MAWT' => 21600, - 'MDT' => -21600, - 'MESZ' => 7200, - 'MEZ' => 3600, - 'MHT' => 43200, - 'MIT' => -34200, - 'MNST' => 32400, - 'MSDT' => 14400, - 'MSST' => 10800, - 'MST' => -25200, - 'MUT' => 14400, - 'MVT' => 18000, - 'MYT' => 28800, - 'NCT' => 39600, - 'NDT' => -9000, - 'NFT' => 41400, - 'NMIT' => 36000, - 'NOVST' => 25200, - 'NOVT' => 21600, - 'NPT' => 20700, - 'NRT' => 43200, - 'NST' => -12600, - 'NUT' => -39600, - 'NZDT' => 46800, - 'NZST' => 43200, - 'OMSST' => 25200, - 'OMST' => 21600, - 'PDT' => -25200, - 'PET' => -18000, - 'PETST' => 46800, - 'PETT' => 43200, - 'PGT' => 36000, - 'PHOT' => 46800, - 'PHT' => 28800, - 'PKT' => 18000, - 'PMDT' => -7200, - 'PMST' => -10800, - 'PONT' => 39600, - 'PST' => -28800, - 'PWT' => 32400, - 'PYST' => -10800, - 'PYT' => -14400, - 'RET' => 14400, - 'ROTT' => -10800, - 'SAMST' => 18000, - 'SAMT' => 14400, - 'SAST' => 7200, - 'SBT' => 39600, - 'SCDT' => 46800, - 'SCST' => 43200, - 'SCT' => 14400, - 'SEST' => 3600, - 'SGT' => 28800, - 'SIT' => 28800, - 'SRT' => -10800, - 'SST' => -39600, - 'SYST' => 10800, - 'SYT' => 7200, - 'TFT' => 18000, - 'THAT' => -36000, - 'TJT' => 18000, - 'TKT' => -36000, - 'TMT' => 18000, - 'TOT' => 46800, - 'TPT' => 32400, - 'TRUT' => 36000, - 'TVT' => 43200, - 'TWT' => 28800, - 'UYST' => -7200, - 'UYT' => -10800, - 'UZT' => 18000, - 'VET' => -14400, - 'VLAST' => 39600, - 'VLAT' => 36000, - 'VOST' => 21600, - 'VUT' => 39600, - 'WAST' => 7200, - 'WAT' => 3600, - 'WDT' => 32400, - 'WEST' => 3600, - 'WFT' => 43200, - 'WIB' => 25200, - 'WIT' => 32400, - 'WITA' => 28800, - 'WKST' => 18000, - 'WST' => 28800, - 'YAKST' => 36000, - 'YAKT' => 32400, - 'YAPT' => 36000, - 'YEKST' => 21600, - 'YEKT' => 18000, - ); - - /** - * Cached PCRE for SimplePie_Parse_Date::$day - * - * @access protected - * @var string - */ - var $day_pcre; - - /** - * Cached PCRE for SimplePie_Parse_Date::$month - * - * @access protected - * @var string - */ - var $month_pcre; - - /** - * Array of user-added callback methods - * - * @access private - * @var array - */ - var $built_in = array(); - - /** - * Array of user-added callback methods - * - * @access private - * @var array - */ - var $user = array(); - - /** - * Create new SimplePie_Parse_Date object, and set self::day_pcre, - * self::month_pcre, and self::built_in - * - * @access private - */ - function SimplePie_Parse_Date() - { - $this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')'; - $this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')'; - - static $cache; - if (!isset($cache[get_class($this)])) - { - $all_methods = get_class_methods($this); - - foreach ($all_methods as $method) - { - if (strtolower(substr($method, 0, 5)) === 'date_') - { - $cache[get_class($this)][] = $method; - } - } - } - - foreach ($cache[get_class($this)] as $method) - { - $this->built_in[] = $method; - } - } - - /** - * Get the object - * - * @access public - */ - function get() - { - static $object; - if (!$object) - { - $object = new SimplePie_Parse_Date; - } - return $object; - } - - /** - * Parse a date - * - * @final - * @access public - * @param string $date Date to parse - * @return int Timestamp corresponding to date string, or false on failure - */ - function parse($date) - { - foreach ($this->user as $method) - { - if (($returned = call_user_func($method, $date)) !== false) - { - return $returned; - } - } - - foreach ($this->built_in as $method) - { - if (($returned = call_user_func(array(&$this, $method), $date)) !== false) - { - return $returned; - } - } - - return false; - } - - /** - * Add a callback method to parse a date - * - * @final - * @access public - * @param callback $callback - */ - function add_callback($callback) - { - if (is_callable($callback)) - { - $this->user[] = $callback; - } - else - { - trigger_error('User-supplied function must be a valid callback', E_USER_WARNING); - } - } - - /** - * Parse a superset of W3C-DTF (allows hyphens and colons to be omitted, as - * well as allowing any of upper or lower case "T", horizontal tabs, or - * spaces to be used as the time seperator (including more than one)) - * - * @access protected - * @return int Timestamp - */ - function date_w3cdtf($date) - { - static $pcre; - if (!$pcre) - { - $year = '([0-9]{4})'; - $month = $day = $hour = $minute = $second = '([0-9]{2})'; - $decimal = '([0-9]*)'; - $zone = '(?:(Z)|([+\-])([0-9]{1,2}):?([0-9]{1,2}))'; - $pcre = '/^' . $year . '(?:-?' . $month . '(?:-?' . $day . '(?:[Tt\x09\x20]+' . $hour . '(?::?' . $minute . '(?::?' . $second . '(?:.' . $decimal . ')?)?)?' . $zone . ')?)?)?$/'; - } - if (preg_match($pcre, $date, $match)) - { - /* - Capturing subpatterns: - 1: Year - 2: Month - 3: Day - 4: Hour - 5: Minute - 6: Second - 7: Decimal fraction of a second - 8: Zulu - 9: Timezone ± - 10: Timezone hours - 11: Timezone minutes - */ - - // Fill in empty matches - for ($i = count($match); $i <= 3; $i++) - { - $match[$i] = '1'; - } - - for ($i = count($match); $i <= 7; $i++) - { - $match[$i] = '0'; - } - - // Numeric timezone - if (isset($match[9]) && $match[9] !== '') - { - $timezone = $match[10] * 3600; - $timezone += $match[11] * 60; - if ($match[9] === '-') - { - $timezone = 0 - $timezone; - } - } - else - { - $timezone = 0; - } - - // Convert the number of seconds to an integer, taking decimals into account - $second = round($match[6] + $match[7] / pow(10, strlen($match[7]))); - - return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone; - } - else - { - return false; - } - } - - /** - * Remove RFC822 comments - * - * @access protected - * @param string $data Data to strip comments from - * @return string Comment stripped string - */ - function remove_rfc2822_comments($string) - { - $string = (string) $string; - $position = 0; - $length = strlen($string); - $depth = 0; - - $output = ''; - - while ($position < $length && ($pos = strpos($string, '(', $position)) !== false) - { - $output .= substr($string, $position, $pos - $position); - $position = $pos + 1; - if ($string[$pos - 1] !== '\\') - { - $depth++; - while ($depth && $position < $length) - { - $position += strcspn($string, '()', $position); - if ($string[$position - 1] === '\\') - { - $position++; - continue; - } - elseif (isset($string[$position])) - { - switch ($string[$position]) - { - case '(': - $depth++; - break; - - case ')': - $depth--; - break; - } - $position++; - } - else - { - break; - } - } - } - else - { - $output .= '('; - } - } - $output .= substr($string, $position); - - return $output; - } - - /** - * Parse RFC2822's date format - * - * @access protected - * @return int Timestamp - */ - function date_rfc2822($date) - { - static $pcre; - if (!$pcre) - { - $wsp = '[\x09\x20]'; - $fws = '(?:' . $wsp . '+|' . $wsp . '*(?:\x0D\x0A' . $wsp . '+)+)'; - $optional_fws = $fws . '?'; - $day_name = $this->day_pcre; - $month = $this->month_pcre; - $day = '([0-9]{1,2})'; - $hour = $minute = $second = '([0-9]{2})'; - $year = '([0-9]{2,4})'; - $num_zone = '([+\-])([0-9]{2})([0-9]{2})'; - $character_zone = '([A-Z]{1,5})'; - $zone = '(?:' . $num_zone . '|' . $character_zone . ')'; - $pcre = '/(?:' . $optional_fws . $day_name . $optional_fws . ',)?' . $optional_fws . $day . $fws . $month . $fws . $year . $fws . $hour . $optional_fws . ':' . $optional_fws . $minute . '(?:' . $optional_fws . ':' . $optional_fws . $second . ')?' . $fws . $zone . '/i'; - } - if (preg_match($pcre, $this->remove_rfc2822_comments($date), $match)) - { - /* - Capturing subpatterns: - 1: Day name - 2: Day - 3: Month - 4: Year - 5: Hour - 6: Minute - 7: Second - 8: Timezone ± - 9: Timezone hours - 10: Timezone minutes - 11: Alphabetic timezone - */ - - // Find the month number - $month = $this->month[strtolower($match[3])]; - - // Numeric timezone - if ($match[8] !== '') - { - $timezone = $match[9] * 3600; - $timezone += $match[10] * 60; - if ($match[8] === '-') - { - $timezone = 0 - $timezone; - } - } - // Character timezone - elseif (isset($this->timezone[strtoupper($match[11])])) - { - $timezone = $this->timezone[strtoupper($match[11])]; - } - // Assume everything else to be -0000 - else - { - $timezone = 0; - } - - // Deal with 2/3 digit years - if ($match[4] < 50) - { - $match[4] += 2000; - } - elseif ($match[4] < 1000) - { - $match[4] += 1900; - } - - // Second is optional, if it is empty set it to zero - if ($match[7] !== '') - { - $second = $match[7]; - } - else - { - $second = 0; - } - - return gmmktime($match[5], $match[6], $second, $month, $match[2], $match[4]) - $timezone; - } - else - { - return false; - } - } - - /** - * Parse RFC850's date format - * - * @access protected - * @return int Timestamp - */ - function date_rfc850($date) - { - static $pcre; - if (!$pcre) - { - $space = '[\x09\x20]+'; - $day_name = $this->day_pcre; - $month = $this->month_pcre; - $day = '([0-9]{1,2})'; - $year = $hour = $minute = $second = '([0-9]{2})'; - $zone = '([A-Z]{1,5})'; - $pcre = '/^' . $day_name . ',' . $space . $day . '-' . $month . '-' . $year . $space . $hour . ':' . $minute . ':' . $second . $space . $zone . '$/i'; - } - if (preg_match($pcre, $date, $match)) - { - /* - Capturing subpatterns: - 1: Day name - 2: Day - 3: Month - 4: Year - 5: Hour - 6: Minute - 7: Second - 8: Timezone - */ - - // Month - $month = $this->month[strtolower($match[3])]; - - // Character timezone - if (isset($this->timezone[strtoupper($match[8])])) - { - $timezone = $this->timezone[strtoupper($match[8])]; - } - // Assume everything else to be -0000 - else - { - $timezone = 0; - } - - // Deal with 2 digit year - if ($match[4] < 50) - { - $match[4] += 2000; - } - else - { - $match[4] += 1900; - } - - return gmmktime($match[5], $match[6], $match[7], $month, $match[2], $match[4]) - $timezone; - } - else - { - return false; - } - } - - /** - * Parse C99's asctime()'s date format - * - * @access protected - * @return int Timestamp - */ - function date_asctime($date) - { - static $pcre; - if (!$pcre) - { - $space = '[\x09\x20]+'; - $wday_name = $this->day_pcre; - $mon_name = $this->month_pcre; - $day = '([0-9]{1,2})'; - $hour = $sec = $min = '([0-9]{2})'; - $year = '([0-9]{4})'; - $terminator = '\x0A?\x00?'; - $pcre = '/^' . $wday_name . $space . $mon_name . $space . $day . $space . $hour . ':' . $min . ':' . $sec . $space . $year . $terminator . '$/i'; - } - if (preg_match($pcre, $date, $match)) - { - /* - Capturing subpatterns: - 1: Day name - 2: Month - 3: Day - 4: Hour - 5: Minute - 6: Second - 7: Year - */ - - $month = $this->month[strtolower($match[2])]; - return gmmktime($match[4], $match[5], $match[6], $month, $match[3], $match[7]); - } - else - { - return false; - } - } - - /** - * Parse dates using strtotime() - * - * @access protected - * @return int Timestamp - */ - function date_strtotime($date) - { - $strtotime = strtotime($date); - if ($strtotime === -1 || $strtotime === false) - { - return false; - } - else - { - return $strtotime; - } - } -} - -/** - * Content-type sniffing - * - * @package SimplePie - */ -class SimplePie_Content_Type_Sniffer -{ - /** - * File object - * - * @var SimplePie_File - * @access private - */ - var $file; - - /** - * Create an instance of the class with the input file - * - * @access public - * @param SimplePie_Content_Type_Sniffer $file Input file - */ - function SimplePie_Content_Type_Sniffer($file) - { - $this->file = $file; - } - - /** - * Get the Content-Type of the specified file - * - * @access public - * @return string Actual Content-Type - */ - function get_type() - { - if (isset($this->file->headers['content-type'])) - { - if (!isset($this->file->headers['content-encoding']) - && ($this->file->headers['content-type'] === 'text/plain' - || $this->file->headers['content-type'] === 'text/plain; charset=ISO-8859-1' - || $this->file->headers['content-type'] === 'text/plain; charset=iso-8859-1')) - { - return $this->text_or_binary(); - } - - if (($pos = strpos($this->file->headers['content-type'], ';')) !== false) - { - $official = substr($this->file->headers['content-type'], 0, $pos); - } - else - { - $official = $this->file->headers['content-type']; - } - $official = strtolower($official); - - if ($official === 'unknown/unknown' - || $official === 'application/unknown') - { - return $this->unknown(); - } - elseif (substr($official, -4) === '+xml' - || $official === 'text/xml' - || $official === 'application/xml') - { - return $official; - } - elseif (substr($official, 0, 6) === 'image/') - { - if ($return = $this->image()) - { - return $return; - } - else - { - return $official; - } - } - elseif ($official === 'text/html') - { - return $this->feed_or_html(); - } - else - { - return $official; - } - } - else - { - return $this->unknown(); - } - } - - /** - * Sniff text or binary - * - * @access private - * @return string Actual Content-Type - */ - function text_or_binary() - { - if (substr($this->file->body, 0, 2) === "\xFE\xFF" - || substr($this->file->body, 0, 2) === "\xFF\xFE" - || substr($this->file->body, 0, 4) === "\x00\x00\xFE\xFF" - || substr($this->file->body, 0, 3) === "\xEF\xBB\xBF") - { - return 'text/plain'; - } - elseif (preg_match('/[\x00-\x08\x0E-\x1A\x1C-\x1F]/', $this->file->body)) - { - return 'application/octect-stream'; - } - else - { - return 'text/plain'; - } - } - - /** - * Sniff unknown - * - * @access private - * @return string Actual Content-Type - */ - function unknown() - { - $ws = strspn($this->file->body, "\x09\x0A\x0B\x0C\x0D\x20"); - if (strtolower(substr($this->file->body, $ws, 14)) === '<!doctype html' - || strtolower(substr($this->file->body, $ws, 5)) === '<html' - || strtolower(substr($this->file->body, $ws, 7)) === '<script') - { - return 'text/html'; - } - elseif (substr($this->file->body, 0, 5) === '%PDF-') - { - return 'application/pdf'; - } - elseif (substr($this->file->body, 0, 11) === '%!PS-Adobe-') - { - return 'application/postscript'; - } - elseif (substr($this->file->body, 0, 6) === 'GIF87a' - || substr($this->file->body, 0, 6) === 'GIF89a') - { - return 'image/gif'; - } - elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A") - { - return 'image/png'; - } - elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF") - { - return 'image/jpeg'; - } - elseif (substr($this->file->body, 0, 2) === "\x42\x4D") - { - return 'image/bmp'; - } - else - { - return $this->text_or_binary(); - } - } - - /** - * Sniff images - * - * @access private - * @return string Actual Content-Type - */ - function image() - { - if (substr($this->file->body, 0, 6) === 'GIF87a' - || substr($this->file->body, 0, 6) === 'GIF89a') - { - return 'image/gif'; - } - elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A") - { - return 'image/png'; - } - elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF") - { - return 'image/jpeg'; - } - elseif (substr($this->file->body, 0, 2) === "\x42\x4D") - { - return 'image/bmp'; - } - else - { - return false; - } - } - - /** - * Sniff HTML - * - * @access private - * @return string Actual Content-Type - */ - function feed_or_html() - { - $len = strlen($this->file->body); - $pos = strspn($this->file->body, "\x09\x0A\x0D\x20"); - - while ($pos < $len) - { - switch ($this->file->body[$pos]) - { - case "\x09": - case "\x0A": - case "\x0D": - case "\x20": - $pos += strspn($this->file->body, "\x09\x0A\x0D\x20", $pos); - continue 2; - - case '<': - $pos++; - break; - - default: - return 'text/html'; - } - - if (substr($this->file->body, $pos, 3) === '!--') - { - $pos += 3; - if ($pos < $len && ($pos = strpos($this->file->body, '-->', $pos)) !== false) - { - $pos += 3; - } - else - { - return 'text/html'; - } - } - elseif (substr($this->file->body, $pos, 1) === '!') - { - if ($pos < $len && ($pos = strpos($this->file->body, '>', $pos)) !== false) - { - $pos++; - } - else - { - return 'text/html'; - } - } - elseif (substr($this->file->body, $pos, 1) === '?') - { - if ($pos < $len && ($pos = strpos($this->file->body, '?>', $pos)) !== false) - { - $pos += 2; - } - else - { - return 'text/html'; - } - } - elseif (substr($this->file->body, $pos, 3) === 'rss' - || substr($this->file->body, $pos, 7) === 'rdf:RDF') - { - return 'application/rss+xml'; - } - elseif (substr($this->file->body, $pos, 4) === 'feed') - { - return 'application/atom+xml'; - } - else - { - return 'text/html'; - } - } - - return 'text/html'; - } -} - -/** - * Parses the XML Declaration - * - * @package SimplePie - */ -class SimplePie_XML_Declaration_Parser -{ - /** - * XML Version - * - * @access public - * @var string - */ - var $version = '1.0'; - - /** - * Encoding - * - * @access public - * @var string - */ - var $encoding = 'UTF-8'; - - /** - * Standalone - * - * @access public - * @var bool - */ - var $standalone = false; - - /** - * Current state of the state machine - * - * @access private - * @var string - */ - var $state = 'before_version_name'; - - /** - * Input data - * - * @access private - * @var string - */ - var $data = ''; - - /** - * Input data length (to avoid calling strlen() everytime this is needed) - * - * @access private - * @var int - */ - var $data_length = 0; - - /** - * Current position of the pointer - * - * @var int - * @access private - */ - var $position = 0; - - /** - * Create an instance of the class with the input data - * - * @access public - * @param string $data Input data - */ - function SimplePie_XML_Declaration_Parser($data) - { - $this->data = $data; - $this->data_length = strlen($this->data); - } - - /** - * Parse the input data - * - * @access public - * @return bool true on success, false on failure - */ - function parse() - { - while ($this->state && $this->state !== 'emit' && $this->has_data()) - { - $state = $this->state; - $this->$state(); - } - $this->data = ''; - if ($this->state === 'emit') - { - return true; - } - else - { - $this->version = ''; - $this->encoding = ''; - $this->standalone = ''; - return false; - } - } - - /** - * Check whether there is data beyond the pointer - * - * @access private - * @return bool true if there is further data, false if not - */ - function has_data() - { - return (bool) ($this->position < $this->data_length); - } - - /** - * Advance past any whitespace - * - * @return int Number of whitespace characters passed - */ - function skip_whitespace() - { - $whitespace = strspn($this->data, "\x09\x0A\x0D\x20", $this->position); - $this->position += $whitespace; - return $whitespace; - } - - /** - * Read value - */ - function get_value() - { - $quote = substr($this->data, $this->position, 1); - if ($quote === '"' || $quote === "'") - { - $this->position++; - $len = strcspn($this->data, $quote, $this->position); - if ($this->has_data()) - { - $value = substr($this->data, $this->position, $len); - $this->position += $len + 1; - return $value; - } - } - return false; - } - - function before_version_name() - { - if ($this->skip_whitespace()) - { - $this->state = 'version_name'; - } - else - { - $this->state = false; - } - } - - function version_name() - { - if (substr($this->data, $this->position, 7) === 'version') - { - $this->position += 7; - $this->skip_whitespace(); - $this->state = 'version_equals'; - } - else - { - $this->state = false; - } - } - - function version_equals() - { - if (substr($this->data, $this->position, 1) === '=') - { - $this->position++; - $this->skip_whitespace(); - $this->state = 'version_value'; - } - else - { - $this->state = false; - } - } - - function version_value() - { - if ($this->version = $this->get_value()) - { - $this->skip_whitespace(); - if ($this->has_data()) - { - $this->state = 'encoding_name'; - } - else - { - $this->state = 'emit'; - } - } - else - { - $this->state = false; - } - } - - function encoding_name() - { - if (substr($this->data, $this->position, 8) === 'encoding') - { - $this->position += 8; - $this->skip_whitespace(); - $this->state = 'encoding_equals'; - } - else - { - $this->state = 'standalone_name'; - } - } - - function encoding_equals() - { - if (substr($this->data, $this->position, 1) === '=') - { - $this->position++; - $this->skip_whitespace(); - $this->state = 'encoding_value'; - } - else - { - $this->state = false; - } - } - - function encoding_value() - { - if ($this->encoding = $this->get_value()) - { - $this->skip_whitespace(); - if ($this->has_data()) - { - $this->state = 'standalone_name'; - } - else - { - $this->state = 'emit'; - } - } - else - { - $this->state = false; - } - } - - function standalone_name() - { - if (substr($this->data, $this->position, 10) === 'standalone') - { - $this->position += 10; - $this->skip_whitespace(); - $this->state = 'standalone_equals'; - } - else - { - $this->state = false; - } - } - - function standalone_equals() - { - if (substr($this->data, $this->position, 1) === '=') - { - $this->position++; - $this->skip_whitespace(); - $this->state = 'standalone_value'; - } - else - { - $this->state = false; - } - } - - function standalone_value() - { - if ($standalone = $this->get_value()) - { - switch ($standalone) - { - case 'yes': - $this->standalone = true; - break; - - case 'no': - $this->standalone = false; - break; - - default: - $this->state = false; - return; - } - - $this->skip_whitespace(); - if ($this->has_data()) - { - $this->state = false; - } - else - { - $this->state = 'emit'; - } - } - else - { - $this->state = false; - } - } -} - -class SimplePie_Locator -{ - var $useragent; - var $timeout; - var $file; - var $local = array(); - var $elsewhere = array(); - var $file_class = 'SimplePie_File'; - var $cached_entities = array(); - var $http_base; - var $base; - var $base_location = 0; - var $checked_feeds = 0; - var $max_checked_feeds = 10; - var $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer'; - - function SimplePie_Locator(&$file, $timeout = 10, $useragent = null, $file_class = 'SimplePie_File', $max_checked_feeds = 10, $content_type_sniffer_class = 'SimplePie_Content_Type_Sniffer') - { - $this->file =& $file; - $this->file_class = $file_class; - $this->useragent = $useragent; - $this->timeout = $timeout; - $this->max_checked_feeds = $max_checked_feeds; - $this->content_type_sniffer_class = $content_type_sniffer_class; - } - - function find($type = SIMPLEPIE_LOCATOR_ALL, &$working) - { - if ($this->is_feed($this->file)) - { - return $this->file; - } - - if ($this->file->method & SIMPLEPIE_FILE_SOURCE_REMOTE) - { - $sniffer = new $this->content_type_sniffer_class($this->file); - if ($sniffer->get_type() !== 'text/html') - { - return null; - } - } - - if ($type & ~SIMPLEPIE_LOCATOR_NONE) - { - $this->get_base(); - } - - if ($type & SIMPLEPIE_LOCATOR_AUTODISCOVERY && $working = $this->autodiscovery()) - { - return $working[0]; - } - - if ($type & (SIMPLEPIE_LOCATOR_LOCAL_EXTENSION | SIMPLEPIE_LOCATOR_LOCAL_BODY | SIMPLEPIE_LOCATOR_REMOTE_EXTENSION | SIMPLEPIE_LOCATOR_REMOTE_BODY) && $this->get_links()) - { - if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local)) - { - return $working; - } - - if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local)) - { - return $working; - } - - if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere)) - { - return $working; - } - - if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere)) - { - return $working; - } - } - return null; - } - - function is_feed(&$file) - { - if ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE) - { - $sniffer = new $this->content_type_sniffer_class($file); - $sniffed = $sniffer->get_type(); - if (in_array($sniffed, array('application/rss+xml', 'application/rdf+xml', 'text/rdf', 'application/atom+xml', 'text/xml', 'application/xml'))) - { - return true; - } - else - { - return false; - } - } - elseif ($file->method & SIMPLEPIE_FILE_SOURCE_LOCAL) - { - return true; - } - else - { - return false; - } - } - - function get_base() - { - $this->http_base = $this->file->url; - $this->base = $this->http_base; - $elements = SimplePie_Misc::get_element('base', $this->file->body); - foreach ($elements as $element) - { - if ($element['attribs']['href']['data'] !== '') - { - $this->base = SimplePie_Misc::absolutize_url(trim($element['attribs']['href']['data']), $this->http_base); - $this->base_location = $element['offset']; - break; - } - } - } - - function autodiscovery() - { - $links = array_merge(SimplePie_Misc::get_element('link', $this->file->body), SimplePie_Misc::get_element('a', $this->file->body), SimplePie_Misc::get_element('area', $this->file->body)); - $done = array(); - $feeds = array(); - foreach ($links as $link) - { - if ($this->checked_feeds === $this->max_checked_feeds) - { - break; - } - if (isset($link['attribs']['href']['data']) && isset($link['attribs']['rel']['data'])) - { - $rel = array_unique(SimplePie_Misc::space_seperated_tokens(strtolower($link['attribs']['rel']['data']))); - - if ($this->base_location < $link['offset']) - { - $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base); - } - else - { - $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base); - } - - if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !empty($link['attribs']['type']['data']) && in_array(strtolower(SimplePie_Misc::parse_mime($link['attribs']['type']['data'])), array('application/rss+xml', 'application/atom+xml'))) && !isset($feeds[$href])) - { - $this->checked_feeds++; - $feed = new $this->file_class($href, $this->timeout, 5, null, $this->useragent); - if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed)) - { - $feeds[$href] = $feed; - } - } - $done[] = $href; - } - } - - if (!empty($feeds)) - { - return array_values($feeds); - } - else { - return null; - } - } - - function get_links() - { - $links = SimplePie_Misc::get_element('a', $this->file->body); - foreach ($links as $link) - { - if (isset($link['attribs']['href']['data'])) - { - $href = trim($link['attribs']['href']['data']); - $parsed = SimplePie_Misc::parse_url($href); - if ($parsed['scheme'] === '' || preg_match('/^(http(s)|feed)?$/i', $parsed['scheme'])) - { - if ($this->base_location < $link['offset']) - { - $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->base); - } - else - { - $href = SimplePie_Misc::absolutize_url(trim($link['attribs']['href']['data']), $this->http_base); - } - - $current = SimplePie_Misc::parse_url($this->file->url); - - if ($parsed['authority'] === '' || $parsed['authority'] === $current['authority']) - { - $this->local[] = $href; - } - else - { - $this->elsewhere[] = $href; - } - } - } - } - $this->local = array_unique($this->local); - $this->elsewhere = array_unique($this->elsewhere); - if (!empty($this->local) || !empty($this->elsewhere)) - { - return true; - } - return null; - } - - function extension(&$array) - { - foreach ($array as $key => $value) - { - if ($this->checked_feeds === $this->max_checked_feeds) - { - break; - } - if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml'))) - { - $this->checked_feeds++; - $feed = new $this->file_class($value, $this->timeout, 5, null, $this->useragent); - if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed)) - { - return $feed; - } - else - { - unset($array[$key]); - } - } - } - return null; - } - - function body(&$array) - { - foreach ($array as $key => $value) - { - if ($this->checked_feeds === $this->max_checked_feeds) - { - break; - } - if (preg_match('/(rss|rdf|atom|xml)/i', $value)) - { - $this->checked_feeds++; - $feed = new $this->file_class($value, $this->timeout, 5, null, $this->useragent); - if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed)) - { - return $feed; - } - else - { - unset($array[$key]); - } - } - } - return null; - } -} - -class SimplePie_Parser -{ - var $error_code; - var $error_string; - var $current_line; - var $current_column; - var $current_byte; - var $separator = ' '; - var $namespace = array(''); - var $element = array(''); - var $xml_base = array(''); - var $xml_base_explicit = array(false); - var $xml_lang = array(''); - var $data = array(); - var $datas = array(array()); - var $current_xhtml_construct = -1; - var $encoding; - - function parse(&$data, $encoding) - { - // Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character - if (strtoupper($encoding) === 'US-ASCII') - { - $this->encoding = 'UTF-8'; - } - else - { - $this->encoding = $encoding; - } - - // Strip BOM: - // UTF-32 Big Endian BOM - if (substr($data, 0, 4) === "\x00\x00\xFE\xFF") - { - $data = substr($data, 4); - } - // UTF-32 Little Endian BOM - elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00") - { - $data = substr($data, 4); - } - // UTF-16 Big Endian BOM - elseif (substr($data, 0, 2) === "\xFE\xFF") - { - $data = substr($data, 2); - } - // UTF-16 Little Endian BOM - elseif (substr($data, 0, 2) === "\xFF\xFE") - { - $data = substr($data, 2); - } - // UTF-8 BOM - elseif (substr($data, 0, 3) === "\xEF\xBB\xBF") - { - $data = substr($data, 3); - } - - if (substr($data, 0, 5) === '<?xml' && strspn(substr($data, 5, 1), "\x09\x0A\x0D\x20") && ($pos = strpos($data, '?>')) !== false) - { - $declaration = new SimplePie_XML_Declaration_Parser(substr($data, 5, $pos - 5)); - if ($declaration->parse()) - { - $data = substr($data, $pos + 2); - $data = '<?xml version="' . $declaration->version . '" encoding="' . $encoding . '" standalone="' . (($declaration->standalone) ? 'yes' : 'no') . '"?>' . $data; - } - else - { - $this->error_string = 'SimplePie bug! Please report this!'; - return false; - } - } - - $return = true; - - static $xml_is_sane = null; - if ($xml_is_sane === null) - { - $parser_check = xml_parser_create(); - xml_parse_into_struct($parser_check, '<foo>&</foo>', $values); - xml_parser_free($parser_check); - $xml_is_sane = isset($values[0]['value']); - } - - // Create the parser - if ($xml_is_sane) - { - $xml = xml_parser_create_ns($this->encoding, $this->separator); - xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1); - xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0); - xml_set_object($xml, $this); - xml_set_character_data_handler($xml, 'cdata'); - xml_set_element_handler($xml, 'tag_open', 'tag_close'); - - // Parse! - if (!xml_parse($xml, $data, true)) - { - $this->error_code = xml_get_error_code($xml); - $this->error_string = xml_error_string($this->error_code); - $return = false; - } - $this->current_line = xml_get_current_line_number($xml); - $this->current_column = xml_get_current_column_number($xml); - $this->current_byte = xml_get_current_byte_index($xml); - xml_parser_free($xml); - return $return; - } - else - { - libxml_clear_errors(); - $xml = new XMLReader(); - $xml->xml($data); - while (@$xml->read()) - { - switch ($xml->nodeType) - { - - case constant('XMLReader::END_ELEMENT'): - if ($xml->namespaceURI !== '') - { - $tagName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}"; - } - else - { - $tagName = $xml->localName; - } - $this->tag_close(null, $tagName); - break; - case constant('XMLReader::ELEMENT'): - $empty = $xml->isEmptyElement; - if ($xml->namespaceURI !== '') - { - $tagName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}"; - } - else - { - $tagName = $xml->localName; - } - $attributes = array(); - while ($xml->moveToNextAttribute()) - { - if ($xml->namespaceURI !== '') - { - $attrName = "{$xml->namespaceURI}{$this->separator}{$xml->localName}"; - } - else - { - $attrName = $xml->localName; - } - $attributes[$attrName] = $xml->value; - } - $this->tag_open(null, $tagName, $attributes); - if ($empty) - { - $this->tag_close(null, $tagName); - } - break; - case constant('XMLReader::TEXT'): - - case constant('XMLReader::CDATA'): - $this->cdata(null, $xml->value); - break; - } - } - if ($error = libxml_get_last_error()) - { - $this->error_code = $error->code; - $this->error_string = $error->message; - $this->current_line = $error->line; - $this->current_column = $error->column; - return false; - } - else - { - return true; - } - } - } - - function get_error_code() - { - return $this->error_code; - } - - function get_error_string() - { - return $this->error_string; - } - - function get_current_line() - { - return $this->current_line; - } - - function get_current_column() - { - return $this->current_column; - } - - function get_current_byte() - { - return $this->current_byte; - } - - function get_data() - { - return $this->data; - } - - function tag_open($parser, $tag, $attributes) - { - list($this->namespace[], $this->element[]) = $this->split_ns($tag); - - $attribs = array(); - foreach ($attributes as $name => $value) - { - list($attrib_namespace, $attribute) = $this->split_ns($name); - $attribs[$attrib_namespace][$attribute] = $value; - } - - if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['base'])) - { - $this->xml_base[] = SimplePie_Misc::absolutize_url($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_base)); - $this->xml_base_explicit[] = true; - } - else - { - $this->xml_base[] = end($this->xml_base); - $this->xml_base_explicit[] = end($this->xml_base_explicit); - } - - if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['lang'])) - { - $this->xml_lang[] = $attribs[SIMPLEPIE_NAMESPACE_XML]['lang']; - } - else - { - $this->xml_lang[] = end($this->xml_lang); - } - - if ($this->current_xhtml_construct >= 0) - { - $this->current_xhtml_construct++; - if (end($this->namespace) === SIMPLEPIE_NAMESPACE_XHTML) - { - $this->data['data'] .= '<' . end($this->element); - if (isset($attribs[''])) - { - foreach ($attribs[''] as $name => $value) - { - $this->data['data'] .= ' ' . $name . '="' . htmlspecialchars($value, ENT_COMPAT, $this->encoding) . '"'; - } - } - $this->data['data'] .= '>'; - } - } - else - { - $this->datas[] =& $this->data; - $this->data =& $this->data['child'][end($this->namespace)][end($this->element)][]; - $this->data = array('data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang)); - if ((end($this->namespace) === SIMPLEPIE_NAMESPACE_ATOM_03 && in_array(end($this->element), array('title', 'tagline', 'copyright', 'info', 'summary', 'content')) && isset($attribs['']['mode']) && $attribs['']['mode'] === 'xml') - || (end($this->namespace) === SIMPLEPIE_NAMESPACE_ATOM_10 && in_array(end($this->element), array('rights', 'subtitle', 'summary', 'info', 'title', 'content')) && isset($attribs['']['type']) && $attribs['']['type'] === 'xhtml')) - { - $this->current_xhtml_construct = 0; - } - } - } - - function cdata($parser, $cdata) - { - if ($this->current_xhtml_construct >= 0) - { - $this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding); - } - else - { - $this->data['data'] .= $cdata; - } - } - - function tag_close($parser, $tag) - { - if ($this->current_xhtml_construct >= 0) - { - $this->current_xhtml_construct--; - if (end($this->namespace) === SIMPLEPIE_NAMESPACE_XHTML && !in_array(end($this->element), array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param'))) - { - $this->data['data'] .= '</' . end($this->element) . '>'; - } - } - if ($this->current_xhtml_construct === -1) - { - $this->data =& $this->datas[count($this->datas) - 1]; - array_pop($this->datas); - } - - array_pop($this->element); - array_pop($this->namespace); - array_pop($this->xml_base); - array_pop($this->xml_base_explicit); - array_pop($this->xml_lang); - } - - function split_ns($string) - { - static $cache = array(); - if (!isset($cache[$string])) - { - if ($pos = strpos($string, $this->separator)) - { - static $separator_length; - if (!$separator_length) - { - $separator_length = strlen($this->separator); - } - $namespace = substr($string, 0, $pos); - $local_name = substr($string, $pos + $separator_length); - if (strtolower($namespace) === SIMPLEPIE_NAMESPACE_ITUNES) - { - $namespace = SIMPLEPIE_NAMESPACE_ITUNES; - } - - // Normalize the Media RSS namespaces - if ($namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG) - { - $namespace = SIMPLEPIE_NAMESPACE_MEDIARSS; - } - $cache[$string] = array($namespace, $local_name); - } - else - { - $cache[$string] = array('', $string); - } - } - return $cache[$string]; - } -} - -/** - * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shorten a string while preserving HTML tags - */ -class SimplePie_Sanitize -{ - // Private vars - var $base; - - // Options - var $remove_div = true; - var $image_handler = ''; - var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'); - var $encode_instead_of_strip = false; - var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'); - var $strip_comments = false; - var $output_encoding = 'UTF-8'; - var $enable_cache = true; - var $cache_location = './cache'; - var $cache_name_function = 'md5'; - var $cache_class = 'SimplePie_Cache'; - var $file_class = 'SimplePie_File'; - var $timeout = 10; - var $useragent = ''; - var $force_fsockopen = false; - - var $replace_url_attributes = array( - 'a' => 'href', - 'area' => 'href', - 'blockquote' => 'cite', - 'del' => 'cite', - 'form' => 'action', - 'img' => array('longdesc', 'src'), - 'input' => 'src', - 'ins' => 'cite', - 'q' => 'cite' - ); - - function remove_div($enable = true) - { - $this->remove_div = (bool) $enable; - } - - function set_image_handler($page = false) - { - if ($page) - { - $this->image_handler = (string) $page; - } - else - { - $this->image_handler = false; - } - } - - function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache') - { - if (isset($enable_cache)) - { - $this->enable_cache = (bool) $enable_cache; - } - - if ($cache_location) - { - $this->cache_location = (string) $cache_location; - } - - if ($cache_name_function) - { - $this->cache_name_function = (string) $cache_name_function; - } - - if ($cache_class) - { - $this->cache_class = (string) $cache_class; - } - } - - function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false) - { - if ($file_class) - { - $this->file_class = (string) $file_class; - } - - if ($timeout) - { - $this->timeout = (string) $timeout; - } - - if ($useragent) - { - $this->useragent = (string) $useragent; - } - - if ($force_fsockopen) - { - $this->force_fsockopen = (string) $force_fsockopen; - } - } - - function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style')) - { - if ($tags) - { - if (is_array($tags)) - { - $this->strip_htmltags = $tags; - } - else - { - $this->strip_htmltags = explode(',', $tags); - } - } - else - { - $this->strip_htmltags = false; - } - } - - function encode_instead_of_strip($encode = false) - { - $this->encode_instead_of_strip = (bool) $encode; - } - - function strip_attributes($attribs = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc')) - { - if ($attribs) - { - if (is_array($attribs)) - { - $this->strip_attributes = $attribs; - } - else - { - $this->strip_attributes = explode(',', $attribs); - } - } - else - { - $this->strip_attributes = false; - } - } - - function strip_comments($strip = false) - { - $this->strip_comments = (bool) $strip; - } - - function set_output_encoding($encoding = 'UTF-8') - { - $this->output_encoding = (string) $encoding; - } - - /** - * Set element/attribute key/value pairs of HTML attributes - * containing URLs that need to be resolved relative to the feed - * - * @access public - * @since 1.0 - * @param array $element_attribute Element/attribute key/value pairs - */ - function set_url_replacements($element_attribute = array('a' => 'href', 'area' => 'href', 'blockquote' => 'cite', 'del' => 'cite', 'form' => 'action', 'img' => array('longdesc', 'src'), 'input' => 'src', 'ins' => 'cite', 'q' => 'cite')) - { - $this->replace_url_attributes = (array) $element_attribute; - } - - function sanitize($data, $type, $base = '') - { - $data = trim($data); - if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI) - { - if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML) - { - if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data)) - { - $type |= SIMPLEPIE_CONSTRUCT_HTML; - } - else - { - $type |= SIMPLEPIE_CONSTRUCT_TEXT; - } - } - - if ($type & SIMPLEPIE_CONSTRUCT_BASE64) - { - $data = base64_decode($data); - } - - if ($type & SIMPLEPIE_CONSTRUCT_XHTML) - { - if ($this->remove_div) - { - $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '', $data); - $data = preg_replace('/<\/div>$/', '', $data); - } - else - { - $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '<div>', $data); - } - } - - if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML)) - { - // Strip comments - if ($this->strip_comments) - { - $data = SimplePie_Misc::strip_comments($data); - } - - // Strip out HTML tags and attributes that might cause various security problems. - // Based on recommendations by Mark Pilgrim at: - // http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely - if ($this->strip_htmltags) - { - foreach ($this->strip_htmltags as $tag) - { - $pcre = "/<($tag)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$tag" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>|(\/)?>)/siU'; - while (preg_match($pcre, $data)) - { - $data = preg_replace_callback($pcre, array(&$this, 'do_strip_htmltags'), $data); - } - } - } - - if ($this->strip_attributes) - { - foreach ($this->strip_attributes as $attrib) - { - $data = preg_replace('/(<[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*)' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . trim($attrib) . '(?:\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>/', '\1\2\3>', $data); - } - } - - // Replace relative URLs - $this->base = $base; - foreach ($this->replace_url_attributes as $element => $attributes) - { - $data = $this->replace_urls($data, $element, $attributes); - } - - // If image handling (caching, etc.) is enabled, cache and rewrite all the image tags. - if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache) - { - $images = SimplePie_Misc::get_element('img', $data); - foreach ($images as $img) - { - if (isset($img['attribs']['src']['data'])) - { - $image_url = call_user_func($this->cache_name_function, $img['attribs']['src']['data']); - $cache = call_user_func(array($this->cache_class, 'create'), $this->cache_location, $image_url, 'spi'); - - if ($cache->load()) - { - $img['attribs']['src']['data'] = $this->image_handler . $image_url; - $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data); - } - else - { - $file = new $this->file_class($img['attribs']['src']['data'], $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen); - $headers = $file->headers; - - if ($file->success && ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300))) - { - if ($cache->save(array('headers' => $file->headers, 'body' => $file->body))) - { - $img['attribs']['src']['data'] = $this->image_handler . $image_url; - $data = str_replace($img['full'], SimplePie_Misc::element_implode($img), $data); - } - else - { - trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING); - } - } - } - } - } - } - - // Having (possibly) taken stuff out, there may now be whitespace at the beginning/end of the data - $data = trim($data); - } - - if ($type & SIMPLEPIE_CONSTRUCT_IRI) - { - $data = SimplePie_Misc::absolutize_url($data, $base); - } - - if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI)) - { - $data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8'); - } - - if ($this->output_encoding !== 'UTF-8') - { - $data = SimplePie_Misc::change_encoding($data, 'UTF-8', $this->output_encoding); - } - } - return $data; - } - - function replace_urls($data, $tag, $attributes) - { - if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags)) - { - $elements = SimplePie_Misc::get_element($tag, $data); - foreach ($elements as $element) - { - if (is_array($attributes)) - { - foreach ($attributes as $attribute) - { - if (isset($element['attribs'][$attribute]['data'])) - { - $element['attribs'][$attribute]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attribute]['data'], $this->base); - $new_element = SimplePie_Misc::element_implode($element); - $data = str_replace($element['full'], $new_element, $data); - $element['full'] = $new_element; - } - } - } - elseif (isset($element['attribs'][$attributes]['data'])) - { - $element['attribs'][$attributes]['data'] = SimplePie_Misc::absolutize_url($element['attribs'][$attributes]['data'], $this->base); - $data = str_replace($element['full'], SimplePie_Misc::element_implode($element), $data); - } - } - } - return $data; - } - - function do_strip_htmltags($match) - { - if ($this->encode_instead_of_strip) - { - if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style'))) - { - $match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8'); - $match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8'); - return "<$match[1]$match[2]>$match[3]</$match[1]>"; - } - else - { - return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8'); - } - } - elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style'))) - { - return $match[4]; - } - else - { - return ''; - } - } -} - -?> diff --git a/tests/unit/includes/FeedutilsText.php b/tests/unit/includes/FeedutilsText.php new file mode 100644 index 000000000..e3eaa91a7 --- /dev/null +++ b/tests/unit/includes/FeedutilsText.php @@ -0,0 +1,52 @@ +<?php + +namespace Zotlabs\Tests\Unit\includes; + +use Zotlabs\Tests\Unit\UnitTestCase; + +/** + * @brief Unit Test case for include/feedutils.php file. + */ +class FeedutilsTest extends UnitTestCase { + + public function test_normalise_id() { + $this->assertEquals('id', normalise_id('id')); + $this->assertEquals('id', normalise_id('X-ZOT:id')); + $this->assertEquals('id id2', normalise_id('X-ZOT:id X-ZOT:id2')); + $this->assertEmpty(normalise_id('')); + } + + public function test_encode_rel_links() { + // invalid params return empty array + $this->assertEquals([], encode_rel_links('string')); + $this->assertEquals([], encode_rel_links([])); + + $b = ['attribs' => ['' => [ + 'rel' => 'rel_value', + 'type' => 'type_value', + 'href' => 'href_value' + ]]]; + $blink1 = ['link1' => $b]; + $bresult[] = $b['attribs']['']; + $this->assertEquals($bresult, encode_rel_links($blink1)); + } + +/* public function test_encode_rel_links_fail() { + $a = [ 'key' => 'value']; + $this->assertFalse(encode_rel_links($a)); + //Illegal string offset 'attribs' + }*/ + + public function test_atom_author() { + $this->assertEquals('', atom_author('', 'name', 'uri', 72, 72, 'png', 'photourl')); + + $a = '<tag> + <name>name</name> + <uri>uri</uri> + <link rel="photo" type="png" media:width="72" media:height="72" href="http://photourl" /> + <link rel="avatar" type="png" media:width="72" media:height="72" href="http://photourl" /> +</tag>'; + + $this->assertXmlStringEqualsXmlString($a, atom_author('tag', 'name', 'uri', 72, 72, 'png', 'http://photourl')); + } +} diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index cd774eb7c..cc1cd6bca 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -323,8 +323,6 @@ return array( 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php', 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php', 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php', - 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', 'Sabre\\CalDAV\\Backend\\AbstractBackend' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php', 'Sabre\\CalDAV\\Backend\\BackendInterface' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/BackendInterface.php', 'Sabre\\CalDAV\\Backend\\NotificationSupport' => $vendorDir . '/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php', @@ -663,6 +661,41 @@ return array( 'Sabre\\Xml\\Writer' => $vendorDir . '/sabre/xml/lib/Writer.php', 'Sabre\\Xml\\XmlDeserializable' => $vendorDir . '/sabre/xml/lib/XmlDeserializable.php', 'Sabre\\Xml\\XmlSerializable' => $vendorDir . '/sabre/xml/lib/XmlSerializable.php', + 'SimplePie' => $vendorDir . '/simplepie/simplepie/library/SimplePie.php', + 'SimplePie_Author' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Author.php', + 'SimplePie_Cache' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Cache.php', + 'SimplePie_Cache_Base' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Cache/Base.php', + 'SimplePie_Cache_DB' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Cache/DB.php', + 'SimplePie_Cache_File' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Cache/File.php', + 'SimplePie_Cache_Memcache' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Cache/Memcache.php', + 'SimplePie_Cache_Memcached' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Cache/Memcached.php', + 'SimplePie_Cache_MySQL' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Cache/MySQL.php', + 'SimplePie_Cache_Redis' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Cache/Redis.php', + 'SimplePie_Caption' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Caption.php', + 'SimplePie_Category' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Category.php', + 'SimplePie_Content_Type_Sniffer' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php', + 'SimplePie_Copyright' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Copyright.php', + 'SimplePie_Core' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Core.php', + 'SimplePie_Credit' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Credit.php', + 'SimplePie_Decode_HTML_Entities' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php', + 'SimplePie_Enclosure' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Enclosure.php', + 'SimplePie_Exception' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Exception.php', + 'SimplePie_File' => $vendorDir . '/simplepie/simplepie/library/SimplePie/File.php', + 'SimplePie_HTTP_Parser' => $vendorDir . '/simplepie/simplepie/library/SimplePie/HTTP/Parser.php', + 'SimplePie_IRI' => $vendorDir . '/simplepie/simplepie/library/SimplePie/IRI.php', + 'SimplePie_Item' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Item.php', + 'SimplePie_Locator' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Locator.php', + 'SimplePie_Misc' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Misc.php', + 'SimplePie_Net_IPv6' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Net/IPv6.php', + 'SimplePie_Parse_Date' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Parse/Date.php', + 'SimplePie_Parser' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Parser.php', + 'SimplePie_Rating' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Rating.php', + 'SimplePie_Registry' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Registry.php', + 'SimplePie_Restriction' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Restriction.php', + 'SimplePie_Sanitize' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Sanitize.php', + 'SimplePie_Source' => $vendorDir . '/simplepie/simplepie/library/SimplePie/Source.php', + 'SimplePie_XML_Declaration_Parser' => $vendorDir . '/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php', + 'SimplePie_gzdecode' => $vendorDir . '/simplepie/simplepie/library/SimplePie/gzdecode.php', 'Zotlabs\\Access\\AccessList' => $baseDir . '/Zotlabs/Access/AccessList.php', 'Zotlabs\\Access\\PermissionLimits' => $baseDir . '/Zotlabs/Access/PermissionLimits.php', 'Zotlabs\\Access\\PermissionRoles' => $baseDir . '/Zotlabs/Access/PermissionRoles.php', @@ -699,9 +732,11 @@ return array( 'Zotlabs\\Lib\\Cache' => $baseDir . '/Zotlabs/Lib/Cache.php', 'Zotlabs\\Lib\\Chatroom' => $baseDir . '/Zotlabs/Lib/Chatroom.php', 'Zotlabs\\Lib\\Config' => $baseDir . '/Zotlabs/Lib/Config.php', + 'Zotlabs\\Lib\\DB_Upgrade' => $baseDir . '/Zotlabs/Lib/DB_Upgrade.php', 'Zotlabs\\Lib\\Enotify' => $baseDir . '/Zotlabs/Lib/Enotify.php', 'Zotlabs\\Lib\\ExtendedZip' => $baseDir . '/Zotlabs/Lib/ExtendedZip.php', 'Zotlabs\\Lib\\IConfig' => $baseDir . '/Zotlabs/Lib/IConfig.php', + 'Zotlabs\\Lib\\MarkdownSoap' => $baseDir . '/Zotlabs/Lib/MarkdownSoap.php', 'Zotlabs\\Lib\\NativeWiki' => $baseDir . '/Zotlabs/Lib/NativeWiki.php', 'Zotlabs\\Lib\\NativeWikiPage' => $baseDir . '/Zotlabs/Lib/NativeWikiPage.php', 'Zotlabs\\Lib\\PConfig' => $baseDir . '/Zotlabs/Lib/PConfig.php', @@ -917,6 +952,58 @@ return array( 'Zotlabs\\Web\\SessionHandler' => $baseDir . '/Zotlabs/Web/SessionHandler.php', 'Zotlabs\\Web\\SubModule' => $baseDir . '/Zotlabs/Web/SubModule.php', 'Zotlabs\\Web\\WebServer' => $baseDir . '/Zotlabs/Web/WebServer.php', + 'Zotlabs\\Widget\\Activity' => $baseDir . '/Zotlabs/Widget/Activity.php', + 'Zotlabs\\Widget\\Admin' => $baseDir . '/Zotlabs/Widget/Admin.php', + 'Zotlabs\\Widget\\Affinity' => $baseDir . '/Zotlabs/Widget/Affinity.php', + 'Zotlabs\\Widget\\Album' => $baseDir . '/Zotlabs/Widget/Album.php', + 'Zotlabs\\Widget\\Appcategories' => $baseDir . '/Zotlabs/Widget/Appcategories.php', + 'Zotlabs\\Widget\\Appcloud' => $baseDir . '/Zotlabs/Widget/Appcloud.php', + 'Zotlabs\\Widget\\Archive' => $baseDir . '/Zotlabs/Widget/Archive.php', + 'Zotlabs\\Widget\\Bookmarkedchats' => $baseDir . '/Zotlabs/Widget/Bookmarkedchats.php', + 'Zotlabs\\Widget\\Catcloud_wall' => $baseDir . '/Zotlabs/Widget/Catcloud_wall.php', + 'Zotlabs\\Widget\\Categories' => $baseDir . '/Zotlabs/Widget/Categories.php', + 'Zotlabs\\Widget\\Chatroom_list' => $baseDir . '/Zotlabs/Widget/Chatroom_list.php', + 'Zotlabs\\Widget\\Chatroom_members' => $baseDir . '/Zotlabs/Widget/Chatroom_members.php', + 'Zotlabs\\Widget\\Clock' => $baseDir . '/Zotlabs/Widget/Clock.php', + 'Zotlabs\\Widget\\Collections' => $baseDir . '/Zotlabs/Widget/Collections.php', + 'Zotlabs\\Widget\\Conversations' => $baseDir . '/Zotlabs/Widget/Conversations.php', + 'Zotlabs\\Widget\\Cover_photo' => $baseDir . '/Zotlabs/Widget/Cover_photo.php', + 'Zotlabs\\Widget\\Design_tools' => $baseDir . '/Zotlabs/Widget/Design_tools.php', + 'Zotlabs\\Widget\\Dirsort' => $baseDir . '/Zotlabs/Widget/Dirsort.php', + 'Zotlabs\\Widget\\Dirtags' => $baseDir . '/Zotlabs/Widget/Dirtags.php', + 'Zotlabs\\Widget\\Eventstools' => $baseDir . '/Zotlabs/Widget/Eventstools.php', + 'Zotlabs\\Widget\\Filer' => $baseDir . '/Zotlabs/Widget/Filer.php', + 'Zotlabs\\Widget\\Findpeople' => $baseDir . '/Zotlabs/Widget/Findpeople.php', + 'Zotlabs\\Widget\\Follow' => $baseDir . '/Zotlabs/Widget/Follow.php', + 'Zotlabs\\Widget\\Forums' => $baseDir . '/Zotlabs/Widget/Forums.php', + 'Zotlabs\\Widget\\Fullprofile' => $baseDir . '/Zotlabs/Widget/Fullprofile.php', + 'Zotlabs\\Widget\\Helpindex' => $baseDir . '/Zotlabs/Widget/Helpindex.php', + 'Zotlabs\\Widget\\Item' => $baseDir . '/Zotlabs/Widget/Item.php', + 'Zotlabs\\Widget\\Mailmenu' => $baseDir . '/Zotlabs/Widget/Mailmenu.php', + 'Zotlabs\\Widget\\Menu_preview' => $baseDir . '/Zotlabs/Widget/Menu_preview.php', + 'Zotlabs\\Widget\\Notes' => $baseDir . '/Zotlabs/Widget/Notes.php', + 'Zotlabs\\Widget\\Photo' => $baseDir . '/Zotlabs/Widget/Photo.php', + 'Zotlabs\\Widget\\Photo_albums' => $baseDir . '/Zotlabs/Widget/Photo_albums.php', + 'Zotlabs\\Widget\\Photo_rand' => $baseDir . '/Zotlabs/Widget/Photo_rand.php', + 'Zotlabs\\Widget\\Profile' => $baseDir . '/Zotlabs/Widget/Profile.php', + 'Zotlabs\\Widget\\Pubsites' => $baseDir . '/Zotlabs/Widget/Pubsites.php', + 'Zotlabs\\Widget\\Random_block' => $baseDir . '/Zotlabs/Widget/Random_block.php', + 'Zotlabs\\Widget\\Rating' => $baseDir . '/Zotlabs/Widget/Rating.php', + 'Zotlabs\\Widget\\Savedsearch' => $baseDir . '/Zotlabs/Widget/Savedsearch.php', + 'Zotlabs\\Widget\\Settings_menu' => $baseDir . '/Zotlabs/Widget/Settings_menu.php', + 'Zotlabs\\Widget\\Shortprofile' => $baseDir . '/Zotlabs/Widget/Shortprofile.php', + 'Zotlabs\\Widget\\Sitesearch' => $baseDir . '/Zotlabs/Widget/Sitesearch.php', + 'Zotlabs\\Widget\\Suggestedchats' => $baseDir . '/Zotlabs/Widget/Suggestedchats.php', + 'Zotlabs\\Widget\\Suggestions' => $baseDir . '/Zotlabs/Widget/Suggestions.php', + 'Zotlabs\\Widget\\Tagcloud' => $baseDir . '/Zotlabs/Widget/Tagcloud.php', + 'Zotlabs\\Widget\\Tagcloud_wall' => $baseDir . '/Zotlabs/Widget/Tagcloud_wall.php', + 'Zotlabs\\Widget\\Tasklist' => $baseDir . '/Zotlabs/Widget/Tasklist.php', + 'Zotlabs\\Widget\\Vcard' => $baseDir . '/Zotlabs/Widget/Vcard.php', + 'Zotlabs\\Widget\\Website_portation_tools' => $baseDir . '/Zotlabs/Widget/Website_portation_tools.php', + 'Zotlabs\\Widget\\Wiki_list' => $baseDir . '/Zotlabs/Widget/Wiki_list.php', + 'Zotlabs\\Widget\\Wiki_page_history' => $baseDir . '/Zotlabs/Widget/Wiki_page_history.php', + 'Zotlabs\\Widget\\Wiki_pages' => $baseDir . '/Zotlabs/Widget/Wiki_pages.php', + 'Zotlabs\\Widget\\Zcard' => $baseDir . '/Zotlabs/Widget/Zcard.php', 'Zotlabs\\Zot\\Auth' => $baseDir . '/Zotlabs/Zot/Auth.php', 'Zotlabs\\Zot\\DReport' => $baseDir . '/Zotlabs/Zot/DReport.php', 'Zotlabs\\Zot\\Finger' => $baseDir . '/Zotlabs/Zot/Finger.php', diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php index dfcde5bf4..d7070bbbf 100644 --- a/vendor/composer/autoload_namespaces.php +++ b/vendor/composer/autoload_namespaces.php @@ -6,6 +6,7 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( + 'SimplePie' => array($vendorDir . '/simplepie/simplepie/library'), 'OAuth2' => array($vendorDir . '/bshaffer/oauth2-server-php/src'), 'Michelf' => array($vendorDir . '/michelf/php-markdown'), 'HTMLPurifier' => array($vendorDir . '/ezyang/htmlpurifier/library'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 026276b2f..6c000a27b 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -112,6 +112,13 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d ); public static $prefixesPsr0 = array ( + 'S' => + array ( + 'SimplePie' => + array ( + 0 => __DIR__ . '/..' . '/simplepie/simplepie/library', + ), + ), 'O' => array ( 'OAuth2' => @@ -453,8 +460,6 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php', 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php', 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php', - 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', - 'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php', 'Sabre\\CalDAV\\Backend\\AbstractBackend' => __DIR__ . '/..' . '/sabre/dav/lib/CalDAV/Backend/AbstractBackend.php', 'Sabre\\CalDAV\\Backend\\BackendInterface' => __DIR__ . '/..' . '/sabre/dav/lib/CalDAV/Backend/BackendInterface.php', 'Sabre\\CalDAV\\Backend\\NotificationSupport' => __DIR__ . '/..' . '/sabre/dav/lib/CalDAV/Backend/NotificationSupport.php', @@ -793,6 +798,41 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Sabre\\Xml\\Writer' => __DIR__ . '/..' . '/sabre/xml/lib/Writer.php', 'Sabre\\Xml\\XmlDeserializable' => __DIR__ . '/..' . '/sabre/xml/lib/XmlDeserializable.php', 'Sabre\\Xml\\XmlSerializable' => __DIR__ . '/..' . '/sabre/xml/lib/XmlSerializable.php', + 'SimplePie' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie.php', + 'SimplePie_Author' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Author.php', + 'SimplePie_Cache' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Cache.php', + 'SimplePie_Cache_Base' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Cache/Base.php', + 'SimplePie_Cache_DB' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Cache/DB.php', + 'SimplePie_Cache_File' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Cache/File.php', + 'SimplePie_Cache_Memcache' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Cache/Memcache.php', + 'SimplePie_Cache_Memcached' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Cache/Memcached.php', + 'SimplePie_Cache_MySQL' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Cache/MySQL.php', + 'SimplePie_Cache_Redis' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Cache/Redis.php', + 'SimplePie_Caption' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Caption.php', + 'SimplePie_Category' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Category.php', + 'SimplePie_Content_Type_Sniffer' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php', + 'SimplePie_Copyright' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Copyright.php', + 'SimplePie_Core' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Core.php', + 'SimplePie_Credit' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Credit.php', + 'SimplePie_Decode_HTML_Entities' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php', + 'SimplePie_Enclosure' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Enclosure.php', + 'SimplePie_Exception' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Exception.php', + 'SimplePie_File' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/File.php', + 'SimplePie_HTTP_Parser' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/HTTP/Parser.php', + 'SimplePie_IRI' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/IRI.php', + 'SimplePie_Item' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Item.php', + 'SimplePie_Locator' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Locator.php', + 'SimplePie_Misc' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Misc.php', + 'SimplePie_Net_IPv6' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Net/IPv6.php', + 'SimplePie_Parse_Date' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Parse/Date.php', + 'SimplePie_Parser' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Parser.php', + 'SimplePie_Rating' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Rating.php', + 'SimplePie_Registry' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Registry.php', + 'SimplePie_Restriction' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Restriction.php', + 'SimplePie_Sanitize' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Sanitize.php', + 'SimplePie_Source' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/Source.php', + 'SimplePie_XML_Declaration_Parser' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php', + 'SimplePie_gzdecode' => __DIR__ . '/..' . '/simplepie/simplepie/library/SimplePie/gzdecode.php', 'Zotlabs\\Access\\AccessList' => __DIR__ . '/../..' . '/Zotlabs/Access/AccessList.php', 'Zotlabs\\Access\\PermissionLimits' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionLimits.php', 'Zotlabs\\Access\\PermissionRoles' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionRoles.php', @@ -829,9 +869,11 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Lib\\Cache' => __DIR__ . '/../..' . '/Zotlabs/Lib/Cache.php', 'Zotlabs\\Lib\\Chatroom' => __DIR__ . '/../..' . '/Zotlabs/Lib/Chatroom.php', 'Zotlabs\\Lib\\Config' => __DIR__ . '/../..' . '/Zotlabs/Lib/Config.php', + 'Zotlabs\\Lib\\DB_Upgrade' => __DIR__ . '/../..' . '/Zotlabs/Lib/DB_Upgrade.php', 'Zotlabs\\Lib\\Enotify' => __DIR__ . '/../..' . '/Zotlabs/Lib/Enotify.php', 'Zotlabs\\Lib\\ExtendedZip' => __DIR__ . '/../..' . '/Zotlabs/Lib/ExtendedZip.php', 'Zotlabs\\Lib\\IConfig' => __DIR__ . '/../..' . '/Zotlabs/Lib/IConfig.php', + 'Zotlabs\\Lib\\MarkdownSoap' => __DIR__ . '/../..' . '/Zotlabs/Lib/MarkdownSoap.php', 'Zotlabs\\Lib\\NativeWiki' => __DIR__ . '/../..' . '/Zotlabs/Lib/NativeWiki.php', 'Zotlabs\\Lib\\NativeWikiPage' => __DIR__ . '/../..' . '/Zotlabs/Lib/NativeWikiPage.php', 'Zotlabs\\Lib\\PConfig' => __DIR__ . '/../..' . '/Zotlabs/Lib/PConfig.php', @@ -1047,6 +1089,58 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Zotlabs\\Web\\SessionHandler' => __DIR__ . '/../..' . '/Zotlabs/Web/SessionHandler.php', 'Zotlabs\\Web\\SubModule' => __DIR__ . '/../..' . '/Zotlabs/Web/SubModule.php', 'Zotlabs\\Web\\WebServer' => __DIR__ . '/../..' . '/Zotlabs/Web/WebServer.php', + 'Zotlabs\\Widget\\Activity' => __DIR__ . '/../..' . '/Zotlabs/Widget/Activity.php', + 'Zotlabs\\Widget\\Admin' => __DIR__ . '/../..' . '/Zotlabs/Widget/Admin.php', + 'Zotlabs\\Widget\\Affinity' => __DIR__ . '/../..' . '/Zotlabs/Widget/Affinity.php', + 'Zotlabs\\Widget\\Album' => __DIR__ . '/../..' . '/Zotlabs/Widget/Album.php', + 'Zotlabs\\Widget\\Appcategories' => __DIR__ . '/../..' . '/Zotlabs/Widget/Appcategories.php', + 'Zotlabs\\Widget\\Appcloud' => __DIR__ . '/../..' . '/Zotlabs/Widget/Appcloud.php', + 'Zotlabs\\Widget\\Archive' => __DIR__ . '/../..' . '/Zotlabs/Widget/Archive.php', + 'Zotlabs\\Widget\\Bookmarkedchats' => __DIR__ . '/../..' . '/Zotlabs/Widget/Bookmarkedchats.php', + 'Zotlabs\\Widget\\Catcloud_wall' => __DIR__ . '/../..' . '/Zotlabs/Widget/Catcloud_wall.php', + 'Zotlabs\\Widget\\Categories' => __DIR__ . '/../..' . '/Zotlabs/Widget/Categories.php', + 'Zotlabs\\Widget\\Chatroom_list' => __DIR__ . '/../..' . '/Zotlabs/Widget/Chatroom_list.php', + 'Zotlabs\\Widget\\Chatroom_members' => __DIR__ . '/../..' . '/Zotlabs/Widget/Chatroom_members.php', + 'Zotlabs\\Widget\\Clock' => __DIR__ . '/../..' . '/Zotlabs/Widget/Clock.php', + 'Zotlabs\\Widget\\Collections' => __DIR__ . '/../..' . '/Zotlabs/Widget/Collections.php', + 'Zotlabs\\Widget\\Conversations' => __DIR__ . '/../..' . '/Zotlabs/Widget/Conversations.php', + 'Zotlabs\\Widget\\Cover_photo' => __DIR__ . '/../..' . '/Zotlabs/Widget/Cover_photo.php', + 'Zotlabs\\Widget\\Design_tools' => __DIR__ . '/../..' . '/Zotlabs/Widget/Design_tools.php', + 'Zotlabs\\Widget\\Dirsort' => __DIR__ . '/../..' . '/Zotlabs/Widget/Dirsort.php', + 'Zotlabs\\Widget\\Dirtags' => __DIR__ . '/../..' . '/Zotlabs/Widget/Dirtags.php', + 'Zotlabs\\Widget\\Eventstools' => __DIR__ . '/../..' . '/Zotlabs/Widget/Eventstools.php', + 'Zotlabs\\Widget\\Filer' => __DIR__ . '/../..' . '/Zotlabs/Widget/Filer.php', + 'Zotlabs\\Widget\\Findpeople' => __DIR__ . '/../..' . '/Zotlabs/Widget/Findpeople.php', + 'Zotlabs\\Widget\\Follow' => __DIR__ . '/../..' . '/Zotlabs/Widget/Follow.php', + 'Zotlabs\\Widget\\Forums' => __DIR__ . '/../..' . '/Zotlabs/Widget/Forums.php', + 'Zotlabs\\Widget\\Fullprofile' => __DIR__ . '/../..' . '/Zotlabs/Widget/Fullprofile.php', + 'Zotlabs\\Widget\\Helpindex' => __DIR__ . '/../..' . '/Zotlabs/Widget/Helpindex.php', + 'Zotlabs\\Widget\\Item' => __DIR__ . '/../..' . '/Zotlabs/Widget/Item.php', + 'Zotlabs\\Widget\\Mailmenu' => __DIR__ . '/../..' . '/Zotlabs/Widget/Mailmenu.php', + 'Zotlabs\\Widget\\Menu_preview' => __DIR__ . '/../..' . '/Zotlabs/Widget/Menu_preview.php', + 'Zotlabs\\Widget\\Notes' => __DIR__ . '/../..' . '/Zotlabs/Widget/Notes.php', + 'Zotlabs\\Widget\\Photo' => __DIR__ . '/../..' . '/Zotlabs/Widget/Photo.php', + 'Zotlabs\\Widget\\Photo_albums' => __DIR__ . '/../..' . '/Zotlabs/Widget/Photo_albums.php', + 'Zotlabs\\Widget\\Photo_rand' => __DIR__ . '/../..' . '/Zotlabs/Widget/Photo_rand.php', + 'Zotlabs\\Widget\\Profile' => __DIR__ . '/../..' . '/Zotlabs/Widget/Profile.php', + 'Zotlabs\\Widget\\Pubsites' => __DIR__ . '/../..' . '/Zotlabs/Widget/Pubsites.php', + 'Zotlabs\\Widget\\Random_block' => __DIR__ . '/../..' . '/Zotlabs/Widget/Random_block.php', + 'Zotlabs\\Widget\\Rating' => __DIR__ . '/../..' . '/Zotlabs/Widget/Rating.php', + 'Zotlabs\\Widget\\Savedsearch' => __DIR__ . '/../..' . '/Zotlabs/Widget/Savedsearch.php', + 'Zotlabs\\Widget\\Settings_menu' => __DIR__ . '/../..' . '/Zotlabs/Widget/Settings_menu.php', + 'Zotlabs\\Widget\\Shortprofile' => __DIR__ . '/../..' . '/Zotlabs/Widget/Shortprofile.php', + 'Zotlabs\\Widget\\Sitesearch' => __DIR__ . '/../..' . '/Zotlabs/Widget/Sitesearch.php', + 'Zotlabs\\Widget\\Suggestedchats' => __DIR__ . '/../..' . '/Zotlabs/Widget/Suggestedchats.php', + 'Zotlabs\\Widget\\Suggestions' => __DIR__ . '/../..' . '/Zotlabs/Widget/Suggestions.php', + 'Zotlabs\\Widget\\Tagcloud' => __DIR__ . '/../..' . '/Zotlabs/Widget/Tagcloud.php', + 'Zotlabs\\Widget\\Tagcloud_wall' => __DIR__ . '/../..' . '/Zotlabs/Widget/Tagcloud_wall.php', + 'Zotlabs\\Widget\\Tasklist' => __DIR__ . '/../..' . '/Zotlabs/Widget/Tasklist.php', + 'Zotlabs\\Widget\\Vcard' => __DIR__ . '/../..' . '/Zotlabs/Widget/Vcard.php', + 'Zotlabs\\Widget\\Website_portation_tools' => __DIR__ . '/../..' . '/Zotlabs/Widget/Website_portation_tools.php', + 'Zotlabs\\Widget\\Wiki_list' => __DIR__ . '/../..' . '/Zotlabs/Widget/Wiki_list.php', + 'Zotlabs\\Widget\\Wiki_page_history' => __DIR__ . '/../..' . '/Zotlabs/Widget/Wiki_page_history.php', + 'Zotlabs\\Widget\\Wiki_pages' => __DIR__ . '/../..' . '/Zotlabs/Widget/Wiki_pages.php', + 'Zotlabs\\Widget\\Zcard' => __DIR__ . '/../..' . '/Zotlabs/Widget/Zcard.php', 'Zotlabs\\Zot\\Auth' => __DIR__ . '/../..' . '/Zotlabs/Zot/Auth.php', 'Zotlabs\\Zot\\DReport' => __DIR__ . '/../..' . '/Zotlabs/Zot/DReport.php', 'Zotlabs\\Zot\\Finger' => __DIR__ . '/../..' . '/Zotlabs/Zot/Finger.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index a3975f731..6ed03bb4f 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -742,5 +742,70 @@ "keywords": [ "html" ] + }, + { + "name": "simplepie/simplepie", + "version": "dev-master", + "version_normalized": "9999999-dev", + "source": { + "type": "git", + "url": "https://github.com/simplepie/simplepie.git", + "reference": "59e7204610d3a8989822eba1c0cbf1d1680bd10d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/simplepie/simplepie/zipball/59e7204610d3a8989822eba1c0cbf1d1680bd10d", + "reference": "59e7204610d3a8989822eba1c0cbf1d1680bd10d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4 || ~5" + }, + "suggest": { + "mf2/mf2": "Microformat module that allows for parsing HTML for microformats" + }, + "time": "2017-04-06T03:36:48+00:00", + "type": "library", + "installation-source": "source", + "autoload": { + "psr-0": { + "SimplePie": "library" + } + }, + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ryan Parman", + "homepage": "http://ryanparman.com/", + "role": "Creator, alumnus developer" + }, + { + "name": "Geoffrey Sneddon", + "homepage": "http://gsnedders.com/", + "role": "Alumnus developer" + }, + { + "name": "Ryan McCue", + "email": "me@ryanmccue.info", + "homepage": "http://ryanmccue.info/", + "role": "Developer" + } + ], + "description": "A simple Atom/RSS parsing library for PHP", + "homepage": "http://simplepie.org/", + "keywords": [ + "atom", + "feeds", + "rss" + ], + "support": { + "source": "https://github.com/simplepie/simplepie/tree/master", + "issues": "https://github.com/simplepie/simplepie/issues" + } } ] diff --git a/library/simplepie/LICENSE.txt b/vendor/simplepie/simplepie/LICENSE.txt index a822a4bd9..a822a4bd9 100644 --- a/library/simplepie/LICENSE.txt +++ b/vendor/simplepie/simplepie/LICENSE.txt diff --git a/vendor/simplepie/simplepie/README.markdown b/vendor/simplepie/simplepie/README.markdown new file mode 100644 index 000000000..c346204d0 --- /dev/null +++ b/vendor/simplepie/simplepie/README.markdown @@ -0,0 +1,113 @@ +SimplePie +========= + +SimplePie is a very fast and easy-to-use class, written in PHP, that puts the +'simple' back into 'really simple syndication'. Flexible enough to suit +beginners and veterans alike, SimplePie is focused on [speed, ease of use, +compatibility and standards compliance][what_is]. + +[what_is]: http://simplepie.org/wiki/faq/what_is_simplepie + + +Requirements +------------ +* PHP 5.3.0+ (5.3.6+ recommended since SimplePie 1.4.2) + * Support for PHP 5.2 stopped in branch `one-dot-three` + * Support for PHP 4 stopped in branch `one-dot-two` +* libxml2 (certain 2.7.x releases are too buggy for words, and will crash) +* One of iconv, mbstring or intl extensions +* cURL or fsockopen() +* PCRE support + + +What comes in the package? +-------------------------- +1. `library/` - SimplePie classes for use with the autoloader +2. `autoloader.php` - The SimplePie Autoloader if you want to use the separate + file version. +3. `README.markdown` - This document. +4. `LICENSE.txt` - A copy of the BSD license. +5. `compatibility_test/` - The SimplePie compatibility test that checks your + server for required settings. +6. `demo/` - A basic feed reader demo that shows off some of SimplePie's more + noticeable features. +7. `idn/` - A third-party library that SimplePie can optionally use to + understand Internationalized Domain Names (IDNs). +8. `build/` - Scripts related to generating pieces of SimplePie +9. `test/` - SimplePie's unit test suite. + +### Where's `simplepie.inc`? +Since SimplePie 1.3, we've split the classes into separate files to make it easier +to maintain and use. + +If you'd like a single monolithic file, you can run `php build/compile.php` to +generate `SimplePie.compiled.php`. + +To start the demo +----------------- +1. Upload this package to your webserver. +2. Make sure that the cache folder inside of the demo folder is server-writable. +3. Navigate your browser to the demo folder. + + +Need support? +------------- +For further setup and install documentation, function references, etc., visit +[the wiki][wiki]. If you're using the latest version off GitHub, you can also +check out the [API documentation][]. + +If you can't find an answer to your question in the documentation, head on over +to one of our [support channels][]. For bug reports and feature requests, visit +the [issue tracker][]. + +[API documentation]: http://dev.simplepie.org/api/ +[wiki]: http://simplepie.org/wiki/ +[support channels]: http://simplepie.org/support/ +[issue tracker]: http://github.com/simplepie/simplepie/issues + + +Project status +-------------- +SimplePie is currently maintained by Malcolm Blaney. + +As an open source project, SimplePie is maintained on a somewhat sporadic basis. +This means that feature requests may not be fulfilled straight away, as time has +to be prioritized. + +If you'd like to contribute to SimplePie, the best way to get started is to fork +the project on GitHub and send pull requests for patches. When doing so, please +be aware of our [coding standards][]. + +[coding standards]: http://simplepie.org/wiki/misc/coding_standards + + +Authors and contributors +------------------------ +### Current +* [Malcolm Blaney][] (Maintainer, support) + +### Alumni +* [Ryan McCue][] (developer, support) +* [Ryan Parman][] (Creator, developer, evangelism, support) +* [Geoffrey Sneddon][] (Lead developer) +* [Michael Shipley][] (Submitter of patches, support) +* [Steve Minutillo][] (Submitter of patches) + +[Malcolm Blaney]: https://unicyclic.com/mal +[Ryan McCue]: http://ryanmccue.info +[Ryan Parman]: http://ryanparman.com +[Geoffrey Sneddon]: http://gsnedders.com +[Michael Shipley]: http://michaelpshipley.com +[Steve Minutillo]: http://minutillo.com/steve/ + + +### Contributors +For a complete list of contributors: + +1. Pull down the latest SimplePie code +2. In the `simplepie` directory, run `git shortlog -ns` + + +License +------- +[New BSD license](http://www.opensource.org/licenses/BSD-3-Clause) diff --git a/vendor/simplepie/simplepie/autoloader.php b/vendor/simplepie/simplepie/autoloader.php new file mode 100644 index 000000000..fd7690da2 --- /dev/null +++ b/vendor/simplepie/simplepie/autoloader.php @@ -0,0 +1,85 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + + +// autoloader +spl_autoload_register(array(new SimplePie_Autoloader(), 'autoload')); + +if (!class_exists('SimplePie')) +{ + trigger_error('Autoloader not registered properly', E_USER_ERROR); +} + +/** + * Autoloader class + * + * @package SimplePie + * @subpackage API + */ +class SimplePie_Autoloader +{ + /** + * Constructor + */ + public function __construct() + { + $this->path = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'library'; + } + + /** + * Autoloader + * + * @param string $class The name of the class to attempt to load. + */ + public function autoload($class) + { + // Only load the class if it starts with "SimplePie" + if (strpos($class, 'SimplePie') !== 0) + { + return; + } + + $filename = $this->path . DIRECTORY_SEPARATOR . str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php'; + include $filename; + } +}
\ No newline at end of file diff --git a/vendor/simplepie/simplepie/composer.json b/vendor/simplepie/simplepie/composer.json new file mode 100644 index 000000000..b5965b26f --- /dev/null +++ b/vendor/simplepie/simplepie/composer.json @@ -0,0 +1,40 @@ +{ + "name": "simplepie/simplepie", + "description": "A simple Atom/RSS parsing library for PHP", + "type": "library", + "keywords": ["rss", "atom", "feeds"], + "homepage": "http://simplepie.org/", + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Ryan Parman", + "homepage": "http://ryanparman.com/", + "role": "Creator, alumnus developer" + }, + { + "name": "Geoffrey Sneddon", + "homepage": "http://gsnedders.com/", + "role": "Alumnus developer" + }, + { + "name": "Ryan McCue", + "email": "me@ryanmccue.info", + "homepage": "http://ryanmccue.info/", + "role": "Developer" + } + ], + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4 || ~5" + }, + "suggest": { + "mf2/mf2": "Microformat module that allows for parsing HTML for microformats" + }, + "autoload": { + "psr-0": { + "SimplePie": "library" + } + } +} diff --git a/library/simplepie/db.sql b/vendor/simplepie/simplepie/db.sql index 13f504c21..879382940 100644 --- a/library/simplepie/db.sql +++ b/vendor/simplepie/simplepie/db.sql @@ -17,6 +17,8 @@ CREATE INDEX feed_id ON items(feed_id); /* MySQL */ +--- Don't paste this to create tables, since SimplePie will create +--- tables by its own. CREATE TABLE `cache_data` ( `id` TEXT CHARACTER SET utf8 NOT NULL, `items` SMALLINT NOT NULL DEFAULT 0, @@ -30,7 +32,7 @@ CREATE TABLE `cache_data` ( CREATE TABLE `items` ( `feed_id` TEXT CHARACTER SET utf8 NOT NULL, `id` TEXT CHARACTER SET utf8 NOT NULL, - `data` TEXT CHARACTER SET utf8 NOT NULL, + `data` MEDIUMBLOB NOT NULL, `posted` INT UNSIGNED NOT NULL, INDEX `feed_id` ( `feed_id`(125) diff --git a/library/simplepie/idn/LICENCE b/vendor/simplepie/simplepie/idn/LICENCE index 25a1d22df..25a1d22df 100644 --- a/library/simplepie/idn/LICENCE +++ b/vendor/simplepie/simplepie/idn/LICENCE diff --git a/library/simplepie/idn/ReadMe.txt b/vendor/simplepie/simplepie/idn/ReadMe.txt index 7ca8c7e6d..7ca8c7e6d 100644 --- a/library/simplepie/idn/ReadMe.txt +++ b/vendor/simplepie/simplepie/idn/ReadMe.txt diff --git a/library/simplepie/idn/idna_convert.class.php b/vendor/simplepie/simplepie/idn/idna_convert.class.php index ed2bae26d..eb9d5f516 100644 --- a/library/simplepie/idn/idna_convert.class.php +++ b/vendor/simplepie/simplepie/idn/idna_convert.class.php @@ -91,7 +91,7 @@ class idna_convert var $_strict_mode = false; // Behave strict or not // The constructor - function idna_convert($options = false) + function __construct($options = false) { $this->slast = $this->_sbase + $this->_lcount * $this->_vcount * $this->_tcount; if (function_exists('file_get_contents')) { @@ -966,4 +966,4 @@ class Net_IDNA_php4 extends idna_convert } } -?>
\ No newline at end of file +?> diff --git a/library/simplepie/idn/npdata.ser b/vendor/simplepie/simplepie/idn/npdata.ser index d7ce6d03f..d7ce6d03f 100644 --- a/library/simplepie/idn/npdata.ser +++ b/vendor/simplepie/simplepie/idn/npdata.ser diff --git a/vendor/simplepie/simplepie/library/SimplePie.php b/vendor/simplepie/simplepie/library/SimplePie.php new file mode 100755 index 000000000..890497204 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie.php @@ -0,0 +1,3303 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @version 1.4.3 + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * SimplePie Name + */ +define('SIMPLEPIE_NAME', 'SimplePie'); + +/** + * SimplePie Version + */ +define('SIMPLEPIE_VERSION', '1.4.3'); + +/** + * SimplePie Build + * @todo Hardcode for release (there's no need to have to call SimplePie_Misc::get_build() only every load of simplepie.inc) + */ +define('SIMPLEPIE_BUILD', gmdate('YmdHis', SimplePie_Misc::get_build())); + +/** + * SimplePie Website URL + */ +define('SIMPLEPIE_URL', 'http://simplepie.org'); + +/** + * SimplePie Useragent + * @see SimplePie::set_useragent() + */ +define('SIMPLEPIE_USERAGENT', SIMPLEPIE_NAME . '/' . SIMPLEPIE_VERSION . ' (Feed Parser; ' . SIMPLEPIE_URL . '; Allow like Gecko) Build/' . SIMPLEPIE_BUILD); + +/** + * SimplePie Linkback + */ +define('SIMPLEPIE_LINKBACK', '<a href="' . SIMPLEPIE_URL . '" title="' . SIMPLEPIE_NAME . ' ' . SIMPLEPIE_VERSION . '">' . SIMPLEPIE_NAME . '</a>'); + +/** + * No Autodiscovery + * @see SimplePie::set_autodiscovery_level() + */ +define('SIMPLEPIE_LOCATOR_NONE', 0); + +/** + * Feed Link Element Autodiscovery + * @see SimplePie::set_autodiscovery_level() + */ +define('SIMPLEPIE_LOCATOR_AUTODISCOVERY', 1); + +/** + * Local Feed Extension Autodiscovery + * @see SimplePie::set_autodiscovery_level() + */ +define('SIMPLEPIE_LOCATOR_LOCAL_EXTENSION', 2); + +/** + * Local Feed Body Autodiscovery + * @see SimplePie::set_autodiscovery_level() + */ +define('SIMPLEPIE_LOCATOR_LOCAL_BODY', 4); + +/** + * Remote Feed Extension Autodiscovery + * @see SimplePie::set_autodiscovery_level() + */ +define('SIMPLEPIE_LOCATOR_REMOTE_EXTENSION', 8); + +/** + * Remote Feed Body Autodiscovery + * @see SimplePie::set_autodiscovery_level() + */ +define('SIMPLEPIE_LOCATOR_REMOTE_BODY', 16); + +/** + * All Feed Autodiscovery + * @see SimplePie::set_autodiscovery_level() + */ +define('SIMPLEPIE_LOCATOR_ALL', 31); + +/** + * No known feed type + */ +define('SIMPLEPIE_TYPE_NONE', 0); + +/** + * RSS 0.90 + */ +define('SIMPLEPIE_TYPE_RSS_090', 1); + +/** + * RSS 0.91 (Netscape) + */ +define('SIMPLEPIE_TYPE_RSS_091_NETSCAPE', 2); + +/** + * RSS 0.91 (Userland) + */ +define('SIMPLEPIE_TYPE_RSS_091_USERLAND', 4); + +/** + * RSS 0.91 (both Netscape and Userland) + */ +define('SIMPLEPIE_TYPE_RSS_091', 6); + +/** + * RSS 0.92 + */ +define('SIMPLEPIE_TYPE_RSS_092', 8); + +/** + * RSS 0.93 + */ +define('SIMPLEPIE_TYPE_RSS_093', 16); + +/** + * RSS 0.94 + */ +define('SIMPLEPIE_TYPE_RSS_094', 32); + +/** + * RSS 1.0 + */ +define('SIMPLEPIE_TYPE_RSS_10', 64); + +/** + * RSS 2.0 + */ +define('SIMPLEPIE_TYPE_RSS_20', 128); + +/** + * RDF-based RSS + */ +define('SIMPLEPIE_TYPE_RSS_RDF', 65); + +/** + * Non-RDF-based RSS (truly intended as syndication format) + */ +define('SIMPLEPIE_TYPE_RSS_SYNDICATION', 190); + +/** + * All RSS + */ +define('SIMPLEPIE_TYPE_RSS_ALL', 255); + +/** + * Atom 0.3 + */ +define('SIMPLEPIE_TYPE_ATOM_03', 256); + +/** + * Atom 1.0 + */ +define('SIMPLEPIE_TYPE_ATOM_10', 512); + +/** + * All Atom + */ +define('SIMPLEPIE_TYPE_ATOM_ALL', 768); + +/** + * All feed types + */ +define('SIMPLEPIE_TYPE_ALL', 1023); + +/** + * No construct + */ +define('SIMPLEPIE_CONSTRUCT_NONE', 0); + +/** + * Text construct + */ +define('SIMPLEPIE_CONSTRUCT_TEXT', 1); + +/** + * HTML construct + */ +define('SIMPLEPIE_CONSTRUCT_HTML', 2); + +/** + * XHTML construct + */ +define('SIMPLEPIE_CONSTRUCT_XHTML', 4); + +/** + * base64-encoded construct + */ +define('SIMPLEPIE_CONSTRUCT_BASE64', 8); + +/** + * IRI construct + */ +define('SIMPLEPIE_CONSTRUCT_IRI', 16); + +/** + * A construct that might be HTML + */ +define('SIMPLEPIE_CONSTRUCT_MAYBE_HTML', 32); + +/** + * All constructs + */ +define('SIMPLEPIE_CONSTRUCT_ALL', 63); + +/** + * Don't change case + */ +define('SIMPLEPIE_SAME_CASE', 1); + +/** + * Change to lowercase + */ +define('SIMPLEPIE_LOWERCASE', 2); + +/** + * Change to uppercase + */ +define('SIMPLEPIE_UPPERCASE', 4); + +/** + * PCRE for HTML attributes + */ +define('SIMPLEPIE_PCRE_HTML_ATTRIBUTE', '((?:[\x09\x0A\x0B\x0C\x0D\x20]+[^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"(?:[^"]*)"|\'(?:[^\']*)\'|(?:[^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?)*)[\x09\x0A\x0B\x0C\x0D\x20]*'); + +/** + * PCRE for XML attributes + */ +define('SIMPLEPIE_PCRE_XML_ATTRIBUTE', '((?:\s+(?:(?:[^\s:]+:)?[^\s:]+)\s*=\s*(?:"(?:[^"]*)"|\'(?:[^\']*)\'))*)\s*'); + +/** + * XML Namespace + */ +define('SIMPLEPIE_NAMESPACE_XML', 'http://www.w3.org/XML/1998/namespace'); + +/** + * Atom 1.0 Namespace + */ +define('SIMPLEPIE_NAMESPACE_ATOM_10', 'http://www.w3.org/2005/Atom'); + +/** + * Atom 0.3 Namespace + */ +define('SIMPLEPIE_NAMESPACE_ATOM_03', 'http://purl.org/atom/ns#'); + +/** + * RDF Namespace + */ +define('SIMPLEPIE_NAMESPACE_RDF', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'); + +/** + * RSS 0.90 Namespace + */ +define('SIMPLEPIE_NAMESPACE_RSS_090', 'http://my.netscape.com/rdf/simple/0.9/'); + +/** + * RSS 1.0 Namespace + */ +define('SIMPLEPIE_NAMESPACE_RSS_10', 'http://purl.org/rss/1.0/'); + +/** + * RSS 1.0 Content Module Namespace + */ +define('SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT', 'http://purl.org/rss/1.0/modules/content/'); + +/** + * RSS 2.0 Namespace + * (Stupid, I know, but I'm certain it will confuse people less with support.) + */ +define('SIMPLEPIE_NAMESPACE_RSS_20', ''); + +/** + * DC 1.0 Namespace + */ +define('SIMPLEPIE_NAMESPACE_DC_10', 'http://purl.org/dc/elements/1.0/'); + +/** + * DC 1.1 Namespace + */ +define('SIMPLEPIE_NAMESPACE_DC_11', 'http://purl.org/dc/elements/1.1/'); + +/** + * W3C Basic Geo (WGS84 lat/long) Vocabulary Namespace + */ +define('SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO', 'http://www.w3.org/2003/01/geo/wgs84_pos#'); + +/** + * GeoRSS Namespace + */ +define('SIMPLEPIE_NAMESPACE_GEORSS', 'http://www.georss.org/georss'); + +/** + * Media RSS Namespace + */ +define('SIMPLEPIE_NAMESPACE_MEDIARSS', 'http://search.yahoo.com/mrss/'); + +/** + * Wrong Media RSS Namespace. Caused by a long-standing typo in the spec. + */ +define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG', 'http://search.yahoo.com/mrss'); + +/** + * Wrong Media RSS Namespace #2. New namespace introduced in Media RSS 1.5. + */ +define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG2', 'http://video.search.yahoo.com/mrss'); + +/** + * Wrong Media RSS Namespace #3. A possible typo of the Media RSS 1.5 namespace. + */ +define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG3', 'http://video.search.yahoo.com/mrss/'); + +/** + * Wrong Media RSS Namespace #4. New spec location after the RSS Advisory Board takes it over, but not a valid namespace. + */ +define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG4', 'http://www.rssboard.org/media-rss'); + +/** + * Wrong Media RSS Namespace #5. A possible typo of the RSS Advisory Board URL. + */ +define('SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG5', 'http://www.rssboard.org/media-rss/'); + +/** + * iTunes RSS Namespace + */ +define('SIMPLEPIE_NAMESPACE_ITUNES', 'http://www.itunes.com/dtds/podcast-1.0.dtd'); + +/** + * XHTML Namespace + */ +define('SIMPLEPIE_NAMESPACE_XHTML', 'http://www.w3.org/1999/xhtml'); + +/** + * IANA Link Relations Registry + */ +define('SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY', 'http://www.iana.org/assignments/relation/'); + +/** + * No file source + */ +define('SIMPLEPIE_FILE_SOURCE_NONE', 0); + +/** + * Remote file source + */ +define('SIMPLEPIE_FILE_SOURCE_REMOTE', 1); + +/** + * Local file source + */ +define('SIMPLEPIE_FILE_SOURCE_LOCAL', 2); + +/** + * fsockopen() file source + */ +define('SIMPLEPIE_FILE_SOURCE_FSOCKOPEN', 4); + +/** + * cURL file source + */ +define('SIMPLEPIE_FILE_SOURCE_CURL', 8); + +/** + * file_get_contents() file source + */ +define('SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS', 16); + + + +/** + * SimplePie + * + * @package SimplePie + * @subpackage API + */ +class SimplePie +{ + /** + * @var array Raw data + * @access private + */ + public $data = array(); + + /** + * @var mixed Error string + * @access private + */ + public $error; + + /** + * @var object Instance of SimplePie_Sanitize (or other class) + * @see SimplePie::set_sanitize_class() + * @access private + */ + public $sanitize; + + /** + * @var string SimplePie Useragent + * @see SimplePie::set_useragent() + * @access private + */ + public $useragent = SIMPLEPIE_USERAGENT; + + /** + * @var string Feed URL + * @see SimplePie::set_feed_url() + * @access private + */ + public $feed_url; + + /** + * @var string Original feed URL, or new feed URL iff HTTP 301 Moved Permanently + * @see SimplePie::subscribe_url() + * @access private + */ + public $permanent_url = null; + + /** + * @var object Instance of SimplePie_File to use as a feed + * @see SimplePie::set_file() + * @access private + */ + public $file; + + /** + * @var string Raw feed data + * @see SimplePie::set_raw_data() + * @access private + */ + public $raw_data; + + /** + * @var int Timeout for fetching remote files + * @see SimplePie::set_timeout() + * @access private + */ + public $timeout = 10; + + /** + * @var array Custom curl options + * @see SimplePie::set_curl_options() + * @access private + */ + public $curl_options = array(); + + /** + * @var bool Forces fsockopen() to be used for remote files instead + * of cURL, even if a new enough version is installed + * @see SimplePie::force_fsockopen() + * @access private + */ + public $force_fsockopen = false; + + /** + * @var bool Force the given data/URL to be treated as a feed no matter what + * it appears like + * @see SimplePie::force_feed() + * @access private + */ + public $force_feed = false; + + /** + * @var bool Enable/Disable Caching + * @see SimplePie::enable_cache() + * @access private + */ + public $cache = true; + + /** + * @var bool Force SimplePie to fallback to expired cache, if enabled, + * when feed is unavailable. + * @see SimplePie::force_cache_fallback() + * @access private + */ + public $force_cache_fallback = false; + + /** + * @var int Cache duration (in seconds) + * @see SimplePie::set_cache_duration() + * @access private + */ + public $cache_duration = 3600; + + /** + * @var int Auto-discovery cache duration (in seconds) + * @see SimplePie::set_autodiscovery_cache_duration() + * @access private + */ + public $autodiscovery_cache_duration = 604800; // 7 Days. + + /** + * @var string Cache location (relative to executing script) + * @see SimplePie::set_cache_location() + * @access private + */ + public $cache_location = './cache'; + + /** + * @var string Function that creates the cache filename + * @see SimplePie::set_cache_name_function() + * @access private + */ + public $cache_name_function = 'md5'; + + /** + * @var bool Reorder feed by date descending + * @see SimplePie::enable_order_by_date() + * @access private + */ + public $order_by_date = true; + + /** + * @var mixed Force input encoding to be set to the follow value + * (false, or anything type-cast to false, disables this feature) + * @see SimplePie::set_input_encoding() + * @access private + */ + public $input_encoding = false; + + /** + * @var int Feed Autodiscovery Level + * @see SimplePie::set_autodiscovery_level() + * @access private + */ + public $autodiscovery = SIMPLEPIE_LOCATOR_ALL; + + /** + * Class registry object + * + * @var SimplePie_Registry + */ + public $registry; + + /** + * @var int Maximum number of feeds to check with autodiscovery + * @see SimplePie::set_max_checked_feeds() + * @access private + */ + public $max_checked_feeds = 10; + + /** + * @var array All the feeds found during the autodiscovery process + * @see SimplePie::get_all_discovered_feeds() + * @access private + */ + public $all_discovered_feeds = array(); + + /** + * @var string Web-accessible path to the handler_image.php file. + * @see SimplePie::set_image_handler() + * @access private + */ + public $image_handler = ''; + + /** + * @var array Stores the URLs when multiple feeds are being initialized. + * @see SimplePie::set_feed_url() + * @access private + */ + public $multifeed_url = array(); + + /** + * @var array Stores SimplePie objects when multiple feeds initialized. + * @access private + */ + public $multifeed_objects = array(); + + /** + * @var array Stores the get_object_vars() array for use with multifeeds. + * @see SimplePie::set_feed_url() + * @access private + */ + public $config_settings = null; + + /** + * @var integer Stores the number of items to return per-feed with multifeeds. + * @see SimplePie::set_item_limit() + * @access private + */ + public $item_limit = 0; + + /** + * @var bool Stores if last-modified and/or etag headers were sent with the + * request when checking a feed. + */ + public $check_modified = false; + + /** + * @var array Stores the default attributes to be stripped by strip_attributes(). + * @see SimplePie::strip_attributes() + * @access private + */ + public $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'); + + /** + * @var array Stores the default attributes to add to different tags by add_attributes(). + * @see SimplePie::add_attributes() + * @access private + */ + public $add_attributes = array('audio' => array('preload' => 'none'), 'iframe' => array('sandbox' => 'allow-scripts allow-same-origin'), 'video' => array('preload' => 'none')); + + /** + * @var array Stores the default tags to be stripped by strip_htmltags(). + * @see SimplePie::strip_htmltags() + * @access private + */ + public $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'); + + /** + * @var bool Should we throw exceptions, or use the old-style error property? + * @access private + */ + public $enable_exceptions = false; + + /** + * The SimplePie class contains feed level data and options + * + * To use SimplePie, create the SimplePie object with no parameters. You can + * then set configuration options using the provided methods. After setting + * them, you must initialise the feed using $feed->init(). At that point the + * object's methods and properties will be available to you. + * + * Previously, it was possible to pass in the feed URL along with cache + * options directly into the constructor. This has been removed as of 1.3 as + * it caused a lot of confusion. + * + * @since 1.0 Preview Release + */ + public function __construct() + { + if (version_compare(PHP_VERSION, '5.3', '<')) + { + trigger_error('Please upgrade to PHP 5.3 or newer.'); + die(); + } + + // Other objects, instances created here so we can set options on them + $this->sanitize = new SimplePie_Sanitize(); + $this->registry = new SimplePie_Registry(); + + if (func_num_args() > 0) + { + $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING; + trigger_error('Passing parameters to the constructor is no longer supported. Please use set_feed_url(), set_cache_location(), and set_cache_duration() directly.', $level); + + $args = func_get_args(); + switch (count($args)) { + case 3: + $this->set_cache_duration($args[2]); + case 2: + $this->set_cache_location($args[1]); + case 1: + $this->set_feed_url($args[0]); + $this->init(); + } + } + } + + /** + * Used for converting object to a string + */ + public function __toString() + { + return md5(serialize($this->data)); + } + + /** + * Remove items that link back to this before destroying this object + */ + public function __destruct() + { + if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode')) + { + if (!empty($this->data['items'])) + { + foreach ($this->data['items'] as $item) + { + $item->__destruct(); + } + unset($item, $this->data['items']); + } + if (!empty($this->data['ordered_items'])) + { + foreach ($this->data['ordered_items'] as $item) + { + $item->__destruct(); + } + unset($item, $this->data['ordered_items']); + } + } + } + + /** + * Force the given data/URL to be treated as a feed + * + * This tells SimplePie to ignore the content-type provided by the server. + * Be careful when using this option, as it will also disable autodiscovery. + * + * @since 1.1 + * @param bool $enable Force the given data/URL to be treated as a feed + */ + public function force_feed($enable = false) + { + $this->force_feed = (bool) $enable; + } + + /** + * Set the URL of the feed you want to parse + * + * This allows you to enter the URL of the feed you want to parse, or the + * website you want to try to use auto-discovery on. This takes priority + * over any set raw data. + * + * You can set multiple feeds to mash together by passing an array instead + * of a string for the $url. Remember that with each additional feed comes + * additional processing and resources. + * + * @since 1.0 Preview Release + * @see set_raw_data() + * @param string|array $url This is the URL (or array of URLs) that you want to parse. + */ + public function set_feed_url($url) + { + $this->multifeed_url = array(); + if (is_array($url)) + { + foreach ($url as $value) + { + $this->multifeed_url[] = $this->registry->call('Misc', 'fix_protocol', array($value, 1)); + } + } + else + { + $this->feed_url = $this->registry->call('Misc', 'fix_protocol', array($url, 1)); + $this->permanent_url = $this->feed_url; + } + } + + /** + * Set an instance of {@see SimplePie_File} to use as a feed + * + * @param SimplePie_File &$file + * @return bool True on success, false on failure + */ + public function set_file(&$file) + { + if ($file instanceof SimplePie_File) + { + $this->feed_url = $file->url; + $this->permanent_url = $this->feed_url; + $this->file =& $file; + return true; + } + return false; + } + + /** + * Set the raw XML data to parse + * + * Allows you to use a string of RSS/Atom data instead of a remote feed. + * + * If you have a feed available as a string in PHP, you can tell SimplePie + * to parse that data string instead of a remote feed. Any set feed URL + * takes precedence. + * + * @since 1.0 Beta 3 + * @param string $data RSS or Atom data as a string. + * @see set_feed_url() + */ + public function set_raw_data($data) + { + $this->raw_data = $data; + } + + /** + * Set the the default timeout for fetching remote feeds + * + * This allows you to change the maximum time the feed's server to respond + * and send the feed back. + * + * @since 1.0 Beta 3 + * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed. + */ + public function set_timeout($timeout = 10) + { + $this->timeout = (int) $timeout; + } + + /** + * Set custom curl options + * + * This allows you to change default curl options + * + * @since 1.0 Beta 3 + * @param array $curl_options Curl options to add to default settings + */ + public function set_curl_options(array $curl_options = array()) + { + $this->curl_options = $curl_options; + } + + /** + * Force SimplePie to use fsockopen() instead of cURL + * + * @since 1.0 Beta 3 + * @param bool $enable Force fsockopen() to be used + */ + public function force_fsockopen($enable = false) + { + $this->force_fsockopen = (bool) $enable; + } + + /** + * Enable/disable caching in SimplePie. + * + * This option allows you to disable caching all-together in SimplePie. + * However, disabling the cache can lead to longer load times. + * + * @since 1.0 Preview Release + * @param bool $enable Enable caching + */ + public function enable_cache($enable = true) + { + $this->cache = (bool) $enable; + } + + /** + * SimplePie to continue to fall back to expired cache, if enabled, when + * feed is unavailable. + * + * This tells SimplePie to ignore any file errors and fall back to cache + * instead. This only works if caching is enabled and cached content + * still exists. + + * @param bool $enable Force use of cache on fail. + */ + public function force_cache_fallback($enable = false) + { + $this->force_cache_fallback= (bool) $enable; + } + + /** + * Set the length of time (in seconds) that the contents of a feed will be + * cached + * + * @param int $seconds The feed content cache duration + */ + public function set_cache_duration($seconds = 3600) + { + $this->cache_duration = (int) $seconds; + } + + /** + * Set the length of time (in seconds) that the autodiscovered feed URL will + * be cached + * + * @param int $seconds The autodiscovered feed URL cache duration. + */ + public function set_autodiscovery_cache_duration($seconds = 604800) + { + $this->autodiscovery_cache_duration = (int) $seconds; + } + + /** + * Set the file system location where the cached files should be stored + * + * @param string $location The file system location. + */ + public function set_cache_location($location = './cache') + { + $this->cache_location = (string) $location; + } + + /** + * Set whether feed items should be sorted into reverse chronological order + * + * @param bool $enable Sort as reverse chronological order. + */ + public function enable_order_by_date($enable = true) + { + $this->order_by_date = (bool) $enable; + } + + /** + * Set the character encoding used to parse the feed + * + * This overrides the encoding reported by the feed, however it will fall + * back to the normal encoding detection if the override fails + * + * @param string $encoding Character encoding + */ + public function set_input_encoding($encoding = false) + { + if ($encoding) + { + $this->input_encoding = (string) $encoding; + } + else + { + $this->input_encoding = false; + } + } + + /** + * Set how much feed autodiscovery to do + * + * @see SIMPLEPIE_LOCATOR_NONE + * @see SIMPLEPIE_LOCATOR_AUTODISCOVERY + * @see SIMPLEPIE_LOCATOR_LOCAL_EXTENSION + * @see SIMPLEPIE_LOCATOR_LOCAL_BODY + * @see SIMPLEPIE_LOCATOR_REMOTE_EXTENSION + * @see SIMPLEPIE_LOCATOR_REMOTE_BODY + * @see SIMPLEPIE_LOCATOR_ALL + * @param int $level Feed Autodiscovery Level (level can be a combination of the above constants, see bitwise OR operator) + */ + public function set_autodiscovery_level($level = SIMPLEPIE_LOCATOR_ALL) + { + $this->autodiscovery = (int) $level; + } + + /** + * Get the class registry + * + * Use this to override SimplePie's default classes + * @see SimplePie_Registry + * @return SimplePie_Registry + */ + public function &get_registry() + { + return $this->registry; + } + + /**#@+ + * Useful when you are overloading or extending SimplePie's default classes. + * + * @deprecated Use {@see get_registry()} instead + * @link http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.extends PHP5 extends documentation + * @param string $class Name of custom class + * @return boolean True on success, false otherwise + */ + /** + * Set which class SimplePie uses for caching + */ + public function set_cache_class($class = 'SimplePie_Cache') + { + return $this->registry->register('Cache', $class, true); + } + + /** + * Set which class SimplePie uses for auto-discovery + */ + public function set_locator_class($class = 'SimplePie_Locator') + { + return $this->registry->register('Locator', $class, true); + } + + /** + * Set which class SimplePie uses for XML parsing + */ + public function set_parser_class($class = 'SimplePie_Parser') + { + return $this->registry->register('Parser', $class, true); + } + + /** + * Set which class SimplePie uses for remote file fetching + */ + public function set_file_class($class = 'SimplePie_File') + { + return $this->registry->register('File', $class, true); + } + + /** + * Set which class SimplePie uses for data sanitization + */ + public function set_sanitize_class($class = 'SimplePie_Sanitize') + { + return $this->registry->register('Sanitize', $class, true); + } + + /** + * Set which class SimplePie uses for handling feed items + */ + public function set_item_class($class = 'SimplePie_Item') + { + return $this->registry->register('Item', $class, true); + } + + /** + * Set which class SimplePie uses for handling author data + */ + public function set_author_class($class = 'SimplePie_Author') + { + return $this->registry->register('Author', $class, true); + } + + /** + * Set which class SimplePie uses for handling category data + */ + public function set_category_class($class = 'SimplePie_Category') + { + return $this->registry->register('Category', $class, true); + } + + /** + * Set which class SimplePie uses for feed enclosures + */ + public function set_enclosure_class($class = 'SimplePie_Enclosure') + { + return $this->registry->register('Enclosure', $class, true); + } + + /** + * Set which class SimplePie uses for `<media:text>` captions + */ + public function set_caption_class($class = 'SimplePie_Caption') + { + return $this->registry->register('Caption', $class, true); + } + + /** + * Set which class SimplePie uses for `<media:copyright>` + */ + public function set_copyright_class($class = 'SimplePie_Copyright') + { + return $this->registry->register('Copyright', $class, true); + } + + /** + * Set which class SimplePie uses for `<media:credit>` + */ + public function set_credit_class($class = 'SimplePie_Credit') + { + return $this->registry->register('Credit', $class, true); + } + + /** + * Set which class SimplePie uses for `<media:rating>` + */ + public function set_rating_class($class = 'SimplePie_Rating') + { + return $this->registry->register('Rating', $class, true); + } + + /** + * Set which class SimplePie uses for `<media:restriction>` + */ + public function set_restriction_class($class = 'SimplePie_Restriction') + { + return $this->registry->register('Restriction', $class, true); + } + + /** + * Set which class SimplePie uses for content-type sniffing + */ + public function set_content_type_sniffer_class($class = 'SimplePie_Content_Type_Sniffer') + { + return $this->registry->register('Content_Type_Sniffer', $class, true); + } + + /** + * Set which class SimplePie uses item sources + */ + public function set_source_class($class = 'SimplePie_Source') + { + return $this->registry->register('Source', $class, true); + } + /**#@-*/ + + /** + * Set the user agent string + * + * @param string $ua New user agent string. + */ + public function set_useragent($ua = SIMPLEPIE_USERAGENT) + { + $this->useragent = (string) $ua; + } + + /** + * Set callback function to create cache filename with + * + * @param mixed $function Callback function + */ + public function set_cache_name_function($function = 'md5') + { + if (is_callable($function)) + { + $this->cache_name_function = $function; + } + } + + /** + * Set options to make SP as fast as possible + * + * Forgoes a substantial amount of data sanitization in favor of speed. This + * turns SimplePie into a dumb parser of feeds. + * + * @param bool $set Whether to set them or not + */ + public function set_stupidly_fast($set = false) + { + if ($set) + { + $this->enable_order_by_date(false); + $this->remove_div(false); + $this->strip_comments(false); + $this->strip_htmltags(false); + $this->strip_attributes(false); + $this->add_attributes(false); + $this->set_image_handler(false); + } + } + + /** + * Set maximum number of feeds to check with autodiscovery + * + * @param int $max Maximum number of feeds to check + */ + public function set_max_checked_feeds($max = 10) + { + $this->max_checked_feeds = (int) $max; + } + + public function remove_div($enable = true) + { + $this->sanitize->remove_div($enable); + } + + public function strip_htmltags($tags = '', $encode = null) + { + if ($tags === '') + { + $tags = $this->strip_htmltags; + } + $this->sanitize->strip_htmltags($tags); + if ($encode !== null) + { + $this->sanitize->encode_instead_of_strip($tags); + } + } + + public function encode_instead_of_strip($enable = true) + { + $this->sanitize->encode_instead_of_strip($enable); + } + + public function strip_attributes($attribs = '') + { + if ($attribs === '') + { + $attribs = $this->strip_attributes; + } + $this->sanitize->strip_attributes($attribs); + } + + public function add_attributes($attribs = '') + { + if ($attribs === '') + { + $attribs = $this->add_attributes; + } + $this->sanitize->add_attributes($attribs); + } + + /** + * Set the output encoding + * + * Allows you to override SimplePie's output to match that of your webpage. + * This is useful for times when your webpages are not being served as + * UTF-8. This setting will be obeyed by {@see handle_content_type()}, and + * is similar to {@see set_input_encoding()}. + * + * It should be noted, however, that not all character encodings can support + * all characters. If your page is being served as ISO-8859-1 and you try + * to display a Japanese feed, you'll likely see garbled characters. + * Because of this, it is highly recommended to ensure that your webpages + * are served as UTF-8. + * + * The number of supported character encodings depends on whether your web + * host supports {@link http://php.net/mbstring mbstring}, + * {@link http://php.net/iconv iconv}, or both. See + * {@link http://simplepie.org/wiki/faq/Supported_Character_Encodings} for + * more information. + * + * @param string $encoding + */ + public function set_output_encoding($encoding = 'UTF-8') + { + $this->sanitize->set_output_encoding($encoding); + } + + public function strip_comments($strip = false) + { + $this->sanitize->strip_comments($strip); + } + + /** + * Set element/attribute key/value pairs of HTML attributes + * containing URLs that need to be resolved relative to the feed + * + * Defaults to |a|@href, |area|@href, |blockquote|@cite, |del|@cite, + * |form|@action, |img|@longdesc, |img|@src, |input|@src, |ins|@cite, + * |q|@cite + * + * @since 1.0 + * @param array|null $element_attribute Element/attribute key/value pairs, null for default + */ + public function set_url_replacements($element_attribute = null) + { + $this->sanitize->set_url_replacements($element_attribute); + } + + /** + * Set the handler to enable the display of cached images. + * + * @param str $page Web-accessible path to the handler_image.php file. + * @param str $qs The query string that the value should be passed to. + */ + public function set_image_handler($page = false, $qs = 'i') + { + if ($page !== false) + { + $this->sanitize->set_image_handler($page . '?' . $qs . '='); + } + else + { + $this->image_handler = ''; + } + } + + /** + * Set the limit for items returned per-feed with multifeeds + * + * @param integer $limit The maximum number of items to return. + */ + public function set_item_limit($limit = 0) + { + $this->item_limit = (int) $limit; + } + + /** + * Enable throwing exceptions + * + * @param boolean $enable Should we throw exceptions, or use the old-style error property? + */ + public function enable_exceptions($enable = true) + { + $this->enable_exceptions = $enable; + } + + /** + * Initialize the feed object + * + * This is what makes everything happen. Period. This is where all of the + * configuration options get processed, feeds are fetched, cached, and + * parsed, and all of that other good stuff. + * + * @return boolean True if successful, false otherwise + */ + public function init() + { + // Check absolute bare minimum requirements. + if (!extension_loaded('xml') || !extension_loaded('pcre')) + { + $this->error = 'XML or PCRE extensions not loaded!'; + return false; + } + // Then check the xml extension is sane (i.e., libxml 2.7.x issue on PHP < 5.2.9 and libxml 2.7.0 to 2.7.2 on any version) if we don't have xmlreader. + elseif (!extension_loaded('xmlreader')) + { + static $xml_is_sane = null; + if ($xml_is_sane === null) + { + $parser_check = xml_parser_create(); + xml_parse_into_struct($parser_check, '<foo>&</foo>', $values); + xml_parser_free($parser_check); + $xml_is_sane = isset($values[0]['value']); + } + if (!$xml_is_sane) + { + return false; + } + } + + if (method_exists($this->sanitize, 'set_registry')) + { + $this->sanitize->set_registry($this->registry); + } + + // Pass whatever was set with config options over to the sanitizer. + // Pass the classes in for legacy support; new classes should use the registry instead + $this->sanitize->pass_cache_data($this->cache, $this->cache_location, $this->cache_name_function, $this->registry->get_class('Cache')); + $this->sanitize->pass_file_data($this->registry->get_class('File'), $this->timeout, $this->useragent, $this->force_fsockopen, $this->curl_options); + + if (!empty($this->multifeed_url)) + { + $i = 0; + $success = 0; + $this->multifeed_objects = array(); + $this->error = array(); + foreach ($this->multifeed_url as $url) + { + $this->multifeed_objects[$i] = clone $this; + $this->multifeed_objects[$i]->set_feed_url($url); + $single_success = $this->multifeed_objects[$i]->init(); + $success |= $single_success; + if (!$single_success) + { + $this->error[$i] = $this->multifeed_objects[$i]->error(); + } + $i++; + } + return (bool) $success; + } + elseif ($this->feed_url === null && $this->raw_data === null) + { + return false; + } + + $this->error = null; + $this->data = array(); + $this->check_modified = false; + $this->multifeed_objects = array(); + $cache = false; + + if ($this->feed_url !== null) + { + $parsed_feed_url = $this->registry->call('Misc', 'parse_url', array($this->feed_url)); + + // Decide whether to enable caching + if ($this->cache && $parsed_feed_url['scheme'] !== '') + { + $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc')); + } + + // Fetch the data via SimplePie_File into $this->raw_data + if (($fetched = $this->fetch_data($cache)) === true) + { + return true; + } + elseif ($fetched === false) { + return false; + } + + list($headers, $sniffed) = $fetched; + } + + // Empty response check + if(empty($this->raw_data)){ + $this->error = "A feed could not be found at `$this->feed_url`. Empty body."; + $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__)); + return false; + } + + // Set up array of possible encodings + $encodings = array(); + + // First check to see if input has been overridden. + if ($this->input_encoding !== false) + { + $encodings[] = strtoupper($this->input_encoding); + } + + $application_types = array('application/xml', 'application/xml-dtd', 'application/xml-external-parsed-entity'); + $text_types = array('text/xml', 'text/xml-external-parsed-entity'); + + // RFC 3023 (only applies to sniffed content) + if (isset($sniffed)) + { + if (in_array($sniffed, $application_types) || substr($sniffed, 0, 12) === 'application/' && substr($sniffed, -4) === '+xml') + { + if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset)) + { + $encodings[] = strtoupper($charset[1]); + } + $encodings = array_merge($encodings, $this->registry->call('Misc', 'xml_encoding', array($this->raw_data, &$this->registry))); + $encodings[] = 'UTF-8'; + } + elseif (in_array($sniffed, $text_types) || substr($sniffed, 0, 5) === 'text/' && substr($sniffed, -4) === '+xml') + { + if (isset($headers['content-type']) && preg_match('/;\x20?charset=([^;]*)/i', $headers['content-type'], $charset)) + { + $encodings[] = strtoupper($charset[1]); + } + $encodings[] = 'US-ASCII'; + } + // Text MIME-type default + elseif (substr($sniffed, 0, 5) === 'text/') + { + $encodings[] = 'UTF-8'; + } + } + + // Fallback to XML 1.0 Appendix F.1/UTF-8/ISO-8859-1 + $encodings = array_merge($encodings, $this->registry->call('Misc', 'xml_encoding', array($this->raw_data, &$this->registry))); + $encodings[] = 'UTF-8'; + $encodings[] = 'ISO-8859-1'; + + // There's no point in trying an encoding twice + $encodings = array_unique($encodings); + + // Loop through each possible encoding, till we return something, or run out of possibilities + foreach ($encodings as $encoding) + { + // Change the encoding to UTF-8 (as we always use UTF-8 internally) + if ($utf8_data = $this->registry->call('Misc', 'change_encoding', array($this->raw_data, $encoding, 'UTF-8'))) + { + // Create new parser + $parser = $this->registry->create('Parser'); + + // If it's parsed fine + if ($parser->parse($utf8_data, 'UTF-8', $this->permanent_url)) + { + $this->data = $parser->get_data(); + if (!($this->get_type() & ~SIMPLEPIE_TYPE_NONE)) + { + $this->error = "A feed could not be found at `$this->feed_url`. This does not appear to be a valid RSS or Atom feed."; + $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__)); + return false; + } + + if (isset($headers)) + { + $this->data['headers'] = $headers; + } + $this->data['build'] = SIMPLEPIE_BUILD; + + // Cache the file if caching is enabled + if ($cache && !$cache->save($this)) + { + trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING); + } + return true; + } + } + } + + if (isset($parser)) + { + // We have an error, just set SimplePie_Misc::error to it and quit + $this->error = $this->feed_url; + $this->error .= sprintf(' is invalid XML, likely due to invalid characters. XML error: %s at line %d, column %d', $parser->get_error_string(), $parser->get_current_line(), $parser->get_current_column()); + } + else + { + $this->error = 'The data could not be converted to UTF-8.'; + if (!extension_loaded('mbstring') && !extension_loaded('iconv') && !class_exists('\UConverter')) { + $this->error .= ' You MUST have either the iconv, mbstring or intl (PHP 5.5+) extension installed and enabled.'; + } else { + $missingExtensions = array(); + if (!extension_loaded('iconv')) { + $missingExtensions[] = 'iconv'; + } + if (!extension_loaded('mbstring')) { + $missingExtensions[] = 'mbstring'; + } + if (!class_exists('\UConverter')) { + $missingExtensions[] = 'intl (PHP 5.5+)'; + } + $this->error .= ' Try installing/enabling the ' . implode(' or ', $missingExtensions) . ' extension.'; + } + } + + $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__)); + + return false; + } + + /** + * Fetch the data via SimplePie_File + * + * If the data is already cached, attempt to fetch it from there instead + * @param SimplePie_Cache|false $cache Cache handler, or false to not load from the cache + * @return array|true Returns true if the data was loaded from the cache, or an array of HTTP headers and sniffed type + */ + protected function fetch_data(&$cache) + { + // If it's enabled, use the cache + if ($cache) + { + // Load the Cache + $this->data = $cache->load(); + if (!empty($this->data)) + { + // If the cache is for an outdated build of SimplePie + if (!isset($this->data['build']) || $this->data['build'] !== SIMPLEPIE_BUILD) + { + $cache->unlink(); + $this->data = array(); + } + // If we've hit a collision just rerun it with caching disabled + elseif (isset($this->data['url']) && $this->data['url'] !== $this->feed_url) + { + $cache = false; + $this->data = array(); + } + // If we've got a non feed_url stored (if the page isn't actually a feed, or is a redirect) use that URL. + elseif (isset($this->data['feed_url'])) + { + // If the autodiscovery cache is still valid use it. + if ($cache->mtime() + $this->autodiscovery_cache_duration > time()) + { + // Do not need to do feed autodiscovery yet. + if ($this->data['feed_url'] !== $this->data['url']) + { + $this->set_feed_url($this->data['feed_url']); + return $this->init(); + } + + $cache->unlink(); + $this->data = array(); + } + } + // Check if the cache has been updated + elseif ($cache->mtime() + $this->cache_duration < time()) + { + // Want to know if we tried to send last-modified and/or etag headers + // when requesting this file. (Note that it's up to the file to + // support this, but we don't always send the headers either.) + $this->check_modified = true; + if (isset($this->data['headers']['last-modified']) || isset($this->data['headers']['etag'])) + { + $headers = array( + 'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1', + ); + if (isset($this->data['headers']['last-modified'])) + { + $headers['if-modified-since'] = $this->data['headers']['last-modified']; + } + if (isset($this->data['headers']['etag'])) + { + $headers['if-none-match'] = $this->data['headers']['etag']; + } + + $file = $this->registry->create('File', array($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen, $this->curl_options)); + + if ($file->success) + { + if ($file->status_code === 304) + { + // Set raw_data to false here too, to signify that the cache + // is still valid. + $this->raw_data = false; + $cache->touch(); + return true; + } + } + else + { + $this->check_modified = false; + if($this->force_cache_fallback) + { + $cache->touch(); + return true; + } + + unset($file); + } + } + } + // If the cache is still valid, just return true + else + { + $this->raw_data = false; + return true; + } + } + // If the cache is empty, delete it + else + { + $cache->unlink(); + $this->data = array(); + } + } + // If we don't already have the file (it'll only exist if we've opened it to check if the cache has been modified), open it. + if (!isset($file)) + { + if ($this->file instanceof SimplePie_File && $this->file->url === $this->feed_url) + { + $file =& $this->file; + } + else + { + $headers = array( + 'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1', + ); + $file = $this->registry->create('File', array($this->feed_url, $this->timeout, 5, $headers, $this->useragent, $this->force_fsockopen, $this->curl_options)); + } + } + // If the file connection has an error, set SimplePie::error to that and quit + if (!$file->success && !($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300))) + { + $this->error = $file->error; + return !empty($this->data); + } + + if (!$this->force_feed) + { + // Check if the supplied URL is a feed, if it isn't, look for it. + $locate = $this->registry->create('Locator', array(&$file, $this->timeout, $this->useragent, $this->max_checked_feeds)); + + if (!$locate->is_feed($file)) + { + $copyStatusCode = $file->status_code; + $copyContentType = $file->headers['content-type']; + try + { + $microformats = false; + if (function_exists('Mf2\parse')) { + // Check for both h-feed and h-entry, as both a feed with no entries + // and a list of entries without an h-feed wrapper are both valid. + $position = 0; + while ($position = strpos($file->body, 'h-feed', $position)) + { + $start = $position < 200 ? 0 : $position - 200; + $check = substr($file->body, $start, 400); + if ($microformats = preg_match('/class="[^"]*h-feed/', $check)) + { + break; + } + $position += 7; + } + $position = 0; + while ($position = strpos($file->body, 'h-entry', $position)) + { + $start = $position < 200 ? 0 : $position - 200; + $check = substr($file->body, $start, 400); + if ($microformats = preg_match('/class="[^"]*h-entry/', $check)) + { + break; + } + $position += 7; + } + } + // Now also do feed discovery, but if an h-entry was found don't + // overwrite the current value of file. + $discovered = $locate->find($this->autodiscovery, + $this->all_discovered_feeds); + if ($microformats) + { + if ($hub = $locate->get_rel_link('hub')) + { + $self = $locate->get_rel_link('self'); + $this->store_links($file, $hub, $self); + } + // Push the current file onto all_discovered feeds so the user can + // be shown this as one of the options. + if (isset($this->all_discovered_feeds)) { + $this->all_discovered_feeds[] = $file; + } + } + else + { + if ($discovered) + { + $file = $discovered; + } + else + { + // We need to unset this so that if SimplePie::set_file() has + // been called that object is untouched + unset($file); + $this->error = "A feed could not be found at `$this->feed_url`; the status code is `$copyStatusCode` and content-type is `$copyContentType`"; + $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, __FILE__, __LINE__)); + return false; + } + } + } + catch (SimplePie_Exception $e) + { + // We need to unset this so that if SimplePie::set_file() has been called that object is untouched + unset($file); + // This is usually because DOMDocument doesn't exist + $this->error = $e->getMessage(); + $this->registry->call('Misc', 'error', array($this->error, E_USER_NOTICE, $e->getFile(), $e->getLine())); + return false; + } + if ($cache) + { + $this->data = array('url' => $this->feed_url, 'feed_url' => $file->url, 'build' => SIMPLEPIE_BUILD); + if (!$cache->save($this)) + { + trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING); + } + $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc')); + } + $this->feed_url = $file->url; + } + $locate = null; + } + + $this->raw_data = $file->body; + $this->permanent_url = $file->permanent_url; + $headers = $file->headers; + $sniffer = $this->registry->create('Content_Type_Sniffer', array(&$file)); + $sniffed = $sniffer->get_type(); + + return array($headers, $sniffed); + } + + /** + * Get the error message for the occured error + * + * @return string|array Error message, or array of messages for multifeeds + */ + public function error() + { + return $this->error; + } + + /** + * Get the raw XML + * + * This is the same as the old `$feed->enable_xml_dump(true)`, but returns + * the data instead of printing it. + * + * @return string|boolean Raw XML data, false if the cache is used + */ + public function get_raw_data() + { + return $this->raw_data; + } + + /** + * Get the character encoding used for output + * + * @since Preview Release + * @return string + */ + public function get_encoding() + { + return $this->sanitize->output_encoding; + } + + /** + * Send the content-type header with correct encoding + * + * This method ensures that the SimplePie-enabled page is being served with + * the correct {@link http://www.iana.org/assignments/media-types/ mime-type} + * and character encoding HTTP headers (character encoding determined by the + * {@see set_output_encoding} config option). + * + * This won't work properly if any content or whitespace has already been + * sent to the browser, because it relies on PHP's + * {@link http://php.net/header header()} function, and these are the + * circumstances under which the function works. + * + * Because it's setting these settings for the entire page (as is the nature + * of HTTP headers), this should only be used once per page (again, at the + * top). + * + * @param string $mime MIME type to serve the page as + */ + public function handle_content_type($mime = 'text/html') + { + if (!headers_sent()) + { + $header = "Content-type: $mime;"; + if ($this->get_encoding()) + { + $header .= ' charset=' . $this->get_encoding(); + } + else + { + $header .= ' charset=UTF-8'; + } + header($header); + } + } + + /** + * Get the type of the feed + * + * This returns a SIMPLEPIE_TYPE_* constant, which can be tested against + * using {@link http://php.net/language.operators.bitwise bitwise operators} + * + * @since 0.8 (usage changed to using constants in 1.0) + * @see SIMPLEPIE_TYPE_NONE Unknown. + * @see SIMPLEPIE_TYPE_RSS_090 RSS 0.90. + * @see SIMPLEPIE_TYPE_RSS_091_NETSCAPE RSS 0.91 (Netscape). + * @see SIMPLEPIE_TYPE_RSS_091_USERLAND RSS 0.91 (Userland). + * @see SIMPLEPIE_TYPE_RSS_091 RSS 0.91. + * @see SIMPLEPIE_TYPE_RSS_092 RSS 0.92. + * @see SIMPLEPIE_TYPE_RSS_093 RSS 0.93. + * @see SIMPLEPIE_TYPE_RSS_094 RSS 0.94. + * @see SIMPLEPIE_TYPE_RSS_10 RSS 1.0. + * @see SIMPLEPIE_TYPE_RSS_20 RSS 2.0.x. + * @see SIMPLEPIE_TYPE_RSS_RDF RDF-based RSS. + * @see SIMPLEPIE_TYPE_RSS_SYNDICATION Non-RDF-based RSS (truly intended as syndication format). + * @see SIMPLEPIE_TYPE_RSS_ALL Any version of RSS. + * @see SIMPLEPIE_TYPE_ATOM_03 Atom 0.3. + * @see SIMPLEPIE_TYPE_ATOM_10 Atom 1.0. + * @see SIMPLEPIE_TYPE_ATOM_ALL Any version of Atom. + * @see SIMPLEPIE_TYPE_ALL Any known/supported feed type. + * @return int SIMPLEPIE_TYPE_* constant + */ + public function get_type() + { + if (!isset($this->data['type'])) + { + $this->data['type'] = SIMPLEPIE_TYPE_ALL; + if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'])) + { + $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_10; + } + elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'])) + { + $this->data['type'] &= SIMPLEPIE_TYPE_ATOM_03; + } + elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'])) + { + if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['channel']) + || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['image']) + || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']) + || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_10]['textinput'])) + { + $this->data['type'] &= SIMPLEPIE_TYPE_RSS_10; + } + if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['channel']) + || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['image']) + || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']) + || isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_090]['textinput'])) + { + $this->data['type'] &= SIMPLEPIE_TYPE_RSS_090; + } + } + elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'])) + { + $this->data['type'] &= SIMPLEPIE_TYPE_RSS_ALL; + if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['attribs']['']['version'])) + { + switch (trim($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['attribs']['']['version'])) + { + case '0.91': + $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091; + if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['skiphours']['hour'][0]['data'])) + { + switch (trim($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['skiphours']['hour'][0]['data'])) + { + case '0': + $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_NETSCAPE; + break; + + case '24': + $this->data['type'] &= SIMPLEPIE_TYPE_RSS_091_USERLAND; + break; + } + } + break; + + case '0.92': + $this->data['type'] &= SIMPLEPIE_TYPE_RSS_092; + break; + + case '0.93': + $this->data['type'] &= SIMPLEPIE_TYPE_RSS_093; + break; + + case '0.94': + $this->data['type'] &= SIMPLEPIE_TYPE_RSS_094; + break; + + case '2.0': + $this->data['type'] &= SIMPLEPIE_TYPE_RSS_20; + break; + } + } + } + else + { + $this->data['type'] = SIMPLEPIE_TYPE_NONE; + } + } + return $this->data['type']; + } + + /** + * Get the URL for the feed + * + * When the 'permanent' mode is enabled, returns the original feed URL, + * except in the case of an `HTTP 301 Moved Permanently` status response, + * in which case the location of the first redirection is returned. + * + * When the 'permanent' mode is disabled (default), + * may or may not be different from the URL passed to {@see set_feed_url()}, + * depending on whether auto-discovery was used. + * + * @since Preview Release (previously called `get_feed_url()` since SimplePie 0.8.) + * @todo Support <itunes:new-feed-url> + * @todo Also, |atom:link|@rel=self + * @param bool $permanent Permanent mode to return only the original URL or the first redirection + * iff it is a 301 redirection + * @return string|null + */ + public function subscribe_url($permanent = false) + { + if ($permanent) + { + if ($this->permanent_url !== null) + { + // sanitize encodes ampersands which are required when used in a url. + return str_replace('&', '&', + $this->sanitize($this->permanent_url, + SIMPLEPIE_CONSTRUCT_IRI)); + } + } + else + { + if ($this->feed_url !== null) + { + return str_replace('&', '&', + $this->sanitize($this->feed_url, + SIMPLEPIE_CONSTRUCT_IRI)); + } + } + return null; + } + + /** + * Get data for an feed-level element + * + * This method allows you to get access to ANY element/attribute that is a + * sub-element of the opening feed tag. + * + * The return value is an indexed array of elements matching the given + * namespace and tag name. Each element has `attribs`, `data` and `child` + * subkeys. For `attribs` and `child`, these contain namespace subkeys. + * `attribs` then has one level of associative name => value data (where + * `value` is a string) after the namespace. `child` has tag-indexed keys + * after the namespace, each member of which is an indexed array matching + * this same format. + * + * For example: + * <pre> + * // This is probably a bad example because we already support + * // <media:content> natively, but it shows you how to parse through + * // the nodes. + * $group = $item->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group'); + * $content = $group[0]['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content']; + * $file = $content[0]['attribs']['']['url']; + * echo $file; + * </pre> + * + * @since 1.0 + * @see http://simplepie.org/wiki/faq/supported_xml_namespaces + * @param string $namespace The URL of the XML namespace of the elements you're trying to access + * @param string $tag Tag name + * @return array + */ + public function get_feed_tags($namespace, $tag) + { + $type = $this->get_type(); + if ($type & SIMPLEPIE_TYPE_ATOM_10) + { + if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag])) + { + return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['child'][$namespace][$tag]; + } + } + if ($type & SIMPLEPIE_TYPE_ATOM_03) + { + if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag])) + { + return $this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['child'][$namespace][$tag]; + } + } + if ($type & SIMPLEPIE_TYPE_RSS_RDF) + { + if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag])) + { + return $this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['child'][$namespace][$tag]; + } + } + if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION) + { + if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][$namespace][$tag])) + { + return $this->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][$namespace][$tag]; + } + } + return null; + } + + /** + * Get data for an channel-level element + * + * This method allows you to get access to ANY element/attribute in the + * channel/header section of the feed. + * + * See {@see SimplePie::get_feed_tags()} for a description of the return value + * + * @since 1.0 + * @see http://simplepie.org/wiki/faq/supported_xml_namespaces + * @param string $namespace The URL of the XML namespace of the elements you're trying to access + * @param string $tag Tag name + * @return array + */ + public function get_channel_tags($namespace, $tag) + { + $type = $this->get_type(); + if ($type & SIMPLEPIE_TYPE_ATOM_ALL) + { + if ($return = $this->get_feed_tags($namespace, $tag)) + { + return $return; + } + } + if ($type & SIMPLEPIE_TYPE_RSS_10) + { + if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'channel')) + { + if (isset($channel[0]['child'][$namespace][$tag])) + { + return $channel[0]['child'][$namespace][$tag]; + } + } + } + if ($type & SIMPLEPIE_TYPE_RSS_090) + { + if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'channel')) + { + if (isset($channel[0]['child'][$namespace][$tag])) + { + return $channel[0]['child'][$namespace][$tag]; + } + } + } + if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION) + { + if ($channel = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'channel')) + { + if (isset($channel[0]['child'][$namespace][$tag])) + { + return $channel[0]['child'][$namespace][$tag]; + } + } + } + return null; + } + + /** + * Get data for an channel-level element + * + * This method allows you to get access to ANY element/attribute in the + * image/logo section of the feed. + * + * See {@see SimplePie::get_feed_tags()} for a description of the return value + * + * @since 1.0 + * @see http://simplepie.org/wiki/faq/supported_xml_namespaces + * @param string $namespace The URL of the XML namespace of the elements you're trying to access + * @param string $tag Tag name + * @return array + */ + public function get_image_tags($namespace, $tag) + { + $type = $this->get_type(); + if ($type & SIMPLEPIE_TYPE_RSS_10) + { + if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'image')) + { + if (isset($image[0]['child'][$namespace][$tag])) + { + return $image[0]['child'][$namespace][$tag]; + } + } + } + if ($type & SIMPLEPIE_TYPE_RSS_090) + { + if ($image = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'image')) + { + if (isset($image[0]['child'][$namespace][$tag])) + { + return $image[0]['child'][$namespace][$tag]; + } + } + } + if ($type & SIMPLEPIE_TYPE_RSS_SYNDICATION) + { + if ($image = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'image')) + { + if (isset($image[0]['child'][$namespace][$tag])) + { + return $image[0]['child'][$namespace][$tag]; + } + } + } + return null; + } + + /** + * Get the base URL value from the feed + * + * Uses `<xml:base>` if available, otherwise uses the first link in the + * feed, or failing that, the URL of the feed itself. + * + * @see get_link + * @see subscribe_url + * + * @param array $element + * @return string + */ + public function get_base($element = array()) + { + if (!($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION) && !empty($element['xml_base_explicit']) && isset($element['xml_base'])) + { + return $element['xml_base']; + } + elseif ($this->get_link() !== null) + { + return $this->get_link(); + } + else + { + return $this->subscribe_url(); + } + } + + /** + * Sanitize feed data + * + * @access private + * @see SimplePie_Sanitize::sanitize() + * @param string $data Data to sanitize + * @param int $type One of the SIMPLEPIE_CONSTRUCT_* constants + * @param string $base Base URL to resolve URLs against + * @return string Sanitized data + */ + public function sanitize($data, $type, $base = '') + { + try + { + return $this->sanitize->sanitize($data, $type, $base); + } + catch (SimplePie_Exception $e) + { + if (!$this->enable_exceptions) + { + $this->error = $e->getMessage(); + $this->registry->call('Misc', 'error', array($this->error, E_USER_WARNING, $e->getFile(), $e->getLine())); + return ''; + } + + throw $e; + } + } + + /** + * Get the title of the feed + * + * Uses `<atom:title>`, `<title>` or `<dc:title>` + * + * @since 1.0 (previously called `get_feed_title` since 0.8) + * @return string|null + */ + public function get_title() + { + if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + return null; + } + } + + /** + * Get a category for the feed + * + * @since Unknown + * @param int $key The category that you want to return. Remember that arrays begin with 0, not 1 + * @return SimplePie_Category|null + */ + public function get_category($key = 0) + { + $categories = $this->get_categories(); + if (isset($categories[$key])) + { + return $categories[$key]; + } + else + { + return null; + } + } + + /** + * Get all categories for the feed + * + * Uses `<atom:category>`, `<category>` or `<dc:subject>` + * + * @since Unknown + * @return array|null List of {@see SimplePie_Category} objects + */ + public function get_categories() + { + $categories = array(); + + foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category) + { + $term = null; + $scheme = null; + $label = null; + if (isset($category['attribs']['']['term'])) + { + $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($category['attribs']['']['scheme'])) + { + $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($category['attribs']['']['label'])) + { + $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $categories[] = $this->registry->create('Category', array($term, $scheme, $label)); + } + foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category) + { + // This is really the label, but keep this as the term also for BC. + // Label will also work on retrieving because that falls back to term. + $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); + if (isset($category['attribs']['']['domain'])) + { + $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $scheme = null; + } + $categories[] = $this->registry->create('Category', array($term, $scheme, null)); + } + foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category) + { + $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null)); + } + foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category) + { + $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null)); + } + + if (!empty($categories)) + { + return array_unique($categories); + } + else + { + return null; + } + } + + /** + * Get an author for the feed + * + * @since 1.1 + * @param int $key The author that you want to return. Remember that arrays begin with 0, not 1 + * @return SimplePie_Author|null + */ + public function get_author($key = 0) + { + $authors = $this->get_authors(); + if (isset($authors[$key])) + { + return $authors[$key]; + } + else + { + return null; + } + } + + /** + * Get all authors for the feed + * + * Uses `<atom:author>`, `<author>`, `<dc:creator>` or `<itunes:author>` + * + * @since 1.1 + * @return array|null List of {@see SimplePie_Author} objects + */ + public function get_authors() + { + $authors = array(); + foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author) + { + $name = null; + $uri = null; + $email = null; + if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) + { + $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) + { + $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); + } + if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) + { + $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if ($name !== null || $email !== null || $uri !== null) + { + $authors[] = $this->registry->create('Author', array($name, $uri, $email)); + } + } + if ($author = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author')) + { + $name = null; + $url = null; + $email = null; + if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) + { + $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) + { + $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); + } + if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) + { + $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if ($name !== null || $email !== null || $url !== null) + { + $authors[] = $this->registry->create('Author', array($name, $url, $email)); + } + } + foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author) + { + $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null)); + } + foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author) + { + $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null)); + } + foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author) + { + $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null)); + } + + if (!empty($authors)) + { + return array_unique($authors); + } + else + { + return null; + } + } + + /** + * Get a contributor for the feed + * + * @since 1.1 + * @param int $key The contrbutor that you want to return. Remember that arrays begin with 0, not 1 + * @return SimplePie_Author|null + */ + public function get_contributor($key = 0) + { + $contributors = $this->get_contributors(); + if (isset($contributors[$key])) + { + return $contributors[$key]; + } + else + { + return null; + } + } + + /** + * Get all contributors for the feed + * + * Uses `<atom:contributor>` + * + * @since 1.1 + * @return array|null List of {@see SimplePie_Author} objects + */ + public function get_contributors() + { + $contributors = array(); + foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor) + { + $name = null; + $uri = null; + $email = null; + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) + { + $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) + { + $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) + { + $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if ($name !== null || $email !== null || $uri !== null) + { + $contributors[] = $this->registry->create('Author', array($name, $uri, $email)); + } + } + foreach ((array) $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor) + { + $name = null; + $url = null; + $email = null; + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) + { + $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) + { + $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) + { + $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if ($name !== null || $email !== null || $url !== null) + { + $contributors[] = $this->registry->create('Author', array($name, $url, $email)); + } + } + + if (!empty($contributors)) + { + return array_unique($contributors); + } + else + { + return null; + } + } + + /** + * Get a single link for the feed + * + * @since 1.0 (previously called `get_feed_link` since Preview Release, `get_feed_permalink()` since 0.8) + * @param int $key The link that you want to return. Remember that arrays begin with 0, not 1 + * @param string $rel The relationship of the link to return + * @return string|null Link URL + */ + public function get_link($key = 0, $rel = 'alternate') + { + $links = $this->get_links($rel); + if (isset($links[$key])) + { + return $links[$key]; + } + else + { + return null; + } + } + + /** + * Get the permalink for the item + * + * Returns the first link available with a relationship of "alternate". + * Identical to {@see get_link()} with key 0 + * + * @see get_link + * @since 1.0 (previously called `get_feed_link` since Preview Release, `get_feed_permalink()` since 0.8) + * @internal Added for parity between the parent-level and the item/entry-level. + * @return string|null Link URL + */ + public function get_permalink() + { + return $this->get_link(0); + } + + /** + * Get all links for the feed + * + * Uses `<atom:link>` or `<link>` + * + * @since Beta 2 + * @param string $rel The relationship of links to return + * @return array|null Links found for the feed (strings) + */ + public function get_links($rel = 'alternate') + { + if (!isset($this->data['links'])) + { + $this->data['links'] = array(); + if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link')) + { + foreach ($links as $link) + { + if (isset($link['attribs']['']['href'])) + { + $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; + $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); + } + } + } + if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link')) + { + foreach ($links as $link) + { + if (isset($link['attribs']['']['href'])) + { + $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; + $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); + + } + } + } + if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link')) + { + $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); + } + if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link')) + { + $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); + } + if ($links = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link')) + { + $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); + } + + $keys = array_keys($this->data['links']); + foreach ($keys as $key) + { + if ($this->registry->call('Misc', 'is_isegment_nz_nc', array($key))) + { + if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key])) + { + $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]); + $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]; + } + else + { + $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key]; + } + } + elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY) + { + $this->data['links'][substr($key, 41)] =& $this->data['links'][$key]; + } + $this->data['links'][$key] = array_unique($this->data['links'][$key]); + } + } + + if (isset($this->data['links'][$rel])) + { + return $this->data['links'][$rel]; + } + else if (isset($this->data['headers']['link']) && + preg_match('/<([^>]+)>; rel='.preg_quote($rel).'/', + $this->data['headers']['link'], $match)) + { + return array($match[1]); + } + else + { + return null; + } + } + + public function get_all_discovered_feeds() + { + return $this->all_discovered_feeds; + } + + /** + * Get the content for the item + * + * Uses `<atom:subtitle>`, `<atom:tagline>`, `<description>`, + * `<dc:description>`, `<itunes:summary>` or `<itunes:subtitle>` + * + * @since 1.0 (previously called `get_feed_description()` since 0.8) + * @return string|null + */ + public function get_description() + { + if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); + } + else + { + return null; + } + } + + /** + * Get the copyright info for the feed + * + * Uses `<atom:rights>`, `<atom:copyright>` or `<dc:rights>` + * + * @since 1.0 (previously called `get_feed_copyright()` since 0.8) + * @return string|null + */ + public function get_copyright() + { + if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'copyright')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + return null; + } + } + + /** + * Get the language for the feed + * + * Uses `<language>`, `<dc:language>`, or @xml_lang + * + * @since 1.0 (previously called `get_feed_language()` since 0.8) + * @return string|null + */ + public function get_language() + { + if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'language')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang'])) + { + return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang'])) + { + return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif (isset($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang'])) + { + return $this->sanitize($this->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif (isset($this->data['headers']['content-language'])) + { + return $this->sanitize($this->data['headers']['content-language'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + return null; + } + } + + /** + * Get the latitude coordinates for the item + * + * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications + * + * Uses `<geo:lat>` or `<georss:point>` + * + * @since 1.0 + * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo + * @link http://www.georss.org/ GeoRSS + * @return string|null + */ + public function get_latitude() + { + + if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat')) + { + return (float) $return[0]['data']; + } + elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) + { + return (float) $match[1]; + } + else + { + return null; + } + } + + /** + * Get the longitude coordinates for the feed + * + * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications + * + * Uses `<geo:long>`, `<geo:lon>` or `<georss:point>` + * + * @since 1.0 + * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo + * @link http://www.georss.org/ GeoRSS + * @return string|null + */ + public function get_longitude() + { + if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long')) + { + return (float) $return[0]['data']; + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon')) + { + return (float) $return[0]['data']; + } + elseif (($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) + { + return (float) $match[2]; + } + else + { + return null; + } + } + + /** + * Get the feed logo's title + * + * RSS 0.9.0, 1.0 and 2.0 feeds are allowed to have a "feed logo" title. + * + * Uses `<image><title>` or `<image><dc:title>` + * + * @return string|null + */ + public function get_image_title() + { + if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + return null; + } + } + + /** + * Get the feed logo's URL + * + * RSS 0.9.0, 2.0, Atom 1.0, and feeds with iTunes RSS tags are allowed to + * have a "feed logo" URL. This points directly to the image itself. + * + * Uses `<itunes:image>`, `<atom:logo>`, `<atom:icon>`, + * `<image><title>` or `<image><dc:title>` + * + * @return string|null + */ + public function get_image_url() + { + if ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image')) + { + return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); + } + elseif ($return = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); + } + elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'url')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); + } + elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'url')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); + } + elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'url')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); + } + else + { + return null; + } + } + + + /** + * Get the feed logo's link + * + * RSS 0.9.0, 1.0 and 2.0 feeds are allowed to have a "feed logo" link. This + * points to a human-readable page that the image should link to. + * + * Uses `<itunes:image>`, `<atom:logo>`, `<atom:icon>`, + * `<image><title>` or `<image><dc:title>` + * + * @return string|null + */ + public function get_image_link() + { + if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); + } + elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); + } + elseif ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); + } + else + { + return null; + } + } + + /** + * Get the feed logo's link + * + * RSS 2.0 feeds are allowed to have a "feed logo" width. + * + * Uses `<image><width>` or defaults to 88.0 if no width is specified and + * the feed is an RSS 2.0 feed. + * + * @return int|float|null + */ + public function get_image_width() + { + if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'width')) + { + return round($return[0]['data']); + } + elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'url')) + { + return 88.0; + } + else + { + return null; + } + } + + /** + * Get the feed logo's height + * + * RSS 2.0 feeds are allowed to have a "feed logo" height. + * + * Uses `<image><height>` or defaults to 31.0 if no height is specified and + * the feed is an RSS 2.0 feed. + * + * @return int|float|null + */ + public function get_image_height() + { + if ($return = $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'height')) + { + return round($return[0]['data']); + } + elseif ($this->get_type() & SIMPLEPIE_TYPE_RSS_SYNDICATION && $this->get_image_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'url')) + { + return 31.0; + } + else + { + return null; + } + } + + /** + * Get the number of items in the feed + * + * This is well-suited for {@link http://php.net/for for()} loops with + * {@see get_item()} + * + * @param int $max Maximum value to return. 0 for no limit + * @return int Number of items in the feed + */ + public function get_item_quantity($max = 0) + { + $max = (int) $max; + $qty = count($this->get_items()); + if ($max === 0) + { + return $qty; + } + else + { + return ($qty > $max) ? $max : $qty; + } + } + + /** + * Get a single item from the feed + * + * This is better suited for {@link http://php.net/for for()} loops, whereas + * {@see get_items()} is better suited for + * {@link http://php.net/foreach foreach()} loops. + * + * @see get_item_quantity() + * @since Beta 2 + * @param int $key The item that you want to return. Remember that arrays begin with 0, not 1 + * @return SimplePie_Item|null + */ + public function get_item($key = 0) + { + $items = $this->get_items(); + if (isset($items[$key])) + { + return $items[$key]; + } + else + { + return null; + } + } + + /** + * Get all items from the feed + * + * This is better suited for {@link http://php.net/for for()} loops, whereas + * {@see get_items()} is better suited for + * {@link http://php.net/foreach foreach()} loops. + * + * @see get_item_quantity + * @since Beta 2 + * @param int $start Index to start at + * @param int $end Number of items to return. 0 for all items after `$start` + * @return SimplePie_Item[]|null List of {@see SimplePie_Item} objects + */ + public function get_items($start = 0, $end = 0) + { + if (!isset($this->data['items'])) + { + if (!empty($this->multifeed_objects)) + { + $this->data['items'] = SimplePie::merge_items($this->multifeed_objects, $start, $end, $this->item_limit); + if (empty($this->data['items'])) + { + return array(); + } + return $this->data['items']; + } + $this->data['items'] = array(); + if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'entry')) + { + $keys = array_keys($items); + foreach ($keys as $key) + { + $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key])); + } + } + if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry')) + { + $keys = array_keys($items); + foreach ($keys as $key) + { + $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key])); + } + } + if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item')) + { + $keys = array_keys($items); + foreach ($keys as $key) + { + $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key])); + } + } + if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item')) + { + $keys = array_keys($items); + foreach ($keys as $key) + { + $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key])); + } + } + if ($items = $this->get_channel_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'item')) + { + $keys = array_keys($items); + foreach ($keys as $key) + { + $this->data['items'][] = $this->registry->create('Item', array($this, $items[$key])); + } + } + } + + if (empty($this->data['items'])) + { + return array(); + } + + if ($this->order_by_date) + { + if (!isset($this->data['ordered_items'])) + { + $this->data['ordered_items'] = $this->data['items']; + usort($this->data['ordered_items'], array(get_class($this), 'sort_items')); + } + $items = $this->data['ordered_items']; + } + else + { + $items = $this->data['items']; + } + // Slice the data as desired + if ($end === 0) + { + return array_slice($items, $start); + } + else + { + return array_slice($items, $start, $end); + } + } + + /** + * Set the favicon handler + * + * @deprecated Use your own favicon handling instead + */ + public function set_favicon_handler($page = false, $qs = 'i') + { + $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING; + trigger_error('Favicon handling has been removed, please use your own handling', $level); + return false; + } + + /** + * Get the favicon for the current feed + * + * @deprecated Use your own favicon handling instead + */ + public function get_favicon() + { + $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING; + trigger_error('Favicon handling has been removed, please use your own handling', $level); + + if (($url = $this->get_link()) !== null) + { + return 'http://g.etfv.co/' . urlencode($url); + } + + return false; + } + + /** + * Magic method handler + * + * @param string $method Method name + * @param array $args Arguments to the method + * @return mixed + */ + public function __call($method, $args) + { + if (strpos($method, 'subscribe_') === 0) + { + $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING; + trigger_error('subscribe_*() has been deprecated, implement the callback yourself', $level); + return ''; + } + if ($method === 'enable_xml_dump') + { + $level = defined('E_USER_DEPRECATED') ? E_USER_DEPRECATED : E_USER_WARNING; + trigger_error('enable_xml_dump() has been deprecated, use get_raw_data() instead', $level); + return false; + } + + $class = get_class($this); + $trace = debug_backtrace(); + $file = $trace[0]['file']; + $line = $trace[0]['line']; + trigger_error("Call to undefined method $class::$method() in $file on line $line", E_USER_ERROR); + } + + /** + * Sorting callback for items + * + * @access private + * @param SimplePie $a + * @param SimplePie $b + * @return boolean + */ + public static function sort_items($a, $b) + { + $a_date = $a->get_date('U'); + $b_date = $b->get_date('U'); + if ($a_date && $b_date) { + return $a_date > $b_date ? -1 : 1; + } + // Sort items without dates to the top. + if ($a_date) { + return 1; + } + if ($b_date) { + return -1; + } + return 0; + } + + /** + * Merge items from several feeds into one + * + * If you're merging multiple feeds together, they need to all have dates + * for the items or else SimplePie will refuse to sort them. + * + * @link http://simplepie.org/wiki/tutorial/sort_multiple_feeds_by_time_and_date#if_feeds_require_separate_per-feed_settings + * @param array $urls List of SimplePie feed objects to merge + * @param int $start Starting item + * @param int $end Number of items to return + * @param int $limit Maximum number of items per feed + * @return array + */ + public static function merge_items($urls, $start = 0, $end = 0, $limit = 0) + { + if (is_array($urls) && sizeof($urls) > 0) + { + $items = array(); + foreach ($urls as $arg) + { + if ($arg instanceof SimplePie) + { + $items = array_merge($items, $arg->get_items(0, $limit)); + } + else + { + trigger_error('Arguments must be SimplePie objects', E_USER_WARNING); + } + } + + usort($items, array(get_class($urls[0]), 'sort_items')); + + if ($end === 0) + { + return array_slice($items, $start); + } + else + { + return array_slice($items, $start, $end); + } + } + else + { + trigger_error('Cannot merge zero SimplePie objects', E_USER_WARNING); + return array(); + } + } + + /** + * Store PubSubHubbub links as headers + * + * There is no way to find PuSH links in the body of a microformats feed, + * so they are added to the headers when found, to be used later by get_links. + * @param SimplePie_File $file + * @param string $hub + * @param string $self + */ + private function store_links(&$file, $hub, $self) { + if (isset($file->headers['link']['hub']) || + (isset($file->headers['link']) && + preg_match('/rel=hub/', $file->headers['link']))) + { + return; + } + + if ($hub) + { + if (isset($file->headers['link'])) + { + if ($file->headers['link'] !== '') + { + $file->headers['link'] = ', '; + } + } + else + { + $file->headers['link'] = ''; + } + $file->headers['link'] .= '<'.$hub.'>; rel=hub'; + if ($self) + { + $file->headers['link'] .= ', <'.$self.'>; rel=self'; + } + } + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Author.php b/vendor/simplepie/simplepie/library/SimplePie/Author.php new file mode 100644 index 000000000..e6768ff29 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Author.php @@ -0,0 +1,156 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Manages all author-related data + * + * Used by {@see SimplePie_Item::get_author()} and {@see SimplePie::get_authors()} + * + * This class can be overloaded with {@see SimplePie::set_author_class()} + * + * @package SimplePie + * @subpackage API + */ +class SimplePie_Author +{ + /** + * Author's name + * + * @var string + * @see get_name() + */ + var $name; + + /** + * Author's link + * + * @var string + * @see get_link() + */ + var $link; + + /** + * Author's email address + * + * @var string + * @see get_email() + */ + var $email; + + /** + * Constructor, used to input the data + * + * @param string $name + * @param string $link + * @param string $email + */ + public function __construct($name = null, $link = null, $email = null) + { + $this->name = $name; + $this->link = $link; + $this->email = $email; + } + + /** + * String-ified version + * + * @return string + */ + public function __toString() + { + // There is no $this->data here + return md5(serialize($this)); + } + + /** + * Author's name + * + * @return string|null + */ + public function get_name() + { + if ($this->name !== null) + { + return $this->name; + } + else + { + return null; + } + } + + /** + * Author's link + * + * @return string|null + */ + public function get_link() + { + if ($this->link !== null) + { + return $this->link; + } + else + { + return null; + } + } + + /** + * Author's email address + * + * @return string|null + */ + public function get_email() + { + if ($this->email !== null) + { + return $this->email; + } + else + { + return null; + } + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache.php b/vendor/simplepie/simplepie/library/SimplePie/Cache.php new file mode 100644 index 000000000..d98cc6511 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache.php @@ -0,0 +1,134 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Used to create cache objects + * + * This class can be overloaded with {@see SimplePie::set_cache_class()}, + * although the preferred way is to create your own handler + * via {@see register()} + * + * @package SimplePie + * @subpackage Caching + */ +class SimplePie_Cache +{ + /** + * Cache handler classes + * + * These receive 3 parameters to their constructor, as documented in + * {@see register()} + * @var array + */ + protected static $handlers = array( + 'mysql' => 'SimplePie_Cache_MySQL', + 'memcache' => 'SimplePie_Cache_Memcache', + 'memcached' => 'SimplePie_Cache_Memcached', + 'redis' => 'SimplePie_Cache_Redis' + ); + + /** + * Don't call the constructor. Please. + */ + private function __construct() { } + + /** + * Create a new SimplePie_Cache object + * + * @param string $location URL location (scheme is used to determine handler) + * @param string $filename Unique identifier for cache object + * @param string $extension 'spi' or 'spc' + * @return SimplePie_Cache_Base Type of object depends on scheme of `$location` + */ + public static function get_handler($location, $filename, $extension) + { + $type = explode(':', $location, 2); + $type = $type[0]; + if (!empty(self::$handlers[$type])) + { + $class = self::$handlers[$type]; + return new $class($location, $filename, $extension); + } + + return new SimplePie_Cache_File($location, $filename, $extension); + } + + /** + * Create a new SimplePie_Cache object + * + * @deprecated Use {@see get_handler} instead + */ + public function create($location, $filename, $extension) + { + trigger_error('Cache::create() has been replaced with Cache::get_handler(). Switch to the registry system to use this.', E_USER_DEPRECATED); + return self::get_handler($location, $filename, $extension); + } + + /** + * Register a handler + * + * @param string $type DSN type to register for + * @param string $class Name of handler class. Must implement SimplePie_Cache_Base + */ + public static function register($type, $class) + { + self::$handlers[$type] = $class; + } + + /** + * Parse a URL into an array + * + * @param string $url + * @return array + */ + public static function parse_URL($url) + { + $params = parse_url($url); + $params['extras'] = array(); + if (isset($params['query'])) + { + parse_str($params['query'], $params['extras']); + } + return $params; + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php new file mode 100644 index 000000000..333fb05cf --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Base.php @@ -0,0 +1,113 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Base for cache objects + * + * Classes to be used with {@see SimplePie_Cache::register()} are expected + * to implement this interface. + * + * @package SimplePie + * @subpackage Caching + */ +interface SimplePie_Cache_Base +{ + /** + * Feed cache type + * + * @var string + */ + const TYPE_FEED = 'spc'; + + /** + * Image cache type + * + * @var string + */ + const TYPE_IMAGE = 'spi'; + + /** + * Create a new cache object + * + * @param string $location Location string (from SimplePie::$cache_location) + * @param string $name Unique ID for the cache + * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data + */ + public function __construct($location, $name, $type); + + /** + * Save data to the cache + * + * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property + * @return bool Successfulness + */ + public function save($data); + + /** + * Retrieve the data saved to the cache + * + * @return array Data for SimplePie::$data + */ + public function load(); + + /** + * Retrieve the last modified time for the cache + * + * @return int Timestamp + */ + public function mtime(); + + /** + * Set the last modified time to the current time + * + * @return bool Success status + */ + public function touch(); + + /** + * Remove the cache + * + * @return bool Success status + */ + public function unlink(); +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php new file mode 100644 index 000000000..7e8f77532 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/DB.php @@ -0,0 +1,136 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Base class for database-based caches + * + * @package SimplePie + * @subpackage Caching + */ +abstract class SimplePie_Cache_DB implements SimplePie_Cache_Base +{ + /** + * Helper for database conversion + * + * Converts a given {@see SimplePie} object into data to be stored + * + * @param SimplePie $data + * @return array First item is the serialized data for storage, second item is the unique ID for this item + */ + protected static function prepare_simplepie_object_for_cache($data) + { + $items = $data->get_items(); + $items_by_id = array(); + + if (!empty($items)) + { + foreach ($items as $item) + { + $items_by_id[$item->get_id()] = $item; + } + + if (count($items_by_id) !== count($items)) + { + $items_by_id = array(); + foreach ($items as $item) + { + $items_by_id[$item->get_id(true)] = $item; + } + } + + if (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0])) + { + $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]; + } + elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0])) + { + $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]; + } + elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0])) + { + $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]; + } + elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0])) + { + $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0]; + } + else + { + $channel = null; + } + + if ($channel !== null) + { + if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry'])) + { + unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']); + } + if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry'])) + { + unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']); + } + if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item'])) + { + unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']); + } + if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item'])) + { + unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']); + } + if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item'])) + { + unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']); + } + } + if (isset($data->data['items'])) + { + unset($data->data['items']); + } + if (isset($data->data['ordered_items'])) + { + unset($data->data['ordered_items']); + } + } + return array(serialize($data->data), $items_by_id); + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php new file mode 100644 index 000000000..6ba6c5f6e --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/File.php @@ -0,0 +1,164 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Caches data to the filesystem + * + * @package SimplePie + * @subpackage Caching + */ +class SimplePie_Cache_File implements SimplePie_Cache_Base +{ + /** + * Location string + * + * @see SimplePie::$cache_location + * @var string + */ + protected $location; + + /** + * Filename + * + * @var string + */ + protected $filename; + + /** + * File extension + * + * @var string + */ + protected $extension; + + /** + * File path + * + * @var string + */ + protected $name; + + /** + * Create a new cache object + * + * @param string $location Location string (from SimplePie::$cache_location) + * @param string $name Unique ID for the cache + * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data + */ + public function __construct($location, $name, $type) + { + $this->location = $location; + $this->filename = $name; + $this->extension = $type; + $this->name = "$this->location/$this->filename.$this->extension"; + } + + /** + * Save data to the cache + * + * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property + * @return bool Successfulness + */ + public function save($data) + { + if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location)) + { + if ($data instanceof SimplePie) + { + $data = $data->data; + } + + $data = serialize($data); + return (bool) file_put_contents($this->name, $data); + } + return false; + } + + /** + * Retrieve the data saved to the cache + * + * @return array Data for SimplePie::$data + */ + public function load() + { + if (file_exists($this->name) && is_readable($this->name)) + { + return unserialize(file_get_contents($this->name)); + } + return false; + } + + /** + * Retrieve the last modified time for the cache + * + * @return int Timestamp + */ + public function mtime() + { + return @filemtime($this->name); + } + + /** + * Set the last modified time to the current time + * + * @return bool Success status + */ + public function touch() + { + return @touch($this->name); + } + + /** + * Remove the cache + * + * @return bool Success status + */ + public function unlink() + { + if (file_exists($this->name)) + { + return unlink($this->name); + } + return false; + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php new file mode 100644 index 000000000..5190eef93 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcache.php @@ -0,0 +1,180 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Caches data to memcache + * + * Registered for URLs with the "memcache" protocol + * + * For example, `memcache://localhost:11211/?timeout=3600&prefix=sp_` will + * connect to memcache on `localhost` on port 11211. All tables will be + * prefixed with `sp_` and data will expire after 3600 seconds + * + * @package SimplePie + * @subpackage Caching + * @uses Memcache + */ +class SimplePie_Cache_Memcache implements SimplePie_Cache_Base +{ + /** + * Memcache instance + * + * @var Memcache + */ + protected $cache; + + /** + * Options + * + * @var array + */ + protected $options; + + /** + * Cache name + * + * @var string + */ + protected $name; + + /** + * Create a new cache object + * + * @param string $location Location string (from SimplePie::$cache_location) + * @param string $name Unique ID for the cache + * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data + */ + public function __construct($location, $name, $type) + { + $this->options = array( + 'host' => '127.0.0.1', + 'port' => 11211, + 'extras' => array( + 'timeout' => 3600, // one hour + 'prefix' => 'simplepie_', + ), + ); + $this->options = SimplePie_Misc::array_merge_recursive($this->options, SimplePie_Cache::parse_URL($location)); + + $this->name = $this->options['extras']['prefix'] . md5("$name:$type"); + + $this->cache = new Memcache(); + $this->cache->addServer($this->options['host'], (int) $this->options['port']); + } + + /** + * Save data to the cache + * + * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property + * @return bool Successfulness + */ + public function save($data) + { + if ($data instanceof SimplePie) + { + $data = $data->data; + } + return $this->cache->set($this->name, serialize($data), MEMCACHE_COMPRESSED, (int) $this->options['extras']['timeout']); + } + + /** + * Retrieve the data saved to the cache + * + * @return array Data for SimplePie::$data + */ + public function load() + { + $data = $this->cache->get($this->name); + + if ($data !== false) + { + return unserialize($data); + } + return false; + } + + /** + * Retrieve the last modified time for the cache + * + * @return int Timestamp + */ + public function mtime() + { + $data = $this->cache->get($this->name); + + if ($data !== false) + { + // essentially ignore the mtime because Memcache expires on its own + return time(); + } + + return false; + } + + /** + * Set the last modified time to the current time + * + * @return bool Success status + */ + public function touch() + { + $data = $this->cache->get($this->name); + + if ($data !== false) + { + return $this->cache->set($this->name, $data, MEMCACHE_COMPRESSED, (int) $this->options['extras']['timeout']); + } + + return false; + } + + /** + * Remove the cache + * + * @return bool Success status + */ + public function unlink() + { + return $this->cache->delete($this->name, 0); + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php new file mode 100755 index 000000000..1f73b3890 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Memcached.php @@ -0,0 +1,166 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Caches data to memcached + * + * Registered for URLs with the "memcached" protocol + * + * For example, `memcached://localhost:11211/?timeout=3600&prefix=sp_` will + * connect to memcached on `localhost` on port 11211. All tables will be + * prefixed with `sp_` and data will expire after 3600 seconds + * + * @package SimplePie + * @subpackage Caching + * @author Paul L. McNeely + * @uses Memcached + */ +class SimplePie_Cache_Memcached implements SimplePie_Cache_Base +{ + /** + * Memcached instance + * @var Memcached + */ + protected $cache; + + /** + * Options + * @var array + */ + protected $options; + + /** + * Cache name + * @var string + */ + protected $name; + + /** + * Create a new cache object + * @param string $location Location string (from SimplePie::$cache_location) + * @param string $name Unique ID for the cache + * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data + */ + public function __construct($location, $name, $type) { + $this->options = array( + 'host' => '127.0.0.1', + 'port' => 11211, + 'extras' => array( + 'timeout' => 3600, // one hour + 'prefix' => 'simplepie_', + ), + ); + $this->options = SimplePie_Misc::array_merge_recursive($this->options, SimplePie_Cache::parse_URL($location)); + + $this->name = $this->options['extras']['prefix'] . md5("$name:$type"); + + $this->cache = new Memcached(); + $this->cache->addServer($this->options['host'], (int)$this->options['port']); + } + + /** + * Save data to the cache + * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property + * @return bool Successfulness + */ + public function save($data) { + if ($data instanceof SimplePie) { + $data = $data->data; + } + + return $this->setData(serialize($data)); + } + + /** + * Retrieve the data saved to the cache + * @return array Data for SimplePie::$data + */ + public function load() { + $data = $this->cache->get($this->name); + + if ($data !== false) { + return unserialize($data); + } + return false; + } + + /** + * Retrieve the last modified time for the cache + * @return int Timestamp + */ + public function mtime() { + $data = $this->cache->get($this->name . '_mtime'); + return (int) $data; + } + + /** + * Set the last modified time to the current time + * @return bool Success status + */ + public function touch() { + $data = $this->cache->get($this->name); + return $this->setData($data); + } + + /** + * Remove the cache + * @return bool Success status + */ + public function unlink() { + return $this->cache->delete($this->name, 0); + } + + /** + * Set the last modified time and data to Memcached + * @return bool Success status + */ + private function setData($data) { + + if ($data !== false) { + $this->cache->set($this->name . '_mtime', time(), (int)$this->options['extras']['timeout']); + return $this->cache->set($this->name, $data, (int)$this->options['extras']['timeout']); + } + + return false; + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php new file mode 100644 index 000000000..8686b6c67 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/MySQL.php @@ -0,0 +1,454 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Caches data to a MySQL database + * + * Registered for URLs with the "mysql" protocol + * + * For example, `mysql://root:password@localhost:3306/mydb?prefix=sp_` will + * connect to the `mydb` database on `localhost` on port 3306, with the user + * `root` and the password `password`. All tables will be prefixed with `sp_` + * + * @package SimplePie + * @subpackage Caching + */ +class SimplePie_Cache_MySQL extends SimplePie_Cache_DB +{ + /** + * PDO instance + * + * @var PDO + */ + protected $mysql; + + /** + * Options + * + * @var array + */ + protected $options; + + /** + * Cache ID + * + * @var string + */ + protected $id; + + /** + * Create a new cache object + * + * @param string $location Location string (from SimplePie::$cache_location) + * @param string $name Unique ID for the cache + * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data + */ + public function __construct($location, $name, $type) + { + $this->options = array( + 'user' => null, + 'pass' => null, + 'host' => '127.0.0.1', + 'port' => '3306', + 'path' => '', + 'extras' => array( + 'prefix' => '', + 'cache_purge_time' => 2592000 + ), + ); + + $this->options = SimplePie_Misc::array_merge_recursive($this->options, SimplePie_Cache::parse_URL($location)); + + // Path is prefixed with a "/" + $this->options['dbname'] = substr($this->options['path'], 1); + + try + { + $this->mysql = new PDO("mysql:dbname={$this->options['dbname']};host={$this->options['host']};port={$this->options['port']}", $this->options['user'], $this->options['pass'], array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); + } + catch (PDOException $e) + { + $this->mysql = null; + return; + } + + $this->id = $name . $type; + + if (!$query = $this->mysql->query('SHOW TABLES')) + { + $this->mysql = null; + return; + } + + $db = array(); + while ($row = $query->fetchColumn()) + { + $db[] = $row; + } + + if (!in_array($this->options['extras']['prefix'] . 'cache_data', $db)) + { + $query = $this->mysql->exec('CREATE TABLE `' . $this->options['extras']['prefix'] . 'cache_data` (`id` TEXT CHARACTER SET utf8 NOT NULL, `items` SMALLINT NOT NULL DEFAULT 0, `data` BLOB NOT NULL, `mtime` INT UNSIGNED NOT NULL, UNIQUE (`id`(125)))'); + if ($query === false) + { + trigger_error("Can't create " . $this->options['extras']['prefix'] . "cache_data table, check permissions", E_USER_WARNING); + $this->mysql = null; + return; + } + } + + if (!in_array($this->options['extras']['prefix'] . 'items', $db)) + { + $query = $this->mysql->exec('CREATE TABLE `' . $this->options['extras']['prefix'] . 'items` (`feed_id` TEXT CHARACTER SET utf8 NOT NULL, `id` TEXT CHARACTER SET utf8 NOT NULL, `data` MEDIUMBLOB NOT NULL, `posted` INT UNSIGNED NOT NULL, INDEX `feed_id` (`feed_id`(125)))'); + if ($query === false) + { + trigger_error("Can't create " . $this->options['extras']['prefix'] . "items table, check permissions", E_USER_WARNING); + $this->mysql = null; + return; + } + } + } + + /** + * Save data to the cache + * + * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property + * @return bool Successfulness + */ + public function save($data) + { + if ($this->mysql === null) + { + return false; + } + + $query = $this->mysql->prepare('DELETE i, cd FROM `' . $this->options['extras']['prefix'] . 'cache_data` cd, ' . + '`' . $this->options['extras']['prefix'] . 'items` i ' . + 'WHERE cd.id = i.feed_id ' . + 'AND cd.mtime < (unix_timestamp() - :purge_time)'); + $query->bindValue(':purge_time', $this->options['extras']['cache_purge_time']); + + if (!$query->execute()) + { + return false; + } + + if ($data instanceof SimplePie) + { + $data = clone $data; + + $prepared = self::prepare_simplepie_object_for_cache($data); + + $query = $this->mysql->prepare('SELECT COUNT(*) FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :feed'); + $query->bindValue(':feed', $this->id); + if ($query->execute()) + { + if ($query->fetchColumn() > 0) + { + $items = count($prepared[1]); + if ($items) + { + $sql = 'UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `items` = :items, `data` = :data, `mtime` = :time WHERE `id` = :feed'; + $query = $this->mysql->prepare($sql); + $query->bindValue(':items', $items); + } + else + { + $sql = 'UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `data` = :data, `mtime` = :time WHERE `id` = :feed'; + $query = $this->mysql->prepare($sql); + } + + $query->bindValue(':data', $prepared[0]); + $query->bindValue(':time', time()); + $query->bindValue(':feed', $this->id); + if (!$query->execute()) + { + return false; + } + } + else + { + $query = $this->mysql->prepare('INSERT INTO `' . $this->options['extras']['prefix'] . 'cache_data` (`id`, `items`, `data`, `mtime`) VALUES(:feed, :count, :data, :time)'); + $query->bindValue(':feed', $this->id); + $query->bindValue(':count', count($prepared[1])); + $query->bindValue(':data', $prepared[0]); + $query->bindValue(':time', time()); + if (!$query->execute()) + { + return false; + } + } + + $ids = array_keys($prepared[1]); + if (!empty($ids)) + { + foreach ($ids as $id) + { + $database_ids[] = $this->mysql->quote($id); + } + + $query = $this->mysql->prepare('SELECT `id` FROM `' . $this->options['extras']['prefix'] . 'items` WHERE `id` = ' . implode(' OR `id` = ', $database_ids) . ' AND `feed_id` = :feed'); + $query->bindValue(':feed', $this->id); + + if ($query->execute()) + { + $existing_ids = array(); + while ($row = $query->fetchColumn()) + { + $existing_ids[] = $row; + } + + $new_ids = array_diff($ids, $existing_ids); + + foreach ($new_ids as $new_id) + { + if (!($date = $prepared[1][$new_id]->get_date('U'))) + { + $date = time(); + } + + $query = $this->mysql->prepare('INSERT INTO `' . $this->options['extras']['prefix'] . 'items` (`feed_id`, `id`, `data`, `posted`) VALUES(:feed, :id, :data, :date)'); + $query->bindValue(':feed', $this->id); + $query->bindValue(':id', $new_id); + $query->bindValue(':data', serialize($prepared[1][$new_id]->data)); + $query->bindValue(':date', $date); + if (!$query->execute()) + { + return false; + } + } + return true; + } + } + else + { + return true; + } + } + } + else + { + $query = $this->mysql->prepare('SELECT `id` FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :feed'); + $query->bindValue(':feed', $this->id); + if ($query->execute()) + { + if ($query->rowCount() > 0) + { + $query = $this->mysql->prepare('UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `items` = 0, `data` = :data, `mtime` = :time WHERE `id` = :feed'); + $query->bindValue(':data', serialize($data)); + $query->bindValue(':time', time()); + $query->bindValue(':feed', $this->id); + if ($this->execute()) + { + return true; + } + } + else + { + $query = $this->mysql->prepare('INSERT INTO `' . $this->options['extras']['prefix'] . 'cache_data` (`id`, `items`, `data`, `mtime`) VALUES(:id, 0, :data, :time)'); + $query->bindValue(':id', $this->id); + $query->bindValue(':data', serialize($data)); + $query->bindValue(':time', time()); + if ($query->execute()) + { + return true; + } + } + } + } + return false; + } + + /** + * Retrieve the data saved to the cache + * + * @return array Data for SimplePie::$data + */ + public function load() + { + if ($this->mysql === null) + { + return false; + } + + $query = $this->mysql->prepare('SELECT `items`, `data` FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :id'); + $query->bindValue(':id', $this->id); + if ($query->execute() && ($row = $query->fetch())) + { + $data = unserialize($row[1]); + + if (isset($this->options['items'][0])) + { + $items = (int) $this->options['items'][0]; + } + else + { + $items = (int) $row[0]; + } + + if ($items !== 0) + { + if (isset($data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0])) + { + $feed =& $data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]; + } + elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0])) + { + $feed =& $data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]; + } + elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0])) + { + $feed =& $data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]; + } + elseif (isset($data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0])) + { + $feed =& $data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]; + } + else + { + $feed = null; + } + + if ($feed !== null) + { + $sql = 'SELECT `data` FROM `' . $this->options['extras']['prefix'] . 'items` WHERE `feed_id` = :feed ORDER BY `posted` DESC'; + if ($items > 0) + { + $sql .= ' LIMIT ' . $items; + } + + $query = $this->mysql->prepare($sql); + $query->bindValue(':feed', $this->id); + if ($query->execute()) + { + while ($row = $query->fetchColumn()) + { + $feed['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry'][] = unserialize($row); + } + } + else + { + return false; + } + } + } + return $data; + } + return false; + } + + /** + * Retrieve the last modified time for the cache + * + * @return int Timestamp + */ + public function mtime() + { + if ($this->mysql === null) + { + return false; + } + + $query = $this->mysql->prepare('SELECT `mtime` FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :id'); + $query->bindValue(':id', $this->id); + if ($query->execute() && ($time = $query->fetchColumn())) + { + return $time; + } + else + { + return false; + } + } + + /** + * Set the last modified time to the current time + * + * @return bool Success status + */ + public function touch() + { + if ($this->mysql === null) + { + return false; + } + + $query = $this->mysql->prepare('UPDATE `' . $this->options['extras']['prefix'] . 'cache_data` SET `mtime` = :time WHERE `id` = :id'); + $query->bindValue(':time', time()); + $query->bindValue(':id', $this->id); + if ($query->execute() && $query->rowCount() > 0) + { + return true; + } + else + { + return false; + } + } + + /** + * Remove the cache + * + * @return bool Success status + */ + public function unlink() + { + if ($this->mysql === null) + { + return false; + } + + $query = $this->mysql->prepare('DELETE FROM `' . $this->options['extras']['prefix'] . 'cache_data` WHERE `id` = :id'); + $query->bindValue(':id', $this->id); + $query2 = $this->mysql->prepare('DELETE FROM `' . $this->options['extras']['prefix'] . 'items` WHERE `feed_id` = :id'); + $query2->bindValue(':id', $this->id); + if ($query->execute() && $query2->execute()) + { + return true; + } + else + { + return false; + } + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php b/vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php new file mode 100644 index 000000000..04d72c79a --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Cache/Redis.php @@ -0,0 +1,166 @@ +<?php + +/** + * SimplePie Redis Cache Extension + * + * @package SimplePie + * @author Jan Kozak <galvani78@gmail.com> + * @link http://galvani.cz/ + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + * @version 0.2.9 + */ + + +/** + * Caches data to redis + * + * Registered for URLs with the "redis" protocol + * + * For example, `redis://localhost:6379/?timeout=3600&prefix=sp_&dbIndex=0` will + * connect to redis on `localhost` on port 6379. All tables will be + * prefixed with `simple_primary-` and data will expire after 3600 seconds + * + * @package SimplePie + * @subpackage Caching + * @uses Redis + */ +class SimplePie_Cache_Redis implements SimplePie_Cache_Base { + /** + * Redis instance + * + * @var \Redis + */ + protected $cache; + + /** + * Options + * + * @var array + */ + protected $options; + + /** + * Cache name + * + * @var string + */ + protected $name; + + /** + * Cache Data + * + * @var type + */ + protected $data; + + /** + * Create a new cache object + * + * @param string $location Location string (from SimplePie::$cache_location) + * @param string $name Unique ID for the cache + * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data + */ + public function __construct($location, $name, $options = null) { + //$this->cache = \flow\simple\cache\Redis::getRedisClientInstance(); + $parsed = SimplePie_Cache::parse_URL($location); + $redis = new Redis(); + $redis->connect($parsed['host'], $parsed['port']); + $this->cache = $redis; + + if (!is_null($options) && is_array($options)) { + $this->options = $options; + } else { + $this->options = array ( + 'prefix' => 'rss:simple_primary:', + 'expire' => 0, + ); + } + + $this->name = $this->options['prefix'] . $name; + } + + /** + * @param \Redis $cache + */ + public function setRedisClient(\Redis $cache) { + $this->cache = $cache; + } + + /** + * Save data to the cache + * + * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property + * @return bool Successfulness + */ + public function save($data) { + if ($data instanceof SimplePie) { + $data = $data->data; + } + $response = $this->cache->set($this->name, serialize($data)); + if ($this->options['expire']) { + $this->cache->expire($this->name, $this->options['expire']); + } + + return $response; + } + + /** + * Retrieve the data saved to the cache + * + * @return array Data for SimplePie::$data + */ + public function load() { + $data = $this->cache->get($this->name); + + if ($data !== false) { + return unserialize($data); + } + return false; + } + + /** + * Retrieve the last modified time for the cache + * + * @return int Timestamp + */ + public function mtime() { + + $data = $this->cache->get($this->name); + + if ($data !== false) { + return time(); + } + + return false; + } + + /** + * Set the last modified time to the current time + * + * @return bool Success status + */ + public function touch() { + + $data = $this->cache->get($this->name); + + if ($data !== false) { + $return = $this->cache->set($this->name, $data); + if ($this->options['expire']) { + return $this->cache->expire($this->name, $this->ttl); + } + return $return; + } + + return false; + } + + /** + * Remove the cache + * + * @return bool Success status + */ + public function unlink() { + return $this->cache->set($this->name, null); + } + +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Caption.php b/vendor/simplepie/simplepie/library/SimplePie/Caption.php new file mode 100644 index 000000000..abf07de1b --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Caption.php @@ -0,0 +1,209 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + + +/** + * Handles `<media:text>` captions as defined in Media RSS. + * + * Used by {@see SimplePie_Enclosure::get_caption()} and {@see SimplePie_Enclosure::get_captions()} + * + * This class can be overloaded with {@see SimplePie::set_caption_class()} + * + * @package SimplePie + * @subpackage API + */ +class SimplePie_Caption +{ + /** + * Content type + * + * @var string + * @see get_type() + */ + var $type; + + /** + * Language + * + * @var string + * @see get_language() + */ + var $lang; + + /** + * Start time + * + * @var string + * @see get_starttime() + */ + var $startTime; + + /** + * End time + * + * @var string + * @see get_endtime() + */ + var $endTime; + + /** + * Caption text + * + * @var string + * @see get_text() + */ + var $text; + + /** + * Constructor, used to input the data + * + * For documentation on all the parameters, see the corresponding + * properties and their accessors + */ + public function __construct($type = null, $lang = null, $startTime = null, $endTime = null, $text = null) + { + $this->type = $type; + $this->lang = $lang; + $this->startTime = $startTime; + $this->endTime = $endTime; + $this->text = $text; + } + + /** + * String-ified version + * + * @return string + */ + public function __toString() + { + // There is no $this->data here + return md5(serialize($this)); + } + + /** + * Get the end time + * + * @return string|null Time in the format 'hh:mm:ss.SSS' + */ + public function get_endtime() + { + if ($this->endTime !== null) + { + return $this->endTime; + } + else + { + return null; + } + } + + /** + * Get the language + * + * @link http://tools.ietf.org/html/rfc3066 + * @return string|null Language code as per RFC 3066 + */ + public function get_language() + { + if ($this->lang !== null) + { + return $this->lang; + } + else + { + return null; + } + } + + /** + * Get the start time + * + * @return string|null Time in the format 'hh:mm:ss.SSS' + */ + public function get_starttime() + { + if ($this->startTime !== null) + { + return $this->startTime; + } + else + { + return null; + } + } + + /** + * Get the text of the caption + * + * @return string|null + */ + public function get_text() + { + if ($this->text !== null) + { + return $this->text; + } + else + { + return null; + } + } + + /** + * Get the content type (not MIME type) + * + * @return string|null Either 'text' or 'html' + */ + public function get_type() + { + if ($this->type !== null) + { + return $this->type; + } + else + { + return null; + } + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Category.php b/vendor/simplepie/simplepie/library/SimplePie/Category.php new file mode 100644 index 000000000..92d511e1a --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Category.php @@ -0,0 +1,156 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Manages all category-related data + * + * Used by {@see SimplePie_Item::get_category()} and {@see SimplePie_Item::get_categories()} + * + * This class can be overloaded with {@see SimplePie::set_category_class()} + * + * @package SimplePie + * @subpackage API + */ +class SimplePie_Category +{ + /** + * Category identifier + * + * @var string + * @see get_term + */ + var $term; + + /** + * Categorization scheme identifier + * + * @var string + * @see get_scheme() + */ + var $scheme; + + /** + * Human readable label + * + * @var string + * @see get_label() + */ + var $label; + + /** + * Constructor, used to input the data + * + * @param string $term + * @param string $scheme + * @param string $label + */ + public function __construct($term = null, $scheme = null, $label = null) + { + $this->term = $term; + $this->scheme = $scheme; + $this->label = $label; + } + + /** + * String-ified version + * + * @return string + */ + public function __toString() + { + // There is no $this->data here + return md5(serialize($this)); + } + + /** + * Get the category identifier + * + * @return string|null + */ + public function get_term() + { + if ($this->term !== null) + { + return $this->term; + } + else + { + return null; + } + } + + /** + * Get the categorization scheme identifier + * + * @return string|null + */ + public function get_scheme() + { + if ($this->scheme !== null) + { + return $this->scheme; + } + else + { + return null; + } + } + + /** + * Get the human readable label + * + * @return string|null + */ + public function get_label() + { + if ($this->label !== null) + { + return $this->label; + } + else + { + return $this->get_term(); + } + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php b/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php new file mode 100644 index 000000000..ff35de614 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Content/Type/Sniffer.php @@ -0,0 +1,331 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + + +/** + * Content-type sniffing + * + * Based on the rules in http://tools.ietf.org/html/draft-abarth-mime-sniff-06 + * + * This is used since we can't always trust Content-Type headers, and is based + * upon the HTML5 parsing rules. + * + * + * This class can be overloaded with {@see SimplePie::set_content_type_sniffer_class()} + * + * @package SimplePie + * @subpackage HTTP + */ +class SimplePie_Content_Type_Sniffer +{ + /** + * File object + * + * @var SimplePie_File + */ + var $file; + + /** + * Create an instance of the class with the input file + * + * @param SimplePie_Content_Type_Sniffer $file Input file + */ + public function __construct($file) + { + $this->file = $file; + } + + /** + * Get the Content-Type of the specified file + * + * @return string Actual Content-Type + */ + public function get_type() + { + if (isset($this->file->headers['content-type'])) + { + if (!isset($this->file->headers['content-encoding']) + && ($this->file->headers['content-type'] === 'text/plain' + || $this->file->headers['content-type'] === 'text/plain; charset=ISO-8859-1' + || $this->file->headers['content-type'] === 'text/plain; charset=iso-8859-1' + || $this->file->headers['content-type'] === 'text/plain; charset=UTF-8')) + { + return $this->text_or_binary(); + } + + if (($pos = strpos($this->file->headers['content-type'], ';')) !== false) + { + $official = substr($this->file->headers['content-type'], 0, $pos); + } + else + { + $official = $this->file->headers['content-type']; + } + $official = trim(strtolower($official)); + + if ($official === 'unknown/unknown' + || $official === 'application/unknown') + { + return $this->unknown(); + } + elseif (substr($official, -4) === '+xml' + || $official === 'text/xml' + || $official === 'application/xml') + { + return $official; + } + elseif (substr($official, 0, 6) === 'image/') + { + if ($return = $this->image()) + { + return $return; + } + else + { + return $official; + } + } + elseif ($official === 'text/html') + { + return $this->feed_or_html(); + } + else + { + return $official; + } + } + else + { + return $this->unknown(); + } + } + + /** + * Sniff text or binary + * + * @return string Actual Content-Type + */ + public function text_or_binary() + { + if (substr($this->file->body, 0, 2) === "\xFE\xFF" + || substr($this->file->body, 0, 2) === "\xFF\xFE" + || substr($this->file->body, 0, 4) === "\x00\x00\xFE\xFF" + || substr($this->file->body, 0, 3) === "\xEF\xBB\xBF") + { + return 'text/plain'; + } + elseif (preg_match('/[\x00-\x08\x0E-\x1A\x1C-\x1F]/', $this->file->body)) + { + return 'application/octect-stream'; + } + else + { + return 'text/plain'; + } + } + + /** + * Sniff unknown + * + * @return string Actual Content-Type + */ + public function unknown() + { + $ws = strspn($this->file->body, "\x09\x0A\x0B\x0C\x0D\x20"); + if (strtolower(substr($this->file->body, $ws, 14)) === '<!doctype html' + || strtolower(substr($this->file->body, $ws, 5)) === '<html' + || strtolower(substr($this->file->body, $ws, 7)) === '<script') + { + return 'text/html'; + } + elseif (substr($this->file->body, 0, 5) === '%PDF-') + { + return 'application/pdf'; + } + elseif (substr($this->file->body, 0, 11) === '%!PS-Adobe-') + { + return 'application/postscript'; + } + elseif (substr($this->file->body, 0, 6) === 'GIF87a' + || substr($this->file->body, 0, 6) === 'GIF89a') + { + return 'image/gif'; + } + elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A") + { + return 'image/png'; + } + elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF") + { + return 'image/jpeg'; + } + elseif (substr($this->file->body, 0, 2) === "\x42\x4D") + { + return 'image/bmp'; + } + elseif (substr($this->file->body, 0, 4) === "\x00\x00\x01\x00") + { + return 'image/vnd.microsoft.icon'; + } + else + { + return $this->text_or_binary(); + } + } + + /** + * Sniff images + * + * @return string Actual Content-Type + */ + public function image() + { + if (substr($this->file->body, 0, 6) === 'GIF87a' + || substr($this->file->body, 0, 6) === 'GIF89a') + { + return 'image/gif'; + } + elseif (substr($this->file->body, 0, 8) === "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A") + { + return 'image/png'; + } + elseif (substr($this->file->body, 0, 3) === "\xFF\xD8\xFF") + { + return 'image/jpeg'; + } + elseif (substr($this->file->body, 0, 2) === "\x42\x4D") + { + return 'image/bmp'; + } + elseif (substr($this->file->body, 0, 4) === "\x00\x00\x01\x00") + { + return 'image/vnd.microsoft.icon'; + } + else + { + return false; + } + } + + /** + * Sniff HTML + * + * @return string Actual Content-Type + */ + public function feed_or_html() + { + $len = strlen($this->file->body); + $pos = strspn($this->file->body, "\x09\x0A\x0D\x20\xEF\xBB\xBF"); + + while ($pos < $len) + { + switch ($this->file->body[$pos]) + { + case "\x09": + case "\x0A": + case "\x0D": + case "\x20": + $pos += strspn($this->file->body, "\x09\x0A\x0D\x20", $pos); + continue 2; + + case '<': + $pos++; + break; + + default: + return 'text/html'; + } + + if (substr($this->file->body, $pos, 3) === '!--') + { + $pos += 3; + if ($pos < $len && ($pos = strpos($this->file->body, '-->', $pos)) !== false) + { + $pos += 3; + } + else + { + return 'text/html'; + } + } + elseif (substr($this->file->body, $pos, 1) === '!') + { + if ($pos < $len && ($pos = strpos($this->file->body, '>', $pos)) !== false) + { + $pos++; + } + else + { + return 'text/html'; + } + } + elseif (substr($this->file->body, $pos, 1) === '?') + { + if ($pos < $len && ($pos = strpos($this->file->body, '?>', $pos)) !== false) + { + $pos += 2; + } + else + { + return 'text/html'; + } + } + elseif (substr($this->file->body, $pos, 3) === 'rss' + || substr($this->file->body, $pos, 7) === 'rdf:RDF') + { + return 'application/rss+xml'; + } + elseif (substr($this->file->body, $pos, 4) === 'feed') + { + return 'application/atom+xml'; + } + else + { + return 'text/html'; + } + } + + return 'text/html'; + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Copyright.php b/vendor/simplepie/simplepie/library/SimplePie/Copyright.php new file mode 100644 index 000000000..3f3d07d3b --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Copyright.php @@ -0,0 +1,129 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Manages `<media:copyright>` copyright tags as defined in Media RSS + * + * Used by {@see SimplePie_Enclosure::get_copyright()} + * + * This class can be overloaded with {@see SimplePie::set_copyright_class()} + * + * @package SimplePie + * @subpackage API + */ +class SimplePie_Copyright +{ + /** + * Copyright URL + * + * @var string + * @see get_url() + */ + var $url; + + /** + * Attribution + * + * @var string + * @see get_attribution() + */ + var $label; + + /** + * Constructor, used to input the data + * + * For documentation on all the parameters, see the corresponding + * properties and their accessors + */ + public function __construct($url = null, $label = null) + { + $this->url = $url; + $this->label = $label; + } + + /** + * String-ified version + * + * @return string + */ + public function __toString() + { + // There is no $this->data here + return md5(serialize($this)); + } + + /** + * Get the copyright URL + * + * @return string|null URL to copyright information + */ + public function get_url() + { + if ($this->url !== null) + { + return $this->url; + } + else + { + return null; + } + } + + /** + * Get the attribution text + * + * @return string|null + */ + public function get_attribution() + { + if ($this->label !== null) + { + return $this->label; + } + else + { + return null; + } + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Core.php b/vendor/simplepie/simplepie/library/SimplePie/Core.php new file mode 100644 index 000000000..c856ba361 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Core.php @@ -0,0 +1,56 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * SimplePie class. + * + * Class for backward compatibility. + * + * @deprecated Use {@see SimplePie} directly + * @package SimplePie + * @subpackage API + */ +class SimplePie_Core extends SimplePie +{ + +}
\ No newline at end of file diff --git a/vendor/simplepie/simplepie/library/SimplePie/Credit.php b/vendor/simplepie/simplepie/library/SimplePie/Credit.php new file mode 100644 index 000000000..9bad9ef34 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Credit.php @@ -0,0 +1,155 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Handles `<media:credit>` as defined in Media RSS + * + * Used by {@see SimplePie_Enclosure::get_credit()} and {@see SimplePie_Enclosure::get_credits()} + * + * This class can be overloaded with {@see SimplePie::set_credit_class()} + * + * @package SimplePie + * @subpackage API + */ +class SimplePie_Credit +{ + /** + * Credited role + * + * @var string + * @see get_role() + */ + var $role; + + /** + * Organizational scheme + * + * @var string + * @see get_scheme() + */ + var $scheme; + + /** + * Credited name + * + * @var string + * @see get_name() + */ + var $name; + + /** + * Constructor, used to input the data + * + * For documentation on all the parameters, see the corresponding + * properties and their accessors + */ + public function __construct($role = null, $scheme = null, $name = null) + { + $this->role = $role; + $this->scheme = $scheme; + $this->name = $name; + } + + /** + * String-ified version + * + * @return string + */ + public function __toString() + { + // There is no $this->data here + return md5(serialize($this)); + } + + /** + * Get the role of the person receiving credit + * + * @return string|null + */ + public function get_role() + { + if ($this->role !== null) + { + return $this->role; + } + else + { + return null; + } + } + + /** + * Get the organizational scheme + * + * @return string|null + */ + public function get_scheme() + { + if ($this->scheme !== null) + { + return $this->scheme; + } + else + { + return null; + } + } + + /** + * Get the credited person/entity's name + * + * @return string|null + */ + public function get_name() + { + if ($this->name !== null) + { + return $this->name; + } + else + { + return null; + } + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php b/vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php new file mode 100644 index 000000000..de3f2cb53 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Decode/HTML/Entities.php @@ -0,0 +1,615 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + + +/** + * Decode HTML Entities + * + * This implements HTML5 as of revision 967 (2007-06-28) + * + * @deprecated Use DOMDocument instead! + * @package SimplePie + */ +class SimplePie_Decode_HTML_Entities +{ + /** + * Data to be parsed + * + * @access private + * @var string + */ + var $data = ''; + + /** + * Currently consumed bytes + * + * @access private + * @var string + */ + var $consumed = ''; + + /** + * Position of the current byte being parsed + * + * @access private + * @var int + */ + var $position = 0; + + /** + * Create an instance of the class with the input data + * + * @access public + * @param string $data Input data + */ + public function __construct($data) + { + $this->data = $data; + } + + /** + * Parse the input data + * + * @access public + * @return string Output data + */ + public function parse() + { + while (($this->position = strpos($this->data, '&', $this->position)) !== false) + { + $this->consume(); + $this->entity(); + $this->consumed = ''; + } + return $this->data; + } + + /** + * Consume the next byte + * + * @access private + * @return mixed The next byte, or false, if there is no more data + */ + public function consume() + { + if (isset($this->data[$this->position])) + { + $this->consumed .= $this->data[$this->position]; + return $this->data[$this->position++]; + } + else + { + return false; + } + } + + /** + * Consume a range of characters + * + * @access private + * @param string $chars Characters to consume + * @return mixed A series of characters that match the range, or false + */ + public function consume_range($chars) + { + if ($len = strspn($this->data, $chars, $this->position)) + { + $data = substr($this->data, $this->position, $len); + $this->consumed .= $data; + $this->position += $len; + return $data; + } + else + { + return false; + } + } + + /** + * Unconsume one byte + * + * @access private + */ + public function unconsume() + { + $this->consumed = substr($this->consumed, 0, -1); + $this->position--; + } + + /** + * Decode an entity + * + * @access private + */ + public function entity() + { + switch ($this->consume()) + { + case "\x09": + case "\x0A": + case "\x0B": + case "\x0C": + case "\x20": + case "\x3C": + case "\x26": + case false: + break; + + case "\x23": + switch ($this->consume()) + { + case "\x78": + case "\x58": + $range = '0123456789ABCDEFabcdef'; + $hex = true; + break; + + default: + $range = '0123456789'; + $hex = false; + $this->unconsume(); + break; + } + + if ($codepoint = $this->consume_range($range)) + { + static $windows_1252_specials = array(0x0D => "\x0A", 0x80 => "\xE2\x82\xAC", 0x81 => "\xEF\xBF\xBD", 0x82 => "\xE2\x80\x9A", 0x83 => "\xC6\x92", 0x84 => "\xE2\x80\x9E", 0x85 => "\xE2\x80\xA6", 0x86 => "\xE2\x80\xA0", 0x87 => "\xE2\x80\xA1", 0x88 => "\xCB\x86", 0x89 => "\xE2\x80\xB0", 0x8A => "\xC5\xA0", 0x8B => "\xE2\x80\xB9", 0x8C => "\xC5\x92", 0x8D => "\xEF\xBF\xBD", 0x8E => "\xC5\xBD", 0x8F => "\xEF\xBF\xBD", 0x90 => "\xEF\xBF\xBD", 0x91 => "\xE2\x80\x98", 0x92 => "\xE2\x80\x99", 0x93 => "\xE2\x80\x9C", 0x94 => "\xE2\x80\x9D", 0x95 => "\xE2\x80\xA2", 0x96 => "\xE2\x80\x93", 0x97 => "\xE2\x80\x94", 0x98 => "\xCB\x9C", 0x99 => "\xE2\x84\xA2", 0x9A => "\xC5\xA1", 0x9B => "\xE2\x80\xBA", 0x9C => "\xC5\x93", 0x9D => "\xEF\xBF\xBD", 0x9E => "\xC5\xBE", 0x9F => "\xC5\xB8"); + + if ($hex) + { + $codepoint = hexdec($codepoint); + } + else + { + $codepoint = intval($codepoint); + } + + if (isset($windows_1252_specials[$codepoint])) + { + $replacement = $windows_1252_specials[$codepoint]; + } + else + { + $replacement = SimplePie_Misc::codepoint_to_utf8($codepoint); + } + + if (!in_array($this->consume(), array(';', false), true)) + { + $this->unconsume(); + } + + $consumed_length = strlen($this->consumed); + $this->data = substr_replace($this->data, $replacement, $this->position - $consumed_length, $consumed_length); + $this->position += strlen($replacement) - $consumed_length; + } + break; + + default: + static $entities = array( + 'Aacute' => "\xC3\x81", + 'aacute' => "\xC3\xA1", + 'Aacute;' => "\xC3\x81", + 'aacute;' => "\xC3\xA1", + 'Acirc' => "\xC3\x82", + 'acirc' => "\xC3\xA2", + 'Acirc;' => "\xC3\x82", + 'acirc;' => "\xC3\xA2", + 'acute' => "\xC2\xB4", + 'acute;' => "\xC2\xB4", + 'AElig' => "\xC3\x86", + 'aelig' => "\xC3\xA6", + 'AElig;' => "\xC3\x86", + 'aelig;' => "\xC3\xA6", + 'Agrave' => "\xC3\x80", + 'agrave' => "\xC3\xA0", + 'Agrave;' => "\xC3\x80", + 'agrave;' => "\xC3\xA0", + 'alefsym;' => "\xE2\x84\xB5", + 'Alpha;' => "\xCE\x91", + 'alpha;' => "\xCE\xB1", + 'AMP' => "\x26", + 'amp' => "\x26", + 'AMP;' => "\x26", + 'amp;' => "\x26", + 'and;' => "\xE2\x88\xA7", + 'ang;' => "\xE2\x88\xA0", + 'apos;' => "\x27", + 'Aring' => "\xC3\x85", + 'aring' => "\xC3\xA5", + 'Aring;' => "\xC3\x85", + 'aring;' => "\xC3\xA5", + 'asymp;' => "\xE2\x89\x88", + 'Atilde' => "\xC3\x83", + 'atilde' => "\xC3\xA3", + 'Atilde;' => "\xC3\x83", + 'atilde;' => "\xC3\xA3", + 'Auml' => "\xC3\x84", + 'auml' => "\xC3\xA4", + 'Auml;' => "\xC3\x84", + 'auml;' => "\xC3\xA4", + 'bdquo;' => "\xE2\x80\x9E", + 'Beta;' => "\xCE\x92", + 'beta;' => "\xCE\xB2", + 'brvbar' => "\xC2\xA6", + 'brvbar;' => "\xC2\xA6", + 'bull;' => "\xE2\x80\xA2", + 'cap;' => "\xE2\x88\xA9", + 'Ccedil' => "\xC3\x87", + 'ccedil' => "\xC3\xA7", + 'Ccedil;' => "\xC3\x87", + 'ccedil;' => "\xC3\xA7", + 'cedil' => "\xC2\xB8", + 'cedil;' => "\xC2\xB8", + 'cent' => "\xC2\xA2", + 'cent;' => "\xC2\xA2", + 'Chi;' => "\xCE\xA7", + 'chi;' => "\xCF\x87", + 'circ;' => "\xCB\x86", + 'clubs;' => "\xE2\x99\xA3", + 'cong;' => "\xE2\x89\x85", + 'COPY' => "\xC2\xA9", + 'copy' => "\xC2\xA9", + 'COPY;' => "\xC2\xA9", + 'copy;' => "\xC2\xA9", + 'crarr;' => "\xE2\x86\xB5", + 'cup;' => "\xE2\x88\xAA", + 'curren' => "\xC2\xA4", + 'curren;' => "\xC2\xA4", + 'Dagger;' => "\xE2\x80\xA1", + 'dagger;' => "\xE2\x80\xA0", + 'dArr;' => "\xE2\x87\x93", + 'darr;' => "\xE2\x86\x93", + 'deg' => "\xC2\xB0", + 'deg;' => "\xC2\xB0", + 'Delta;' => "\xCE\x94", + 'delta;' => "\xCE\xB4", + 'diams;' => "\xE2\x99\xA6", + 'divide' => "\xC3\xB7", + 'divide;' => "\xC3\xB7", + 'Eacute' => "\xC3\x89", + 'eacute' => "\xC3\xA9", + 'Eacute;' => "\xC3\x89", + 'eacute;' => "\xC3\xA9", + 'Ecirc' => "\xC3\x8A", + 'ecirc' => "\xC3\xAA", + 'Ecirc;' => "\xC3\x8A", + 'ecirc;' => "\xC3\xAA", + 'Egrave' => "\xC3\x88", + 'egrave' => "\xC3\xA8", + 'Egrave;' => "\xC3\x88", + 'egrave;' => "\xC3\xA8", + 'empty;' => "\xE2\x88\x85", + 'emsp;' => "\xE2\x80\x83", + 'ensp;' => "\xE2\x80\x82", + 'Epsilon;' => "\xCE\x95", + 'epsilon;' => "\xCE\xB5", + 'equiv;' => "\xE2\x89\xA1", + 'Eta;' => "\xCE\x97", + 'eta;' => "\xCE\xB7", + 'ETH' => "\xC3\x90", + 'eth' => "\xC3\xB0", + 'ETH;' => "\xC3\x90", + 'eth;' => "\xC3\xB0", + 'Euml' => "\xC3\x8B", + 'euml' => "\xC3\xAB", + 'Euml;' => "\xC3\x8B", + 'euml;' => "\xC3\xAB", + 'euro;' => "\xE2\x82\xAC", + 'exist;' => "\xE2\x88\x83", + 'fnof;' => "\xC6\x92", + 'forall;' => "\xE2\x88\x80", + 'frac12' => "\xC2\xBD", + 'frac12;' => "\xC2\xBD", + 'frac14' => "\xC2\xBC", + 'frac14;' => "\xC2\xBC", + 'frac34' => "\xC2\xBE", + 'frac34;' => "\xC2\xBE", + 'frasl;' => "\xE2\x81\x84", + 'Gamma;' => "\xCE\x93", + 'gamma;' => "\xCE\xB3", + 'ge;' => "\xE2\x89\xA5", + 'GT' => "\x3E", + 'gt' => "\x3E", + 'GT;' => "\x3E", + 'gt;' => "\x3E", + 'hArr;' => "\xE2\x87\x94", + 'harr;' => "\xE2\x86\x94", + 'hearts;' => "\xE2\x99\xA5", + 'hellip;' => "\xE2\x80\xA6", + 'Iacute' => "\xC3\x8D", + 'iacute' => "\xC3\xAD", + 'Iacute;' => "\xC3\x8D", + 'iacute;' => "\xC3\xAD", + 'Icirc' => "\xC3\x8E", + 'icirc' => "\xC3\xAE", + 'Icirc;' => "\xC3\x8E", + 'icirc;' => "\xC3\xAE", + 'iexcl' => "\xC2\xA1", + 'iexcl;' => "\xC2\xA1", + 'Igrave' => "\xC3\x8C", + 'igrave' => "\xC3\xAC", + 'Igrave;' => "\xC3\x8C", + 'igrave;' => "\xC3\xAC", + 'image;' => "\xE2\x84\x91", + 'infin;' => "\xE2\x88\x9E", + 'int;' => "\xE2\x88\xAB", + 'Iota;' => "\xCE\x99", + 'iota;' => "\xCE\xB9", + 'iquest' => "\xC2\xBF", + 'iquest;' => "\xC2\xBF", + 'isin;' => "\xE2\x88\x88", + 'Iuml' => "\xC3\x8F", + 'iuml' => "\xC3\xAF", + 'Iuml;' => "\xC3\x8F", + 'iuml;' => "\xC3\xAF", + 'Kappa;' => "\xCE\x9A", + 'kappa;' => "\xCE\xBA", + 'Lambda;' => "\xCE\x9B", + 'lambda;' => "\xCE\xBB", + 'lang;' => "\xE3\x80\x88", + 'laquo' => "\xC2\xAB", + 'laquo;' => "\xC2\xAB", + 'lArr;' => "\xE2\x87\x90", + 'larr;' => "\xE2\x86\x90", + 'lceil;' => "\xE2\x8C\x88", + 'ldquo;' => "\xE2\x80\x9C", + 'le;' => "\xE2\x89\xA4", + 'lfloor;' => "\xE2\x8C\x8A", + 'lowast;' => "\xE2\x88\x97", + 'loz;' => "\xE2\x97\x8A", + 'lrm;' => "\xE2\x80\x8E", + 'lsaquo;' => "\xE2\x80\xB9", + 'lsquo;' => "\xE2\x80\x98", + 'LT' => "\x3C", + 'lt' => "\x3C", + 'LT;' => "\x3C", + 'lt;' => "\x3C", + 'macr' => "\xC2\xAF", + 'macr;' => "\xC2\xAF", + 'mdash;' => "\xE2\x80\x94", + 'micro' => "\xC2\xB5", + 'micro;' => "\xC2\xB5", + 'middot' => "\xC2\xB7", + 'middot;' => "\xC2\xB7", + 'minus;' => "\xE2\x88\x92", + 'Mu;' => "\xCE\x9C", + 'mu;' => "\xCE\xBC", + 'nabla;' => "\xE2\x88\x87", + 'nbsp' => "\xC2\xA0", + 'nbsp;' => "\xC2\xA0", + 'ndash;' => "\xE2\x80\x93", + 'ne;' => "\xE2\x89\xA0", + 'ni;' => "\xE2\x88\x8B", + 'not' => "\xC2\xAC", + 'not;' => "\xC2\xAC", + 'notin;' => "\xE2\x88\x89", + 'nsub;' => "\xE2\x8A\x84", + 'Ntilde' => "\xC3\x91", + 'ntilde' => "\xC3\xB1", + 'Ntilde;' => "\xC3\x91", + 'ntilde;' => "\xC3\xB1", + 'Nu;' => "\xCE\x9D", + 'nu;' => "\xCE\xBD", + 'Oacute' => "\xC3\x93", + 'oacute' => "\xC3\xB3", + 'Oacute;' => "\xC3\x93", + 'oacute;' => "\xC3\xB3", + 'Ocirc' => "\xC3\x94", + 'ocirc' => "\xC3\xB4", + 'Ocirc;' => "\xC3\x94", + 'ocirc;' => "\xC3\xB4", + 'OElig;' => "\xC5\x92", + 'oelig;' => "\xC5\x93", + 'Ograve' => "\xC3\x92", + 'ograve' => "\xC3\xB2", + 'Ograve;' => "\xC3\x92", + 'ograve;' => "\xC3\xB2", + 'oline;' => "\xE2\x80\xBE", + 'Omega;' => "\xCE\xA9", + 'omega;' => "\xCF\x89", + 'Omicron;' => "\xCE\x9F", + 'omicron;' => "\xCE\xBF", + 'oplus;' => "\xE2\x8A\x95", + 'or;' => "\xE2\x88\xA8", + 'ordf' => "\xC2\xAA", + 'ordf;' => "\xC2\xAA", + 'ordm' => "\xC2\xBA", + 'ordm;' => "\xC2\xBA", + 'Oslash' => "\xC3\x98", + 'oslash' => "\xC3\xB8", + 'Oslash;' => "\xC3\x98", + 'oslash;' => "\xC3\xB8", + 'Otilde' => "\xC3\x95", + 'otilde' => "\xC3\xB5", + 'Otilde;' => "\xC3\x95", + 'otilde;' => "\xC3\xB5", + 'otimes;' => "\xE2\x8A\x97", + 'Ouml' => "\xC3\x96", + 'ouml' => "\xC3\xB6", + 'Ouml;' => "\xC3\x96", + 'ouml;' => "\xC3\xB6", + 'para' => "\xC2\xB6", + 'para;' => "\xC2\xB6", + 'part;' => "\xE2\x88\x82", + 'permil;' => "\xE2\x80\xB0", + 'perp;' => "\xE2\x8A\xA5", + 'Phi;' => "\xCE\xA6", + 'phi;' => "\xCF\x86", + 'Pi;' => "\xCE\xA0", + 'pi;' => "\xCF\x80", + 'piv;' => "\xCF\x96", + 'plusmn' => "\xC2\xB1", + 'plusmn;' => "\xC2\xB1", + 'pound' => "\xC2\xA3", + 'pound;' => "\xC2\xA3", + 'Prime;' => "\xE2\x80\xB3", + 'prime;' => "\xE2\x80\xB2", + 'prod;' => "\xE2\x88\x8F", + 'prop;' => "\xE2\x88\x9D", + 'Psi;' => "\xCE\xA8", + 'psi;' => "\xCF\x88", + 'QUOT' => "\x22", + 'quot' => "\x22", + 'QUOT;' => "\x22", + 'quot;' => "\x22", + 'radic;' => "\xE2\x88\x9A", + 'rang;' => "\xE3\x80\x89", + 'raquo' => "\xC2\xBB", + 'raquo;' => "\xC2\xBB", + 'rArr;' => "\xE2\x87\x92", + 'rarr;' => "\xE2\x86\x92", + 'rceil;' => "\xE2\x8C\x89", + 'rdquo;' => "\xE2\x80\x9D", + 'real;' => "\xE2\x84\x9C", + 'REG' => "\xC2\xAE", + 'reg' => "\xC2\xAE", + 'REG;' => "\xC2\xAE", + 'reg;' => "\xC2\xAE", + 'rfloor;' => "\xE2\x8C\x8B", + 'Rho;' => "\xCE\xA1", + 'rho;' => "\xCF\x81", + 'rlm;' => "\xE2\x80\x8F", + 'rsaquo;' => "\xE2\x80\xBA", + 'rsquo;' => "\xE2\x80\x99", + 'sbquo;' => "\xE2\x80\x9A", + 'Scaron;' => "\xC5\xA0", + 'scaron;' => "\xC5\xA1", + 'sdot;' => "\xE2\x8B\x85", + 'sect' => "\xC2\xA7", + 'sect;' => "\xC2\xA7", + 'shy' => "\xC2\xAD", + 'shy;' => "\xC2\xAD", + 'Sigma;' => "\xCE\xA3", + 'sigma;' => "\xCF\x83", + 'sigmaf;' => "\xCF\x82", + 'sim;' => "\xE2\x88\xBC", + 'spades;' => "\xE2\x99\xA0", + 'sub;' => "\xE2\x8A\x82", + 'sube;' => "\xE2\x8A\x86", + 'sum;' => "\xE2\x88\x91", + 'sup;' => "\xE2\x8A\x83", + 'sup1' => "\xC2\xB9", + 'sup1;' => "\xC2\xB9", + 'sup2' => "\xC2\xB2", + 'sup2;' => "\xC2\xB2", + 'sup3' => "\xC2\xB3", + 'sup3;' => "\xC2\xB3", + 'supe;' => "\xE2\x8A\x87", + 'szlig' => "\xC3\x9F", + 'szlig;' => "\xC3\x9F", + 'Tau;' => "\xCE\xA4", + 'tau;' => "\xCF\x84", + 'there4;' => "\xE2\x88\xB4", + 'Theta;' => "\xCE\x98", + 'theta;' => "\xCE\xB8", + 'thetasym;' => "\xCF\x91", + 'thinsp;' => "\xE2\x80\x89", + 'THORN' => "\xC3\x9E", + 'thorn' => "\xC3\xBE", + 'THORN;' => "\xC3\x9E", + 'thorn;' => "\xC3\xBE", + 'tilde;' => "\xCB\x9C", + 'times' => "\xC3\x97", + 'times;' => "\xC3\x97", + 'TRADE;' => "\xE2\x84\xA2", + 'trade;' => "\xE2\x84\xA2", + 'Uacute' => "\xC3\x9A", + 'uacute' => "\xC3\xBA", + 'Uacute;' => "\xC3\x9A", + 'uacute;' => "\xC3\xBA", + 'uArr;' => "\xE2\x87\x91", + 'uarr;' => "\xE2\x86\x91", + 'Ucirc' => "\xC3\x9B", + 'ucirc' => "\xC3\xBB", + 'Ucirc;' => "\xC3\x9B", + 'ucirc;' => "\xC3\xBB", + 'Ugrave' => "\xC3\x99", + 'ugrave' => "\xC3\xB9", + 'Ugrave;' => "\xC3\x99", + 'ugrave;' => "\xC3\xB9", + 'uml' => "\xC2\xA8", + 'uml;' => "\xC2\xA8", + 'upsih;' => "\xCF\x92", + 'Upsilon;' => "\xCE\xA5", + 'upsilon;' => "\xCF\x85", + 'Uuml' => "\xC3\x9C", + 'uuml' => "\xC3\xBC", + 'Uuml;' => "\xC3\x9C", + 'uuml;' => "\xC3\xBC", + 'weierp;' => "\xE2\x84\x98", + 'Xi;' => "\xCE\x9E", + 'xi;' => "\xCE\xBE", + 'Yacute' => "\xC3\x9D", + 'yacute' => "\xC3\xBD", + 'Yacute;' => "\xC3\x9D", + 'yacute;' => "\xC3\xBD", + 'yen' => "\xC2\xA5", + 'yen;' => "\xC2\xA5", + 'yuml' => "\xC3\xBF", + 'Yuml;' => "\xC5\xB8", + 'yuml;' => "\xC3\xBF", + 'Zeta;' => "\xCE\x96", + 'zeta;' => "\xCE\xB6", + 'zwj;' => "\xE2\x80\x8D", + 'zwnj;' => "\xE2\x80\x8C" + ); + + for ($i = 0, $match = null; $i < 9 && $this->consume() !== false; $i++) + { + $consumed = substr($this->consumed, 1); + if (isset($entities[$consumed])) + { + $match = $consumed; + } + } + + if ($match !== null) + { + $this->data = substr_replace($this->data, $entities[$match], $this->position - strlen($consumed) - 1, strlen($match) + 1); + $this->position += strlen($entities[$match]) - strlen($consumed) - 1; + } + break; + } + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php b/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php new file mode 100644 index 000000000..15060e193 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Enclosure.php @@ -0,0 +1,1379 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Handles everything related to enclosures (including Media RSS and iTunes RSS) + * + * Used by {@see SimplePie_Item::get_enclosure()} and {@see SimplePie_Item::get_enclosures()} + * + * This class can be overloaded with {@see SimplePie::set_enclosure_class()} + * + * @package SimplePie + * @subpackage API + */ +class SimplePie_Enclosure +{ + /** + * @var string + * @see get_bitrate() + */ + var $bitrate; + + /** + * @var array + * @see get_captions() + */ + var $captions; + + /** + * @var array + * @see get_categories() + */ + var $categories; + + /** + * @var int + * @see get_channels() + */ + var $channels; + + /** + * @var SimplePie_Copyright + * @see get_copyright() + */ + var $copyright; + + /** + * @var array + * @see get_credits() + */ + var $credits; + + /** + * @var string + * @see get_description() + */ + var $description; + + /** + * @var int + * @see get_duration() + */ + var $duration; + + /** + * @var string + * @see get_expression() + */ + var $expression; + + /** + * @var string + * @see get_framerate() + */ + var $framerate; + + /** + * @var string + * @see get_handler() + */ + var $handler; + + /** + * @var array + * @see get_hashes() + */ + var $hashes; + + /** + * @var string + * @see get_height() + */ + var $height; + + /** + * @deprecated + * @var null + */ + var $javascript; + + /** + * @var array + * @see get_keywords() + */ + var $keywords; + + /** + * @var string + * @see get_language() + */ + var $lang; + + /** + * @var string + * @see get_length() + */ + var $length; + + /** + * @var string + * @see get_link() + */ + var $link; + + /** + * @var string + * @see get_medium() + */ + var $medium; + + /** + * @var string + * @see get_player() + */ + var $player; + + /** + * @var array + * @see get_ratings() + */ + var $ratings; + + /** + * @var array + * @see get_restrictions() + */ + var $restrictions; + + /** + * @var string + * @see get_sampling_rate() + */ + var $samplingrate; + + /** + * @var array + * @see get_thumbnails() + */ + var $thumbnails; + + /** + * @var string + * @see get_title() + */ + var $title; + + /** + * @var string + * @see get_type() + */ + var $type; + + /** + * @var string + * @see get_width() + */ + var $width; + + /** + * Constructor, used to input the data + * + * For documentation on all the parameters, see the corresponding + * properties and their accessors + * + * @uses idna_convert If available, this will convert an IDN + */ + public function __construct($link = null, $type = null, $length = null, $javascript = null, $bitrate = null, $captions = null, $categories = null, $channels = null, $copyright = null, $credits = null, $description = null, $duration = null, $expression = null, $framerate = null, $hashes = null, $height = null, $keywords = null, $lang = null, $medium = null, $player = null, $ratings = null, $restrictions = null, $samplingrate = null, $thumbnails = null, $title = null, $width = null) + { + $this->bitrate = $bitrate; + $this->captions = $captions; + $this->categories = $categories; + $this->channels = $channels; + $this->copyright = $copyright; + $this->credits = $credits; + $this->description = $description; + $this->duration = $duration; + $this->expression = $expression; + $this->framerate = $framerate; + $this->hashes = $hashes; + $this->height = $height; + $this->keywords = $keywords; + $this->lang = $lang; + $this->length = $length; + $this->link = $link; + $this->medium = $medium; + $this->player = $player; + $this->ratings = $ratings; + $this->restrictions = $restrictions; + $this->samplingrate = $samplingrate; + $this->thumbnails = $thumbnails; + $this->title = $title; + $this->type = $type; + $this->width = $width; + + if (class_exists('idna_convert')) + { + $idn = new idna_convert(); + $parsed = SimplePie_Misc::parse_url($link); + $this->link = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']); + } + $this->handler = $this->get_handler(); // Needs to load last + } + + /** + * String-ified version + * + * @return string + */ + public function __toString() + { + // There is no $this->data here + return md5(serialize($this)); + } + + /** + * Get the bitrate + * + * @return string|null + */ + public function get_bitrate() + { + if ($this->bitrate !== null) + { + return $this->bitrate; + } + else + { + return null; + } + } + + /** + * Get a single caption + * + * @param int $key + * @return SimplePie_Caption|null + */ + public function get_caption($key = 0) + { + $captions = $this->get_captions(); + if (isset($captions[$key])) + { + return $captions[$key]; + } + else + { + return null; + } + } + + /** + * Get all captions + * + * @return array|null Array of {@see SimplePie_Caption} objects + */ + public function get_captions() + { + if ($this->captions !== null) + { + return $this->captions; + } + else + { + return null; + } + } + + /** + * Get a single category + * + * @param int $key + * @return SimplePie_Category|null + */ + public function get_category($key = 0) + { + $categories = $this->get_categories(); + if (isset($categories[$key])) + { + return $categories[$key]; + } + else + { + return null; + } + } + + /** + * Get all categories + * + * @return array|null Array of {@see SimplePie_Category} objects + */ + public function get_categories() + { + if ($this->categories !== null) + { + return $this->categories; + } + else + { + return null; + } + } + + /** + * Get the number of audio channels + * + * @return int|null + */ + public function get_channels() + { + if ($this->channels !== null) + { + return $this->channels; + } + else + { + return null; + } + } + + /** + * Get the copyright information + * + * @return SimplePie_Copyright|null + */ + public function get_copyright() + { + if ($this->copyright !== null) + { + return $this->copyright; + } + else + { + return null; + } + } + + /** + * Get a single credit + * + * @param int $key + * @return SimplePie_Credit|null + */ + public function get_credit($key = 0) + { + $credits = $this->get_credits(); + if (isset($credits[$key])) + { + return $credits[$key]; + } + else + { + return null; + } + } + + /** + * Get all credits + * + * @return array|null Array of {@see SimplePie_Credit} objects + */ + public function get_credits() + { + if ($this->credits !== null) + { + return $this->credits; + } + else + { + return null; + } + } + + /** + * Get the description of the enclosure + * + * @return string|null + */ + public function get_description() + { + if ($this->description !== null) + { + return $this->description; + } + else + { + return null; + } + } + + /** + * Get the duration of the enclosure + * + * @param bool $convert Convert seconds into hh:mm:ss + * @return string|int|null 'hh:mm:ss' string if `$convert` was specified, otherwise integer (or null if none found) + */ + public function get_duration($convert = false) + { + if ($this->duration !== null) + { + if ($convert) + { + $time = SimplePie_Misc::time_hms($this->duration); + return $time; + } + else + { + return $this->duration; + } + } + else + { + return null; + } + } + + /** + * Get the expression + * + * @return string Probably one of 'sample', 'full', 'nonstop', 'clip'. Defaults to 'full' + */ + public function get_expression() + { + if ($this->expression !== null) + { + return $this->expression; + } + else + { + return 'full'; + } + } + + /** + * Get the file extension + * + * @return string|null + */ + public function get_extension() + { + if ($this->link !== null) + { + $url = SimplePie_Misc::parse_url($this->link); + if ($url['path'] !== '') + { + return pathinfo($url['path'], PATHINFO_EXTENSION); + } + } + return null; + } + + /** + * Get the framerate (in frames-per-second) + * + * @return string|null + */ + public function get_framerate() + { + if ($this->framerate !== null) + { + return $this->framerate; + } + else + { + return null; + } + } + + /** + * Get the preferred handler + * + * @return string|null One of 'flash', 'fmedia', 'quicktime', 'wmedia', 'mp3' + */ + public function get_handler() + { + return $this->get_real_type(true); + } + + /** + * Get a single hash + * + * @link http://www.rssboard.org/media-rss#media-hash + * @param int $key + * @return string|null Hash as per `media:hash`, prefixed with "$algo:" + */ + public function get_hash($key = 0) + { + $hashes = $this->get_hashes(); + if (isset($hashes[$key])) + { + return $hashes[$key]; + } + else + { + return null; + } + } + + /** + * Get all credits + * + * @return array|null Array of strings, see {@see get_hash()} + */ + public function get_hashes() + { + if ($this->hashes !== null) + { + return $this->hashes; + } + else + { + return null; + } + } + + /** + * Get the height + * + * @return string|null + */ + public function get_height() + { + if ($this->height !== null) + { + return $this->height; + } + else + { + return null; + } + } + + /** + * Get the language + * + * @link http://tools.ietf.org/html/rfc3066 + * @return string|null Language code as per RFC 3066 + */ + public function get_language() + { + if ($this->lang !== null) + { + return $this->lang; + } + else + { + return null; + } + } + + /** + * Get a single keyword + * + * @param int $key + * @return string|null + */ + public function get_keyword($key = 0) + { + $keywords = $this->get_keywords(); + if (isset($keywords[$key])) + { + return $keywords[$key]; + } + else + { + return null; + } + } + + /** + * Get all keywords + * + * @return array|null Array of strings + */ + public function get_keywords() + { + if ($this->keywords !== null) + { + return $this->keywords; + } + else + { + return null; + } + } + + /** + * Get length + * + * @return float Length in bytes + */ + public function get_length() + { + if ($this->length !== null) + { + return $this->length; + } + else + { + return null; + } + } + + /** + * Get the URL + * + * @return string|null + */ + public function get_link() + { + if ($this->link !== null) + { + return urldecode($this->link); + } + else + { + return null; + } + } + + /** + * Get the medium + * + * @link http://www.rssboard.org/media-rss#media-content + * @return string|null Should be one of 'image', 'audio', 'video', 'document', 'executable' + */ + public function get_medium() + { + if ($this->medium !== null) + { + return $this->medium; + } + else + { + return null; + } + } + + /** + * Get the player URL + * + * Typically the same as {@see get_permalink()} + * @return string|null Player URL + */ + public function get_player() + { + if ($this->player !== null) + { + return $this->player; + } + else + { + return null; + } + } + + /** + * Get a single rating + * + * @param int $key + * @return SimplePie_Rating|null + */ + public function get_rating($key = 0) + { + $ratings = $this->get_ratings(); + if (isset($ratings[$key])) + { + return $ratings[$key]; + } + else + { + return null; + } + } + + /** + * Get all ratings + * + * @return array|null Array of {@see SimplePie_Rating} objects + */ + public function get_ratings() + { + if ($this->ratings !== null) + { + return $this->ratings; + } + else + { + return null; + } + } + + /** + * Get a single restriction + * + * @param int $key + * @return SimplePie_Restriction|null + */ + public function get_restriction($key = 0) + { + $restrictions = $this->get_restrictions(); + if (isset($restrictions[$key])) + { + return $restrictions[$key]; + } + else + { + return null; + } + } + + /** + * Get all restrictions + * + * @return array|null Array of {@see SimplePie_Restriction} objects + */ + public function get_restrictions() + { + if ($this->restrictions !== null) + { + return $this->restrictions; + } + else + { + return null; + } + } + + /** + * Get the sampling rate (in kHz) + * + * @return string|null + */ + public function get_sampling_rate() + { + if ($this->samplingrate !== null) + { + return $this->samplingrate; + } + else + { + return null; + } + } + + /** + * Get the file size (in MiB) + * + * @return float|null File size in mebibytes (1048 bytes) + */ + public function get_size() + { + $length = $this->get_length(); + if ($length !== null) + { + return round($length/1048576, 2); + } + else + { + return null; + } + } + + /** + * Get a single thumbnail + * + * @param int $key + * @return string|null Thumbnail URL + */ + public function get_thumbnail($key = 0) + { + $thumbnails = $this->get_thumbnails(); + if (isset($thumbnails[$key])) + { + return $thumbnails[$key]; + } + else + { + return null; + } + } + + /** + * Get all thumbnails + * + * @return array|null Array of thumbnail URLs + */ + public function get_thumbnails() + { + if ($this->thumbnails !== null) + { + return $this->thumbnails; + } + else + { + return null; + } + } + + /** + * Get the title + * + * @return string|null + */ + public function get_title() + { + if ($this->title !== null) + { + return $this->title; + } + else + { + return null; + } + } + + /** + * Get mimetype of the enclosure + * + * @see get_real_type() + * @return string|null MIME type + */ + public function get_type() + { + if ($this->type !== null) + { + return $this->type; + } + else + { + return null; + } + } + + /** + * Get the width + * + * @return string|null + */ + public function get_width() + { + if ($this->width !== null) + { + return $this->width; + } + else + { + return null; + } + } + + /** + * Embed the enclosure using `<embed>` + * + * @deprecated Use the second parameter to {@see embed} instead + * + * @param array|string $options See first paramter to {@see embed} + * @return string HTML string to output + */ + public function native_embed($options='') + { + return $this->embed($options, true); + } + + /** + * Embed the enclosure using Javascript + * + * `$options` is an array or comma-separated key:value string, with the + * following properties: + * + * - `alt` (string): Alternate content for when an end-user does not have + * the appropriate handler installed or when a file type is + * unsupported. Can be any text or HTML. Defaults to blank. + * - `altclass` (string): If a file type is unsupported, the end-user will + * see the alt text (above) linked directly to the content. That link + * will have this value as its class name. Defaults to blank. + * - `audio` (string): This is an image that should be used as a + * placeholder for audio files before they're loaded (QuickTime-only). + * Can be any relative or absolute URL. Defaults to blank. + * - `bgcolor` (string): The background color for the media, if not + * already transparent. Defaults to `#ffffff`. + * - `height` (integer): The height of the embedded media. Accepts any + * numeric pixel value (such as `360`) or `auto`. Defaults to `auto`, + * and it is recommended that you use this default. + * - `loop` (boolean): Do you want the media to loop when it's done? + * Defaults to `false`. + * - `mediaplayer` (string): The location of the included + * `mediaplayer.swf` file. This allows for the playback of Flash Video + * (`.flv`) files, and is the default handler for non-Odeo MP3's. + * Defaults to blank. + * - `video` (string): This is an image that should be used as a + * placeholder for video files before they're loaded (QuickTime-only). + * Can be any relative or absolute URL. Defaults to blank. + * - `width` (integer): The width of the embedded media. Accepts any + * numeric pixel value (such as `480`) or `auto`. Defaults to `auto`, + * and it is recommended that you use this default. + * - `widescreen` (boolean): Is the enclosure widescreen or standard? + * This applies only to video enclosures, and will automatically resize + * the content appropriately. Defaults to `false`, implying 4:3 mode. + * + * Note: Non-widescreen (4:3) mode with `width` and `height` set to `auto` + * will default to 480x360 video resolution. Widescreen (16:9) mode with + * `width` and `height` set to `auto` will default to 480x270 video resolution. + * + * @todo If the dimensions for media:content are defined, use them when width/height are set to 'auto'. + * @param array|string $options Comma-separated key:value list, or array + * @param bool $native Use `<embed>` + * @return string HTML string to output + */ + public function embed($options = '', $native = false) + { + // Set up defaults + $audio = ''; + $video = ''; + $alt = ''; + $altclass = ''; + $loop = 'false'; + $width = 'auto'; + $height = 'auto'; + $bgcolor = '#ffffff'; + $mediaplayer = ''; + $widescreen = false; + $handler = $this->get_handler(); + $type = $this->get_real_type(); + + // Process options and reassign values as necessary + if (is_array($options)) + { + extract($options); + } + else + { + $options = explode(',', $options); + foreach($options as $option) + { + $opt = explode(':', $option, 2); + if (isset($opt[0], $opt[1])) + { + $opt[0] = trim($opt[0]); + $opt[1] = trim($opt[1]); + switch ($opt[0]) + { + case 'audio': + $audio = $opt[1]; + break; + + case 'video': + $video = $opt[1]; + break; + + case 'alt': + $alt = $opt[1]; + break; + + case 'altclass': + $altclass = $opt[1]; + break; + + case 'loop': + $loop = $opt[1]; + break; + + case 'width': + $width = $opt[1]; + break; + + case 'height': + $height = $opt[1]; + break; + + case 'bgcolor': + $bgcolor = $opt[1]; + break; + + case 'mediaplayer': + $mediaplayer = $opt[1]; + break; + + case 'widescreen': + $widescreen = $opt[1]; + break; + } + } + } + } + + $mime = explode('/', $type, 2); + $mime = $mime[0]; + + // Process values for 'auto' + if ($width === 'auto') + { + if ($mime === 'video') + { + if ($height === 'auto') + { + $width = 480; + } + elseif ($widescreen) + { + $width = round((intval($height)/9)*16); + } + else + { + $width = round((intval($height)/3)*4); + } + } + else + { + $width = '100%'; + } + } + + if ($height === 'auto') + { + if ($mime === 'audio') + { + $height = 0; + } + elseif ($mime === 'video') + { + if ($width === 'auto') + { + if ($widescreen) + { + $height = 270; + } + else + { + $height = 360; + } + } + elseif ($widescreen) + { + $height = round((intval($width)/16)*9); + } + else + { + $height = round((intval($width)/4)*3); + } + } + else + { + $height = 376; + } + } + elseif ($mime === 'audio') + { + $height = 0; + } + + // Set proper placeholder value + if ($mime === 'audio') + { + $placeholder = $audio; + } + elseif ($mime === 'video') + { + $placeholder = $video; + } + + $embed = ''; + + // Flash + if ($handler === 'flash') + { + if ($native) + { + $embed .= "<embed src=\"" . $this->get_link() . "\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"$type\" quality=\"high\" width=\"$width\" height=\"$height\" bgcolor=\"$bgcolor\" loop=\"$loop\"></embed>"; + } + else + { + $embed .= "<script type='text/javascript'>embed_flash('$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$loop', '$type');</script>"; + } + } + + // Flash Media Player file types. + // Preferred handler for MP3 file types. + elseif ($handler === 'fmedia' || ($handler === 'mp3' && $mediaplayer !== '')) + { + $height += 20; + if ($native) + { + $embed .= "<embed src=\"$mediaplayer\" pluginspage=\"http://adobe.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" quality=\"high\" width=\"$width\" height=\"$height\" wmode=\"transparent\" flashvars=\"file=" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "&autostart=false&repeat=$loop&showdigits=true&showfsbutton=false\"></embed>"; + } + else + { + $embed .= "<script type='text/javascript'>embed_flv('$width', '$height', '" . rawurlencode($this->get_link().'?file_extension=.'.$this->get_extension()) . "', '$placeholder', '$loop', '$mediaplayer');</script>"; + } + } + + // QuickTime 7 file types. Need to test with QuickTime 6. + // Only handle MP3's if the Flash Media Player is not present. + elseif ($handler === 'quicktime' || ($handler === 'mp3' && $mediaplayer === '')) + { + $height += 16; + if ($native) + { + if ($placeholder !== '') + { + $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" href=\"" . $this->get_link() . "\" src=\"$placeholder\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"false\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>"; + } + else + { + $embed .= "<embed type=\"$type\" style=\"cursor:hand; cursor:pointer;\" src=\"" . $this->get_link() . "\" width=\"$width\" height=\"$height\" autoplay=\"false\" target=\"myself\" controller=\"true\" loop=\"$loop\" scale=\"aspect\" bgcolor=\"$bgcolor\" pluginspage=\"http://apple.com/quicktime/download/\"></embed>"; + } + } + else + { + $embed .= "<script type='text/javascript'>embed_quicktime('$type', '$bgcolor', '$width', '$height', '" . $this->get_link() . "', '$placeholder', '$loop');</script>"; + } + } + + // Windows Media + elseif ($handler === 'wmedia') + { + $height += 45; + if ($native) + { + $embed .= "<embed type=\"application/x-mplayer2\" src=\"" . $this->get_link() . "\" autosize=\"1\" width=\"$width\" height=\"$height\" showcontrols=\"1\" showstatusbar=\"0\" showdisplay=\"0\" autostart=\"0\"></embed>"; + } + else + { + $embed .= "<script type='text/javascript'>embed_wmedia('$width', '$height', '" . $this->get_link() . "');</script>"; + } + } + + // Everything else + else $embed .= '<a href="' . $this->get_link() . '" class="' . $altclass . '">' . $alt . '</a>'; + + return $embed; + } + + /** + * Get the real media type + * + * Often, feeds lie to us, necessitating a bit of deeper inspection. This + * converts types to their canonical representations based on the file + * extension + * + * @see get_type() + * @param bool $find_handler Internal use only, use {@see get_handler()} instead + * @return string MIME type + */ + public function get_real_type($find_handler = false) + { + // Mime-types by handler. + $types_flash = array('application/x-shockwave-flash', 'application/futuresplash'); // Flash + $types_fmedia = array('video/flv', 'video/x-flv','flv-application/octet-stream'); // Flash Media Player + $types_quicktime = array('audio/3gpp', 'audio/3gpp2', 'audio/aac', 'audio/x-aac', 'audio/aiff', 'audio/x-aiff', 'audio/mid', 'audio/midi', 'audio/x-midi', 'audio/mp4', 'audio/m4a', 'audio/x-m4a', 'audio/wav', 'audio/x-wav', 'video/3gpp', 'video/3gpp2', 'video/m4v', 'video/x-m4v', 'video/mp4', 'video/mpeg', 'video/x-mpeg', 'video/quicktime', 'video/sd-video'); // QuickTime + $types_wmedia = array('application/asx', 'application/x-mplayer2', 'audio/x-ms-wma', 'audio/x-ms-wax', 'video/x-ms-asf-plugin', 'video/x-ms-asf', 'video/x-ms-wm', 'video/x-ms-wmv', 'video/x-ms-wvx'); // Windows Media + $types_mp3 = array('audio/mp3', 'audio/x-mp3', 'audio/mpeg', 'audio/x-mpeg'); // MP3 + + if ($this->get_type() !== null) + { + $type = strtolower($this->type); + } + else + { + $type = null; + } + + // If we encounter an unsupported mime-type, check the file extension and guess intelligently. + if (!in_array($type, array_merge($types_flash, $types_fmedia, $types_quicktime, $types_wmedia, $types_mp3))) + { + switch (strtolower($this->get_extension())) + { + // Audio mime-types + case 'aac': + case 'adts': + $type = 'audio/acc'; + break; + + case 'aif': + case 'aifc': + case 'aiff': + case 'cdda': + $type = 'audio/aiff'; + break; + + case 'bwf': + $type = 'audio/wav'; + break; + + case 'kar': + case 'mid': + case 'midi': + case 'smf': + $type = 'audio/midi'; + break; + + case 'm4a': + $type = 'audio/x-m4a'; + break; + + case 'mp3': + case 'swa': + $type = 'audio/mp3'; + break; + + case 'wav': + $type = 'audio/wav'; + break; + + case 'wax': + $type = 'audio/x-ms-wax'; + break; + + case 'wma': + $type = 'audio/x-ms-wma'; + break; + + // Video mime-types + case '3gp': + case '3gpp': + $type = 'video/3gpp'; + break; + + case '3g2': + case '3gp2': + $type = 'video/3gpp2'; + break; + + case 'asf': + $type = 'video/x-ms-asf'; + break; + + case 'flv': + $type = 'video/x-flv'; + break; + + case 'm1a': + case 'm1s': + case 'm1v': + case 'm15': + case 'm75': + case 'mp2': + case 'mpa': + case 'mpeg': + case 'mpg': + case 'mpm': + case 'mpv': + $type = 'video/mpeg'; + break; + + case 'm4v': + $type = 'video/x-m4v'; + break; + + case 'mov': + case 'qt': + $type = 'video/quicktime'; + break; + + case 'mp4': + case 'mpg4': + $type = 'video/mp4'; + break; + + case 'sdv': + $type = 'video/sd-video'; + break; + + case 'wm': + $type = 'video/x-ms-wm'; + break; + + case 'wmv': + $type = 'video/x-ms-wmv'; + break; + + case 'wvx': + $type = 'video/x-ms-wvx'; + break; + + // Flash mime-types + case 'spl': + $type = 'application/futuresplash'; + break; + + case 'swf': + $type = 'application/x-shockwave-flash'; + break; + } + } + + if ($find_handler) + { + if (in_array($type, $types_flash)) + { + return 'flash'; + } + elseif (in_array($type, $types_fmedia)) + { + return 'fmedia'; + } + elseif (in_array($type, $types_quicktime)) + { + return 'quicktime'; + } + elseif (in_array($type, $types_wmedia)) + { + return 'wmedia'; + } + elseif (in_array($type, $types_mp3)) + { + return 'mp3'; + } + else + { + return null; + } + } + else + { + return $type; + } + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Exception.php b/vendor/simplepie/simplepie/library/SimplePie/Exception.php new file mode 100644 index 000000000..53c015e77 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Exception.php @@ -0,0 +1,51 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * General SimplePie exception class + * + * @package SimplePie + */ +class SimplePie_Exception extends Exception +{ +}
\ No newline at end of file diff --git a/vendor/simplepie/simplepie/library/SimplePie/File.php b/vendor/simplepie/simplepie/library/SimplePie/File.php new file mode 100644 index 000000000..e670e05a0 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/File.php @@ -0,0 +1,306 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Used for fetching remote files and reading local files + * + * Supports HTTP 1.0 via cURL or fsockopen, with spotty HTTP 1.1 support + * + * This class can be overloaded with {@see SimplePie::set_file_class()} + * + * @package SimplePie + * @subpackage HTTP + * @todo Move to properly supporting RFC2616 (HTTP/1.1) + */ +class SimplePie_File +{ + var $url; + var $useragent; + var $success = true; + var $headers = array(); + var $body; + var $status_code; + var $redirects = 0; + var $error; + var $method = SIMPLEPIE_FILE_SOURCE_NONE; + var $permanent_url; + + public function __construct($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false, $curl_options = array()) + { + if (class_exists('idna_convert')) + { + $idn = new idna_convert(); + $parsed = SimplePie_Misc::parse_url($url); + $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']); + } + $this->url = $url; + $this->permanent_url = $url; + $this->useragent = $useragent; + if (preg_match('/^http(s)?:\/\//i', $url)) + { + if ($useragent === null) + { + $useragent = ini_get('user_agent'); + $this->useragent = $useragent; + } + if (!is_array($headers)) + { + $headers = array(); + } + if (!$force_fsockopen && function_exists('curl_exec')) + { + $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_CURL; + $fp = curl_init(); + $headers2 = array(); + foreach ($headers as $key => $value) + { + $headers2[] = "$key: $value"; + } + if (version_compare(SimplePie_Misc::get_curl_version(), '7.10.5', '>=')) + { + curl_setopt($fp, CURLOPT_ENCODING, ''); + } + curl_setopt($fp, CURLOPT_URL, $url); + curl_setopt($fp, CURLOPT_HEADER, 1); + curl_setopt($fp, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($fp, CURLOPT_FAILONERROR, 1); + curl_setopt($fp, CURLOPT_TIMEOUT, $timeout); + curl_setopt($fp, CURLOPT_CONNECTTIMEOUT, $timeout); + curl_setopt($fp, CURLOPT_REFERER, $url); + curl_setopt($fp, CURLOPT_USERAGENT, $useragent); + curl_setopt($fp, CURLOPT_HTTPHEADER, $headers2); + if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(SimplePie_Misc::get_curl_version(), '7.15.2', '>=')) + { + curl_setopt($fp, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($fp, CURLOPT_MAXREDIRS, $redirects); + } + foreach ($curl_options as $curl_param => $curl_value) { + curl_setopt($fp, $curl_param, $curl_value); + } + + $this->headers = curl_exec($fp); + if (curl_errno($fp) === 23 || curl_errno($fp) === 61) + { + curl_setopt($fp, CURLOPT_ENCODING, 'none'); + $this->headers = curl_exec($fp); + } + if (curl_errno($fp)) + { + $this->error = 'cURL error ' . curl_errno($fp) . ': ' . curl_error($fp); + $this->success = false; + } + else + { + // Use the updated url provided by curl_getinfo after any redirects. + if ($info = curl_getinfo($fp)) { + $this->url = $info['url']; + } + curl_close($fp); + $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1); + $this->headers = array_pop($this->headers); + $parser = new SimplePie_HTTP_Parser($this->headers); + if ($parser->parse()) + { + $this->headers = $parser->headers; + $this->body = trim($parser->body); + $this->status_code = $parser->status_code; + if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects) + { + $this->redirects++; + $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url); + $previousStatusCode = $this->status_code; + $this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen); + $this->permanent_url = ($previousStatusCode == 301) ? $location : $url; + return; + } + } + } + } + else + { + $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE | SIMPLEPIE_FILE_SOURCE_FSOCKOPEN; + $url_parts = parse_url($url); + $socket_host = $url_parts['host']; + if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https') + { + $socket_host = "ssl://$url_parts[host]"; + $url_parts['port'] = 443; + } + if (!isset($url_parts['port'])) + { + $url_parts['port'] = 80; + } + $fp = @fsockopen($socket_host, $url_parts['port'], $errno, $errstr, $timeout); + if (!$fp) + { + $this->error = 'fsockopen error: ' . $errstr; + $this->success = false; + } + else + { + stream_set_timeout($fp, $timeout); + if (isset($url_parts['path'])) + { + if (isset($url_parts['query'])) + { + $get = "$url_parts[path]?$url_parts[query]"; + } + else + { + $get = $url_parts['path']; + } + } + else + { + $get = '/'; + } + $out = "GET $get HTTP/1.1\r\n"; + $out .= "Host: $url_parts[host]\r\n"; + $out .= "User-Agent: $useragent\r\n"; + if (extension_loaded('zlib')) + { + $out .= "Accept-Encoding: x-gzip,gzip,deflate\r\n"; + } + + if (isset($url_parts['user']) && isset($url_parts['pass'])) + { + $out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n"; + } + foreach ($headers as $key => $value) + { + $out .= "$key: $value\r\n"; + } + $out .= "Connection: Close\r\n\r\n"; + fwrite($fp, $out); + + $info = stream_get_meta_data($fp); + + $this->headers = ''; + while (!$info['eof'] && !$info['timed_out']) + { + $this->headers .= fread($fp, 1160); + $info = stream_get_meta_data($fp); + } + if (!$info['timed_out']) + { + $parser = new SimplePie_HTTP_Parser($this->headers); + if ($parser->parse()) + { + $this->headers = $parser->headers; + $this->body = $parser->body; + $this->status_code = $parser->status_code; + if ((in_array($this->status_code, array(300, 301, 302, 303, 307)) || $this->status_code > 307 && $this->status_code < 400) && isset($this->headers['location']) && $this->redirects < $redirects) + { + $this->redirects++; + $location = SimplePie_Misc::absolutize_url($this->headers['location'], $url); + $previousStatusCode = $this->status_code; + $this->__construct($location, $timeout, $redirects, $headers, $useragent, $force_fsockopen); + $this->permanent_url = ($previousStatusCode == 301) ? $location : $url; + return; + } + if (isset($this->headers['content-encoding'])) + { + // Hey, we act dumb elsewhere, so let's do that here too + switch (strtolower(trim($this->headers['content-encoding'], "\x09\x0A\x0D\x20"))) + { + case 'gzip': + case 'x-gzip': + $decoder = new SimplePie_gzdecode($this->body); + if (!$decoder->parse()) + { + $this->error = 'Unable to decode HTTP "gzip" stream'; + $this->success = false; + } + else + { + $this->body = trim($decoder->data); + } + break; + + case 'deflate': + if (($decompressed = gzinflate($this->body)) !== false) + { + $this->body = $decompressed; + } + else if (($decompressed = gzuncompress($this->body)) !== false) + { + $this->body = $decompressed; + } + else if (function_exists('gzdecode') && ($decompressed = gzdecode($this->body)) !== false) + { + $this->body = $decompressed; + } + else + { + $this->error = 'Unable to decode HTTP "deflate" stream'; + $this->success = false; + } + break; + + default: + $this->error = 'Unknown content coding'; + $this->success = false; + } + } + } + } + else + { + $this->error = 'fsocket timed out'; + $this->success = false; + } + fclose($fp); + } + } + } + else + { + $this->method = SIMPLEPIE_FILE_SOURCE_LOCAL | SIMPLEPIE_FILE_SOURCE_FILE_GET_CONTENTS; + if (empty($url) || !($this->body = trim(file_get_contents($url)))) + { + $this->error = 'file_get_contents could not read the file'; + $this->success = false; + } + } + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php new file mode 100644 index 000000000..63ae1e03d --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/HTTP/Parser.php @@ -0,0 +1,499 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + + +/** + * HTTP Response Parser + * + * @package SimplePie + * @subpackage HTTP + */ +class SimplePie_HTTP_Parser +{ + /** + * HTTP Version + * + * @var float + */ + public $http_version = 0.0; + + /** + * Status code + * + * @var int + */ + public $status_code = 0; + + /** + * Reason phrase + * + * @var string + */ + public $reason = ''; + + /** + * Key/value pairs of the headers + * + * @var array + */ + public $headers = array(); + + /** + * Body of the response + * + * @var string + */ + public $body = ''; + + /** + * Current state of the state machine + * + * @var string + */ + protected $state = 'http_version'; + + /** + * Input data + * + * @var string + */ + protected $data = ''; + + /** + * Input data length (to avoid calling strlen() everytime this is needed) + * + * @var int + */ + protected $data_length = 0; + + /** + * Current position of the pointer + * + * @var int + */ + protected $position = 0; + + /** + * Name of the hedaer currently being parsed + * + * @var string + */ + protected $name = ''; + + /** + * Value of the hedaer currently being parsed + * + * @var string + */ + protected $value = ''; + + /** + * Create an instance of the class with the input data + * + * @param string $data Input data + */ + public function __construct($data) + { + $this->data = $data; + $this->data_length = strlen($this->data); + } + + /** + * Parse the input data + * + * @return bool true on success, false on failure + */ + public function parse() + { + while ($this->state && $this->state !== 'emit' && $this->has_data()) + { + $state = $this->state; + $this->$state(); + } + $this->data = ''; + if ($this->state === 'emit' || $this->state === 'body') + { + return true; + } + else + { + $this->http_version = ''; + $this->status_code = ''; + $this->reason = ''; + $this->headers = array(); + $this->body = ''; + return false; + } + } + + /** + * Check whether there is data beyond the pointer + * + * @return bool true if there is further data, false if not + */ + protected function has_data() + { + return (bool) ($this->position < $this->data_length); + } + + /** + * See if the next character is LWS + * + * @return bool true if the next character is LWS, false if not + */ + protected function is_linear_whitespace() + { + return (bool) ($this->data[$this->position] === "\x09" + || $this->data[$this->position] === "\x20" + || ($this->data[$this->position] === "\x0A" + && isset($this->data[$this->position + 1]) + && ($this->data[$this->position + 1] === "\x09" || $this->data[$this->position + 1] === "\x20"))); + } + + /** + * Parse the HTTP version + */ + protected function http_version() + { + if (strpos($this->data, "\x0A") !== false && strtoupper(substr($this->data, 0, 5)) === 'HTTP/') + { + $len = strspn($this->data, '0123456789.', 5); + $this->http_version = substr($this->data, 5, $len); + $this->position += 5 + $len; + if (substr_count($this->http_version, '.') <= 1) + { + $this->http_version = (float) $this->http_version; + $this->position += strspn($this->data, "\x09\x20", $this->position); + $this->state = 'status'; + } + else + { + $this->state = false; + } + } + else + { + $this->state = false; + } + } + + /** + * Parse the status code + */ + protected function status() + { + if ($len = strspn($this->data, '0123456789', $this->position)) + { + $this->status_code = (int) substr($this->data, $this->position, $len); + $this->position += $len; + $this->state = 'reason'; + } + else + { + $this->state = false; + } + } + + /** + * Parse the reason phrase + */ + protected function reason() + { + $len = strcspn($this->data, "\x0A", $this->position); + $this->reason = trim(substr($this->data, $this->position, $len), "\x09\x0D\x20"); + $this->position += $len + 1; + $this->state = 'new_line'; + } + + /** + * Deal with a new line, shifting data around as needed + */ + protected function new_line() + { + $this->value = trim($this->value, "\x0D\x20"); + if ($this->name !== '' && $this->value !== '') + { + $this->name = strtolower($this->name); + // We should only use the last Content-Type header. c.f. issue #1 + if (isset($this->headers[$this->name]) && $this->name !== 'content-type') + { + $this->headers[$this->name] .= ', ' . $this->value; + } + else + { + $this->headers[$this->name] = $this->value; + } + } + $this->name = ''; + $this->value = ''; + if (substr($this->data[$this->position], 0, 2) === "\x0D\x0A") + { + $this->position += 2; + $this->state = 'body'; + } + elseif ($this->data[$this->position] === "\x0A") + { + $this->position++; + $this->state = 'body'; + } + else + { + $this->state = 'name'; + } + } + + /** + * Parse a header name + */ + protected function name() + { + $len = strcspn($this->data, "\x0A:", $this->position); + if (isset($this->data[$this->position + $len])) + { + if ($this->data[$this->position + $len] === "\x0A") + { + $this->position += $len; + $this->state = 'new_line'; + } + else + { + $this->name = substr($this->data, $this->position, $len); + $this->position += $len + 1; + $this->state = 'value'; + } + } + else + { + $this->state = false; + } + } + + /** + * Parse LWS, replacing consecutive LWS characters with a single space + */ + protected function linear_whitespace() + { + do + { + if (substr($this->data, $this->position, 2) === "\x0D\x0A") + { + $this->position += 2; + } + elseif ($this->data[$this->position] === "\x0A") + { + $this->position++; + } + $this->position += strspn($this->data, "\x09\x20", $this->position); + } while ($this->has_data() && $this->is_linear_whitespace()); + $this->value .= "\x20"; + } + + /** + * See what state to move to while within non-quoted header values + */ + protected function value() + { + if ($this->is_linear_whitespace()) + { + $this->linear_whitespace(); + } + else + { + switch ($this->data[$this->position]) + { + case '"': + // Workaround for ETags: we have to include the quotes as + // part of the tag. + if (strtolower($this->name) === 'etag') + { + $this->value .= '"'; + $this->position++; + $this->state = 'value_char'; + break; + } + $this->position++; + $this->state = 'quote'; + break; + + case "\x0A": + $this->position++; + $this->state = 'new_line'; + break; + + default: + $this->state = 'value_char'; + break; + } + } + } + + /** + * Parse a header value while outside quotes + */ + protected function value_char() + { + $len = strcspn($this->data, "\x09\x20\x0A\"", $this->position); + $this->value .= substr($this->data, $this->position, $len); + $this->position += $len; + $this->state = 'value'; + } + + /** + * See what state to move to while within quoted header values + */ + protected function quote() + { + if ($this->is_linear_whitespace()) + { + $this->linear_whitespace(); + } + else + { + switch ($this->data[$this->position]) + { + case '"': + $this->position++; + $this->state = 'value'; + break; + + case "\x0A": + $this->position++; + $this->state = 'new_line'; + break; + + case '\\': + $this->position++; + $this->state = 'quote_escaped'; + break; + + default: + $this->state = 'quote_char'; + break; + } + } + } + + /** + * Parse a header value while within quotes + */ + protected function quote_char() + { + $len = strcspn($this->data, "\x09\x20\x0A\"\\", $this->position); + $this->value .= substr($this->data, $this->position, $len); + $this->position += $len; + $this->state = 'value'; + } + + /** + * Parse an escaped character within quotes + */ + protected function quote_escaped() + { + $this->value .= $this->data[$this->position]; + $this->position++; + $this->state = 'quote'; + } + + /** + * Parse the body + */ + protected function body() + { + $this->body = substr($this->data, $this->position); + if (!empty($this->headers['transfer-encoding'])) + { + unset($this->headers['transfer-encoding']); + $this->state = 'chunked'; + } + else + { + $this->state = 'emit'; + } + } + + /** + * Parsed a "Transfer-Encoding: chunked" body + */ + protected function chunked() + { + if (!preg_match('/^([0-9a-f]+)[^\r\n]*\r\n/i', trim($this->body))) + { + $this->state = 'emit'; + return; + } + + $decoded = ''; + $encoded = $this->body; + + while (true) + { + $is_chunked = (bool) preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', $encoded, $matches ); + if (!$is_chunked) + { + // Looks like it's not chunked after all + $this->state = 'emit'; + return; + } + + $length = hexdec(trim($matches[1])); + if ($length === 0) + { + // Ignore trailer headers + $this->state = 'emit'; + $this->body = $decoded; + return; + } + + $chunk_length = strlen($matches[0]); + $decoded .= $part = substr($encoded, $chunk_length, $length); + $encoded = substr($encoded, $chunk_length + $length + 2); + + if (trim($encoded) === '0' || empty($encoded)) + { + $this->state = 'emit'; + $this->body = $decoded; + return; + } + } + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/IRI.php b/vendor/simplepie/simplepie/library/SimplePie/IRI.php new file mode 100644 index 000000000..2b3fbaf07 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/IRI.php @@ -0,0 +1,1257 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * IRI parser/serialiser/normaliser + * + * @package SimplePie + * @subpackage HTTP + * @author Geoffrey Sneddon + * @author Steve Minutillo + * @author Ryan McCue + * @copyright 2007-2012 Geoffrey Sneddon, Steve Minutillo, Ryan McCue + * @license http://www.opensource.org/licenses/bsd-license.php + */ +class SimplePie_IRI +{ + /** + * Scheme + * + * @var string + */ + protected $scheme = null; + + /** + * User Information + * + * @var string + */ + protected $iuserinfo = null; + + /** + * ihost + * + * @var string + */ + protected $ihost = null; + + /** + * Port + * + * @var string + */ + protected $port = null; + + /** + * ipath + * + * @var string + */ + protected $ipath = ''; + + /** + * iquery + * + * @var string + */ + protected $iquery = null; + + /** + * ifragment + * + * @var string + */ + protected $ifragment = null; + + /** + * Normalization database + * + * Each key is the scheme, each value is an array with each key as the IRI + * part and value as the default value for that part. + */ + protected $normalization = array( + 'acap' => array( + 'port' => 674 + ), + 'dict' => array( + 'port' => 2628 + ), + 'file' => array( + 'ihost' => 'localhost' + ), + 'http' => array( + 'port' => 80, + 'ipath' => '/' + ), + 'https' => array( + 'port' => 443, + 'ipath' => '/' + ), + ); + + /** + * Return the entire IRI when you try and read the object as a string + * + * @return string + */ + public function __toString() + { + return $this->get_iri(); + } + + /** + * Overload __set() to provide access via properties + * + * @param string $name Property name + * @param mixed $value Property value + */ + public function __set($name, $value) + { + if (method_exists($this, 'set_' . $name)) + { + call_user_func(array($this, 'set_' . $name), $value); + } + elseif ( + $name === 'iauthority' + || $name === 'iuserinfo' + || $name === 'ihost' + || $name === 'ipath' + || $name === 'iquery' + || $name === 'ifragment' + ) + { + call_user_func(array($this, 'set_' . substr($name, 1)), $value); + } + } + + /** + * Overload __get() to provide access via properties + * + * @param string $name Property name + * @return mixed + */ + public function __get($name) + { + // isset() returns false for null, we don't want to do that + // Also why we use array_key_exists below instead of isset() + $props = get_object_vars($this); + + if ( + $name === 'iri' || + $name === 'uri' || + $name === 'iauthority' || + $name === 'authority' + ) + { + $return = $this->{"get_$name"}(); + } + elseif (array_key_exists($name, $props)) + { + $return = $this->$name; + } + // host -> ihost + elseif (($prop = 'i' . $name) && array_key_exists($prop, $props)) + { + $name = $prop; + $return = $this->$prop; + } + // ischeme -> scheme + elseif (($prop = substr($name, 1)) && array_key_exists($prop, $props)) + { + $name = $prop; + $return = $this->$prop; + } + else + { + trigger_error('Undefined property: ' . get_class($this) . '::' . $name, E_USER_NOTICE); + $return = null; + } + + if ($return === null && isset($this->normalization[$this->scheme][$name])) + { + return $this->normalization[$this->scheme][$name]; + } + else + { + return $return; + } + } + + /** + * Overload __isset() to provide access via properties + * + * @param string $name Property name + * @return bool + */ + public function __isset($name) + { + if (method_exists($this, 'get_' . $name) || isset($this->$name)) + { + return true; + } + else + { + return false; + } + } + + /** + * Overload __unset() to provide access via properties + * + * @param string $name Property name + */ + public function __unset($name) + { + if (method_exists($this, 'set_' . $name)) + { + call_user_func(array($this, 'set_' . $name), ''); + } + } + + /** + * Create a new IRI object, from a specified string + * + * @param string $iri + */ + public function __construct($iri = null) + { + $this->set_iri($iri); + } + + /** + * Clean up + */ + public function __destruct() { + $this->set_iri(null, true); + $this->set_path(null, true); + $this->set_authority(null, true); + } + + /** + * Create a new IRI object by resolving a relative IRI + * + * Returns false if $base is not absolute, otherwise an IRI. + * + * @param IRI|string $base (Absolute) Base IRI + * @param IRI|string $relative Relative IRI + * @return IRI|false + */ + public static function absolutize($base, $relative) + { + if (!($relative instanceof SimplePie_IRI)) + { + $relative = new SimplePie_IRI($relative); + } + if (!$relative->is_valid()) + { + return false; + } + elseif ($relative->scheme !== null) + { + return clone $relative; + } + else + { + if (!($base instanceof SimplePie_IRI)) + { + $base = new SimplePie_IRI($base); + } + if ($base->scheme !== null && $base->is_valid()) + { + if ($relative->get_iri() !== '') + { + if ($relative->iuserinfo !== null || $relative->ihost !== null || $relative->port !== null) + { + $target = clone $relative; + $target->scheme = $base->scheme; + } + else + { + $target = new SimplePie_IRI; + $target->scheme = $base->scheme; + $target->iuserinfo = $base->iuserinfo; + $target->ihost = $base->ihost; + $target->port = $base->port; + if ($relative->ipath !== '') + { + if ($relative->ipath[0] === '/') + { + $target->ipath = $relative->ipath; + } + elseif (($base->iuserinfo !== null || $base->ihost !== null || $base->port !== null) && $base->ipath === '') + { + $target->ipath = '/' . $relative->ipath; + } + elseif (($last_segment = strrpos($base->ipath, '/')) !== false) + { + $target->ipath = substr($base->ipath, 0, $last_segment + 1) . $relative->ipath; + } + else + { + $target->ipath = $relative->ipath; + } + $target->ipath = $target->remove_dot_segments($target->ipath); + $target->iquery = $relative->iquery; + } + else + { + $target->ipath = $base->ipath; + if ($relative->iquery !== null) + { + $target->iquery = $relative->iquery; + } + elseif ($base->iquery !== null) + { + $target->iquery = $base->iquery; + } + } + $target->ifragment = $relative->ifragment; + } + } + else + { + $target = clone $base; + $target->ifragment = null; + } + $target->scheme_normalization(); + return $target; + } + else + { + return false; + } + } + } + + /** + * Parse an IRI into scheme/authority/path/query/fragment segments + * + * @param string $iri + * @return array + */ + protected function parse_iri($iri) + { + $iri = trim($iri, "\x20\x09\x0A\x0C\x0D"); + if (preg_match('/^((?P<scheme>[^:\/?#]+):)?(\/\/(?P<authority>[^\/?#]*))?(?P<path>[^?#]*)(\?(?P<query>[^#]*))?(#(?P<fragment>.*))?$/', $iri, $match)) + { + if ($match[1] === '') + { + $match['scheme'] = null; + } + if (!isset($match[3]) || $match[3] === '') + { + $match['authority'] = null; + } + if (!isset($match[5])) + { + $match['path'] = ''; + } + if (!isset($match[6]) || $match[6] === '') + { + $match['query'] = null; + } + if (!isset($match[8]) || $match[8] === '') + { + $match['fragment'] = null; + } + return $match; + } + else + { + // This can occur when a paragraph is accidentally parsed as a URI + return false; + } + } + + /** + * Remove dot segments from a path + * + * @param string $input + * @return string + */ + protected function remove_dot_segments($input) + { + $output = ''; + while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input === '.' || $input === '..') + { + // A: If the input buffer begins with a prefix of "../" or "./", then remove that prefix from the input buffer; otherwise, + if (strpos($input, '../') === 0) + { + $input = substr($input, 3); + } + elseif (strpos($input, './') === 0) + { + $input = substr($input, 2); + } + // B: if the input buffer begins with a prefix of "/./" or "/.", where "." is a complete path segment, then replace that prefix with "/" in the input buffer; otherwise, + elseif (strpos($input, '/./') === 0) + { + $input = substr($input, 2); + } + elseif ($input === '/.') + { + $input = '/'; + } + // C: if the input buffer begins with a prefix of "/../" or "/..", where ".." is a complete path segment, then replace that prefix with "/" in the input buffer and remove the last segment and its preceding "/" (if any) from the output buffer; otherwise, + elseif (strpos($input, '/../') === 0) + { + $input = substr($input, 3); + $output = substr_replace($output, '', strrpos($output, '/')); + } + elseif ($input === '/..') + { + $input = '/'; + $output = substr_replace($output, '', strrpos($output, '/')); + } + // D: if the input buffer consists only of "." or "..", then remove that from the input buffer; otherwise, + elseif ($input === '.' || $input === '..') + { + $input = ''; + } + // E: move the first path segment in the input buffer to the end of the output buffer, including the initial "/" character (if any) and any subsequent characters up to, but not including, the next "/" character or the end of the input buffer + elseif (($pos = strpos($input, '/', 1)) !== false) + { + $output .= substr($input, 0, $pos); + $input = substr_replace($input, '', 0, $pos); + } + else + { + $output .= $input; + $input = ''; + } + } + return $output . $input; + } + + /** + * Replace invalid character with percent encoding + * + * @param string $string Input string + * @param string $extra_chars Valid characters not in iunreserved or + * iprivate (this is ASCII-only) + * @param bool $iprivate Allow iprivate + * @return string + */ + protected function replace_invalid_with_pct_encoding($string, $extra_chars, $iprivate = false) + { + // Normalize as many pct-encoded sections as possible + $string = preg_replace_callback('/(?:%[A-Fa-f0-9]{2})+/', array($this, 'remove_iunreserved_percent_encoded'), $string); + + // Replace invalid percent characters + $string = preg_replace('/%(?![A-Fa-f0-9]{2})/', '%25', $string); + + // Add unreserved and % to $extra_chars (the latter is safe because all + // pct-encoded sections are now valid). + $extra_chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~%'; + + // Now replace any bytes that aren't allowed with their pct-encoded versions + $position = 0; + $strlen = strlen($string); + while (($position += strspn($string, $extra_chars, $position)) < $strlen) + { + $value = ord($string[$position]); + + // Start position + $start = $position; + + // By default we are valid + $valid = true; + + // No one byte sequences are valid due to the while. + // Two byte sequence: + if (($value & 0xE0) === 0xC0) + { + $character = ($value & 0x1F) << 6; + $length = 2; + $remaining = 1; + } + // Three byte sequence: + elseif (($value & 0xF0) === 0xE0) + { + $character = ($value & 0x0F) << 12; + $length = 3; + $remaining = 2; + } + // Four byte sequence: + elseif (($value & 0xF8) === 0xF0) + { + $character = ($value & 0x07) << 18; + $length = 4; + $remaining = 3; + } + // Invalid byte: + else + { + $valid = false; + $length = 1; + $remaining = 0; + } + + if ($remaining) + { + if ($position + $length <= $strlen) + { + for ($position++; $remaining; $position++) + { + $value = ord($string[$position]); + + // Check that the byte is valid, then add it to the character: + if (($value & 0xC0) === 0x80) + { + $character |= ($value & 0x3F) << (--$remaining * 6); + } + // If it is invalid, count the sequence as invalid and reprocess the current byte: + else + { + $valid = false; + $position--; + break; + } + } + } + else + { + $position = $strlen - 1; + $valid = false; + } + } + + // Percent encode anything invalid or not in ucschar + if ( + // Invalid sequences + !$valid + // Non-shortest form sequences are invalid + || $length > 1 && $character <= 0x7F + || $length > 2 && $character <= 0x7FF + || $length > 3 && $character <= 0xFFFF + // Outside of range of ucschar codepoints + // Noncharacters + || ($character & 0xFFFE) === 0xFFFE + || $character >= 0xFDD0 && $character <= 0xFDEF + || ( + // Everything else not in ucschar + $character > 0xD7FF && $character < 0xF900 + || $character < 0xA0 + || $character > 0xEFFFD + ) + && ( + // Everything not in iprivate, if it applies + !$iprivate + || $character < 0xE000 + || $character > 0x10FFFD + ) + ) + { + // If we were a character, pretend we weren't, but rather an error. + if ($valid) + $position--; + + for ($j = $start; $j <= $position; $j++) + { + $string = substr_replace($string, sprintf('%%%02X', ord($string[$j])), $j, 1); + $j += 2; + $position += 2; + $strlen += 2; + } + } + } + + return $string; + } + + /** + * Callback function for preg_replace_callback. + * + * Removes sequences of percent encoded bytes that represent UTF-8 + * encoded characters in iunreserved + * + * @param array $match PCRE match + * @return string Replacement + */ + protected function remove_iunreserved_percent_encoded($match) + { + // As we just have valid percent encoded sequences we can just explode + // and ignore the first member of the returned array (an empty string). + $bytes = explode('%', $match[0]); + + // Initialize the new string (this is what will be returned) and that + // there are no bytes remaining in the current sequence (unsurprising + // at the first byte!). + $string = ''; + $remaining = 0; + + // Loop over each and every byte, and set $value to its value + for ($i = 1, $len = count($bytes); $i < $len; $i++) + { + $value = hexdec($bytes[$i]); + + // If we're the first byte of sequence: + if (!$remaining) + { + // Start position + $start = $i; + + // By default we are valid + $valid = true; + + // One byte sequence: + if ($value <= 0x7F) + { + $character = $value; + $length = 1; + } + // Two byte sequence: + elseif (($value & 0xE0) === 0xC0) + { + $character = ($value & 0x1F) << 6; + $length = 2; + $remaining = 1; + } + // Three byte sequence: + elseif (($value & 0xF0) === 0xE0) + { + $character = ($value & 0x0F) << 12; + $length = 3; + $remaining = 2; + } + // Four byte sequence: + elseif (($value & 0xF8) === 0xF0) + { + $character = ($value & 0x07) << 18; + $length = 4; + $remaining = 3; + } + // Invalid byte: + else + { + $valid = false; + $remaining = 0; + } + } + // Continuation byte: + else + { + // Check that the byte is valid, then add it to the character: + if (($value & 0xC0) === 0x80) + { + $remaining--; + $character |= ($value & 0x3F) << ($remaining * 6); + } + // If it is invalid, count the sequence as invalid and reprocess the current byte as the start of a sequence: + else + { + $valid = false; + $remaining = 0; + $i--; + } + } + + // If we've reached the end of the current byte sequence, append it to Unicode::$data + if (!$remaining) + { + // Percent encode anything invalid or not in iunreserved + if ( + // Invalid sequences + !$valid + // Non-shortest form sequences are invalid + || $length > 1 && $character <= 0x7F + || $length > 2 && $character <= 0x7FF + || $length > 3 && $character <= 0xFFFF + // Outside of range of iunreserved codepoints + || $character < 0x2D + || $character > 0xEFFFD + // Noncharacters + || ($character & 0xFFFE) === 0xFFFE + || $character >= 0xFDD0 && $character <= 0xFDEF + // Everything else not in iunreserved (this is all BMP) + || $character === 0x2F + || $character > 0x39 && $character < 0x41 + || $character > 0x5A && $character < 0x61 + || $character > 0x7A && $character < 0x7E + || $character > 0x7E && $character < 0xA0 + || $character > 0xD7FF && $character < 0xF900 + ) + { + for ($j = $start; $j <= $i; $j++) + { + $string .= '%' . strtoupper($bytes[$j]); + } + } + else + { + for ($j = $start; $j <= $i; $j++) + { + $string .= chr(hexdec($bytes[$j])); + } + } + } + } + + // If we have any bytes left over they are invalid (i.e., we are + // mid-way through a multi-byte sequence) + if ($remaining) + { + for ($j = $start; $j < $len; $j++) + { + $string .= '%' . strtoupper($bytes[$j]); + } + } + + return $string; + } + + protected function scheme_normalization() + { + if (isset($this->normalization[$this->scheme]['iuserinfo']) && $this->iuserinfo === $this->normalization[$this->scheme]['iuserinfo']) + { + $this->iuserinfo = null; + } + if (isset($this->normalization[$this->scheme]['ihost']) && $this->ihost === $this->normalization[$this->scheme]['ihost']) + { + $this->ihost = null; + } + if (isset($this->normalization[$this->scheme]['port']) && $this->port === $this->normalization[$this->scheme]['port']) + { + $this->port = null; + } + if (isset($this->normalization[$this->scheme]['ipath']) && $this->ipath === $this->normalization[$this->scheme]['ipath']) + { + $this->ipath = ''; + } + if (isset($this->normalization[$this->scheme]['iquery']) && $this->iquery === $this->normalization[$this->scheme]['iquery']) + { + $this->iquery = null; + } + if (isset($this->normalization[$this->scheme]['ifragment']) && $this->ifragment === $this->normalization[$this->scheme]['ifragment']) + { + $this->ifragment = null; + } + } + + /** + * Check if the object represents a valid IRI. This needs to be done on each + * call as some things change depending on another part of the IRI. + * + * @return bool + */ + public function is_valid() + { + if ($this->ipath === '') return true; + + $isauthority = $this->iuserinfo !== null || $this->ihost !== null || + $this->port !== null; + if ($isauthority && $this->ipath[0] === '/') return true; + + if (!$isauthority && (substr($this->ipath, 0, 2) === '//')) return false; + + // Relative urls cannot have a colon in the first path segment (and the + // slashes themselves are not included so skip the first character). + if (!$this->scheme && !$isauthority && + strpos($this->ipath, ':') !== false && + strpos($this->ipath, '/', 1) !== false && + strpos($this->ipath, ':') < strpos($this->ipath, '/', 1)) return false; + + return true; + } + + /** + * Set the entire IRI. Returns true on success, false on failure (if there + * are any invalid characters). + * + * @param string $iri + * @return bool + */ + public function set_iri($iri, $clear_cache = false) + { + static $cache; + if ($clear_cache) + { + $cache = null; + return; + } + if (!$cache) + { + $cache = array(); + } + + if ($iri === null) + { + return true; + } + elseif (isset($cache[$iri])) + { + list($this->scheme, + $this->iuserinfo, + $this->ihost, + $this->port, + $this->ipath, + $this->iquery, + $this->ifragment, + $return) = $cache[$iri]; + return $return; + } + else + { + $parsed = $this->parse_iri((string) $iri); + if (!$parsed) + { + return false; + } + + $return = $this->set_scheme($parsed['scheme']) + && $this->set_authority($parsed['authority']) + && $this->set_path($parsed['path']) + && $this->set_query($parsed['query']) + && $this->set_fragment($parsed['fragment']); + + $cache[$iri] = array($this->scheme, + $this->iuserinfo, + $this->ihost, + $this->port, + $this->ipath, + $this->iquery, + $this->ifragment, + $return); + return $return; + } + } + + /** + * Set the scheme. Returns true on success, false on failure (if there are + * any invalid characters). + * + * @param string $scheme + * @return bool + */ + public function set_scheme($scheme) + { + if ($scheme === null) + { + $this->scheme = null; + } + elseif (!preg_match('/^[A-Za-z][0-9A-Za-z+\-.]*$/', $scheme)) + { + $this->scheme = null; + return false; + } + else + { + $this->scheme = strtolower($scheme); + } + return true; + } + + /** + * Set the authority. Returns true on success, false on failure (if there are + * any invalid characters). + * + * @param string $authority + * @return bool + */ + public function set_authority($authority, $clear_cache = false) + { + static $cache; + if ($clear_cache) + { + $cache = null; + return; + } + if (!$cache) + $cache = array(); + + if ($authority === null) + { + $this->iuserinfo = null; + $this->ihost = null; + $this->port = null; + return true; + } + elseif (isset($cache[$authority])) + { + list($this->iuserinfo, + $this->ihost, + $this->port, + $return) = $cache[$authority]; + + return $return; + } + else + { + $remaining = $authority; + if (($iuserinfo_end = strrpos($remaining, '@')) !== false) + { + $iuserinfo = substr($remaining, 0, $iuserinfo_end); + $remaining = substr($remaining, $iuserinfo_end + 1); + } + else + { + $iuserinfo = null; + } + if (($port_start = strpos($remaining, ':', strpos($remaining, ']'))) !== false) + { + if (($port = substr($remaining, $port_start + 1)) === false) + { + $port = null; + } + $remaining = substr($remaining, 0, $port_start); + } + else + { + $port = null; + } + + $return = $this->set_userinfo($iuserinfo) && + $this->set_host($remaining) && + $this->set_port($port); + + $cache[$authority] = array($this->iuserinfo, + $this->ihost, + $this->port, + $return); + + return $return; + } + } + + /** + * Set the iuserinfo. + * + * @param string $iuserinfo + * @return bool + */ + public function set_userinfo($iuserinfo) + { + if ($iuserinfo === null) + { + $this->iuserinfo = null; + } + else + { + $this->iuserinfo = $this->replace_invalid_with_pct_encoding($iuserinfo, '!$&\'()*+,;=:'); + $this->scheme_normalization(); + } + + return true; + } + + /** + * Set the ihost. Returns true on success, false on failure (if there are + * any invalid characters). + * + * @param string $ihost + * @return bool + */ + public function set_host($ihost) + { + if ($ihost === null) + { + $this->ihost = null; + return true; + } + elseif (substr($ihost, 0, 1) === '[' && substr($ihost, -1) === ']') + { + if (SimplePie_Net_IPv6::check_ipv6(substr($ihost, 1, -1))) + { + $this->ihost = '[' . SimplePie_Net_IPv6::compress(substr($ihost, 1, -1)) . ']'; + } + else + { + $this->ihost = null; + return false; + } + } + else + { + $ihost = $this->replace_invalid_with_pct_encoding($ihost, '!$&\'()*+,;='); + + // Lowercase, but ignore pct-encoded sections (as they should + // remain uppercase). This must be done after the previous step + // as that can add unescaped characters. + $position = 0; + $strlen = strlen($ihost); + while (($position += strcspn($ihost, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ%', $position)) < $strlen) + { + if ($ihost[$position] === '%') + { + $position += 3; + } + else + { + $ihost[$position] = strtolower($ihost[$position]); + $position++; + } + } + + $this->ihost = $ihost; + } + + $this->scheme_normalization(); + + return true; + } + + /** + * Set the port. Returns true on success, false on failure (if there are + * any invalid characters). + * + * @param string $port + * @return bool + */ + public function set_port($port) + { + if ($port === null) + { + $this->port = null; + return true; + } + elseif (strspn($port, '0123456789') === strlen($port)) + { + $this->port = (int) $port; + $this->scheme_normalization(); + return true; + } + else + { + $this->port = null; + return false; + } + } + + /** + * Set the ipath. + * + * @param string $ipath + * @return bool + */ + public function set_path($ipath, $clear_cache = false) + { + static $cache; + if ($clear_cache) + { + $cache = null; + return; + } + if (!$cache) + { + $cache = array(); + } + + $ipath = (string) $ipath; + + if (isset($cache[$ipath])) + { + $this->ipath = $cache[$ipath][(int) ($this->scheme !== null)]; + } + else + { + $valid = $this->replace_invalid_with_pct_encoding($ipath, '!$&\'()*+,;=@:/'); + $removed = $this->remove_dot_segments($valid); + + $cache[$ipath] = array($valid, $removed); + $this->ipath = ($this->scheme !== null) ? $removed : $valid; + } + + $this->scheme_normalization(); + return true; + } + + /** + * Set the iquery. + * + * @param string $iquery + * @return bool + */ + public function set_query($iquery) + { + if ($iquery === null) + { + $this->iquery = null; + } + else + { + $this->iquery = $this->replace_invalid_with_pct_encoding($iquery, '!$&\'()*+,;=:@/?', true); + $this->scheme_normalization(); + } + return true; + } + + /** + * Set the ifragment. + * + * @param string $ifragment + * @return bool + */ + public function set_fragment($ifragment) + { + if ($ifragment === null) + { + $this->ifragment = null; + } + else + { + $this->ifragment = $this->replace_invalid_with_pct_encoding($ifragment, '!$&\'()*+,;=:@/?'); + $this->scheme_normalization(); + } + return true; + } + + /** + * Convert an IRI to a URI (or parts thereof) + * + * @return string + */ + public function to_uri($string) + { + static $non_ascii; + if (!$non_ascii) + { + $non_ascii = implode('', range("\x80", "\xFF")); + } + + $position = 0; + $strlen = strlen($string); + while (($position += strcspn($string, $non_ascii, $position)) < $strlen) + { + $string = substr_replace($string, sprintf('%%%02X', ord($string[$position])), $position, 1); + $position += 3; + $strlen += 2; + } + + return $string; + } + + /** + * Get the complete IRI + * + * @return string + */ + public function get_iri() + { + if (!$this->is_valid()) + { + return false; + } + + $iri = ''; + if ($this->scheme !== null) + { + $iri .= $this->scheme . ':'; + } + if (($iauthority = $this->get_iauthority()) !== null) + { + $iri .= '//' . $iauthority; + } + if ($this->ipath !== '') + { + $iri .= $this->ipath; + } + elseif (!empty($this->normalization[$this->scheme]['ipath']) && $iauthority !== null && $iauthority !== '') + { + $iri .= $this->normalization[$this->scheme]['ipath']; + } + if ($this->iquery !== null) + { + $iri .= '?' . $this->iquery; + } + if ($this->ifragment !== null) + { + $iri .= '#' . $this->ifragment; + } + + return $iri; + } + + /** + * Get the complete URI + * + * @return string + */ + public function get_uri() + { + return $this->to_uri($this->get_iri()); + } + + /** + * Get the complete iauthority + * + * @return string + */ + protected function get_iauthority() + { + if ($this->iuserinfo !== null || $this->ihost !== null || $this->port !== null) + { + $iauthority = ''; + if ($this->iuserinfo !== null) + { + $iauthority .= $this->iuserinfo . '@'; + } + if ($this->ihost !== null) + { + $iauthority .= $this->ihost; + } + if ($this->port !== null) + { + $iauthority .= ':' . $this->port; + } + return $iauthority; + } + else + { + return null; + } + } + + /** + * Get the complete authority + * + * @return string + */ + protected function get_authority() + { + $iauthority = $this->get_iauthority(); + if (is_string($iauthority)) + return $this->to_uri($iauthority); + else + return $iauthority; + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Item.php b/vendor/simplepie/simplepie/library/SimplePie/Item.php new file mode 100644 index 000000000..89d4bacb6 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Item.php @@ -0,0 +1,2997 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + + +/** + * Manages all item-related data + * + * Used by {@see SimplePie::get_item()} and {@see SimplePie::get_items()} + * + * This class can be overloaded with {@see SimplePie::set_item_class()} + * + * @package SimplePie + * @subpackage API + */ +class SimplePie_Item +{ + /** + * Parent feed + * + * @access private + * @var SimplePie + */ + var $feed; + + /** + * Raw data + * + * @access private + * @var array + */ + var $data = array(); + + /** + * Registry object + * + * @see set_registry + * @var SimplePie_Registry + */ + protected $registry; + + /** + * Create a new item object + * + * This is usually used by {@see SimplePie::get_items} and + * {@see SimplePie::get_item}. Avoid creating this manually. + * + * @param SimplePie $feed Parent feed + * @param array $data Raw data + */ + public function __construct($feed, $data) + { + $this->feed = $feed; + $this->data = $data; + } + + /** + * Set the registry handler + * + * This is usually used by {@see SimplePie_Registry::create} + * + * @since 1.3 + * @param SimplePie_Registry $registry + */ + public function set_registry(SimplePie_Registry $registry) + { + $this->registry = $registry; + } + + /** + * Get a string representation of the item + * + * @return string + */ + public function __toString() + { + return md5(serialize($this->data)); + } + + /** + * Remove items that link back to this before destroying this object + */ + public function __destruct() + { + if ((version_compare(PHP_VERSION, '5.3', '<') || !gc_enabled()) && !ini_get('zend.ze1_compatibility_mode')) + { + unset($this->feed); + } + } + + /** + * Get data for an item-level element + * + * This method allows you to get access to ANY element/attribute that is a + * sub-element of the item/entry tag. + * + * See {@see SimplePie::get_feed_tags()} for a description of the return value + * + * @since 1.0 + * @see http://simplepie.org/wiki/faq/supported_xml_namespaces + * @param string $namespace The URL of the XML namespace of the elements you're trying to access + * @param string $tag Tag name + * @return array + */ + public function get_item_tags($namespace, $tag) + { + if (isset($this->data['child'][$namespace][$tag])) + { + return $this->data['child'][$namespace][$tag]; + } + else + { + return null; + } + } + + /** + * Get the base URL value from the parent feed + * + * Uses `<xml:base>` + * + * @param array $element + * @return string + */ + public function get_base($element = array()) + { + return $this->feed->get_base($element); + } + + /** + * Sanitize feed data + * + * @access private + * @see SimplePie::sanitize() + * @param string $data Data to sanitize + * @param int $type One of the SIMPLEPIE_CONSTRUCT_* constants + * @param string $base Base URL to resolve URLs against + * @return string Sanitized data + */ + public function sanitize($data, $type, $base = '') + { + return $this->feed->sanitize($data, $type, $base); + } + + /** + * Get the parent feed + * + * Note: this may not work as you think for multifeeds! + * + * @link http://simplepie.org/faq/typical_multifeed_gotchas#missing_data_from_feed + * @since 1.0 + * @return SimplePie + */ + public function get_feed() + { + return $this->feed; + } + + /** + * Get the unique identifier for the item + * + * This is usually used when writing code to check for new items in a feed. + * + * Uses `<atom:id>`, `<guid>`, `<dc:identifier>` or the `about` attribute + * for RDF. If none of these are supplied (or `$hash` is true), creates an + * MD5 hash based on the permalink, title and content. + * + * @since Beta 2 + * @param boolean $hash Should we force using a hash instead of the supplied ID? + * @return string + */ + public function get_id($hash = false, $fn = '') + { + if (!$hash) + { + if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'id')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'id')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'identifier')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'identifier')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif (isset($this->data['attribs'][SIMPLEPIE_NAMESPACE_RDF]['about'])) + { + return $this->sanitize($this->data['attribs'][SIMPLEPIE_NAMESPACE_RDF]['about'], SIMPLEPIE_CONSTRUCT_TEXT); + } + } + if ($fn === '' || !is_callable($fn)) $fn = 'md5'; + return call_user_func($fn, + $this->get_permalink().$this->get_title().$this->get_content()); + } + + /** + * Get the title of the item + * + * Uses `<atom:title>`, `<title>` or `<dc:title>` + * + * @since Beta 2 (previously called `get_item_title` since 0.8) + * @return string|null + */ + public function get_title() + { + if (!isset($this->data['title'])) + { + if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title')) + { + $this->data['title'] = $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title')) + { + $this->data['title'] = $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title')) + { + $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title')) + { + $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title')) + { + $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title')) + { + $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title')) + { + $this->data['title'] = $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $this->data['title'] = null; + } + } + return $this->data['title']; + } + + /** + * Get the content for the item + * + * Prefers summaries over full content , but will return full content if a + * summary does not exist. + * + * To prefer full content instead, use {@see get_content} + * + * Uses `<atom:summary>`, `<description>`, `<dc:description>` or + * `<itunes:subtitle>` + * + * @since 0.8 + * @param boolean $description_only Should we avoid falling back to the content? + * @return string|null + */ + public function get_description($description_only = false) + { + if (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'summary')) && + ($return = $this->sanitize($tags[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($tags[0]['attribs'])), $this->get_base($tags[0])))) + { + return $return; + } + elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'summary')) && + ($return = $this->sanitize($tags[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($tags[0]['attribs'])), $this->get_base($tags[0])))) + { + return $return; + } + elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description')) && + ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($tags[0])))) + { + return $return; + } + elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description')) && + ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($tags[0])))) + { + return $return; + } + elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description')) && + ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT))) + { + return $return; + } + elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description')) && + ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT))) + { + return $return; + } + elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary')) && + ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($tags[0])))) + { + return $return; + } + elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle')) && + ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT))) + { + return $return; + } + elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description')) && + ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_HTML))) + { + return $return; + } + + elseif (!$description_only) + { + return $this->get_content(true); + } + else + { + return null; + } + } + + /** + * Get the content for the item + * + * Prefers full content over summaries, but will return a summary if full + * content does not exist. + * + * To prefer summaries instead, use {@see get_description} + * + * Uses `<atom:content>` or `<content:encoded>` (RSS 1.0 Content Module) + * + * @since 1.0 + * @param boolean $content_only Should we avoid falling back to the description? + * @return string|null + */ + public function get_content($content_only = false) + { + if (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'content')) && + ($return = $this->sanitize($tags[0]['data'], $this->registry->call('Misc', 'atom_10_content_construct_type', array($tags[0]['attribs'])), $this->get_base($tags[0])))) + { + return $return; + } + elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'content')) && + ($return = $this->sanitize($tags[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($tags[0]['attribs'])), $this->get_base($tags[0])))) + { + return $return; + } + elseif (($tags = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10_MODULES_CONTENT, 'encoded')) && + ($return = $this->sanitize($tags[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($tags[0])))) + { + return $return; + } + elseif (!$content_only) + { + return $this->get_description(true); + } + else + { + return null; + } + } + + /** + * Get the media:thumbnail of the item + * + * Uses `<media:thumbnail>` + * + * + * @return array|null + */ + public function get_thumbnail() + { + if (!isset($this->data['thumbnail'])) + { + if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail')) + { + $this->data['thumbnail'] = $return[0]['attribs']['']; + } + else + { + $this->data['thumbnail'] = null; + } + } + return $this->data['thumbnail']; + } + + /** + * Get a category for the item + * + * @since Beta 3 (previously called `get_categories()` since Beta 2) + * @param int $key The category that you want to return. Remember that arrays begin with 0, not 1 + * @return SimplePie_Category|null + */ + public function get_category($key = 0) + { + $categories = $this->get_categories(); + if (isset($categories[$key])) + { + return $categories[$key]; + } + else + { + return null; + } + } + + /** + * Get all categories for the item + * + * Uses `<atom:category>`, `<category>` or `<dc:subject>` + * + * @since Beta 3 + * @return SimplePie_Category[]|null List of {@see SimplePie_Category} objects + */ + public function get_categories() + { + $categories = array(); + + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category) + { + $term = null; + $scheme = null; + $label = null; + if (isset($category['attribs']['']['term'])) + { + $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_HTML); + } + if (isset($category['attribs']['']['scheme'])) + { + $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_HTML); + } + if (isset($category['attribs']['']['label'])) + { + $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_HTML); + } + $categories[] = $this->registry->create('Category', array($term, $scheme, $label)); + } + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category) + { + // This is really the label, but keep this as the term also for BC. + // Label will also work on retrieving because that falls back to term. + $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML); + if (isset($category['attribs']['']['domain'])) + { + $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_HTML); + } + else + { + $scheme = null; + } + $categories[] = $this->registry->create('Category', array($term, $scheme, null)); + } + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category) + { + $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null)); + } + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category) + { + $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null)); + } + + if (!empty($categories)) + { + return array_unique($categories); + } + else + { + return null; + } + } + + /** + * Get an author for the item + * + * @since Beta 2 + * @param int $key The author that you want to return. Remember that arrays begin with 0, not 1 + * @return SimplePie_Author|null + */ + public function get_author($key = 0) + { + $authors = $this->get_authors(); + if (isset($authors[$key])) + { + return $authors[$key]; + } + else + { + return null; + } + } + + /** + * Get a contributor for the item + * + * @since 1.1 + * @param int $key The contrbutor that you want to return. Remember that arrays begin with 0, not 1 + * @return SimplePie_Author|null + */ + public function get_contributor($key = 0) + { + $contributors = $this->get_contributors(); + if (isset($contributors[$key])) + { + return $contributors[$key]; + } + else + { + return null; + } + } + + /** + * Get all contributors for the item + * + * Uses `<atom:contributor>` + * + * @since 1.1 + * @return array|null List of {@see SimplePie_Author} objects + */ + public function get_contributors() + { + $contributors = array(); + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor) + { + $name = null; + $uri = null; + $email = null; + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) + { + $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) + { + $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) + { + $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if ($name !== null || $email !== null || $uri !== null) + { + $contributors[] = $this->registry->create('Author', array($name, $uri, $email)); + } + } + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor) + { + $name = null; + $url = null; + $email = null; + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) + { + $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) + { + $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) + { + $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if ($name !== null || $email !== null || $url !== null) + { + $contributors[] = $this->registry->create('Author', array($name, $url, $email)); + } + } + + if (!empty($contributors)) + { + return array_unique($contributors); + } + else + { + return null; + } + } + + /** + * Get all authors for the item + * + * Uses `<atom:author>`, `<author>`, `<dc:creator>` or `<itunes:author>` + * + * @since Beta 2 + * @return array|null List of {@see SimplePie_Author} objects + */ + public function get_authors() + { + $authors = array(); + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author) + { + $name = null; + $uri = null; + $email = null; + if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) + { + $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML); + } + if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) + { + $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); + } + if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) + { + $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML); + } + if ($name !== null || $email !== null || $uri !== null) + { + $authors[] = $this->registry->create('Author', array($name, $uri, $email)); + } + } + if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author')) + { + $name = null; + $url = null; + $email = null; + if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) + { + $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML); + } + if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) + { + $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); + } + if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) + { + $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_HTML); + } + if ($name !== null || $email !== null || $url !== null) + { + $authors[] = $this->registry->create('Author', array($name, $url, $email)); + } + } + if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'author')) + { + $authors[] = $this->registry->create('Author', array(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_HTML))); + } + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author) + { + $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null)); + } + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author) + { + $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null)); + } + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author) + { + $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_HTML), null, null)); + } + + if (!empty($authors)) + { + return array_unique($authors); + } + elseif (($source = $this->get_source()) && ($authors = $source->get_authors())) + { + return $authors; + } + elseif ($authors = $this->feed->get_authors()) + { + return $authors; + } + else + { + return null; + } + } + + /** + * Get the copyright info for the item + * + * Uses `<atom:rights>` or `<dc:rights>` + * + * @since 1.1 + * @return string + */ + public function get_copyright() + { + if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + return null; + } + } + + /** + * Get the posting date/time for the item + * + * Uses `<atom:published>`, `<atom:updated>`, `<atom:issued>`, + * `<atom:modified>`, `<pubDate>` or `<dc:date>` + * + * Note: obeys PHP's timezone setting. To get a UTC date/time, use + * {@see get_gmdate} + * + * @since Beta 2 (previously called `get_item_date` since 0.8) + * + * @param string $date_format Supports any PHP date format from {@see http://php.net/date} (empty for the raw data) + * @return int|string|null + */ + public function get_date($date_format = 'j F Y, g:i a') + { + if (!isset($this->data['date'])) + { + if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'published')) + { + $this->data['date']['raw'] = $return[0]['data']; + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'pubDate')) + { + $this->data['date']['raw'] = $return[0]['data']; + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'date')) + { + $this->data['date']['raw'] = $return[0]['data']; + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'date')) + { + $this->data['date']['raw'] = $return[0]['data']; + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated')) + { + $this->data['date']['raw'] = $return[0]['data']; + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'issued')) + { + $this->data['date']['raw'] = $return[0]['data']; + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'created')) + { + $this->data['date']['raw'] = $return[0]['data']; + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'modified')) + { + $this->data['date']['raw'] = $return[0]['data']; + } + + if (!empty($this->data['date']['raw'])) + { + $parser = $this->registry->call('Parse_Date', 'get'); + $this->data['date']['parsed'] = $parser->parse($this->data['date']['raw']); + } + else + { + $this->data['date'] = null; + } + } + if ($this->data['date']) + { + $date_format = (string) $date_format; + switch ($date_format) + { + case '': + return $this->sanitize($this->data['date']['raw'], SIMPLEPIE_CONSTRUCT_TEXT); + + case 'U': + return $this->data['date']['parsed']; + + default: + return date($date_format, $this->data['date']['parsed']); + } + } + else + { + return null; + } + } + + /** + * Get the update date/time for the item + * + * Uses `<atom:updated>` + * + * Note: obeys PHP's timezone setting. To get a UTC date/time, use + * {@see get_gmdate} + * + * @param string $date_format Supports any PHP date format from {@see http://php.net/date} (empty for the raw data) + * @return int|string|null + */ + public function get_updated_date($date_format = 'j F Y, g:i a') + { + if (!isset($this->data['updated'])) + { + if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'updated')) + { + $this->data['updated']['raw'] = $return[0]['data']; + } + + if (!empty($this->data['updated']['raw'])) + { + $parser = $this->registry->call('Parse_Date', 'get'); + $this->data['updated']['parsed'] = $parser->parse($this->data['updated']['raw']); + } + else + { + $this->data['updated'] = null; + } + } + if ($this->data['updated']) + { + $date_format = (string) $date_format; + switch ($date_format) + { + case '': + return $this->sanitize($this->data['updated']['raw'], SIMPLEPIE_CONSTRUCT_TEXT); + + case 'U': + return $this->data['updated']['parsed']; + + default: + return date($date_format, $this->data['updated']['parsed']); + } + } + else + { + return null; + } + } + + /** + * Get the localized posting date/time for the item + * + * Returns the date formatted in the localized language. To display in + * languages other than the server's default, you need to change the locale + * with {@link http://php.net/setlocale setlocale()}. The available + * localizations depend on which ones are installed on your web server. + * + * @since 1.0 + * + * @param string $date_format Supports any PHP date format from {@see http://php.net/strftime} (empty for the raw data) + * @return int|string|null + */ + public function get_local_date($date_format = '%c') + { + if (!$date_format) + { + return $this->sanitize($this->get_date(''), SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif (($date = $this->get_date('U')) !== null && $date !== false) + { + return strftime($date_format, $date); + } + else + { + return null; + } + } + + /** + * Get the posting date/time for the item (UTC time) + * + * @see get_date + * @param string $date_format Supports any PHP date format from {@see http://php.net/date} + * @return int|string|null + */ + public function get_gmdate($date_format = 'j F Y, g:i a') + { + $date = $this->get_date('U'); + if ($date === null) + { + return null; + } + + return gmdate($date_format, $date); + } + + /** + * Get the update date/time for the item (UTC time) + * + * @see get_updated_date + * @param string $date_format Supports any PHP date format from {@see http://php.net/date} + * @return int|string|null + */ + public function get_updated_gmdate($date_format = 'j F Y, g:i a') + { + $date = $this->get_updated_date('U'); + if ($date === null) + { + return null; + } + + return gmdate($date_format, $date); + } + + /** + * Get the permalink for the item + * + * Returns the first link available with a relationship of "alternate". + * Identical to {@see get_link()} with key 0 + * + * @see get_link + * @since 0.8 + * @return string|null Permalink URL + */ + public function get_permalink() + { + $link = $this->get_link(); + $enclosure = $this->get_enclosure(0); + if ($link !== null) + { + return $link; + } + elseif ($enclosure !== null) + { + return $enclosure->get_link(); + } + else + { + return null; + } + } + + /** + * Get a single link for the item + * + * @since Beta 3 + * @param int $key The link that you want to return. Remember that arrays begin with 0, not 1 + * @param string $rel The relationship of the link to return + * @return string|null Link URL + */ + public function get_link($key = 0, $rel = 'alternate') + { + $links = $this->get_links($rel); + if ($links[$key] !== null) + { + return $links[$key]; + } + else + { + return null; + } + } + + /** + * Get all links for the item + * + * Uses `<atom:link>`, `<link>` or `<guid>` + * + * @since Beta 2 + * @param string $rel The relationship of links to return + * @return array|null Links found for the item (strings) + */ + public function get_links($rel = 'alternate') + { + if (!isset($this->data['links'])) + { + $this->data['links'] = array(); + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link) + { + if (isset($link['attribs']['']['href'])) + { + $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; + $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); + + } + } + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link) + { + if (isset($link['attribs']['']['href'])) + { + $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; + $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); + } + } + if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link')) + { + $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); + } + if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link')) + { + $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); + } + if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link')) + { + $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); + } + if ($links = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'guid')) + { + if (!isset($links[0]['attribs']['']['isPermaLink']) || strtolower(trim($links[0]['attribs']['']['isPermaLink'])) === 'true') + { + $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); + } + } + + $keys = array_keys($this->data['links']); + foreach ($keys as $key) + { + if ($this->registry->call('Misc', 'is_isegment_nz_nc', array($key))) + { + if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key])) + { + $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]); + $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]; + } + else + { + $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key]; + } + } + elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY) + { + $this->data['links'][substr($key, 41)] =& $this->data['links'][$key]; + } + $this->data['links'][$key] = array_unique($this->data['links'][$key]); + } + } + if (isset($this->data['links'][$rel])) + { + return $this->data['links'][$rel]; + } + else + { + return null; + } + } + + /** + * Get an enclosure from the item + * + * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS. + * + * @since Beta 2 + * @todo Add ability to prefer one type of content over another (in a media group). + * @param int $key The enclosure that you want to return. Remember that arrays begin with 0, not 1 + * @return SimplePie_Enclosure|null + */ + public function get_enclosure($key = 0, $prefer = null) + { + $enclosures = $this->get_enclosures(); + if (isset($enclosures[$key])) + { + return $enclosures[$key]; + } + else + { + return null; + } + } + + /** + * Get all available enclosures (podcasts, etc.) + * + * Supports the <enclosure> RSS tag, as well as Media RSS and iTunes RSS. + * + * At this point, we're pretty much assuming that all enclosures for an item + * are the same content. Anything else is too complicated to + * properly support. + * + * @since Beta 2 + * @todo Add support for end-user defined sorting of enclosures by type/handler (so we can prefer the faster-loading FLV over MP4). + * @todo If an element exists at a level, but its value is empty, we should fall back to the value from the parent (if it exists). + * @return SimplePie_Enclosure[]|null List of SimplePie_Enclosure items + */ + public function get_enclosures() + { + if (!isset($this->data['enclosures'])) + { + $this->data['enclosures'] = array(); + + // Elements + $captions_parent = null; + $categories_parent = null; + $copyrights_parent = null; + $credits_parent = null; + $description_parent = null; + $duration_parent = null; + $hashes_parent = null; + $keywords_parent = null; + $player_parent = null; + $ratings_parent = null; + $restrictions_parent = null; + $thumbnails_parent = null; + $title_parent = null; + + // Let's do the channel and item-level ones first, and just re-use them if we need to. + $parent = $this->get_feed(); + + // CAPTIONS + if ($captions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text')) + { + foreach ($captions as $caption) + { + $caption_type = null; + $caption_lang = null; + $caption_startTime = null; + $caption_endTime = null; + $caption_text = null; + if (isset($caption['attribs']['']['type'])) + { + $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['lang'])) + { + $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['start'])) + { + $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['end'])) + { + $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['data'])) + { + $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $captions_parent[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text)); + } + } + elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text')) + { + foreach ($captions as $caption) + { + $caption_type = null; + $caption_lang = null; + $caption_startTime = null; + $caption_endTime = null; + $caption_text = null; + if (isset($caption['attribs']['']['type'])) + { + $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['lang'])) + { + $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['start'])) + { + $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['end'])) + { + $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['data'])) + { + $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $captions_parent[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text)); + } + } + if (is_array($captions_parent)) + { + $captions_parent = array_values(array_unique($captions_parent)); + } + + // CATEGORIES + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category) + { + $term = null; + $scheme = null; + $label = null; + if (isset($category['data'])) + { + $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($category['attribs']['']['scheme'])) + { + $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $scheme = 'http://search.yahoo.com/mrss/category_schema'; + } + if (isset($category['attribs']['']['label'])) + { + $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label)); + } + foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category) + { + $term = null; + $scheme = null; + $label = null; + if (isset($category['data'])) + { + $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($category['attribs']['']['scheme'])) + { + $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $scheme = 'http://search.yahoo.com/mrss/category_schema'; + } + if (isset($category['attribs']['']['label'])) + { + $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label)); + } + foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category) + { + $term = null; + $scheme = 'http://www.itunes.com/dtds/podcast-1.0.dtd'; + $label = null; + if (isset($category['attribs']['']['text'])) + { + $label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label)); + + if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'])) + { + foreach ((array) $category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'] as $subcategory) + { + if (isset($subcategory['attribs']['']['text'])) + { + $label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $categories_parent[] = $this->registry->create('Category', array($term, $scheme, $label)); + } + } + } + if (is_array($categories_parent)) + { + $categories_parent = array_values(array_unique($categories_parent)); + } + + // COPYRIGHT + if ($copyright = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright')) + { + $copyright_url = null; + $copyright_label = null; + if (isset($copyright[0]['attribs']['']['url'])) + { + $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($copyright[0]['data'])) + { + $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $copyrights_parent = $this->registry->create('Copyright', array($copyright_url, $copyright_label)); + } + elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright')) + { + $copyright_url = null; + $copyright_label = null; + if (isset($copyright[0]['attribs']['']['url'])) + { + $copyright_url = $this->sanitize($copyright[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($copyright[0]['data'])) + { + $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $copyrights_parent = $this->registry->create('Copyright', array($copyright_url, $copyright_label)); + } + + // CREDITS + if ($credits = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit')) + { + foreach ($credits as $credit) + { + $credit_role = null; + $credit_scheme = null; + $credit_name = null; + if (isset($credit['attribs']['']['role'])) + { + $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($credit['attribs']['']['scheme'])) + { + $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $credit_scheme = 'urn:ebu'; + } + if (isset($credit['data'])) + { + $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $credits_parent[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name)); + } + } + elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit')) + { + foreach ($credits as $credit) + { + $credit_role = null; + $credit_scheme = null; + $credit_name = null; + if (isset($credit['attribs']['']['role'])) + { + $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($credit['attribs']['']['scheme'])) + { + $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $credit_scheme = 'urn:ebu'; + } + if (isset($credit['data'])) + { + $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $credits_parent[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name)); + } + } + if (is_array($credits_parent)) + { + $credits_parent = array_values(array_unique($credits_parent)); + } + + // DESCRIPTION + if ($description_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description')) + { + if (isset($description_parent[0]['data'])) + { + $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + } + elseif ($description_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'description')) + { + if (isset($description_parent[0]['data'])) + { + $description_parent = $this->sanitize($description_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + } + + // DURATION + if ($duration_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'duration')) + { + $seconds = null; + $minutes = null; + $hours = null; + if (isset($duration_parent[0]['data'])) + { + $temp = explode(':', $this->sanitize($duration_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); + if (sizeof($temp) > 0) + { + $seconds = (int) array_pop($temp); + } + if (sizeof($temp) > 0) + { + $minutes = (int) array_pop($temp); + $seconds += $minutes * 60; + } + if (sizeof($temp) > 0) + { + $hours = (int) array_pop($temp); + $seconds += $hours * 3600; + } + unset($temp); + $duration_parent = $seconds; + } + } + + // HASHES + if ($hashes_iterator = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash')) + { + foreach ($hashes_iterator as $hash) + { + $value = null; + $algo = null; + if (isset($hash['data'])) + { + $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($hash['attribs']['']['algo'])) + { + $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $algo = 'md5'; + } + $hashes_parent[] = $algo.':'.$value; + } + } + elseif ($hashes_iterator = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'hash')) + { + foreach ($hashes_iterator as $hash) + { + $value = null; + $algo = null; + if (isset($hash['data'])) + { + $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($hash['attribs']['']['algo'])) + { + $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $algo = 'md5'; + } + $hashes_parent[] = $algo.':'.$value; + } + } + if (is_array($hashes_parent)) + { + $hashes_parent = array_values(array_unique($hashes_parent)); + } + + // KEYWORDS + if ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords')) + { + if (isset($keywords[0]['data'])) + { + $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); + foreach ($temp as $word) + { + $keywords_parent[] = trim($word); + } + } + unset($temp); + } + elseif ($keywords = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords')) + { + if (isset($keywords[0]['data'])) + { + $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); + foreach ($temp as $word) + { + $keywords_parent[] = trim($word); + } + } + unset($temp); + } + elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'keywords')) + { + if (isset($keywords[0]['data'])) + { + $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); + foreach ($temp as $word) + { + $keywords_parent[] = trim($word); + } + } + unset($temp); + } + elseif ($keywords = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'keywords')) + { + if (isset($keywords[0]['data'])) + { + $temp = explode(',', $this->sanitize($keywords[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); + foreach ($temp as $word) + { + $keywords_parent[] = trim($word); + } + } + unset($temp); + } + if (is_array($keywords_parent)) + { + $keywords_parent = array_values(array_unique($keywords_parent)); + } + + // PLAYER + if ($player_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player')) + { + if (isset($player_parent[0]['attribs']['']['url'])) + { + $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + } + } + elseif ($player_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'player')) + { + if (isset($player_parent[0]['attribs']['']['url'])) + { + $player_parent = $this->sanitize($player_parent[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + } + } + + // RATINGS + if ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating')) + { + foreach ($ratings as $rating) + { + $rating_scheme = null; + $rating_value = null; + if (isset($rating['attribs']['']['scheme'])) + { + $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $rating_scheme = 'urn:simple'; + } + if (isset($rating['data'])) + { + $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value)); + } + } + elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit')) + { + foreach ($ratings as $rating) + { + $rating_scheme = 'urn:itunes'; + $rating_value = null; + if (isset($rating['data'])) + { + $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value)); + } + } + elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating')) + { + foreach ($ratings as $rating) + { + $rating_scheme = null; + $rating_value = null; + if (isset($rating['attribs']['']['scheme'])) + { + $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $rating_scheme = 'urn:simple'; + } + if (isset($rating['data'])) + { + $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value)); + } + } + elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit')) + { + foreach ($ratings as $rating) + { + $rating_scheme = 'urn:itunes'; + $rating_value = null; + if (isset($rating['data'])) + { + $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $ratings_parent[] = $this->registry->create('Rating', array($rating_scheme, $rating_value)); + } + } + if (is_array($ratings_parent)) + { + $ratings_parent = array_values(array_unique($ratings_parent)); + } + + // RESTRICTIONS + if ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction')) + { + foreach ($restrictions as $restriction) + { + $restriction_relationship = null; + $restriction_type = null; + $restriction_value = null; + if (isset($restriction['attribs']['']['relationship'])) + { + $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($restriction['attribs']['']['type'])) + { + $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($restriction['data'])) + { + $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value)); + } + } + elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block')) + { + foreach ($restrictions as $restriction) + { + $restriction_relationship = 'allow'; + $restriction_type = null; + $restriction_value = 'itunes'; + if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes') + { + $restriction_relationship = 'deny'; + } + $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value)); + } + } + elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction')) + { + foreach ($restrictions as $restriction) + { + $restriction_relationship = null; + $restriction_type = null; + $restriction_value = null; + if (isset($restriction['attribs']['']['relationship'])) + { + $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($restriction['attribs']['']['type'])) + { + $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($restriction['data'])) + { + $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value)); + } + } + elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block')) + { + foreach ($restrictions as $restriction) + { + $restriction_relationship = 'allow'; + $restriction_type = null; + $restriction_value = 'itunes'; + if (isset($restriction['data']) && strtolower($restriction['data']) === 'yes') + { + $restriction_relationship = 'deny'; + } + $restrictions_parent[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value)); + } + } + if (is_array($restrictions_parent)) + { + $restrictions_parent = array_values(array_unique($restrictions_parent)); + } + else + { + $restrictions_parent = array(new SimplePie_Restriction('allow', null, 'default')); + } + + // THUMBNAILS + if ($thumbnails = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail')) + { + foreach ($thumbnails as $thumbnail) + { + if (isset($thumbnail['attribs']['']['url'])) + { + $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + } + } + } + elseif ($thumbnails = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'thumbnail')) + { + foreach ($thumbnails as $thumbnail) + { + if (isset($thumbnail['attribs']['']['url'])) + { + $thumbnails_parent[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + } + } + } + + // TITLES + if ($title_parent = $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title')) + { + if (isset($title_parent[0]['data'])) + { + $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + } + elseif ($title_parent = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'title')) + { + if (isset($title_parent[0]['data'])) + { + $title_parent = $this->sanitize($title_parent[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + } + + // Clear the memory + unset($parent); + + // Attributes + $bitrate = null; + $channels = null; + $duration = null; + $expression = null; + $framerate = null; + $height = null; + $javascript = null; + $lang = null; + $length = null; + $medium = null; + $samplingrate = null; + $type = null; + $url = null; + $width = null; + + // Elements + $captions = null; + $categories = null; + $copyrights = null; + $credits = null; + $description = null; + $hashes = null; + $keywords = null; + $player = null; + $ratings = null; + $restrictions = null; + $thumbnails = null; + $title = null; + + // If we have media:group tags, loop through them. + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'group') as $group) + { + if(isset($group['child']) && isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'])) + { + // If we have media:content tags, loop through them. + foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content) + { + if (isset($content['attribs']['']['url'])) + { + // Attributes + $bitrate = null; + $channels = null; + $duration = null; + $expression = null; + $framerate = null; + $height = null; + $javascript = null; + $lang = null; + $length = null; + $medium = null; + $samplingrate = null; + $type = null; + $url = null; + $width = null; + + // Elements + $captions = null; + $categories = null; + $copyrights = null; + $credits = null; + $description = null; + $hashes = null; + $keywords = null; + $player = null; + $ratings = null; + $restrictions = null; + $thumbnails = null; + $title = null; + + // Start checking the attributes of media:content + if (isset($content['attribs']['']['bitrate'])) + { + $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['channels'])) + { + $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['duration'])) + { + $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $duration = $duration_parent; + } + if (isset($content['attribs']['']['expression'])) + { + $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['framerate'])) + { + $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['height'])) + { + $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['lang'])) + { + $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['fileSize'])) + { + $length = ceil($content['attribs']['']['fileSize']); + } + if (isset($content['attribs']['']['medium'])) + { + $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['samplingrate'])) + { + $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['type'])) + { + $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['width'])) + { + $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + + // Checking the other optional media: elements. Priority: media:content, media:group, item, channel + + // CAPTIONS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption) + { + $caption_type = null; + $caption_lang = null; + $caption_startTime = null; + $caption_endTime = null; + $caption_text = null; + if (isset($caption['attribs']['']['type'])) + { + $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['lang'])) + { + $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['start'])) + { + $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['end'])) + { + $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['data'])) + { + $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text)); + } + if (is_array($captions)) + { + $captions = array_values(array_unique($captions)); + } + } + elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'])) + { + foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption) + { + $caption_type = null; + $caption_lang = null; + $caption_startTime = null; + $caption_endTime = null; + $caption_text = null; + if (isset($caption['attribs']['']['type'])) + { + $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['lang'])) + { + $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['start'])) + { + $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['end'])) + { + $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['data'])) + { + $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text)); + } + if (is_array($captions)) + { + $captions = array_values(array_unique($captions)); + } + } + else + { + $captions = $captions_parent; + } + + // CATEGORIES + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'])) + { + foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category) + { + $term = null; + $scheme = null; + $label = null; + if (isset($category['data'])) + { + $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($category['attribs']['']['scheme'])) + { + $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $scheme = 'http://search.yahoo.com/mrss/category_schema'; + } + if (isset($category['attribs']['']['label'])) + { + $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $categories[] = $this->registry->create('Category', array($term, $scheme, $label)); + } + } + if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'])) + { + foreach ((array) $group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category) + { + $term = null; + $scheme = null; + $label = null; + if (isset($category['data'])) + { + $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($category['attribs']['']['scheme'])) + { + $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $scheme = 'http://search.yahoo.com/mrss/category_schema'; + } + if (isset($category['attribs']['']['label'])) + { + $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $categories[] = $this->registry->create('Category', array($term, $scheme, $label)); + } + } + if (is_array($categories) && is_array($categories_parent)) + { + $categories = array_values(array_unique(array_merge($categories, $categories_parent))); + } + elseif (is_array($categories)) + { + $categories = array_values(array_unique($categories)); + } + elseif (is_array($categories_parent)) + { + $categories = array_values(array_unique($categories_parent)); + } + + // COPYRIGHTS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'])) + { + $copyright_url = null; + $copyright_label = null; + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'])) + { + $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'])) + { + $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label)); + } + elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'])) + { + $copyright_url = null; + $copyright_label = null; + if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'])) + { + $copyright_url = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'])) + { + $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label)); + } + else + { + $copyrights = $copyrights_parent; + } + + // CREDITS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit) + { + $credit_role = null; + $credit_scheme = null; + $credit_name = null; + if (isset($credit['attribs']['']['role'])) + { + $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($credit['attribs']['']['scheme'])) + { + $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $credit_scheme = 'urn:ebu'; + } + if (isset($credit['data'])) + { + $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name)); + } + if (is_array($credits)) + { + $credits = array_values(array_unique($credits)); + } + } + elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'])) + { + foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit) + { + $credit_role = null; + $credit_scheme = null; + $credit_name = null; + if (isset($credit['attribs']['']['role'])) + { + $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($credit['attribs']['']['scheme'])) + { + $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $credit_scheme = 'urn:ebu'; + } + if (isset($credit['data'])) + { + $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name)); + } + if (is_array($credits)) + { + $credits = array_values(array_unique($credits)); + } + } + else + { + $credits = $credits_parent; + } + + // DESCRIPTION + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'])) + { + $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'])) + { + $description = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $description = $description_parent; + } + + // HASHES + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash) + { + $value = null; + $algo = null; + if (isset($hash['data'])) + { + $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($hash['attribs']['']['algo'])) + { + $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $algo = 'md5'; + } + $hashes[] = $algo.':'.$value; + } + if (is_array($hashes)) + { + $hashes = array_values(array_unique($hashes)); + } + } + elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'])) + { + foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash) + { + $value = null; + $algo = null; + if (isset($hash['data'])) + { + $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($hash['attribs']['']['algo'])) + { + $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $algo = 'md5'; + } + $hashes[] = $algo.':'.$value; + } + if (is_array($hashes)) + { + $hashes = array_values(array_unique($hashes)); + } + } + else + { + $hashes = $hashes_parent; + } + + // KEYWORDS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'])) + { + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'])) + { + $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); + foreach ($temp as $word) + { + $keywords[] = trim($word); + } + unset($temp); + } + if (is_array($keywords)) + { + $keywords = array_values(array_unique($keywords)); + } + } + elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'])) + { + if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'])) + { + $temp = explode(',', $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); + foreach ($temp as $word) + { + $keywords[] = trim($word); + } + unset($temp); + } + if (is_array($keywords)) + { + $keywords = array_values(array_unique($keywords)); + } + } + else + { + $keywords = $keywords_parent; + } + + // PLAYER + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'])) + { + $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + } + elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'])) + { + $player = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + } + else + { + $player = $player_parent; + } + + // RATINGS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating) + { + $rating_scheme = null; + $rating_value = null; + if (isset($rating['attribs']['']['scheme'])) + { + $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $rating_scheme = 'urn:simple'; + } + if (isset($rating['data'])) + { + $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value)); + } + if (is_array($ratings)) + { + $ratings = array_values(array_unique($ratings)); + } + } + elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'])) + { + foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating) + { + $rating_scheme = null; + $rating_value = null; + if (isset($rating['attribs']['']['scheme'])) + { + $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $rating_scheme = 'urn:simple'; + } + if (isset($rating['data'])) + { + $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value)); + } + if (is_array($ratings)) + { + $ratings = array_values(array_unique($ratings)); + } + } + else + { + $ratings = $ratings_parent; + } + + // RESTRICTIONS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction) + { + $restriction_relationship = null; + $restriction_type = null; + $restriction_value = null; + if (isset($restriction['attribs']['']['relationship'])) + { + $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($restriction['attribs']['']['type'])) + { + $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($restriction['data'])) + { + $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value)); + } + if (is_array($restrictions)) + { + $restrictions = array_values(array_unique($restrictions)); + } + } + elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'])) + { + foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction) + { + $restriction_relationship = null; + $restriction_type = null; + $restriction_value = null; + if (isset($restriction['attribs']['']['relationship'])) + { + $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($restriction['attribs']['']['type'])) + { + $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($restriction['data'])) + { + $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value)); + } + if (is_array($restrictions)) + { + $restrictions = array_values(array_unique($restrictions)); + } + } + else + { + $restrictions = $restrictions_parent; + } + + // THUMBNAILS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail) + { + $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + } + if (is_array($thumbnails)) + { + $thumbnails = array_values(array_unique($thumbnails)); + } + } + elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'])) + { + foreach ($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail) + { + $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + } + if (is_array($thumbnails)) + { + $thumbnails = array_values(array_unique($thumbnails)); + } + } + else + { + $thumbnails = $thumbnails_parent; + } + + // TITLES + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'])) + { + $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'])) + { + $title = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $title = $title_parent; + } + + $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width)); + } + } + } + } + + // If we have standalone media:content tags, loop through them. + if (isset($this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'])) + { + foreach ((array) $this->data['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['content'] as $content) + { + if (isset($content['attribs']['']['url']) || isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'])) + { + // Attributes + $bitrate = null; + $channels = null; + $duration = null; + $expression = null; + $framerate = null; + $height = null; + $javascript = null; + $lang = null; + $length = null; + $medium = null; + $samplingrate = null; + $type = null; + $url = null; + $width = null; + + // Elements + $captions = null; + $categories = null; + $copyrights = null; + $credits = null; + $description = null; + $hashes = null; + $keywords = null; + $player = null; + $ratings = null; + $restrictions = null; + $thumbnails = null; + $title = null; + + // Start checking the attributes of media:content + if (isset($content['attribs']['']['bitrate'])) + { + $bitrate = $this->sanitize($content['attribs']['']['bitrate'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['channels'])) + { + $channels = $this->sanitize($content['attribs']['']['channels'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['duration'])) + { + $duration = $this->sanitize($content['attribs']['']['duration'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $duration = $duration_parent; + } + if (isset($content['attribs']['']['expression'])) + { + $expression = $this->sanitize($content['attribs']['']['expression'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['framerate'])) + { + $framerate = $this->sanitize($content['attribs']['']['framerate'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['height'])) + { + $height = $this->sanitize($content['attribs']['']['height'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['lang'])) + { + $lang = $this->sanitize($content['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['fileSize'])) + { + $length = ceil($content['attribs']['']['fileSize']); + } + if (isset($content['attribs']['']['medium'])) + { + $medium = $this->sanitize($content['attribs']['']['medium'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['samplingrate'])) + { + $samplingrate = $this->sanitize($content['attribs']['']['samplingrate'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['type'])) + { + $type = $this->sanitize($content['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['width'])) + { + $width = $this->sanitize($content['attribs']['']['width'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['attribs']['']['url'])) + { + $url = $this->sanitize($content['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + } + // Checking the other optional media: elements. Priority: media:content, media:group, item, channel + + // CAPTIONS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['text'] as $caption) + { + $caption_type = null; + $caption_lang = null; + $caption_startTime = null; + $caption_endTime = null; + $caption_text = null; + if (isset($caption['attribs']['']['type'])) + { + $caption_type = $this->sanitize($caption['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['lang'])) + { + $caption_lang = $this->sanitize($caption['attribs']['']['lang'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['start'])) + { + $caption_startTime = $this->sanitize($caption['attribs']['']['start'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['attribs']['']['end'])) + { + $caption_endTime = $this->sanitize($caption['attribs']['']['end'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($caption['data'])) + { + $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $captions[] = $this->registry->create('Caption', array($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text)); + } + if (is_array($captions)) + { + $captions = array_values(array_unique($captions)); + } + } + else + { + $captions = $captions_parent; + } + + // CATEGORIES + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'])) + { + foreach ((array) $content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'] as $category) + { + $term = null; + $scheme = null; + $label = null; + if (isset($category['data'])) + { + $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($category['attribs']['']['scheme'])) + { + $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $scheme = 'http://search.yahoo.com/mrss/category_schema'; + } + if (isset($category['attribs']['']['label'])) + { + $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $categories[] = $this->registry->create('Category', array($term, $scheme, $label)); + } + } + if (is_array($categories) && is_array($categories_parent)) + { + $categories = array_values(array_unique(array_merge($categories, $categories_parent))); + } + elseif (is_array($categories)) + { + $categories = array_values(array_unique($categories)); + } + elseif (is_array($categories_parent)) + { + $categories = array_values(array_unique($categories_parent)); + } + else + { + $categories = null; + } + + // COPYRIGHTS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'])) + { + $copyright_url = null; + $copyright_label = null; + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'])) + { + $copyright_url = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'])) + { + $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $copyrights = $this->registry->create('Copyright', array($copyright_url, $copyright_label)); + } + else + { + $copyrights = $copyrights_parent; + } + + // CREDITS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['credit'] as $credit) + { + $credit_role = null; + $credit_scheme = null; + $credit_name = null; + if (isset($credit['attribs']['']['role'])) + { + $credit_role = $this->sanitize($credit['attribs']['']['role'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($credit['attribs']['']['scheme'])) + { + $credit_scheme = $this->sanitize($credit['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $credit_scheme = 'urn:ebu'; + } + if (isset($credit['data'])) + { + $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $credits[] = $this->registry->create('Credit', array($credit_role, $credit_scheme, $credit_name)); + } + if (is_array($credits)) + { + $credits = array_values(array_unique($credits)); + } + } + else + { + $credits = $credits_parent; + } + + // DESCRIPTION + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'])) + { + $description = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['description'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $description = $description_parent; + } + + // HASHES + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['hash'] as $hash) + { + $value = null; + $algo = null; + if (isset($hash['data'])) + { + $value = $this->sanitize($hash['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($hash['attribs']['']['algo'])) + { + $algo = $this->sanitize($hash['attribs']['']['algo'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $algo = 'md5'; + } + $hashes[] = $algo.':'.$value; + } + if (is_array($hashes)) + { + $hashes = array_values(array_unique($hashes)); + } + } + else + { + $hashes = $hashes_parent; + } + + // KEYWORDS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'])) + { + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'])) + { + $temp = explode(',', $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['keywords'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); + foreach ($temp as $word) + { + $keywords[] = trim($word); + } + unset($temp); + } + if (is_array($keywords)) + { + $keywords = array_values(array_unique($keywords)); + } + } + else + { + $keywords = $keywords_parent; + } + + // PLAYER + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'])) + { + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'])) { + $player = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['player'][0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + } + } + else + { + $player = $player_parent; + } + + // RATINGS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['rating'] as $rating) + { + $rating_scheme = null; + $rating_value = null; + if (isset($rating['attribs']['']['scheme'])) + { + $rating_scheme = $this->sanitize($rating['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $rating_scheme = 'urn:simple'; + } + if (isset($rating['data'])) + { + $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $ratings[] = $this->registry->create('Rating', array($rating_scheme, $rating_value)); + } + if (is_array($ratings)) + { + $ratings = array_values(array_unique($ratings)); + } + } + else + { + $ratings = $ratings_parent; + } + + // RESTRICTIONS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['restriction'] as $restriction) + { + $restriction_relationship = null; + $restriction_type = null; + $restriction_value = null; + if (isset($restriction['attribs']['']['relationship'])) + { + $restriction_relationship = $this->sanitize($restriction['attribs']['']['relationship'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($restriction['attribs']['']['type'])) + { + $restriction_type = $this->sanitize($restriction['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($restriction['data'])) + { + $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $restrictions[] = $this->registry->create('Restriction', array($restriction_relationship, $restriction_type, $restriction_value)); + } + if (is_array($restrictions)) + { + $restrictions = array_values(array_unique($restrictions)); + } + } + else + { + $restrictions = $restrictions_parent; + } + + // THUMBNAILS + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'])) + { + foreach ($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['thumbnail'] as $thumbnail) + { + if (isset($thumbnail['attribs']['']['url'])) { + $thumbnails[] = $this->sanitize($thumbnail['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI); + } + } + if (is_array($thumbnails)) + { + $thumbnails = array_values(array_unique($thumbnails)); + } + } + else + { + $thumbnails = $thumbnails_parent; + } + + // TITLES + if (isset($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'])) + { + $title = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['title'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $title = $title_parent; + } + + $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width)); + } + } + } + + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link') as $link) + { + if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure') + { + // Attributes + $bitrate = null; + $channels = null; + $duration = null; + $expression = null; + $framerate = null; + $height = null; + $javascript = null; + $lang = null; + $length = null; + $medium = null; + $samplingrate = null; + $type = null; + $url = null; + $width = null; + + $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); + if (isset($link['attribs']['']['type'])) + { + $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($link['attribs']['']['length'])) + { + $length = ceil($link['attribs']['']['length']); + } + if (isset($link['attribs']['']['title'])) + { + $title = $this->sanitize($link['attribs']['']['title'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $title = $title_parent; + } + + // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor + $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title, $width)); + } + } + + foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link') as $link) + { + if (isset($link['attribs']['']['href']) && !empty($link['attribs']['']['rel']) && $link['attribs']['']['rel'] === 'enclosure') + { + // Attributes + $bitrate = null; + $channels = null; + $duration = null; + $expression = null; + $framerate = null; + $height = null; + $javascript = null; + $lang = null; + $length = null; + $medium = null; + $samplingrate = null; + $type = null; + $url = null; + $width = null; + + $url = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); + if (isset($link['attribs']['']['type'])) + { + $type = $this->sanitize($link['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($link['attribs']['']['length'])) + { + $length = ceil($link['attribs']['']['length']); + } + + // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor + $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width)); + } + } + + if ($enclosure = $this->get_item_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'enclosure')) + { + if (isset($enclosure[0]['attribs']['']['url'])) + { + // Attributes + $bitrate = null; + $channels = null; + $duration = null; + $expression = null; + $framerate = null; + $height = null; + $javascript = null; + $lang = null; + $length = null; + $medium = null; + $samplingrate = null; + $type = null; + $url = null; + $width = null; + + $url = $this->sanitize($enclosure[0]['attribs']['']['url'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($enclosure[0])); + if (isset($enclosure[0]['attribs']['']['type'])) + { + $type = $this->sanitize($enclosure[0]['attribs']['']['type'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($enclosure[0]['attribs']['']['length'])) + { + $length = ceil($enclosure[0]['attribs']['']['length']); + } + + // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor + $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width)); + } + } + + if (sizeof($this->data['enclosures']) === 0 && ($url || $type || $length || $bitrate || $captions_parent || $categories_parent || $channels || $copyrights_parent || $credits_parent || $description_parent || $duration_parent || $expression || $framerate || $hashes_parent || $height || $keywords_parent || $lang || $medium || $player_parent || $ratings_parent || $restrictions_parent || $samplingrate || $thumbnails_parent || $title_parent || $width)) + { + // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor + $this->data['enclosures'][] = $this->registry->create('Enclosure', array($url, $type, $length, null, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width)); + } + + $this->data['enclosures'] = array_values(array_unique($this->data['enclosures'])); + } + if (!empty($this->data['enclosures'])) + { + return $this->data['enclosures']; + } + else + { + return null; + } + } + + /** + * Get the latitude coordinates for the item + * + * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications + * + * Uses `<geo:lat>` or `<georss:point>` + * + * @since 1.0 + * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo + * @link http://www.georss.org/ GeoRSS + * @return string|null + */ + public function get_latitude() + { + if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat')) + { + return (float) $return[0]['data']; + } + elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) + { + return (float) $match[1]; + } + else + { + return null; + } + } + + /** + * Get the longitude coordinates for the item + * + * Compatible with the W3C WGS84 Basic Geo and GeoRSS specifications + * + * Uses `<geo:long>`, `<geo:lon>` or `<georss:point>` + * + * @since 1.0 + * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo + * @link http://www.georss.org/ GeoRSS + * @return string|null + */ + public function get_longitude() + { + if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long')) + { + return (float) $return[0]['data']; + } + elseif ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon')) + { + return (float) $return[0]['data']; + } + elseif (($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) + { + return (float) $match[2]; + } + else + { + return null; + } + } + + /** + * Get the `<atom:source>` for the item + * + * @since 1.1 + * @return SimplePie_Source|null + */ + public function get_source() + { + if ($return = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'source')) + { + return $this->registry->create('Source', array($this, $return[0])); + } + else + { + return null; + } + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Locator.php b/vendor/simplepie/simplepie/library/SimplePie/Locator.php new file mode 100644 index 000000000..bc314c2cd --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Locator.php @@ -0,0 +1,429 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Used for feed auto-discovery + * + * + * This class can be overloaded with {@see SimplePie::set_locator_class()} + * + * @package SimplePie + */ +class SimplePie_Locator +{ + var $useragent; + var $timeout; + var $file; + var $local = array(); + var $elsewhere = array(); + var $cached_entities = array(); + var $http_base; + var $base; + var $base_location = 0; + var $checked_feeds = 0; + var $max_checked_feeds = 10; + protected $registry; + + public function __construct(SimplePie_File $file, $timeout = 10, $useragent = null, $max_checked_feeds = 10) + { + $this->file = $file; + $this->useragent = $useragent; + $this->timeout = $timeout; + $this->max_checked_feeds = $max_checked_feeds; + + if (class_exists('DOMDocument')) + { + $this->dom = new DOMDocument(); + + set_error_handler(array('SimplePie_Misc', 'silence_errors')); + $this->dom->loadHTML($this->file->body); + restore_error_handler(); + } + else + { + $this->dom = null; + } + } + + public function set_registry(SimplePie_Registry $registry) + { + $this->registry = $registry; + } + + public function find($type = SIMPLEPIE_LOCATOR_ALL, &$working) + { + if ($this->is_feed($this->file)) + { + return $this->file; + } + + if ($this->file->method & SIMPLEPIE_FILE_SOURCE_REMOTE) + { + $sniffer = $this->registry->create('Content_Type_Sniffer', array($this->file)); + if ($sniffer->get_type() !== 'text/html') + { + return null; + } + } + + if ($type & ~SIMPLEPIE_LOCATOR_NONE) + { + $this->get_base(); + } + + if ($type & SIMPLEPIE_LOCATOR_AUTODISCOVERY && $working = $this->autodiscovery()) + { + return $working[0]; + } + + if ($type & (SIMPLEPIE_LOCATOR_LOCAL_EXTENSION | SIMPLEPIE_LOCATOR_LOCAL_BODY | SIMPLEPIE_LOCATOR_REMOTE_EXTENSION | SIMPLEPIE_LOCATOR_REMOTE_BODY) && $this->get_links()) + { + if ($type & SIMPLEPIE_LOCATOR_LOCAL_EXTENSION && $working = $this->extension($this->local)) + { + return $working[0]; + } + + if ($type & SIMPLEPIE_LOCATOR_LOCAL_BODY && $working = $this->body($this->local)) + { + return $working[0]; + } + + if ($type & SIMPLEPIE_LOCATOR_REMOTE_EXTENSION && $working = $this->extension($this->elsewhere)) + { + return $working[0]; + } + + if ($type & SIMPLEPIE_LOCATOR_REMOTE_BODY && $working = $this->body($this->elsewhere)) + { + return $working[0]; + } + } + return null; + } + + public function is_feed($file, $check_html = false) + { + if ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE) + { + $sniffer = $this->registry->create('Content_Type_Sniffer', array($file)); + $sniffed = $sniffer->get_type(); + $mime_types = array('application/rss+xml', 'application/rdf+xml', + 'text/rdf', 'application/atom+xml', 'text/xml', + 'application/xml', 'application/x-rss+xml'); + if ($check_html) + { + $mime_types[] = 'text/html'; + } + if (in_array($sniffed, $mime_types)) + { + return true; + } + else + { + return false; + } + } + elseif ($file->method & SIMPLEPIE_FILE_SOURCE_LOCAL) + { + return true; + } + else + { + return false; + } + } + + public function get_base() + { + if ($this->dom === null) + { + throw new SimplePie_Exception('DOMDocument not found, unable to use locator'); + } + $this->http_base = $this->file->url; + $this->base = $this->http_base; + $elements = $this->dom->getElementsByTagName('base'); + foreach ($elements as $element) + { + if ($element->hasAttribute('href')) + { + $base = $this->registry->call('Misc', 'absolutize_url', array(trim($element->getAttribute('href')), $this->http_base)); + if ($base === false) + { + continue; + } + $this->base = $base; + $this->base_location = method_exists($element, 'getLineNo') ? $element->getLineNo() : 0; + break; + } + } + } + + public function autodiscovery() + { + $done = array(); + $feeds = array(); + $feeds = array_merge($feeds, $this->search_elements_by_tag('link', $done, $feeds)); + $feeds = array_merge($feeds, $this->search_elements_by_tag('a', $done, $feeds)); + $feeds = array_merge($feeds, $this->search_elements_by_tag('area', $done, $feeds)); + + if (!empty($feeds)) + { + return array_values($feeds); + } + else + { + return null; + } + } + + protected function search_elements_by_tag($name, &$done, $feeds) + { + if ($this->dom === null) + { + throw new SimplePie_Exception('DOMDocument not found, unable to use locator'); + } + + $links = $this->dom->getElementsByTagName($name); + foreach ($links as $link) + { + if ($this->checked_feeds === $this->max_checked_feeds) + { + break; + } + if ($link->hasAttribute('href') && $link->hasAttribute('rel')) + { + $rel = array_unique($this->registry->call('Misc', 'space_separated_tokens', array(strtolower($link->getAttribute('rel'))))); + $line = method_exists($link, 'getLineNo') ? $link->getLineNo() : 1; + + if ($this->base_location < $line) + { + $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->base)); + } + else + { + $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->http_base)); + } + if ($href === false) + { + continue; + } + + if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !in_array('stylesheet', $rel) && $link->hasAttribute('type') && in_array(strtolower($this->registry->call('Misc', 'parse_mime', array($link->getAttribute('type')))), array('text/html', 'application/rss+xml', 'application/atom+xml'))) && !isset($feeds[$href])) + { + $this->checked_feeds++; + $headers = array( + 'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1', + ); + $feed = $this->registry->create('File', array($href, $this->timeout, 5, $headers, $this->useragent)); + if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed, true)) + { + $feeds[$href] = $feed; + } + } + $done[] = $href; + } + } + + return $feeds; + } + + public function get_links() + { + if ($this->dom === null) + { + throw new SimplePie_Exception('DOMDocument not found, unable to use locator'); + } + + $links = $this->dom->getElementsByTagName('a'); + foreach ($links as $link) + { + if ($link->hasAttribute('href')) + { + $href = trim($link->getAttribute('href')); + $parsed = $this->registry->call('Misc', 'parse_url', array($href)); + if ($parsed['scheme'] === '' || preg_match('/^(https?|feed)?$/i', $parsed['scheme'])) + { + if (method_exists($link, 'getLineNo') && $this->base_location < $link->getLineNo()) + { + $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->base)); + } + else + { + $href = $this->registry->call('Misc', 'absolutize_url', array(trim($link->getAttribute('href')), $this->http_base)); + } + if ($href === false) + { + continue; + } + + $current = $this->registry->call('Misc', 'parse_url', array($this->file->url)); + + if ($parsed['authority'] === '' || $parsed['authority'] === $current['authority']) + { + $this->local[] = $href; + } + else + { + $this->elsewhere[] = $href; + } + } + } + } + $this->local = array_unique($this->local); + $this->elsewhere = array_unique($this->elsewhere); + if (!empty($this->local) || !empty($this->elsewhere)) + { + return true; + } + return null; + } + + public function get_rel_link($rel) + { + if ($this->dom === null) + { + throw new SimplePie_Exception('DOMDocument not found, unable to use '. + 'locator'); + } + if (!class_exists('DOMXpath')) + { + throw new SimplePie_Exception('DOMXpath not found, unable to use '. + 'get_rel_link'); + } + + $xpath = new DOMXpath($this->dom); + $query = '//a[@rel and @href] | //link[@rel and @href]'; + foreach ($xpath->query($query) as $link) + { + $href = trim($link->getAttribute('href')); + $parsed = $this->registry->call('Misc', 'parse_url', array($href)); + if ($parsed['scheme'] === '' || + preg_match('/^https?$/i', $parsed['scheme'])) + { + if (method_exists($link, 'getLineNo') && + $this->base_location < $link->getLineNo()) + { + $href = + $this->registry->call('Misc', 'absolutize_url', + array(trim($link->getAttribute('href')), + $this->base)); + } + else + { + $href = + $this->registry->call('Misc', 'absolutize_url', + array(trim($link->getAttribute('href')), + $this->http_base)); + } + if ($href === false) + { + return null; + } + $rel_values = explode(' ', strtolower($link->getAttribute('rel'))); + if (in_array($rel, $rel_values)) + { + return $href; + } + } + } + return null; + } + + public function extension(&$array) + { + foreach ($array as $key => $value) + { + if ($this->checked_feeds === $this->max_checked_feeds) + { + break; + } + if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml'))) + { + $this->checked_feeds++; + + $headers = array( + 'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1', + ); + $feed = $this->registry->create('File', array($value, $this->timeout, 5, $headers, $this->useragent)); + if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed)) + { + return array($feed); + } + else + { + unset($array[$key]); + } + } + } + return null; + } + + public function body(&$array) + { + foreach ($array as $key => $value) + { + if ($this->checked_feeds === $this->max_checked_feeds) + { + break; + } + if (preg_match('/(rss|rdf|atom|xml)/i', $value)) + { + $this->checked_feeds++; + $headers = array( + 'Accept' => 'application/atom+xml, application/rss+xml, application/rdf+xml;q=0.9, application/xml;q=0.8, text/xml;q=0.8, text/html;q=0.7, unknown/unknown;q=0.1, application/unknown;q=0.1, */*;q=0.1', + ); + $feed = $this->registry->create('File', array($value, $this->timeout, 5, null, $this->useragent)); + if ($feed->success && ($feed->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($feed->status_code === 200 || $feed->status_code > 206 && $feed->status_code < 300)) && $this->is_feed($feed)) + { + return array($feed); + } + else + { + unset($array[$key]); + } + } + } + return null; + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Misc.php b/vendor/simplepie/simplepie/library/SimplePie/Misc.php new file mode 100644 index 000000000..2e3107eb4 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Misc.php @@ -0,0 +1,2279 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Miscellanous utilities + * + * @package SimplePie + */ +class SimplePie_Misc +{ + public static function time_hms($seconds) + { + $time = ''; + + $hours = floor($seconds / 3600); + $remainder = $seconds % 3600; + if ($hours > 0) + { + $time .= $hours.':'; + } + + $minutes = floor($remainder / 60); + $seconds = $remainder % 60; + if ($minutes < 10 && $hours > 0) + { + $minutes = '0' . $minutes; + } + if ($seconds < 10) + { + $seconds = '0' . $seconds; + } + + $time .= $minutes.':'; + $time .= $seconds; + + return $time; + } + + public static function absolutize_url($relative, $base) + { + $iri = SimplePie_IRI::absolutize(new SimplePie_IRI($base), $relative); + if ($iri === false) + { + return false; + } + return $iri->get_uri(); + } + + /** + * Get a HTML/XML element from a HTML string + * + * @deprecated Use DOMDocument instead (parsing HTML with regex is bad!) + * @param string $realname Element name (including namespace prefix if applicable) + * @param string $string HTML document + * @return array + */ + public static function get_element($realname, $string) + { + $return = array(); + $name = preg_quote($realname, '/'); + if (preg_match_all("/<($name)" . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . "(>(.*)<\/$name>|(\/)?>)/siU", $string, $matches, PREG_SET_ORDER | PREG_OFFSET_CAPTURE)) + { + for ($i = 0, $total_matches = count($matches); $i < $total_matches; $i++) + { + $return[$i]['tag'] = $realname; + $return[$i]['full'] = $matches[$i][0][0]; + $return[$i]['offset'] = $matches[$i][0][1]; + if (strlen($matches[$i][3][0]) <= 2) + { + $return[$i]['self_closing'] = true; + } + else + { + $return[$i]['self_closing'] = false; + $return[$i]['content'] = $matches[$i][4][0]; + } + $return[$i]['attribs'] = array(); + if (isset($matches[$i][2][0]) && preg_match_all('/[\x09\x0A\x0B\x0C\x0D\x20]+([^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3D\x3E]*)(?:[\x09\x0A\x0B\x0C\x0D\x20]*=[\x09\x0A\x0B\x0C\x0D\x20]*(?:"([^"]*)"|\'([^\']*)\'|([^\x09\x0A\x0B\x0C\x0D\x20\x22\x27\x3E][^\x09\x0A\x0B\x0C\x0D\x20\x3E]*)?))?/', ' ' . $matches[$i][2][0] . ' ', $attribs, PREG_SET_ORDER)) + { + for ($j = 0, $total_attribs = count($attribs); $j < $total_attribs; $j++) + { + if (count($attribs[$j]) === 2) + { + $attribs[$j][2] = $attribs[$j][1]; + } + $return[$i]['attribs'][strtolower($attribs[$j][1])]['data'] = SimplePie_Misc::entities_decode(end($attribs[$j])); + } + } + } + } + return $return; + } + + public static function element_implode($element) + { + $full = "<$element[tag]"; + foreach ($element['attribs'] as $key => $value) + { + $key = strtolower($key); + $full .= " $key=\"" . htmlspecialchars($value['data'], ENT_COMPAT, 'UTF-8') . '"'; + } + if ($element['self_closing']) + { + $full .= ' />'; + } + else + { + $full .= ">$element[content]</$element[tag]>"; + } + return $full; + } + + public static function error($message, $level, $file, $line) + { + if ((ini_get('error_reporting') & $level) > 0) + { + switch ($level) + { + case E_USER_ERROR: + $note = 'PHP Error'; + break; + case E_USER_WARNING: + $note = 'PHP Warning'; + break; + case E_USER_NOTICE: + $note = 'PHP Notice'; + break; + default: + $note = 'Unknown Error'; + break; + } + + $log_error = true; + if (!function_exists('error_log')) + { + $log_error = false; + } + + $log_file = @ini_get('error_log'); + if (!empty($log_file) && ('syslog' !== $log_file) && !@is_writable($log_file)) + { + $log_error = false; + } + + if ($log_error) + { + @error_log("$note: $message in $file on line $line", 0); + } + } + + return $message; + } + + public static function fix_protocol($url, $http = 1) + { + $url = SimplePie_Misc::normalize_url($url); + $parsed = SimplePie_Misc::parse_url($url); + if ($parsed['scheme'] !== '' && $parsed['scheme'] !== 'http' && $parsed['scheme'] !== 'https') + { + return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['authority'], $parsed['path'], $parsed['query'], $parsed['fragment']), $http); + } + + if ($parsed['scheme'] === '' && $parsed['authority'] === '' && !file_exists($url)) + { + return SimplePie_Misc::fix_protocol(SimplePie_Misc::compress_parse_url('http', $parsed['path'], '', $parsed['query'], $parsed['fragment']), $http); + } + + if ($http === 2 && $parsed['scheme'] !== '') + { + return "feed:$url"; + } + elseif ($http === 3 && strtolower($parsed['scheme']) === 'http') + { + return substr_replace($url, 'podcast', 0, 4); + } + elseif ($http === 4 && strtolower($parsed['scheme']) === 'http') + { + return substr_replace($url, 'itpc', 0, 4); + } + else + { + return $url; + } + } + + public static function array_merge_recursive($array1, $array2) + { + foreach ($array2 as $key => $value) + { + if (is_array($value)) + { + $array1[$key] = SimplePie_Misc::array_merge_recursive($array1[$key], $value); + } + else + { + $array1[$key] = $value; + } + } + + return $array1; + } + + public static function parse_url($url) + { + $iri = new SimplePie_IRI($url); + return array( + 'scheme' => (string) $iri->scheme, + 'authority' => (string) $iri->authority, + 'path' => (string) $iri->path, + 'query' => (string) $iri->query, + 'fragment' => (string) $iri->fragment + ); + } + + public static function compress_parse_url($scheme = '', $authority = '', $path = '', $query = '', $fragment = '') + { + $iri = new SimplePie_IRI(''); + $iri->scheme = $scheme; + $iri->authority = $authority; + $iri->path = $path; + $iri->query = $query; + $iri->fragment = $fragment; + return $iri->get_uri(); + } + + public static function normalize_url($url) + { + $iri = new SimplePie_IRI($url); + return $iri->get_uri(); + } + + public static function percent_encoding_normalization($match) + { + $integer = hexdec($match[1]); + if ($integer >= 0x41 && $integer <= 0x5A || $integer >= 0x61 && $integer <= 0x7A || $integer >= 0x30 && $integer <= 0x39 || $integer === 0x2D || $integer === 0x2E || $integer === 0x5F || $integer === 0x7E) + { + return chr($integer); + } + else + { + return strtoupper($match[0]); + } + } + + /** + * Converts a Windows-1252 encoded string to a UTF-8 encoded string + * + * @static + * @param string $string Windows-1252 encoded string + * @return string UTF-8 encoded string + */ + public static function windows_1252_to_utf8($string) + { + static $convert_table = array("\x80" => "\xE2\x82\xAC", "\x81" => "\xEF\xBF\xBD", "\x82" => "\xE2\x80\x9A", "\x83" => "\xC6\x92", "\x84" => "\xE2\x80\x9E", "\x85" => "\xE2\x80\xA6", "\x86" => "\xE2\x80\xA0", "\x87" => "\xE2\x80\xA1", "\x88" => "\xCB\x86", "\x89" => "\xE2\x80\xB0", "\x8A" => "\xC5\xA0", "\x8B" => "\xE2\x80\xB9", "\x8C" => "\xC5\x92", "\x8D" => "\xEF\xBF\xBD", "\x8E" => "\xC5\xBD", "\x8F" => "\xEF\xBF\xBD", "\x90" => "\xEF\xBF\xBD", "\x91" => "\xE2\x80\x98", "\x92" => "\xE2\x80\x99", "\x93" => "\xE2\x80\x9C", "\x94" => "\xE2\x80\x9D", "\x95" => "\xE2\x80\xA2", "\x96" => "\xE2\x80\x93", "\x97" => "\xE2\x80\x94", "\x98" => "\xCB\x9C", "\x99" => "\xE2\x84\xA2", "\x9A" => "\xC5\xA1", "\x9B" => "\xE2\x80\xBA", "\x9C" => "\xC5\x93", "\x9D" => "\xEF\xBF\xBD", "\x9E" => "\xC5\xBE", "\x9F" => "\xC5\xB8", "\xA0" => "\xC2\xA0", "\xA1" => "\xC2\xA1", "\xA2" => "\xC2\xA2", "\xA3" => "\xC2\xA3", "\xA4" => "\xC2\xA4", "\xA5" => "\xC2\xA5", "\xA6" => "\xC2\xA6", "\xA7" => "\xC2\xA7", "\xA8" => "\xC2\xA8", "\xA9" => "\xC2\xA9", "\xAA" => "\xC2\xAA", "\xAB" => "\xC2\xAB", "\xAC" => "\xC2\xAC", "\xAD" => "\xC2\xAD", "\xAE" => "\xC2\xAE", "\xAF" => "\xC2\xAF", "\xB0" => "\xC2\xB0", "\xB1" => "\xC2\xB1", "\xB2" => "\xC2\xB2", "\xB3" => "\xC2\xB3", "\xB4" => "\xC2\xB4", "\xB5" => "\xC2\xB5", "\xB6" => "\xC2\xB6", "\xB7" => "\xC2\xB7", "\xB8" => "\xC2\xB8", "\xB9" => "\xC2\xB9", "\xBA" => "\xC2\xBA", "\xBB" => "\xC2\xBB", "\xBC" => "\xC2\xBC", "\xBD" => "\xC2\xBD", "\xBE" => "\xC2\xBE", "\xBF" => "\xC2\xBF", "\xC0" => "\xC3\x80", "\xC1" => "\xC3\x81", "\xC2" => "\xC3\x82", "\xC3" => "\xC3\x83", "\xC4" => "\xC3\x84", "\xC5" => "\xC3\x85", "\xC6" => "\xC3\x86", "\xC7" => "\xC3\x87", "\xC8" => "\xC3\x88", "\xC9" => "\xC3\x89", "\xCA" => "\xC3\x8A", "\xCB" => "\xC3\x8B", "\xCC" => "\xC3\x8C", "\xCD" => "\xC3\x8D", "\xCE" => "\xC3\x8E", "\xCF" => "\xC3\x8F", "\xD0" => "\xC3\x90", "\xD1" => "\xC3\x91", "\xD2" => "\xC3\x92", "\xD3" => "\xC3\x93", "\xD4" => "\xC3\x94", "\xD5" => "\xC3\x95", "\xD6" => "\xC3\x96", "\xD7" => "\xC3\x97", "\xD8" => "\xC3\x98", "\xD9" => "\xC3\x99", "\xDA" => "\xC3\x9A", "\xDB" => "\xC3\x9B", "\xDC" => "\xC3\x9C", "\xDD" => "\xC3\x9D", "\xDE" => "\xC3\x9E", "\xDF" => "\xC3\x9F", "\xE0" => "\xC3\xA0", "\xE1" => "\xC3\xA1", "\xE2" => "\xC3\xA2", "\xE3" => "\xC3\xA3", "\xE4" => "\xC3\xA4", "\xE5" => "\xC3\xA5", "\xE6" => "\xC3\xA6", "\xE7" => "\xC3\xA7", "\xE8" => "\xC3\xA8", "\xE9" => "\xC3\xA9", "\xEA" => "\xC3\xAA", "\xEB" => "\xC3\xAB", "\xEC" => "\xC3\xAC", "\xED" => "\xC3\xAD", "\xEE" => "\xC3\xAE", "\xEF" => "\xC3\xAF", "\xF0" => "\xC3\xB0", "\xF1" => "\xC3\xB1", "\xF2" => "\xC3\xB2", "\xF3" => "\xC3\xB3", "\xF4" => "\xC3\xB4", "\xF5" => "\xC3\xB5", "\xF6" => "\xC3\xB6", "\xF7" => "\xC3\xB7", "\xF8" => "\xC3\xB8", "\xF9" => "\xC3\xB9", "\xFA" => "\xC3\xBA", "\xFB" => "\xC3\xBB", "\xFC" => "\xC3\xBC", "\xFD" => "\xC3\xBD", "\xFE" => "\xC3\xBE", "\xFF" => "\xC3\xBF"); + + return strtr($string, $convert_table); + } + + /** + * Change a string from one encoding to another + * + * @param string $data Raw data in $input encoding + * @param string $input Encoding of $data + * @param string $output Encoding you want + * @return string|boolean False if we can't convert it + */ + public static function change_encoding($data, $input, $output) + { + $input = SimplePie_Misc::encoding($input); + $output = SimplePie_Misc::encoding($output); + + // We fail to fail on non US-ASCII bytes + if ($input === 'US-ASCII') + { + static $non_ascii_octects = ''; + if (!$non_ascii_octects) + { + for ($i = 0x80; $i <= 0xFF; $i++) + { + $non_ascii_octects .= chr($i); + } + } + $data = substr($data, 0, strcspn($data, $non_ascii_octects)); + } + + // This is first, as behaviour of this is completely predictable + if ($input === 'windows-1252' && $output === 'UTF-8') + { + return SimplePie_Misc::windows_1252_to_utf8($data); + } + // This is second, as behaviour of this varies only with PHP version (the middle part of this expression checks the encoding is supported). + elseif (function_exists('mb_convert_encoding') && ($return = SimplePie_Misc::change_encoding_mbstring($data, $input, $output))) + { + return $return; + } + // This is third, as behaviour of this varies with OS userland and PHP version + elseif (function_exists('iconv') && ($return = SimplePie_Misc::change_encoding_iconv($data, $input, $output))) + { + return $return; + } + // This is last, as behaviour of this varies with OS userland and PHP version + elseif (class_exists('\UConverter') && ($return = SimplePie_Misc::change_encoding_uconverter($data, $input, $output))) + { + return $return; + } + // If we can't do anything, just fail + else + { + return false; + } + } + + protected static function change_encoding_mbstring($data, $input, $output) + { + if ($input === 'windows-949') + { + $input = 'EUC-KR'; + } + if ($output === 'windows-949') + { + $output = 'EUC-KR'; + } + if ($input === 'Windows-31J') + { + $input = 'SJIS'; + } + if ($output === 'Windows-31J') + { + $output = 'SJIS'; + } + + // Check that the encoding is supported + if (@mb_convert_encoding("\x80", 'UTF-16BE', $input) === "\x00\x80") + { + return false; + } + if (!in_array($input, mb_list_encodings())) + { + return false; + } + + // Let's do some conversion + if ($return = @mb_convert_encoding($data, $output, $input)) + { + return $return; + } + + return false; + } + + protected static function change_encoding_iconv($data, $input, $output) + { + return @iconv($input, $output, $data); + } + + /** + * @param string $data + * @param string $input + * @param string $output + * @return string|false + */ + protected static function change_encoding_uconverter($data, $input, $output) + { + return @\UConverter::transcode($data, $output, $input); + } + + /** + * Normalize an encoding name + * + * This is automatically generated by create.php + * + * To generate it, run `php create.php` on the command line, and copy the + * output to replace this function. + * + * @param string $charset Character set to standardise + * @return string Standardised name + */ + public static function encoding($charset) + { + // Normalization from UTS #22 + switch (strtolower(preg_replace('/(?:[^a-zA-Z0-9]+|([^0-9])0+)/', '\1', $charset))) + { + case 'adobestandardencoding': + case 'csadobestandardencoding': + return 'Adobe-Standard-Encoding'; + + case 'adobesymbolencoding': + case 'cshppsmath': + return 'Adobe-Symbol-Encoding'; + + case 'ami1251': + case 'amiga1251': + return 'Amiga-1251'; + + case 'ansix31101983': + case 'csat5001983': + case 'csiso99naplps': + case 'isoir99': + case 'naplps': + return 'ANSI_X3.110-1983'; + + case 'arabic7': + case 'asmo449': + case 'csiso89asmo449': + case 'iso9036': + case 'isoir89': + return 'ASMO_449'; + + case 'big5': + case 'csbig5': + return 'Big5'; + + case 'big5hkscs': + return 'Big5-HKSCS'; + + case 'bocu1': + case 'csbocu1': + return 'BOCU-1'; + + case 'brf': + case 'csbrf': + return 'BRF'; + + case 'bs4730': + case 'csiso4unitedkingdom': + case 'gb': + case 'iso646gb': + case 'isoir4': + case 'uk': + return 'BS_4730'; + + case 'bsviewdata': + case 'csiso47bsviewdata': + case 'isoir47': + return 'BS_viewdata'; + + case 'cesu8': + case 'cscesu8': + return 'CESU-8'; + + case 'ca': + case 'csa71': + case 'csaz243419851': + case 'csiso121canadian1': + case 'iso646ca': + case 'isoir121': + return 'CSA_Z243.4-1985-1'; + + case 'csa72': + case 'csaz243419852': + case 'csiso122canadian2': + case 'iso646ca2': + case 'isoir122': + return 'CSA_Z243.4-1985-2'; + + case 'csaz24341985gr': + case 'csiso123csaz24341985gr': + case 'isoir123': + return 'CSA_Z243.4-1985-gr'; + + case 'csiso139csn369103': + case 'csn369103': + case 'isoir139': + return 'CSN_369103'; + + case 'csdecmcs': + case 'dec': + case 'decmcs': + return 'DEC-MCS'; + + case 'csiso21german': + case 'de': + case 'din66003': + case 'iso646de': + case 'isoir21': + return 'DIN_66003'; + + case 'csdkus': + case 'dkus': + return 'dk-us'; + + case 'csiso646danish': + case 'dk': + case 'ds2089': + case 'iso646dk': + return 'DS_2089'; + + case 'csibmebcdicatde': + case 'ebcdicatde': + return 'EBCDIC-AT-DE'; + + case 'csebcdicatdea': + case 'ebcdicatdea': + return 'EBCDIC-AT-DE-A'; + + case 'csebcdiccafr': + case 'ebcdiccafr': + return 'EBCDIC-CA-FR'; + + case 'csebcdicdkno': + case 'ebcdicdkno': + return 'EBCDIC-DK-NO'; + + case 'csebcdicdknoa': + case 'ebcdicdknoa': + return 'EBCDIC-DK-NO-A'; + + case 'csebcdices': + case 'ebcdices': + return 'EBCDIC-ES'; + + case 'csebcdicesa': + case 'ebcdicesa': + return 'EBCDIC-ES-A'; + + case 'csebcdicess': + case 'ebcdicess': + return 'EBCDIC-ES-S'; + + case 'csebcdicfise': + case 'ebcdicfise': + return 'EBCDIC-FI-SE'; + + case 'csebcdicfisea': + case 'ebcdicfisea': + return 'EBCDIC-FI-SE-A'; + + case 'csebcdicfr': + case 'ebcdicfr': + return 'EBCDIC-FR'; + + case 'csebcdicit': + case 'ebcdicit': + return 'EBCDIC-IT'; + + case 'csebcdicpt': + case 'ebcdicpt': + return 'EBCDIC-PT'; + + case 'csebcdicuk': + case 'ebcdicuk': + return 'EBCDIC-UK'; + + case 'csebcdicus': + case 'ebcdicus': + return 'EBCDIC-US'; + + case 'csiso111ecmacyrillic': + case 'ecmacyrillic': + case 'isoir111': + case 'koi8e': + return 'ECMA-cyrillic'; + + case 'csiso17spanish': + case 'es': + case 'iso646es': + case 'isoir17': + return 'ES'; + + case 'csiso85spanish2': + case 'es2': + case 'iso646es2': + case 'isoir85': + return 'ES2'; + + case 'cseucpkdfmtjapanese': + case 'eucjp': + case 'extendedunixcodepackedformatforjapanese': + return 'EUC-JP'; + + case 'cseucfixwidjapanese': + case 'extendedunixcodefixedwidthforjapanese': + return 'Extended_UNIX_Code_Fixed_Width_for_Japanese'; + + case 'gb18030': + return 'GB18030'; + + case 'chinese': + case 'cp936': + case 'csgb2312': + case 'csiso58gb231280': + case 'gb2312': + case 'gb231280': + case 'gbk': + case 'isoir58': + case 'ms936': + case 'windows936': + return 'GBK'; + + case 'cn': + case 'csiso57gb1988': + case 'gb198880': + case 'iso646cn': + case 'isoir57': + return 'GB_1988-80'; + + case 'csiso153gost1976874': + case 'gost1976874': + case 'isoir153': + case 'stsev35888': + return 'GOST_19768-74'; + + case 'csiso150': + case 'csiso150greekccitt': + case 'greekccitt': + case 'isoir150': + return 'greek-ccitt'; + + case 'csiso88greek7': + case 'greek7': + case 'isoir88': + return 'greek7'; + + case 'csiso18greek7old': + case 'greek7old': + case 'isoir18': + return 'greek7-old'; + + case 'cshpdesktop': + case 'hpdesktop': + return 'HP-DeskTop'; + + case 'cshplegal': + case 'hplegal': + return 'HP-Legal'; + + case 'cshpmath8': + case 'hpmath8': + return 'HP-Math8'; + + case 'cshppifont': + case 'hppifont': + return 'HP-Pi-font'; + + case 'cshproman8': + case 'hproman8': + case 'r8': + case 'roman8': + return 'hp-roman8'; + + case 'hzgb2312': + return 'HZ-GB-2312'; + + case 'csibmsymbols': + case 'ibmsymbols': + return 'IBM-Symbols'; + + case 'csibmthai': + case 'ibmthai': + return 'IBM-Thai'; + + case 'cp37': + case 'csibm37': + case 'ebcdiccpca': + case 'ebcdiccpnl': + case 'ebcdiccpus': + case 'ebcdiccpwt': + case 'ibm37': + return 'IBM037'; + + case 'cp38': + case 'csibm38': + case 'ebcdicint': + case 'ibm38': + return 'IBM038'; + + case 'cp273': + case 'csibm273': + case 'ibm273': + return 'IBM273'; + + case 'cp274': + case 'csibm274': + case 'ebcdicbe': + case 'ibm274': + return 'IBM274'; + + case 'cp275': + case 'csibm275': + case 'ebcdicbr': + case 'ibm275': + return 'IBM275'; + + case 'csibm277': + case 'ebcdiccpdk': + case 'ebcdiccpno': + case 'ibm277': + return 'IBM277'; + + case 'cp278': + case 'csibm278': + case 'ebcdiccpfi': + case 'ebcdiccpse': + case 'ibm278': + return 'IBM278'; + + case 'cp280': + case 'csibm280': + case 'ebcdiccpit': + case 'ibm280': + return 'IBM280'; + + case 'cp281': + case 'csibm281': + case 'ebcdicjpe': + case 'ibm281': + return 'IBM281'; + + case 'cp284': + case 'csibm284': + case 'ebcdiccpes': + case 'ibm284': + return 'IBM284'; + + case 'cp285': + case 'csibm285': + case 'ebcdiccpgb': + case 'ibm285': + return 'IBM285'; + + case 'cp290': + case 'csibm290': + case 'ebcdicjpkana': + case 'ibm290': + return 'IBM290'; + + case 'cp297': + case 'csibm297': + case 'ebcdiccpfr': + case 'ibm297': + return 'IBM297'; + + case 'cp420': + case 'csibm420': + case 'ebcdiccpar1': + case 'ibm420': + return 'IBM420'; + + case 'cp423': + case 'csibm423': + case 'ebcdiccpgr': + case 'ibm423': + return 'IBM423'; + + case 'cp424': + case 'csibm424': + case 'ebcdiccphe': + case 'ibm424': + return 'IBM424'; + + case '437': + case 'cp437': + case 'cspc8codepage437': + case 'ibm437': + return 'IBM437'; + + case 'cp500': + case 'csibm500': + case 'ebcdiccpbe': + case 'ebcdiccpch': + case 'ibm500': + return 'IBM500'; + + case 'cp775': + case 'cspc775baltic': + case 'ibm775': + return 'IBM775'; + + case '850': + case 'cp850': + case 'cspc850multilingual': + case 'ibm850': + return 'IBM850'; + + case '851': + case 'cp851': + case 'csibm851': + case 'ibm851': + return 'IBM851'; + + case '852': + case 'cp852': + case 'cspcp852': + case 'ibm852': + return 'IBM852'; + + case '855': + case 'cp855': + case 'csibm855': + case 'ibm855': + return 'IBM855'; + + case '857': + case 'cp857': + case 'csibm857': + case 'ibm857': + return 'IBM857'; + + case 'ccsid858': + case 'cp858': + case 'ibm858': + case 'pcmultilingual850euro': + return 'IBM00858'; + + case '860': + case 'cp860': + case 'csibm860': + case 'ibm860': + return 'IBM860'; + + case '861': + case 'cp861': + case 'cpis': + case 'csibm861': + case 'ibm861': + return 'IBM861'; + + case '862': + case 'cp862': + case 'cspc862latinhebrew': + case 'ibm862': + return 'IBM862'; + + case '863': + case 'cp863': + case 'csibm863': + case 'ibm863': + return 'IBM863'; + + case 'cp864': + case 'csibm864': + case 'ibm864': + return 'IBM864'; + + case '865': + case 'cp865': + case 'csibm865': + case 'ibm865': + return 'IBM865'; + + case '866': + case 'cp866': + case 'csibm866': + case 'ibm866': + return 'IBM866'; + + case 'cp868': + case 'cpar': + case 'csibm868': + case 'ibm868': + return 'IBM868'; + + case '869': + case 'cp869': + case 'cpgr': + case 'csibm869': + case 'ibm869': + return 'IBM869'; + + case 'cp870': + case 'csibm870': + case 'ebcdiccproece': + case 'ebcdiccpyu': + case 'ibm870': + return 'IBM870'; + + case 'cp871': + case 'csibm871': + case 'ebcdiccpis': + case 'ibm871': + return 'IBM871'; + + case 'cp880': + case 'csibm880': + case 'ebcdiccyrillic': + case 'ibm880': + return 'IBM880'; + + case 'cp891': + case 'csibm891': + case 'ibm891': + return 'IBM891'; + + case 'cp903': + case 'csibm903': + case 'ibm903': + return 'IBM903'; + + case '904': + case 'cp904': + case 'csibbm904': + case 'ibm904': + return 'IBM904'; + + case 'cp905': + case 'csibm905': + case 'ebcdiccptr': + case 'ibm905': + return 'IBM905'; + + case 'cp918': + case 'csibm918': + case 'ebcdiccpar2': + case 'ibm918': + return 'IBM918'; + + case 'ccsid924': + case 'cp924': + case 'ebcdiclatin9euro': + case 'ibm924': + return 'IBM00924'; + + case 'cp1026': + case 'csibm1026': + case 'ibm1026': + return 'IBM1026'; + + case 'ibm1047': + return 'IBM1047'; + + case 'ccsid1140': + case 'cp1140': + case 'ebcdicus37euro': + case 'ibm1140': + return 'IBM01140'; + + case 'ccsid1141': + case 'cp1141': + case 'ebcdicde273euro': + case 'ibm1141': + return 'IBM01141'; + + case 'ccsid1142': + case 'cp1142': + case 'ebcdicdk277euro': + case 'ebcdicno277euro': + case 'ibm1142': + return 'IBM01142'; + + case 'ccsid1143': + case 'cp1143': + case 'ebcdicfi278euro': + case 'ebcdicse278euro': + case 'ibm1143': + return 'IBM01143'; + + case 'ccsid1144': + case 'cp1144': + case 'ebcdicit280euro': + case 'ibm1144': + return 'IBM01144'; + + case 'ccsid1145': + case 'cp1145': + case 'ebcdices284euro': + case 'ibm1145': + return 'IBM01145'; + + case 'ccsid1146': + case 'cp1146': + case 'ebcdicgb285euro': + case 'ibm1146': + return 'IBM01146'; + + case 'ccsid1147': + case 'cp1147': + case 'ebcdicfr297euro': + case 'ibm1147': + return 'IBM01147'; + + case 'ccsid1148': + case 'cp1148': + case 'ebcdicinternational500euro': + case 'ibm1148': + return 'IBM01148'; + + case 'ccsid1149': + case 'cp1149': + case 'ebcdicis871euro': + case 'ibm1149': + return 'IBM01149'; + + case 'csiso143iecp271': + case 'iecp271': + case 'isoir143': + return 'IEC_P27-1'; + + case 'csiso49inis': + case 'inis': + case 'isoir49': + return 'INIS'; + + case 'csiso50inis8': + case 'inis8': + case 'isoir50': + return 'INIS-8'; + + case 'csiso51iniscyrillic': + case 'iniscyrillic': + case 'isoir51': + return 'INIS-cyrillic'; + + case 'csinvariant': + case 'invariant': + return 'INVARIANT'; + + case 'iso2022cn': + return 'ISO-2022-CN'; + + case 'iso2022cnext': + return 'ISO-2022-CN-EXT'; + + case 'csiso2022jp': + case 'iso2022jp': + return 'ISO-2022-JP'; + + case 'csiso2022jp2': + case 'iso2022jp2': + return 'ISO-2022-JP-2'; + + case 'csiso2022kr': + case 'iso2022kr': + return 'ISO-2022-KR'; + + case 'cswindows30latin1': + case 'iso88591windows30latin1': + return 'ISO-8859-1-Windows-3.0-Latin-1'; + + case 'cswindows31latin1': + case 'iso88591windows31latin1': + return 'ISO-8859-1-Windows-3.1-Latin-1'; + + case 'csisolatin2': + case 'iso88592': + case 'iso885921987': + case 'isoir101': + case 'l2': + case 'latin2': + return 'ISO-8859-2'; + + case 'cswindows31latin2': + case 'iso88592windowslatin2': + return 'ISO-8859-2-Windows-Latin-2'; + + case 'csisolatin3': + case 'iso88593': + case 'iso885931988': + case 'isoir109': + case 'l3': + case 'latin3': + return 'ISO-8859-3'; + + case 'csisolatin4': + case 'iso88594': + case 'iso885941988': + case 'isoir110': + case 'l4': + case 'latin4': + return 'ISO-8859-4'; + + case 'csisolatincyrillic': + case 'cyrillic': + case 'iso88595': + case 'iso885951988': + case 'isoir144': + return 'ISO-8859-5'; + + case 'arabic': + case 'asmo708': + case 'csisolatinarabic': + case 'ecma114': + case 'iso88596': + case 'iso885961987': + case 'isoir127': + return 'ISO-8859-6'; + + case 'csiso88596e': + case 'iso88596e': + return 'ISO-8859-6-E'; + + case 'csiso88596i': + case 'iso88596i': + return 'ISO-8859-6-I'; + + case 'csisolatingreek': + case 'ecma118': + case 'elot928': + case 'greek': + case 'greek8': + case 'iso88597': + case 'iso885971987': + case 'isoir126': + return 'ISO-8859-7'; + + case 'csisolatinhebrew': + case 'hebrew': + case 'iso88598': + case 'iso885981988': + case 'isoir138': + return 'ISO-8859-8'; + + case 'csiso88598e': + case 'iso88598e': + return 'ISO-8859-8-E'; + + case 'csiso88598i': + case 'iso88598i': + return 'ISO-8859-8-I'; + + case 'cswindows31latin5': + case 'iso88599windowslatin5': + return 'ISO-8859-9-Windows-Latin-5'; + + case 'csisolatin6': + case 'iso885910': + case 'iso8859101992': + case 'isoir157': + case 'l6': + case 'latin6': + return 'ISO-8859-10'; + + case 'iso885913': + return 'ISO-8859-13'; + + case 'iso885914': + case 'iso8859141998': + case 'isoceltic': + case 'isoir199': + case 'l8': + case 'latin8': + return 'ISO-8859-14'; + + case 'iso885915': + case 'latin9': + return 'ISO-8859-15'; + + case 'iso885916': + case 'iso8859162001': + case 'isoir226': + case 'l10': + case 'latin10': + return 'ISO-8859-16'; + + case 'iso10646j1': + return 'ISO-10646-J-1'; + + case 'csunicode': + case 'iso10646ucs2': + return 'ISO-10646-UCS-2'; + + case 'csucs4': + case 'iso10646ucs4': + return 'ISO-10646-UCS-4'; + + case 'csunicodeascii': + case 'iso10646ucsbasic': + return 'ISO-10646-UCS-Basic'; + + case 'csunicodelatin1': + case 'iso10646': + case 'iso10646unicodelatin1': + return 'ISO-10646-Unicode-Latin1'; + + case 'csiso10646utf1': + case 'iso10646utf1': + return 'ISO-10646-UTF-1'; + + case 'csiso115481': + case 'iso115481': + case 'isotr115481': + return 'ISO-11548-1'; + + case 'csiso90': + case 'isoir90': + return 'iso-ir-90'; + + case 'csunicodeibm1261': + case 'isounicodeibm1261': + return 'ISO-Unicode-IBM-1261'; + + case 'csunicodeibm1264': + case 'isounicodeibm1264': + return 'ISO-Unicode-IBM-1264'; + + case 'csunicodeibm1265': + case 'isounicodeibm1265': + return 'ISO-Unicode-IBM-1265'; + + case 'csunicodeibm1268': + case 'isounicodeibm1268': + return 'ISO-Unicode-IBM-1268'; + + case 'csunicodeibm1276': + case 'isounicodeibm1276': + return 'ISO-Unicode-IBM-1276'; + + case 'csiso646basic1983': + case 'iso646basic1983': + case 'ref': + return 'ISO_646.basic:1983'; + + case 'csiso2intlrefversion': + case 'irv': + case 'iso646irv1983': + case 'isoir2': + return 'ISO_646.irv:1983'; + + case 'csiso2033': + case 'e13b': + case 'iso20331983': + case 'isoir98': + return 'ISO_2033-1983'; + + case 'csiso5427cyrillic': + case 'iso5427': + case 'isoir37': + return 'ISO_5427'; + + case 'iso5427cyrillic1981': + case 'iso54271981': + case 'isoir54': + return 'ISO_5427:1981'; + + case 'csiso5428greek': + case 'iso54281980': + case 'isoir55': + return 'ISO_5428:1980'; + + case 'csiso6937add': + case 'iso6937225': + case 'isoir152': + return 'ISO_6937-2-25'; + + case 'csisotextcomm': + case 'iso69372add': + case 'isoir142': + return 'ISO_6937-2-add'; + + case 'csiso8859supp': + case 'iso8859supp': + case 'isoir154': + case 'latin125': + return 'ISO_8859-supp'; + + case 'csiso10367box': + case 'iso10367box': + case 'isoir155': + return 'ISO_10367-box'; + + case 'csiso15italian': + case 'iso646it': + case 'isoir15': + case 'it': + return 'IT'; + + case 'csiso13jisc6220jp': + case 'isoir13': + case 'jisc62201969': + case 'jisc62201969jp': + case 'katakana': + case 'x2017': + return 'JIS_C6220-1969-jp'; + + case 'csiso14jisc6220ro': + case 'iso646jp': + case 'isoir14': + case 'jisc62201969ro': + case 'jp': + return 'JIS_C6220-1969-ro'; + + case 'csiso42jisc62261978': + case 'isoir42': + case 'jisc62261978': + return 'JIS_C6226-1978'; + + case 'csiso87jisx208': + case 'isoir87': + case 'jisc62261983': + case 'jisx2081983': + case 'x208': + return 'JIS_C6226-1983'; + + case 'csiso91jisc62291984a': + case 'isoir91': + case 'jisc62291984a': + case 'jpocra': + return 'JIS_C6229-1984-a'; + + case 'csiso92jisc62991984b': + case 'iso646jpocrb': + case 'isoir92': + case 'jisc62291984b': + case 'jpocrb': + return 'JIS_C6229-1984-b'; + + case 'csiso93jis62291984badd': + case 'isoir93': + case 'jisc62291984badd': + case 'jpocrbadd': + return 'JIS_C6229-1984-b-add'; + + case 'csiso94jis62291984hand': + case 'isoir94': + case 'jisc62291984hand': + case 'jpocrhand': + return 'JIS_C6229-1984-hand'; + + case 'csiso95jis62291984handadd': + case 'isoir95': + case 'jisc62291984handadd': + case 'jpocrhandadd': + return 'JIS_C6229-1984-hand-add'; + + case 'csiso96jisc62291984kana': + case 'isoir96': + case 'jisc62291984kana': + return 'JIS_C6229-1984-kana'; + + case 'csjisencoding': + case 'jisencoding': + return 'JIS_Encoding'; + + case 'cshalfwidthkatakana': + case 'jisx201': + case 'x201': + return 'JIS_X0201'; + + case 'csiso159jisx2121990': + case 'isoir159': + case 'jisx2121990': + case 'x212': + return 'JIS_X0212-1990'; + + case 'csiso141jusib1002': + case 'iso646yu': + case 'isoir141': + case 'js': + case 'jusib1002': + case 'yu': + return 'JUS_I.B1.002'; + + case 'csiso147macedonian': + case 'isoir147': + case 'jusib1003mac': + case 'macedonian': + return 'JUS_I.B1.003-mac'; + + case 'csiso146serbian': + case 'isoir146': + case 'jusib1003serb': + case 'serbian': + return 'JUS_I.B1.003-serb'; + + case 'koi7switched': + return 'KOI7-switched'; + + case 'cskoi8r': + case 'koi8r': + return 'KOI8-R'; + + case 'koi8u': + return 'KOI8-U'; + + case 'csksc5636': + case 'iso646kr': + case 'ksc5636': + return 'KSC5636'; + + case 'cskz1048': + case 'kz1048': + case 'rk1048': + case 'strk10482002': + return 'KZ-1048'; + + case 'csiso19latingreek': + case 'isoir19': + case 'latingreek': + return 'latin-greek'; + + case 'csiso27latingreek1': + case 'isoir27': + case 'latingreek1': + return 'Latin-greek-1'; + + case 'csiso158lap': + case 'isoir158': + case 'lap': + case 'latinlap': + return 'latin-lap'; + + case 'csmacintosh': + case 'mac': + case 'macintosh': + return 'macintosh'; + + case 'csmicrosoftpublishing': + case 'microsoftpublishing': + return 'Microsoft-Publishing'; + + case 'csmnem': + case 'mnem': + return 'MNEM'; + + case 'csmnemonic': + case 'mnemonic': + return 'MNEMONIC'; + + case 'csiso86hungarian': + case 'hu': + case 'iso646hu': + case 'isoir86': + case 'msz77953': + return 'MSZ_7795.3'; + + case 'csnatsdano': + case 'isoir91': + case 'natsdano': + return 'NATS-DANO'; + + case 'csnatsdanoadd': + case 'isoir92': + case 'natsdanoadd': + return 'NATS-DANO-ADD'; + + case 'csnatssefi': + case 'isoir81': + case 'natssefi': + return 'NATS-SEFI'; + + case 'csnatssefiadd': + case 'isoir82': + case 'natssefiadd': + return 'NATS-SEFI-ADD'; + + case 'csiso151cuba': + case 'cuba': + case 'iso646cu': + case 'isoir151': + case 'ncnc1081': + return 'NC_NC00-10:81'; + + case 'csiso69french': + case 'fr': + case 'iso646fr': + case 'isoir69': + case 'nfz62010': + return 'NF_Z_62-010'; + + case 'csiso25french': + case 'iso646fr1': + case 'isoir25': + case 'nfz620101973': + return 'NF_Z_62-010_(1973)'; + + case 'csiso60danishnorwegian': + case 'csiso60norwegian1': + case 'iso646no': + case 'isoir60': + case 'no': + case 'ns45511': + return 'NS_4551-1'; + + case 'csiso61norwegian2': + case 'iso646no2': + case 'isoir61': + case 'no2': + case 'ns45512': + return 'NS_4551-2'; + + case 'osdebcdicdf3irv': + return 'OSD_EBCDIC_DF03_IRV'; + + case 'osdebcdicdf41': + return 'OSD_EBCDIC_DF04_1'; + + case 'osdebcdicdf415': + return 'OSD_EBCDIC_DF04_15'; + + case 'cspc8danishnorwegian': + case 'pc8danishnorwegian': + return 'PC8-Danish-Norwegian'; + + case 'cspc8turkish': + case 'pc8turkish': + return 'PC8-Turkish'; + + case 'csiso16portuguese': + case 'iso646pt': + case 'isoir16': + case 'pt': + return 'PT'; + + case 'csiso84portuguese2': + case 'iso646pt2': + case 'isoir84': + case 'pt2': + return 'PT2'; + + case 'cp154': + case 'csptcp154': + case 'cyrillicasian': + case 'pt154': + case 'ptcp154': + return 'PTCP154'; + + case 'scsu': + return 'SCSU'; + + case 'csiso10swedish': + case 'fi': + case 'iso646fi': + case 'iso646se': + case 'isoir10': + case 'se': + case 'sen850200b': + return 'SEN_850200_B'; + + case 'csiso11swedishfornames': + case 'iso646se2': + case 'isoir11': + case 'se2': + case 'sen850200c': + return 'SEN_850200_C'; + + case 'csiso102t617bit': + case 'isoir102': + case 't617bit': + return 'T.61-7bit'; + + case 'csiso103t618bit': + case 'isoir103': + case 't61': + case 't618bit': + return 'T.61-8bit'; + + case 'csiso128t101g2': + case 'isoir128': + case 't101g2': + return 'T.101-G2'; + + case 'cstscii': + case 'tscii': + return 'TSCII'; + + case 'csunicode11': + case 'unicode11': + return 'UNICODE-1-1'; + + case 'csunicode11utf7': + case 'unicode11utf7': + return 'UNICODE-1-1-UTF-7'; + + case 'csunknown8bit': + case 'unknown8bit': + return 'UNKNOWN-8BIT'; + + case 'ansix341968': + case 'ansix341986': + case 'ascii': + case 'cp367': + case 'csascii': + case 'ibm367': + case 'iso646irv1991': + case 'iso646us': + case 'isoir6': + case 'us': + case 'usascii': + return 'US-ASCII'; + + case 'csusdk': + case 'usdk': + return 'us-dk'; + + case 'utf7': + return 'UTF-7'; + + case 'utf8': + return 'UTF-8'; + + case 'utf16': + return 'UTF-16'; + + case 'utf16be': + return 'UTF-16BE'; + + case 'utf16le': + return 'UTF-16LE'; + + case 'utf32': + return 'UTF-32'; + + case 'utf32be': + return 'UTF-32BE'; + + case 'utf32le': + return 'UTF-32LE'; + + case 'csventurainternational': + case 'venturainternational': + return 'Ventura-International'; + + case 'csventuramath': + case 'venturamath': + return 'Ventura-Math'; + + case 'csventuraus': + case 'venturaus': + return 'Ventura-US'; + + case 'csiso70videotexsupp1': + case 'isoir70': + case 'videotexsuppl': + return 'videotex-suppl'; + + case 'csviqr': + case 'viqr': + return 'VIQR'; + + case 'csviscii': + case 'viscii': + return 'VISCII'; + + case 'csshiftjis': + case 'cswindows31j': + case 'mskanji': + case 'shiftjis': + case 'windows31j': + return 'Windows-31J'; + + case 'iso885911': + case 'tis620': + return 'windows-874'; + + case 'cseuckr': + case 'csksc56011987': + case 'euckr': + case 'isoir149': + case 'korean': + case 'ksc5601': + case 'ksc56011987': + case 'ksc56011989': + case 'windows949': + return 'windows-949'; + + case 'windows1250': + return 'windows-1250'; + + case 'windows1251': + return 'windows-1251'; + + case 'cp819': + case 'csisolatin1': + case 'ibm819': + case 'iso88591': + case 'iso885911987': + case 'isoir100': + case 'l1': + case 'latin1': + case 'windows1252': + return 'windows-1252'; + + case 'windows1253': + return 'windows-1253'; + + case 'csisolatin5': + case 'iso88599': + case 'iso885991989': + case 'isoir148': + case 'l5': + case 'latin5': + case 'windows1254': + return 'windows-1254'; + + case 'windows1255': + return 'windows-1255'; + + case 'windows1256': + return 'windows-1256'; + + case 'windows1257': + return 'windows-1257'; + + case 'windows1258': + return 'windows-1258'; + + default: + return $charset; + } + } + + public static function get_curl_version() + { + if (is_array($curl = curl_version())) + { + $curl = $curl['version']; + } + elseif (substr($curl, 0, 5) === 'curl/') + { + $curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5)); + } + elseif (substr($curl, 0, 8) === 'libcurl/') + { + $curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8)); + } + else + { + $curl = 0; + } + return $curl; + } + + /** + * Strip HTML comments + * + * @param string $data Data to strip comments from + * @return string Comment stripped string + */ + public static function strip_comments($data) + { + $output = ''; + while (($start = strpos($data, '<!--')) !== false) + { + $output .= substr($data, 0, $start); + if (($end = strpos($data, '-->', $start)) !== false) + { + $data = substr_replace($data, '', 0, $end + 3); + } + else + { + $data = ''; + } + } + return $output . $data; + } + + public static function parse_date($dt) + { + $parser = SimplePie_Parse_Date::get(); + return $parser->parse($dt); + } + + /** + * Decode HTML entities + * + * @deprecated Use DOMDocument instead + * @param string $data Input data + * @return string Output data + */ + public static function entities_decode($data) + { + $decoder = new SimplePie_Decode_HTML_Entities($data); + return $decoder->parse(); + } + + /** + * Remove RFC822 comments + * + * @param string $data Data to strip comments from + * @return string Comment stripped string + */ + public static function uncomment_rfc822($string) + { + $string = (string) $string; + $position = 0; + $length = strlen($string); + $depth = 0; + + $output = ''; + + while ($position < $length && ($pos = strpos($string, '(', $position)) !== false) + { + $output .= substr($string, $position, $pos - $position); + $position = $pos + 1; + if ($string[$pos - 1] !== '\\') + { + $depth++; + while ($depth && $position < $length) + { + $position += strcspn($string, '()', $position); + if ($string[$position - 1] === '\\') + { + $position++; + continue; + } + elseif (isset($string[$position])) + { + switch ($string[$position]) + { + case '(': + $depth++; + break; + + case ')': + $depth--; + break; + } + $position++; + } + else + { + break; + } + } + } + else + { + $output .= '('; + } + } + $output .= substr($string, $position); + + return $output; + } + + public static function parse_mime($mime) + { + if (($pos = strpos($mime, ';')) === false) + { + return trim($mime); + } + else + { + return trim(substr($mime, 0, $pos)); + } + } + + public static function atom_03_construct_type($attribs) + { + if (isset($attribs['']['mode']) && strtolower(trim($attribs['']['mode']) === 'base64')) + { + $mode = SIMPLEPIE_CONSTRUCT_BASE64; + } + else + { + $mode = SIMPLEPIE_CONSTRUCT_NONE; + } + if (isset($attribs['']['type'])) + { + switch (strtolower(trim($attribs['']['type']))) + { + case 'text': + case 'text/plain': + return SIMPLEPIE_CONSTRUCT_TEXT | $mode; + + case 'html': + case 'text/html': + return SIMPLEPIE_CONSTRUCT_HTML | $mode; + + case 'xhtml': + case 'application/xhtml+xml': + return SIMPLEPIE_CONSTRUCT_XHTML | $mode; + + default: + return SIMPLEPIE_CONSTRUCT_NONE | $mode; + } + } + else + { + return SIMPLEPIE_CONSTRUCT_TEXT | $mode; + } + } + + public static function atom_10_construct_type($attribs) + { + if (isset($attribs['']['type'])) + { + switch (strtolower(trim($attribs['']['type']))) + { + case 'text': + return SIMPLEPIE_CONSTRUCT_TEXT; + + case 'html': + return SIMPLEPIE_CONSTRUCT_HTML; + + case 'xhtml': + return SIMPLEPIE_CONSTRUCT_XHTML; + + default: + return SIMPLEPIE_CONSTRUCT_NONE; + } + } + return SIMPLEPIE_CONSTRUCT_TEXT; + } + + public static function atom_10_content_construct_type($attribs) + { + if (isset($attribs['']['type'])) + { + $type = strtolower(trim($attribs['']['type'])); + switch ($type) + { + case 'text': + return SIMPLEPIE_CONSTRUCT_TEXT; + + case 'html': + return SIMPLEPIE_CONSTRUCT_HTML; + + case 'xhtml': + return SIMPLEPIE_CONSTRUCT_XHTML; + } + if (in_array(substr($type, -4), array('+xml', '/xml')) || substr($type, 0, 5) === 'text/') + { + return SIMPLEPIE_CONSTRUCT_NONE; + } + else + { + return SIMPLEPIE_CONSTRUCT_BASE64; + } + } + else + { + return SIMPLEPIE_CONSTRUCT_TEXT; + } + } + + public static function is_isegment_nz_nc($string) + { + return (bool) preg_match('/^([A-Za-z0-9\-._~\x{A0}-\x{D7FF}\x{F900}-\x{FDCF}\x{FDF0}-\x{FFEF}\x{10000}-\x{1FFFD}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}\x{40000}-\x{4FFFD}\x{50000}-\x{5FFFD}\x{60000}-\x{6FFFD}\x{70000}-\x{7FFFD}\x{80000}-\x{8FFFD}\x{90000}-\x{9FFFD}\x{A0000}-\x{AFFFD}\x{B0000}-\x{BFFFD}\x{C0000}-\x{CFFFD}\x{D0000}-\x{DFFFD}\x{E1000}-\x{EFFFD}!$&\'()*+,;=@]|(%[0-9ABCDEF]{2}))+$/u', $string); + } + + public static function space_separated_tokens($string) + { + $space_characters = "\x20\x09\x0A\x0B\x0C\x0D"; + $string_length = strlen($string); + + $position = strspn($string, $space_characters); + $tokens = array(); + + while ($position < $string_length) + { + $len = strcspn($string, $space_characters, $position); + $tokens[] = substr($string, $position, $len); + $position += $len; + $position += strspn($string, $space_characters, $position); + } + + return $tokens; + } + + /** + * Converts a unicode codepoint to a UTF-8 character + * + * @static + * @param int $codepoint Unicode codepoint + * @return string UTF-8 character + */ + public static function codepoint_to_utf8($codepoint) + { + $codepoint = (int) $codepoint; + if ($codepoint < 0) + { + return false; + } + else if ($codepoint <= 0x7f) + { + return chr($codepoint); + } + else if ($codepoint <= 0x7ff) + { + return chr(0xc0 | ($codepoint >> 6)) . chr(0x80 | ($codepoint & 0x3f)); + } + else if ($codepoint <= 0xffff) + { + return chr(0xe0 | ($codepoint >> 12)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f)); + } + else if ($codepoint <= 0x10ffff) + { + return chr(0xf0 | ($codepoint >> 18)) . chr(0x80 | (($codepoint >> 12) & 0x3f)) . chr(0x80 | (($codepoint >> 6) & 0x3f)) . chr(0x80 | ($codepoint & 0x3f)); + } + else + { + // U+FFFD REPLACEMENT CHARACTER + return "\xEF\xBF\xBD"; + } + } + + /** + * Similar to parse_str() + * + * Returns an associative array of name/value pairs, where the value is an + * array of values that have used the same name + * + * @static + * @param string $str The input string. + * @return array + */ + public static function parse_str($str) + { + $return = array(); + $str = explode('&', $str); + + foreach ($str as $section) + { + if (strpos($section, '=') !== false) + { + list($name, $value) = explode('=', $section, 2); + $return[urldecode($name)][] = urldecode($value); + } + else + { + $return[urldecode($section)][] = null; + } + } + + return $return; + } + + /** + * Detect XML encoding, as per XML 1.0 Appendix F.1 + * + * @todo Add support for EBCDIC + * @param string $data XML data + * @param SimplePie_Registry $registry Class registry + * @return array Possible encodings + */ + public static function xml_encoding($data, $registry) + { + // UTF-32 Big Endian BOM + if (substr($data, 0, 4) === "\x00\x00\xFE\xFF") + { + $encoding[] = 'UTF-32BE'; + } + // UTF-32 Little Endian BOM + elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00") + { + $encoding[] = 'UTF-32LE'; + } + // UTF-16 Big Endian BOM + elseif (substr($data, 0, 2) === "\xFE\xFF") + { + $encoding[] = 'UTF-16BE'; + } + // UTF-16 Little Endian BOM + elseif (substr($data, 0, 2) === "\xFF\xFE") + { + $encoding[] = 'UTF-16LE'; + } + // UTF-8 BOM + elseif (substr($data, 0, 3) === "\xEF\xBB\xBF") + { + $encoding[] = 'UTF-8'; + } + // UTF-32 Big Endian Without BOM + elseif (substr($data, 0, 20) === "\x00\x00\x00\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C") + { + if ($pos = strpos($data, "\x00\x00\x00\x3F\x00\x00\x00\x3E")) + { + $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32BE', 'UTF-8'))); + if ($parser->parse()) + { + $encoding[] = $parser->encoding; + } + } + $encoding[] = 'UTF-32BE'; + } + // UTF-32 Little Endian Without BOM + elseif (substr($data, 0, 20) === "\x3C\x00\x00\x00\x3F\x00\x00\x00\x78\x00\x00\x00\x6D\x00\x00\x00\x6C\x00\x00\x00") + { + if ($pos = strpos($data, "\x3F\x00\x00\x00\x3E\x00\x00\x00")) + { + $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 20), 'UTF-32LE', 'UTF-8'))); + if ($parser->parse()) + { + $encoding[] = $parser->encoding; + } + } + $encoding[] = 'UTF-32LE'; + } + // UTF-16 Big Endian Without BOM + elseif (substr($data, 0, 10) === "\x00\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C") + { + if ($pos = strpos($data, "\x00\x3F\x00\x3E")) + { + $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16BE', 'UTF-8'))); + if ($parser->parse()) + { + $encoding[] = $parser->encoding; + } + } + $encoding[] = 'UTF-16BE'; + } + // UTF-16 Little Endian Without BOM + elseif (substr($data, 0, 10) === "\x3C\x00\x3F\x00\x78\x00\x6D\x00\x6C\x00") + { + if ($pos = strpos($data, "\x3F\x00\x3E\x00")) + { + $parser = $registry->create('XML_Declaration_Parser', array(SimplePie_Misc::change_encoding(substr($data, 20, $pos - 10), 'UTF-16LE', 'UTF-8'))); + if ($parser->parse()) + { + $encoding[] = $parser->encoding; + } + } + $encoding[] = 'UTF-16LE'; + } + // US-ASCII (or superset) + elseif (substr($data, 0, 5) === "\x3C\x3F\x78\x6D\x6C") + { + if ($pos = strpos($data, "\x3F\x3E")) + { + $parser = $registry->create('XML_Declaration_Parser', array(substr($data, 5, $pos - 5))); + if ($parser->parse()) + { + $encoding[] = $parser->encoding; + } + } + $encoding[] = 'UTF-8'; + } + // Fallback to UTF-8 + else + { + $encoding[] = 'UTF-8'; + } + return $encoding; + } + + public static function output_javascript() + { + if (function_exists('ob_gzhandler')) + { + ob_start('ob_gzhandler'); + } + header('Content-type: text/javascript; charset: UTF-8'); + header('Cache-Control: must-revalidate'); + header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 604800) . ' GMT'); // 7 days + ?> +function embed_quicktime(type, bgcolor, width, height, link, placeholder, loop) { + if (placeholder != '') { + document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" href="'+link+'" src="'+placeholder+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="false" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>'); + } + else { + document.writeln('<embed type="'+type+'" style="cursor:hand; cursor:pointer;" src="'+link+'" width="'+width+'" height="'+height+'" autoplay="false" target="myself" controller="true" loop="'+loop+'" scale="aspect" bgcolor="'+bgcolor+'" pluginspage="http://www.apple.com/quicktime/download/"></embed>'); + } +} + +function embed_flash(bgcolor, width, height, link, loop, type) { + document.writeln('<embed src="'+link+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="'+type+'" quality="high" width="'+width+'" height="'+height+'" bgcolor="'+bgcolor+'" loop="'+loop+'"></embed>'); +} + +function embed_flv(width, height, link, placeholder, loop, player) { + document.writeln('<embed src="'+player+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" quality="high" width="'+width+'" height="'+height+'" wmode="transparent" flashvars="file='+link+'&autostart=false&repeat='+loop+'&showdigits=true&showfsbutton=false"></embed>'); +} + +function embed_wmedia(width, height, link) { + document.writeln('<embed type="application/x-mplayer2" src="'+link+'" autosize="1" width="'+width+'" height="'+height+'" showcontrols="1" showstatusbar="0" showdisplay="0" autostart="0"></embed>'); +} + <?php + } + + /** + * Get the SimplePie build timestamp + * + * Uses the git index if it exists, otherwise uses the modification time + * of the newest file. + */ + public static function get_build() + { + $root = dirname(dirname(__FILE__)); + if (file_exists($root . '/.git/index')) + { + return filemtime($root . '/.git/index'); + } + elseif (file_exists($root . '/SimplePie')) + { + $time = 0; + foreach (glob($root . '/SimplePie/*.php') as $file) + { + if (($mtime = filemtime($file)) > $time) + { + $time = $mtime; + } + } + return $time; + } + elseif (file_exists(dirname(__FILE__) . '/Core.php')) + { + return filemtime(dirname(__FILE__) . '/Core.php'); + } + else + { + return filemtime(__FILE__); + } + } + + /** + * Format debugging information + */ + public static function debug(&$sp) + { + $info = 'SimplePie ' . SIMPLEPIE_VERSION . ' Build ' . SIMPLEPIE_BUILD . "\n"; + $info .= 'PHP ' . PHP_VERSION . "\n"; + if ($sp->error() !== null) + { + $info .= 'Error occurred: ' . $sp->error() . "\n"; + } + else + { + $info .= "No error found.\n"; + } + $info .= "Extensions:\n"; + $extensions = array('pcre', 'curl', 'zlib', 'mbstring', 'iconv', 'xmlreader', 'xml'); + foreach ($extensions as $ext) + { + if (extension_loaded($ext)) + { + $info .= " $ext loaded\n"; + switch ($ext) + { + case 'pcre': + $info .= ' Version ' . PCRE_VERSION . "\n"; + break; + case 'curl': + $version = curl_version(); + $info .= ' Version ' . $version['version'] . "\n"; + break; + case 'mbstring': + $info .= ' Overloading: ' . mb_get_info('func_overload') . "\n"; + break; + case 'iconv': + $info .= ' Version ' . ICONV_VERSION . "\n"; + break; + case 'xml': + $info .= ' Version ' . LIBXML_DOTTED_VERSION . "\n"; + break; + } + } + else + { + $info .= " $ext not loaded\n"; + } + } + return $info; + } + + public static function silence_errors($num, $str) + { + // No-op + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php b/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php new file mode 100644 index 000000000..47658aff2 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Net/IPv6.php @@ -0,0 +1,275 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + + +/** + * Class to validate and to work with IPv6 addresses. + * + * @package SimplePie + * @subpackage HTTP + * @copyright 2003-2005 The PHP Group + * @license http://www.opensource.org/licenses/bsd-license.php + * @link http://pear.php.net/package/Net_IPv6 + * @author Alexander Merz <alexander.merz@web.de> + * @author elfrink at introweb dot nl + * @author Josh Peck <jmp at joshpeck dot org> + * @author Geoffrey Sneddon <geoffers@gmail.com> + */ +class SimplePie_Net_IPv6 +{ + /** + * Uncompresses an IPv6 address + * + * RFC 4291 allows you to compress concecutive zero pieces in an address to + * '::'. This method expects a valid IPv6 address and expands the '::' to + * the required number of zero pieces. + * + * Example: FF01::101 -> FF01:0:0:0:0:0:0:101 + * ::1 -> 0:0:0:0:0:0:0:1 + * + * @author Alexander Merz <alexander.merz@web.de> + * @author elfrink at introweb dot nl + * @author Josh Peck <jmp at joshpeck dot org> + * @copyright 2003-2005 The PHP Group + * @license http://www.opensource.org/licenses/bsd-license.php + * @param string $ip An IPv6 address + * @return string The uncompressed IPv6 address + */ + public static function uncompress($ip) + { + $c1 = -1; + $c2 = -1; + if (substr_count($ip, '::') === 1) + { + list($ip1, $ip2) = explode('::', $ip); + if ($ip1 === '') + { + $c1 = -1; + } + else + { + $c1 = substr_count($ip1, ':'); + } + if ($ip2 === '') + { + $c2 = -1; + } + else + { + $c2 = substr_count($ip2, ':'); + } + if (strpos($ip2, '.') !== false) + { + $c2++; + } + // :: + if ($c1 === -1 && $c2 === -1) + { + $ip = '0:0:0:0:0:0:0:0'; + } + // ::xxx + else if ($c1 === -1) + { + $fill = str_repeat('0:', 7 - $c2); + $ip = str_replace('::', $fill, $ip); + } + // xxx:: + else if ($c2 === -1) + { + $fill = str_repeat(':0', 7 - $c1); + $ip = str_replace('::', $fill, $ip); + } + // xxx::xxx + else + { + $fill = ':' . str_repeat('0:', 6 - $c2 - $c1); + $ip = str_replace('::', $fill, $ip); + } + } + return $ip; + } + + /** + * Compresses an IPv6 address + * + * RFC 4291 allows you to compress concecutive zero pieces in an address to + * '::'. This method expects a valid IPv6 address and compresses consecutive + * zero pieces to '::'. + * + * Example: FF01:0:0:0:0:0:0:101 -> FF01::101 + * 0:0:0:0:0:0:0:1 -> ::1 + * + * @see uncompress() + * @param string $ip An IPv6 address + * @return string The compressed IPv6 address + */ + public static function compress($ip) + { + // Prepare the IP to be compressed + $ip = self::uncompress($ip); + $ip_parts = self::split_v6_v4($ip); + + // Replace all leading zeros + $ip_parts[0] = preg_replace('/(^|:)0+([0-9])/', '\1\2', $ip_parts[0]); + + // Find bunches of zeros + if (preg_match_all('/(?:^|:)(?:0(?::|$))+/', $ip_parts[0], $matches, PREG_OFFSET_CAPTURE)) + { + $max = 0; + $pos = null; + foreach ($matches[0] as $match) + { + if (strlen($match[0]) > $max) + { + $max = strlen($match[0]); + $pos = $match[1]; + } + } + + $ip_parts[0] = substr_replace($ip_parts[0], '::', $pos, $max); + } + + if ($ip_parts[1] !== '') + { + return implode(':', $ip_parts); + } + else + { + return $ip_parts[0]; + } + } + + /** + * Splits an IPv6 address into the IPv6 and IPv4 representation parts + * + * RFC 4291 allows you to represent the last two parts of an IPv6 address + * using the standard IPv4 representation + * + * Example: 0:0:0:0:0:0:13.1.68.3 + * 0:0:0:0:0:FFFF:129.144.52.38 + * + * @param string $ip An IPv6 address + * @return array [0] contains the IPv6 represented part, and [1] the IPv4 represented part + */ + private static function split_v6_v4($ip) + { + if (strpos($ip, '.') !== false) + { + $pos = strrpos($ip, ':'); + $ipv6_part = substr($ip, 0, $pos); + $ipv4_part = substr($ip, $pos + 1); + return array($ipv6_part, $ipv4_part); + } + else + { + return array($ip, ''); + } + } + + /** + * Checks an IPv6 address + * + * Checks if the given IP is a valid IPv6 address + * + * @param string $ip An IPv6 address + * @return bool true if $ip is a valid IPv6 address + */ + public static function check_ipv6($ip) + { + $ip = self::uncompress($ip); + list($ipv6, $ipv4) = self::split_v6_v4($ip); + $ipv6 = explode(':', $ipv6); + $ipv4 = explode('.', $ipv4); + if (count($ipv6) === 8 && count($ipv4) === 1 || count($ipv6) === 6 && count($ipv4) === 4) + { + foreach ($ipv6 as $ipv6_part) + { + // The section can't be empty + if ($ipv6_part === '') + return false; + + // Nor can it be over four characters + if (strlen($ipv6_part) > 4) + return false; + + // Remove leading zeros (this is safe because of the above) + $ipv6_part = ltrim($ipv6_part, '0'); + if ($ipv6_part === '') + $ipv6_part = '0'; + + // Check the value is valid + $value = hexdec($ipv6_part); + if (dechex($value) !== strtolower($ipv6_part) || $value < 0 || $value > 0xFFFF) + return false; + } + if (count($ipv4) === 4) + { + foreach ($ipv4 as $ipv4_part) + { + $value = (int) $ipv4_part; + if ((string) $value !== $ipv4_part || $value < 0 || $value > 0xFF) + return false; + } + } + return true; + } + else + { + return false; + } + } + + /** + * Checks if the given IP is a valid IPv6 address + * + * @codeCoverageIgnore + * @deprecated Use {@see SimplePie_Net_IPv6::check_ipv6()} instead + * @see check_ipv6 + * @param string $ip An IPv6 address + * @return bool true if $ip is a valid IPv6 address + */ + public static function checkIPv6($ip) + { + return self::check_ipv6($ip); + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php b/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php new file mode 100644 index 000000000..1f2156655 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Parse/Date.php @@ -0,0 +1,983 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + + +/** + * Date Parser + * + * @package SimplePie + * @subpackage Parsing + */ +class SimplePie_Parse_Date +{ + /** + * Input data + * + * @access protected + * @var string + */ + var $date; + + /** + * List of days, calendar day name => ordinal day number in the week + * + * @access protected + * @var array + */ + var $day = array( + // English + 'mon' => 1, + 'monday' => 1, + 'tue' => 2, + 'tuesday' => 2, + 'wed' => 3, + 'wednesday' => 3, + 'thu' => 4, + 'thursday' => 4, + 'fri' => 5, + 'friday' => 5, + 'sat' => 6, + 'saturday' => 6, + 'sun' => 7, + 'sunday' => 7, + // Dutch + 'maandag' => 1, + 'dinsdag' => 2, + 'woensdag' => 3, + 'donderdag' => 4, + 'vrijdag' => 5, + 'zaterdag' => 6, + 'zondag' => 7, + // French + 'lundi' => 1, + 'mardi' => 2, + 'mercredi' => 3, + 'jeudi' => 4, + 'vendredi' => 5, + 'samedi' => 6, + 'dimanche' => 7, + // German + 'montag' => 1, + 'dienstag' => 2, + 'mittwoch' => 3, + 'donnerstag' => 4, + 'freitag' => 5, + 'samstag' => 6, + 'sonnabend' => 6, + 'sonntag' => 7, + // Italian + 'lunedì' => 1, + 'martedì' => 2, + 'mercoledì' => 3, + 'giovedì' => 4, + 'venerdì' => 5, + 'sabato' => 6, + 'domenica' => 7, + // Spanish + 'lunes' => 1, + 'martes' => 2, + 'miércoles' => 3, + 'jueves' => 4, + 'viernes' => 5, + 'sábado' => 6, + 'domingo' => 7, + // Finnish + 'maanantai' => 1, + 'tiistai' => 2, + 'keskiviikko' => 3, + 'torstai' => 4, + 'perjantai' => 5, + 'lauantai' => 6, + 'sunnuntai' => 7, + // Hungarian + 'hétfő' => 1, + 'kedd' => 2, + 'szerda' => 3, + 'csütörtok' => 4, + 'péntek' => 5, + 'szombat' => 6, + 'vasárnap' => 7, + // Greek + 'Δευ' => 1, + 'Τρι' => 2, + 'Τετ' => 3, + 'Πεμ' => 4, + 'Παρ' => 5, + 'Σαβ' => 6, + 'Κυρ' => 7, + ); + + /** + * List of months, calendar month name => calendar month number + * + * @access protected + * @var array + */ + var $month = array( + // English + 'jan' => 1, + 'january' => 1, + 'feb' => 2, + 'february' => 2, + 'mar' => 3, + 'march' => 3, + 'apr' => 4, + 'april' => 4, + 'may' => 5, + // No long form of May + 'jun' => 6, + 'june' => 6, + 'jul' => 7, + 'july' => 7, + 'aug' => 8, + 'august' => 8, + 'sep' => 9, + 'september' => 9, + 'oct' => 10, + 'october' => 10, + 'nov' => 11, + 'november' => 11, + 'dec' => 12, + 'december' => 12, + // Dutch + 'januari' => 1, + 'februari' => 2, + 'maart' => 3, + 'april' => 4, + 'mei' => 5, + 'juni' => 6, + 'juli' => 7, + 'augustus' => 8, + 'september' => 9, + 'oktober' => 10, + 'november' => 11, + 'december' => 12, + // French + 'janvier' => 1, + 'février' => 2, + 'mars' => 3, + 'avril' => 4, + 'mai' => 5, + 'juin' => 6, + 'juillet' => 7, + 'août' => 8, + 'septembre' => 9, + 'octobre' => 10, + 'novembre' => 11, + 'décembre' => 12, + // German + 'januar' => 1, + 'februar' => 2, + 'märz' => 3, + 'april' => 4, + 'mai' => 5, + 'juni' => 6, + 'juli' => 7, + 'august' => 8, + 'september' => 9, + 'oktober' => 10, + 'november' => 11, + 'dezember' => 12, + // Italian + 'gennaio' => 1, + 'febbraio' => 2, + 'marzo' => 3, + 'aprile' => 4, + 'maggio' => 5, + 'giugno' => 6, + 'luglio' => 7, + 'agosto' => 8, + 'settembre' => 9, + 'ottobre' => 10, + 'novembre' => 11, + 'dicembre' => 12, + // Spanish + 'enero' => 1, + 'febrero' => 2, + 'marzo' => 3, + 'abril' => 4, + 'mayo' => 5, + 'junio' => 6, + 'julio' => 7, + 'agosto' => 8, + 'septiembre' => 9, + 'setiembre' => 9, + 'octubre' => 10, + 'noviembre' => 11, + 'diciembre' => 12, + // Finnish + 'tammikuu' => 1, + 'helmikuu' => 2, + 'maaliskuu' => 3, + 'huhtikuu' => 4, + 'toukokuu' => 5, + 'kesäkuu' => 6, + 'heinäkuu' => 7, + 'elokuu' => 8, + 'suuskuu' => 9, + 'lokakuu' => 10, + 'marras' => 11, + 'joulukuu' => 12, + // Hungarian + 'január' => 1, + 'február' => 2, + 'március' => 3, + 'április' => 4, + 'május' => 5, + 'június' => 6, + 'július' => 7, + 'augusztus' => 8, + 'szeptember' => 9, + 'október' => 10, + 'november' => 11, + 'december' => 12, + // Greek + 'Ιαν' => 1, + 'Φεβ' => 2, + 'Μάώ' => 3, + 'Μαώ' => 3, + 'Απρ' => 4, + 'Μάι' => 5, + 'Μαϊ' => 5, + 'Μαι' => 5, + 'Ιούν' => 6, + 'Ιον' => 6, + 'Ιούλ' => 7, + 'Ιολ' => 7, + 'Αύγ' => 8, + 'Αυγ' => 8, + 'Σεπ' => 9, + 'Οκτ' => 10, + 'Νοέ' => 11, + 'Δεκ' => 12, + ); + + /** + * List of timezones, abbreviation => offset from UTC + * + * @access protected + * @var array + */ + var $timezone = array( + 'ACDT' => 37800, + 'ACIT' => 28800, + 'ACST' => 34200, + 'ACT' => -18000, + 'ACWDT' => 35100, + 'ACWST' => 31500, + 'AEDT' => 39600, + 'AEST' => 36000, + 'AFT' => 16200, + 'AKDT' => -28800, + 'AKST' => -32400, + 'AMDT' => 18000, + 'AMT' => -14400, + 'ANAST' => 46800, + 'ANAT' => 43200, + 'ART' => -10800, + 'AZOST' => -3600, + 'AZST' => 18000, + 'AZT' => 14400, + 'BIOT' => 21600, + 'BIT' => -43200, + 'BOT' => -14400, + 'BRST' => -7200, + 'BRT' => -10800, + 'BST' => 3600, + 'BTT' => 21600, + 'CAST' => 18000, + 'CAT' => 7200, + 'CCT' => 23400, + 'CDT' => -18000, + 'CEDT' => 7200, + 'CEST' => 7200, + 'CET' => 3600, + 'CGST' => -7200, + 'CGT' => -10800, + 'CHADT' => 49500, + 'CHAST' => 45900, + 'CIST' => -28800, + 'CKT' => -36000, + 'CLDT' => -10800, + 'CLST' => -14400, + 'COT' => -18000, + 'CST' => -21600, + 'CVT' => -3600, + 'CXT' => 25200, + 'DAVT' => 25200, + 'DTAT' => 36000, + 'EADT' => -18000, + 'EAST' => -21600, + 'EAT' => 10800, + 'ECT' => -18000, + 'EDT' => -14400, + 'EEST' => 10800, + 'EET' => 7200, + 'EGT' => -3600, + 'EKST' => 21600, + 'EST' => -18000, + 'FJT' => 43200, + 'FKDT' => -10800, + 'FKST' => -14400, + 'FNT' => -7200, + 'GALT' => -21600, + 'GEDT' => 14400, + 'GEST' => 10800, + 'GFT' => -10800, + 'GILT' => 43200, + 'GIT' => -32400, + 'GST' => 14400, + 'GST' => -7200, + 'GYT' => -14400, + 'HAA' => -10800, + 'HAC' => -18000, + 'HADT' => -32400, + 'HAE' => -14400, + 'HAP' => -25200, + 'HAR' => -21600, + 'HAST' => -36000, + 'HAT' => -9000, + 'HAY' => -28800, + 'HKST' => 28800, + 'HMT' => 18000, + 'HNA' => -14400, + 'HNC' => -21600, + 'HNE' => -18000, + 'HNP' => -28800, + 'HNR' => -25200, + 'HNT' => -12600, + 'HNY' => -32400, + 'IRDT' => 16200, + 'IRKST' => 32400, + 'IRKT' => 28800, + 'IRST' => 12600, + 'JFDT' => -10800, + 'JFST' => -14400, + 'JST' => 32400, + 'KGST' => 21600, + 'KGT' => 18000, + 'KOST' => 39600, + 'KOVST' => 28800, + 'KOVT' => 25200, + 'KRAST' => 28800, + 'KRAT' => 25200, + 'KST' => 32400, + 'LHDT' => 39600, + 'LHST' => 37800, + 'LINT' => 50400, + 'LKT' => 21600, + 'MAGST' => 43200, + 'MAGT' => 39600, + 'MAWT' => 21600, + 'MDT' => -21600, + 'MESZ' => 7200, + 'MEZ' => 3600, + 'MHT' => 43200, + 'MIT' => -34200, + 'MNST' => 32400, + 'MSDT' => 14400, + 'MSST' => 10800, + 'MST' => -25200, + 'MUT' => 14400, + 'MVT' => 18000, + 'MYT' => 28800, + 'NCT' => 39600, + 'NDT' => -9000, + 'NFT' => 41400, + 'NMIT' => 36000, + 'NOVST' => 25200, + 'NOVT' => 21600, + 'NPT' => 20700, + 'NRT' => 43200, + 'NST' => -12600, + 'NUT' => -39600, + 'NZDT' => 46800, + 'NZST' => 43200, + 'OMSST' => 25200, + 'OMST' => 21600, + 'PDT' => -25200, + 'PET' => -18000, + 'PETST' => 46800, + 'PETT' => 43200, + 'PGT' => 36000, + 'PHOT' => 46800, + 'PHT' => 28800, + 'PKT' => 18000, + 'PMDT' => -7200, + 'PMST' => -10800, + 'PONT' => 39600, + 'PST' => -28800, + 'PWT' => 32400, + 'PYST' => -10800, + 'PYT' => -14400, + 'RET' => 14400, + 'ROTT' => -10800, + 'SAMST' => 18000, + 'SAMT' => 14400, + 'SAST' => 7200, + 'SBT' => 39600, + 'SCDT' => 46800, + 'SCST' => 43200, + 'SCT' => 14400, + 'SEST' => 3600, + 'SGT' => 28800, + 'SIT' => 28800, + 'SRT' => -10800, + 'SST' => -39600, + 'SYST' => 10800, + 'SYT' => 7200, + 'TFT' => 18000, + 'THAT' => -36000, + 'TJT' => 18000, + 'TKT' => -36000, + 'TMT' => 18000, + 'TOT' => 46800, + 'TPT' => 32400, + 'TRUT' => 36000, + 'TVT' => 43200, + 'TWT' => 28800, + 'UYST' => -7200, + 'UYT' => -10800, + 'UZT' => 18000, + 'VET' => -14400, + 'VLAST' => 39600, + 'VLAT' => 36000, + 'VOST' => 21600, + 'VUT' => 39600, + 'WAST' => 7200, + 'WAT' => 3600, + 'WDT' => 32400, + 'WEST' => 3600, + 'WFT' => 43200, + 'WIB' => 25200, + 'WIT' => 32400, + 'WITA' => 28800, + 'WKST' => 18000, + 'WST' => 28800, + 'YAKST' => 36000, + 'YAKT' => 32400, + 'YAPT' => 36000, + 'YEKST' => 21600, + 'YEKT' => 18000, + ); + + /** + * Cached PCRE for SimplePie_Parse_Date::$day + * + * @access protected + * @var string + */ + var $day_pcre; + + /** + * Cached PCRE for SimplePie_Parse_Date::$month + * + * @access protected + * @var string + */ + var $month_pcre; + + /** + * Array of user-added callback methods + * + * @access private + * @var array + */ + var $built_in = array(); + + /** + * Array of user-added callback methods + * + * @access private + * @var array + */ + var $user = array(); + + /** + * Create new SimplePie_Parse_Date object, and set self::day_pcre, + * self::month_pcre, and self::built_in + * + * @access private + */ + public function __construct() + { + $this->day_pcre = '(' . implode(array_keys($this->day), '|') . ')'; + $this->month_pcre = '(' . implode(array_keys($this->month), '|') . ')'; + + static $cache; + if (!isset($cache[get_class($this)])) + { + $all_methods = get_class_methods($this); + + foreach ($all_methods as $method) + { + if (strtolower(substr($method, 0, 5)) === 'date_') + { + $cache[get_class($this)][] = $method; + } + } + } + + foreach ($cache[get_class($this)] as $method) + { + $this->built_in[] = $method; + } + } + + /** + * Get the object + * + * @access public + */ + public static function get() + { + static $object; + if (!$object) + { + $object = new SimplePie_Parse_Date; + } + return $object; + } + + /** + * Parse a date + * + * @final + * @access public + * @param string $date Date to parse + * @return int Timestamp corresponding to date string, or false on failure + */ + public function parse($date) + { + foreach ($this->user as $method) + { + if (($returned = call_user_func($method, $date)) !== false) + { + return $returned; + } + } + + foreach ($this->built_in as $method) + { + if (($returned = call_user_func(array($this, $method), $date)) !== false) + { + return $returned; + } + } + + return false; + } + + /** + * Add a callback method to parse a date + * + * @final + * @access public + * @param callback $callback + */ + public function add_callback($callback) + { + if (is_callable($callback)) + { + $this->user[] = $callback; + } + else + { + trigger_error('User-supplied function must be a valid callback', E_USER_WARNING); + } + } + + /** + * Parse a superset of W3C-DTF (allows hyphens and colons to be omitted, as + * well as allowing any of upper or lower case "T", horizontal tabs, or + * spaces to be used as the time separator (including more than one)) + * + * @access protected + * @return int Timestamp + */ + public function date_w3cdtf($date) + { + static $pcre; + if (!$pcre) + { + $year = '([0-9]{4})'; + $month = $day = $hour = $minute = $second = '([0-9]{2})'; + $decimal = '([0-9]*)'; + $zone = '(?:(Z)|([+\-])([0-9]{1,2}):?([0-9]{1,2}))'; + $pcre = '/^' . $year . '(?:-?' . $month . '(?:-?' . $day . '(?:[Tt\x09\x20]+' . $hour . '(?::?' . $minute . '(?::?' . $second . '(?:.' . $decimal . ')?)?)?' . $zone . ')?)?)?$/'; + } + if (preg_match($pcre, $date, $match)) + { + /* + Capturing subpatterns: + 1: Year + 2: Month + 3: Day + 4: Hour + 5: Minute + 6: Second + 7: Decimal fraction of a second + 8: Zulu + 9: Timezone ± + 10: Timezone hours + 11: Timezone minutes + */ + + // Fill in empty matches + for ($i = count($match); $i <= 3; $i++) + { + $match[$i] = '1'; + } + + for ($i = count($match); $i <= 7; $i++) + { + $match[$i] = '0'; + } + + // Numeric timezone + if (isset($match[9]) && $match[9] !== '') + { + $timezone = $match[10] * 3600; + $timezone += $match[11] * 60; + if ($match[9] === '-') + { + $timezone = 0 - $timezone; + } + } + else + { + $timezone = 0; + } + + // Convert the number of seconds to an integer, taking decimals into account + $second = round((int)$match[6] + (int)$match[7] / pow(10, strlen($match[7]))); + + return gmmktime($match[4], $match[5], $second, $match[2], $match[3], $match[1]) - $timezone; + } + else + { + return false; + } + } + + /** + * Remove RFC822 comments + * + * @access protected + * @param string $data Data to strip comments from + * @return string Comment stripped string + */ + public function remove_rfc2822_comments($string) + { + $string = (string) $string; + $position = 0; + $length = strlen($string); + $depth = 0; + + $output = ''; + + while ($position < $length && ($pos = strpos($string, '(', $position)) !== false) + { + $output .= substr($string, $position, $pos - $position); + $position = $pos + 1; + if ($pos === 0 || $string[$pos - 1] !== '\\') + { + $depth++; + while ($depth && $position < $length) + { + $position += strcspn($string, '()', $position); + if ($string[$position - 1] === '\\') + { + $position++; + continue; + } + elseif (isset($string[$position])) + { + switch ($string[$position]) + { + case '(': + $depth++; + break; + + case ')': + $depth--; + break; + } + $position++; + } + else + { + break; + } + } + } + else + { + $output .= '('; + } + } + $output .= substr($string, $position); + + return $output; + } + + /** + * Parse RFC2822's date format + * + * @access protected + * @return int Timestamp + */ + public function date_rfc2822($date) + { + static $pcre; + if (!$pcre) + { + $wsp = '[\x09\x20]'; + $fws = '(?:' . $wsp . '+|' . $wsp . '*(?:\x0D\x0A' . $wsp . '+)+)'; + $optional_fws = $fws . '?'; + $day_name = $this->day_pcre; + $month = $this->month_pcre; + $day = '([0-9]{1,2})'; + $hour = $minute = $second = '([0-9]{2})'; + $year = '([0-9]{2,4})'; + $num_zone = '([+\-])([0-9]{2})([0-9]{2})'; + $character_zone = '([A-Z]{1,5})'; + $zone = '(?:' . $num_zone . '|' . $character_zone . ')'; + $pcre = '/(?:' . $optional_fws . $day_name . $optional_fws . ',)?' . $optional_fws . $day . $fws . $month . $fws . $year . $fws . $hour . $optional_fws . ':' . $optional_fws . $minute . '(?:' . $optional_fws . ':' . $optional_fws . $second . ')?' . $fws . $zone . '/i'; + } + if (preg_match($pcre, $this->remove_rfc2822_comments($date), $match)) + { + /* + Capturing subpatterns: + 1: Day name + 2: Day + 3: Month + 4: Year + 5: Hour + 6: Minute + 7: Second + 8: Timezone ± + 9: Timezone hours + 10: Timezone minutes + 11: Alphabetic timezone + */ + + // Find the month number + $month = $this->month[strtolower($match[3])]; + + // Numeric timezone + if ($match[8] !== '') + { + $timezone = $match[9] * 3600; + $timezone += $match[10] * 60; + if ($match[8] === '-') + { + $timezone = 0 - $timezone; + } + } + // Character timezone + elseif (isset($this->timezone[strtoupper($match[11])])) + { + $timezone = $this->timezone[strtoupper($match[11])]; + } + // Assume everything else to be -0000 + else + { + $timezone = 0; + } + + // Deal with 2/3 digit years + if ($match[4] < 50) + { + $match[4] += 2000; + } + elseif ($match[4] < 1000) + { + $match[4] += 1900; + } + + // Second is optional, if it is empty set it to zero + if ($match[7] !== '') + { + $second = $match[7]; + } + else + { + $second = 0; + } + + return gmmktime($match[5], $match[6], $second, $month, $match[2], $match[4]) - $timezone; + } + else + { + return false; + } + } + + /** + * Parse RFC850's date format + * + * @access protected + * @return int Timestamp + */ + public function date_rfc850($date) + { + static $pcre; + if (!$pcre) + { + $space = '[\x09\x20]+'; + $day_name = $this->day_pcre; + $month = $this->month_pcre; + $day = '([0-9]{1,2})'; + $year = $hour = $minute = $second = '([0-9]{2})'; + $zone = '([A-Z]{1,5})'; + $pcre = '/^' . $day_name . ',' . $space . $day . '-' . $month . '-' . $year . $space . $hour . ':' . $minute . ':' . $second . $space . $zone . '$/i'; + } + if (preg_match($pcre, $date, $match)) + { + /* + Capturing subpatterns: + 1: Day name + 2: Day + 3: Month + 4: Year + 5: Hour + 6: Minute + 7: Second + 8: Timezone + */ + + // Month + $month = $this->month[strtolower($match[3])]; + + // Character timezone + if (isset($this->timezone[strtoupper($match[8])])) + { + $timezone = $this->timezone[strtoupper($match[8])]; + } + // Assume everything else to be -0000 + else + { + $timezone = 0; + } + + // Deal with 2 digit year + if ($match[4] < 50) + { + $match[4] += 2000; + } + else + { + $match[4] += 1900; + } + + return gmmktime($match[5], $match[6], $match[7], $month, $match[2], $match[4]) - $timezone; + } + else + { + return false; + } + } + + /** + * Parse C99's asctime()'s date format + * + * @access protected + * @return int Timestamp + */ + public function date_asctime($date) + { + static $pcre; + if (!$pcre) + { + $space = '[\x09\x20]+'; + $wday_name = $this->day_pcre; + $mon_name = $this->month_pcre; + $day = '([0-9]{1,2})'; + $hour = $sec = $min = '([0-9]{2})'; + $year = '([0-9]{4})'; + $terminator = '\x0A?\x00?'; + $pcre = '/^' . $wday_name . $space . $mon_name . $space . $day . $space . $hour . ':' . $min . ':' . $sec . $space . $year . $terminator . '$/i'; + } + if (preg_match($pcre, $date, $match)) + { + /* + Capturing subpatterns: + 1: Day name + 2: Month + 3: Day + 4: Hour + 5: Minute + 6: Second + 7: Year + */ + + $month = $this->month[strtolower($match[2])]; + return gmmktime($match[4], $match[5], $match[6], $month, $match[3], $match[7]); + } + else + { + return false; + } + } + + /** + * Parse dates using strtotime() + * + * @access protected + * @return int Timestamp + */ + public function date_strtotime($date) + { + $strtotime = strtotime($date); + if ($strtotime === -1 || $strtotime === false) + { + return false; + } + else + { + return $strtotime; + } + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/Parser.php new file mode 100644 index 000000000..17139abe9 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Parser.php @@ -0,0 +1,656 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Parses XML into something sane + * + * + * This class can be overloaded with {@see SimplePie::set_parser_class()} + * + * @package SimplePie + * @subpackage Parsing + */ +class SimplePie_Parser +{ + var $error_code; + var $error_string; + var $current_line; + var $current_column; + var $current_byte; + var $separator = ' '; + var $namespace = array(''); + var $element = array(''); + var $xml_base = array(''); + var $xml_base_explicit = array(false); + var $xml_lang = array(''); + var $data = array(); + var $datas = array(array()); + var $current_xhtml_construct = -1; + var $encoding; + protected $registry; + + public function set_registry(SimplePie_Registry $registry) + { + $this->registry = $registry; + } + + public function parse(&$data, $encoding, $url = '') + { + if (function_exists('Mf2\parse')) { + // Check for both h-feed and h-entry, as both a feed with no entries + // and a list of entries without an h-feed wrapper are both valid. + $position = 0; + while ($position = strpos($data, 'h-feed', $position)) { + $start = $position < 200 ? 0 : $position - 200; + $check = substr($data, $start, 400); + if (preg_match('/class="[^"]*h-feed/', $check)) { + return $this->parse_microformats($data, $url); + } + $position += 7; + } + $position = 0; + while ($position = strpos($data, 'h-entry', $position)) { + $start = $position < 200 ? 0 : $position - 200; + $check = substr($data, $start, 400); + if (preg_match('/class="[^"]*h-entry/', $check)) { + return $this->parse_microformats($data, $url); + } + $position += 7; + } + } + + // Use UTF-8 if we get passed US-ASCII, as every US-ASCII character is a UTF-8 character + if (strtoupper($encoding) === 'US-ASCII') + { + $this->encoding = 'UTF-8'; + } + else + { + $this->encoding = $encoding; + } + + // Strip BOM: + // UTF-32 Big Endian BOM + if (substr($data, 0, 4) === "\x00\x00\xFE\xFF") + { + $data = substr($data, 4); + } + // UTF-32 Little Endian BOM + elseif (substr($data, 0, 4) === "\xFF\xFE\x00\x00") + { + $data = substr($data, 4); + } + // UTF-16 Big Endian BOM + elseif (substr($data, 0, 2) === "\xFE\xFF") + { + $data = substr($data, 2); + } + // UTF-16 Little Endian BOM + elseif (substr($data, 0, 2) === "\xFF\xFE") + { + $data = substr($data, 2); + } + // UTF-8 BOM + elseif (substr($data, 0, 3) === "\xEF\xBB\xBF") + { + $data = substr($data, 3); + } + + if (substr($data, 0, 5) === '<?xml' && strspn(substr($data, 5, 1), "\x09\x0A\x0D\x20") && ($pos = strpos($data, '?>')) !== false) + { + $declaration = $this->registry->create('XML_Declaration_Parser', array(substr($data, 5, $pos - 5))); + if ($declaration->parse()) + { + $data = substr($data, $pos + 2); + $data = '<?xml version="' . $declaration->version . '" encoding="' . $encoding . '" standalone="' . (($declaration->standalone) ? 'yes' : 'no') . '"?>' ."\n". $this->declare_html_entities() . $data; + } + else + { + $this->error_string = 'SimplePie bug! Please report this!'; + return false; + } + } + + $return = true; + + static $xml_is_sane = null; + if ($xml_is_sane === null) + { + $parser_check = xml_parser_create(); + xml_parse_into_struct($parser_check, '<foo>&</foo>', $values); + xml_parser_free($parser_check); + $xml_is_sane = isset($values[0]['value']); + } + + // Create the parser + if ($xml_is_sane) + { + $xml = xml_parser_create_ns($this->encoding, $this->separator); + xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE, 1); + xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, 0); + xml_set_object($xml, $this); + xml_set_character_data_handler($xml, 'cdata'); + xml_set_element_handler($xml, 'tag_open', 'tag_close'); + + // Parse! + if (!xml_parse($xml, $data, true)) + { + $this->error_code = xml_get_error_code($xml); + $this->error_string = xml_error_string($this->error_code); + $return = false; + } + $this->current_line = xml_get_current_line_number($xml); + $this->current_column = xml_get_current_column_number($xml); + $this->current_byte = xml_get_current_byte_index($xml); + xml_parser_free($xml); + return $return; + } + else + { + libxml_clear_errors(); + $xml = new XMLReader(); + $xml->xml($data); + while (@$xml->read()) + { + switch ($xml->nodeType) + { + + case constant('XMLReader::END_ELEMENT'): + if ($xml->namespaceURI !== '') + { + $tagName = $xml->namespaceURI . $this->separator . $xml->localName; + } + else + { + $tagName = $xml->localName; + } + $this->tag_close(null, $tagName); + break; + case constant('XMLReader::ELEMENT'): + $empty = $xml->isEmptyElement; + if ($xml->namespaceURI !== '') + { + $tagName = $xml->namespaceURI . $this->separator . $xml->localName; + } + else + { + $tagName = $xml->localName; + } + $attributes = array(); + while ($xml->moveToNextAttribute()) + { + if ($xml->namespaceURI !== '') + { + $attrName = $xml->namespaceURI . $this->separator . $xml->localName; + } + else + { + $attrName = $xml->localName; + } + $attributes[$attrName] = $xml->value; + } + $this->tag_open(null, $tagName, $attributes); + if ($empty) + { + $this->tag_close(null, $tagName); + } + break; + case constant('XMLReader::TEXT'): + + case constant('XMLReader::CDATA'): + $this->cdata(null, $xml->value); + break; + } + } + if ($error = libxml_get_last_error()) + { + $this->error_code = $error->code; + $this->error_string = $error->message; + $this->current_line = $error->line; + $this->current_column = $error->column; + return false; + } + else + { + return true; + } + } + } + + public function get_error_code() + { + return $this->error_code; + } + + public function get_error_string() + { + return $this->error_string; + } + + public function get_current_line() + { + return $this->current_line; + } + + public function get_current_column() + { + return $this->current_column; + } + + public function get_current_byte() + { + return $this->current_byte; + } + + public function get_data() + { + return $this->data; + } + + public function tag_open($parser, $tag, $attributes) + { + list($this->namespace[], $this->element[]) = $this->split_ns($tag); + + $attribs = array(); + foreach ($attributes as $name => $value) + { + list($attrib_namespace, $attribute) = $this->split_ns($name); + $attribs[$attrib_namespace][$attribute] = $value; + } + + if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['base'])) + { + $base = $this->registry->call('Misc', 'absolutize_url', array($attribs[SIMPLEPIE_NAMESPACE_XML]['base'], end($this->xml_base))); + if ($base !== false) + { + $this->xml_base[] = $base; + $this->xml_base_explicit[] = true; + } + } + else + { + $this->xml_base[] = end($this->xml_base); + $this->xml_base_explicit[] = end($this->xml_base_explicit); + } + + if (isset($attribs[SIMPLEPIE_NAMESPACE_XML]['lang'])) + { + $this->xml_lang[] = $attribs[SIMPLEPIE_NAMESPACE_XML]['lang']; + } + else + { + $this->xml_lang[] = end($this->xml_lang); + } + + if ($this->current_xhtml_construct >= 0) + { + $this->current_xhtml_construct++; + if (end($this->namespace) === SIMPLEPIE_NAMESPACE_XHTML) + { + $this->data['data'] .= '<' . end($this->element); + if (isset($attribs[''])) + { + foreach ($attribs[''] as $name => $value) + { + $this->data['data'] .= ' ' . $name . '="' . htmlspecialchars($value, ENT_COMPAT, $this->encoding) . '"'; + } + } + $this->data['data'] .= '>'; + } + } + else + { + $this->datas[] =& $this->data; + $this->data =& $this->data['child'][end($this->namespace)][end($this->element)][]; + $this->data = array('data' => '', 'attribs' => $attribs, 'xml_base' => end($this->xml_base), 'xml_base_explicit' => end($this->xml_base_explicit), 'xml_lang' => end($this->xml_lang)); + if ((end($this->namespace) === SIMPLEPIE_NAMESPACE_ATOM_03 && in_array(end($this->element), array('title', 'tagline', 'copyright', 'info', 'summary', 'content')) && isset($attribs['']['mode']) && $attribs['']['mode'] === 'xml') + || (end($this->namespace) === SIMPLEPIE_NAMESPACE_ATOM_10 && in_array(end($this->element), array('rights', 'subtitle', 'summary', 'info', 'title', 'content')) && isset($attribs['']['type']) && $attribs['']['type'] === 'xhtml') + || (end($this->namespace) === SIMPLEPIE_NAMESPACE_RSS_20 && in_array(end($this->element), array('title'))) + || (end($this->namespace) === SIMPLEPIE_NAMESPACE_RSS_090 && in_array(end($this->element), array('title'))) + || (end($this->namespace) === SIMPLEPIE_NAMESPACE_RSS_10 && in_array(end($this->element), array('title')))) + { + $this->current_xhtml_construct = 0; + } + } + } + + public function cdata($parser, $cdata) + { + if ($this->current_xhtml_construct >= 0) + { + $this->data['data'] .= htmlspecialchars($cdata, ENT_QUOTES, $this->encoding); + } + else + { + $this->data['data'] .= $cdata; + } + } + + public function tag_close($parser, $tag) + { + if ($this->current_xhtml_construct >= 0) + { + $this->current_xhtml_construct--; + if (end($this->namespace) === SIMPLEPIE_NAMESPACE_XHTML && !in_array(end($this->element), array('area', 'base', 'basefont', 'br', 'col', 'frame', 'hr', 'img', 'input', 'isindex', 'link', 'meta', 'param'))) + { + $this->data['data'] .= '</' . end($this->element) . '>'; + } + } + if ($this->current_xhtml_construct === -1) + { + $this->data =& $this->datas[count($this->datas) - 1]; + array_pop($this->datas); + } + + array_pop($this->element); + array_pop($this->namespace); + array_pop($this->xml_base); + array_pop($this->xml_base_explicit); + array_pop($this->xml_lang); + } + + public function split_ns($string) + { + static $cache = array(); + if (!isset($cache[$string])) + { + if ($pos = strpos($string, $this->separator)) + { + static $separator_length; + if (!$separator_length) + { + $separator_length = strlen($this->separator); + } + $namespace = substr($string, 0, $pos); + $local_name = substr($string, $pos + $separator_length); + if (strtolower($namespace) === SIMPLEPIE_NAMESPACE_ITUNES) + { + $namespace = SIMPLEPIE_NAMESPACE_ITUNES; + } + + // Normalize the Media RSS namespaces + if ($namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG || + $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG2 || + $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG3 || + $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG4 || + $namespace === SIMPLEPIE_NAMESPACE_MEDIARSS_WRONG5 ) + { + $namespace = SIMPLEPIE_NAMESPACE_MEDIARSS; + } + $cache[$string] = array($namespace, $local_name); + } + else + { + $cache[$string] = array('', $string); + } + } + return $cache[$string]; + } + + private function parse_hcard($data, $category = false) { + $name = ''; + $link = ''; + // Check if h-card is set and pass that information on in the link. + if (isset($data['type']) && in_array('h-card', $data['type'])) { + if (isset($data['properties']['name'][0])) { + $name = $data['properties']['name'][0]; + } + if (isset($data['properties']['url'][0])) { + $link = $data['properties']['url'][0]; + if ($name === '') { + $name = $link; + } + else { + // can't have commas in categories. + $name = str_replace(',', '', $name); + } + $person_tag = $category ? '<span class="person-tag"></span>' : ''; + return '<a class="h-card" href="'.$link.'">'.$person_tag.$name.'</a>'; + } + } + return isset($data['value']) ? $data['value'] : ''; + } + + private function parse_microformats(&$data, $url) { + $feed_title = ''; + $feed_author = NULL; + $author_cache = array(); + $items = array(); + $entries = array(); + $mf = Mf2\parse($data, $url); + // First look for an h-feed. + $h_feed = array(); + foreach ($mf['items'] as $mf_item) { + if (in_array('h-feed', $mf_item['type'])) { + $h_feed = $mf_item; + break; + } + // Also look for an h-feed in the children of each top level item. + if (!isset($mf_item['children'][0]['type'])) continue; + if (in_array('h-feed', $mf_item['children'][0]['type'])) { + $h_feed = $mf_item['children'][0]; + // In this case the parent of the h-feed may be an h-card, so use it as + // the feed_author. + if (in_array('h-card', $mf_item['type'])) $feed_author = $mf_item; + break; + } + } + if (isset($h_feed['children'])) { + $entries = $h_feed['children']; + // Also set the feed title and store author from the h-feed if available. + if (isset($mf['items'][0]['properties']['name'][0])) { + $feed_title = $mf['items'][0]['properties']['name'][0]; + } + if (isset($mf['items'][0]['properties']['author'][0])) { + $feed_author = $mf['items'][0]['properties']['author'][0]; + } + } + else { + $entries = $mf['items']; + } + for ($i = 0; $i < count($entries); $i++) { + $entry = $entries[$i]; + if (in_array('h-entry', $entry['type'])) { + $item = array(); + $title = ''; + $description = ''; + if (isset($entry['properties']['url'][0])) { + $link = $entry['properties']['url'][0]; + if (isset($link['value'])) $link = $link['value']; + $item['link'] = array(array('data' => $link)); + } + if (isset($entry['properties']['uid'][0])) { + $guid = $entry['properties']['uid'][0]; + if (isset($guid['value'])) $guid = $guid['value']; + $item['guid'] = array(array('data' => $guid)); + } + if (isset($entry['properties']['name'][0])) { + $title = $entry['properties']['name'][0]; + if (isset($title['value'])) $title = $title['value']; + $item['title'] = array(array('data' => $title)); + } + if (isset($entry['properties']['author'][0]) || isset($feed_author)) { + // author is a special case, it can be plain text or an h-card array. + // If it's plain text it can also be a url that should be followed to + // get the actual h-card. + $author = isset($entry['properties']['author'][0]) ? + $entry['properties']['author'][0] : $feed_author; + if (!is_string($author)) { + $author = $this->parse_hcard($author); + } + else if (strpos($author, 'http') === 0) { + if (isset($author_cache[$author])) { + $author = $author_cache[$author]; + } + else { + $mf = Mf2\fetch($author); + foreach ($mf['items'] as $hcard) { + // Only interested in an h-card by itself in this case. + if (!in_array('h-card', $hcard['type'])) { + continue; + } + // It must have a url property matching what we fetched. + if (!isset($hcard['properties']['url']) || + !(in_array($author, $hcard['properties']['url']))) { + continue; + } + // Save parse_hcard the trouble of finding the correct url. + $hcard['properties']['url'][0] = $author; + // Cache this h-card for the next h-entry to check. + $author_cache[$author] = $this->parse_hcard($hcard); + $author = $author_cache[$author]; + break; + } + } + } + $item['author'] = array(array('data' => $author)); + } + if (isset($entry['properties']['photo'][0])) { + // If a photo is also in content, don't need to add it again here. + $content = ''; + if (isset($entry['properties']['content'][0]['html'])) { + $content = $entry['properties']['content'][0]['html']; + } + $photo_list = array(); + for ($j = 0; $j < count($entry['properties']['photo']); $j++) { + $photo = $entry['properties']['photo'][$j]; + if (strpos($content, $photo) === false) { + $photo_list[] = $photo; + } + } + // When there's more than one photo show the first and use a lightbox. + $count = count($photo_list); + if ($count > 1) { + $description = '<p>'; + for ($j = 0; $j < $count; $j++) { + $hidden = $j === 0 ? '' : 'class="hidden" '; + $description .= '<a href="'.$photo_list[$j].'" '.$hidden. + 'data-lightbox="image-set-'.$i.'">'. + '<img src="'.$photo_list[$j].'"></a>'; + } + $description .= '<br><b>'.$count.' photos</b></p>'; + } + else if ($count == 1) { + $description = '<p><img src="'.$photo_list[0].'"></p>'; + } + } + if (isset($entry['properties']['content'][0]['html'])) { + // e-content['value'] is the same as p-name when they are on the same + // element. Use this to replace title with a strip_tags version so + // that alt text from images is not included in the title. + if ($entry['properties']['content'][0]['value'] === $title) { + $title = strip_tags($entry['properties']['content'][0]['html']); + $item['title'] = array(array('data' => $title)); + } + $description .= $entry['properties']['content'][0]['html']; + if (isset($entry['properties']['in-reply-to'][0]['value'])) { + $in_reply_to = $entry['properties']['in-reply-to'][0]['value']; + $description .= '<p><span class="in-reply-to"></span> '. + '<a href="'.$in_reply_to.'">'.$in_reply_to.'</a><p>'; + } + $item['description'] = array(array('data' => $description)); + } + if (isset($entry['properties']['category'])) { + $category_csv = ''; + // Categories can also contain h-cards. + foreach ($entry['properties']['category'] as $category) { + if ($category_csv !== '') $category_csv .= ', '; + if (is_string($category)) { + // Can't have commas in categories. + $category_csv .= str_replace(',', '', $category); + } + else { + $category_csv .= $this->parse_hcard($category, true); + } + } + $item['category'] = array(array('data' => $category_csv)); + } + if (isset($entry['properties']['published'][0])) { + $timestamp = strtotime($entry['properties']['published'][0]); + $pub_date = date('F j Y g:ia', $timestamp).' GMT'; + $item['pubDate'] = array(array('data' => $pub_date)); + } + // The title and description are set to the empty string to represent + // a deleted item (which also makes it an invalid rss item). + if (isset($entry['properties']['deleted'][0])) { + $item['title'] = array(array('data' => '')); + $item['description'] = array(array('data' => '')); + } + $items[] = array('child' => array('' => $item)); + } + } + // Mimic RSS data format when storing microformats. + $link = array(array('data' => $url)); + $image = ''; + if (!is_string($feed_author) && + isset($feed_author['properties']['photo'][0])) { + $image = array(array('child' => array('' => array('url' => + array(array('data' => $feed_author['properties']['photo'][0])))))); + } + // Use the a name given for the h-feed, or get the title from the html. + if ($feed_title !== '') { + $feed_title = array(array('data' => htmlspecialchars($feed_title))); + } + else if ($position = strpos($data, '<title>')) { + $start = $position < 200 ? 0 : $position - 200; + $check = substr($data, $start, 400); + $matches = array(); + if (preg_match('/<title>(.+)<\/title>/', $check, $matches)) { + $feed_title = array(array('data' => htmlspecialchars($matches[1]))); + } + } + $channel = array('channel' => array(array('child' => array('' => + array('link' => $link, 'image' => $image, 'title' => $feed_title, + 'item' => $items))))); + $rss = array(array('attribs' => array('' => array('version' => '2.0')), + 'child' => array('' => $channel))); + $this->data = array('child' => array('' => array('rss' => $rss))); + return true; + } + + private function declare_html_entities() { + // This is required because the RSS specification says that entity-encoded + // html is allowed, but the xml specification says they must be declared. + return '<!DOCTYPE html [ <!ENTITY nbsp " "> <!ENTITY iexcl "¡"> <!ENTITY cent "¢"> <!ENTITY pound "£"> <!ENTITY curren "¤"> <!ENTITY yen "¥"> <!ENTITY brvbar "¦"> <!ENTITY sect "§"> <!ENTITY uml "¨"> <!ENTITY copy "©"> <!ENTITY ordf "ª"> <!ENTITY laquo "«"> <!ENTITY not "¬"> <!ENTITY shy "­"> <!ENTITY reg "®"> <!ENTITY macr "¯"> <!ENTITY deg "°"> <!ENTITY plusmn "±"> <!ENTITY sup2 "²"> <!ENTITY sup3 "³"> <!ENTITY acute "´"> <!ENTITY micro "µ"> <!ENTITY para "¶"> <!ENTITY middot "·"> <!ENTITY cedil "¸"> <!ENTITY sup1 "¹"> <!ENTITY ordm "º"> <!ENTITY raquo "»"> <!ENTITY frac14 "¼"> <!ENTITY frac12 "½"> <!ENTITY frac34 "¾"> <!ENTITY iquest "¿"> <!ENTITY Agrave "À"> <!ENTITY Aacute "Á"> <!ENTITY Acirc "Â"> <!ENTITY Atilde "Ã"> <!ENTITY Auml "Ä"> <!ENTITY Aring "Å"> <!ENTITY AElig "Æ"> <!ENTITY Ccedil "Ç"> <!ENTITY Egrave "È"> <!ENTITY Eacute "É"> <!ENTITY Ecirc "Ê"> <!ENTITY Euml "Ë"> <!ENTITY Igrave "Ì"> <!ENTITY Iacute "Í"> <!ENTITY Icirc "Î"> <!ENTITY Iuml "Ï"> <!ENTITY ETH "Ð"> <!ENTITY Ntilde "Ñ"> <!ENTITY Ograve "Ò"> <!ENTITY Oacute "Ó"> <!ENTITY Ocirc "Ô"> <!ENTITY Otilde "Õ"> <!ENTITY Ouml "Ö"> <!ENTITY times "×"> <!ENTITY Oslash "Ø"> <!ENTITY Ugrave "Ù"> <!ENTITY Uacute "Ú"> <!ENTITY Ucirc "Û"> <!ENTITY Uuml "Ü"> <!ENTITY Yacute "Ý"> <!ENTITY THORN "Þ"> <!ENTITY szlig "ß"> <!ENTITY agrave "à"> <!ENTITY aacute "á"> <!ENTITY acirc "â"> <!ENTITY atilde "ã"> <!ENTITY auml "ä"> <!ENTITY aring "å"> <!ENTITY aelig "æ"> <!ENTITY ccedil "ç"> <!ENTITY egrave "è"> <!ENTITY eacute "é"> <!ENTITY ecirc "ê"> <!ENTITY euml "ë"> <!ENTITY igrave "ì"> <!ENTITY iacute "í"> <!ENTITY icirc "î"> <!ENTITY iuml "ï"> <!ENTITY eth "ð"> <!ENTITY ntilde "ñ"> <!ENTITY ograve "ò"> <!ENTITY oacute "ó"> <!ENTITY ocirc "ô"> <!ENTITY otilde "õ"> <!ENTITY ouml "ö"> <!ENTITY divide "÷"> <!ENTITY oslash "ø"> <!ENTITY ugrave "ù"> <!ENTITY uacute "ú"> <!ENTITY ucirc "û"> <!ENTITY uuml "ü"> <!ENTITY yacute "ý"> <!ENTITY thorn "þ"> <!ENTITY yuml "ÿ"> <!ENTITY OElig "Œ"> <!ENTITY oelig "œ"> <!ENTITY Scaron "Š"> <!ENTITY scaron "š"> <!ENTITY Yuml "Ÿ"> <!ENTITY fnof "ƒ"> <!ENTITY circ "ˆ"> <!ENTITY tilde "˜"> <!ENTITY Alpha "Α"> <!ENTITY Beta "Β"> <!ENTITY Gamma "Γ"> <!ENTITY Epsilon "Ε"> <!ENTITY Zeta "Ζ"> <!ENTITY Eta "Η"> <!ENTITY Theta "Θ"> <!ENTITY Iota "Ι"> <!ENTITY Kappa "Κ"> <!ENTITY Lambda "Λ"> <!ENTITY Mu "Μ"> <!ENTITY Nu "Ν"> <!ENTITY Xi "Ξ"> <!ENTITY Omicron "Ο"> <!ENTITY Pi "Π"> <!ENTITY Rho "Ρ"> <!ENTITY Sigma "Σ"> <!ENTITY Tau "Τ"> <!ENTITY Upsilon "Υ"> <!ENTITY Phi "Φ"> <!ENTITY Chi "Χ"> <!ENTITY Psi "Ψ"> <!ENTITY Omega "Ω"> <!ENTITY alpha "α"> <!ENTITY beta "β"> <!ENTITY gamma "γ"> <!ENTITY delta "δ"> <!ENTITY epsilon "ε"> <!ENTITY zeta "ζ"> <!ENTITY eta "η"> <!ENTITY theta "θ"> <!ENTITY iota "ι"> <!ENTITY kappa "κ"> <!ENTITY lambda "λ"> <!ENTITY mu "μ"> <!ENTITY nu "ν"> <!ENTITY xi "ξ"> <!ENTITY omicron "ο"> <!ENTITY pi "π"> <!ENTITY rho "ρ"> <!ENTITY sigmaf "ς"> <!ENTITY sigma "σ"> <!ENTITY tau "τ"> <!ENTITY upsilon "υ"> <!ENTITY phi "φ"> <!ENTITY chi "χ"> <!ENTITY psi "ψ"> <!ENTITY omega "ω"> <!ENTITY thetasym "ϑ"> <!ENTITY upsih "ϒ"> <!ENTITY piv "ϖ"> <!ENTITY ensp " "> <!ENTITY emsp " "> <!ENTITY thinsp " "> <!ENTITY zwnj "‌"> <!ENTITY zwj "‍"> <!ENTITY lrm "‎"> <!ENTITY rlm "‏"> <!ENTITY ndash "–"> <!ENTITY mdash "—"> <!ENTITY lsquo "‘"> <!ENTITY rsquo "’"> <!ENTITY sbquo "‚"> <!ENTITY ldquo "“"> <!ENTITY rdquo "”"> <!ENTITY bdquo "„"> <!ENTITY dagger "†"> <!ENTITY Dagger "‡"> <!ENTITY bull "•"> <!ENTITY hellip "…"> <!ENTITY permil "‰"> <!ENTITY prime "′"> <!ENTITY Prime "″"> <!ENTITY lsaquo "‹"> <!ENTITY rsaquo "›"> <!ENTITY oline "‾"> <!ENTITY frasl "⁄"> <!ENTITY euro "€"> <!ENTITY image "ℑ"> <!ENTITY weierp "℘"> <!ENTITY real "ℜ"> <!ENTITY trade "™"> <!ENTITY alefsym "ℵ"> <!ENTITY larr "←"> <!ENTITY uarr "↑"> <!ENTITY rarr "→"> <!ENTITY darr "↓"> <!ENTITY harr "↔"> <!ENTITY crarr "↵"> <!ENTITY lArr "⇐"> <!ENTITY uArr "⇑"> <!ENTITY rArr "⇒"> <!ENTITY dArr "⇓"> <!ENTITY hArr "⇔"> <!ENTITY forall "∀"> <!ENTITY part "∂"> <!ENTITY exist "∃"> <!ENTITY empty "∅"> <!ENTITY nabla "∇"> <!ENTITY isin "∈"> <!ENTITY notin "∉"> <!ENTITY ni "∋"> <!ENTITY prod "∏"> <!ENTITY sum "∑"> <!ENTITY minus "−"> <!ENTITY lowast "∗"> <!ENTITY radic "√"> <!ENTITY prop "∝"> <!ENTITY infin "∞"> <!ENTITY ang "∠"> <!ENTITY and "∧"> <!ENTITY or "∨"> <!ENTITY cap "∩"> <!ENTITY cup "∪"> <!ENTITY int "∫"> <!ENTITY there4 "∴"> <!ENTITY sim "∼"> <!ENTITY cong "≅"> <!ENTITY asymp "≈"> <!ENTITY ne "≠"> <!ENTITY equiv "≡"> <!ENTITY le "≤"> <!ENTITY ge "≥"> <!ENTITY sub "⊂"> <!ENTITY sup "⊃"> <!ENTITY nsub "⊄"> <!ENTITY sube "⊆"> <!ENTITY supe "⊇"> <!ENTITY oplus "⊕"> <!ENTITY otimes "⊗"> <!ENTITY perp "⊥"> <!ENTITY sdot "⋅"> <!ENTITY lceil "⌈"> <!ENTITY rceil "⌉"> <!ENTITY lfloor "⌊"> <!ENTITY rfloor "⌋"> <!ENTITY lang "〈"> <!ENTITY rang "〉"> <!ENTITY loz "◊"> <!ENTITY spades "♠"> <!ENTITY clubs "♣"> <!ENTITY hearts "♥"> <!ENTITY diams "♦"> ]>'; + } +}
\ No newline at end of file diff --git a/vendor/simplepie/simplepie/library/SimplePie/Rating.php b/vendor/simplepie/simplepie/library/SimplePie/Rating.php new file mode 100644 index 000000000..eaf57080c --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Rating.php @@ -0,0 +1,128 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Handles `<media:rating>` or `<itunes:explicit>` tags as defined in Media RSS and iTunes RSS respectively + * + * Used by {@see SimplePie_Enclosure::get_rating()} and {@see SimplePie_Enclosure::get_ratings()} + * + * This class can be overloaded with {@see SimplePie::set_rating_class()} + * + * @package SimplePie + * @subpackage API + */ +class SimplePie_Rating +{ + /** + * Rating scheme + * + * @var string + * @see get_scheme() + */ + var $scheme; + + /** + * Rating value + * + * @var string + * @see get_value() + */ + var $value; + + /** + * Constructor, used to input the data + * + * For documentation on all the parameters, see the corresponding + * properties and their accessors + */ + public function __construct($scheme = null, $value = null) + { + $this->scheme = $scheme; + $this->value = $value; + } + + /** + * String-ified version + * + * @return string + */ + public function __toString() + { + // There is no $this->data here + return md5(serialize($this)); + } + + /** + * Get the organizational scheme for the rating + * + * @return string|null + */ + public function get_scheme() + { + if ($this->scheme !== null) + { + return $this->scheme; + } + else + { + return null; + } + } + + /** + * Get the value of the rating + * + * @return string|null + */ + public function get_value() + { + if ($this->value !== null) + { + return $this->value; + } + else + { + return null; + } + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Registry.php b/vendor/simplepie/simplepie/library/SimplePie/Registry.php new file mode 100755 index 000000000..e0909bb74 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Registry.php @@ -0,0 +1,224 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Handles creating objects and calling methods + * + * Access this via {@see SimplePie::get_registry()} + * + * @package SimplePie + */ +class SimplePie_Registry +{ + /** + * Default class mapping + * + * Overriding classes *must* subclass these. + * + * @var array + */ + protected $default = array( + 'Cache' => 'SimplePie_Cache', + 'Locator' => 'SimplePie_Locator', + 'Parser' => 'SimplePie_Parser', + 'File' => 'SimplePie_File', + 'Sanitize' => 'SimplePie_Sanitize', + 'Item' => 'SimplePie_Item', + 'Author' => 'SimplePie_Author', + 'Category' => 'SimplePie_Category', + 'Enclosure' => 'SimplePie_Enclosure', + 'Caption' => 'SimplePie_Caption', + 'Copyright' => 'SimplePie_Copyright', + 'Credit' => 'SimplePie_Credit', + 'Rating' => 'SimplePie_Rating', + 'Restriction' => 'SimplePie_Restriction', + 'Content_Type_Sniffer' => 'SimplePie_Content_Type_Sniffer', + 'Source' => 'SimplePie_Source', + 'Misc' => 'SimplePie_Misc', + 'XML_Declaration_Parser' => 'SimplePie_XML_Declaration_Parser', + 'Parse_Date' => 'SimplePie_Parse_Date', + ); + + /** + * Class mapping + * + * @see register() + * @var array + */ + protected $classes = array(); + + /** + * Legacy classes + * + * @see register() + * @var array + */ + protected $legacy = array(); + + /** + * Constructor + * + * No-op + */ + public function __construct() { } + + /** + * Register a class + * + * @param string $type See {@see $default} for names + * @param string $class Class name, must subclass the corresponding default + * @param bool $legacy Whether to enable legacy support for this class + * @return bool Successfulness + */ + public function register($type, $class, $legacy = false) + { + if (!@is_subclass_of($class, $this->default[$type])) + { + return false; + } + + $this->classes[$type] = $class; + + if ($legacy) + { + $this->legacy[] = $class; + } + + return true; + } + + /** + * Get the class registered for a type + * + * Where possible, use {@see create()} or {@see call()} instead + * + * @param string $type + * @return string|null + */ + public function get_class($type) + { + if (!empty($this->classes[$type])) + { + return $this->classes[$type]; + } + if (!empty($this->default[$type])) + { + return $this->default[$type]; + } + + return null; + } + + /** + * Create a new instance of a given type + * + * @param string $type + * @param array $parameters Parameters to pass to the constructor + * @return object Instance of class + */ + public function &create($type, $parameters = array()) + { + $class = $this->get_class($type); + + if (in_array($class, $this->legacy)) + { + switch ($type) + { + case 'locator': + // Legacy: file, timeout, useragent, file_class, max_checked_feeds, content_type_sniffer_class + // Specified: file, timeout, useragent, max_checked_feeds + $replacement = array($this->get_class('file'), $parameters[3], $this->get_class('content_type_sniffer')); + array_splice($parameters, 3, 1, $replacement); + break; + } + } + + if (!method_exists($class, '__construct')) + { + $instance = new $class; + } + else + { + $reflector = new ReflectionClass($class); + $instance = $reflector->newInstanceArgs($parameters); + } + + if (method_exists($instance, 'set_registry')) + { + $instance->set_registry($this); + } + return $instance; + } + + /** + * Call a static method for a type + * + * @param string $type + * @param string $method + * @param array $parameters + * @return mixed + */ + public function &call($type, $method, $parameters = array()) + { + $class = $this->get_class($type); + + if (in_array($class, $this->legacy)) + { + switch ($type) + { + case 'Cache': + // For backwards compatibility with old non-static + // Cache::create() methods + if ($method === 'get_handler') + { + $result = @call_user_func_array(array($class, 'create'), $parameters); + return $result; + } + break; + } + } + + $result = call_user_func_array(array($class, $method), $parameters); + return $result; + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Restriction.php b/vendor/simplepie/simplepie/library/SimplePie/Restriction.php new file mode 100644 index 000000000..001a5cd28 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Restriction.php @@ -0,0 +1,154 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Handles `<media:restriction>` as defined in Media RSS + * + * Used by {@see SimplePie_Enclosure::get_restriction()} and {@see SimplePie_Enclosure::get_restrictions()} + * + * This class can be overloaded with {@see SimplePie::set_restriction_class()} + * + * @package SimplePie + * @subpackage API + */ +class SimplePie_Restriction +{ + /** + * Relationship ('allow'/'deny') + * + * @var string + * @see get_relationship() + */ + var $relationship; + + /** + * Type of restriction + * + * @var string + * @see get_type() + */ + var $type; + + /** + * Restricted values + * + * @var string + * @see get_value() + */ + var $value; + + /** + * Constructor, used to input the data + * + * For documentation on all the parameters, see the corresponding + * properties and their accessors + */ + public function __construct($relationship = null, $type = null, $value = null) + { + $this->relationship = $relationship; + $this->type = $type; + $this->value = $value; + } + + /** + * String-ified version + * + * @return string + */ + public function __toString() + { + // There is no $this->data here + return md5(serialize($this)); + } + + /** + * Get the relationship + * + * @return string|null Either 'allow' or 'deny' + */ + public function get_relationship() + { + if ($this->relationship !== null) + { + return $this->relationship; + } + else + { + return null; + } + } + + /** + * Get the type + * + * @return string|null + */ + public function get_type() + { + if ($this->type !== null) + { + return $this->type; + } + else + { + return null; + } + } + + /** + * Get the list of restricted things + * + * @return string|null + */ + public function get_value() + { + if ($this->value !== null) + { + return $this->value; + } + else + { + return null; + } + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php b/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php new file mode 100644 index 000000000..5a11721df --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Sanitize.php @@ -0,0 +1,591 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Used for data cleanup and post-processing + * + * + * This class can be overloaded with {@see SimplePie::set_sanitize_class()} + * + * @package SimplePie + * @todo Move to using an actual HTML parser (this will allow tags to be properly stripped, and to switch between HTML and XHTML), this will also make it easier to shorten a string while preserving HTML tags + */ +class SimplePie_Sanitize +{ + // Private vars + var $base; + + // Options + var $remove_div = true; + var $image_handler = ''; + var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'); + var $encode_instead_of_strip = false; + var $strip_attributes = array('bgsound', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'); + var $add_attributes = array('audio' => array('preload' => 'none'), 'iframe' => array('sandbox' => 'allow-scripts allow-same-origin'), 'video' => array('preload' => 'none')); + var $strip_comments = false; + var $output_encoding = 'UTF-8'; + var $enable_cache = true; + var $cache_location = './cache'; + var $cache_name_function = 'md5'; + var $timeout = 10; + var $useragent = ''; + var $force_fsockopen = false; + var $replace_url_attributes = null; + + public function __construct() + { + // Set defaults + $this->set_url_replacements(null); + } + + public function remove_div($enable = true) + { + $this->remove_div = (bool) $enable; + } + + public function set_image_handler($page = false) + { + if ($page) + { + $this->image_handler = (string) $page; + } + else + { + $this->image_handler = false; + } + } + + public function set_registry(SimplePie_Registry $registry) + { + $this->registry = $registry; + } + + public function pass_cache_data($enable_cache = true, $cache_location = './cache', $cache_name_function = 'md5', $cache_class = 'SimplePie_Cache') + { + if (isset($enable_cache)) + { + $this->enable_cache = (bool) $enable_cache; + } + + if ($cache_location) + { + $this->cache_location = (string) $cache_location; + } + + if ($cache_name_function) + { + $this->cache_name_function = (string) $cache_name_function; + } + } + + public function pass_file_data($file_class = 'SimplePie_File', $timeout = 10, $useragent = '', $force_fsockopen = false) + { + if ($timeout) + { + $this->timeout = (string) $timeout; + } + + if ($useragent) + { + $this->useragent = (string) $useragent; + } + + if ($force_fsockopen) + { + $this->force_fsockopen = (string) $force_fsockopen; + } + } + + public function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style')) + { + if ($tags) + { + if (is_array($tags)) + { + $this->strip_htmltags = $tags; + } + else + { + $this->strip_htmltags = explode(',', $tags); + } + } + else + { + $this->strip_htmltags = false; + } + } + + public function encode_instead_of_strip($encode = false) + { + $this->encode_instead_of_strip = (bool) $encode; + } + + public function strip_attributes($attribs = array('bgsound', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc')) + { + if ($attribs) + { + if (is_array($attribs)) + { + $this->strip_attributes = $attribs; + } + else + { + $this->strip_attributes = explode(',', $attribs); + } + } + else + { + $this->strip_attributes = false; + } + } + + public function add_attributes($attribs = array('audio' => array('preload' => 'none'), 'iframe' => array('sandbox' => 'allow-scripts allow-same-origin'), 'video' => array('preload' => 'none'))) + { + if ($attribs) + { + if (is_array($attribs)) + { + $this->add_attributes = $attribs; + } + else + { + $this->add_attributes = explode(',', $attribs); + } + } + else + { + $this->add_attributes = false; + } + } + + public function strip_comments($strip = false) + { + $this->strip_comments = (bool) $strip; + } + + public function set_output_encoding($encoding = 'UTF-8') + { + $this->output_encoding = (string) $encoding; + } + + /** + * Set element/attribute key/value pairs of HTML attributes + * containing URLs that need to be resolved relative to the feed + * + * Defaults to |a|@href, |area|@href, |blockquote|@cite, |del|@cite, + * |form|@action, |img|@longdesc, |img|@src, |input|@src, |ins|@cite, + * |q|@cite + * + * @since 1.0 + * @param array|null $element_attribute Element/attribute key/value pairs, null for default + */ + public function set_url_replacements($element_attribute = null) + { + if ($element_attribute === null) + { + $element_attribute = array( + 'a' => 'href', + 'area' => 'href', + 'blockquote' => 'cite', + 'del' => 'cite', + 'form' => 'action', + 'img' => array( + 'longdesc', + 'src' + ), + 'input' => 'src', + 'ins' => 'cite', + 'q' => 'cite' + ); + } + $this->replace_url_attributes = (array) $element_attribute; + } + + public function sanitize($data, $type, $base = '') + { + $data = trim($data); + if ($data !== '' || $type & SIMPLEPIE_CONSTRUCT_IRI) + { + if ($type & SIMPLEPIE_CONSTRUCT_MAYBE_HTML) + { + if (preg_match('/(&(#(x[0-9a-fA-F]+|[0-9]+)|[a-zA-Z0-9]+)|<\/[A-Za-z][^\x09\x0A\x0B\x0C\x0D\x20\x2F\x3E]*' . SIMPLEPIE_PCRE_HTML_ATTRIBUTE . '>)/', $data)) + { + $type |= SIMPLEPIE_CONSTRUCT_HTML; + } + else + { + $type |= SIMPLEPIE_CONSTRUCT_TEXT; + } + } + + if ($type & SIMPLEPIE_CONSTRUCT_BASE64) + { + $data = base64_decode($data); + } + + if ($type & (SIMPLEPIE_CONSTRUCT_HTML | SIMPLEPIE_CONSTRUCT_XHTML)) + { + + if (!class_exists('DOMDocument')) + { + throw new SimplePie_Exception('DOMDocument not found, unable to use sanitizer'); + } + $document = new DOMDocument(); + $document->encoding = 'UTF-8'; + + $data = $this->preprocess($data, $type); + + set_error_handler(array('SimplePie_Misc', 'silence_errors')); + $document->loadHTML($data); + restore_error_handler(); + + $xpath = new DOMXPath($document); + + // Strip comments + if ($this->strip_comments) + { + $comments = $xpath->query('//comment()'); + + foreach ($comments as $comment) + { + $comment->parentNode->removeChild($comment); + } + } + + // Strip out HTML tags and attributes that might cause various security problems. + // Based on recommendations by Mark Pilgrim at: + // http://diveintomark.org/archives/2003/06/12/how_to_consume_rss_safely + if ($this->strip_htmltags) + { + foreach ($this->strip_htmltags as $tag) + { + $this->strip_tag($tag, $document, $xpath, $type); + } + } + + if ($this->strip_attributes) + { + foreach ($this->strip_attributes as $attrib) + { + $this->strip_attr($attrib, $xpath); + } + } + + if ($this->add_attributes) + { + foreach ($this->add_attributes as $tag => $valuePairs) + { + $this->add_attr($tag, $valuePairs, $document); + } + } + + // Replace relative URLs + $this->base = $base; + foreach ($this->replace_url_attributes as $element => $attributes) + { + $this->replace_urls($document, $element, $attributes); + } + + // If image handling (caching, etc.) is enabled, cache and rewrite all the image tags. + if (isset($this->image_handler) && ((string) $this->image_handler) !== '' && $this->enable_cache) + { + $images = $document->getElementsByTagName('img'); + foreach ($images as $img) + { + if ($img->hasAttribute('src')) + { + $image_url = call_user_func($this->cache_name_function, $img->getAttribute('src')); + $cache = $this->registry->call('Cache', 'get_handler', array($this->cache_location, $image_url, 'spi')); + + if ($cache->load()) + { + $img->setAttribute('src', $this->image_handler . $image_url); + } + else + { + $file = $this->registry->create('File', array($img->getAttribute('src'), $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen)); + $headers = $file->headers; + + if ($file->success && ($file->method & SIMPLEPIE_FILE_SOURCE_REMOTE === 0 || ($file->status_code === 200 || $file->status_code > 206 && $file->status_code < 300))) + { + if ($cache->save(array('headers' => $file->headers, 'body' => $file->body))) + { + $img->setAttribute('src', $this->image_handler . $image_url); + } + else + { + trigger_error("$this->cache_location is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable.", E_USER_WARNING); + } + } + } + } + } + } + + // Get content node + $div = $document->getElementsByTagName('body')->item(0)->firstChild; + // Finally, convert to a HTML string + if (version_compare(PHP_VERSION, '5.3.6', '>=')) + { + $data = trim($document->saveHTML($div)); + } + else + { + $data = trim($document->saveXML($div)); + } + + if ($this->remove_div) + { + $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '', $data); + $data = preg_replace('/<\/div>$/', '', $data); + } + else + { + $data = preg_replace('/^<div' . SIMPLEPIE_PCRE_XML_ATTRIBUTE . '>/', '<div>', $data); + } + } + + if ($type & SIMPLEPIE_CONSTRUCT_IRI) + { + $absolute = $this->registry->call('Misc', 'absolutize_url', array($data, $base)); + if ($absolute !== false) + { + $data = $absolute; + } + } + + if ($type & (SIMPLEPIE_CONSTRUCT_TEXT | SIMPLEPIE_CONSTRUCT_IRI)) + { + $data = htmlspecialchars($data, ENT_COMPAT, 'UTF-8'); + } + + if ($this->output_encoding !== 'UTF-8') + { + $data = $this->registry->call('Misc', 'change_encoding', array($data, 'UTF-8', $this->output_encoding)); + } + } + return $data; + } + + protected function preprocess($html, $type) + { + $ret = ''; + $html = preg_replace('%</?(?:html|body)[^>]*?'.'>%is', '', $html); + if ($type & ~SIMPLEPIE_CONSTRUCT_XHTML) + { + // Atom XHTML constructs are wrapped with a div by default + // Note: No protection if $html contains a stray </div>! + $html = '<div>' . $html . '</div>'; + $ret .= '<!DOCTYPE html>'; + $content_type = 'text/html'; + } + else + { + $ret .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'; + $content_type = 'application/xhtml+xml'; + } + + $ret .= '<html><head>'; + $ret .= '<meta http-equiv="Content-Type" content="' . $content_type . '; charset=utf-8" />'; + $ret .= '</head><body>' . $html . '</body></html>'; + return $ret; + } + + public function replace_urls($document, $tag, $attributes) + { + if (!is_array($attributes)) + { + $attributes = array($attributes); + } + + if (!is_array($this->strip_htmltags) || !in_array($tag, $this->strip_htmltags)) + { + $elements = $document->getElementsByTagName($tag); + foreach ($elements as $element) + { + foreach ($attributes as $attribute) + { + if ($element->hasAttribute($attribute)) + { + $value = $this->registry->call('Misc', 'absolutize_url', array($element->getAttribute($attribute), $this->base)); + if ($value !== false) + { + $element->setAttribute($attribute, $value); + } + } + } + } + } + } + + public function do_strip_htmltags($match) + { + if ($this->encode_instead_of_strip) + { + if (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style'))) + { + $match[1] = htmlspecialchars($match[1], ENT_COMPAT, 'UTF-8'); + $match[2] = htmlspecialchars($match[2], ENT_COMPAT, 'UTF-8'); + return "<$match[1]$match[2]>$match[3]</$match[1]>"; + } + else + { + return htmlspecialchars($match[0], ENT_COMPAT, 'UTF-8'); + } + } + elseif (isset($match[4]) && !in_array(strtolower($match[1]), array('script', 'style'))) + { + return $match[4]; + } + else + { + return ''; + } + } + + protected function strip_tag($tag, $document, $xpath, $type) + { + $elements = $xpath->query('body//' . $tag); + if ($this->encode_instead_of_strip) + { + foreach ($elements as $element) + { + $fragment = $document->createDocumentFragment(); + + // For elements which aren't script or style, include the tag itself + if (!in_array($tag, array('script', 'style'))) + { + $text = '<' . $tag; + if ($element->hasAttributes()) + { + $attrs = array(); + foreach ($element->attributes as $name => $attr) + { + $value = $attr->value; + + // In XHTML, empty values should never exist, so we repeat the value + if (empty($value) && ($type & SIMPLEPIE_CONSTRUCT_XHTML)) + { + $value = $name; + } + // For HTML, empty is fine + elseif (empty($value) && ($type & SIMPLEPIE_CONSTRUCT_HTML)) + { + $attrs[] = $name; + continue; + } + + // Standard attribute text + $attrs[] = $name . '="' . $attr->value . '"'; + } + $text .= ' ' . implode(' ', $attrs); + } + $text .= '>'; + $fragment->appendChild(new DOMText($text)); + } + + $number = $element->childNodes->length; + for ($i = $number; $i > 0; $i--) + { + $child = $element->childNodes->item(0); + $fragment->appendChild($child); + } + + if (!in_array($tag, array('script', 'style'))) + { + $fragment->appendChild(new DOMText('</' . $tag . '>')); + } + + $element->parentNode->replaceChild($fragment, $element); + } + + return; + } + elseif (in_array($tag, array('script', 'style'))) + { + foreach ($elements as $element) + { + $element->parentNode->removeChild($element); + } + + return; + } + else + { + foreach ($elements as $element) + { + $fragment = $document->createDocumentFragment(); + $number = $element->childNodes->length; + for ($i = $number; $i > 0; $i--) + { + $child = $element->childNodes->item(0); + $fragment->appendChild($child); + } + + $element->parentNode->replaceChild($fragment, $element); + } + } + } + + protected function strip_attr($attrib, $xpath) + { + $elements = $xpath->query('//*[@' . $attrib . ']'); + + foreach ($elements as $element) + { + $element->removeAttribute($attrib); + } + } + + protected function add_attr($tag, $valuePairs, $document) + { + $elements = $document->getElementsByTagName($tag); + foreach ($elements as $element) + { + foreach ($valuePairs as $attrib => $value) + { + $element->setAttribute($attrib, $value); + } + } + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/Source.php b/vendor/simplepie/simplepie/library/SimplePie/Source.php new file mode 100644 index 000000000..1a66a392d --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/Source.php @@ -0,0 +1,610 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + +/** + * Handles `<atom:source>` + * + * Used by {@see SimplePie_Item::get_source()} + * + * This class can be overloaded with {@see SimplePie::set_source_class()} + * + * @package SimplePie + * @subpackage API + */ +class SimplePie_Source +{ + var $item; + var $data = array(); + protected $registry; + + public function __construct($item, $data) + { + $this->item = $item; + $this->data = $data; + } + + public function set_registry(SimplePie_Registry $registry) + { + $this->registry = $registry; + } + + public function __toString() + { + return md5(serialize($this->data)); + } + + public function get_source_tags($namespace, $tag) + { + if (isset($this->data['child'][$namespace][$tag])) + { + return $this->data['child'][$namespace][$tag]; + } + else + { + return null; + } + } + + public function get_base($element = array()) + { + return $this->item->get_base($element); + } + + public function sanitize($data, $type, $base = '') + { + return $this->item->sanitize($data, $type, $base); + } + + public function get_item() + { + return $this->item; + } + + public function get_title() + { + if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'title')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'title')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'title')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + return null; + } + } + + public function get_category($key = 0) + { + $categories = $this->get_categories(); + if (isset($categories[$key])) + { + return $categories[$key]; + } + else + { + return null; + } + } + + public function get_categories() + { + $categories = array(); + + foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'category') as $category) + { + $term = null; + $scheme = null; + $label = null; + if (isset($category['attribs']['']['term'])) + { + $term = $this->sanitize($category['attribs']['']['term'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($category['attribs']['']['scheme'])) + { + $scheme = $this->sanitize($category['attribs']['']['scheme'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($category['attribs']['']['label'])) + { + $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); + } + $categories[] = $this->registry->create('Category', array($term, $scheme, $label)); + } + foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'category') as $category) + { + // This is really the label, but keep this as the term also for BC. + // Label will also work on retrieving because that falls back to term. + $term = $this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT); + if (isset($category['attribs']['']['domain'])) + { + $scheme = $this->sanitize($category['attribs']['']['domain'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + $scheme = null; + } + $categories[] = $this->registry->create('Category', array($term, $scheme, null)); + } + foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category) + { + $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null)); + } + foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category) + { + $categories[] = $this->registry->create('Category', array($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null)); + } + + if (!empty($categories)) + { + return array_unique($categories); + } + else + { + return null; + } + } + + public function get_author($key = 0) + { + $authors = $this->get_authors(); + if (isset($authors[$key])) + { + return $authors[$key]; + } + else + { + return null; + } + } + + public function get_authors() + { + $authors = array(); + foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'author') as $author) + { + $name = null; + $uri = null; + $email = null; + if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) + { + $name = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) + { + $uri = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); + } + if (isset($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) + { + $email = $this->sanitize($author['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if ($name !== null || $email !== null || $uri !== null) + { + $authors[] = $this->registry->create('Author', array($name, $uri, $email)); + } + } + if ($author = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author')) + { + $name = null; + $url = null; + $email = null; + if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) + { + $name = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) + { + $url = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); + } + if (isset($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) + { + $email = $this->sanitize($author[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if ($name !== null || $email !== null || $url !== null) + { + $authors[] = $this->registry->create('Author', array($name, $url, $email)); + } + } + foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author) + { + $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null)); + } + foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author) + { + $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null)); + } + foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author) + { + $authors[] = $this->registry->create('Author', array($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null)); + } + + if (!empty($authors)) + { + return array_unique($authors); + } + else + { + return null; + } + } + + public function get_contributor($key = 0) + { + $contributors = $this->get_contributors(); + if (isset($contributors[$key])) + { + return $contributors[$key]; + } + else + { + return null; + } + } + + public function get_contributors() + { + $contributors = array(); + foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'contributor') as $contributor) + { + $name = null; + $uri = null; + $email = null; + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'])) + { + $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'])) + { + $uri = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['uri'][0])); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'])) + { + $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if ($name !== null || $email !== null || $uri !== null) + { + $contributors[] = $this->registry->create('Author', array($name, $uri, $email)); + } + } + foreach ((array) $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'contributor') as $contributor) + { + $name = null; + $url = null; + $email = null; + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'])) + { + $name = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['name'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'])) + { + $url = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['url'][0])); + } + if (isset($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'])) + { + $email = $this->sanitize($contributor['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['email'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + if ($name !== null || $email !== null || $url !== null) + { + $contributors[] = $this->registry->create('Author', array($name, $url, $email)); + } + } + + if (!empty($contributors)) + { + return array_unique($contributors); + } + else + { + return null; + } + } + + public function get_link($key = 0, $rel = 'alternate') + { + $links = $this->get_links($rel); + if (isset($links[$key])) + { + return $links[$key]; + } + else + { + return null; + } + } + + /** + * Added for parity between the parent-level and the item/entry-level. + */ + public function get_permalink() + { + return $this->get_link(0); + } + + public function get_links($rel = 'alternate') + { + if (!isset($this->data['links'])) + { + $this->data['links'] = array(); + if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'link')) + { + foreach ($links as $link) + { + if (isset($link['attribs']['']['href'])) + { + $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; + $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); + } + } + } + if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'link')) + { + foreach ($links as $link) + { + if (isset($link['attribs']['']['href'])) + { + $link_rel = (isset($link['attribs']['']['rel'])) ? $link['attribs']['']['rel'] : 'alternate'; + $this->data['links'][$link_rel][] = $this->sanitize($link['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($link)); + + } + } + } + if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'link')) + { + $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); + } + if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'link')) + { + $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); + } + if ($links = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'link')) + { + $this->data['links']['alternate'][] = $this->sanitize($links[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($links[0])); + } + + $keys = array_keys($this->data['links']); + foreach ($keys as $key) + { + if ($this->registry->call('Misc', 'is_isegment_nz_nc', array($key))) + { + if (isset($this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key])) + { + $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] = array_merge($this->data['links'][$key], $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]); + $this->data['links'][$key] =& $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key]; + } + else + { + $this->data['links'][SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY . $key] =& $this->data['links'][$key]; + } + } + elseif (substr($key, 0, 41) === SIMPLEPIE_IANA_LINK_RELATIONS_REGISTRY) + { + $this->data['links'][substr($key, 41)] =& $this->data['links'][$key]; + } + $this->data['links'][$key] = array_unique($this->data['links'][$key]); + } + } + + if (isset($this->data['links'][$rel])) + { + return $this->data['links'][$rel]; + } + else + { + return null; + } + } + + public function get_description() + { + if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'subtitle')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'tagline')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'description')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'description')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'description')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_MAYBE_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'description')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'description')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'summary')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'subtitle')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_HTML, $this->get_base($return[0])); + } + else + { + return null; + } + } + + public function get_copyright() + { + if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'rights')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_10_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'copyright')) + { + return $this->sanitize($return[0]['data'], $this->registry->call('Misc', 'atom_03_construct_type', array($return[0]['attribs'])), $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'copyright')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'rights')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'rights')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + return null; + } + } + + public function get_language() + { + if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_RSS_20, 'language')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_11, 'language')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_DC_10, 'language')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); + } + elseif (isset($this->data['xml_lang'])) + { + return $this->sanitize($this->data['xml_lang'], SIMPLEPIE_CONSTRUCT_TEXT); + } + else + { + return null; + } + } + + public function get_latitude() + { + if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lat')) + { + return (float) $return[0]['data']; + } + elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) + { + return (float) $match[1]; + } + else + { + return null; + } + } + + public function get_longitude() + { + if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'long')) + { + return (float) $return[0]['data']; + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_W3C_BASIC_GEO, 'lon')) + { + return (float) $return[0]['data']; + } + elseif (($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_GEORSS, 'point')) && preg_match('/^((?:-)?[0-9]+(?:\.[0-9]+)) ((?:-)?[0-9]+(?:\.[0-9]+))$/', trim($return[0]['data']), $match)) + { + return (float) $match[2]; + } + else + { + return null; + } + } + + public function get_image_url() + { + if ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'image')) + { + return $this->sanitize($return[0]['attribs']['']['href'], SIMPLEPIE_CONSTRUCT_IRI); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'logo')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); + } + elseif ($return = $this->get_source_tags(SIMPLEPIE_NAMESPACE_ATOM_10, 'icon')) + { + return $this->sanitize($return[0]['data'], SIMPLEPIE_CONSTRUCT_IRI, $this->get_base($return[0])); + } + else + { + return null; + } + } +} + diff --git a/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php b/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php new file mode 100644 index 000000000..99e751672 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/XML/Declaration/Parser.php @@ -0,0 +1,361 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + + +/** + * Parses the XML Declaration + * + * @package SimplePie + * @subpackage Parsing + */ +class SimplePie_XML_Declaration_Parser +{ + /** + * XML Version + * + * @access public + * @var string + */ + var $version = '1.0'; + + /** + * Encoding + * + * @access public + * @var string + */ + var $encoding = 'UTF-8'; + + /** + * Standalone + * + * @access public + * @var bool + */ + var $standalone = false; + + /** + * Current state of the state machine + * + * @access private + * @var string + */ + var $state = 'before_version_name'; + + /** + * Input data + * + * @access private + * @var string + */ + var $data = ''; + + /** + * Input data length (to avoid calling strlen() everytime this is needed) + * + * @access private + * @var int + */ + var $data_length = 0; + + /** + * Current position of the pointer + * + * @var int + * @access private + */ + var $position = 0; + + /** + * Create an instance of the class with the input data + * + * @access public + * @param string $data Input data + */ + public function __construct($data) + { + $this->data = $data; + $this->data_length = strlen($this->data); + } + + /** + * Parse the input data + * + * @access public + * @return bool true on success, false on failure + */ + public function parse() + { + while ($this->state && $this->state !== 'emit' && $this->has_data()) + { + $state = $this->state; + $this->$state(); + } + $this->data = ''; + if ($this->state === 'emit') + { + return true; + } + else + { + $this->version = ''; + $this->encoding = ''; + $this->standalone = ''; + return false; + } + } + + /** + * Check whether there is data beyond the pointer + * + * @access private + * @return bool true if there is further data, false if not + */ + public function has_data() + { + return (bool) ($this->position < $this->data_length); + } + + /** + * Advance past any whitespace + * + * @return int Number of whitespace characters passed + */ + public function skip_whitespace() + { + $whitespace = strspn($this->data, "\x09\x0A\x0D\x20", $this->position); + $this->position += $whitespace; + return $whitespace; + } + + /** + * Read value + */ + public function get_value() + { + $quote = substr($this->data, $this->position, 1); + if ($quote === '"' || $quote === "'") + { + $this->position++; + $len = strcspn($this->data, $quote, $this->position); + if ($this->has_data()) + { + $value = substr($this->data, $this->position, $len); + $this->position += $len + 1; + return $value; + } + } + return false; + } + + public function before_version_name() + { + if ($this->skip_whitespace()) + { + $this->state = 'version_name'; + } + else + { + $this->state = false; + } + } + + public function version_name() + { + if (substr($this->data, $this->position, 7) === 'version') + { + $this->position += 7; + $this->skip_whitespace(); + $this->state = 'version_equals'; + } + else + { + $this->state = false; + } + } + + public function version_equals() + { + if (substr($this->data, $this->position, 1) === '=') + { + $this->position++; + $this->skip_whitespace(); + $this->state = 'version_value'; + } + else + { + $this->state = false; + } + } + + public function version_value() + { + if ($this->version = $this->get_value()) + { + $this->skip_whitespace(); + if ($this->has_data()) + { + $this->state = 'encoding_name'; + } + else + { + $this->state = 'emit'; + } + } + else + { + $this->state = false; + } + } + + public function encoding_name() + { + if (substr($this->data, $this->position, 8) === 'encoding') + { + $this->position += 8; + $this->skip_whitespace(); + $this->state = 'encoding_equals'; + } + else + { + $this->state = 'standalone_name'; + } + } + + public function encoding_equals() + { + if (substr($this->data, $this->position, 1) === '=') + { + $this->position++; + $this->skip_whitespace(); + $this->state = 'encoding_value'; + } + else + { + $this->state = false; + } + } + + public function encoding_value() + { + if ($this->encoding = $this->get_value()) + { + $this->skip_whitespace(); + if ($this->has_data()) + { + $this->state = 'standalone_name'; + } + else + { + $this->state = 'emit'; + } + } + else + { + $this->state = false; + } + } + + public function standalone_name() + { + if (substr($this->data, $this->position, 10) === 'standalone') + { + $this->position += 10; + $this->skip_whitespace(); + $this->state = 'standalone_equals'; + } + else + { + $this->state = false; + } + } + + public function standalone_equals() + { + if (substr($this->data, $this->position, 1) === '=') + { + $this->position++; + $this->skip_whitespace(); + $this->state = 'standalone_value'; + } + else + { + $this->state = false; + } + } + + public function standalone_value() + { + if ($standalone = $this->get_value()) + { + switch ($standalone) + { + case 'yes': + $this->standalone = true; + break; + + case 'no': + $this->standalone = false; + break; + + default: + $this->state = false; + return; + } + + $this->skip_whitespace(); + if ($this->has_data()) + { + $this->state = false; + } + else + { + $this->state = 'emit'; + } + } + else + { + $this->state = false; + } + } +} diff --git a/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php b/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php new file mode 100644 index 000000000..0e8bc8fc6 --- /dev/null +++ b/vendor/simplepie/simplepie/library/SimplePie/gzdecode.php @@ -0,0 +1,370 @@ +<?php +/** + * SimplePie + * + * A PHP-Based RSS and Atom Feed Framework. + * Takes the hard work out of managing a complete RSS/Atom solution. + * + * Copyright (c) 2004-2016, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * * Neither the name of the SimplePie Team nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * @package SimplePie + * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue + * @author Ryan Parman + * @author Geoffrey Sneddon + * @author Ryan McCue + * @link http://simplepie.org/ SimplePie + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + */ + + +/** + * Decode 'gzip' encoded HTTP data + * + * @package SimplePie + * @subpackage HTTP + * @link http://www.gzip.org/format.txt + */ +class SimplePie_gzdecode +{ + /** + * Compressed data + * + * @access private + * @var string + * @see gzdecode::$data + */ + var $compressed_data; + + /** + * Size of compressed data + * + * @access private + * @var int + */ + var $compressed_size; + + /** + * Minimum size of a valid gzip string + * + * @access private + * @var int + */ + var $min_compressed_size = 18; + + /** + * Current position of pointer + * + * @access private + * @var int + */ + var $position = 0; + + /** + * Flags (FLG) + * + * @access private + * @var int + */ + var $flags; + + /** + * Uncompressed data + * + * @access public + * @see gzdecode::$compressed_data + * @var string + */ + var $data; + + /** + * Modified time + * + * @access public + * @var int + */ + var $MTIME; + + /** + * Extra Flags + * + * @access public + * @var int + */ + var $XFL; + + /** + * Operating System + * + * @access public + * @var int + */ + var $OS; + + /** + * Subfield ID 1 + * + * @access public + * @see gzdecode::$extra_field + * @see gzdecode::$SI2 + * @var string + */ + var $SI1; + + /** + * Subfield ID 2 + * + * @access public + * @see gzdecode::$extra_field + * @see gzdecode::$SI1 + * @var string + */ + var $SI2; + + /** + * Extra field content + * + * @access public + * @see gzdecode::$SI1 + * @see gzdecode::$SI2 + * @var string + */ + var $extra_field; + + /** + * Original filename + * + * @access public + * @var string + */ + var $filename; + + /** + * Human readable comment + * + * @access public + * @var string + */ + var $comment; + + /** + * Don't allow anything to be set + * + * @param string $name + * @param mixed $value + */ + public function __set($name, $value) + { + trigger_error("Cannot write property $name", E_USER_ERROR); + } + + /** + * Set the compressed string and related properties + * + * @param string $data + */ + public function __construct($data) + { + $this->compressed_data = $data; + $this->compressed_size = strlen($data); + } + + /** + * Decode the GZIP stream + * + * @return bool Successfulness + */ + public function parse() + { + if ($this->compressed_size >= $this->min_compressed_size) + { + // Check ID1, ID2, and CM + if (substr($this->compressed_data, 0, 3) !== "\x1F\x8B\x08") + { + return false; + } + + // Get the FLG (FLaGs) + $this->flags = ord($this->compressed_data[3]); + + // FLG bits above (1 << 4) are reserved + if ($this->flags > 0x1F) + { + return false; + } + + // Advance the pointer after the above + $this->position += 4; + + // MTIME + $mtime = substr($this->compressed_data, $this->position, 4); + // Reverse the string if we're on a big-endian arch because l is the only signed long and is machine endianness + if (current(unpack('S', "\x00\x01")) === 1) + { + $mtime = strrev($mtime); + } + $this->MTIME = current(unpack('l', $mtime)); + $this->position += 4; + + // Get the XFL (eXtra FLags) + $this->XFL = ord($this->compressed_data[$this->position++]); + + // Get the OS (Operating System) + $this->OS = ord($this->compressed_data[$this->position++]); + + // Parse the FEXTRA + if ($this->flags & 4) + { + // Read subfield IDs + $this->SI1 = $this->compressed_data[$this->position++]; + $this->SI2 = $this->compressed_data[$this->position++]; + + // SI2 set to zero is reserved for future use + if ($this->SI2 === "\x00") + { + return false; + } + + // Get the length of the extra field + $len = current(unpack('v', substr($this->compressed_data, $this->position, 2))); + $this->position += 2; + + // Check the length of the string is still valid + $this->min_compressed_size += $len + 4; + if ($this->compressed_size >= $this->min_compressed_size) + { + // Set the extra field to the given data + $this->extra_field = substr($this->compressed_data, $this->position, $len); + $this->position += $len; + } + else + { + return false; + } + } + + // Parse the FNAME + if ($this->flags & 8) + { + // Get the length of the filename + $len = strcspn($this->compressed_data, "\x00", $this->position); + + // Check the length of the string is still valid + $this->min_compressed_size += $len + 1; + if ($this->compressed_size >= $this->min_compressed_size) + { + // Set the original filename to the given string + $this->filename = substr($this->compressed_data, $this->position, $len); + $this->position += $len + 1; + } + else + { + return false; + } + } + + // Parse the FCOMMENT + if ($this->flags & 16) + { + // Get the length of the comment + $len = strcspn($this->compressed_data, "\x00", $this->position); + + // Check the length of the string is still valid + $this->min_compressed_size += $len + 1; + if ($this->compressed_size >= $this->min_compressed_size) + { + // Set the original comment to the given string + $this->comment = substr($this->compressed_data, $this->position, $len); + $this->position += $len + 1; + } + else + { + return false; + } + } + + // Parse the FHCRC + if ($this->flags & 2) + { + // Check the length of the string is still valid + $this->min_compressed_size += $len + 2; + if ($this->compressed_size >= $this->min_compressed_size) + { + // Read the CRC + $crc = current(unpack('v', substr($this->compressed_data, $this->position, 2))); + + // Check the CRC matches + if ((crc32(substr($this->compressed_data, 0, $this->position)) & 0xFFFF) === $crc) + { + $this->position += 2; + } + else + { + return false; + } + } + else + { + return false; + } + } + + // Decompress the actual data + if (($this->data = gzinflate(substr($this->compressed_data, $this->position, -8))) === false) + { + return false; + } + else + { + $this->position = $this->compressed_size - 8; + } + + // Check CRC of data + $crc = current(unpack('V', substr($this->compressed_data, $this->position, 4))); + $this->position += 4; + /*if (extension_loaded('hash') && sprintf('%u', current(unpack('V', hash('crc32b', $this->data)))) !== sprintf('%u', $crc)) + { + return false; + }*/ + + // Check ISIZE of data + $isize = current(unpack('V', substr($this->compressed_data, $this->position, 4))); + $this->position += 4; + if (sprintf('%u', strlen($this->data) & 0xFFFFFFFF) !== sprintf('%u', $isize)) + { + return false; + } + + // Wow, against all odds, we've actually got a valid gzip string + return true; + } + else + { + return false; + } + } +} diff --git a/view/css/bootstrap-red.css b/view/css/bootstrap-red.css index 92b4bce48..a824b018c 100644 --- a/view/css/bootstrap-red.css +++ b/view/css/bootstrap-red.css @@ -15,6 +15,10 @@ nav .badge { } @media screen and (max-width: 767px) { + .navbar { + padding: .5rem 7px; + } + nav .badge { top: 0.5rem; left: 1.5rem; @@ -42,10 +46,6 @@ nav .dropdown-menu { overflow: auto; } -nav.navbar { - max-height: 100vh; -} - #navbar-collapse-2 { flex-basis: 100%; max-height: 70vh; diff --git a/view/es-es/hmessages.po b/view/es-es/hmessages.po index 9aef29eb0..c0d5e0870 100644 --- a/view/es-es/hmessages.po +++ b/view/es-es/hmessages.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: Redmatrix\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-03-03 00:05-0800\n" -"PO-Revision-Date: 2017-03-04 10:57+0000\n" +"POT-Creation-Date: 2017-03-31 10:53+0200\n" +"PO-Revision-Date: 2017-04-10 10:38+0000\n" "Last-Translator: Manuel Jiménez Friaza <mjfriaza@openmailbox.org>\n" "Language-Team: Spanish (Spain) (http://www.transifex.com/Friendica/red-matrix/language/es_ES/)\n" "MIME-Version: 1.0\n" @@ -23,6 +23,78 @@ msgstr "" "Language: es_ES\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ../../Zotlabs/Access/Permissions.php:46 +msgid "Can view my channel stream and posts" +msgstr "Pueden verse la actividad y publicaciones de mi canal" + +#: ../../Zotlabs/Access/Permissions.php:47 ../../include/permissions.php:42 +msgid "Can send me their channel stream and posts" +msgstr "Se me pueden enviar entradas y contenido de un canal" + +#: ../../Zotlabs/Access/Permissions.php:48 ../../include/permissions.php:36 +msgid "Can view my default channel profile" +msgstr "Puede verse mi perfil de canal predeterminado." + +#: ../../Zotlabs/Access/Permissions.php:49 ../../include/permissions.php:37 +msgid "Can view my connections" +msgstr "Pueden verse mis conexiones" + +#: ../../Zotlabs/Access/Permissions.php:50 ../../include/permissions.php:38 +msgid "Can view my file storage and photos" +msgstr "Pueden verse mi repositorio de ficheros y mis fotos" + +#: ../../Zotlabs/Access/Permissions.php:51 +msgid "Can upload/modify my file storage and photos" +msgstr "Se pueden subir / modificar elementos en mi repositorio de ficheros y fotos" + +#: ../../Zotlabs/Access/Permissions.php:52 +msgid "Can view my channel webpages" +msgstr "Pueden verse las páginas personales de mi canal" + +#: ../../Zotlabs/Access/Permissions.php:53 +msgid "Can view my wiki pages" +msgstr "Pueden verse mis páginas wiki" + +#: ../../Zotlabs/Access/Permissions.php:54 +msgid "Can create/edit my channel webpages" +msgstr "Pueden crearse / modificarse páginas personales en mi canal" + +#: ../../Zotlabs/Access/Permissions.php:55 +msgid "Can write to my wiki pages" +msgstr "Se pueden modificar las páginas de mi wiki" + +#: ../../Zotlabs/Access/Permissions.php:56 +msgid "Can post on my channel (wall) page" +msgstr "Pueden crearse entradas en mi página de inicio del canal (“muro”)" + +#: ../../Zotlabs/Access/Permissions.php:57 ../../include/permissions.php:44 +msgid "Can comment on or like my posts" +msgstr "Pueden publicarse comentarios en mis publicaciones o marcar mis entradas con 'me gusta'." + +#: ../../Zotlabs/Access/Permissions.php:58 ../../include/permissions.php:45 +msgid "Can send me private mail messages" +msgstr "Se me pueden enviar mensajes privados" + +#: ../../Zotlabs/Access/Permissions.php:59 +msgid "Can like/dislike profiles and profile things" +msgstr "Se puede mostrar agrado o desagrado (Me gusta / No me gusta) en mis perfiles y sus distintos apartados" + +#: ../../Zotlabs/Access/Permissions.php:60 +msgid "Can forward to all my channel connections via @+ mentions in posts" +msgstr "Pueden reenviarse publicaciones a todas las conexiones de mi canal a través de @+ menciones en las entradas" + +#: ../../Zotlabs/Access/Permissions.php:61 +msgid "Can chat with me" +msgstr "Se puede chatear conmigo" + +#: ../../Zotlabs/Access/Permissions.php:62 ../../include/permissions.php:53 +msgid "Can source my public posts in derived channels" +msgstr "Pueden utilizarse mis entradas públicas como origen de contenidos en canales derivados" + +#: ../../Zotlabs/Access/Permissions.php:63 +msgid "Can administer my channel" +msgstr "Se puede administrar mi canal" + #: ../../Zotlabs/Access/PermissionRoles.php:248 #: ../../include/permissions.php:945 msgid "Social Networking" @@ -94,16 +166,15 @@ msgid "Special - Group Repository" msgstr "Especial - Repositorio de grupo" #: ../../Zotlabs/Access/PermissionRoles.php:270 -#: ../../Zotlabs/Module/Register.php:213 ../../Zotlabs/Module/Connedit.php:925 #: ../../Zotlabs/Module/New_channel.php:132 -#: ../../Zotlabs/Module/Profiles.php:798 #: ../../Zotlabs/Module/Settings/Channel.php:463 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1148 -#: ../../extend/addon/addon/cdav/cdav.php:277 -#: ../../extend/addon/addon/cdav/cdav.php:284 ../../include/selectors.php:49 -#: ../../include/selectors.php:66 ../../include/selectors.php:104 -#: ../../include/selectors.php:140 ../../include/connections.php:675 -#: ../../include/connections.php:682 ../../include/permissions.php:949 +#: ../../Zotlabs/Module/Connedit.php:922 ../../Zotlabs/Module/Profiles.php:798 +#: ../../Zotlabs/Module/Register.php:213 ../../addon/cdav/Mod_Cdav.php:1148 +#: ../../addon/cdav/cdav.php:277 ../../addon/cdav/cdav.php:284 +#: ../../include/selectors.php:49 ../../include/selectors.php:66 +#: ../../include/selectors.php:104 ../../include/selectors.php:140 +#: ../../include/permissions.php:949 ../../include/connections.php:675 +#: ../../include/connections.php:682 msgid "Other" msgstr "Otro" @@ -112,374 +183,950 @@ msgstr "Otro" msgid "Custom/Expert Mode" msgstr "Modo personalizado/experto" -#: ../../Zotlabs/Access/Permissions.php:46 -msgid "Can view my channel stream and posts" -msgstr "Pueden verse la actividad y publicaciones de mi canal" +#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Editlayout.php:31 +#: ../../Zotlabs/Module/Connect.php:17 +#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12 +#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20 +#: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Editwebpage.php:32 +#: ../../Zotlabs/Module/Webpages.php:33 +#: ../../Zotlabs/Module/Filestorage.php:59 ../../include/channel.php:943 +msgid "Requested profile is not available." +msgstr "El perfil solicitado no está disponible." -#: ../../Zotlabs/Access/Permissions.php:47 ../../include/permissions.php:42 -msgid "Can send me their channel stream and posts" -msgstr "Se me pueden enviar entradas y contenido de un canal" +#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80 +#: ../../Zotlabs/Module/Invite.php:17 ../../Zotlabs/Module/Invite.php:94 +#: ../../Zotlabs/Module/Editlayout.php:67 +#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:115 +#: ../../Zotlabs/Module/Channel.php:245 ../../Zotlabs/Module/Channel.php:285 +#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Locs.php:87 +#: ../../Zotlabs/Module/Mitem.php:115 ../../Zotlabs/Module/Events.php:271 +#: ../../Zotlabs/Module/Appman.php:82 ../../Zotlabs/Module/Regmod.php:21 +#: ../../Zotlabs/Module/New_channel.php:77 +#: ../../Zotlabs/Module/New_channel.php:104 +#: ../../Zotlabs/Module/Sharedwithme.php:11 ../../Zotlabs/Module/Setup.php:212 +#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Thing.php:274 +#: ../../Zotlabs/Module/Thing.php:294 ../../Zotlabs/Module/Thing.php:335 +#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Editblock.php:67 +#: ../../Zotlabs/Module/Profile.php:83 ../../Zotlabs/Module/Profile.php:100 +#: ../../Zotlabs/Module/Mood.php:116 ../../Zotlabs/Module/Connections.php:29 +#: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Bookmarks.php:61 +#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:50 +#: ../../Zotlabs/Module/Wiki.php:216 ../../Zotlabs/Module/Wiki.php:315 +#: ../../Zotlabs/Module/Pdledit.php:29 ../../Zotlabs/Module/Poke.php:137 +#: ../../Zotlabs/Module/Profile_photo.php:280 +#: ../../Zotlabs/Module/Profile_photo.php:293 +#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:220 +#: ../../Zotlabs/Module/Item.php:230 ../../Zotlabs/Module/Item.php:1037 +#: ../../Zotlabs/Module/Page.php:35 ../../Zotlabs/Module/Page.php:91 +#: ../../Zotlabs/Module/Connedit.php:385 ../../Zotlabs/Module/Chat.php:98 +#: ../../Zotlabs/Module/Chat.php:103 ../../Zotlabs/Module/Menu.php:78 +#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78 +#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Group.php:13 +#: ../../Zotlabs/Module/Profiles.php:198 ../../Zotlabs/Module/Profiles.php:635 +#: ../../Zotlabs/Module/Editwebpage.php:68 +#: ../../Zotlabs/Module/Editwebpage.php:89 +#: ../../Zotlabs/Module/Editwebpage.php:104 +#: ../../Zotlabs/Module/Editwebpage.php:126 ../../Zotlabs/Module/Manage.php:10 +#: ../../Zotlabs/Module/Webpages.php:116 ../../Zotlabs/Module/Block.php:26 +#: ../../Zotlabs/Module/Block.php:76 ../../Zotlabs/Module/Editpost.php:17 +#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Like.php:181 +#: ../../Zotlabs/Module/Suggest.php:28 ../../Zotlabs/Module/Message.php:18 +#: ../../Zotlabs/Module/Mail.php:164 ../../Zotlabs/Module/Register.php:77 +#: ../../Zotlabs/Module/Cover_photo.php:281 +#: ../../Zotlabs/Module/Cover_photo.php:294 +#: ../../Zotlabs/Module/Network.php:15 ../../Zotlabs/Module/Filestorage.php:23 +#: ../../Zotlabs/Module/Filestorage.php:78 +#: ../../Zotlabs/Module/Filestorage.php:93 +#: ../../Zotlabs/Module/Filestorage.php:120 ../../Zotlabs/Module/Common.php:39 +#: ../../Zotlabs/Module/Viewconnections.php:28 +#: ../../Zotlabs/Module/Viewconnections.php:33 +#: ../../Zotlabs/Module/Service_limits.php:11 +#: ../../Zotlabs/Module/Rate.php:113 ../../Zotlabs/Module/Notifications.php:11 +#: ../../Zotlabs/Lib/Chatroom.php:137 ../../Zotlabs/Web/WebServer.php:131 +#: ../../addon/keepout/keepout.php:36 ../../addon/openid/Mod_Id.php:53 +#: ../../addon/gitwiki/Mod_Gitwiki.php:196 +#: ../../addon/gitwiki/Mod_Gitwiki.php:292 +#: ../../addon/diaspora_reconnect/diaspora_reconnect.php:58 +#: ../../addon/pumpio/pumpio.php:40 ../../include/attach.php:144 +#: ../../include/attach.php:191 ../../include/attach.php:255 +#: ../../include/attach.php:269 ../../include/attach.php:276 +#: ../../include/attach.php:344 ../../include/attach.php:358 +#: ../../include/attach.php:365 ../../include/attach.php:442 +#: ../../include/attach.php:909 ../../include/attach.php:983 +#: ../../include/attach.php:1148 ../../include/items.php:3457 +#: ../../include/photos.php:27 +msgid "Permission denied." +msgstr "Acceso denegado." -#: ../../Zotlabs/Access/Permissions.php:48 ../../include/permissions.php:36 -msgid "Can view my default channel profile" -msgstr "Puede verse mi perfil de canal predeterminado." +#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:155 +#: ../../Zotlabs/Module/Editblock.php:113 +msgid "Block Name" +msgstr "Nombre del bloque" -#: ../../Zotlabs/Access/Permissions.php:49 ../../include/permissions.php:37 -msgid "Can view my connections" -msgstr "Pueden verse mis conexiones" +#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2275 +msgid "Blocks" +msgstr "Bloques" -#: ../../Zotlabs/Access/Permissions.php:50 ../../include/permissions.php:38 -msgid "Can view my file storage and photos" -msgstr "Pueden verse mi repositorio de ficheros y mis fotos" +#: ../../Zotlabs/Module/Blocks.php:156 +msgid "Block Title" +msgstr "Título del bloque" -#: ../../Zotlabs/Access/Permissions.php:51 -msgid "Can upload/modify my file storage and photos" -msgstr "Se pueden subir / modificar elementos en mi repositorio de ficheros y fotos" +#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Menu.php:114 +#: ../../Zotlabs/Module/Layouts.php:191 ../../Zotlabs/Module/Webpages.php:256 +#: ../../include/page_widgets.php:47 +msgid "Created" +msgstr "Creado" -#: ../../Zotlabs/Access/Permissions.php:52 -msgid "Can view my channel webpages" -msgstr "Pueden verse las páginas personales de mi canal" +#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Menu.php:115 +#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Webpages.php:257 +#: ../../include/page_widgets.php:48 +msgid "Edited" +msgstr "Editado" -#: ../../Zotlabs/Access/Permissions.php:53 -msgid "Can view my wiki pages" -msgstr "Pueden verse mis páginas wiki" +#: ../../Zotlabs/Module/Blocks.php:159 +#: ../../Zotlabs/Module/New_channel.php:147 +#: ../../Zotlabs/Module/Connedit.php:925 ../../Zotlabs/Module/Menu.php:118 +#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:801 +#: ../../Zotlabs/Module/Webpages.php:244 ../../Zotlabs/Storage/Browser.php:228 +#: ../../Zotlabs/Storage/Browser.php:332 ../../addon/cdav/Mod_Cdav.php:1151 +#: ../../addon/cdav/include/widgets.php:127 +#: ../../addon/cdav/include/widgets.php:164 +msgid "Create" +msgstr "Crear" -#: ../../Zotlabs/Access/Permissions.php:54 -msgid "Can create/edit my channel webpages" -msgstr "Pueden crearse / modificarse páginas personales en mi canal" +#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Editlayout.php:114 +#: ../../Zotlabs/Module/Admin/Profs.php:154 +#: ../../Zotlabs/Module/Settings/Oauth.php:149 +#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Editblock.php:114 +#: ../../Zotlabs/Module/Connections.php:296 +#: ../../Zotlabs/Module/Connections.php:316 ../../Zotlabs/Module/Wiki.php:165 +#: ../../Zotlabs/Module/Wiki.php:275 ../../Zotlabs/Module/Menu.php:112 +#: ../../Zotlabs/Module/Layouts.php:193 +#: ../../Zotlabs/Module/Editwebpage.php:147 +#: ../../Zotlabs/Module/Webpages.php:245 ../../Zotlabs/Module/Editpost.php:85 +#: ../../Zotlabs/Lib/Apps.php:357 ../../Zotlabs/Lib/ThreadItem.php:107 +#: ../../Zotlabs/Storage/Browser.php:238 +#: ../../addon/cdav/include/widgets.php:125 +#: ../../addon/cdav/include/widgets.php:161 +#: ../../addon/gitwiki/Mod_Gitwiki.php:151 +#: ../../addon/gitwiki/Mod_Gitwiki.php:252 ../../include/channel.php:1042 +#: ../../include/channel.php:1046 ../../include/menu.php:113 +#: ../../include/page_widgets.php:9 ../../include/page_widgets.php:39 +msgid "Edit" +msgstr "Editar" -#: ../../Zotlabs/Access/Permissions.php:55 -msgid "Can write to my wiki pages" -msgstr "Se pueden modificar las páginas de mi wiki" +#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1042 +#: ../../Zotlabs/Module/Layouts.php:194 ../../Zotlabs/Module/Webpages.php:246 +#: ../../addon/cdav/include/widgets.php:123 +#: ../../include/conversation.php:1311 +msgid "Share" +msgstr "Compartir" -#: ../../Zotlabs/Access/Permissions.php:56 -msgid "Can post on my channel (wall) page" -msgstr "Pueden crearse entradas en mi página de inicio del canal (“muro”)" +#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Module/Editlayout.php:138 +#: ../../Zotlabs/Module/Admin/Accounts.php:173 +#: ../../Zotlabs/Module/Admin/Channels.php:149 +#: ../../Zotlabs/Module/Admin/Profs.php:155 +#: ../../Zotlabs/Module/Settings/Oauth.php:150 +#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Module/Editblock.php:139 +#: ../../Zotlabs/Module/Connections.php:267 +#: ../../Zotlabs/Module/Photos.php:1143 ../../Zotlabs/Module/Connedit.php:658 +#: ../../Zotlabs/Module/Connedit.php:927 ../../Zotlabs/Module/Group.php:177 +#: ../../Zotlabs/Module/Profiles.php:803 +#: ../../Zotlabs/Module/Editwebpage.php:172 +#: ../../Zotlabs/Module/Webpages.php:247 ../../Zotlabs/Lib/Apps.php:358 +#: ../../Zotlabs/Lib/ThreadItem.php:127 ../../Zotlabs/Storage/Browser.php:239 +#: ../../addon/cdav/Mod_Cdav.php:864 ../../addon/cdav/Mod_Cdav.php:1153 +#: ../../include/conversation.php:654 +msgid "Delete" +msgstr "Eliminar" -#: ../../Zotlabs/Access/Permissions.php:57 ../../include/permissions.php:44 -msgid "Can comment on or like my posts" -msgstr "Pueden publicarse comentarios en mis publicaciones o marcar mis entradas con 'me gusta'." +#: ../../Zotlabs/Module/Blocks.php:166 ../../Zotlabs/Module/Events.php:694 +#: ../../Zotlabs/Module/Wiki.php:167 ../../Zotlabs/Module/Layouts.php:198 +#: ../../Zotlabs/Module/Webpages.php:251 ../../Zotlabs/Module/Pubsites.php:59 +#: ../../addon/gitwiki/Mod_Gitwiki.php:153 ../../include/page_widgets.php:42 +msgid "View" +msgstr "Ver" -#: ../../Zotlabs/Access/Permissions.php:58 ../../include/permissions.php:45 -msgid "Can send me private mail messages" -msgstr "Se me pueden enviar mensajes privados" +#: ../../Zotlabs/Module/Invite.php:29 +msgid "Total invitation limit exceeded." +msgstr "Se ha superado el límite máximo de invitaciones." -#: ../../Zotlabs/Access/Permissions.php:59 -msgid "Can like/dislike profiles and profile things" -msgstr "Se puede mostrar agrado o desagrado (Me gusta / No me gusta) en mis perfiles y sus distintos apartados" +#: ../../Zotlabs/Module/Invite.php:53 +#, php-format +msgid "%s : Not a valid email address." +msgstr "%s : No es una dirección de correo electrónico válida. " -#: ../../Zotlabs/Access/Permissions.php:60 -msgid "Can forward to all my channel connections via @+ mentions in posts" -msgstr "Pueden reenviarse publicaciones a todas las conexiones de mi canal a través de @+ menciones en las entradas" +#: ../../Zotlabs/Module/Invite.php:67 +msgid "Please join us on $Projectname" +msgstr "Únase a nosotros en $Projectname" -#: ../../Zotlabs/Access/Permissions.php:61 -msgid "Can chat with me" -msgstr "Se puede chatear conmigo" +#: ../../Zotlabs/Module/Invite.php:77 +msgid "Invitation limit exceeded. Please contact your site administrator." +msgstr "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio." -#: ../../Zotlabs/Access/Permissions.php:62 ../../include/permissions.php:53 -msgid "Can source my public posts in derived channels" -msgstr "Pueden utilizarse mis entradas públicas como origen de contenidos en canales derivados" +#: ../../Zotlabs/Module/Invite.php:82 +#, php-format +msgid "%s : Message delivery failed." +msgstr "%s : Falló el envío del mensaje." -#: ../../Zotlabs/Access/Permissions.php:63 -msgid "Can administer my channel" -msgstr "Se puede administrar mi canal" +#: ../../Zotlabs/Module/Invite.php:86 +#, php-format +msgid "%d message sent." +msgid_plural "%d messages sent." +msgstr[0] "%d mensajes enviados." +msgstr[1] "%d mensajes enviados." -#: ../../Zotlabs/Storage/Browser.php:106 ../../Zotlabs/Storage/Browser.php:237 -msgid "parent" -msgstr "padre" +#: ../../Zotlabs/Module/Invite.php:105 +msgid "You have no more invitations available" +msgstr "No tiene más invitaciones disponibles" -#: ../../Zotlabs/Storage/Browser.php:130 ../../include/text.php:2700 -msgid "Collection" -msgstr "Colección" +#: ../../Zotlabs/Module/Invite.php:136 +msgid "Send invitations" +msgstr "Enviar invitaciones" -#: ../../Zotlabs/Storage/Browser.php:133 -msgid "Principal" -msgstr "Principal" +#: ../../Zotlabs/Module/Invite.php:137 +msgid "Enter email addresses, one per line:" +msgstr "Introduzca las direcciones de correo electrónico, una por línea:" -#: ../../Zotlabs/Storage/Browser.php:136 -msgid "Addressbook" -msgstr "Libreta de direcciones" +#: ../../Zotlabs/Module/Invite.php:138 ../../Zotlabs/Module/Mail.php:284 +msgid "Your message:" +msgstr "Su mensaje:" -#: ../../Zotlabs/Storage/Browser.php:139 -msgid "Calendar" -msgstr "Calendario" +#: ../../Zotlabs/Module/Invite.php:139 +msgid "Please join my community on $Projectname." +msgstr "Por favor, únase a mi comunidad en $Projectname." -#: ../../Zotlabs/Storage/Browser.php:142 -msgid "Schedule Inbox" -msgstr "Programar bandeja de entrada" +#: ../../Zotlabs/Module/Invite.php:141 +msgid "You will need to supply this invitation code:" +msgstr "Tendrá que suministrar este código de invitación:" -#: ../../Zotlabs/Storage/Browser.php:145 -msgid "Schedule Outbox" -msgstr "Programar bandeja de salida" +#: ../../Zotlabs/Module/Invite.php:142 +msgid "" +"1. Register at any $Projectname location (they are all inter-connected)" +msgstr "1. Regístrese en cualquier sitio de $Projectname (están todos interconectados)" -#: ../../Zotlabs/Storage/Browser.php:163 ../../Zotlabs/Module/Photos.php:784 -#: ../../Zotlabs/Module/Photos.php:1244 -#: ../../Zotlabs/Module/Embedphotos.php:145 ../../Zotlabs/Lib/Apps.php:561 -#: ../../Zotlabs/Lib/Apps.php:639 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:745 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:746 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:753 -#: ../../include/widgets.php:1757 ../../include/conversation.php:1177 -msgid "Unknown" -msgstr "Desconocido" +#: ../../Zotlabs/Module/Invite.php:144 +msgid "2. Enter my $Projectname network address into the site searchbar." +msgstr "2. Introduzca mi dirección $Projectname en la caja de búsqueda del sitio." -#: ../../Zotlabs/Storage/Browser.php:224 ../../Zotlabs/Module/Fbrowser.php:85 -#: ../../Zotlabs/Lib/Apps.php:224 ../../include/conversation.php:1843 -msgid "Files" -msgstr "Ficheros" +#: ../../Zotlabs/Module/Invite.php:145 +msgid "or visit" +msgstr "o visitar" -#: ../../Zotlabs/Storage/Browser.php:225 -msgid "Total" -msgstr "Total" +#: ../../Zotlabs/Module/Invite.php:147 +msgid "3. Click [Connect]" +msgstr "3. Pulse [conectar]" -#: ../../Zotlabs/Storage/Browser.php:227 -msgid "Shared" -msgstr "Compartido" +#: ../../Zotlabs/Module/Invite.php:149 ../../Zotlabs/Module/Locs.php:121 +#: ../../Zotlabs/Module/Mitem.php:243 ../../Zotlabs/Module/Events.php:493 +#: ../../Zotlabs/Module/Appman.php:134 +#: ../../Zotlabs/Module/Import_items.php:126 +#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:357 +#: ../../Zotlabs/Module/Connect.php:98 +#: ../../Zotlabs/Module/Admin/Features.php:66 +#: ../../Zotlabs/Module/Admin/Plugins.php:438 +#: ../../Zotlabs/Module/Admin/Accounts.php:166 +#: ../../Zotlabs/Module/Admin/Logs.php:84 +#: ../../Zotlabs/Module/Admin/Channels.php:147 +#: ../../Zotlabs/Module/Admin/Themes.php:158 +#: ../../Zotlabs/Module/Admin/Site.php:279 +#: ../../Zotlabs/Module/Admin/Profs.php:157 +#: ../../Zotlabs/Module/Admin/Account_edit.php:74 +#: ../../Zotlabs/Module/Admin/Security.php:104 +#: ../../Zotlabs/Module/Settings/Permcats.php:110 +#: ../../Zotlabs/Module/Settings/Channel.php:476 +#: ../../Zotlabs/Module/Settings/Features.php:47 +#: ../../Zotlabs/Module/Settings/Tokens.php:168 +#: ../../Zotlabs/Module/Settings/Account.php:118 +#: ../../Zotlabs/Module/Settings/Featured.php:50 +#: ../../Zotlabs/Module/Settings/Display.php:203 +#: ../../Zotlabs/Module/Settings/Oauth.php:87 +#: ../../Zotlabs/Module/Thing.php:320 ../../Zotlabs/Module/Thing.php:370 +#: ../../Zotlabs/Module/Import.php:511 ../../Zotlabs/Module/Cal.php:343 +#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Photos.php:657 +#: ../../Zotlabs/Module/Photos.php:1022 ../../Zotlabs/Module/Photos.php:1062 +#: ../../Zotlabs/Module/Photos.php:1180 ../../Zotlabs/Module/Wiki.php:169 +#: ../../Zotlabs/Module/Pdledit.php:74 ../../Zotlabs/Module/Poke.php:186 +#: ../../Zotlabs/Module/Connedit.php:890 ../../Zotlabs/Module/Chat.php:194 +#: ../../Zotlabs/Module/Chat.php:240 ../../Zotlabs/Module/Pconfig.php:107 +#: ../../Zotlabs/Module/Group.php:85 ../../Zotlabs/Module/Profiles.php:726 +#: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149 +#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Mail.php:425 +#: ../../Zotlabs/Module/Filestorage.php:165 ../../Zotlabs/Module/Rate.php:166 +#: ../../Zotlabs/Lib/ThreadItem.php:732 +#: ../../Zotlabs/Widget/Eventstools.php:16 +#: ../../view/theme/redbasic/php/config.php:84 +#: ../../addon/skeleton/skeleton.php:65 ../../addon/gnusoc/gnusoc.php:133 +#: ../../addon/cdav/cdav.php:246 ../../addon/planets/planets.php:157 +#: ../../addon/openclipatar/openclipatar.php:53 +#: ../../addon/wppost/wppost.php:113 ../../addon/nsfw/nsfw.php:92 +#: ../../addon/ijpost/ijpost.php:89 ../../addon/dwpost/dwpost.php:89 +#: ../../addon/mailhost/mailhost.php:40 +#: ../../addon/likebanner/likebanner.php:57 +#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:53 +#: ../../addon/ljpost/ljpost.php:86 ../../addon/startpage/startpage.php:113 +#: ../../addon/diaspora/diaspora.php:714 +#: ../../addon/gitwiki/Mod_Gitwiki.php:155 +#: ../../addon/rainbowtag/rainbowtag.php:85 ../../addon/visage/visage.php:170 +#: ../../addon/nsabait/nsabait.php:161 ../../addon/mailtest/mailtest.php:100 +#: ../../addon/openstreetmap/openstreetmap.php:168 +#: ../../addon/rtof/rtof.php:101 ../../addon/jappixmini/jappixmini.php:371 +#: ../../addon/superblock/superblock.php:120 ../../addon/nofed/nofed.php:80 +#: ../../addon/redred/redred.php:119 ../../addon/logrot/logrot.php:35 +#: ../../addon/frphotos/frphotos.php:96 ../../addon/chords/Mod_Chords.php:60 +#: ../../addon/libertree/libertree.php:85 +#: ../../addon/flattrwidget/flattrwidget.php:124 +#: ../../addon/statusnet/statusnet.php:322 +#: ../../addon/statusnet/statusnet.php:380 +#: ../../addon/statusnet/statusnet.php:432 +#: ../../addon/statusnet/statusnet.php:899 ../../addon/twitter/twitter.php:217 +#: ../../addon/twitter/twitter.php:259 +#: ../../addon/smileybutton/smileybutton.php:281 +#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/pageheader.php:48 +#: ../../addon/xmpp/xmpp.php:69 ../../addon/pumpio/pumpio.php:237 +#: ../../addon/redfiles/redfiles.php:124 ../../addon/hubwall/hubwall.php:95 +#: ../../include/js_strings.php:22 +msgid "Submit" +msgstr "Enviar" -#: ../../Zotlabs/Storage/Browser.php:228 ../../Zotlabs/Storage/Browser.php:330 -#: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/Connedit.php:928 -#: ../../Zotlabs/Module/New_channel.php:147 -#: ../../Zotlabs/Module/Webpages.php:243 ../../Zotlabs/Module/Blocks.php:159 -#: ../../Zotlabs/Module/Layouts.php:184 ../../Zotlabs/Module/Profiles.php:801 -#: ../../extend/addon/addon/cdav/include/widgets.php:127 -#: ../../extend/addon/addon/cdav/include/widgets.php:164 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1151 -msgid "Create" -msgstr "Crear" +#: ../../Zotlabs/Module/Editlayout.php:79 +#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95 +#: ../../Zotlabs/Module/Editwebpage.php:80 +#: ../../Zotlabs/Module/Editpost.php:24 +msgid "Item not found" +msgstr "Elemento no encontrado" -#: ../../Zotlabs/Storage/Browser.php:229 ../../Zotlabs/Storage/Browser.php:332 -#: ../../Zotlabs/Module/Cover_photo.php:357 -#: ../../Zotlabs/Module/Photos.php:811 ../../Zotlabs/Module/Photos.php:1368 -#: ../../Zotlabs/Module/Profile_photo.php:421 -#: ../../Zotlabs/Module/Embedphotos.php:157 -#: ../../extend/addon/addon/cdav/include/widgets.php:132 -#: ../../extend/addon/addon/cdav/include/widgets.php:168 -#: ../../include/widgets.php:1770 -msgid "Upload" -msgstr "Subir" +#: ../../Zotlabs/Module/Editlayout.php:128 +#: ../../Zotlabs/Module/Layouts.php:129 ../../Zotlabs/Module/Layouts.php:189 +msgid "Layout Name" +msgstr "Nombre de la plantilla" -#: ../../Zotlabs/Storage/Browser.php:233 -#: ../../Zotlabs/Module/Admin/Channels.php:159 -#: ../../Zotlabs/Module/Connedit.php:913 -#: ../../Zotlabs/Module/Sharedwithme.php:99 -#: ../../Zotlabs/Module/Settings/Oauth.php:89 -#: ../../Zotlabs/Module/Settings/Oauth.php:115 -#: ../../Zotlabs/Module/Wiki.php:171 ../../Zotlabs/Module/Chat.php:248 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1136 -#: ../../extend/addon/addon/rendezvous/rendezvous.php:172 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:156 -#: ../../include/widgets.php:976 -msgid "Name" -msgstr "Nombre" +#: ../../Zotlabs/Module/Editlayout.php:129 +#: ../../Zotlabs/Module/Layouts.php:132 +msgid "Layout Description (Optional)" +msgstr "Descripción de la plantilla (opcional)" -#: ../../Zotlabs/Storage/Browser.php:234 ../../Zotlabs/Module/Wiki.php:172 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:157 -msgid "Type" -msgstr "Tipo" +#: ../../Zotlabs/Module/Editlayout.php:137 +msgid "Edit Layout" +msgstr "Modificar la plantilla" -#: ../../Zotlabs/Storage/Browser.php:235 -#: ../../Zotlabs/Module/Sharedwithme.php:101 ../../include/text.php:1414 -msgid "Size" -msgstr "Tamaño" +#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:62 +#: ../../Zotlabs/Module/Import_items.php:118 ../../Zotlabs/Module/Group.php:72 +#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:68 +#: ../../Zotlabs/Module/Like.php:283 ../../Zotlabs/Web/WebServer.php:130 +#: ../../addon/redphotos/redphotos.php:119 +#: ../../addon/frphotos/frphotos.php:81 ../../addon/redfiles/redfiles.php:109 +#: ../../include/items.php:327 +msgid "Permission denied" +msgstr "Permiso denegado" -#: ../../Zotlabs/Storage/Browser.php:236 -#: ../../Zotlabs/Module/Sharedwithme.php:102 -msgid "Last Modified" -msgstr "Última modificación" +#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 +msgid "Invalid profile identifier." +msgstr "Identificador del perfil no válido" -#: ../../Zotlabs/Storage/Browser.php:238 -#: ../../Zotlabs/Module/Editblock.php:109 -#: ../../Zotlabs/Module/Connections.php:300 -#: ../../Zotlabs/Module/Connections.php:320 -#: ../../Zotlabs/Module/Admin/Profs.php:154 -#: ../../Zotlabs/Module/Editlayout.php:114 -#: ../../Zotlabs/Module/Editwebpage.php:145 ../../Zotlabs/Module/Menu.php:112 -#: ../../Zotlabs/Module/Editpost.php:85 ../../Zotlabs/Module/Webpages.php:244 -#: ../../Zotlabs/Module/Blocks.php:160 ../../Zotlabs/Module/Layouts.php:192 -#: ../../Zotlabs/Module/Settings/Oauth.php:149 -#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Wiki.php:164 -#: ../../Zotlabs/Module/Wiki.php:271 ../../Zotlabs/Lib/ThreadItem.php:106 -#: ../../Zotlabs/Lib/Apps.php:357 -#: ../../extend/addon/addon/cdav/include/widgets.php:125 -#: ../../extend/addon/addon/cdav/include/widgets.php:161 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:149 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:251 -#: ../../include/page_widgets.php:9 ../../include/page_widgets.php:39 -#: ../../include/menu.php:113 ../../include/channel.php:1044 -#: ../../include/channel.php:1048 -msgid "Edit" -msgstr "Editar" +#: ../../Zotlabs/Module/Profperm.php:111 +msgid "Profile Visibility Editor" +msgstr "Editor de visibilidad del perfil" -#: ../../Zotlabs/Storage/Browser.php:239 -#: ../../Zotlabs/Module/Editblock.php:134 -#: ../../Zotlabs/Module/Connections.php:271 -#: ../../Zotlabs/Module/Admin/Profs.php:155 -#: ../../Zotlabs/Module/Admin/Accounts.php:173 -#: ../../Zotlabs/Module/Admin/Channels.php:149 -#: ../../Zotlabs/Module/Editlayout.php:137 -#: ../../Zotlabs/Module/Editwebpage.php:170 -#: ../../Zotlabs/Module/Connedit.php:661 ../../Zotlabs/Module/Connedit.php:930 -#: ../../Zotlabs/Module/Photos.php:1174 ../../Zotlabs/Module/Group.php:177 -#: ../../Zotlabs/Module/Webpages.php:246 ../../Zotlabs/Module/Blocks.php:162 -#: ../../Zotlabs/Module/Profiles.php:803 -#: ../../Zotlabs/Module/Settings/Oauth.php:150 -#: ../../Zotlabs/Module/Thing.php:261 ../../Zotlabs/Lib/ThreadItem.php:126 -#: ../../Zotlabs/Lib/Apps.php:358 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:864 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1153 -#: ../../include/conversation.php:656 -msgid "Delete" -msgstr "Eliminar" +#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1360 +msgid "Profile" +msgstr "Perfil" + +#: ../../Zotlabs/Module/Profperm.php:115 +msgid "Click on a contact to add or remove." +msgstr "Pulsar en un contacto para añadirlo o eliminarlo." + +#: ../../Zotlabs/Module/Profperm.php:124 +msgid "Visible To" +msgstr "Visible para" + +#: ../../Zotlabs/Module/Profperm.php:140 +#: ../../Zotlabs/Module/Connections.php:141 +msgid "All Connections" +msgstr "Todas las conexiones" + +#: ../../Zotlabs/Module/Regdir.php:49 ../../Zotlabs/Module/Dirsearch.php:25 +msgid "This site is not a directory server" +msgstr "Este sitio no es un servidor de directorio" + +#: ../../Zotlabs/Module/Channel.php:32 ../../Zotlabs/Module/Chat.php:25 +#: ../../addon/gitwiki/Mod_Gitwiki.php:28 ../../addon/chess/chess.php:403 +msgid "You must be logged in to see this page." +msgstr "Debe haber iniciado sesión para poder ver esta página." + +#: ../../Zotlabs/Module/Channel.php:47 ../../Zotlabs/Module/Hcard.php:35 +#: ../../Zotlabs/Module/Profile.php:43 +msgid "Posts and comments" +msgstr "Publicaciones y comentarios" + +#: ../../Zotlabs/Module/Channel.php:54 ../../Zotlabs/Module/Hcard.php:42 +#: ../../Zotlabs/Module/Profile.php:50 +msgid "Only posts" +msgstr "Solo publicaciones" + +#: ../../Zotlabs/Module/Channel.php:112 +msgid "Insufficient permissions. Request redirected to profile page." +msgstr "Permisos insuficientes. Petición redirigida a la página del perfil." + +#: ../../Zotlabs/Module/Uexport.php:57 ../../Zotlabs/Module/Uexport.php:58 +msgid "Export Channel" +msgstr "Exportar el canal" + +#: ../../Zotlabs/Module/Uexport.php:59 +msgid "" +"Export your basic channel information to a file. This acts as a backup of " +"your connections, permissions, profile and basic data, which can be used to " +"import your data to a new server hub, but does not contain your content." +msgstr "Exportar la información básica del canal a un fichero. Este equivale a una copia de seguridad de sus conexiones, el perfil y datos fundamentales, que puede usarse para importar sus datos a un nuevo servidor, pero no incluye su contenido." -#: ../../Zotlabs/Storage/Browser.php:299 +#: ../../Zotlabs/Module/Uexport.php:60 +msgid "Export Content" +msgstr "Exportar contenidos" + +#: ../../Zotlabs/Module/Uexport.php:61 +msgid "" +"Export your channel information and recent content to a JSON backup that can" +" be restored or imported to another server hub. This backs up all of your " +"connections, permissions, profile data and several months of posts. This " +"file may be VERY large. Please be patient - it may take several minutes for" +" this download to begin." +msgstr "Exportar la información sobre su canal y el contenido reciente a un fichero de respaldo JSON, que puede ser restaurado o importado a otro servidor. Este fichero incluye todas sus conexiones, permisos, datos del perfil y publicaciones de varios meses. Puede llegar a ser MUY grande. Por favor, sea paciente, la descarga puede tardar varios minutos en comenzar." + +#: ../../Zotlabs/Module/Uexport.php:63 +msgid "Export your posts from a given year." +msgstr "Exporta sus publicaciones de un año dado." + +#: ../../Zotlabs/Module/Uexport.php:65 +msgid "" +"You may also export your posts and conversations for a particular year or " +"month. Adjust the date in your browser location bar to select other dates. " +"If the export fails (possibly due to memory exhaustion on your server hub), " +"please try again selecting a more limited date range." +msgstr "También puede exportar sus mensajes y conversaciones durante un año o mes en particular. Ajuste la fecha en la barra de direcciones del navegador para seleccionar otras fechas. Si la exportación falla (posiblemente debido al agotamiento de la memoria del servidor hub), por favor, intente de nuevo la selección de un rango de fechas más pequeño." + +#: ../../Zotlabs/Module/Uexport.php:66 #, php-format -msgid "You are using %1$s of your available file storage." -msgstr "Está usando %1$s de su espacio disponible para ficheros." +msgid "" +"To select all posts for a given year, such as this year, visit <a " +"href=\"%1$s\">%2$s</a>" +msgstr "Para seleccionar todos los mensajes de un año determinado, como este año, visite <a href=\"%1$s\">%2$s</a>" -#: ../../Zotlabs/Storage/Browser.php:304 +#: ../../Zotlabs/Module/Uexport.php:67 #, php-format -msgid "You are using %1$s of %2$s available file storage. (%3$s%)" -msgstr "Está usando %1$s de %2$s que tiene a su disposición para ficheros. (%3$s%)" +msgid "" +"To select all posts for a given month, such as January of this year, visit " +"<a href=\"%1$s\">%2$s</a>" +msgstr "Para seleccionar todos los mensajes de un mes determinado, como el de enero de este año, visite <a href=\"%1$s\">%2$s</a>" -#: ../../Zotlabs/Storage/Browser.php:315 -msgid "WARNING:" -msgstr "ATENCIÓN: " +#: ../../Zotlabs/Module/Uexport.php:68 +#, php-format +msgid "" +"These content files may be imported or restored by visiting <a " +"href=\"%1$s\">%2$s</a> on any site containing your channel. For best results" +" please import or restore these in date order (oldest first)." +msgstr "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1$s\">%2$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)." + +#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:490 +#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Directory.php:63 +#: ../../Zotlabs/Module/Display.php:22 +#: ../../Zotlabs/Module/Viewconnections.php:23 +msgid "Public access denied." +msgstr "Acceso público denegado." -#: ../../Zotlabs/Storage/Browser.php:325 +#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:312 +#: ../../Zotlabs/Lib/Apps.php:237 ../../Zotlabs/Widget/Sitesearch.php:31 +#: ../../include/text.php:1027 ../../include/text.php:1039 +#: ../../include/acl_selectors.php:213 ../../include/nav.php:160 +msgid "Search" +msgstr "Buscar" + +#: ../../Zotlabs/Module/Search.php:224 +#, php-format +msgid "Items tagged with: %s" +msgstr "elementos etiquetados con: %s" + +#: ../../Zotlabs/Module/Search.php:226 +#, php-format +msgid "Search results for: %s" +msgstr "Resultados de la búsqueda para: %s" + +#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 +msgid "Location not found." +msgstr "Dirección no encontrada." + +#: ../../Zotlabs/Module/Locs.php:62 +msgid "Location lookup failed." +msgstr "Ha fallado la búsqueda de la dirección." + +#: ../../Zotlabs/Module/Locs.php:66 msgid "" -"Please use DAV to upload large (video, audio) files.<br>See <a class=\"zrl\"" -" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop " -"Clients</a>" -msgstr "Por favor, use DAV para subir ficheros de gran tamaño (vídeo, audio).<br>Mire en <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>" +"Please select another location to become primary before removing the primary" +" location." +msgstr "Por favor, seleccione una copia de su canal (un clon) para convertirlo en primario antes de eliminar su canal principal." -#: ../../Zotlabs/Storage/Browser.php:329 -msgid "Create new folder" -msgstr "Crear nueva carpeta" +#: ../../Zotlabs/Module/Locs.php:95 +msgid "Syncing locations" +msgstr "Sincronizando ubicaciones" -#: ../../Zotlabs/Storage/Browser.php:331 -msgid "Upload file" -msgstr "Subir fichero" +#: ../../Zotlabs/Module/Locs.php:105 +msgid "No locations found." +msgstr "No encontrada ninguna dirección." -#: ../../Zotlabs/Storage/Browser.php:345 -msgid "Drop files here to immediately upload" -msgstr "Arrastre los ficheros aquí para subirlos de forma inmediata" +#: ../../Zotlabs/Module/Locs.php:116 +msgid "Manage Channel Locations" +msgstr "Gestionar las direcciones del canal" -#: ../../Zotlabs/Web/WebServer.php:127 ../../Zotlabs/Module/Group.php:72 -#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:68 -#: ../../Zotlabs/Module/Import_items.php:114 -#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Like.php:283 -#: ../../Zotlabs/Module/Subthread.php:62 -#: ../../extend/addon/addon/frphotos/frphotos.php:81 -#: ../../extend/addon/addon/redfiles/redfiles.php:109 -#: ../../extend/addon/addon/redphotos/redphotos.php:119 -#: ../../include/items.php:327 -msgid "Permission denied" -msgstr "Permiso denegado" +#: ../../Zotlabs/Module/Locs.php:117 ../../Zotlabs/Module/Events.php:475 +#: ../../Zotlabs/Module/Profiles.php:509 ../../Zotlabs/Module/Profiles.php:737 +#: ../../Zotlabs/Module/Pubsites.php:51 ../../addon/cdav/Mod_Cdav.php:839 +#: ../../include/js_strings.php:25 +msgid "Location" +msgstr "Ubicación" -#: ../../Zotlabs/Web/WebServer.php:128 -#: ../../Zotlabs/Module/Achievements.php:34 ../../Zotlabs/Module/Appman.php:82 -#: ../../Zotlabs/Module/Register.php:77 ../../Zotlabs/Module/Authtest.php:16 -#: ../../Zotlabs/Module/Bookmarks.php:61 ../../Zotlabs/Module/Editblock.php:67 -#: ../../Zotlabs/Module/Page.php:35 ../../Zotlabs/Module/Page.php:91 -#: ../../Zotlabs/Module/Connections.php:33 -#: ../../Zotlabs/Module/Cover_photo.php:277 -#: ../../Zotlabs/Module/Cover_photo.php:290 -#: ../../Zotlabs/Module/Editlayout.php:67 -#: ../../Zotlabs/Module/Editlayout.php:90 -#: ../../Zotlabs/Module/Editwebpage.php:68 -#: ../../Zotlabs/Module/Editwebpage.php:89 -#: ../../Zotlabs/Module/Editwebpage.php:104 -#: ../../Zotlabs/Module/Editwebpage.php:126 -#: ../../Zotlabs/Module/Network.php:15 ../../Zotlabs/Module/Menu.php:78 -#: ../../Zotlabs/Module/Locs.php:87 ../../Zotlabs/Module/Connedit.php:388 -#: ../../Zotlabs/Module/Events.php:271 ../../Zotlabs/Module/Filestorage.php:23 -#: ../../Zotlabs/Module/Filestorage.php:78 -#: ../../Zotlabs/Module/Filestorage.php:93 -#: ../../Zotlabs/Module/Filestorage.php:120 ../../Zotlabs/Module/Photos.php:73 -#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Group.php:13 -#: ../../Zotlabs/Module/Mail.php:164 ../../Zotlabs/Module/Block.php:26 -#: ../../Zotlabs/Module/Block.php:76 ../../Zotlabs/Module/Manage.php:10 -#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mitem.php:115 -#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Api.php:24 -#: ../../Zotlabs/Module/Invite.php:17 ../../Zotlabs/Module/Invite.php:94 -#: ../../Zotlabs/Module/New_channel.php:77 -#: ../../Zotlabs/Module/New_channel.php:104 -#: ../../Zotlabs/Module/Webpages.php:116 -#: ../../Zotlabs/Module/Notifications.php:11 ../../Zotlabs/Module/Poke.php:137 -#: ../../Zotlabs/Module/Item.php:220 ../../Zotlabs/Module/Item.php:230 -#: ../../Zotlabs/Module/Item.php:1067 ../../Zotlabs/Module/Blocks.php:73 -#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Layouts.php:71 -#: ../../Zotlabs/Module/Layouts.php:78 ../../Zotlabs/Module/Layouts.php:89 -#: ../../Zotlabs/Module/Rate.php:113 -#: ../../Zotlabs/Module/Profile_photo.php:278 -#: ../../Zotlabs/Module/Profile_photo.php:291 -#: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Common.php:39 -#: ../../Zotlabs/Module/Channel.php:115 ../../Zotlabs/Module/Channel.php:245 -#: ../../Zotlabs/Module/Channel.php:285 ../../Zotlabs/Module/Mood.php:116 -#: ../../Zotlabs/Module/Regmod.php:21 ../../Zotlabs/Module/Pdledit.php:29 -#: ../../Zotlabs/Module/Profile.php:83 ../../Zotlabs/Module/Profile.php:100 -#: ../../Zotlabs/Module/Viewsrc.php:18 -#: ../../Zotlabs/Module/Service_limits.php:11 -#: ../../Zotlabs/Module/Sharedwithme.php:11 -#: ../../Zotlabs/Module/Sources.php:74 ../../Zotlabs/Module/Suggest.php:30 -#: ../../Zotlabs/Module/Profiles.php:198 ../../Zotlabs/Module/Profiles.php:635 -#: ../../Zotlabs/Module/Thing.php:274 ../../Zotlabs/Module/Thing.php:294 -#: ../../Zotlabs/Module/Thing.php:335 ../../Zotlabs/Module/Setup.php:212 -#: ../../Zotlabs/Module/Viewconnections.php:28 -#: ../../Zotlabs/Module/Viewconnections.php:33 -#: ../../Zotlabs/Module/Wiki.php:50 ../../Zotlabs/Module/Wiki.php:215 -#: ../../Zotlabs/Module/Wiki.php:311 ../../Zotlabs/Module/Chat.php:98 -#: ../../Zotlabs/Module/Chat.php:103 ../../Zotlabs/Lib/Chatroom.php:137 -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:55 -#: ../../extend/addon/addon/keepout/keepout.php:36 -#: ../../extend/addon/addon/pumpio/pumpio.php:40 -#: ../../extend/addon/addon/openid/Mod_Id.php:53 -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:58 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:194 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:291 -#: ../../include/items.php:3447 ../../include/attach.php:144 -#: ../../include/attach.php:191 ../../include/attach.php:255 -#: ../../include/attach.php:269 ../../include/attach.php:276 -#: ../../include/attach.php:343 ../../include/attach.php:357 -#: ../../include/attach.php:364 ../../include/attach.php:441 -#: ../../include/attach.php:908 ../../include/attach.php:979 -#: ../../include/attach.php:1137 ../../include/photos.php:27 -msgid "Permission denied." -msgstr "Acceso denegado." +#: ../../Zotlabs/Module/Locs.php:118 +#: ../../Zotlabs/Module/Admin/Channels.php:160 +#: ../../Zotlabs/Module/Connedit.php:917 ../../Zotlabs/Module/Profiles.php:502 +#: ../../Zotlabs/Module/Profiles.php:793 ../../addon/cdav/Mod_Cdav.php:1143 +msgid "Address" +msgstr "Dirección" -#: ../../Zotlabs/Web/Router.php:146 ../../Zotlabs/Module/Page.php:94 -#: ../../Zotlabs/Module/Display.php:122 ../../Zotlabs/Module/Block.php:79 -#: ../../Zotlabs/Lib/NativeWikiPage.php:518 ../../include/help.php:68 -msgid "Page not found." -msgstr "Página no encontrada." +#: ../../Zotlabs/Module/Locs.php:119 +msgid "Primary" +msgstr "Primario" -#: ../../Zotlabs/Zot/Auth.php:138 +#: ../../Zotlabs/Module/Locs.php:120 ../../Zotlabs/Module/Menu.php:113 +msgid "Drop" +msgstr "Eliminar" + +#: ../../Zotlabs/Module/Locs.php:122 +msgid "Sync Now" +msgstr "Sincronizar ahora" + +#: ../../Zotlabs/Module/Locs.php:123 +msgid "Please wait several minutes between consecutive operations." +msgstr "Por favor, espere algunos minutos entre operaciones consecutivas." + +#: ../../Zotlabs/Module/Locs.php:124 msgid "" -"Remote authentication blocked. You are logged into this site locally. Please" -" logout and retry." -msgstr "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo." +"When possible, drop a location by logging into that website/hub and removing" +" your channel." +msgstr "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio web o \"hub\" y borrando su canal." -#: ../../Zotlabs/Zot/Auth.php:250 -#: ../../extend/addon/addon/openid/Mod_Openid.php:76 -#: ../../extend/addon/addon/openid/Mod_Openid.php:178 -#, php-format -msgid "Welcome %s. Remote authentication successful." -msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente." +#: ../../Zotlabs/Module/Locs.php:125 +msgid "Use this form to drop the location if the hub is no longer operating." +msgstr "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo." -#: ../../Zotlabs/Module/Achievements.php:15 -#: ../../Zotlabs/Module/Connect.php:17 ../../Zotlabs/Module/Editblock.php:31 -#: ../../Zotlabs/Module/Editlayout.php:31 -#: ../../Zotlabs/Module/Editwebpage.php:32 -#: ../../Zotlabs/Module/Filestorage.php:59 -#: ../../Zotlabs/Module/Webpages.php:33 ../../Zotlabs/Module/Hcard.php:12 -#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Layouts.php:31 -#: ../../Zotlabs/Module/Profile.php:20 ../../include/channel.php:945 -msgid "Requested profile is not available." -msgstr "El perfil solicitado no está disponible." +#: ../../Zotlabs/Module/Mitem.php:28 ../../Zotlabs/Module/Menu.php:144 +msgid "Menu not found." +msgstr "Menú no encontrado" -#: ../../Zotlabs/Module/Achievements.php:38 -msgid "Some blurb about what to do when you're new here" -msgstr "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí" +#: ../../Zotlabs/Module/Mitem.php:52 +msgid "Unable to create element." +msgstr "No se puede crear el elemento." + +#: ../../Zotlabs/Module/Mitem.php:76 +msgid "Unable to update menu element." +msgstr "No es posible actualizar el elemento del menú." + +#: ../../Zotlabs/Module/Mitem.php:92 +msgid "Unable to add menu element." +msgstr "No es posible añadir el elemento al menú" + +#: ../../Zotlabs/Module/Mitem.php:120 ../../Zotlabs/Module/Menu.php:166 +#: ../../Zotlabs/Module/Xchan.php:41 +msgid "Not found." +msgstr "No encontrado." + +#: ../../Zotlabs/Module/Mitem.php:153 ../../Zotlabs/Module/Mitem.php:230 +msgid "Menu Item Permissions" +msgstr "Permisos del elemento del menú" + +#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:231 +#: ../../Zotlabs/Module/Settings/Channel.php:510 +msgid "(click to open/close)" +msgstr "(pulsar para abrir o cerrar)" + +#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:176 +msgid "Link Name" +msgstr "Nombre del enlace" + +#: ../../Zotlabs/Module/Mitem.php:161 ../../Zotlabs/Module/Mitem.php:239 +msgid "Link or Submenu Target" +msgstr "Destino del enlace o submenú" + +#: ../../Zotlabs/Module/Mitem.php:161 +msgid "Enter URL of the link or select a menu name to create a submenu" +msgstr "Introducir la dirección del enlace o seleccionar el nombre de un submenú" + +#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:240 +msgid "Use magic-auth if available" +msgstr "Usar la autenticación mágica si está disponible" + +#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:163 +#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241 +#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471 +#: ../../Zotlabs/Module/Removeme.php:63 +#: ../../Zotlabs/Module/Admin/Site.php:237 +#: ../../Zotlabs/Module/Settings/Channel.php:294 +#: ../../Zotlabs/Module/Settings/Display.php:103 +#: ../../Zotlabs/Module/Api.php:97 ../../Zotlabs/Module/Photos.php:642 +#: ../../Zotlabs/Module/Wiki.php:180 ../../Zotlabs/Module/Connedit.php:399 +#: ../../Zotlabs/Module/Connedit.php:783 ../../Zotlabs/Module/Menu.php:100 +#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Filestorage.php:160 +#: ../../Zotlabs/Module/Filestorage.php:168 ../../boot.php:1635 +#: ../../view/theme/redbasic/php/config.php:89 +#: ../../view/theme/redbasic/php/config.php:104 ../../addon/cdav/cdav.php:234 +#: ../../addon/planets/planets.php:153 ../../addon/wppost/wppost.php:82 +#: ../../addon/wppost/wppost.php:105 ../../addon/wppost/wppost.php:109 +#: ../../addon/nsfw/nsfw.php:84 ../../addon/ijpost/ijpost.php:73 +#: ../../addon/ijpost/ijpost.php:85 ../../addon/dwpost/dwpost.php:73 +#: ../../addon/dwpost/dwpost.php:85 ../../addon/ljpost/ljpost.php:70 +#: ../../addon/ljpost/ljpost.php:82 ../../addon/gitwiki/Mod_Gitwiki.php:166 +#: ../../addon/rainbowtag/rainbowtag.php:81 ../../addon/visage/visage.php:166 +#: ../../addon/nsabait/nsabait.php:157 ../../addon/rtof/rtof.php:81 +#: ../../addon/rtof/rtof.php:85 ../../addon/jappixmini/jappixmini.php:309 +#: ../../addon/jappixmini/jappixmini.php:313 +#: ../../addon/jappixmini/jappixmini.php:343 +#: ../../addon/jappixmini/jappixmini.php:351 +#: ../../addon/jappixmini/jappixmini.php:355 +#: ../../addon/jappixmini/jappixmini.php:359 ../../addon/nofed/nofed.php:72 +#: ../../addon/nofed/nofed.php:76 ../../addon/redred/redred.php:95 +#: ../../addon/redred/redred.php:99 ../../addon/libertree/libertree.php:69 +#: ../../addon/libertree/libertree.php:81 +#: ../../addon/flattrwidget/flattrwidget.php:120 +#: ../../addon/statusnet/statusnet.php:389 +#: ../../addon/statusnet/statusnet.php:411 +#: ../../addon/statusnet/statusnet.php:415 +#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:242 +#: ../../addon/twitter/twitter.php:246 ../../addon/twitter/twitter.php:255 +#: ../../addon/smileybutton/smileybutton.php:273 +#: ../../addon/smileybutton/smileybutton.php:277 ../../addon/xmpp/xmpp.php:53 +#: ../../addon/pumpio/pumpio.php:219 ../../addon/pumpio/pumpio.php:223 +#: ../../addon/pumpio/pumpio.php:227 ../../addon/pumpio/pumpio.php:231 +#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144 +#: ../../include/dir_fns.php:145 +msgid "No" +msgstr "No" + +#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:163 +#: ../../Zotlabs/Module/Mitem.php:240 ../../Zotlabs/Module/Mitem.php:241 +#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471 +#: ../../Zotlabs/Module/Removeme.php:63 +#: ../../Zotlabs/Module/Admin/Site.php:239 +#: ../../Zotlabs/Module/Settings/Channel.php:294 +#: ../../Zotlabs/Module/Settings/Display.php:103 +#: ../../Zotlabs/Module/Api.php:96 ../../Zotlabs/Module/Photos.php:642 +#: ../../Zotlabs/Module/Wiki.php:180 ../../Zotlabs/Module/Connedit.php:399 +#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157 +#: ../../Zotlabs/Module/Profiles.php:681 +#: ../../Zotlabs/Module/Filestorage.php:160 +#: ../../Zotlabs/Module/Filestorage.php:168 ../../boot.php:1635 +#: ../../view/theme/redbasic/php/config.php:89 +#: ../../view/theme/redbasic/php/config.php:104 ../../addon/cdav/cdav.php:234 +#: ../../addon/planets/planets.php:153 ../../addon/wppost/wppost.php:82 +#: ../../addon/wppost/wppost.php:105 ../../addon/wppost/wppost.php:109 +#: ../../addon/nsfw/nsfw.php:84 ../../addon/ijpost/ijpost.php:73 +#: ../../addon/ijpost/ijpost.php:85 ../../addon/dwpost/dwpost.php:73 +#: ../../addon/dwpost/dwpost.php:85 ../../addon/ljpost/ljpost.php:70 +#: ../../addon/ljpost/ljpost.php:82 ../../addon/gitwiki/Mod_Gitwiki.php:166 +#: ../../addon/rainbowtag/rainbowtag.php:81 ../../addon/visage/visage.php:166 +#: ../../addon/nsabait/nsabait.php:157 ../../addon/rtof/rtof.php:81 +#: ../../addon/rtof/rtof.php:85 ../../addon/jappixmini/jappixmini.php:309 +#: ../../addon/jappixmini/jappixmini.php:313 +#: ../../addon/jappixmini/jappixmini.php:343 +#: ../../addon/jappixmini/jappixmini.php:351 +#: ../../addon/jappixmini/jappixmini.php:355 +#: ../../addon/jappixmini/jappixmini.php:359 ../../addon/nofed/nofed.php:72 +#: ../../addon/nofed/nofed.php:76 ../../addon/redred/redred.php:95 +#: ../../addon/redred/redred.php:99 ../../addon/libertree/libertree.php:69 +#: ../../addon/libertree/libertree.php:81 +#: ../../addon/flattrwidget/flattrwidget.php:120 +#: ../../addon/statusnet/statusnet.php:389 +#: ../../addon/statusnet/statusnet.php:411 +#: ../../addon/statusnet/statusnet.php:415 +#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:242 +#: ../../addon/twitter/twitter.php:246 ../../addon/twitter/twitter.php:255 +#: ../../addon/smileybutton/smileybutton.php:273 +#: ../../addon/smileybutton/smileybutton.php:277 ../../addon/xmpp/xmpp.php:53 +#: ../../addon/pumpio/pumpio.php:219 ../../addon/pumpio/pumpio.php:223 +#: ../../addon/pumpio/pumpio.php:227 ../../addon/pumpio/pumpio.php:231 +#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144 +#: ../../include/dir_fns.php:145 +msgid "Yes" +msgstr "Sí" + +#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:241 +msgid "Open link in new window" +msgstr "Abrir el enlace en una nueva ventana" + +#: ../../Zotlabs/Module/Mitem.php:164 ../../Zotlabs/Module/Mitem.php:242 +msgid "Order in list" +msgstr "Orden en la lista" + +#: ../../Zotlabs/Module/Mitem.php:164 ../../Zotlabs/Module/Mitem.php:242 +msgid "Higher numbers will sink to bottom of listing" +msgstr "Los números más altos irán al final de la lista" + +#: ../../Zotlabs/Module/Mitem.php:165 +msgid "Submit and finish" +msgstr "Enviar y terminar" + +#: ../../Zotlabs/Module/Mitem.php:166 +msgid "Submit and continue" +msgstr "Enviar y continuar" + +#: ../../Zotlabs/Module/Mitem.php:174 +msgid "Menu:" +msgstr "Menú:" + +#: ../../Zotlabs/Module/Mitem.php:177 +msgid "Link Target" +msgstr "Destino del enlace" + +#: ../../Zotlabs/Module/Mitem.php:180 +msgid "Edit menu" +msgstr "Editar menú" + +#: ../../Zotlabs/Module/Mitem.php:183 +msgid "Edit element" +msgstr "Editar el elemento" + +#: ../../Zotlabs/Module/Mitem.php:184 +msgid "Drop element" +msgstr "Eliminar el elemento" + +#: ../../Zotlabs/Module/Mitem.php:185 +msgid "New element" +msgstr "Nuevo elemento" + +#: ../../Zotlabs/Module/Mitem.php:186 +msgid "Edit this menu container" +msgstr "Modificar el contenedor del menú" + +#: ../../Zotlabs/Module/Mitem.php:187 +msgid "Add menu element" +msgstr "Añadir un elemento al menú" + +#: ../../Zotlabs/Module/Mitem.php:188 +msgid "Delete this menu item" +msgstr "Eliminar este elemento del menú" + +#: ../../Zotlabs/Module/Mitem.php:189 +msgid "Edit this menu item" +msgstr "Modificar este elemento del menú" + +#: ../../Zotlabs/Module/Mitem.php:206 +msgid "Menu item not found." +msgstr "Este elemento del menú no se ha encontrado" + +#: ../../Zotlabs/Module/Mitem.php:219 +msgid "Menu item deleted." +msgstr "Este elemento del menú ha sido borrado" + +#: ../../Zotlabs/Module/Mitem.php:221 +msgid "Menu item could not be deleted." +msgstr "Este elemento del menú no puede ser borrado." + +#: ../../Zotlabs/Module/Mitem.php:228 +msgid "Edit Menu Element" +msgstr "Editar elemento del menú" + +#: ../../Zotlabs/Module/Mitem.php:238 +msgid "Link text" +msgstr "Texto del enlace" + +#: ../../Zotlabs/Module/Events.php:25 +msgid "Calendar entries imported." +msgstr "Entradas de calendario importadas." + +#: ../../Zotlabs/Module/Events.php:27 +msgid "No calendar entries found." +msgstr "No se han encontrado entradas de calendario." + +#: ../../Zotlabs/Module/Events.php:110 +msgid "Event can not end before it has started." +msgstr "Un evento no puede terminar antes de que haya comenzado." + +#: ../../Zotlabs/Module/Events.php:112 ../../Zotlabs/Module/Events.php:121 +#: ../../Zotlabs/Module/Events.php:143 +msgid "Unable to generate preview." +msgstr "No se puede crear la vista previa." + +#: ../../Zotlabs/Module/Events.php:119 +msgid "Event title and start time are required." +msgstr "Se requieren el título del evento y su hora de inicio." + +#: ../../Zotlabs/Module/Events.php:141 ../../Zotlabs/Module/Events.php:265 +msgid "Event not found." +msgstr "Evento no encontrado." + +#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:51 +#: ../../Zotlabs/Module/Like.php:372 ../../include/conversation.php:119 +#: ../../include/text.php:1948 ../../include/event.php:1141 +msgid "event" +msgstr "evento" + +#: ../../Zotlabs/Module/Events.php:460 +msgid "Edit event title" +msgstr "Editar el título del evento" + +#: ../../Zotlabs/Module/Events.php:460 ../../addon/cdav/Mod_Cdav.php:835 +msgid "Event title" +msgstr "Título del evento" + +#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:465 +#: ../../Zotlabs/Module/Appman.php:122 ../../Zotlabs/Module/Appman.php:123 +#: ../../Zotlabs/Module/Profiles.php:748 ../../Zotlabs/Module/Profiles.php:752 +#: ../../include/datetime.php:259 +msgid "Required" +msgstr "Obligatorio" + +#: ../../Zotlabs/Module/Events.php:462 +msgid "Categories (comma-separated list)" +msgstr "Temas (lista separada por comas)" + +#: ../../Zotlabs/Module/Events.php:463 +msgid "Edit Category" +msgstr "Modificar el tema" + +#: ../../Zotlabs/Module/Events.php:463 +msgid "Category" +msgstr "Tema" + +#: ../../Zotlabs/Module/Events.php:466 +msgid "Edit start date and time" +msgstr "Modificar la fecha y hora de comienzo" + +#: ../../Zotlabs/Module/Events.php:466 ../../addon/cdav/Mod_Cdav.php:836 +msgid "Start date and time" +msgstr "Fecha y hora de comienzo" + +#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:470 +msgid "Finish date and time are not known or not relevant" +msgstr "La fecha y hora de terminación no se conocen o no son relevantes" + +#: ../../Zotlabs/Module/Events.php:469 +msgid "Edit finish date and time" +msgstr "Modificar la fecha y hora de terminación" + +#: ../../Zotlabs/Module/Events.php:469 +msgid "Finish date and time" +msgstr "Fecha y hora de terminación" + +#: ../../Zotlabs/Module/Events.php:471 ../../Zotlabs/Module/Events.php:472 +msgid "Adjust for viewer timezone" +msgstr "Ajustar para obtener el visor de los husos horarios" + +#: ../../Zotlabs/Module/Events.php:471 +msgid "" +"Important for events that happen in a particular place. Not practical for " +"global holidays." +msgstr "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales." + +#: ../../Zotlabs/Module/Events.php:473 +msgid "Edit Description" +msgstr "Editar la descripción" + +#: ../../Zotlabs/Module/Events.php:473 ../../Zotlabs/Module/Appman.php:124 +#: ../../Zotlabs/Module/Rbmark.php:101 +#: ../../addon/rendezvous/rendezvous.php:173 ../../addon/cdav/Mod_Cdav.php:838 +msgid "Description" +msgstr "Descripción" + +#: ../../Zotlabs/Module/Events.php:475 +msgid "Edit Location" +msgstr "Modificar la dirección" + +#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Photos.php:1063 +#: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Lib/ThreadItem.php:741 +#: ../../include/conversation.php:1280 ../../include/page_widgets.php:43 +msgid "Preview" +msgstr "Previsualizar" + +#: ../../Zotlabs/Module/Events.php:479 ../../include/conversation.php:1343 +msgid "Permission settings" +msgstr "Configuración de permisos" + +#: ../../Zotlabs/Module/Events.php:489 +msgid "Timezone:" +msgstr "Zona horaria: " + +#: ../../Zotlabs/Module/Events.php:494 +msgid "Advanced Options" +msgstr "Opciones avanzadas" + +#: ../../Zotlabs/Module/Events.php:605 ../../Zotlabs/Module/Cal.php:264 +msgid "l, F j" +msgstr "l j F" + +#: ../../Zotlabs/Module/Events.php:633 +msgid "Edit event" +msgstr "Editar evento" + +#: ../../Zotlabs/Module/Events.php:635 +msgid "Delete event" +msgstr "Borrar evento" + +#: ../../Zotlabs/Module/Events.php:660 ../../Zotlabs/Module/Cal.php:313 +#: ../../include/text.php:1767 +msgid "Link to Source" +msgstr "Enlazar con la entrada en su ubicación original" + +#: ../../Zotlabs/Module/Events.php:669 +msgid "calendar" +msgstr "calendario" + +#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:336 +msgid "Edit Event" +msgstr "Editar el evento" + +#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:336 +msgid "Create Event" +msgstr "Crear un evento" + +#: ../../Zotlabs/Module/Events.php:689 ../../Zotlabs/Module/Events.php:698 +#: ../../Zotlabs/Module/Cal.php:337 ../../Zotlabs/Module/Cal.php:344 +#: ../../Zotlabs/Module/Photos.php:911 ../../addon/cdav/Mod_Cdav.php:846 +msgid "Previous" +msgstr "Anterior" + +#: ../../Zotlabs/Module/Events.php:690 ../../Zotlabs/Module/Events.php:699 +#: ../../Zotlabs/Module/Setup.php:264 ../../Zotlabs/Module/Cal.php:338 +#: ../../Zotlabs/Module/Cal.php:345 ../../Zotlabs/Module/Photos.php:920 +#: ../../addon/cdav/Mod_Cdav.php:847 +msgid "Next" +msgstr "Siguiente" + +#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:339 +#: ../../include/channel.php:1363 +msgid "Export" +msgstr "Exportar" + +#: ../../Zotlabs/Module/Events.php:695 ../../addon/cdav/Mod_Cdav.php:849 +msgid "Month" +msgstr "Mes" + +#: ../../Zotlabs/Module/Events.php:696 ../../addon/cdav/Mod_Cdav.php:850 +msgid "Week" +msgstr "Semana" + +#: ../../Zotlabs/Module/Events.php:697 ../../addon/cdav/Mod_Cdav.php:851 +msgid "Day" +msgstr "Día" + +#: ../../Zotlabs/Module/Events.php:700 ../../Zotlabs/Module/Cal.php:346 +#: ../../addon/cdav/Mod_Cdav.php:848 +msgid "Today" +msgstr "Hoy" + +#: ../../Zotlabs/Module/Events.php:731 +msgid "Event removed" +msgstr "Evento borrado" + +#: ../../Zotlabs/Module/Events.php:734 +msgid "Failed to remove event" +msgstr "Error al eliminar el evento" #: ../../Zotlabs/Module/Appman.php:38 ../../Zotlabs/Module/Appman.php:55 msgid "App installed." @@ -505,24 +1152,10 @@ msgstr "Crear una aplicación" msgid "Name of app" msgstr "Nombre de la aplicación" -#: ../../Zotlabs/Module/Appman.php:122 ../../Zotlabs/Module/Appman.php:123 -#: ../../Zotlabs/Module/Events.php:460 ../../Zotlabs/Module/Events.php:465 -#: ../../Zotlabs/Module/Profiles.php:748 ../../Zotlabs/Module/Profiles.php:752 -#: ../../include/datetime.php:259 -msgid "Required" -msgstr "Obligatorio" - #: ../../Zotlabs/Module/Appman.php:123 msgid "Location (URL) of app" msgstr "Dirección (URL) de la aplicación" -#: ../../Zotlabs/Module/Appman.php:124 ../../Zotlabs/Module/Events.php:473 -#: ../../Zotlabs/Module/Rbmark.php:101 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:838 -#: ../../extend/addon/addon/rendezvous/rendezvous.php:173 -msgid "Description" -msgstr "Descripción" - #: ../../Zotlabs/Module/Appman.php:125 msgid "Photo icon URL" msgstr "Dirección del icono" @@ -547,879 +1180,739 @@ msgstr "Precio de la aplicación" msgid "Location (URL) to purchase app" msgstr "Dirección (URL) donde adquirir la aplicación" -#: ../../Zotlabs/Module/Appman.php:134 ../../Zotlabs/Module/Import.php:507 -#: ../../Zotlabs/Module/Connect.php:98 -#: ../../Zotlabs/Module/Admin/Features.php:66 -#: ../../Zotlabs/Module/Admin/Logs.php:84 -#: ../../Zotlabs/Module/Admin/Profs.php:157 -#: ../../Zotlabs/Module/Admin/Security.php:104 -#: ../../Zotlabs/Module/Admin/Account_edit.php:74 -#: ../../Zotlabs/Module/Admin/Accounts.php:166 -#: ../../Zotlabs/Module/Admin/Channels.php:147 -#: ../../Zotlabs/Module/Admin/Site.php:268 -#: ../../Zotlabs/Module/Admin/Plugins.php:438 -#: ../../Zotlabs/Module/Admin/Themes.php:158 ../../Zotlabs/Module/Locs.php:121 -#: ../../Zotlabs/Module/Connedit.php:893 ../../Zotlabs/Module/Events.php:493 -#: ../../Zotlabs/Module/Filestorage.php:165 -#: ../../Zotlabs/Module/Photos.php:667 ../../Zotlabs/Module/Photos.php:1053 -#: ../../Zotlabs/Module/Photos.php:1093 ../../Zotlabs/Module/Photos.php:1211 -#: ../../Zotlabs/Module/Group.php:85 ../../Zotlabs/Module/Mail.php:413 -#: ../../Zotlabs/Module/Import_items.php:122 -#: ../../Zotlabs/Module/Mitem.php:243 ../../Zotlabs/Module/Cal.php:342 -#: ../../Zotlabs/Module/Invite.php:149 ../../Zotlabs/Module/Poke.php:186 -#: ../../Zotlabs/Module/Pconfig.php:107 ../../Zotlabs/Module/Rate.php:166 -#: ../../Zotlabs/Module/Mood.php:139 ../../Zotlabs/Module/Pdledit.php:74 -#: ../../Zotlabs/Module/Sources.php:114 ../../Zotlabs/Module/Sources.php:149 -#: ../../Zotlabs/Module/Profiles.php:726 -#: ../../Zotlabs/Module/Settings/Features.php:47 -#: ../../Zotlabs/Module/Settings/Oauth.php:87 -#: ../../Zotlabs/Module/Settings/Account.php:118 -#: ../../Zotlabs/Module/Settings/Channel.php:476 -#: ../../Zotlabs/Module/Settings/Featured.php:50 -#: ../../Zotlabs/Module/Settings/Permcats.php:112 -#: ../../Zotlabs/Module/Settings/Tokens.php:168 -#: ../../Zotlabs/Module/Settings/Display.php:203 -#: ../../Zotlabs/Module/Thing.php:320 ../../Zotlabs/Module/Thing.php:370 -#: ../../Zotlabs/Module/Setup.php:309 ../../Zotlabs/Module/Setup.php:357 -#: ../../Zotlabs/Module/Wiki.php:168 ../../Zotlabs/Module/Chat.php:194 -#: ../../Zotlabs/Module/Chat.php:239 ../../Zotlabs/Module/Xchan.php:15 -#: ../../Zotlabs/Lib/ThreadItem.php:731 -#: ../../extend/addon/addon/chords/Mod_Chords.php:60 -#: ../../extend/addon/addon/diaspora/diaspora.php:714 -#: ../../extend/addon/addon/dwpost/dwpost.php:89 -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:124 -#: ../../extend/addon/addon/friendica/friendica.php:128 -#: ../../extend/addon/addon/frphotos/frphotos.php:96 -#: ../../extend/addon/addon/hubwall/hubwall.php:95 -#: ../../extend/addon/addon/ijpost/ijpost.php:89 -#: ../../extend/addon/addon/irc/irc.php:53 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:371 -#: ../../extend/addon/addon/libertree/libertree.php:85 -#: ../../extend/addon/addon/ljpost/ljpost.php:86 -#: ../../extend/addon/addon/logrot/logrot.php:35 -#: ../../extend/addon/addon/mailhost/mailhost.php:40 -#: ../../extend/addon/addon/nofed/nofed.php:80 -#: ../../extend/addon/addon/nsabait/nsabait.php:161 -#: ../../extend/addon/addon/nsfw/nsfw.php:92 -#: ../../extend/addon/addon/openclipatar/openclipatar.php:53 -#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:168 -#: ../../extend/addon/addon/pageheader/pageheader.php:48 -#: ../../extend/addon/addon/piwik/piwik.php:95 -#: ../../extend/addon/addon/planets/planets.php:157 -#: ../../extend/addon/addon/pumpio/pumpio.php:237 -#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:85 -#: ../../extend/addon/addon/redfiles/redfiles.php:124 -#: ../../extend/addon/addon/redphotos/redphotos.php:136 -#: ../../extend/addon/addon/redred/redred.php:119 -#: ../../extend/addon/addon/rtof/rtof.php:101 -#: ../../extend/addon/addon/skeleton/skeleton.php:65 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:281 -#: ../../extend/addon/addon/startpage/startpage.php:113 -#: ../../extend/addon/addon/statusnet/statusnet.php:322 -#: ../../extend/addon/addon/statusnet/statusnet.php:380 -#: ../../extend/addon/addon/statusnet/statusnet.php:432 -#: ../../extend/addon/addon/statusnet/statusnet.php:899 -#: ../../extend/addon/addon/superblock/superblock.php:120 -#: ../../extend/addon/addon/twitter/twitter.php:217 -#: ../../extend/addon/addon/twitter/twitter.php:259 -#: ../../extend/addon/addon/visage/visage.php:170 -#: ../../extend/addon/addon/wppost/wppost.php:113 -#: ../../extend/addon/addon/xmpp/xmpp.php:69 -#: ../../extend/addon/addon/cdav/cdav.php:246 -#: ../../extend/addon/addon/likebanner/likebanner.php:57 -#: ../../extend/addon/addon/mailtest/mailtest.php:100 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:153 -#: ../../extend/addon/addon/gnusoc/gnusoc.php:133 -#: ../../include/widgets.php:801 ../../include/js_strings.php:22 -#: ../../view/theme/redbasic/php/config.php:106 -msgid "Submit" -msgstr "Enviar" - -#: ../../Zotlabs/Module/Register.php:49 -msgid "Maximum daily site registrations exceeded. Please try again tomorrow." -msgstr "Se ha superado el límite máximo de inscripciones diarias de este sitio. Por favor, pruebe de nuevo mañana." - -#: ../../Zotlabs/Module/Register.php:55 -msgid "" -"Please indicate acceptance of the Terms of Service. Registration failed." -msgstr "Por favor, confirme que acepta los Términos del servicio. El registro ha fallado." - -#: ../../Zotlabs/Module/Register.php:89 -msgid "Passwords do not match." -msgstr "Las contraseñas no coinciden." +#: ../../Zotlabs/Module/Regmod.php:15 +msgid "Please login." +msgstr "Por favor, inicie sesión." -#: ../../Zotlabs/Module/Register.php:131 -msgid "" -"Registration successful. Please check your email for validation " -"instructions." -msgstr "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo." +#: ../../Zotlabs/Module/Magic.php:71 +msgid "Hub not found." +msgstr "Servidor no encontrado" -#: ../../Zotlabs/Module/Register.php:137 -msgid "Your registration is pending approval by the site owner." -msgstr "Su registro está pendiente de aprobación por el propietario del sitio." +#: ../../Zotlabs/Module/Subthread.php:87 ../../Zotlabs/Module/Tagger.php:47 +#: ../../Zotlabs/Module/Like.php:370 +#: ../../addon/redphotos/redphotohelper.php:74 +#: ../../addon/diaspora/inbound.php:1794 ../../include/conversation.php:116 +#: ../../include/text.php:1945 +msgid "photo" +msgstr "foto" -#: ../../Zotlabs/Module/Register.php:140 -msgid "Your registration can not be processed." -msgstr "Su registro no puede ser procesado." +#: ../../Zotlabs/Module/Subthread.php:87 ../../Zotlabs/Module/Like.php:370 +#: ../../addon/diaspora/inbound.php:1794 ../../include/conversation.php:144 +#: ../../include/text.php:1951 +msgid "status" +msgstr "el mensaje de estado" -#: ../../Zotlabs/Module/Register.php:184 -msgid "Registration on this hub is disabled." -msgstr "El registro está deshabilitado en este sitio." +#: ../../Zotlabs/Module/Subthread.php:118 +#, php-format +msgid "%1$s is following %2$s's %3$s" +msgstr "%1$s está siguiendo %3$s de %2$s" -#: ../../Zotlabs/Module/Register.php:193 -msgid "Registration on this hub is by approval only." -msgstr "El registro en este hub está sometido a aprobación previa." +#: ../../Zotlabs/Module/Subthread.php:120 +#, php-format +msgid "%1$s stopped following %2$s's %3$s" +msgstr "%1$s ha dejado de seguir %3$s de %2$s" -#: ../../Zotlabs/Module/Register.php:194 -msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>" -msgstr "<a href=\"pubsites\">Registrarse en otro hub afiliado.</a>" +#: ../../Zotlabs/Module/Import_items.php:46 ../../Zotlabs/Module/Import.php:64 +msgid "Nothing to import." +msgstr "No hay nada para importar." -#: ../../Zotlabs/Module/Register.php:204 -msgid "" -"This site has exceeded the number of allowed daily account registrations. " -"Please try again tomorrow." -msgstr "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana." +#: ../../Zotlabs/Module/Import_items.php:70 ../../Zotlabs/Module/Import.php:79 +#: ../../Zotlabs/Module/Import.php:95 +msgid "Unable to download data from old server" +msgstr "No se han podido descargar datos de su antiguo servidor" -#: ../../Zotlabs/Module/Register.php:221 ../../Zotlabs/Module/Siteinfo.php:27 -msgid "Terms of Service" -msgstr "Términos del servicio" +#: ../../Zotlabs/Module/Import_items.php:75 +#: ../../Zotlabs/Module/Import.php:102 +msgid "Imported file is empty." +msgstr "El fichero importado está vacío." -#: ../../Zotlabs/Module/Register.php:227 +#: ../../Zotlabs/Module/Import_items.php:91 +#: ../../Zotlabs/Module/Import.php:121 #, php-format -msgid "I accept the %s for this website" -msgstr "Acepto los %s de este sitio" +msgid "Warning: Database versions differ by %1$d updates." +msgstr "Atención: Las versiones de la base de datos difieren en %1$d actualizaciones." -#: ../../Zotlabs/Module/Register.php:229 -#, php-format -msgid "I am over 13 years of age and accept the %s for this website" -msgstr "Tengo más de 13 años de edad y acepto los %s de este sitio" +#: ../../Zotlabs/Module/Import_items.php:106 +msgid "Import completed" +msgstr "Importación completada" -#: ../../Zotlabs/Module/Register.php:233 -msgid "Your email address" -msgstr "Su dirección de correo electrónico" +#: ../../Zotlabs/Module/Import_items.php:123 +msgid "Import Items" +msgstr "Importar elementos" -#: ../../Zotlabs/Module/Register.php:234 -msgid "Choose a password" -msgstr "Elija una contraseña" +#: ../../Zotlabs/Module/Import_items.php:124 +msgid "" +"Use this form to import existing posts and content from an export file." +msgstr "Utilice este formulario para importar entradas existentes y contenido desde un archivo de exportación." -#: ../../Zotlabs/Module/Register.php:235 -msgid "Please re-enter your password" -msgstr "Por favor, vuelva a escribir su contraseña" +#: ../../Zotlabs/Module/Import_items.php:125 +#: ../../Zotlabs/Module/Import.php:499 +msgid "File to Upload" +msgstr "Fichero para subir" -#: ../../Zotlabs/Module/Register.php:236 -msgid "Please enter your invitation code" -msgstr "Por favor, introduzca el código de su invitación" +#: ../../Zotlabs/Module/New_channel.php:121 +#: ../../Zotlabs/Module/Manage.php:136 +#, php-format +msgid "You have created %1$.0f of %2$.0f allowed channels." +msgstr "Ha creado %1$.0f de %2$.0f canales permitidos." -#: ../../Zotlabs/Module/Register.php:237 #: ../../Zotlabs/Module/New_channel.php:134 +#: ../../Zotlabs/Module/Register.php:237 msgid "Name or caption" msgstr "Nombre o descripción" -#: ../../Zotlabs/Module/Register.php:237 #: ../../Zotlabs/Module/New_channel.php:134 +#: ../../Zotlabs/Module/Register.php:237 msgid "Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\"" msgstr "Ejemplos: \"Juan García\", \"Luisa y sus caballos\", \"Fútbol\", \"Grupo de aviación\"" -#: ../../Zotlabs/Module/Register.php:239 #: ../../Zotlabs/Module/New_channel.php:136 +#: ../../Zotlabs/Module/Register.php:239 msgid "Choose a short nickname" msgstr "Elija un alias corto" -#: ../../Zotlabs/Module/Register.php:239 #: ../../Zotlabs/Module/New_channel.php:136 +#: ../../Zotlabs/Module/Register.php:239 #, php-format msgid "" "Your nickname will be used to create an easy to remember channel address " "e.g. nickname%s" msgstr "Su alias se usará para crear una dirección de canal fácil de recordar, p. ej.: alias%s" -#: ../../Zotlabs/Module/Register.php:240 #: ../../Zotlabs/Module/New_channel.php:137 +#: ../../Zotlabs/Module/Register.php:240 msgid "Channel role and privacy" msgstr "Clase de canal y privacidad" -#: ../../Zotlabs/Module/Register.php:240 #: ../../Zotlabs/Module/New_channel.php:137 +#: ../../Zotlabs/Module/Register.php:240 msgid "Select a channel role with your privacy requirements." msgstr "Seleccione un tipo de canal con sus requisitos de privacidad" -#: ../../Zotlabs/Module/Register.php:240 #: ../../Zotlabs/Module/New_channel.php:137 +#: ../../Zotlabs/Module/Register.php:240 msgid "Read more about roles" msgstr "Leer más sobre los roles" -#: ../../Zotlabs/Module/Register.php:241 -msgid "no" -msgstr "no" - -#: ../../Zotlabs/Module/Register.php:241 -msgid "yes" -msgstr "sí" - -#: ../../Zotlabs/Module/Register.php:253 -#: ../../Zotlabs/Module/Admin/Site.php:269 -msgid "Registration" -msgstr "Registro" - -#: ../../Zotlabs/Module/Register.php:258 -msgid "Membership on this site is by invitation only." -msgstr "Para registrarse en este sitio es necesaria una invitación." - -#: ../../Zotlabs/Module/Register.php:270 ../../include/nav.php:162 -#: ../../boot.php:1730 -msgid "Register" -msgstr "Registrarse" +#: ../../Zotlabs/Module/New_channel.php:140 +msgid "Create Channel" +msgstr "Crear un canal" -#: ../../Zotlabs/Module/Register.php:271 +#: ../../Zotlabs/Module/New_channel.php:141 msgid "" -"This site may require email verification after submitting this form. If you " -"are returned to a login page, please check your email for instructions." -msgstr "Este sitio puede requerir una verificación de correo electrónico después de enviar este formulario. Si es devuelto a una página de inicio de sesión, compruebe su email para recibir y leer las instrucciones." - -#: ../../Zotlabs/Module/Probe.php:28 ../../Zotlabs/Module/Probe.php:32 -#, php-format -msgid "Fetching URL returns error: %1$s" -msgstr "Al intentar obtener la dirección, retorna el error: %1$s" +"A channel is your identity on this network. It can represent a person, a " +"blog, or a forum to name a few. Channels can make connections with other " +"channels to share information with highly detailed permissions." +msgstr "Un canal es su identidad en esta red. Puede representar a una persona, un blog o un foro, por nombrar unos pocos ejemplos. Los canales se pueden conectar con otros canales para compartir información con una gama de permisos extremadamente detallada." -#: ../../Zotlabs/Module/Rmagic.php:35 -msgid "Authentication failed." -msgstr "Falló la autenticación." +#: ../../Zotlabs/Module/New_channel.php:142 +msgid "" +"or <a href=\"import\">import an existing channel</a> from another location." +msgstr "O <a href=\"import\">importar un canal existente</a> desde otro lugar." -#: ../../Zotlabs/Module/Rmagic.php:75 ../../include/channel.php:1989 -msgid "Remote Authentication" -msgstr "Acceso desde su servidor" +#: ../../Zotlabs/Module/Removeme.php:35 +msgid "" +"Channel removals are not allowed within 48 hours of changing the account " +"password." +msgstr "La eliminación de canales no está permitida hasta pasadas 48 horas desde el último cambio de contraseña." -#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:1990 -msgid "Enter your channel address (e.g. channel@example.com)" -msgstr "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)" +#: ../../Zotlabs/Module/Removeme.php:60 +msgid "Remove This Channel" +msgstr "Eliminar este canal" -#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:1991 -msgid "Authenticate" -msgstr "Acceder" +#: ../../Zotlabs/Module/Removeme.php:61 +#: ../../Zotlabs/Module/Removeaccount.php:58 +msgid "WARNING: " +msgstr "ATENCIÓN:" -#: ../../Zotlabs/Module/Import.php:57 ../../Zotlabs/Module/Import_items.php:42 -msgid "Nothing to import." -msgstr "No hay nada para importar." +#: ../../Zotlabs/Module/Removeme.php:61 +msgid "This channel will be completely removed from the network. " +msgstr "Este canal va a ser completamente eliminado de la red. " -#: ../../Zotlabs/Module/Import.php:69 ../../Zotlabs/Module/Import.php:84 -#: ../../Zotlabs/Module/Import_items.php:66 -msgid "Unable to download data from old server" -msgstr "No se han podido descargar datos de su antiguo servidor" +#: ../../Zotlabs/Module/Removeme.php:61 +#: ../../Zotlabs/Module/Removeaccount.php:58 +msgid "This action is permanent and can not be undone!" +msgstr "¡Esta acción tiene carácter definitivo y no se puede deshacer!" -#: ../../Zotlabs/Module/Import.php:91 ../../Zotlabs/Module/Import_items.php:72 -msgid "Imported file is empty." -msgstr "El fichero importado está vacío." +#: ../../Zotlabs/Module/Removeme.php:62 +#: ../../Zotlabs/Module/Removeaccount.php:59 +msgid "Please enter your password for verification:" +msgstr "Por favor, introduzca su contraseña para su verificación:" -#: ../../Zotlabs/Module/Import.php:111 -#: ../../Zotlabs/Module/Import_items.php:88 -#, php-format -msgid "Warning: Database versions differ by %1$d updates." -msgstr "Atención: Las versiones de la base de datos difieren en %1$d actualizaciones." +#: ../../Zotlabs/Module/Removeme.php:63 +msgid "Remove this channel and all its clones from the network" +msgstr "Eliminar este canal y todos sus clones de la red" -#: ../../Zotlabs/Module/Import.php:134 -#, php-format -msgid "Your service plan only allows %d channels." -msgstr "Su paquete de servicios solo permite %d canales." +#: ../../Zotlabs/Module/Removeme.php:63 +msgid "" +"By default only the instance of the channel located on this hub will be " +"removed from the network" +msgstr "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red" -#: ../../Zotlabs/Module/Import.php:149 -msgid "No channel. Import failed." -msgstr "No hay canal. La importación ha fallado" +#: ../../Zotlabs/Module/Removeme.php:64 +#: ../../Zotlabs/Module/Settings/Channel.php:575 +msgid "Remove Channel" +msgstr "Eliminar el canal" -#: ../../Zotlabs/Module/Import.php:467 -#: ../../extend/addon/addon/diaspora/import_diaspora.php:142 -msgid "Import completed." -msgstr "Importación completada." +#: ../../Zotlabs/Module/Sharedwithme.php:99 +msgid "Files: shared with me" +msgstr "Ficheros: compartidos conmigo" -#: ../../Zotlabs/Module/Import.php:488 -msgid "You must be logged in to use this feature." -msgstr "Debe estar registrado para poder usar esta funcionalidad." +#: ../../Zotlabs/Module/Sharedwithme.php:100 +#: ../../Zotlabs/Module/Admin/Channels.php:159 +#: ../../Zotlabs/Module/Settings/Oauth.php:89 +#: ../../Zotlabs/Module/Settings/Oauth.php:115 +#: ../../Zotlabs/Module/Wiki.php:172 ../../Zotlabs/Module/Connedit.php:910 +#: ../../Zotlabs/Module/Chat.php:249 ../../Zotlabs/Lib/NativeWikiPage.php:528 +#: ../../Zotlabs/Storage/Browser.php:233 +#: ../../Zotlabs/Widget/Wiki_page_history.php:22 +#: ../../addon/rendezvous/rendezvous.php:172 +#: ../../addon/cdav/Mod_Cdav.php:1136 ../../addon/gitwiki/Mod_Gitwiki.php:158 +msgid "Name" +msgstr "Nombre" -#: ../../Zotlabs/Module/Import.php:493 -msgid "Import Channel" -msgstr "Importar canal" +#: ../../Zotlabs/Module/Sharedwithme.php:101 +msgid "NEW" +msgstr "NUEVO" -#: ../../Zotlabs/Module/Import.php:494 -msgid "" -"Use this form to import an existing channel from a different server/hub. You" -" may retrieve the channel identity from the old server/hub via the network " -"or provide an export file." -msgstr "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación." +#: ../../Zotlabs/Module/Sharedwithme.php:102 +#: ../../Zotlabs/Storage/Browser.php:235 ../../include/text.php:1417 +msgid "Size" +msgstr "Tamaño" -#: ../../Zotlabs/Module/Import.php:495 -#: ../../Zotlabs/Module/Import_items.php:121 -msgid "File to Upload" -msgstr "Fichero para subir" +#: ../../Zotlabs/Module/Sharedwithme.php:103 +#: ../../Zotlabs/Storage/Browser.php:236 +msgid "Last Modified" +msgstr "Última modificación" -#: ../../Zotlabs/Module/Import.php:496 -msgid "Or provide the old server/hub details" -msgstr "O proporcione los detalles de su antiguo servidor/hub" +#: ../../Zotlabs/Module/Sharedwithme.php:104 +msgid "Remove all files" +msgstr "Eliminar todos los ficheros" -#: ../../Zotlabs/Module/Import.php:497 -msgid "Your old identity address (xyz@example.com)" -msgstr "Su identidad en el antiguo servidor (canal@ejemplo.com)" +#: ../../Zotlabs/Module/Sharedwithme.php:105 +msgid "Remove this file" +msgstr "Eliminar este fichero" -#: ../../Zotlabs/Module/Import.php:498 -msgid "Your old login email address" -msgstr "Su antigua dirección de correo electrónico" +#: ../../Zotlabs/Module/Setup.php:176 +msgid "$Projectname Server - Setup" +msgstr "Servidor $Projectname - Instalación" -#: ../../Zotlabs/Module/Import.php:499 -msgid "Your old login password" -msgstr "Su antigua contraseña" +#: ../../Zotlabs/Module/Setup.php:180 +msgid "Could not connect to database." +msgstr "No se ha podido conectar a la base de datos." -#: ../../Zotlabs/Module/Import.php:500 +#: ../../Zotlabs/Module/Setup.php:184 msgid "" -"For either option, please choose whether to make this hub your new primary " -"address, or whether your old location should continue this role. You will be" -" able to post from either location, but only one can be marked as the " -"primary location for files, photos, and media." -msgstr "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua dirección debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos." - -#: ../../Zotlabs/Module/Import.php:501 -msgid "Make this hub my primary location" -msgstr "Convertir este servidor en mi ubicación primaria" +"Could not connect to specified site URL. Possible SSL certificate or DNS " +"issue." +msgstr "No se puede conectar con la dirección del sitio indicada. Podría tratarse de un problema de SSL o DNS." -#: ../../Zotlabs/Module/Import.php:502 -msgid "Move this channel (disable all previous locations)" -msgstr "Mover este canal (desactivar todas las ubicaciones anteriores)" +#: ../../Zotlabs/Module/Setup.php:191 +msgid "Could not create table." +msgstr "No se puede crear la tabla." -#: ../../Zotlabs/Module/Import.php:503 -msgid "Import a few months of posts if possible (limited by available memory" -msgstr "Importar unos meses de mensajes si es posible (limitado por la memoria disponible" +#: ../../Zotlabs/Module/Setup.php:196 +msgid "Your site database has been installed." +msgstr "La base de datos del sitio ha sido instalada." -#: ../../Zotlabs/Module/Import.php:504 +#: ../../Zotlabs/Module/Setup.php:200 msgid "" -"This process may take several minutes to complete. Please submit the form " -"only once and leave this page open until finished." -msgstr "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine." - -#: ../../Zotlabs/Module/Chatsvc.php:131 -msgid "Away" -msgstr "Ausente" - -#: ../../Zotlabs/Module/Chatsvc.php:136 -msgid "Online" -msgstr "Conectado/a" - -#: ../../Zotlabs/Module/Help.php:23 -msgid "Documentation Search" -msgstr "Búsqueda de Documentación" - -#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1827 -msgid "About" -msgstr "Mi perfil" - -#: ../../Zotlabs/Module/Help.php:81 ../../Zotlabs/Module/Group.php:197 -msgid "Members" -msgstr "Miembros" - -#: ../../Zotlabs/Module/Help.php:82 -msgid "Administrators" -msgstr "Administradores" - -#: ../../Zotlabs/Module/Help.php:83 -msgid "Developers" -msgstr "Desarrolladores" - -#: ../../Zotlabs/Module/Help.php:84 -msgid "Tutorials" -msgstr "Tutoriales" - -#: ../../Zotlabs/Module/Help.php:93 -msgid "$Projectname Documentation" -msgstr "Documentación de $Projectname" - -#: ../../Zotlabs/Module/Help.php:94 -msgid "Contents" -msgstr "Contenidos" - -#: ../../Zotlabs/Module/Bookmarks.php:53 -msgid "Bookmark added" -msgstr "Marcador añadido" - -#: ../../Zotlabs/Module/Bookmarks.php:75 -msgid "My Bookmarks" -msgstr "Mis marcadores" +"You may need to import the file \"install/schema_xxx.sql\" manually using a " +"database client." +msgstr "Podría tener que importar manualmente el fichero \"install/schema_xxx.sql\" usando un cliente de base de datos." -#: ../../Zotlabs/Module/Bookmarks.php:86 -msgid "My Connections Bookmarks" -msgstr "Marcadores de mis conexiones" +#: ../../Zotlabs/Module/Setup.php:201 ../../Zotlabs/Module/Setup.php:263 +#: ../../Zotlabs/Module/Setup.php:748 +msgid "Please see the file \"install/INSTALL.txt\"." +msgstr "Por favor, lea el fichero \"install/INSTALL.txt\"." -#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109 -msgid "Continue" -msgstr "Continuar" +#: ../../Zotlabs/Module/Setup.php:260 +msgid "System check" +msgstr "Verificación del sistema" -#: ../../Zotlabs/Module/Connect.php:90 -msgid "Premium Channel Setup" -msgstr "Configuración del canal premium" +#: ../../Zotlabs/Module/Setup.php:265 +msgid "Check again" +msgstr "Verificar de nuevo" -#: ../../Zotlabs/Module/Connect.php:92 -msgid "Enable premium channel connection restrictions" -msgstr "Habilitar restricciones de conexión del canal premium" +#: ../../Zotlabs/Module/Setup.php:287 +msgid "Database connection" +msgstr "Conexión a la base de datos" -#: ../../Zotlabs/Module/Connect.php:93 +#: ../../Zotlabs/Module/Setup.php:288 msgid "" -"Please enter your restrictions or conditions, such as paypal receipt, usage " -"guidelines, etc." -msgstr "Por favor introduzca sus restricciones o condiciones, como recibo de paypal, normas de uso, etc." +"In order to install $Projectname we need to know how to connect to your " +"database." +msgstr "Para instalar $Projectname es necesario saber cómo conectar con su base de datos." -#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115 +#: ../../Zotlabs/Module/Setup.php:289 msgid "" -"This channel may require additional steps or acknowledgement of the " -"following conditions prior to connecting:" -msgstr "Este canal puede requerir antes de conectar unos pasos adicionales o el conocimiento de las siguientes condiciones:" +"Please contact your hosting provider or site administrator if you have " +"questions about these settings." +msgstr "Por favor, contacte con el proveedor de servicios o el administrador del sitio si tiene dudas sobre estos ajustes." -#: ../../Zotlabs/Module/Connect.php:96 +#: ../../Zotlabs/Module/Setup.php:290 msgid "" -"Potential connections will then see the following text before proceeding:" -msgstr "Las posibles conexiones verán, por tanto, el siguiente texto antes de proceder:" +"The database you specify below should already exist. If it does not, please " +"create it before continuing." +msgstr "La base de datos que especifique a continuación debe existir ya. Si no es así, por favor, créela antes de seguir." -#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118 -msgid "" -"By continuing, I certify that I have complied with any instructions provided" -" on this page." -msgstr "Al continuar, certifico que he cumplido con todas las instrucciones proporcionadas en esta página." +#: ../../Zotlabs/Module/Setup.php:294 +msgid "Database Server Name" +msgstr "Nombre del servidor de base de datos" -#: ../../Zotlabs/Module/Connect.php:106 -msgid "(No specific instructions have been provided by the channel owner.)" -msgstr "(No ha sido proporcionada ninguna instrucción específica por el propietario del canal.)" +#: ../../Zotlabs/Module/Setup.php:294 +msgid "Default is 127.0.0.1" +msgstr "De forma predeterminada es 127.0.0.1" -#: ../../Zotlabs/Module/Connect.php:114 -msgid "Restricted or Premium Channel" -msgstr "Canal premium o restringido" +#: ../../Zotlabs/Module/Setup.php:295 +msgid "Database Port" +msgstr "Puerto de la base de datos" -#: ../../Zotlabs/Module/Admin.php:60 -#: ../../Zotlabs/Module/Admin/Plugins.php:259 -#: ../../Zotlabs/Module/Admin/Themes.php:72 -#: ../../Zotlabs/Module/Filestorage.php:32 ../../Zotlabs/Module/Display.php:35 -#: ../../Zotlabs/Module/Viewsrc.php:24 ../../Zotlabs/Module/Thing.php:89 -#: ../../include/items.php:3368 -msgid "Item not found." -msgstr "Elemento no encontrado." +#: ../../Zotlabs/Module/Setup.php:295 +msgid "Communication port number - use 0 for default" +msgstr "Número del puerto de comunicaciones - use 0 como valor por defecto" -#: ../../Zotlabs/Module/Admin.php:94 -msgid "# Accounts" -msgstr "# Cuentas" +#: ../../Zotlabs/Module/Setup.php:296 +msgid "Database Login Name" +msgstr "Usuario de la base de datos" -#: ../../Zotlabs/Module/Admin.php:95 -msgid "# blocked accounts" -msgstr "# cuentas bloqueadas" +#: ../../Zotlabs/Module/Setup.php:297 +msgid "Database Login Password" +msgstr "Contraseña de acceso a la base de datos" -#: ../../Zotlabs/Module/Admin.php:96 -msgid "# expired accounts" -msgstr "# cuentas caducadas" +#: ../../Zotlabs/Module/Setup.php:298 +msgid "Database Name" +msgstr "Nombre de la base de datos" -#: ../../Zotlabs/Module/Admin.php:97 -msgid "# expiring accounts" -msgstr "# cuentas que caducan" +#: ../../Zotlabs/Module/Setup.php:299 +msgid "Database Type" +msgstr "Tipo de base de datos" -#: ../../Zotlabs/Module/Admin.php:108 -msgid "# Channels" -msgstr "# Canales" +#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:347 +msgid "Site administrator email address" +msgstr "Dirección de correo electrónico del administrador del sitio" -#: ../../Zotlabs/Module/Admin.php:109 -msgid "# primary" -msgstr "# primario" +#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:347 +msgid "" +"Your account email address must match this in order to use the web admin " +"panel." +msgstr "Su cuenta deberá usar la misma dirección de correo electrónico para poder utilizar el panel de administración web." -#: ../../Zotlabs/Module/Admin.php:110 -msgid "# clones" -msgstr "# clones" +#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:349 +msgid "Website URL" +msgstr "Dirección del sitio web" -#: ../../Zotlabs/Module/Admin.php:116 -msgid "Message queues" -msgstr "Mensajes en cola" +#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:349 +msgid "Please use SSL (https) URL if available." +msgstr "Por favor, use SSL (https) si está disponible." -#: ../../Zotlabs/Module/Admin.php:133 -msgid "Your software should be updated" -msgstr "Debe actualizar su software" +#: ../../Zotlabs/Module/Setup.php:303 ../../Zotlabs/Module/Setup.php:353 +msgid "Please select a default timezone for your website" +msgstr "Por favor, selecciones el huso horario por defecto de su sitio web" -#: ../../Zotlabs/Module/Admin.php:137 ../../Zotlabs/Module/Admin/Logs.php:82 -#: ../../Zotlabs/Module/Admin/Security.php:86 -#: ../../Zotlabs/Module/Admin/Accounts.php:164 -#: ../../Zotlabs/Module/Admin/Channels.php:145 -#: ../../Zotlabs/Module/Admin/Site.php:266 -#: ../../Zotlabs/Module/Admin/Plugins.php:341 -#: ../../Zotlabs/Module/Admin/Plugins.php:436 -#: ../../Zotlabs/Module/Admin/Themes.php:122 -#: ../../Zotlabs/Module/Admin/Themes.php:156 -msgid "Administration" -msgstr "Administración" +#: ../../Zotlabs/Module/Setup.php:328 ../../Zotlabs/Module/Admin/Site.php:258 +msgid "Basic/Minimal Social Networking" +msgstr "Red social básica o mínima" -#: ../../Zotlabs/Module/Admin.php:138 -msgid "Summary" -msgstr "Sumario" +#: ../../Zotlabs/Module/Setup.php:329 ../../Zotlabs/Module/Admin/Site.php:259 +msgid "Standard Configuration (default)" +msgstr "Configuración estándar (por defecto)" -#: ../../Zotlabs/Module/Admin.php:141 -msgid "Registered accounts" -msgstr "Cuentas registradas" +#: ../../Zotlabs/Module/Setup.php:330 ../../Zotlabs/Module/Admin/Site.php:260 +msgid "Professional" +msgstr "Profesional" -#: ../../Zotlabs/Module/Admin.php:142 -msgid "Pending registrations" -msgstr "Registros pendientes" +#: ../../Zotlabs/Module/Setup.php:336 +msgid "Site settings" +msgstr "Ajustes del sitio" -#: ../../Zotlabs/Module/Admin.php:143 -msgid "Registered channels" -msgstr "Canales registrados" +#: ../../Zotlabs/Module/Setup.php:351 ../../Zotlabs/Module/Admin/Site.php:289 +msgid "Server Configuration/Role" +msgstr "Configuración del servidor" -#: ../../Zotlabs/Module/Admin.php:144 -msgid "Active plugins" -msgstr "Extensiones (plugins) activas" +#: ../../Zotlabs/Module/Setup.php:392 +msgid "PHP version 5.5 or greater is required." +msgstr "Se requiere la versión 5.5, o superior, de PHP." -#: ../../Zotlabs/Module/Admin.php:145 -msgid "Version" -msgstr "Versión" +#: ../../Zotlabs/Module/Setup.php:393 +msgid "PHP version" +msgstr "Versión de PHP" -#: ../../Zotlabs/Module/Admin.php:146 -msgid "Repository version (master)" -msgstr "Versión del repositorio (master)" +#: ../../Zotlabs/Module/Setup.php:409 +msgid "Could not find a command line version of PHP in the web server PATH." +msgstr "No se puede encontrar una versión en línea de comandos de PHP en la ruta del servidor web." -#: ../../Zotlabs/Module/Admin.php:147 -msgid "Repository version (dev)" -msgstr "Versión del repositorio (dev)" +#: ../../Zotlabs/Module/Setup.php:410 +msgid "" +"If you don't have a command line version of PHP installed on server, you " +"will not be able to run background polling via cron." +msgstr "Si no tiene instalada la versión de línea de comandos de PHP en su servidor, no podrá realizar envíos en segundo plano mediante cron." -#: ../../Zotlabs/Module/Editblock.php:79 ../../Zotlabs/Module/Editblock.php:95 -#: ../../Zotlabs/Module/Editlayout.php:79 -#: ../../Zotlabs/Module/Editwebpage.php:80 -#: ../../Zotlabs/Module/Editpost.php:24 -msgid "Item not found" -msgstr "Elemento no encontrado" +#: ../../Zotlabs/Module/Setup.php:414 +msgid "PHP executable path" +msgstr "Ruta del ejecutable PHP" -#: ../../Zotlabs/Module/Editblock.php:108 ../../Zotlabs/Module/Blocks.php:97 -#: ../../Zotlabs/Module/Blocks.php:155 -msgid "Block Name" -msgstr "Nombre del bloque" +#: ../../Zotlabs/Module/Setup.php:414 +msgid "" +"Enter full path to php executable. You can leave this blank to continue the " +"installation." +msgstr "Introducir la ruta completa del ejecutable PHP. Puede dejar la línea en blanco para continuar la instalación." -#: ../../Zotlabs/Module/Editblock.php:111 -#: ../../Zotlabs/Module/Editwebpage.php:146 ../../Zotlabs/Module/Mail.php:287 -#: ../../Zotlabs/Module/Mail.php:412 ../../Zotlabs/Module/Chat.php:205 -#: ../../include/conversation.php:1295 -msgid "Insert web link" -msgstr "Insertar enlace web" +#: ../../Zotlabs/Module/Setup.php:419 +msgid "Command line PHP" +msgstr "PHP en línea de comandos" -#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1406 -msgid "Title (optional)" -msgstr "Título (opcional)" +#: ../../Zotlabs/Module/Setup.php:429 +msgid "" +"Unable to check command line PHP, as shell_exec() is disabled. This is " +"required." +msgstr "No se puede comprobar la línea de comandos PHP, ya que shell_exec() está deshabilitado. Es necesario que esté activado." -#: ../../Zotlabs/Module/Editblock.php:133 -msgid "Edit Block" -msgstr "Modificar este bloque" +#: ../../Zotlabs/Module/Setup.php:432 +msgid "" +"The command line version of PHP on your system does not have " +"\"register_argc_argv\" enabled." +msgstr "La línea de comandos PHP de su sistema no tiene activado \"register_argc_argv\"." -#: ../../Zotlabs/Module/Page.php:40 ../../Zotlabs/Module/Block.php:31 -msgid "Invalid item." -msgstr "Elemento no válido." +#: ../../Zotlabs/Module/Setup.php:433 +msgid "This is required for message delivery to work." +msgstr "Esto es necesario para que funcione la transmisión de mensajes." -#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Block.php:43 -#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Chanview.php:96 -#: ../../Zotlabs/Module/Wall_upload.php:31 -msgid "Channel not found." -msgstr "Canal no encontrado." +#: ../../Zotlabs/Module/Setup.php:436 +msgid "PHP register_argc_argv" +msgstr "PHP register_argc_argv" -#: ../../Zotlabs/Module/Page.php:131 +#: ../../Zotlabs/Module/Setup.php:454 +#, php-format msgid "" -"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " -"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam," -" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo " -"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse " -"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat " -"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." -msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +"Your max allowed total upload size is set to %s. Maximum size of one file to" +" upload is set to %s. You are allowed to upload up to %d files at once." +msgstr "La carga máxima que se le permite subir está establecida en %s. El tamaño máximo de un fichero está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez." -#: ../../Zotlabs/Module/Filer.php:52 -msgid "Save to Folder:" -msgstr "Guardar en carpeta:" +#: ../../Zotlabs/Module/Setup.php:459 +msgid "You can adjust these settings in the server php.ini file." +msgstr "Puede ajustar estos valores en el fichero php.ini de su servidor." -#: ../../Zotlabs/Module/Filer.php:52 -msgid "- select -" -msgstr "- seleccionar -" +#: ../../Zotlabs/Module/Setup.php:461 +msgid "PHP upload limits" +msgstr "Límites PHP de subida" -#: ../../Zotlabs/Module/Filer.php:53 ../../Zotlabs/Module/Admin/Profs.php:74 -#: ../../Zotlabs/Module/Admin/Profs.php:94 ../../Zotlabs/Module/Rbmark.php:32 -#: ../../Zotlabs/Module/Rbmark.php:104 ../../include/widgets.php:188 -#: ../../include/text.php:1011 ../../include/text.php:1023 -msgid "Save" -msgstr "Guardar" +#: ../../Zotlabs/Module/Setup.php:484 +msgid "" +"Error: the \"openssl_pkey_new\" function on this system is not able to " +"generate encryption keys" +msgstr "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado." -#: ../../Zotlabs/Module/Ping.php:254 -msgid "sent you a private message" -msgstr "le ha enviado un mensaje privado" +#: ../../Zotlabs/Module/Setup.php:485 +msgid "" +"If running under Windows, please see " +"\"http://www.php.net/manual/en/openssl.installation.php\"." +msgstr "Si está en un servidor Windows, por favor, lea \"http://www.php.net/manual/en/openssl.installation.php\"." -#: ../../Zotlabs/Module/Ping.php:302 -msgid "added your channel" -msgstr "añadió este canal a sus conexiones" +#: ../../Zotlabs/Module/Setup.php:488 +msgid "Generate encryption keys" +msgstr "Generar claves de cifrado" -#: ../../Zotlabs/Module/Ping.php:312 -msgid "g A l F d" -msgstr "g A l d F" +#: ../../Zotlabs/Module/Setup.php:505 +msgid "libCurl PHP module" +msgstr "módulo libCurl PHP" -#: ../../Zotlabs/Module/Ping.php:330 -msgid "[today]" -msgstr "[hoy]" +#: ../../Zotlabs/Module/Setup.php:506 +msgid "GD graphics PHP module" +msgstr "módulo PHP GD graphics" -#: ../../Zotlabs/Module/Ping.php:339 -msgid "posted an event" -msgstr "publicó un evento" +#: ../../Zotlabs/Module/Setup.php:507 +msgid "OpenSSL PHP module" +msgstr "módulo PHP OpenSSL" -#: ../../Zotlabs/Module/Connections.php:56 -#: ../../Zotlabs/Module/Connections.php:161 -#: ../../Zotlabs/Module/Connections.php:250 -msgid "Blocked" -msgstr "Bloqueadas" +#: ../../Zotlabs/Module/Setup.php:508 +msgid "PDO database PHP module" +msgstr "Módulo PHP de la base de datos PDO " -#: ../../Zotlabs/Module/Connections.php:61 -#: ../../Zotlabs/Module/Connections.php:168 -#: ../../Zotlabs/Module/Connections.php:249 -msgid "Ignored" -msgstr "Ignoradas" +#: ../../Zotlabs/Module/Setup.php:509 +msgid "mb_string PHP module" +msgstr "módulo PHP mb_string" -#: ../../Zotlabs/Module/Connections.php:66 -#: ../../Zotlabs/Module/Connections.php:182 -#: ../../Zotlabs/Module/Connections.php:248 -msgid "Hidden" -msgstr "Ocultas" +#: ../../Zotlabs/Module/Setup.php:510 +msgid "xml PHP module" +msgstr "módulo PHP xml" -#: ../../Zotlabs/Module/Connections.php:71 -#: ../../Zotlabs/Module/Connections.php:175 -#: ../../Zotlabs/Module/Connections.php:247 -msgid "Archived" -msgstr "Archivadas" +#: ../../Zotlabs/Module/Setup.php:514 ../../Zotlabs/Module/Setup.php:516 +msgid "Apache mod_rewrite module" +msgstr "módulo Apache mod_rewrite " -#: ../../Zotlabs/Module/Connections.php:76 -#: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116 -#: ../../include/conversation.php:1724 -msgid "New" -msgstr "Nuevas" +#: ../../Zotlabs/Module/Setup.php:514 +msgid "" +"Error: Apache webserver mod-rewrite module is required but not installed." +msgstr "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado." -#: ../../Zotlabs/Module/Connections.php:92 -#: ../../Zotlabs/Module/Connections.php:107 -#: ../../Zotlabs/Module/Connedit.php:720 ../../include/widgets.php:530 -msgid "All" -msgstr "Todos/as" +#: ../../Zotlabs/Module/Setup.php:520 ../../Zotlabs/Module/Setup.php:523 +msgid "exec" +msgstr "ejecutable" -#: ../../Zotlabs/Module/Connections.php:138 -msgid "New Connections" -msgstr "Nuevas conexiones" +#: ../../Zotlabs/Module/Setup.php:520 +msgid "" +"Error: exec is required but is either not installed or has been disabled in " +"php.ini" +msgstr "Error: se necesita un ejecutable pero o no se instaló o está deshabilitado en php.ini" -#: ../../Zotlabs/Module/Connections.php:141 -msgid "Show pending (new) connections" -msgstr "Mostrar conexiones (nuevas) pendientes" +#: ../../Zotlabs/Module/Setup.php:526 ../../Zotlabs/Module/Setup.php:529 +msgid "shell_exec" +msgstr "shell_exec" -#: ../../Zotlabs/Module/Connections.php:145 -#: ../../Zotlabs/Module/Profperm.php:140 -msgid "All Connections" -msgstr "Todas las conexiones" +#: ../../Zotlabs/Module/Setup.php:526 +msgid "" +"Error: shell_exec is required but is either not installed or has been " +"disabled in php.ini" +msgstr "Error: se necesita shell_exec pero o no se instaló o está deshabilitado en php.ini" -#: ../../Zotlabs/Module/Connections.php:148 -msgid "Show all connections" -msgstr "Mostrar todas las conexiones" +#: ../../Zotlabs/Module/Setup.php:534 +msgid "Error: libCURL PHP module required but not installed." +msgstr "Error: se necesita el módulo PHP libCURL pero no está instalado." -#: ../../Zotlabs/Module/Connections.php:164 -msgid "Only show blocked connections" -msgstr "Mostrar solo las conexiones bloqueadas" +#: ../../Zotlabs/Module/Setup.php:538 +msgid "" +"Error: GD graphics PHP module with JPEG support required but not installed." +msgstr "Error: el módulo PHP GD graphics es necesario, pero no está instalado." -#: ../../Zotlabs/Module/Connections.php:171 -msgid "Only show ignored connections" -msgstr "Mostrar solo conexiones ignoradas" +#: ../../Zotlabs/Module/Setup.php:542 +msgid "Error: openssl PHP module required but not installed." +msgstr "Error: el módulo PHP openssl es necesario, pero no está instalado." -#: ../../Zotlabs/Module/Connections.php:178 -msgid "Only show archived connections" -msgstr "Mostrar solo las conexiones archivadas" +#: ../../Zotlabs/Module/Setup.php:546 +msgid "Error: PDO database PHP module required but not installed." +msgstr "Error: se necesita el módulo PHP de la base de datos PDO, pero no está instalado." -#: ../../Zotlabs/Module/Connections.php:185 -msgid "Only show hidden connections" -msgstr "Mostrar solo las conexiones ocultas" +#: ../../Zotlabs/Module/Setup.php:550 +msgid "Error: mb_string PHP module required but not installed." +msgstr "Error: el módulo PHP mb_string es necesario, pero no está instalado." -#: ../../Zotlabs/Module/Connections.php:246 -msgid "Pending approval" -msgstr "Pendiente de aprobación" +#: ../../Zotlabs/Module/Setup.php:554 +msgid "Error: xml PHP module required for DAV but not installed." +msgstr "Error: el módulo PHP xml es necesario para DAV, pero no está instalado." -#: ../../Zotlabs/Module/Connections.php:262 -#, php-format -msgid "%1$s [%2$s]" -msgstr "%1$s [%2$s]" +#: ../../Zotlabs/Module/Setup.php:572 +msgid "" +"The web installer needs to be able to create a file called \".htconfig.php\"" +" in the top folder of your web server and it is unable to do so." +msgstr "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor." -#: ../../Zotlabs/Module/Connections.php:263 -msgid "Edit connection" -msgstr "Editar conexión" +#: ../../Zotlabs/Module/Setup.php:573 +msgid "" +"This is most often a permission setting, as the web server may not be able " +"to write files in your folder - even if you can." +msgstr "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos." -#: ../../Zotlabs/Module/Connections.php:264 -msgid "Delete connection" -msgstr "Eliminar conexión" +#: ../../Zotlabs/Module/Setup.php:574 +msgid "" +"At the end of this procedure, we will give you a text to save in a file " +"named .htconfig.php in your Red top folder." +msgstr "Al término de este procedimiento, podemos crear un fichero de texto para guardar con el nombre .htconfig.php en el directorio raíz de su instalación de Hubzilla." -#: ../../Zotlabs/Module/Connections.php:273 -msgid "Channel address" -msgstr "Dirección del canal" +#: ../../Zotlabs/Module/Setup.php:575 +msgid "" +"You can alternatively skip this procedure and perform a manual installation." +" Please see the file \"install/INSTALL.txt\" for instructions." +msgstr "Como alternativa, puede dejar este procedimiento e intentar realizar una instalación manual. Lea, por favor, el fichero\"install/INSTALL.txt\" para las instrucciones." -#: ../../Zotlabs/Module/Connections.php:275 -msgid "Network" -msgstr "Red" +#: ../../Zotlabs/Module/Setup.php:578 +msgid ".htconfig.php is writable" +msgstr ".htconfig.php tiene permisos de escritura" -#: ../../Zotlabs/Module/Connections.php:278 -msgid "Call" -msgstr "Llamar" +#: ../../Zotlabs/Module/Setup.php:592 +msgid "" +"This software uses the Smarty3 template engine to render its web views. " +"Smarty3 compiles templates to PHP to speed up rendering." +msgstr "Este software hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 compila las plantillas a PHP para acelerar la renderización." -#: ../../Zotlabs/Module/Connections.php:280 -msgid "Status" -msgstr "Estado" +#: ../../Zotlabs/Module/Setup.php:593 +#, php-format +msgid "" +"In order to store these compiled templates, the web server needs to have " +"write access to the directory %s under the top level web folder." +msgstr "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal." -#: ../../Zotlabs/Module/Connections.php:282 -msgid "Connected" -msgstr "Conectado/a" +#: ../../Zotlabs/Module/Setup.php:594 ../../Zotlabs/Module/Setup.php:615 +msgid "" +"Please ensure that the user that your web server runs as (e.g. www-data) has" +" write access to this folder." +msgstr "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data)." -#: ../../Zotlabs/Module/Connections.php:284 -msgid "Approve connection" -msgstr "Aprobar esta conexión" +#: ../../Zotlabs/Module/Setup.php:595 +#, php-format +msgid "" +"Note: as a security measure, you should give the web server write access to " +"%s only--not the template files (.tpl) that it contains." +msgstr "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene." -#: ../../Zotlabs/Module/Connections.php:285 -#: ../../Zotlabs/Module/Admin/Accounts.php:171 -msgid "Approve" -msgstr "Aprobar" +#: ../../Zotlabs/Module/Setup.php:598 +#, php-format +msgid "%s is writable" +msgstr "%s tiene permisos de escritura" -#: ../../Zotlabs/Module/Connections.php:286 -msgid "Ignore connection" -msgstr "Ignorar esta conexión" +#: ../../Zotlabs/Module/Setup.php:614 +msgid "" +"This software uses the store directory to save uploaded files. The web " +"server needs to have write access to the store directory under the top level" +" web folder" +msgstr "Este software utiliza el directorio de almacenamiento para guardar los ficheros subidos. El servidor web debe tener acceso de escritura a este directorio en la carpeta de nivel superior" -#: ../../Zotlabs/Module/Connections.php:287 -#: ../../Zotlabs/Module/Connedit.php:637 -msgid "Ignore" -msgstr "Ignorar" +#: ../../Zotlabs/Module/Setup.php:618 +msgid "store is writable" +msgstr "\"store\" tiene permisos de escritura" -#: ../../Zotlabs/Module/Connections.php:288 -msgid "Recent activity" -msgstr "Actividad reciente" +#: ../../Zotlabs/Module/Setup.php:650 +msgid "" +"SSL certificate cannot be validated. Fix certificate or disable https access" +" to this site." +msgstr "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio." -#: ../../Zotlabs/Module/Connections.php:312 ../../Zotlabs/Lib/Apps.php:216 -#: ../../include/nav.php:203 ../../include/text.php:940 -msgid "Connections" -msgstr "Conexiones" +#: ../../Zotlabs/Module/Setup.php:651 +msgid "" +"If you have https access to your website or allow connections to TCP port " +"443 (the https: port), you MUST use a browser-valid certificate. You MUST " +"NOT use self-signed certificates!" +msgstr "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo." -#: ../../Zotlabs/Module/Connections.php:316 ../../Zotlabs/Module/Search.php:44 -#: ../../Zotlabs/Lib/Apps.php:237 ../../include/widgets.php:302 -#: ../../include/acl_selectors.php:213 ../../include/nav.php:180 -#: ../../include/text.php:1010 ../../include/text.php:1022 -msgid "Search" -msgstr "Buscar" +#: ../../Zotlabs/Module/Setup.php:652 +msgid "" +"This restriction is incorporated because public posts from you may for " +"example contain references to images on your own hub." +msgstr "Se ha incorporado esta restricción para evitar que sus entradas públicas hagan referencia a imágenes en su propio servidor." -#: ../../Zotlabs/Module/Connections.php:317 -msgid "Search your connections" -msgstr "Buscar sus conexiones" +#: ../../Zotlabs/Module/Setup.php:653 +msgid "" +"If your certificate is not recognized, members of other sites (who may " +"themselves have valid certificates) will get a warning message on their own " +"site complaining about security issues." +msgstr "Si su certificado no ha sido reconocido, los miembros de otros sitios (con certificados válidos) recibirán mensajes de aviso en sus propios sitios web." -#: ../../Zotlabs/Module/Connections.php:318 -msgid "Connections search" -msgstr "Buscar conexiones" +#: ../../Zotlabs/Module/Setup.php:654 +msgid "" +"This can cause usability issues elsewhere (not just on your own site) so we " +"must insist on this requirement." +msgstr "Por razones de compatibilidad (sobre el conjunto de la red, no solo sobre su propio sitio), debemos insistir en estos requisitos." -#: ../../Zotlabs/Module/Connections.php:319 -#: ../../Zotlabs/Module/Directory.php:392 -#: ../../Zotlabs/Module/Directory.php:397 ../../include/contact_widgets.php:23 -msgid "Find" -msgstr "Encontrar" +#: ../../Zotlabs/Module/Setup.php:655 +msgid "" +"Providers are available that issue free certificates which are browser-" +"valid." +msgstr "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos." -#: ../../Zotlabs/Module/Cover_photo.php:58 -#: ../../Zotlabs/Module/Profile_photo.php:61 -msgid "Image uploaded but image cropping failed." -msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. " +#: ../../Zotlabs/Module/Setup.php:657 +msgid "" +"If you are confident that the certificate is valid and signed by a trusted " +"authority, check to see if you have failed to install an intermediate cert. " +"These are not normally required by browsers, but are required for server-to-" +"server communications." +msgstr "Si se tiene la certeza de que el certificado es válido y está firmado por una autoridad de confianza, comprobar para ver si hubo un error al instalar un certificado intermedio. Estos no son normalmente requeridos por los navegadores, pero son necesarios para las comunicaciones de servidor a servidor." -#: ../../Zotlabs/Module/Cover_photo.php:134 -#: ../../Zotlabs/Module/Cover_photo.php:181 -msgid "Cover Photos" -msgstr "Imágenes de portada del perfil" +#: ../../Zotlabs/Module/Setup.php:659 +msgid "SSL certificate validation" +msgstr "validación del certificado SSL" -#: ../../Zotlabs/Module/Cover_photo.php:154 -#: ../../Zotlabs/Module/Profile_photo.php:135 -msgid "Image resize failed." -msgstr "El ajuste del tamaño de la imagen ha fallado." +#: ../../Zotlabs/Module/Setup.php:665 +msgid "" +"Url rewrite in .htaccess is not working. Check your server " +"configuration.Test: " +msgstr "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:" -#: ../../Zotlabs/Module/Cover_photo.php:168 -#: ../../Zotlabs/Module/Profile_photo.php:201 ../../include/photos.php:149 -msgid "Unable to process image" -msgstr "No ha sido posible procesar la imagen" +#: ../../Zotlabs/Module/Setup.php:668 +msgid "Url rewrite is working" +msgstr "La reescritura de las direcciones funciona correctamente" -#: ../../Zotlabs/Module/Cover_photo.php:192 -#: ../../Zotlabs/Module/Profile_photo.php:236 -msgid "Image upload failed." -msgstr "La carga de la imagen ha fallado." +#: ../../Zotlabs/Module/Setup.php:682 +msgid "" +"The database configuration file \".htconfig.php\" could not be written. " +"Please use the enclosed text to create a configuration file in your web " +"server root." +msgstr "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor." -#: ../../Zotlabs/Module/Cover_photo.php:210 -#: ../../Zotlabs/Module/Profile_photo.php:255 -msgid "Unable to process image." -msgstr "No ha sido posible procesar la imagen." +#: ../../Zotlabs/Module/Setup.php:706 +#: ../../addon/rendezvous/rendezvous.php:401 ../../addon/cdav/cdav.php:41 +msgid "Errors encountered creating database tables." +msgstr "Se han encontrado errores al crear las tablas de la base de datos." -#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4278 -msgid "female" -msgstr "mujer" +#: ../../Zotlabs/Module/Setup.php:746 +msgid "<h1>What next</h1>" +msgstr "<h1>Siguiente paso</h1>" -#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4279 -#, php-format -msgid "%1$s updated her %2$s" -msgstr "%1$s ha actualizado su %2$s" +#: ../../Zotlabs/Module/Setup.php:747 +msgid "" +"IMPORTANT: You will need to [manually] setup a scheduled task for the " +"poller." +msgstr "IMPORTANTE: Debe crear [manualmente] una tarea programada para el \"poller\"." -#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4280 -msgid "male" -msgstr "hombre" +#: ../../Zotlabs/Module/Connect.php:61 ../../Zotlabs/Module/Connect.php:109 +msgid "Continue" +msgstr "Continuar" -#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4281 -#, php-format -msgid "%1$s updated his %2$s" -msgstr "%1$s ha actualizado su %2$s" +#: ../../Zotlabs/Module/Connect.php:90 +msgid "Premium Channel Setup" +msgstr "Configuración del canal premium" -#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4283 -#, php-format -msgid "%1$s updated their %2$s" -msgstr "%1$s ha actualizado su %2$s" +#: ../../Zotlabs/Module/Connect.php:92 +msgid "Enable premium channel connection restrictions" +msgstr "Habilitar restricciones de conexión del canal premium" -#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1764 -msgid "cover photo" -msgstr "Imagen de portada del perfil" +#: ../../Zotlabs/Module/Connect.php:93 +msgid "" +"Please enter your restrictions or conditions, such as paypal receipt, usage " +"guidelines, etc." +msgstr "Por favor introduzca sus restricciones o condiciones, como recibo de paypal, normas de uso, etc." -#: ../../Zotlabs/Module/Cover_photo.php:303 -#: ../../Zotlabs/Module/Cover_photo.php:318 -#: ../../Zotlabs/Module/Profile_photo.php:316 -#: ../../Zotlabs/Module/Profile_photo.php:363 -msgid "Photo not available." -msgstr "Foto no disponible." +#: ../../Zotlabs/Module/Connect.php:95 ../../Zotlabs/Module/Connect.php:115 +msgid "" +"This channel may require additional steps or acknowledgement of the " +"following conditions prior to connecting:" +msgstr "Este canal puede requerir antes de conectar unos pasos adicionales o el conocimiento de las siguientes condiciones:" -#: ../../Zotlabs/Module/Cover_photo.php:354 -#: ../../Zotlabs/Module/Profile_photo.php:418 -msgid "Upload File:" -msgstr "Subir fichero:" +#: ../../Zotlabs/Module/Connect.php:96 +msgid "" +"Potential connections will then see the following text before proceeding:" +msgstr "Las posibles conexiones verán, por tanto, el siguiente texto antes de proceder:" -#: ../../Zotlabs/Module/Cover_photo.php:355 -#: ../../Zotlabs/Module/Profile_photo.php:419 -msgid "Select a profile:" -msgstr "Seleccionar un perfil:" +#: ../../Zotlabs/Module/Connect.php:97 ../../Zotlabs/Module/Connect.php:118 +msgid "" +"By continuing, I certify that I have complied with any instructions provided" +" on this page." +msgstr "Al continuar, certifico que he cumplido con todas las instrucciones proporcionadas en esta página." -#: ../../Zotlabs/Module/Cover_photo.php:356 -msgid "Upload Cover Photo" -msgstr "Subir imagen de portada del perfil" +#: ../../Zotlabs/Module/Connect.php:106 +msgid "(No specific instructions have been provided by the channel owner.)" +msgstr "(No ha sido proporcionada ninguna instrucción específica por el propietario del canal.)" -#: ../../Zotlabs/Module/Cover_photo.php:361 -#: ../../Zotlabs/Module/Profile_photo.php:427 -#: ../../Zotlabs/Module/Settings/Channel.php:404 -msgid "or" -msgstr "o" +#: ../../Zotlabs/Module/Connect.php:114 +msgid "Restricted or Premium Channel" +msgstr "Canal premium o restringido" -#: ../../Zotlabs/Module/Cover_photo.php:361 -#: ../../Zotlabs/Module/Profile_photo.php:427 -msgid "skip this step" -msgstr "Omitir este paso" +#: ../../Zotlabs/Module/Admin/Queue.php:35 +msgid "Queue Statistics" +msgstr "Estadísticas de la cola" -#: ../../Zotlabs/Module/Cover_photo.php:361 -#: ../../Zotlabs/Module/Profile_photo.php:427 -msgid "select a photo from your photo albums" -msgstr "Seleccione una foto de sus álbumes de fotos" +#: ../../Zotlabs/Module/Admin/Queue.php:36 +msgid "Total Entries" +msgstr "Total de entradas" -#: ../../Zotlabs/Module/Cover_photo.php:377 -#: ../../Zotlabs/Module/Profile_photo.php:446 -msgid "Crop Image" -msgstr "Recortar imagen" +#: ../../Zotlabs/Module/Admin/Queue.php:37 +msgid "Priority" +msgstr "Prioridad" -#: ../../Zotlabs/Module/Cover_photo.php:378 -#: ../../Zotlabs/Module/Profile_photo.php:447 -msgid "Please adjust the image cropping for optimum viewing." -msgstr "Por favor ajuste el recorte de la imagen para una visión óptima." +#: ../../Zotlabs/Module/Admin/Queue.php:38 +msgid "Destination URL" +msgstr "Dirección de destino" -#: ../../Zotlabs/Module/Cover_photo.php:380 -#: ../../Zotlabs/Module/Profile_photo.php:449 -msgid "Done Editing" -msgstr "Edición completada" +#: ../../Zotlabs/Module/Admin/Queue.php:39 +msgid "Mark hub permanently offline" +msgstr "Marcar el servidor como permanentemente fuera de línea" + +#: ../../Zotlabs/Module/Admin/Queue.php:40 +msgid "Empty queue for this hub" +msgstr "Vaciar la cola para este servidor" + +#: ../../Zotlabs/Module/Admin/Queue.php:41 +msgid "Last known contact" +msgstr "Último contacto conocido" #: ../../Zotlabs/Module/Admin/Features.php:55 #: ../../Zotlabs/Module/Admin/Features.php:56 @@ -1442,260 +1935,211 @@ msgstr "Bloquear la funcionalidad %s" msgid "Manage Additional Features" msgstr "Gestionar las funcionalidades" -#: ../../Zotlabs/Module/Admin/Logs.php:28 -msgid "Log settings updated." -msgstr "Actualizado el informe de configuraciones." - -#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../include/widgets.php:1661 -#: ../../include/widgets.php:1671 -msgid "Logs" -msgstr "Informes" - -#: ../../Zotlabs/Module/Admin/Logs.php:85 -msgid "Clear" -msgstr "Vaciar" - -#: ../../Zotlabs/Module/Admin/Logs.php:91 -msgid "Debugging" -msgstr "Depuración" - -#: ../../Zotlabs/Module/Admin/Logs.php:92 -msgid "Log file" -msgstr "Fichero de informe" - -#: ../../Zotlabs/Module/Admin/Logs.php:92 -msgid "" -"Must be writable by web server. Relative to your top-level webserver " -"directory." -msgstr "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio web principal." - -#: ../../Zotlabs/Module/Admin/Logs.php:93 -msgid "Log level" -msgstr "Nivel de depuración" - -#: ../../Zotlabs/Module/Admin/Profs.php:69 -msgid "New Profile Field" -msgstr "Nuevo campo en el perfil" - -#: ../../Zotlabs/Module/Admin/Profs.php:70 -#: ../../Zotlabs/Module/Admin/Profs.php:90 -msgid "Field nickname" -msgstr "Alias del campo" - -#: ../../Zotlabs/Module/Admin/Profs.php:70 -#: ../../Zotlabs/Module/Admin/Profs.php:90 -msgid "System name of field" -msgstr "Nombre del campo en el sistema" - -#: ../../Zotlabs/Module/Admin/Profs.php:71 -#: ../../Zotlabs/Module/Admin/Profs.php:91 -msgid "Input type" -msgstr "Tipo de entrada" - -#: ../../Zotlabs/Module/Admin/Profs.php:72 -#: ../../Zotlabs/Module/Admin/Profs.php:92 -msgid "Field Name" -msgstr "Nombre del campo" - -#: ../../Zotlabs/Module/Admin/Profs.php:72 -#: ../../Zotlabs/Module/Admin/Profs.php:92 -msgid "Label on profile pages" -msgstr "Etiqueta a mostrar en la página del perfil" - -#: ../../Zotlabs/Module/Admin/Profs.php:73 -#: ../../Zotlabs/Module/Admin/Profs.php:93 -msgid "Help text" -msgstr "Texto de ayuda" - -#: ../../Zotlabs/Module/Admin/Profs.php:73 -#: ../../Zotlabs/Module/Admin/Profs.php:93 -msgid "Additional info (optional)" -msgstr "Información adicional (opcional)" - -#: ../../Zotlabs/Module/Admin/Profs.php:83 -msgid "Field definition not found" -msgstr "Definición del campo no encontrada" - -#: ../../Zotlabs/Module/Admin/Profs.php:89 -msgid "Edit Profile Field" -msgstr "Modificar el campo del perfil" +#: ../../Zotlabs/Module/Admin/Dbsync.php:19 +msgid "Update has been marked successful" +msgstr "La actualización ha sido marcada como exitosa" -#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../include/widgets.php:1642 -msgid "Profile Fields" -msgstr "Campos del perfil" +#: ../../Zotlabs/Module/Admin/Dbsync.php:29 +#, php-format +msgid "Executing %s failed. Check system logs." +msgstr "La ejecución de %s ha fallado. Mirar en los informes del sistema." -#: ../../Zotlabs/Module/Admin/Profs.php:148 -msgid "Basic Profile Fields" -msgstr "Campos básicos del perfil" +#: ../../Zotlabs/Module/Admin/Dbsync.php:32 +#, php-format +msgid "Update %s was successfully applied." +msgstr "La actualización de %s se ha realizado exitosamente." -#: ../../Zotlabs/Module/Admin/Profs.php:149 -msgid "Advanced Profile Fields" -msgstr "Campos avanzados del perfil" +#: ../../Zotlabs/Module/Admin/Dbsync.php:36 +#, php-format +msgid "Update %s did not return a status. Unknown if it succeeded." +msgstr "La actualización de %s no ha devuelto ningún estado. No se sabe si ha tenido éxito." -#: ../../Zotlabs/Module/Admin/Profs.php:149 -msgid "(In addition to basic fields)" -msgstr "(Además de los campos básicos)" +#: ../../Zotlabs/Module/Admin/Dbsync.php:39 +#, php-format +msgid "Update function %s could not be found." +msgstr "No se encuentra la función de actualización de %s." -#: ../../Zotlabs/Module/Admin/Profs.php:151 -msgid "All available fields" -msgstr "Todos los campos disponibles" +#: ../../Zotlabs/Module/Admin/Dbsync.php:55 +msgid "No failed updates." +msgstr "No ha fallado ninguna actualización." -#: ../../Zotlabs/Module/Admin/Profs.php:152 -msgid "Custom Fields" -msgstr "Campos personalizados" +#: ../../Zotlabs/Module/Admin/Dbsync.php:59 +msgid "Failed Updates" +msgstr "Han fallado las actualizaciones" -#: ../../Zotlabs/Module/Admin/Profs.php:156 -msgid "Create Custom Field" -msgstr "Crear un campo personalizado" +#: ../../Zotlabs/Module/Admin/Dbsync.php:61 +msgid "Mark success (if update was manually applied)" +msgstr "Marcar como exitosa (si la actualización se ha hecho manualmente)" -#: ../../Zotlabs/Module/Admin/Security.php:77 -msgid "" -"By default, unfiltered HTML is allowed in embedded media. This is inherently" -" insecure." -msgstr "De forma predeterminada, el HTML sin filtrar está permitido en el contenido multimedia incorporado en una publicación. Esto es siempre inseguro." +#: ../../Zotlabs/Module/Admin/Dbsync.php:62 +msgid "Attempt to execute this update step automatically" +msgstr "Intentar ejecutar este paso de actualización automáticamente" -#: ../../Zotlabs/Module/Admin/Security.php:80 -msgid "" -"The recommended setting is to only allow unfiltered HTML from the following " -"sites:" -msgstr "La configuración recomendada es que sólo se permita HTML sin filtrar desde los siguientes sitios: " +#: ../../Zotlabs/Module/Admin/Plugins.php:259 +#: ../../Zotlabs/Module/Admin/Themes.php:72 ../../Zotlabs/Module/Thing.php:89 +#: ../../Zotlabs/Module/Viewsrc.php:24 ../../Zotlabs/Module/Display.php:35 +#: ../../Zotlabs/Module/Filestorage.php:32 ../../Zotlabs/Module/Admin.php:60 +#: ../../include/items.php:3378 +msgid "Item not found." +msgstr "Elemento no encontrado." -#: ../../Zotlabs/Module/Admin/Security.php:81 -msgid "" -"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br" -" />https://vimeo.com/<br />https://soundcloud.com/<br />" -msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />" +#: ../../Zotlabs/Module/Admin/Plugins.php:289 +#, php-format +msgid "Plugin %s disabled." +msgstr "Extensión %s desactivada." -#: ../../Zotlabs/Module/Admin/Security.php:82 -msgid "" -"All other embedded content will be filtered, <strong>unless</strong> " -"embedded content from that site is explicitly blocked." -msgstr "El resto del contenido incrustado se filtrará, <strong>excepto</ strong> si el contenido incorporado desde ese sitio está bloqueado de forma explícita." +#: ../../Zotlabs/Module/Admin/Plugins.php:294 +#, php-format +msgid "Plugin %s enabled." +msgstr "Extensión %s activada." -#: ../../Zotlabs/Module/Admin/Security.php:87 ../../include/widgets.php:1637 -msgid "Security" -msgstr "Seguridad" +#: ../../Zotlabs/Module/Admin/Plugins.php:310 +#: ../../Zotlabs/Module/Admin/Themes.php:95 +msgid "Disable" +msgstr "Desactivar" -#: ../../Zotlabs/Module/Admin/Security.php:89 -msgid "Block public" -msgstr "Bloquear páginas públicas" +#: ../../Zotlabs/Module/Admin/Plugins.php:313 +#: ../../Zotlabs/Module/Admin/Themes.php:97 +msgid "Enable" +msgstr "Activar" -#: ../../Zotlabs/Module/Admin/Security.php:89 -msgid "" -"Check to block public access to all otherwise public personal pages on this " -"site unless you are currently authenticated." -msgstr "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado." +#: ../../Zotlabs/Module/Admin/Plugins.php:341 +#: ../../Zotlabs/Module/Admin/Plugins.php:436 +#: ../../Zotlabs/Module/Admin/Accounts.php:164 +#: ../../Zotlabs/Module/Admin/Logs.php:82 +#: ../../Zotlabs/Module/Admin/Channels.php:145 +#: ../../Zotlabs/Module/Admin/Themes.php:122 +#: ../../Zotlabs/Module/Admin/Themes.php:156 +#: ../../Zotlabs/Module/Admin/Site.php:277 +#: ../../Zotlabs/Module/Admin/Security.php:86 +#: ../../Zotlabs/Module/Admin.php:137 +msgid "Administration" +msgstr "Administración" -#: ../../Zotlabs/Module/Admin/Security.php:90 -msgid "Set \"Transport Security\" HTTP header" -msgstr "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP" +#: ../../Zotlabs/Module/Admin/Plugins.php:342 +#: ../../Zotlabs/Module/Admin/Plugins.php:437 +#: ../../Zotlabs/Widget/Admin.php:27 +msgid "Plugins" +msgstr "Extensiones (plugins)" -#: ../../Zotlabs/Module/Admin/Security.php:91 -msgid "Set \"Content Security Policy\" HTTP header" -msgstr "Habilitar la \"Política de seguridad del contenido\" (\"Content Security Policy\") en la cabecera HTTP" +#: ../../Zotlabs/Module/Admin/Plugins.php:343 +#: ../../Zotlabs/Module/Admin/Themes.php:124 +msgid "Toggle" +msgstr "Cambiar" -#: ../../Zotlabs/Module/Admin/Security.php:92 -msgid "Allowed email domains" -msgstr "Se aceptan dominios de correo electrónico" +#: ../../Zotlabs/Module/Admin/Plugins.php:344 +#: ../../Zotlabs/Module/Admin/Themes.php:125 ../../Zotlabs/Lib/Apps.php:223 +#: ../../Zotlabs/Widget/Settings_menu.php:131 ../../include/nav.php:203 +msgid "Settings" +msgstr "Ajustes" -#: ../../Zotlabs/Module/Admin/Security.php:92 -msgid "" -"Comma separated list of domains which are allowed in email addresses for " -"registrations to this site. Wildcards are accepted. Empty to allow any " -"domains" -msgstr "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. " +#: ../../Zotlabs/Module/Admin/Plugins.php:351 +#: ../../Zotlabs/Module/Admin/Themes.php:134 +msgid "Author: " +msgstr "Autor:" -#: ../../Zotlabs/Module/Admin/Security.php:93 -msgid "Not allowed email domains" -msgstr "No se permiten dominios de correo electrónico" +#: ../../Zotlabs/Module/Admin/Plugins.php:352 +#: ../../Zotlabs/Module/Admin/Themes.php:135 +msgid "Maintainer: " +msgstr "Mantenedor:" -#: ../../Zotlabs/Module/Admin/Security.php:93 -msgid "" -"Comma separated list of domains which are not allowed in email addresses for" -" registrations to this site. Wildcards are accepted. Empty to allow any " -"domains, unless allowed domains have been defined." -msgstr "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado." +#: ../../Zotlabs/Module/Admin/Plugins.php:353 +msgid "Minimum project version: " +msgstr "Versión mínima del proyecto:" -#: ../../Zotlabs/Module/Admin/Security.php:94 -msgid "Allow communications only from these sites" -msgstr "Permitir la comunicación solo desde estos sitios" +#: ../../Zotlabs/Module/Admin/Plugins.php:354 +msgid "Maximum project version: " +msgstr "Versión máxima del proyecto:" -#: ../../Zotlabs/Module/Admin/Security.php:94 -msgid "" -"One site per line. Leave empty to allow communication from anywhere by " -"default" -msgstr "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera" +#: ../../Zotlabs/Module/Admin/Plugins.php:355 +msgid "Minimum PHP version: " +msgstr "Versión mínima de PHP:" -#: ../../Zotlabs/Module/Admin/Security.php:95 -msgid "Block communications from these sites" -msgstr "Bloquear la comunicación desde estos sitios" +#: ../../Zotlabs/Module/Admin/Plugins.php:356 +msgid "Compatible Server Roles: " +msgstr "Configuraciones compatibles con este servidor:" -#: ../../Zotlabs/Module/Admin/Security.php:96 -msgid "Allow communications only from these channels" -msgstr "Permitir la comunicación solo desde estos canales" +#: ../../Zotlabs/Module/Admin/Plugins.php:357 +msgid "Requires: " +msgstr "Se requiere:" -#: ../../Zotlabs/Module/Admin/Security.php:96 -msgid "" -"One channel (hash) per line. Leave empty to allow from any channel by " -"default" -msgstr "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera" +#: ../../Zotlabs/Module/Admin/Plugins.php:358 +#: ../../Zotlabs/Module/Admin/Plugins.php:442 +msgid "Disabled - version incompatibility" +msgstr "Deshabilitado - versiones incompatibles" -#: ../../Zotlabs/Module/Admin/Security.php:97 -msgid "Block communications from these channels" -msgstr "Bloquear la comunicación desde estos canales" +#: ../../Zotlabs/Module/Admin/Plugins.php:411 +msgid "Enter the public git repository URL of the plugin repo." +msgstr "Escriba la URL pública del repositorio git del plugin." -#: ../../Zotlabs/Module/Admin/Security.php:98 -msgid "Only allow embeds from secure (SSL) websites and links." -msgstr "Sólo se permite contenido multimedia incorporado desde sitios y enlaces seguros (SSL)." +#: ../../Zotlabs/Module/Admin/Plugins.php:412 +msgid "Plugin repo git URL" +msgstr "URL del repositorio git del plugin" -#: ../../Zotlabs/Module/Admin/Security.php:99 -msgid "Allow unfiltered embedded HTML content only from these domains" -msgstr "Permitir contenido HTML sin filtrar sólo desde estos dominios " +#: ../../Zotlabs/Module/Admin/Plugins.php:413 +msgid "Custom repo name" +msgstr "Nombre personalizado del repositorio" -#: ../../Zotlabs/Module/Admin/Security.php:99 -msgid "One site per line. By default embedded content is filtered." -msgstr "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada." +#: ../../Zotlabs/Module/Admin/Plugins.php:413 +msgid "(optional)" +msgstr "(opcional)" -#: ../../Zotlabs/Module/Admin/Security.php:100 -msgid "Block embedded HTML from these domains" -msgstr "Bloquear contenido con HTML incorporado desde estos dominios" +#: ../../Zotlabs/Module/Admin/Plugins.php:414 +msgid "Download Plugin Repo" +msgstr "Descargar el repositorio" -#: ../../Zotlabs/Module/Admin/Account_edit.php:29 -#, php-format -msgid "Password changed for account %d." -msgstr "Ha cambiado la contraseña para la cuenta %d." +#: ../../Zotlabs/Module/Admin/Plugins.php:421 +msgid "Install new repo" +msgstr "Instalar un nuevo repositorio" -#: ../../Zotlabs/Module/Admin/Account_edit.php:46 -msgid "Account settings updated." -msgstr "Se han actualizado los ajustes de la cuenta." +#: ../../Zotlabs/Module/Admin/Plugins.php:422 ../../Zotlabs/Lib/Apps.php:348 +msgid "Install" +msgstr "Instalar" -#: ../../Zotlabs/Module/Admin/Account_edit.php:61 -msgid "Account not found." -msgstr "No se ha encontrado la cuenta." +#: ../../Zotlabs/Module/Admin/Plugins.php:423 +#: ../../Zotlabs/Module/Settings/Oauth.php:88 +#: ../../Zotlabs/Module/Settings/Oauth.php:114 +#: ../../Zotlabs/Module/Wiki.php:265 ../../Zotlabs/Module/Wiki.php:290 +#: ../../Zotlabs/Module/Connedit.php:928 ../../Zotlabs/Module/Fbrowser.php:66 +#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:804 +#: ../../Zotlabs/Module/Filer.php:55 ../../Zotlabs/Module/Tagrm.php:15 +#: ../../Zotlabs/Module/Tagrm.php:138 ../../addon/cdav/Mod_Cdav.php:866 +#: ../../addon/cdav/Mod_Cdav.php:1154 ../../addon/js_upload/js_upload.php:46 +#: ../../addon/gitwiki/Mod_Gitwiki.php:244 +#: ../../addon/gitwiki/Mod_Gitwiki.php:267 ../../include/conversation.php:1327 +#: ../../include/conversation.php:1376 +msgid "Cancel" +msgstr "Cancelar" -#: ../../Zotlabs/Module/Admin/Account_edit.php:68 -msgid "Account Edit" -msgstr "Editar la cuenta" +#: ../../Zotlabs/Module/Admin/Plugins.php:445 +msgid "Manage Repos" +msgstr "Gestionar los repositorios" -#: ../../Zotlabs/Module/Admin/Account_edit.php:69 -msgid "New Password" -msgstr "Nueva contraseña" +#: ../../Zotlabs/Module/Admin/Plugins.php:446 +msgid "Installed Plugin Repositories" +msgstr "Repositorios de los plugins instalados" -#: ../../Zotlabs/Module/Admin/Account_edit.php:70 -msgid "New Password again" -msgstr "Nueva contraseña otra vez" +#: ../../Zotlabs/Module/Admin/Plugins.php:447 +msgid "Install a New Plugin Repository" +msgstr "Instalar un nuevo repositorio de plugins" -#: ../../Zotlabs/Module/Admin/Account_edit.php:71 -msgid "Technical skill level" -msgstr "Nivel de habilidad técnica" +#: ../../Zotlabs/Module/Admin/Plugins.php:453 +#: ../../Zotlabs/Module/Settings/Oauth.php:42 +#: ../../Zotlabs/Module/Settings/Oauth.php:113 +#: ../../Zotlabs/Module/Connedit.php:926 ../../Zotlabs/Module/Profiles.php:802 +#: ../../Zotlabs/Lib/Apps.php:348 ../../addon/cdav/Mod_Cdav.php:1152 +msgid "Update" +msgstr "Actualizar" -#: ../../Zotlabs/Module/Admin/Account_edit.php:72 -msgid "Account language (for emails)" -msgstr "Idioma de la cuenta (para los correos electrónicos)" +#: ../../Zotlabs/Module/Admin/Plugins.php:454 +msgid "Switch branch" +msgstr "Cambiar la rama" -#: ../../Zotlabs/Module/Admin/Account_edit.php:73 -msgid "Service class" -msgstr "Clase de servicio" +#: ../../Zotlabs/Module/Admin/Plugins.php:455 +#: ../../Zotlabs/Module/Photos.php:960 ../../Zotlabs/Module/Tagrm.php:137 +#: ../../addon/superblock/superblock.php:116 +msgid "Remove" +msgstr "Eliminar" #: ../../Zotlabs/Module/Admin/Accounts.php:36 #, php-format @@ -1731,7 +2175,8 @@ msgid "Account '%s' unblocked" msgstr "La cuenta '%s' ha sido desbloqueada" #: ../../Zotlabs/Module/Admin/Accounts.php:165 -#: ../../Zotlabs/Module/Admin/Accounts.php:178 ../../include/widgets.php:1635 +#: ../../Zotlabs/Module/Admin/Accounts.php:178 +#: ../../Zotlabs/Widget/Admin.php:23 msgid "Accounts" msgstr "Cuentas" @@ -1750,13 +2195,10 @@ msgstr "Fecha de solicitud" #: ../../Zotlabs/Module/Admin/Accounts.php:169 #: ../../Zotlabs/Module/Admin/Accounts.php:181 -#: ../../Zotlabs/Module/Connedit.php:917 ../../Zotlabs/Module/Profiles.php:790 -#: ../../extend/addon/addon/redred/redred.php:107 -#: ../../extend/addon/addon/rtof/rtof.php:93 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1140 -#: ../../extend/addon/addon/openid/MysqlProvider.php:56 -#: ../../extend/addon/addon/openid/MysqlProvider.php:57 -#: ../../include/network.php:2270 +#: ../../Zotlabs/Module/Connedit.php:914 ../../Zotlabs/Module/Profiles.php:790 +#: ../../addon/cdav/Mod_Cdav.php:1140 ../../addon/openid/MysqlProvider.php:56 +#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/rtof.php:93 +#: ../../addon/redred/redred.php:107 ../../include/network.php:2270 msgid "Email" msgstr "Correo electrónico" @@ -1764,17 +2206,22 @@ msgstr "Correo electrónico" msgid "No registrations." msgstr "Sin registros." +#: ../../Zotlabs/Module/Admin/Accounts.php:171 +#: ../../Zotlabs/Module/Connections.php:281 +msgid "Approve" +msgstr "Aprobar" + #: ../../Zotlabs/Module/Admin/Accounts.php:172 msgid "Deny" msgstr "Rechazar" #: ../../Zotlabs/Module/Admin/Accounts.php:174 -#: ../../Zotlabs/Module/Connedit.php:629 +#: ../../Zotlabs/Module/Connedit.php:626 msgid "Block" msgstr "Bloquear" #: ../../Zotlabs/Module/Admin/Accounts.php:175 -#: ../../Zotlabs/Module/Connedit.php:629 +#: ../../Zotlabs/Module/Connedit.php:626 msgid "Unblock" msgstr "Desbloquear" @@ -1814,6 +2261,37 @@ msgid "" "this site will be permanently deleted!\\n\\nAre you sure?" msgstr "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?" +#: ../../Zotlabs/Module/Admin/Logs.php:28 +msgid "Log settings updated." +msgstr "Actualizado el informe de configuraciones." + +#: ../../Zotlabs/Module/Admin/Logs.php:83 ../../Zotlabs/Widget/Admin.php:48 +#: ../../Zotlabs/Widget/Admin.php:58 +msgid "Logs" +msgstr "Informes" + +#: ../../Zotlabs/Module/Admin/Logs.php:85 +msgid "Clear" +msgstr "Vaciar" + +#: ../../Zotlabs/Module/Admin/Logs.php:91 +msgid "Debugging" +msgstr "Depuración" + +#: ../../Zotlabs/Module/Admin/Logs.php:92 +msgid "Log file" +msgstr "Fichero de informe" + +#: ../../Zotlabs/Module/Admin/Logs.php:92 +msgid "" +"Must be writable by web server. Relative to your top-level webserver " +"directory." +msgstr "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio web principal." + +#: ../../Zotlabs/Module/Admin/Logs.php:93 +msgid "Log level" +msgstr "Nivel de depuración" + #: ../../Zotlabs/Module/Admin/Channels.php:31 #, php-format msgid "%s channel censored/uncensored" @@ -1864,7 +2342,8 @@ msgstr "Código permitido al canal '%s'" msgid "Channel '%s' code disallowed" msgstr "Código no permitido al canal '%s'" -#: ../../Zotlabs/Module/Admin/Channels.php:146 ../../include/widgets.php:1636 +#: ../../Zotlabs/Module/Admin/Channels.php:146 +#: ../../Zotlabs/Widget/Admin.php:24 msgid "Channels" msgstr "Canales" @@ -1885,7 +2364,7 @@ msgid "Disallow Code" msgstr "No permitir código" #: ../../Zotlabs/Module/Admin/Channels.php:154 -#: ../../include/conversation.php:1815 +#: ../../include/conversation.php:1751 msgid "Channel" msgstr "Canal" @@ -1893,13 +2372,6 @@ msgstr "Canal" msgid "UID" msgstr "UID" -#: ../../Zotlabs/Module/Admin/Channels.php:160 -#: ../../Zotlabs/Module/Locs.php:118 ../../Zotlabs/Module/Connedit.php:920 -#: ../../Zotlabs/Module/Profiles.php:502 ../../Zotlabs/Module/Profiles.php:793 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1143 -msgid "Address" -msgstr "Dirección" - #: ../../Zotlabs/Module/Admin/Channels.php:162 msgid "" "Selected channels will be deleted!\\n\\nEverything that was posted in these " @@ -1912,2780 +2384,2344 @@ msgid "" "channel on this site will be permanently deleted!\\n\\nAre you sure?" msgstr "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en este sitio se borrará definitivamente!\\n\\n¿Está seguro de querer hacerlo?" -#: ../../Zotlabs/Module/Admin/Dbsync.php:19 -msgid "Update has been marked successful" -msgstr "La actualización ha sido marcada como exitosa" - -#: ../../Zotlabs/Module/Admin/Dbsync.php:29 -#, php-format -msgid "Executing %s failed. Check system logs." -msgstr "La ejecución de %s ha fallado. Mirar en los informes del sistema." - -#: ../../Zotlabs/Module/Admin/Dbsync.php:32 -#, php-format -msgid "Update %s was successfully applied." -msgstr "La actualización de %s se ha realizado exitosamente." - -#: ../../Zotlabs/Module/Admin/Dbsync.php:36 -#, php-format -msgid "Update %s did not return a status. Unknown if it succeeded." -msgstr "La actualización de %s no ha devuelto ningún estado. No se sabe si ha tenido éxito." - -#: ../../Zotlabs/Module/Admin/Dbsync.php:39 -#, php-format -msgid "Update function %s could not be found." -msgstr "No se encuentra la función de actualización de %s." - -#: ../../Zotlabs/Module/Admin/Dbsync.php:55 -msgid "No failed updates." -msgstr "No ha fallado ninguna actualización." - -#: ../../Zotlabs/Module/Admin/Dbsync.php:59 -msgid "Failed Updates" -msgstr "Han fallado las actualizaciones" - -#: ../../Zotlabs/Module/Admin/Dbsync.php:61 -msgid "Mark success (if update was manually applied)" -msgstr "Marcar como exitosa (si la actualización se ha hecho manualmente)" - -#: ../../Zotlabs/Module/Admin/Dbsync.php:62 -msgid "Attempt to execute this update step automatically" -msgstr "Intentar ejecutar este paso de actualización automáticamente" - -#: ../../Zotlabs/Module/Admin/Queue.php:35 -msgid "Queue Statistics" -msgstr "Estadísticas de la cola" - -#: ../../Zotlabs/Module/Admin/Queue.php:36 -msgid "Total Entries" -msgstr "Total de entradas" +#: ../../Zotlabs/Module/Admin/Themes.php:26 +msgid "Theme settings updated." +msgstr "Ajustes del tema actualizados." -#: ../../Zotlabs/Module/Admin/Queue.php:37 -msgid "Priority" -msgstr "Prioridad" +#: ../../Zotlabs/Module/Admin/Themes.php:61 +msgid "No themes found." +msgstr "No se han encontrado temas." -#: ../../Zotlabs/Module/Admin/Queue.php:38 -msgid "Destination URL" -msgstr "Dirección de destino" +#: ../../Zotlabs/Module/Admin/Themes.php:116 +msgid "Screenshot" +msgstr "Instantánea de pantalla" -#: ../../Zotlabs/Module/Admin/Queue.php:39 -msgid "Mark hub permanently offline" -msgstr "Marcar el servidor como permanentemente fuera de línea" +#: ../../Zotlabs/Module/Admin/Themes.php:123 +#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../Zotlabs/Widget/Admin.php:28 +msgid "Themes" +msgstr "Temas" -#: ../../Zotlabs/Module/Admin/Queue.php:40 -msgid "Empty queue for this hub" -msgstr "Vaciar la cola para este servidor" +#: ../../Zotlabs/Module/Admin/Themes.php:162 +msgid "[Experimental]" +msgstr "[Experimental]" -#: ../../Zotlabs/Module/Admin/Queue.php:41 -msgid "Last known contact" -msgstr "Último contacto conocido" +#: ../../Zotlabs/Module/Admin/Themes.php:163 +msgid "[Unsupported]" +msgstr "[No soportado]" -#: ../../Zotlabs/Module/Admin/Site.php:133 +#: ../../Zotlabs/Module/Admin/Site.php:144 msgid "Site settings updated." msgstr "Ajustes del sitio actualizados." -#: ../../Zotlabs/Module/Admin/Site.php:159 ../../include/text.php:2936 +#: ../../Zotlabs/Module/Admin/Site.php:170 ../../include/text.php:2923 msgid "Default" msgstr "Predeterminado" -#: ../../Zotlabs/Module/Admin/Site.php:170 +#: ../../Zotlabs/Module/Admin/Site.php:181 #: ../../Zotlabs/Module/Settings/Display.php:137 #, php-format msgid "%s - (Incompatible)" msgstr "%s - (Incompatible)" -#: ../../Zotlabs/Module/Admin/Site.php:177 +#: ../../Zotlabs/Module/Admin/Site.php:188 #: ../../Zotlabs/Module/Settings/Display.php:151 msgid "mobile" msgstr "móvil" -#: ../../Zotlabs/Module/Admin/Site.php:179 +#: ../../Zotlabs/Module/Admin/Site.php:190 msgid "experimental" msgstr "experimental" -#: ../../Zotlabs/Module/Admin/Site.php:181 +#: ../../Zotlabs/Module/Admin/Site.php:192 msgid "unsupported" msgstr "no soportado" -#: ../../Zotlabs/Module/Admin/Site.php:226 ../../Zotlabs/Module/Menu.php:100 -#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Connedit.php:402 -#: ../../Zotlabs/Module/Connedit.php:786 ../../Zotlabs/Module/Events.php:470 -#: ../../Zotlabs/Module/Events.php:471 -#: ../../Zotlabs/Module/Filestorage.php:160 -#: ../../Zotlabs/Module/Filestorage.php:168 -#: ../../Zotlabs/Module/Photos.php:652 ../../Zotlabs/Module/Mitem.php:162 -#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 -#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Api.php:97 -#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Profiles.php:681 -#: ../../Zotlabs/Module/Settings/Channel.php:294 -#: ../../Zotlabs/Module/Settings/Display.php:103 -#: ../../Zotlabs/Module/Wiki.php:179 -#: ../../extend/addon/addon/dwpost/dwpost.php:73 -#: ../../extend/addon/addon/dwpost/dwpost.php:85 -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 -#: ../../extend/addon/addon/friendica/dfrn_request.php:865 -#: ../../extend/addon/addon/ijpost/ijpost.php:73 -#: ../../extend/addon/addon/ijpost/ijpost.php:85 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 -#: ../../extend/addon/addon/libertree/libertree.php:69 -#: ../../extend/addon/addon/libertree/libertree.php:81 -#: ../../extend/addon/addon/ljpost/ljpost.php:70 -#: ../../extend/addon/addon/ljpost/ljpost.php:82 -#: ../../extend/addon/addon/nofed/nofed.php:72 -#: ../../extend/addon/addon/nofed/nofed.php:76 -#: ../../extend/addon/addon/nsabait/nsabait.php:157 -#: ../../extend/addon/addon/nsfw/nsfw.php:84 -#: ../../extend/addon/addon/planets/planets.php:153 -#: ../../extend/addon/addon/pumpio/pumpio.php:219 -#: ../../extend/addon/addon/pumpio/pumpio.php:223 -#: ../../extend/addon/addon/pumpio/pumpio.php:227 -#: ../../extend/addon/addon/pumpio/pumpio.php:231 -#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 -#: ../../extend/addon/addon/redred/redred.php:95 -#: ../../extend/addon/addon/redred/redred.php:99 -#: ../../extend/addon/addon/rtof/rtof.php:81 -#: ../../extend/addon/addon/rtof/rtof.php:85 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 -#: ../../extend/addon/addon/statusnet/statusnet.php:389 -#: ../../extend/addon/addon/statusnet/statusnet.php:411 -#: ../../extend/addon/addon/statusnet/statusnet.php:415 -#: ../../extend/addon/addon/statusnet/statusnet.php:424 -#: ../../extend/addon/addon/twitter/twitter.php:242 -#: ../../extend/addon/addon/twitter/twitter.php:246 -#: ../../extend/addon/addon/twitter/twitter.php:255 -#: ../../extend/addon/addon/visage/visage.php:166 -#: ../../extend/addon/addon/wppost/wppost.php:82 -#: ../../extend/addon/addon/wppost/wppost.php:105 -#: ../../extend/addon/addon/wppost/wppost.php:109 -#: ../../extend/addon/addon/xmpp/xmpp.php:53 -#: ../../extend/addon/addon/cdav/cdav.php:234 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:164 -#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144 -#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:111 -#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1753 -msgid "No" -msgstr "No" - -#: ../../Zotlabs/Module/Admin/Site.php:227 +#: ../../Zotlabs/Module/Admin/Site.php:238 msgid "Yes - with approval" msgstr "Sí - con aprobación" -#: ../../Zotlabs/Module/Admin/Site.php:228 ../../Zotlabs/Module/Menu.php:100 -#: ../../Zotlabs/Module/Menu.php:157 ../../Zotlabs/Module/Connedit.php:402 -#: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Events.php:471 -#: ../../Zotlabs/Module/Filestorage.php:160 -#: ../../Zotlabs/Module/Filestorage.php:168 -#: ../../Zotlabs/Module/Photos.php:652 ../../Zotlabs/Module/Mitem.php:162 -#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:240 -#: ../../Zotlabs/Module/Mitem.php:241 ../../Zotlabs/Module/Api.php:96 -#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Profiles.php:681 -#: ../../Zotlabs/Module/Settings/Channel.php:294 -#: ../../Zotlabs/Module/Settings/Display.php:103 -#: ../../Zotlabs/Module/Wiki.php:179 -#: ../../extend/addon/addon/dwpost/dwpost.php:73 -#: ../../extend/addon/addon/dwpost/dwpost.php:85 -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 -#: ../../extend/addon/addon/friendica/dfrn_request.php:865 -#: ../../extend/addon/addon/ijpost/ijpost.php:73 -#: ../../extend/addon/addon/ijpost/ijpost.php:85 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 -#: ../../extend/addon/addon/libertree/libertree.php:69 -#: ../../extend/addon/addon/libertree/libertree.php:81 -#: ../../extend/addon/addon/ljpost/ljpost.php:70 -#: ../../extend/addon/addon/ljpost/ljpost.php:82 -#: ../../extend/addon/addon/nofed/nofed.php:72 -#: ../../extend/addon/addon/nofed/nofed.php:76 -#: ../../extend/addon/addon/nsabait/nsabait.php:157 -#: ../../extend/addon/addon/nsfw/nsfw.php:84 -#: ../../extend/addon/addon/planets/planets.php:153 -#: ../../extend/addon/addon/pumpio/pumpio.php:219 -#: ../../extend/addon/addon/pumpio/pumpio.php:223 -#: ../../extend/addon/addon/pumpio/pumpio.php:227 -#: ../../extend/addon/addon/pumpio/pumpio.php:231 -#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 -#: ../../extend/addon/addon/redred/redred.php:95 -#: ../../extend/addon/addon/redred/redred.php:99 -#: ../../extend/addon/addon/rtof/rtof.php:81 -#: ../../extend/addon/addon/rtof/rtof.php:85 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 -#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 -#: ../../extend/addon/addon/statusnet/statusnet.php:389 -#: ../../extend/addon/addon/statusnet/statusnet.php:411 -#: ../../extend/addon/addon/statusnet/statusnet.php:415 -#: ../../extend/addon/addon/statusnet/statusnet.php:424 -#: ../../extend/addon/addon/twitter/twitter.php:242 -#: ../../extend/addon/addon/twitter/twitter.php:246 -#: ../../extend/addon/addon/twitter/twitter.php:255 -#: ../../extend/addon/addon/visage/visage.php:166 -#: ../../extend/addon/addon/wppost/wppost.php:82 -#: ../../extend/addon/addon/wppost/wppost.php:105 -#: ../../extend/addon/addon/wppost/wppost.php:109 -#: ../../extend/addon/addon/xmpp/xmpp.php:53 -#: ../../extend/addon/addon/cdav/cdav.php:234 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:164 -#: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144 -#: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:111 -#: ../../view/theme/redbasic/php/config.php:136 ../../boot.php:1753 -msgid "Yes" -msgstr "Sí" - -#: ../../Zotlabs/Module/Admin/Site.php:233 +#: ../../Zotlabs/Module/Admin/Site.php:244 msgid "My site is not a public server" msgstr "Mi sitio no es un servidor público" -#: ../../Zotlabs/Module/Admin/Site.php:234 +#: ../../Zotlabs/Module/Admin/Site.php:245 msgid "My site has paid access only" msgstr "Mi sitio es un servicio de pago" -#: ../../Zotlabs/Module/Admin/Site.php:235 +#: ../../Zotlabs/Module/Admin/Site.php:246 msgid "My site has free access only" msgstr "Mi sitio es un servicio gratuito" -#: ../../Zotlabs/Module/Admin/Site.php:236 +#: ../../Zotlabs/Module/Admin/Site.php:247 msgid "My site offers free accounts with optional paid upgrades" msgstr "Mi sitio ofrece cuentas gratuitas con opciones extra de pago" -#: ../../Zotlabs/Module/Admin/Site.php:247 ../../Zotlabs/Module/Setup.php:328 -msgid "Basic/Minimal Social Networking" -msgstr "Red social básica o mínima" - -#: ../../Zotlabs/Module/Admin/Site.php:248 ../../Zotlabs/Module/Setup.php:329 -msgid "Standard Configuration (default)" -msgstr "Configuración estándar (por defecto)" - -#: ../../Zotlabs/Module/Admin/Site.php:249 ../../Zotlabs/Module/Setup.php:330 -msgid "Professional" -msgstr "Profesional" - -#: ../../Zotlabs/Module/Admin/Site.php:253 ../../Zotlabs/Lib/Techlevels.php:10 +#: ../../Zotlabs/Module/Admin/Site.php:264 ../../Zotlabs/Lib/Techlevels.php:10 msgid "Beginner/Basic" msgstr "Principiante / Básico" -#: ../../Zotlabs/Module/Admin/Site.php:254 ../../Zotlabs/Lib/Techlevels.php:11 +#: ../../Zotlabs/Module/Admin/Site.php:265 ../../Zotlabs/Lib/Techlevels.php:11 msgid "Novice - not skilled but willing to learn" msgstr "Novato: no cualificado, pero dispuesto a aprender" -#: ../../Zotlabs/Module/Admin/Site.php:255 ../../Zotlabs/Lib/Techlevels.php:12 +#: ../../Zotlabs/Module/Admin/Site.php:266 ../../Zotlabs/Lib/Techlevels.php:12 msgid "Intermediate - somewhat comfortable" msgstr "Intermedio: bastante cómodo" -#: ../../Zotlabs/Module/Admin/Site.php:256 ../../Zotlabs/Lib/Techlevels.php:13 +#: ../../Zotlabs/Module/Admin/Site.php:267 ../../Zotlabs/Lib/Techlevels.php:13 msgid "Advanced - very comfortable" msgstr "Avanzado: muy cómodo" -#: ../../Zotlabs/Module/Admin/Site.php:257 ../../Zotlabs/Lib/Techlevels.php:14 +#: ../../Zotlabs/Module/Admin/Site.php:268 ../../Zotlabs/Lib/Techlevels.php:14 msgid "Expert - I can write computer code" msgstr "Experto: puedo escribir código informático" -#: ../../Zotlabs/Module/Admin/Site.php:258 ../../Zotlabs/Lib/Techlevels.php:15 +#: ../../Zotlabs/Module/Admin/Site.php:269 ../../Zotlabs/Lib/Techlevels.php:15 msgid "Wizard - I probably know more than you do" msgstr "Asistente: probablemente sé más que tú" -#: ../../Zotlabs/Module/Admin/Site.php:267 ../../include/widgets.php:1634 +#: ../../Zotlabs/Module/Admin/Site.php:278 ../../Zotlabs/Widget/Admin.php:22 msgid "Site" msgstr "Sitio" -#: ../../Zotlabs/Module/Admin/Site.php:270 +#: ../../Zotlabs/Module/Admin/Site.php:280 +#: ../../Zotlabs/Module/Register.php:253 +msgid "Registration" +msgstr "Registro" + +#: ../../Zotlabs/Module/Admin/Site.php:281 msgid "File upload" msgstr "Subir fichero" -#: ../../Zotlabs/Module/Admin/Site.php:271 +#: ../../Zotlabs/Module/Admin/Site.php:282 msgid "Policies" msgstr "Políticas" -#: ../../Zotlabs/Module/Admin/Site.php:272 +#: ../../Zotlabs/Module/Admin/Site.php:283 #: ../../include/contact_widgets.php:16 msgid "Advanced" msgstr "Avanzado" -#: ../../Zotlabs/Module/Admin/Site.php:276 -#: ../../extend/addon/addon/statusnet/statusnet.php:890 +#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../addon/statusnet/statusnet.php:890 msgid "Site name" msgstr "Nombre del sitio" -#: ../../Zotlabs/Module/Admin/Site.php:278 ../../Zotlabs/Module/Setup.php:351 -msgid "Server Configuration/Role" -msgstr "Configuración del servidor" - -#: ../../Zotlabs/Module/Admin/Site.php:280 +#: ../../Zotlabs/Module/Admin/Site.php:291 msgid "Site default technical skill level" msgstr "Nivel de habilidad técnica predeterminado del sitio" -#: ../../Zotlabs/Module/Admin/Site.php:280 +#: ../../Zotlabs/Module/Admin/Site.php:291 msgid "Used to provide a member experience matched to technical comfort level" msgstr "Se utiliza para proporcionar una experiencia a los miembros adaptada a su nivel de comodidad técnica" -#: ../../Zotlabs/Module/Admin/Site.php:282 +#: ../../Zotlabs/Module/Admin/Site.php:293 msgid "Lock the technical skill level setting" msgstr "Bloquear el ajuste del nivel de habilidad técnica" -#: ../../Zotlabs/Module/Admin/Site.php:282 +#: ../../Zotlabs/Module/Admin/Site.php:293 msgid "Members can set their own technical comfort level by default" msgstr "Los miembros pueden configurar su nivel de comodidad técnica por defecto" -#: ../../Zotlabs/Module/Admin/Site.php:284 +#: ../../Zotlabs/Module/Admin/Site.php:295 msgid "Banner/Logo" msgstr "Banner/Logo" -#: ../../Zotlabs/Module/Admin/Site.php:285 +#: ../../Zotlabs/Module/Admin/Site.php:296 msgid "Administrator Information" msgstr "Información del Administrador" -#: ../../Zotlabs/Module/Admin/Site.php:285 +#: ../../Zotlabs/Module/Admin/Site.php:296 msgid "" "Contact information for site administrators. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Información de contacto de los administradores del sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" -#: ../../Zotlabs/Module/Admin/Site.php:286 +#: ../../Zotlabs/Module/Admin/Site.php:297 #: ../../Zotlabs/Module/Siteinfo.php:23 msgid "Site Information" msgstr "Información sobre el sitio" -#: ../../Zotlabs/Module/Admin/Site.php:286 +#: ../../Zotlabs/Module/Admin/Site.php:297 msgid "" "Publicly visible description of this site. Displayed on siteinfo page. " "BBCode can be used here" msgstr "Descripción pública de este sitio. Visible en la página \"siteinfo\". Se puede usar BBCode" -#: ../../Zotlabs/Module/Admin/Site.php:287 +#: ../../Zotlabs/Module/Admin/Site.php:298 msgid "System language" msgstr "Idioma del sistema" -#: ../../Zotlabs/Module/Admin/Site.php:288 +#: ../../Zotlabs/Module/Admin/Site.php:299 msgid "System theme" msgstr "Tema gráfico del sistema" -#: ../../Zotlabs/Module/Admin/Site.php:288 +#: ../../Zotlabs/Module/Admin/Site.php:299 msgid "" "Default system theme - may be over-ridden by user profiles - <a href='#' " "id='cnftheme'>change theme settings</a>" msgstr "Tema del sistema por defecto - se puede cambiar por cada perfil de usuario - <a href='#' id='cnftheme'>modificar los ajustes del tema</a>" -#: ../../Zotlabs/Module/Admin/Site.php:289 +#: ../../Zotlabs/Module/Admin/Site.php:300 msgid "Mobile system theme" msgstr "Tema del sistema para móviles" -#: ../../Zotlabs/Module/Admin/Site.php:289 +#: ../../Zotlabs/Module/Admin/Site.php:300 msgid "Theme for mobile devices" msgstr "Tema para dispositivos móviles" -#: ../../Zotlabs/Module/Admin/Site.php:291 +#: ../../Zotlabs/Module/Admin/Site.php:302 msgid "Allow Feeds as Connections" msgstr "Permitir contenidos RSS como conexiones" -#: ../../Zotlabs/Module/Admin/Site.php:291 +#: ../../Zotlabs/Module/Admin/Site.php:302 msgid "(Heavy system resource usage)" msgstr "(Uso intenso de los recursos del sistema)" -#: ../../Zotlabs/Module/Admin/Site.php:292 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "Maximum image size" msgstr "Tamaño máximo de la imagen" -#: ../../Zotlabs/Module/Admin/Site.php:292 +#: ../../Zotlabs/Module/Admin/Site.php:303 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "Tamaño máximo en bytes de la imagen subida. Por defecto, es 0, lo que significa que no hay límites." -#: ../../Zotlabs/Module/Admin/Site.php:293 +#: ../../Zotlabs/Module/Admin/Site.php:304 msgid "Does this site allow new member registration?" msgstr "¿Debe este sitio permitir el registro de nuevos miembros?" -#: ../../Zotlabs/Module/Admin/Site.php:294 +#: ../../Zotlabs/Module/Admin/Site.php:305 msgid "Invitation only" msgstr "Solo con una invitación" -#: ../../Zotlabs/Module/Admin/Site.php:294 +#: ../../Zotlabs/Module/Admin/Site.php:305 msgid "" "Only allow new member registrations with an invitation code. Above register " "policy must be set to Yes." msgstr "Solo se permiten inscripciones de nuevos miembros con un código de invitación. Además, deben aceptarse los términos del registro marcando \"Sí\"." -#: ../../Zotlabs/Module/Admin/Site.php:295 +#: ../../Zotlabs/Module/Admin/Site.php:306 msgid "Which best describes the types of account offered by this hub?" msgstr "¿Cómo describiría el tipo de servicio ofrecido por este servidor?" -#: ../../Zotlabs/Module/Admin/Site.php:296 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "Register text" msgstr "Texto del registro" -#: ../../Zotlabs/Module/Admin/Site.php:296 +#: ../../Zotlabs/Module/Admin/Site.php:307 msgid "Will be displayed prominently on the registration page." msgstr "Se mostrará de forma destacada en la página de registro." -#: ../../Zotlabs/Module/Admin/Site.php:297 +#: ../../Zotlabs/Module/Admin/Site.php:308 msgid "Site homepage to show visitors (default: login box)" msgstr "Página personal que se mostrará a los visitantes (por defecto: la página de identificación)" -#: ../../Zotlabs/Module/Admin/Site.php:297 +#: ../../Zotlabs/Module/Admin/Site.php:308 msgid "" "example: 'public' to show public stream, 'page/sys/home' to show a system " "webpage called 'home' or 'include:home.html' to include a file." msgstr "ejemplo: 'public' para mostrar contenido público, 'page/sys/home' para mostrar la página web definida como \"home\" o 'include:home.html' para mostrar el contenido de un fichero." -#: ../../Zotlabs/Module/Admin/Site.php:298 +#: ../../Zotlabs/Module/Admin/Site.php:309 msgid "Preserve site homepage URL" msgstr "Preservar la dirección de la página personal" -#: ../../Zotlabs/Module/Admin/Site.php:298 +#: ../../Zotlabs/Module/Admin/Site.php:309 msgid "" "Present the site homepage in a frame at the original location instead of " "redirecting" msgstr "Presenta la página personal del sitio en un marco en la ubicación original, en vez de redirigirla." -#: ../../Zotlabs/Module/Admin/Site.php:299 +#: ../../Zotlabs/Module/Admin/Site.php:310 msgid "Accounts abandoned after x days" msgstr "Cuentas abandonadas después de x días" -#: ../../Zotlabs/Module/Admin/Site.php:299 +#: ../../Zotlabs/Module/Admin/Site.php:310 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "Para evitar consumir recursos del sistema intentando poner al día las cuentas abandonadas. Introduzca 0 para no tener límite de tiempo." -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:311 msgid "Allowed friend domains" msgstr "Dominios amigos permitidos" -#: ../../Zotlabs/Module/Admin/Site.php:300 +#: ../../Zotlabs/Module/Admin/Site.php:311 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "Lista separada por comas de dominios a los que está permitido establecer relaciones de amistad con este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio." -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:312 msgid "Verify Email Addresses" msgstr "Verificar las direcciones de correo electrónico" -#: ../../Zotlabs/Module/Admin/Site.php:301 +#: ../../Zotlabs/Module/Admin/Site.php:312 msgid "" "Check to verify email addresses used in account registration (recommended)." msgstr "Activar para la verificación de la dirección de correo electrónico en el registro de una cuenta (recomendado)." -#: ../../Zotlabs/Module/Admin/Site.php:302 +#: ../../Zotlabs/Module/Admin/Site.php:313 msgid "Force publish" msgstr "Forzar la publicación" -#: ../../Zotlabs/Module/Admin/Site.php:302 +#: ../../Zotlabs/Module/Admin/Site.php:313 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "Intentar forzar todos los perfiles para que sean listados en el directorio de este sitio." -#: ../../Zotlabs/Module/Admin/Site.php:303 +#: ../../Zotlabs/Module/Admin/Site.php:314 msgid "Import Public Streams" msgstr "Importar contenido público" -#: ../../Zotlabs/Module/Admin/Site.php:303 +#: ../../Zotlabs/Module/Admin/Site.php:314 msgid "" "Import and allow access to public content pulled from other sites. Warning: " "this content is unmoderated." msgstr "Importar y permitir acceso al contenido público sacado de otros sitios. Advertencia: este contenido no está moderado, por lo que podría encontrar cosas inapropiadas u ofensivas." -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "Login on Homepage" msgstr "Iniciar sesión en la página personal" -#: ../../Zotlabs/Module/Admin/Site.php:304 +#: ../../Zotlabs/Module/Admin/Site.php:315 msgid "" "Present a login box to visitors on the home page if no other content has " "been configured." msgstr "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido." -#: ../../Zotlabs/Module/Admin/Site.php:305 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "Enable context help" msgstr "Habilitar la ayuda contextual" -#: ../../Zotlabs/Module/Admin/Site.php:305 +#: ../../Zotlabs/Module/Admin/Site.php:316 msgid "" "Display contextual help for the current page when the help button is " "pressed." msgstr "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda." -#: ../../Zotlabs/Module/Admin/Site.php:307 +#: ../../Zotlabs/Module/Admin/Site.php:318 +msgid "Reply-to email address for system generated email." +msgstr "Dirección de respuesta para el correo electrónico generado por el sistema." + +#: ../../Zotlabs/Module/Admin/Site.php:319 +msgid "Sender (From) email address for system generated email." +msgstr "Dirección del remitente (From) para el correo electrónico generado por el sistema." + +#: ../../Zotlabs/Module/Admin/Site.php:320 +msgid "Name of email sender for system generated email." +msgstr "Nombre del remitente del correo electrónico generado por el sistema." + +#: ../../Zotlabs/Module/Admin/Site.php:322 msgid "Directory Server URL" msgstr "URL del servidor de directorio" -#: ../../Zotlabs/Module/Admin/Site.php:307 +#: ../../Zotlabs/Module/Admin/Site.php:322 msgid "Default directory server" msgstr "Servidor de directorio predeterminado" -#: ../../Zotlabs/Module/Admin/Site.php:309 +#: ../../Zotlabs/Module/Admin/Site.php:324 msgid "Proxy user" msgstr "Usuario del proxy" -#: ../../Zotlabs/Module/Admin/Site.php:310 +#: ../../Zotlabs/Module/Admin/Site.php:325 msgid "Proxy URL" msgstr "Dirección del proxy" -#: ../../Zotlabs/Module/Admin/Site.php:311 +#: ../../Zotlabs/Module/Admin/Site.php:326 msgid "Network timeout" msgstr "Tiempo de espera de la red" -#: ../../Zotlabs/Module/Admin/Site.php:311 +#: ../../Zotlabs/Module/Admin/Site.php:326 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "Valor en segundos. Poner a 0 para que no haya tiempo límite (no recomendado)" -#: ../../Zotlabs/Module/Admin/Site.php:312 +#: ../../Zotlabs/Module/Admin/Site.php:327 msgid "Delivery interval" msgstr "Intervalo de entrega" -#: ../../Zotlabs/Module/Admin/Site.php:312 +#: ../../Zotlabs/Module/Admin/Site.php:327 msgid "" "Delay background delivery processes by this many seconds to reduce system " "load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " "for large dedicated servers." msgstr "Retrasar los procesos de transmisión en segundo plano por esta cantidad de segundos para reducir la carga del sistema. Recomendado: 4-5 para sitios compartidos, 2-3 para servidores virtuales privados, 0-1 para grandes servidores dedicados." -#: ../../Zotlabs/Module/Admin/Site.php:313 +#: ../../Zotlabs/Module/Admin/Site.php:328 msgid "Deliveries per process" msgstr "Intentos de envío por proceso" -#: ../../Zotlabs/Module/Admin/Site.php:313 +#: ../../Zotlabs/Module/Admin/Site.php:328 msgid "" "Number of deliveries to attempt in a single operating system process. Adjust" " if necessary to tune system performance. Recommend: 1-5." msgstr "Numero de envíos a intentar en un único proceso del sistema operativo. Ajustar si es necesario mejorar el rendimiento. Se recomienda: 1-5." -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:329 msgid "Poll interval" msgstr "Intervalo máximo de tiempo entre dos mensajes sucesivos" -#: ../../Zotlabs/Module/Admin/Site.php:314 +#: ../../Zotlabs/Module/Admin/Site.php:329 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "Retrasar el intervalo de envío en segundo plano, en esta cantidad de segundos, para reducir la carga del sistema. Si es 0, usar el intervalo de entrega." -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:330 msgid "Maximum Load Average" msgstr "Carga media máxima" -#: ../../Zotlabs/Module/Admin/Site.php:315 +#: ../../Zotlabs/Module/Admin/Site.php:330 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50." -#: ../../Zotlabs/Module/Admin/Site.php:316 +#: ../../Zotlabs/Module/Admin/Site.php:331 msgid "Expiration period in days for imported (grid/network) content" msgstr "Caducidad del contenido importado de otros sitios (en días)" -#: ../../Zotlabs/Module/Admin/Site.php:316 +#: ../../Zotlabs/Module/Admin/Site.php:331 msgid "0 for no expiration of imported content" msgstr "0 para que no caduque el contenido importado" -#: ../../Zotlabs/Module/Admin/Plugins.php:289 -#, php-format -msgid "Plugin %s disabled." -msgstr "Extensión %s desactivada." +#: ../../Zotlabs/Module/Admin/Profs.php:69 +msgid "New Profile Field" +msgstr "Nuevo campo en el perfil" -#: ../../Zotlabs/Module/Admin/Plugins.php:294 -#, php-format -msgid "Plugin %s enabled." -msgstr "Extensión %s activada." +#: ../../Zotlabs/Module/Admin/Profs.php:70 +#: ../../Zotlabs/Module/Admin/Profs.php:90 +msgid "Field nickname" +msgstr "Alias del campo" -#: ../../Zotlabs/Module/Admin/Plugins.php:310 -#: ../../Zotlabs/Module/Admin/Themes.php:95 -msgid "Disable" -msgstr "Desactivar" +#: ../../Zotlabs/Module/Admin/Profs.php:70 +#: ../../Zotlabs/Module/Admin/Profs.php:90 +msgid "System name of field" +msgstr "Nombre del campo en el sistema" -#: ../../Zotlabs/Module/Admin/Plugins.php:313 -#: ../../Zotlabs/Module/Admin/Themes.php:97 -msgid "Enable" -msgstr "Activar" +#: ../../Zotlabs/Module/Admin/Profs.php:71 +#: ../../Zotlabs/Module/Admin/Profs.php:91 +msgid "Input type" +msgstr "Tipo de entrada" -#: ../../Zotlabs/Module/Admin/Plugins.php:342 -#: ../../Zotlabs/Module/Admin/Plugins.php:437 ../../include/widgets.php:1639 -msgid "Plugins" -msgstr "Extensiones (plugins)" +#: ../../Zotlabs/Module/Admin/Profs.php:72 +#: ../../Zotlabs/Module/Admin/Profs.php:92 +msgid "Field Name" +msgstr "Nombre del campo" -#: ../../Zotlabs/Module/Admin/Plugins.php:343 -#: ../../Zotlabs/Module/Admin/Themes.php:124 -msgid "Toggle" -msgstr "Cambiar" +#: ../../Zotlabs/Module/Admin/Profs.php:72 +#: ../../Zotlabs/Module/Admin/Profs.php:92 +msgid "Label on profile pages" +msgstr "Etiqueta a mostrar en la página del perfil" -#: ../../Zotlabs/Module/Admin/Plugins.php:344 -#: ../../Zotlabs/Module/Admin/Themes.php:125 ../../Zotlabs/Lib/Apps.php:223 -#: ../../include/widgets.php:685 ../../include/nav.php:225 -msgid "Settings" -msgstr "Ajustes" +#: ../../Zotlabs/Module/Admin/Profs.php:73 +#: ../../Zotlabs/Module/Admin/Profs.php:93 +msgid "Help text" +msgstr "Texto de ayuda" -#: ../../Zotlabs/Module/Admin/Plugins.php:351 -#: ../../Zotlabs/Module/Admin/Themes.php:134 -msgid "Author: " -msgstr "Autor:" +#: ../../Zotlabs/Module/Admin/Profs.php:73 +#: ../../Zotlabs/Module/Admin/Profs.php:93 +msgid "Additional info (optional)" +msgstr "Información adicional (opcional)" -#: ../../Zotlabs/Module/Admin/Plugins.php:352 -#: ../../Zotlabs/Module/Admin/Themes.php:135 -msgid "Maintainer: " -msgstr "Mantenedor:" +#: ../../Zotlabs/Module/Admin/Profs.php:74 +#: ../../Zotlabs/Module/Admin/Profs.php:94 ../../Zotlabs/Module/Rbmark.php:32 +#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53 +#: ../../Zotlabs/Widget/Notes.php:18 ../../include/text.php:1028 +#: ../../include/text.php:1040 +msgid "Save" +msgstr "Guardar" -#: ../../Zotlabs/Module/Admin/Plugins.php:353 -msgid "Minimum project version: " -msgstr "Versión mínima del proyecto:" +#: ../../Zotlabs/Module/Admin/Profs.php:83 +msgid "Field definition not found" +msgstr "Definición del campo no encontrada" -#: ../../Zotlabs/Module/Admin/Plugins.php:354 -msgid "Maximum project version: " -msgstr "Versión máxima del proyecto:" +#: ../../Zotlabs/Module/Admin/Profs.php:89 +msgid "Edit Profile Field" +msgstr "Modificar el campo del perfil" -#: ../../Zotlabs/Module/Admin/Plugins.php:355 -msgid "Minimum PHP version: " -msgstr "Versión mínima de PHP:" +#: ../../Zotlabs/Module/Admin/Profs.php:147 ../../Zotlabs/Widget/Admin.php:30 +msgid "Profile Fields" +msgstr "Campos del perfil" -#: ../../Zotlabs/Module/Admin/Plugins.php:356 -msgid "Compatible Server Roles: " -msgstr "Configuraciones compatibles con este servidor:" +#: ../../Zotlabs/Module/Admin/Profs.php:148 +msgid "Basic Profile Fields" +msgstr "Campos básicos del perfil" -#: ../../Zotlabs/Module/Admin/Plugins.php:357 -msgid "Requires: " -msgstr "Se requiere:" +#: ../../Zotlabs/Module/Admin/Profs.php:149 +msgid "Advanced Profile Fields" +msgstr "Campos avanzados del perfil" -#: ../../Zotlabs/Module/Admin/Plugins.php:358 -#: ../../Zotlabs/Module/Admin/Plugins.php:442 -msgid "Disabled - version incompatibility" -msgstr "Deshabilitado - versiones incompatibles" +#: ../../Zotlabs/Module/Admin/Profs.php:149 +msgid "(In addition to basic fields)" +msgstr "(Además de los campos básicos)" -#: ../../Zotlabs/Module/Admin/Plugins.php:411 -msgid "Enter the public git repository URL of the plugin repo." -msgstr "Escriba la URL pública del repositorio git del plugin." +#: ../../Zotlabs/Module/Admin/Profs.php:151 +msgid "All available fields" +msgstr "Todos los campos disponibles" -#: ../../Zotlabs/Module/Admin/Plugins.php:412 -msgid "Plugin repo git URL" -msgstr "URL del repositorio git del plugin" +#: ../../Zotlabs/Module/Admin/Profs.php:152 +msgid "Custom Fields" +msgstr "Campos personalizados" -#: ../../Zotlabs/Module/Admin/Plugins.php:413 -msgid "Custom repo name" -msgstr "Nombre personalizado del repositorio" +#: ../../Zotlabs/Module/Admin/Profs.php:156 +msgid "Create Custom Field" +msgstr "Crear un campo personalizado" -#: ../../Zotlabs/Module/Admin/Plugins.php:413 -msgid "(optional)" -msgstr "(opcional)" +#: ../../Zotlabs/Module/Admin/Account_edit.php:29 +#, php-format +msgid "Password changed for account %d." +msgstr "Ha cambiado la contraseña para la cuenta %d." -#: ../../Zotlabs/Module/Admin/Plugins.php:414 -msgid "Download Plugin Repo" -msgstr "Descargar el repositorio" +#: ../../Zotlabs/Module/Admin/Account_edit.php:46 +msgid "Account settings updated." +msgstr "Se han actualizado los ajustes de la cuenta." -#: ../../Zotlabs/Module/Admin/Plugins.php:421 -msgid "Install new repo" -msgstr "Instalar un nuevo repositorio" +#: ../../Zotlabs/Module/Admin/Account_edit.php:61 +msgid "Account not found." +msgstr "No se ha encontrado la cuenta." -#: ../../Zotlabs/Module/Admin/Plugins.php:422 ../../Zotlabs/Lib/Apps.php:348 -msgid "Install" -msgstr "Instalar" +#: ../../Zotlabs/Module/Admin/Account_edit.php:68 +msgid "Account Edit" +msgstr "Editar la cuenta" -#: ../../Zotlabs/Module/Admin/Plugins.php:423 -#: ../../Zotlabs/Module/Connedit.php:931 ../../Zotlabs/Module/Fbrowser.php:66 -#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:804 -#: ../../Zotlabs/Module/Settings/Oauth.php:88 -#: ../../Zotlabs/Module/Settings/Oauth.php:114 -#: ../../Zotlabs/Module/Tagrm.php:15 ../../Zotlabs/Module/Tagrm.php:138 -#: ../../Zotlabs/Module/Wiki.php:261 ../../Zotlabs/Module/Wiki.php:286 -#: ../../extend/addon/addon/friendica/dfrn_request.php:879 -#: ../../extend/addon/addon/js_upload/js_upload.php:46 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:866 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1154 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:243 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:266 -#: ../../include/conversation.php:1394 ../../include/conversation.php:1443 -msgid "Cancel" -msgstr "Cancelar" +#: ../../Zotlabs/Module/Admin/Account_edit.php:69 +msgid "New Password" +msgstr "Nueva contraseña" -#: ../../Zotlabs/Module/Admin/Plugins.php:445 -msgid "Manage Repos" -msgstr "Gestionar los repositorios" +#: ../../Zotlabs/Module/Admin/Account_edit.php:70 +msgid "New Password again" +msgstr "Nueva contraseña otra vez" -#: ../../Zotlabs/Module/Admin/Plugins.php:446 -msgid "Installed Plugin Repositories" -msgstr "Repositorios de los plugins instalados" +#: ../../Zotlabs/Module/Admin/Account_edit.php:71 +msgid "Technical skill level" +msgstr "Nivel de habilidad técnica" -#: ../../Zotlabs/Module/Admin/Plugins.php:447 -msgid "Install a New Plugin Repository" -msgstr "Instalar un nuevo repositorio de plugins" +#: ../../Zotlabs/Module/Admin/Account_edit.php:72 +msgid "Account language (for emails)" +msgstr "Idioma de la cuenta (para los correos electrónicos)" -#: ../../Zotlabs/Module/Admin/Plugins.php:453 -#: ../../Zotlabs/Module/Connedit.php:929 ../../Zotlabs/Module/Profiles.php:802 -#: ../../Zotlabs/Module/Settings/Oauth.php:42 -#: ../../Zotlabs/Module/Settings/Oauth.php:113 ../../Zotlabs/Lib/Apps.php:348 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1152 -msgid "Update" -msgstr "Actualizar" +#: ../../Zotlabs/Module/Admin/Account_edit.php:73 +msgid "Service class" +msgstr "Clase de servicio" -#: ../../Zotlabs/Module/Admin/Plugins.php:454 -msgid "Switch branch" -msgstr "Cambiar la rama" +#: ../../Zotlabs/Module/Admin/Security.php:77 +msgid "" +"By default, unfiltered HTML is allowed in embedded media. This is inherently" +" insecure." +msgstr "De forma predeterminada, el HTML sin filtrar está permitido en el contenido multimedia incorporado en una publicación. Esto es siempre inseguro." -#: ../../Zotlabs/Module/Admin/Plugins.php:455 -#: ../../Zotlabs/Module/Photos.php:984 ../../Zotlabs/Module/Tagrm.php:137 -#: ../../extend/addon/addon/superblock/superblock.php:116 -msgid "Remove" -msgstr "Eliminar" +#: ../../Zotlabs/Module/Admin/Security.php:80 +msgid "" +"The recommended setting is to only allow unfiltered HTML from the following " +"sites:" +msgstr "La configuración recomendada es que sólo se permita HTML sin filtrar desde los siguientes sitios: " -#: ../../Zotlabs/Module/Admin/Themes.php:26 -msgid "Theme settings updated." -msgstr "Ajustes del tema actualizados." +#: ../../Zotlabs/Module/Admin/Security.php:81 +msgid "" +"https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br" +" />https://vimeo.com/<br />https://soundcloud.com/<br />" +msgstr "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />" -#: ../../Zotlabs/Module/Admin/Themes.php:61 -msgid "No themes found." -msgstr "No se han encontrado temas." +#: ../../Zotlabs/Module/Admin/Security.php:82 +msgid "" +"All other embedded content will be filtered, <strong>unless</strong> " +"embedded content from that site is explicitly blocked." +msgstr "El resto del contenido incrustado se filtrará, <strong>excepto</ strong> si el contenido incorporado desde ese sitio está bloqueado de forma explícita." -#: ../../Zotlabs/Module/Admin/Themes.php:116 -msgid "Screenshot" -msgstr "Instantánea de pantalla" +#: ../../Zotlabs/Module/Admin/Security.php:87 +#: ../../Zotlabs/Widget/Admin.php:25 +msgid "Security" +msgstr "Seguridad" -#: ../../Zotlabs/Module/Admin/Themes.php:123 -#: ../../Zotlabs/Module/Admin/Themes.php:157 ../../include/widgets.php:1640 -msgid "Themes" -msgstr "Temas" +#: ../../Zotlabs/Module/Admin/Security.php:89 +msgid "Block public" +msgstr "Bloquear páginas públicas" -#: ../../Zotlabs/Module/Admin/Themes.php:162 -msgid "[Experimental]" -msgstr "[Experimental]" +#: ../../Zotlabs/Module/Admin/Security.php:89 +msgid "" +"Check to block public access to all otherwise public personal pages on this " +"site unless you are currently authenticated." +msgstr "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado." -#: ../../Zotlabs/Module/Admin/Themes.php:163 -msgid "[Unsupported]" -msgstr "[No soportado]" +#: ../../Zotlabs/Module/Admin/Security.php:90 +msgid "Set \"Transport Security\" HTTP header" +msgstr "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP" -#: ../../Zotlabs/Module/Uexport.php:57 ../../Zotlabs/Module/Uexport.php:58 -msgid "Export Channel" -msgstr "Exportar el canal" +#: ../../Zotlabs/Module/Admin/Security.php:91 +msgid "Set \"Content Security Policy\" HTTP header" +msgstr "Habilitar la \"Política de seguridad del contenido\" (\"Content Security Policy\") en la cabecera HTTP" -#: ../../Zotlabs/Module/Uexport.php:59 +#: ../../Zotlabs/Module/Admin/Security.php:92 +msgid "Allowed email domains" +msgstr "Se aceptan dominios de correo electrónico" + +#: ../../Zotlabs/Module/Admin/Security.php:92 msgid "" -"Export your basic channel information to a file. This acts as a backup of " -"your connections, permissions, profile and basic data, which can be used to " -"import your data to a new server hub, but does not contain your content." -msgstr "Exportar la información básica del canal a un fichero. Este equivale a una copia de seguridad de sus conexiones, el perfil y datos fundamentales, que puede usarse para importar sus datos a un nuevo servidor, pero no incluye su contenido." +"Comma separated list of domains which are allowed in email addresses for " +"registrations to this site. Wildcards are accepted. Empty to allow any " +"domains" +msgstr "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. " -#: ../../Zotlabs/Module/Uexport.php:60 -msgid "Export Content" -msgstr "Exportar contenidos" +#: ../../Zotlabs/Module/Admin/Security.php:93 +msgid "Not allowed email domains" +msgstr "No se permiten dominios de correo electrónico" -#: ../../Zotlabs/Module/Uexport.php:61 +#: ../../Zotlabs/Module/Admin/Security.php:93 msgid "" -"Export your channel information and recent content to a JSON backup that can" -" be restored or imported to another server hub. This backs up all of your " -"connections, permissions, profile data and several months of posts. This " -"file may be VERY large. Please be patient - it may take several minutes for" -" this download to begin." -msgstr "Exportar la información sobre su canal y el contenido reciente a un fichero de respaldo JSON, que puede ser restaurado o importado a otro servidor. Este fichero incluye todas sus conexiones, permisos, datos del perfil y publicaciones de varios meses. Puede llegar a ser MUY grande. Por favor, sea paciente, la descarga puede tardar varios minutos en comenzar." +"Comma separated list of domains which are not allowed in email addresses for" +" registrations to this site. Wildcards are accepted. Empty to allow any " +"domains, unless allowed domains have been defined." +msgstr "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado." -#: ../../Zotlabs/Module/Uexport.php:63 -msgid "Export your posts from a given year." -msgstr "Exporta sus publicaciones de un año dado." +#: ../../Zotlabs/Module/Admin/Security.php:94 +msgid "Allow communications only from these sites" +msgstr "Permitir la comunicación solo desde estos sitios" -#: ../../Zotlabs/Module/Uexport.php:65 +#: ../../Zotlabs/Module/Admin/Security.php:94 msgid "" -"You may also export your posts and conversations for a particular year or " -"month. Adjust the date in your browser location bar to select other dates. " -"If the export fails (possibly due to memory exhaustion on your server hub), " -"please try again selecting a more limited date range." -msgstr "También puede exportar sus mensajes y conversaciones durante un año o mes en particular. Ajuste la fecha en la barra de direcciones del navegador para seleccionar otras fechas. Si la exportación falla (posiblemente debido al agotamiento de la memoria del servidor hub), por favor, intente de nuevo la selección de un rango de fechas más pequeño." +"One site per line. Leave empty to allow communication from anywhere by " +"default" +msgstr "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera" -#: ../../Zotlabs/Module/Uexport.php:66 -#, php-format +#: ../../Zotlabs/Module/Admin/Security.php:95 +msgid "Block communications from these sites" +msgstr "Bloquear la comunicación desde estos sitios" + +#: ../../Zotlabs/Module/Admin/Security.php:96 +msgid "Allow communications only from these channels" +msgstr "Permitir la comunicación solo desde estos canales" + +#: ../../Zotlabs/Module/Admin/Security.php:96 msgid "" -"To select all posts for a given year, such as this year, visit <a " -"href=\"%1$s\">%2$s</a>" -msgstr "Para seleccionar todos los mensajes de un año determinado, como este año, visite <a href=\"%1$s\">%2$s</a>" +"One channel (hash) per line. Leave empty to allow from any channel by " +"default" +msgstr "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera" -#: ../../Zotlabs/Module/Uexport.php:67 -#, php-format +#: ../../Zotlabs/Module/Admin/Security.php:97 +msgid "Block communications from these channels" +msgstr "Bloquear la comunicación desde estos canales" + +#: ../../Zotlabs/Module/Admin/Security.php:98 +msgid "Only allow embeds from secure (SSL) websites and links." +msgstr "Sólo se permite contenido multimedia incorporado desde sitios y enlaces seguros (SSL)." + +#: ../../Zotlabs/Module/Admin/Security.php:99 +msgid "Allow unfiltered embedded HTML content only from these domains" +msgstr "Permitir contenido HTML sin filtrar sólo desde estos dominios " + +#: ../../Zotlabs/Module/Admin/Security.php:99 +msgid "One site per line. By default embedded content is filtered." +msgstr "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada." + +#: ../../Zotlabs/Module/Admin/Security.php:100 +msgid "Block embedded HTML from these domains" +msgstr "Bloquear contenido con HTML incorporado desde estos dominios" + +#: ../../Zotlabs/Module/Lockview.php:75 +msgid "Remote privacy information not available." +msgstr "La información privada remota no está disponible." + +#: ../../Zotlabs/Module/Lockview.php:96 +msgid "Visible to:" +msgstr "Visible para:" + +#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153 +#: ../../Zotlabs/Module/Acl.php:117 ../../include/acl_selectors.php:183 +msgctxt "acl" +msgid "Profile" +msgstr "Perfil" + +#: ../../Zotlabs/Module/Settings/Permcats.php:37 +msgid "Permission category saved." +msgstr "Se ha guardado la categoría del permiso." + +#: ../../Zotlabs/Module/Settings/Permcats.php:61 msgid "" -"To select all posts for a given month, such as January of this year, visit " -"<a href=\"%1$s\">%2$s</a>" -msgstr "Para seleccionar todos los mensajes de un mes determinado, como el de enero de este año, visite <a href=\"%1$s\">%2$s</a>" +"Use this form to create permission rules for various classes of people or " +"connections." +msgstr "Utilice este formulario para crear reglas de permiso para varias clases de personas o conexiones." -#: ../../Zotlabs/Module/Uexport.php:68 -#, php-format +#: ../../Zotlabs/Module/Settings/Permcats.php:94 +msgid "Permission Categories" +msgstr "Categorías de autorización" + +#: ../../Zotlabs/Module/Settings/Permcats.php:102 +msgid "Permission Name" +msgstr "Nombre de la autorización" + +#: ../../Zotlabs/Module/Settings/Permcats.php:103 +#: ../../Zotlabs/Module/Settings/Tokens.php:161 +#: ../../Zotlabs/Module/Connedit.php:894 +msgid "My Settings" +msgstr "Mis ajustes" + +#: ../../Zotlabs/Module/Settings/Permcats.php:105 +#: ../../Zotlabs/Module/Settings/Tokens.php:163 +#: ../../Zotlabs/Module/Connedit.php:889 +msgid "inherited" +msgstr "heredado" + +#: ../../Zotlabs/Module/Settings/Permcats.php:108 +#: ../../Zotlabs/Module/Settings/Tokens.php:166 +#: ../../Zotlabs/Module/Connedit.php:896 +msgid "Individual Permissions" +msgstr "Permisos individuales" + +#: ../../Zotlabs/Module/Settings/Permcats.php:109 +#: ../../Zotlabs/Module/Settings/Tokens.php:167 +#: ../../Zotlabs/Module/Connedit.php:897 msgid "" -"These content files may be imported or restored by visiting <a " -"href=\"%1$s\">%2$s</a> on any site containing your channel. For best results" -" please import or restore these in date order (oldest first)." -msgstr "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1$s\">%2$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)." +"Some permissions may be inherited from your channel's <a " +"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " +"priority than individual settings. You can <strong>not</strong> change those" +" settings here." +msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí." -#: ../../Zotlabs/Module/Editlayout.php:127 -#: ../../Zotlabs/Module/Layouts.php:128 ../../Zotlabs/Module/Layouts.php:188 -msgid "Layout Name" -msgstr "Nombre de la plantilla" +#: ../../Zotlabs/Module/Settings/Channel.php:62 +#: ../../Zotlabs/Module/Settings/Channel.php:66 +#: ../../Zotlabs/Module/Settings/Channel.php:67 +#: ../../Zotlabs/Module/Settings/Channel.php:70 +#: ../../Zotlabs/Module/Settings/Channel.php:81 +#: ../../Zotlabs/Module/Connedit.php:715 ../../Zotlabs/Widget/Affinity.php:28 +#: ../../include/selectors.php:123 ../../include/channel.php:406 +#: ../../include/channel.php:407 ../../include/channel.php:414 +msgid "Friends" +msgstr "Amigos/as" -#: ../../Zotlabs/Module/Editlayout.php:128 -#: ../../Zotlabs/Module/Layouts.php:131 -msgid "Layout Description (Optional)" -msgstr "Descripción de la plantilla (opcional)" +#: ../../Zotlabs/Module/Settings/Channel.php:251 +#: ../../addon/rendezvous/rendezvous.php:82 +#: ../../addon/openstreetmap/openstreetmap.php:184 +#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54 +#: ../../addon/twitter/twitter.php:766 ../../addon/piwik/piwik.php:116 +#: ../../addon/xmpp/xmpp.php:102 +msgid "Settings updated." +msgstr "Ajustes actualizados." -#: ../../Zotlabs/Module/Editlayout.php:136 -msgid "Edit Layout" -msgstr "Modificar la plantilla" +#: ../../Zotlabs/Module/Settings/Channel.php:312 +msgid "Nobody except yourself" +msgstr "Nadie excepto usted" -#: ../../Zotlabs/Module/Editwebpage.php:142 -msgid "Page link" -msgstr "Enlace de la página" +#: ../../Zotlabs/Module/Settings/Channel.php:313 +msgid "Only those you specifically allow" +msgstr "Solo aquellos a los que usted permita explícitamente" -#: ../../Zotlabs/Module/Editwebpage.php:169 -msgid "Edit Webpage" -msgstr "Editar la página web" +#: ../../Zotlabs/Module/Settings/Channel.php:314 +msgid "Approved connections" +msgstr "Conexiones aprobadas" -#: ../../Zotlabs/Module/Apps.php:45 ../../include/nav.php:178 -msgid "Apps" -msgstr "Aplicaciones (apps)" +#: ../../Zotlabs/Module/Settings/Channel.php:315 +msgid "Any connections" +msgstr "Cualquier conexión" -#: ../../Zotlabs/Module/Apps.php:48 -msgid "Manage apps" -msgstr "Gestionar las aplicaciones" +#: ../../Zotlabs/Module/Settings/Channel.php:316 +msgid "Anybody on this website" +msgstr "Cualquiera en este sitio web" -#: ../../Zotlabs/Module/Apps.php:49 -msgid "Create new app" -msgstr "Crear una nueva aplicación" +#: ../../Zotlabs/Module/Settings/Channel.php:317 +msgid "Anybody in this network" +msgstr "Cualquiera en esta red" -#: ../../Zotlabs/Module/Dirsearch.php:25 ../../Zotlabs/Module/Regdir.php:49 -msgid "This site is not a directory server" -msgstr "Este sitio no es un servidor de directorio" +#: ../../Zotlabs/Module/Settings/Channel.php:318 +msgid "Anybody authenticated" +msgstr "Cualquiera que esté autenticado" -#: ../../Zotlabs/Module/Dirsearch.php:33 -msgid "This directory server requires an access token" -msgstr "El servidor de este directorio necesita un \"token\" de acceso" +#: ../../Zotlabs/Module/Settings/Channel.php:319 +msgid "Anybody on the internet" +msgstr "Cualquiera en internet" -#: ../../Zotlabs/Module/Network.php:96 -msgid "No such group" -msgstr "No se encuentra el grupo" +#: ../../Zotlabs/Module/Settings/Channel.php:395 +msgid "Publish your default profile in the network directory" +msgstr "Publicar su perfil principal en el directorio de la red" -#: ../../Zotlabs/Module/Network.php:136 -msgid "No such channel" -msgstr "No se encuentra el canal" +#: ../../Zotlabs/Module/Settings/Channel.php:400 +msgid "Allow us to suggest you as a potential friend to new members?" +msgstr "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?" -#: ../../Zotlabs/Module/Network.php:141 -msgid "forum" -msgstr "foro" +#: ../../Zotlabs/Module/Settings/Channel.php:404 +#: ../../Zotlabs/Module/Profile_photo.php:429 +#: ../../Zotlabs/Module/Cover_photo.php:365 +msgid "or" +msgstr "o" -#: ../../Zotlabs/Module/Network.php:153 -msgid "Search Results For:" -msgstr "Buscar resultados para:" +#: ../../Zotlabs/Module/Settings/Channel.php:409 +msgid "Your channel address is" +msgstr "Su dirección de canal es" -#: ../../Zotlabs/Module/Network.php:221 -msgid "Privacy group is empty" -msgstr "El grupo de canales está vacío" +#: ../../Zotlabs/Module/Settings/Channel.php:412 +msgid "Your files/photos are accessible via WebDAV at" +msgstr "Sus archivos y fotos son accesibles a través de WebDAV en " -#: ../../Zotlabs/Module/Network.php:230 -msgid "Privacy group: " -msgstr "Grupo de canales: " +#: ../../Zotlabs/Module/Settings/Channel.php:474 +msgid "Channel Settings" +msgstr "Ajustes del canal" -#: ../../Zotlabs/Module/Network.php:256 -msgid "Invalid connection." -msgstr "Conexión no válida." +#: ../../Zotlabs/Module/Settings/Channel.php:481 +msgid "Basic Settings" +msgstr "Configuración básica" -#: ../../Zotlabs/Module/Network.php:275 -#: ../../extend/addon/addon/redred/redred.php:65 -msgid "Invalid channel." -msgstr "El canal no es válido." +#: ../../Zotlabs/Module/Settings/Channel.php:482 +#: ../../include/channel.php:1248 +msgid "Full Name:" +msgstr "Nombre completo:" -#: ../../Zotlabs/Module/Menu.php:49 -msgid "Unable to update menu." -msgstr "No se puede actualizar el menú." +#: ../../Zotlabs/Module/Settings/Channel.php:483 +#: ../../Zotlabs/Module/Settings/Account.php:119 +msgid "Email Address:" +msgstr "Dirección de correo electrónico:" -#: ../../Zotlabs/Module/Menu.php:60 -msgid "Unable to create menu." -msgstr "No se puede crear el menú." +#: ../../Zotlabs/Module/Settings/Channel.php:484 +msgid "Your Timezone:" +msgstr "Su huso horario:" -#: ../../Zotlabs/Module/Menu.php:98 ../../Zotlabs/Module/Menu.php:110 -msgid "Menu Name" -msgstr "Nombre del menú" +#: ../../Zotlabs/Module/Settings/Channel.php:485 +msgid "Default Post Location:" +msgstr "Localización geográfica predeterminada para sus publicaciones:" -#: ../../Zotlabs/Module/Menu.php:98 -msgid "Unique name (not visible on webpage) - required" -msgstr "Nombre único (no será visible en la página web) - requerido" +#: ../../Zotlabs/Module/Settings/Channel.php:485 +msgid "Geographical location to display on your posts" +msgstr "Localización geográfica que debe mostrarse en sus publicaciones" -#: ../../Zotlabs/Module/Menu.php:99 ../../Zotlabs/Module/Menu.php:111 -msgid "Menu Title" -msgstr "Título del menú" +#: ../../Zotlabs/Module/Settings/Channel.php:486 +msgid "Use Browser Location:" +msgstr "Usar la localización geográfica del navegador:" -#: ../../Zotlabs/Module/Menu.php:99 -msgid "Visible on webpage - leave empty for no title" -msgstr "Visible en la página web - no ponga nada si no desea un título" +#: ../../Zotlabs/Module/Settings/Channel.php:488 +msgid "Adult Content" +msgstr "Contenido solo para adultos" -#: ../../Zotlabs/Module/Menu.php:100 -msgid "Allow Bookmarks" -msgstr "Permitir marcadores" +#: ../../Zotlabs/Module/Settings/Channel.php:488 +msgid "" +"This channel frequently or regularly publishes adult content. (Please tag " +"any adult material and/or nudity with #NSFW)" +msgstr "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)" -#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157 -msgid "Menu may be used to store saved bookmarks" -msgstr "El menú se puede usar para guardar marcadores" +#: ../../Zotlabs/Module/Settings/Channel.php:490 +msgid "Security and Privacy Settings" +msgstr "Configuración de seguridad y privacidad" -#: ../../Zotlabs/Module/Menu.php:101 ../../Zotlabs/Module/Menu.php:159 -msgid "Submit and proceed" -msgstr "Enviar y proceder" +#: ../../Zotlabs/Module/Settings/Channel.php:493 +msgid "Your permissions are already configured. Click to view/adjust" +msgstr "Sus permisos ya están configurados. Pulse para ver/ajustar" -#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2289 -msgid "Menus" -msgstr "Menús" +#: ../../Zotlabs/Module/Settings/Channel.php:495 +msgid "Hide my online presence" +msgstr "Ocultar mi presencia en línea" -#: ../../Zotlabs/Module/Menu.php:113 ../../Zotlabs/Module/Locs.php:120 -msgid "Drop" -msgstr "Eliminar" +#: ../../Zotlabs/Module/Settings/Channel.php:495 +msgid "Prevents displaying in your profile that you are online" +msgstr "Evitar mostrar en su perfil que está en línea" -#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:255 -#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Layouts.php:190 -#: ../../include/page_widgets.php:47 -msgid "Created" -msgstr "Creado" +#: ../../Zotlabs/Module/Settings/Channel.php:497 +msgid "Simple Privacy Settings:" +msgstr "Configuración de privacidad sencilla:" -#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:256 -#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191 -#: ../../include/page_widgets.php:48 -msgid "Edited" -msgstr "Editado" +#: ../../Zotlabs/Module/Settings/Channel.php:498 +msgid "" +"Very Public - <em>extremely permissive (should be used with caution)</em>" +msgstr "Muy Público - <em>extremadamente permisivo (debería ser usado con precaución)</em>" -#: ../../Zotlabs/Module/Menu.php:117 -msgid "Bookmarks allowed" -msgstr "Marcadores permitidos" +#: ../../Zotlabs/Module/Settings/Channel.php:499 +msgid "" +"Typical - <em>default public, privacy when desired (similar to social " +"network permissions but with improved privacy)</em>" +msgstr "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>" -#: ../../Zotlabs/Module/Menu.php:119 -msgid "Delete this menu" -msgstr "Borrar este menú" +#: ../../Zotlabs/Module/Settings/Channel.php:500 +msgid "Private - <em>default private, never open or public</em>" +msgstr "Privado - <em>por defecto, privado, nunca abierto o público</em>" -#: ../../Zotlabs/Module/Menu.php:120 ../../Zotlabs/Module/Menu.php:154 -msgid "Edit menu contents" -msgstr "Editar los contenidos del menú" +#: ../../Zotlabs/Module/Settings/Channel.php:501 +msgid "Blocked - <em>default blocked to/from everybody</em>" +msgstr "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>" -#: ../../Zotlabs/Module/Menu.php:121 -msgid "Edit this menu" -msgstr "Modificar este menú" +#: ../../Zotlabs/Module/Settings/Channel.php:503 +msgid "Allow others to tag your posts" +msgstr "Permitir a otros etiquetar sus publicaciones" -#: ../../Zotlabs/Module/Menu.php:136 -msgid "Menu could not be deleted." -msgstr "El menú no puede ser eliminado." +#: ../../Zotlabs/Module/Settings/Channel.php:503 +msgid "" +"Often used by the community to retro-actively flag inappropriate content" +msgstr "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva." -#: ../../Zotlabs/Module/Menu.php:144 ../../Zotlabs/Module/Mitem.php:28 -msgid "Menu not found." -msgstr "Menú no encontrado" +#: ../../Zotlabs/Module/Settings/Channel.php:505 +msgid "Channel Permission Limits" +msgstr "Límites de los permisos del canal" -#: ../../Zotlabs/Module/Menu.php:149 -msgid "Edit Menu" -msgstr "Modificar el menú" +#: ../../Zotlabs/Module/Settings/Channel.php:507 +msgid "Expire other channel content after this many days" +msgstr "Caducar contenido de otros canales después de este número de días" -#: ../../Zotlabs/Module/Menu.php:153 -msgid "Add or remove entries to this menu" -msgstr "Añadir o quitar entradas en este menú" +#: ../../Zotlabs/Module/Settings/Channel.php:507 +msgid "0 or blank to use the website limit." +msgstr "0 o en blanco para usar el límite del sitio web." -#: ../../Zotlabs/Module/Menu.php:155 -msgid "Menu name" -msgstr "Nombre del menú" +#: ../../Zotlabs/Module/Settings/Channel.php:507 +#, php-format +msgid "This website expires after %d days." +msgstr "Este sitio web caduca después de %d días." -#: ../../Zotlabs/Module/Menu.php:155 -msgid "Must be unique, only seen by you" -msgstr "Debe ser único, solo será visible para usted" +#: ../../Zotlabs/Module/Settings/Channel.php:507 +msgid "This website does not expire imported content." +msgstr "Este sitio web no caduca el contenido importado." -#: ../../Zotlabs/Module/Menu.php:156 -msgid "Menu title" -msgstr "Título del menú" +#: ../../Zotlabs/Module/Settings/Channel.php:507 +msgid "The website limit takes precedence if lower than your limit." +msgstr "El límite del sitio web tiene prioridad si es inferior a su propio límite." -#: ../../Zotlabs/Module/Menu.php:156 -msgid "Menu title as seen by others" -msgstr "El título del menú tal como será visto por los demás" +#: ../../Zotlabs/Module/Settings/Channel.php:508 +msgid "Maximum Friend Requests/Day:" +msgstr "Máximo de solicitudes de amistad por día:" -#: ../../Zotlabs/Module/Menu.php:157 -msgid "Allow bookmarks" -msgstr "Permitir marcadores" +#: ../../Zotlabs/Module/Settings/Channel.php:508 +msgid "May reduce spam activity" +msgstr "Podría reducir la actividad de spam" -#: ../../Zotlabs/Module/Menu.php:166 ../../Zotlabs/Module/Mitem.php:120 -#: ../../Zotlabs/Module/Xchan.php:41 -msgid "Not found." -msgstr "No encontrado." +#: ../../Zotlabs/Module/Settings/Channel.php:509 +msgid "Default Access Control List (ACL)" +msgstr "Lista de control de acceso (ACL) por defecto" -#: ../../Zotlabs/Module/Rpost.php:138 ../../Zotlabs/Module/Editpost.php:108 -msgid "Edit post" -msgstr "Editar la entrada" +#: ../../Zotlabs/Module/Settings/Channel.php:511 +msgid "Use my default audience setting for the type of object published" +msgstr "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación" -#: ../../Zotlabs/Module/Locs.php:25 ../../Zotlabs/Module/Locs.php:54 -msgid "Location not found." -msgstr "Dirección no encontrada." +#: ../../Zotlabs/Module/Settings/Channel.php:518 +msgid "Channel permissions category:" +msgstr "Categoría de los permisos del canal:" -#: ../../Zotlabs/Module/Locs.php:62 -msgid "Location lookup failed." -msgstr "Ha fallado la búsqueda de la dirección." +#: ../../Zotlabs/Module/Settings/Channel.php:519 +msgid "Default Permissions Group" +msgstr "Grupo de permisos predeterminado" -#: ../../Zotlabs/Module/Locs.php:66 -msgid "" -"Please select another location to become primary before removing the primary" -" location." -msgstr "Por favor, seleccione una copia de su canal (un clon) para convertirlo en primario antes de eliminar su canal principal." +#: ../../Zotlabs/Module/Settings/Channel.php:525 +msgid "Maximum private messages per day from unknown people:" +msgstr "Máximo de mensajes privados por día de gente desconocida:" -#: ../../Zotlabs/Module/Locs.php:95 -msgid "Syncing locations" -msgstr "Sincronizando ubicaciones" +#: ../../Zotlabs/Module/Settings/Channel.php:525 +msgid "Useful to reduce spamming" +msgstr "Útil para reducir el envío de correo no deseado" -#: ../../Zotlabs/Module/Locs.php:105 -msgid "No locations found." -msgstr "No encontrada ninguna dirección." +#: ../../Zotlabs/Module/Settings/Channel.php:528 +msgid "Notification Settings" +msgstr "Configuración de las notificaciones" -#: ../../Zotlabs/Module/Locs.php:116 -msgid "Manage Channel Locations" -msgstr "Gestionar las direcciones del canal" +#: ../../Zotlabs/Module/Settings/Channel.php:529 +msgid "By default post a status message when:" +msgstr "Por defecto, enviar un mensaje de estado cuando:" -#: ../../Zotlabs/Module/Locs.php:117 ../../Zotlabs/Module/Pubsites.php:51 -#: ../../Zotlabs/Module/Events.php:475 ../../Zotlabs/Module/Profiles.php:509 -#: ../../Zotlabs/Module/Profiles.php:737 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:839 -#: ../../include/js_strings.php:25 -msgid "Location" -msgstr "Ubicación" +#: ../../Zotlabs/Module/Settings/Channel.php:530 +msgid "accepting a friend request" +msgstr "Acepte una solicitud de amistad" -#: ../../Zotlabs/Module/Locs.php:119 -msgid "Primary" -msgstr "Primario" +#: ../../Zotlabs/Module/Settings/Channel.php:531 +msgid "joining a forum/community" +msgstr "al unirse a un foro o comunidad" -#: ../../Zotlabs/Module/Locs.php:122 -msgid "Sync Now" -msgstr "Sincronizar ahora" +#: ../../Zotlabs/Module/Settings/Channel.php:532 +msgid "making an <em>interesting</em> profile change" +msgstr "Realice un cambio <em>interesante</em> en su perfil" -#: ../../Zotlabs/Module/Locs.php:123 -msgid "Please wait several minutes between consecutive operations." -msgstr "Por favor, espere algunos minutos entre operaciones consecutivas." +#: ../../Zotlabs/Module/Settings/Channel.php:533 +msgid "Send a notification email when:" +msgstr "Enviar una notificación por correo electrónico cuando:" -#: ../../Zotlabs/Module/Locs.php:124 -msgid "" -"When possible, drop a location by logging into that website/hub and removing" -" your channel." -msgstr "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio web o \"hub\" y borrando su canal." +#: ../../Zotlabs/Module/Settings/Channel.php:534 +msgid "You receive a connection request" +msgstr "Reciba una solicitud de conexión" -#: ../../Zotlabs/Module/Locs.php:125 -msgid "Use this form to drop the location if the hub is no longer operating." -msgstr "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo." +#: ../../Zotlabs/Module/Settings/Channel.php:535 +msgid "Your connections are confirmed" +msgstr "Sus conexiones hayan sido confirmadas" -#: ../../Zotlabs/Module/Pubsites.php:24 ../../include/widgets.php:1401 -msgid "Public Hubs" -msgstr "Servidores públicos" +#: ../../Zotlabs/Module/Settings/Channel.php:536 +msgid "Someone writes on your profile wall" +msgstr "Alguien escriba en la página de su perfil (\"muro\")" -#: ../../Zotlabs/Module/Pubsites.php:27 -msgid "" -"The listed hubs allow public registration for the $Projectname network. All " -"hubs in the network are interlinked so membership on any of them conveys " -"membership in the network as a whole. Some hubs may require subscription or " -"provide tiered service plans. The hub itself <strong>may</strong> provide " -"additional details." -msgstr "Los sitios listados permiten el registro público en la red $Projectname. Todos los sitios de la red están vinculados entre sí, por lo que sus miembros, en ninguno de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los mismos hubs <strong>pueden</strong> proporcionar detalles adicionales." +#: ../../Zotlabs/Module/Settings/Channel.php:537 +msgid "Someone writes a followup comment" +msgstr "Alguien escriba un comentario sobre sus publicaciones" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Hub URL" -msgstr "Dirección del hub" +#: ../../Zotlabs/Module/Settings/Channel.php:538 +msgid "You receive a private message" +msgstr "Reciba un mensaje privado" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Access Type" -msgstr "Tipo de acceso" +#: ../../Zotlabs/Module/Settings/Channel.php:539 +msgid "You receive a friend suggestion" +msgstr "Reciba una sugerencia de amistad" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Registration Policy" -msgstr "Normas de registro" +#: ../../Zotlabs/Module/Settings/Channel.php:540 +msgid "You are tagged in a post" +msgstr "Usted sea etiquetado en una publicación" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Stats" -msgstr "Estadísticas" +#: ../../Zotlabs/Module/Settings/Channel.php:541 +msgid "You are poked/prodded/etc. in a post" +msgstr "Reciba un toque o incitación en una publicación" -#: ../../Zotlabs/Module/Pubsites.php:33 -msgid "Software" -msgstr "Software" +#: ../../Zotlabs/Module/Settings/Channel.php:543 +msgid "Someone likes your post/comment" +msgstr "Alguien muestre agrado por su entrada o comentario" -#: ../../Zotlabs/Module/Pubsites.php:35 ../../Zotlabs/Module/Ratings.php:97 -#: ../../include/conversation.php:941 ../../include/conversation.php:1099 -msgid "Ratings" -msgstr "Valoraciones" +#: ../../Zotlabs/Module/Settings/Channel.php:546 +msgid "Show visual notifications including:" +msgstr "Mostrar notificaciones visuales que incluyan:" -#: ../../Zotlabs/Module/Pubsites.php:48 -msgid "Rate" -msgstr "Valorar" +#: ../../Zotlabs/Module/Settings/Channel.php:548 +msgid "Unseen grid activity" +msgstr "Nueva actividad en la red" -#: ../../Zotlabs/Module/Pubsites.php:59 ../../Zotlabs/Module/Events.php:694 -#: ../../Zotlabs/Module/Webpages.php:250 ../../Zotlabs/Module/Blocks.php:166 -#: ../../Zotlabs/Module/Layouts.php:197 ../../Zotlabs/Module/Wiki.php:166 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:151 -#: ../../include/page_widgets.php:42 -msgid "View" -msgstr "Ver" +#: ../../Zotlabs/Module/Settings/Channel.php:549 +msgid "Unseen channel activity" +msgstr "Actividad no vista en el canal" -#: ../../Zotlabs/Module/Connedit.php:82 -msgid "Could not access contact record." -msgstr "No se ha podido acceder al registro de contacto." +#: ../../Zotlabs/Module/Settings/Channel.php:550 +msgid "Unseen private messages" +msgstr "Mensajes privados no leídos" -#: ../../Zotlabs/Module/Connedit.php:112 -msgid "Could not locate selected profile." -msgstr "No se ha podido localizar el perfil seleccionado." +#: ../../Zotlabs/Module/Settings/Channel.php:550 +#: ../../Zotlabs/Module/Settings/Channel.php:555 +#: ../../Zotlabs/Module/Settings/Channel.php:556 +#: ../../Zotlabs/Module/Settings/Channel.php:557 +#: ../../addon/jappixmini/jappixmini.php:343 +msgid "Recommended" +msgstr "Recomendado" -#: ../../Zotlabs/Module/Connedit.php:249 -msgid "Connection updated." -msgstr "Conexión actualizada." +#: ../../Zotlabs/Module/Settings/Channel.php:551 +msgid "Upcoming events" +msgstr "Próximos eventos" -#: ../../Zotlabs/Module/Connedit.php:251 -msgid "Failed to update connection record." -msgstr "Error al actualizar el registro de la conexión." +#: ../../Zotlabs/Module/Settings/Channel.php:552 +msgid "Events today" +msgstr "Eventos de hoy" -#: ../../Zotlabs/Module/Connedit.php:301 -msgid "is now connected to" -msgstr "ahora está conectado/a" +#: ../../Zotlabs/Module/Settings/Channel.php:553 +msgid "Upcoming birthdays" +msgstr "Próximos cumpleaños" -#: ../../Zotlabs/Module/Connedit.php:434 -msgid "Could not access address book record." -msgstr "No se pudo acceder al registro en su libreta de direcciones." +#: ../../Zotlabs/Module/Settings/Channel.php:553 +msgid "Not available in all themes" +msgstr "No disponible en todos los temas" -#: ../../Zotlabs/Module/Connedit.php:482 -msgid "Refresh failed - channel is currently unavailable." -msgstr "Recarga fallida - no se puede encontrar el canal en este momento." +#: ../../Zotlabs/Module/Settings/Channel.php:554 +msgid "System (personal) notifications" +msgstr "Notificaciones del sistema (personales)" -#: ../../Zotlabs/Module/Connedit.php:497 ../../Zotlabs/Module/Connedit.php:506 -#: ../../Zotlabs/Module/Connedit.php:515 ../../Zotlabs/Module/Connedit.php:524 -#: ../../Zotlabs/Module/Connedit.php:537 -msgid "Unable to set address book parameters." -msgstr "No ha sido posible establecer los parámetros de la libreta de direcciones." +#: ../../Zotlabs/Module/Settings/Channel.php:555 +msgid "System info messages" +msgstr "Mensajes de información del sistema" -#: ../../Zotlabs/Module/Connedit.php:561 -msgid "Connection has been removed." -msgstr "La conexión ha sido eliminada." +#: ../../Zotlabs/Module/Settings/Channel.php:556 +msgid "System critical alerts" +msgstr "Alertas críticas del sistema" -#: ../../Zotlabs/Module/Connedit.php:601 ../../Zotlabs/Lib/Apps.php:228 -#: ../../extend/addon/addon/openclipatar/openclipatar.php:57 -#: ../../include/conversation.php:936 ../../include/conversation.php:1049 -#: ../../include/nav.php:103 -msgid "View Profile" -msgstr "Ver el perfil" +#: ../../Zotlabs/Module/Settings/Channel.php:557 +msgid "New connections" +msgstr "Nuevas conexiones" -#: ../../Zotlabs/Module/Connedit.php:604 -#, php-format -msgid "View %s's profile" -msgstr "Ver el perfil de %s" +#: ../../Zotlabs/Module/Settings/Channel.php:558 +msgid "System Registrations" +msgstr "Registros del sistema" -#: ../../Zotlabs/Module/Connedit.php:608 -msgid "Refresh Permissions" -msgstr "Recargar los permisos" +#: ../../Zotlabs/Module/Settings/Channel.php:559 +msgid "" +"Also show new wall posts, private messages and connections under Notices" +msgstr "Mostrar también en Avisos las nuevas publicaciones, los mensajes privados y las conexiones" -#: ../../Zotlabs/Module/Connedit.php:611 -msgid "Fetch updated permissions" -msgstr "Obtener los permisos actualizados" +#: ../../Zotlabs/Module/Settings/Channel.php:561 +msgid "Notify me of events this many days in advance" +msgstr "Avisarme de los eventos con algunos días de antelación" -#: ../../Zotlabs/Module/Connedit.php:615 -msgid "Refresh Photo" -msgstr "Actualizar la foto" +#: ../../Zotlabs/Module/Settings/Channel.php:561 +msgid "Must be greater than 0" +msgstr "Debe ser mayor que 0" -#: ../../Zotlabs/Module/Connedit.php:618 -msgid "Fetch updated photo" -msgstr "Obtener una foto actualizada" +#: ../../Zotlabs/Module/Settings/Channel.php:567 +msgid "Advanced Account/Page Type Settings" +msgstr "Ajustes avanzados de la cuenta y de los tipos de página" -#: ../../Zotlabs/Module/Connedit.php:622 -msgid "Recent Activity" -msgstr "Actividad reciente" +#: ../../Zotlabs/Module/Settings/Channel.php:568 +msgid "Change the behaviour of this account for special situations" +msgstr "Cambiar el comportamiento de esta cuenta en situaciones especiales" -#: ../../Zotlabs/Module/Connedit.php:625 -msgid "View recent posts and comments" -msgstr "Ver publicaciones y comentarios recientes" +#: ../../Zotlabs/Module/Settings/Channel.php:570 +msgid "Miscellaneous Settings" +msgstr "Ajustes diversos" -#: ../../Zotlabs/Module/Connedit.php:632 -msgid "Block (or Unblock) all communications with this connection" -msgstr "Bloquear (o desbloquear) todas las comunicaciones con esta conexión" +#: ../../Zotlabs/Module/Settings/Channel.php:571 +msgid "Default photo upload folder" +msgstr "Carpeta por defecto de las fotos subidas" -#: ../../Zotlabs/Module/Connedit.php:633 -msgid "This connection is blocked!" -msgstr "¡Esta conexión está bloqueada!" +#: ../../Zotlabs/Module/Settings/Channel.php:571 +#: ../../Zotlabs/Module/Settings/Channel.php:572 +msgid "%Y - current year, %m - current month" +msgstr "%Y - año en curso, %m - mes actual" -#: ../../Zotlabs/Module/Connedit.php:637 -msgid "Unignore" -msgstr "Dejar de ignorar" +#: ../../Zotlabs/Module/Settings/Channel.php:572 +msgid "Default file upload folder" +msgstr "Carpeta por defecto de los ficheros subidos" -#: ../../Zotlabs/Module/Connedit.php:640 -msgid "Ignore (or Unignore) all inbound communications from this connection" -msgstr "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión" +#: ../../Zotlabs/Module/Settings/Channel.php:574 +msgid "Personal menu to display in your channel pages" +msgstr "Menú personal que debe mostrarse en las páginas de su canal" -#: ../../Zotlabs/Module/Connedit.php:641 -msgid "This connection is ignored!" -msgstr "¡Esta conexión es ignorada!" +#: ../../Zotlabs/Module/Settings/Channel.php:576 +msgid "Remove this channel." +msgstr "Eliminar este canal." -#: ../../Zotlabs/Module/Connedit.php:645 -msgid "Unarchive" -msgstr "Desarchivar" +#: ../../Zotlabs/Module/Settings/Channel.php:577 +msgid "Firefox Share $Projectname provider" +msgstr "Servicio de compartición de Firefox: proveedor $Projectname" -#: ../../Zotlabs/Module/Connedit.php:645 -msgid "Archive" -msgstr "Archivar" +#: ../../Zotlabs/Module/Settings/Channel.php:578 +msgid "Start calendar week on Monday" +msgstr "Comenzar el calendario semanal por el lunes" + +#: ../../Zotlabs/Module/Settings/Features.php:45 +msgid "Additional Features" +msgstr "Funcionalidades" + +#: ../../Zotlabs/Module/Settings/Tokens.php:31 +#, php-format +msgid "This channel is limited to %d tokens" +msgstr "Este canal tiene un límite de %d tokens" + +#: ../../Zotlabs/Module/Settings/Tokens.php:37 +msgid "Name and Password are required." +msgstr "Se requiere el nombre y la contraseña." + +#: ../../Zotlabs/Module/Settings/Tokens.php:77 +msgid "Token saved." +msgstr "Token salvado." -#: ../../Zotlabs/Module/Connedit.php:648 +#: ../../Zotlabs/Module/Settings/Tokens.php:113 msgid "" -"Archive (or Unarchive) this connection - mark channel dead but keep content" -msgstr "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos" +"Use this form to create temporary access identifiers to share things with " +"non-members. These identities may be used in Access Control Lists and " +"visitors may login using these credentials to access private content." +msgstr "Utilice este formulario para crear identificadores de acceso temporal para compartir cosas con los no miembros de Hubzilla. Estas identidades se pueden usar en las Listas de control de acceso (ACL) y así los visitantes pueden iniciar sesión, utilizando estas credenciales, para acceder a su contenido privado." -#: ../../Zotlabs/Module/Connedit.php:649 -msgid "This connection is archived!" -msgstr "¡Esta conexión esta archivada!" +#: ../../Zotlabs/Module/Settings/Tokens.php:115 +msgid "" +"You may also provide <em>dropbox</em> style access links to friends and " +"associates by adding the Login Password to any specific site URL as shown. " +"Examples:" +msgstr "También puede proporcionar, con el estilo <em>dropbox</em>, enlaces de acceso a sus amigos y asociados añadiendo la contraseña de inicio de sesión a cualquier dirección URL, como se muestra. Ejemplos: " -#: ../../Zotlabs/Module/Connedit.php:653 -msgid "Unhide" -msgstr "Mostrar" +#: ../../Zotlabs/Module/Settings/Tokens.php:150 +#: ../../Zotlabs/Widget/Settings_menu.php:90 +msgid "Guest Access Tokens" +msgstr "Tokens de acceso para invitados" -#: ../../Zotlabs/Module/Connedit.php:653 -msgid "Hide" -msgstr "Ocultar" +#: ../../Zotlabs/Module/Settings/Tokens.php:157 +msgid "Login Name" +msgstr "Nombre de inicio de sesión" -#: ../../Zotlabs/Module/Connedit.php:656 -msgid "Hide or Unhide this connection from your other connections" -msgstr "Ocultar o mostrar esta conexión a sus otras conexiones" +#: ../../Zotlabs/Module/Settings/Tokens.php:158 +msgid "Login Password" +msgstr "Contraseña de inicio de sesión" -#: ../../Zotlabs/Module/Connedit.php:657 -msgid "This connection is hidden!" -msgstr "¡Esta conexión está oculta!" +#: ../../Zotlabs/Module/Settings/Tokens.php:159 +msgid "Expires (yyyy-mm-dd)" +msgstr "Expira (aaaa-mm-dd)" -#: ../../Zotlabs/Module/Connedit.php:664 -msgid "Delete this connection" -msgstr "Eliminar esta conexión" +#: ../../Zotlabs/Module/Settings/Tokens.php:160 +#: ../../Zotlabs/Module/Connedit.php:893 +msgid "Their Settings" +msgstr "Sus ajustes" -#: ../../Zotlabs/Module/Connedit.php:672 -msgid "Fetch Vcard" -msgstr "Obtener una vcard" +#: ../../Zotlabs/Module/Settings/Account.php:20 +msgid "Not valid email." +msgstr "Correo electrónico no válido." -#: ../../Zotlabs/Module/Connedit.php:675 -msgid "Fetch electronic calling card for this connection" -msgstr "Obtener una tarjeta de llamada electrónica para esta conexión" +#: ../../Zotlabs/Module/Settings/Account.php:23 +msgid "Protected email address. Cannot change to that email." +msgstr "Dirección de correo electrónico protegida. No se puede cambiar a ella." -#: ../../Zotlabs/Module/Connedit.php:683 -#: ../../Zotlabs/Module/Filestorage.php:152 -#: ../../Zotlabs/Module/Photos.php:657 ../../Zotlabs/Module/Photos.php:1042 -#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:363 -#: ../../Zotlabs/Module/Chat.php:232 ../../include/acl_selectors.php:218 -msgid "Permissions" -msgstr "Permisos" +#: ../../Zotlabs/Module/Settings/Account.php:32 +msgid "System failure storing new email. Please try again." +msgstr "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo." -#: ../../Zotlabs/Module/Connedit.php:686 -msgid "Open Individual Permissions section by default" -msgstr "Abrir la sección de permisos individuales por defecto" +#: ../../Zotlabs/Module/Settings/Account.php:40 +msgid "Technical skill level updated" +msgstr "Se ha actualizado el nivel de habilidad técnica" -#: ../../Zotlabs/Module/Connedit.php:709 -msgid "Affinity" -msgstr "Afinidad" +#: ../../Zotlabs/Module/Settings/Account.php:56 +msgid "Password verification failed." +msgstr "La comprobación de la contraseña ha fallado." -#: ../../Zotlabs/Module/Connedit.php:712 -msgid "Open Set Affinity section by default" -msgstr "Abrir por defecto la sección para definir la afinidad" +#: ../../Zotlabs/Module/Settings/Account.php:63 +msgid "Passwords do not match. Password unchanged." +msgstr "Las contraseñas no coinciden. La contraseña no se ha cambiado." -#: ../../Zotlabs/Module/Connedit.php:716 ../../include/widgets.php:526 -msgid "Me" -msgstr "Yo" +#: ../../Zotlabs/Module/Settings/Account.php:67 +msgid "Empty passwords are not allowed. Password unchanged." +msgstr "No se permiten contraseñas vacías. La contraseña no se ha cambiado." -#: ../../Zotlabs/Module/Connedit.php:717 ../../include/widgets.php:527 -msgid "Family" -msgstr "Familia" +#: ../../Zotlabs/Module/Settings/Account.php:81 +msgid "Password changed." +msgstr "Contraseña cambiada." -#: ../../Zotlabs/Module/Connedit.php:718 -#: ../../Zotlabs/Module/Settings/Channel.php:62 -#: ../../Zotlabs/Module/Settings/Channel.php:66 -#: ../../Zotlabs/Module/Settings/Channel.php:67 -#: ../../Zotlabs/Module/Settings/Channel.php:70 -#: ../../Zotlabs/Module/Settings/Channel.php:81 ../../include/widgets.php:528 -#: ../../include/selectors.php:123 ../../include/channel.php:408 -#: ../../include/channel.php:409 ../../include/channel.php:416 -msgid "Friends" -msgstr "Amigos/as" +#: ../../Zotlabs/Module/Settings/Account.php:83 +msgid "Password update failed. Please try again." +msgstr "La actualización de la contraseña ha fallado. Por favor, inténtalo de nuevo." -#: ../../Zotlabs/Module/Connedit.php:719 ../../include/widgets.php:529 -msgid "Acquaintances" -msgstr "Conocidos/as" +#: ../../Zotlabs/Module/Settings/Account.php:112 +msgid "Account Settings" +msgstr "Configuración de la cuenta" -#: ../../Zotlabs/Module/Connedit.php:746 -msgid "Filter" -msgstr "Filtrar" +#: ../../Zotlabs/Module/Settings/Account.php:113 +msgid "Current Password" +msgstr "Contraseña actual" -#: ../../Zotlabs/Module/Connedit.php:749 -msgid "Open Custom Filter section by default" -msgstr "Abrir por defecto la sección de personalización de filtros" +#: ../../Zotlabs/Module/Settings/Account.php:114 +msgid "Enter New Password" +msgstr "Escribir una nueva contraseña" -#: ../../Zotlabs/Module/Connedit.php:786 -msgid "Approve this connection" -msgstr "Aprobar esta conexión" +#: ../../Zotlabs/Module/Settings/Account.php:115 +msgid "Confirm New Password" +msgstr "Confirmar la nueva contraseña" -#: ../../Zotlabs/Module/Connedit.php:786 -msgid "Accept connection to allow communication" -msgstr "Aceptar la conexión para permitir la comunicación" +#: ../../Zotlabs/Module/Settings/Account.php:115 +msgid "Leave password fields blank unless changing" +msgstr "Dejar en blanco la contraseña a menos que desee cambiarla." -#: ../../Zotlabs/Module/Connedit.php:791 -msgid "Set Affinity" -msgstr "Ajustar la afinidad" +#: ../../Zotlabs/Module/Settings/Account.php:116 +msgid "Your technical skill level" +msgstr "Su nivel de habilidad técnica" -#: ../../Zotlabs/Module/Connedit.php:794 -msgid "Set Profile" -msgstr "Ajustar el perfil" +#: ../../Zotlabs/Module/Settings/Account.php:116 +msgid "Used to provide a member experience matched to your comfort level" +msgstr "Se utiliza para proporcionar la experiencia de los miembros adaptada a su nivel de comodidad" -#: ../../Zotlabs/Module/Connedit.php:797 -msgid "Set Affinity & Profile" -msgstr "Ajustar la afinidad y el perfil" +#: ../../Zotlabs/Module/Settings/Account.php:120 +#: ../../Zotlabs/Module/Removeaccount.php:61 +msgid "Remove Account" +msgstr "Eliminar cuenta" -#: ../../Zotlabs/Module/Connedit.php:855 -msgid "none" -msgstr "-" +#: ../../Zotlabs/Module/Settings/Account.php:121 +msgid "Remove this account including all its channels" +msgstr "Eliminar esta cuenta incluyendo todos sus canales" -#: ../../Zotlabs/Module/Connedit.php:858 ../../include/widgets.php:661 -msgid "Connection Default Permissions" -msgstr "Permisos predeterminados de conexión" +#: ../../Zotlabs/Module/Settings/Featured.php:20 +msgid "Affinity Slider settings updated." +msgstr "Se han actualizado los ajustes del controlador de afinidad." -#: ../../Zotlabs/Module/Connedit.php:858 ../../include/items.php:3934 +#: ../../Zotlabs/Module/Settings/Featured.php:34 +msgid "No feature settings configured" +msgstr "No se ha establecido la configuración de los complementos" + +#: ../../Zotlabs/Module/Settings/Featured.php:41 +msgid "Default maximum affinity level" +msgstr "Nivel máximo de afinidad por defecto" + +#: ../../Zotlabs/Module/Settings/Featured.php:46 +msgid "Default minimum affinity level" +msgstr "Nivel mínimo de afinidad por defecto" + +#: ../../Zotlabs/Module/Settings/Featured.php:50 +msgid "Affinity Slider Settings" +msgstr "Ajustes del controlador de afinidad" + +#: ../../Zotlabs/Module/Settings/Featured.php:60 +msgid "Feature/Addon Settings" +msgstr "Ajustes de los complementos" + +#: ../../Zotlabs/Module/Settings/Display.php:145 +msgid "No special theme for mobile devices" +msgstr "Sin tema especial para dispositivos móviles" + +#: ../../Zotlabs/Module/Settings/Display.php:148 #, php-format -msgid "Connection: %s" -msgstr "Conexión: %s" +msgid "%s - (Experimental)" +msgstr "%s - (Experimental)" -#: ../../Zotlabs/Module/Connedit.php:859 -msgid "Apply these permissions automatically" -msgstr "Aplicar estos permisos automaticamente" +#: ../../Zotlabs/Module/Settings/Display.php:198 +msgid "Display Settings" +msgstr "Ajustes de visualización" -#: ../../Zotlabs/Module/Connedit.php:859 -msgid "Connection requests will be approved without your interaction" -msgstr "Las solicitudes de conexión serán aprobadas sin su intervención" +#: ../../Zotlabs/Module/Settings/Display.php:199 +msgid "Theme Settings" +msgstr "Ajustes del tema" -#: ../../Zotlabs/Module/Connedit.php:860 -msgid "Permission role" -msgstr "Rol de acceso" +#: ../../Zotlabs/Module/Settings/Display.php:200 +msgid "Custom Theme Settings" +msgstr "Ajustes personalizados del tema" -#: ../../Zotlabs/Module/Connedit.php:861 -msgid "Add permission role" -msgstr "Añadir un rol de acceso" +#: ../../Zotlabs/Module/Settings/Display.php:201 +msgid "Content Settings" +msgstr "Ajustes del contenido" -#: ../../Zotlabs/Module/Connedit.php:867 -msgid "This connection's primary address is" -msgstr "La dirección primaria de esta conexión es" +#: ../../Zotlabs/Module/Settings/Display.php:207 +msgid "Display Theme:" +msgstr "Tema gráfico del perfil:" -#: ../../Zotlabs/Module/Connedit.php:868 -msgid "Available locations:" -msgstr "Ubicaciones disponibles:" +#: ../../Zotlabs/Module/Settings/Display.php:208 +msgid "Select scheme" +msgstr "Elegir un esquema" -#: ../../Zotlabs/Module/Connedit.php:872 +#: ../../Zotlabs/Module/Settings/Display.php:210 +msgid "Mobile Theme:" +msgstr "Tema para el móvil:" + +#: ../../Zotlabs/Module/Settings/Display.php:211 +msgid "Preload images before rendering the page" +msgstr "Carga previa de las imágenes antes de generar la página" + +#: ../../Zotlabs/Module/Settings/Display.php:211 msgid "" -"The permissions indicated on this page will be applied to all new " -"connections." -msgstr "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones." +"The subjective page load time will be longer but the page will be ready when" +" displayed" +msgstr "El tiempo subjetivo de carga de la página será más largo, pero la página estará lista cuando se muestre." -#: ../../Zotlabs/Module/Connedit.php:873 -msgid "Connection Tools" -msgstr "Gestión de las conexiones" +#: ../../Zotlabs/Module/Settings/Display.php:212 +msgid "Enable user zoom on mobile devices" +msgstr "Habilitar zoom de usuario en dispositivos móviles" -#: ../../Zotlabs/Module/Connedit.php:875 -msgid "Slide to adjust your degree of friendship" -msgstr "Deslizar para ajustar el grado de amistad" +#: ../../Zotlabs/Module/Settings/Display.php:213 +msgid "Update browser every xx seconds" +msgstr "Actualizar navegador cada xx segundos" -#: ../../Zotlabs/Module/Connedit.php:876 ../../Zotlabs/Module/Rate.php:155 -#: ../../include/js_strings.php:20 -msgid "Rating" -msgstr "Valoración" +#: ../../Zotlabs/Module/Settings/Display.php:213 +msgid "Minimum of 10 seconds, no maximum" +msgstr "Mínimo de 10 segundos, sin máximo" -#: ../../Zotlabs/Module/Connedit.php:877 -msgid "Slide to adjust your rating" -msgstr "Deslizar para ajustar su valoración" +#: ../../Zotlabs/Module/Settings/Display.php:214 +msgid "Maximum number of conversations to load at any time:" +msgstr "Máximo número de conversaciones a cargar en cualquier momento:" -#: ../../Zotlabs/Module/Connedit.php:878 ../../Zotlabs/Module/Connedit.php:883 -msgid "Optionally explain your rating" -msgstr "Opcionalmente, puede explicar su valoración" +#: ../../Zotlabs/Module/Settings/Display.php:214 +msgid "Maximum of 100 items" +msgstr "Máximo de 100 elementos" -#: ../../Zotlabs/Module/Connedit.php:880 -msgid "Custom Filter" -msgstr "Filtro personalizado" +#: ../../Zotlabs/Module/Settings/Display.php:215 +msgid "Show emoticons (smilies) as images" +msgstr "Mostrar emoticonos (smilies) como imágenes" -#: ../../Zotlabs/Module/Connedit.php:881 -msgid "Only import posts with this text" -msgstr "Importar solo entradas que contengan este texto" +#: ../../Zotlabs/Module/Settings/Display.php:216 +msgid "Manual conversation updates" +msgstr "Actualizaciones manuales de la conversación" -#: ../../Zotlabs/Module/Connedit.php:881 ../../Zotlabs/Module/Connedit.php:882 -msgid "" -"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " -"all posts" -msgstr "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo" +#: ../../Zotlabs/Module/Settings/Display.php:216 +msgid "Default is on, turning this off may increase screen jumping" +msgstr "El valor predeterminado está activado, al desactivarlo puede aumentar el salto de pantalla" -#: ../../Zotlabs/Module/Connedit.php:882 -msgid "Do not import posts with this text" -msgstr "No importar entradas que contengan este texto" +#: ../../Zotlabs/Module/Settings/Display.php:217 +msgid "Link post titles to source" +msgstr "Enlazar título de la publicación a la fuente original" -#: ../../Zotlabs/Module/Connedit.php:884 -msgid "This information is public!" -msgstr "¡Esta información es pública!" +#: ../../Zotlabs/Module/Settings/Display.php:218 +msgid "System Page Layout Editor - (advanced)" +msgstr "Editor de plantilla de página del sistema - (avanzado)" -#: ../../Zotlabs/Module/Connedit.php:889 -msgid "Connection Pending Approval" -msgstr "Conexión pendiente de aprobación" +#: ../../Zotlabs/Module/Settings/Display.php:221 +msgid "Use blog/list mode on channel page" +msgstr "Usar modo blog/lista en la página de inicio del canal" -#: ../../Zotlabs/Module/Connedit.php:892 -#: ../../Zotlabs/Module/Settings/Permcats.php:107 -#: ../../Zotlabs/Module/Settings/Tokens.php:163 -msgid "inherited" -msgstr "heredado" +#: ../../Zotlabs/Module/Settings/Display.php:221 +#: ../../Zotlabs/Module/Settings/Display.php:222 +msgid "(comments displayed separately)" +msgstr "(comentarios mostrados de forma separada)" -#: ../../Zotlabs/Module/Connedit.php:894 -#, php-format -msgid "" -"Please choose the profile you would like to display to %s when viewing your " -"profile securely." -msgstr "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura." +#: ../../Zotlabs/Module/Settings/Display.php:222 +msgid "Use blog/list mode on grid page" +msgstr "Mostrar mi red en modo blog" -#: ../../Zotlabs/Module/Connedit.php:896 -#: ../../Zotlabs/Module/Settings/Tokens.php:160 -msgid "Their Settings" -msgstr "Sus ajustes" +#: ../../Zotlabs/Module/Settings/Display.php:223 +msgid "Channel page max height of content (in pixels)" +msgstr "Altura máxima del contenido de la página del canal (en píxeles)" -#: ../../Zotlabs/Module/Connedit.php:897 -#: ../../Zotlabs/Module/Settings/Permcats.php:105 -#: ../../Zotlabs/Module/Settings/Tokens.php:161 -msgid "My Settings" -msgstr "Mis ajustes" +#: ../../Zotlabs/Module/Settings/Display.php:223 +#: ../../Zotlabs/Module/Settings/Display.php:224 +msgid "click to expand content exceeding this height" +msgstr "Pulsar para expandir el contenido que exceda de esta altura" -#: ../../Zotlabs/Module/Connedit.php:899 -#: ../../Zotlabs/Module/Settings/Permcats.php:110 -#: ../../Zotlabs/Module/Settings/Tokens.php:166 -msgid "Individual Permissions" -msgstr "Permisos individuales" +#: ../../Zotlabs/Module/Settings/Display.php:224 +msgid "Grid page max height of content (in pixels)" +msgstr "Altura máxima del contenido de mi red (en píxeles)" -#: ../../Zotlabs/Module/Connedit.php:900 -#: ../../Zotlabs/Module/Settings/Permcats.php:111 -#: ../../Zotlabs/Module/Settings/Tokens.php:167 -msgid "" -"Some permissions may be inherited from your channel's <a " -"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " -"priority than individual settings. You can <strong>not</strong> change those" -" settings here." -msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí." +#: ../../Zotlabs/Module/Settings/Oauth.php:34 +msgid "Name is required" +msgstr "El nombre es obligatorio" + +#: ../../Zotlabs/Module/Settings/Oauth.php:38 +msgid "Key and Secret are required" +msgstr "\"Key\" y \"Secret\" son obligatorios" + +#: ../../Zotlabs/Module/Settings/Oauth.php:86 +#: ../../Zotlabs/Module/Settings/Oauth.php:112 +#: ../../Zotlabs/Module/Settings/Oauth.php:148 +msgid "Add application" +msgstr "Añadir aplicación" -#: ../../Zotlabs/Module/Connedit.php:901 +#: ../../Zotlabs/Module/Settings/Oauth.php:89 +msgid "Name of application" +msgstr "Nombre de la aplicación" + +#: ../../Zotlabs/Module/Settings/Oauth.php:90 +#: ../../Zotlabs/Module/Settings/Oauth.php:116 +#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:775 +msgid "Consumer Key" +msgstr "Consumer Key" + +#: ../../Zotlabs/Module/Settings/Oauth.php:90 +#: ../../Zotlabs/Module/Settings/Oauth.php:91 +msgid "Automatically generated - change if desired. Max length 20" +msgstr "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 20" + +#: ../../Zotlabs/Module/Settings/Oauth.php:91 +#: ../../Zotlabs/Module/Settings/Oauth.php:117 +#: ../../addon/statusnet/statusnet.php:892 ../../addon/twitter/twitter.php:776 +msgid "Consumer Secret" +msgstr "Consumer Secret" + +#: ../../Zotlabs/Module/Settings/Oauth.php:92 +#: ../../Zotlabs/Module/Settings/Oauth.php:118 +msgid "Redirect" +msgstr "Redirigir" + +#: ../../Zotlabs/Module/Settings/Oauth.php:92 msgid "" -"Some permissions may be inherited from your channel's <a " -"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " -"priority than individual settings. You can change those settings here but " -"they wont have any impact unless the inherited setting changes." -msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados." +"Redirect URI - leave blank unless your application specifically requires " +"this" +msgstr "URI de redirección - dejar en blanco a menos que su aplicación específicamente lo requiera" -#: ../../Zotlabs/Module/Connedit.php:902 -msgid "Last update:" -msgstr "Última actualización:" +#: ../../Zotlabs/Module/Settings/Oauth.php:93 +#: ../../Zotlabs/Module/Settings/Oauth.php:119 +msgid "Icon url" +msgstr "Dirección del icono" -#: ../../Zotlabs/Module/Connedit.php:911 -msgid "Details" -msgstr "Detalles" +#: ../../Zotlabs/Module/Settings/Oauth.php:93 +#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147 +msgid "Optional" +msgstr "Opcional" -#: ../../Zotlabs/Module/Connedit.php:914 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1137 -msgid "Organisation" -msgstr "Organización" +#: ../../Zotlabs/Module/Settings/Oauth.php:104 +msgid "Application not found." +msgstr "Aplicación no encontrada." -#: ../../Zotlabs/Module/Connedit.php:915 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1138 -#: ../../include/page_widgets.php:46 -msgid "Title" -msgstr "Título" +#: ../../Zotlabs/Module/Settings/Oauth.php:147 +msgid "Connected Apps" +msgstr "Aplicaciones (apps) conectadas" -#: ../../Zotlabs/Module/Connedit.php:916 ../../Zotlabs/Module/Profiles.php:789 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1139 -msgid "Phone" -msgstr "Teléfono" +#: ../../Zotlabs/Module/Settings/Oauth.php:151 +msgid "Client key starts with" +msgstr "La \"client key\" empieza por" -#: ../../Zotlabs/Module/Connedit.php:918 ../../Zotlabs/Module/Profiles.php:791 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1141 -msgid "Instant messenger" -msgstr "Mensajería instantánea" +#: ../../Zotlabs/Module/Settings/Oauth.php:152 +msgid "No name" +msgstr "Sin nombre" -#: ../../Zotlabs/Module/Connedit.php:919 ../../Zotlabs/Module/Profiles.php:792 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1142 -msgid "Website" -msgstr "Sitio web" +#: ../../Zotlabs/Module/Settings/Oauth.php:153 +msgid "Remove authorization" +msgstr "Eliminar autorización" -#: ../../Zotlabs/Module/Connedit.php:921 ../../Zotlabs/Module/Profiles.php:794 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1144 -msgid "Note" -msgstr "Nota" +#: ../../Zotlabs/Module/Embedphotos.php:139 +#: ../../Zotlabs/Module/Photos.php:751 ../../Zotlabs/Module/Photos.php:1290 +#: ../../Zotlabs/Widget/Album.php:78 +msgid "View Photo" +msgstr "Ver foto" -#: ../../Zotlabs/Module/Connedit.php:922 ../../Zotlabs/Module/Profiles.php:795 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1145 -#: ../../extend/addon/addon/cdav/cdav.php:270 -#: ../../include/connections.php:668 -msgid "Mobile" -msgstr "Móvil" +#: ../../Zotlabs/Module/Embedphotos.php:145 +#: ../../Zotlabs/Module/Photos.php:757 ../../Zotlabs/Module/Photos.php:1213 +#: ../../Zotlabs/Lib/Apps.php:561 ../../Zotlabs/Lib/Apps.php:639 +#: ../../Zotlabs/Storage/Browser.php:163 ../../Zotlabs/Widget/Album.php:84 +#: ../../addon/cdav/Mod_Cdav.php:745 ../../addon/cdav/Mod_Cdav.php:746 +#: ../../addon/cdav/Mod_Cdav.php:753 ../../include/conversation.php:1110 +msgid "Unknown" +msgstr "Desconocido" -#: ../../Zotlabs/Module/Connedit.php:923 ../../Zotlabs/Module/Profiles.php:796 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1146 -#: ../../extend/addon/addon/cdav/cdav.php:271 -#: ../../include/connections.php:669 -msgid "Home" -msgstr "Inicio" +#: ../../Zotlabs/Module/Embedphotos.php:155 +#: ../../Zotlabs/Module/Photos.php:782 ../../Zotlabs/Widget/Album.php:95 +msgid "Edit Album" +msgstr "Editar álbum" -#: ../../Zotlabs/Module/Connedit.php:924 ../../Zotlabs/Module/Profiles.php:797 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1147 -#: ../../extend/addon/addon/cdav/cdav.php:274 -#: ../../include/connections.php:672 -msgid "Work" -msgstr "Trabajo" +#: ../../Zotlabs/Module/Embedphotos.php:157 +#: ../../Zotlabs/Module/Photos.php:784 ../../Zotlabs/Module/Photos.php:1321 +#: ../../Zotlabs/Module/Profile_photo.php:423 +#: ../../Zotlabs/Module/Cover_photo.php:361 +#: ../../Zotlabs/Storage/Browser.php:229 ../../Zotlabs/Storage/Browser.php:334 +#: ../../Zotlabs/Widget/Album.php:97 ../../addon/cdav/include/widgets.php:132 +#: ../../addon/cdav/include/widgets.php:168 +msgid "Upload" +msgstr "Subir" -#: ../../Zotlabs/Module/Connedit.php:926 ../../Zotlabs/Module/Profiles.php:799 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:368 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1149 -msgid "Add Contact" -msgstr "Añadir un contacto" +#: ../../Zotlabs/Module/Achievements.php:38 +msgid "Some blurb about what to do when you're new here" +msgstr "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí" -#: ../../Zotlabs/Module/Connedit.php:927 ../../Zotlabs/Module/Profiles.php:800 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1150 -msgid "Add Field" -msgstr "Añadir un campo" +#: ../../Zotlabs/Module/Thing.php:114 +msgid "Thing updated" +msgstr "Elemento actualizado." -#: ../../Zotlabs/Module/Connedit.php:932 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1155 -msgid "P.O. Box" -msgstr "Buzón de correos" +#: ../../Zotlabs/Module/Thing.php:166 +msgid "Object store: failed" +msgstr "Guardar objeto: ha fallado" -#: ../../Zotlabs/Module/Connedit.php:933 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1156 -msgid "Additional" -msgstr "Adicional" +#: ../../Zotlabs/Module/Thing.php:170 +msgid "Thing added" +msgstr "Elemento añadido" -#: ../../Zotlabs/Module/Connedit.php:934 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1157 -msgid "Street" -msgstr "Calle" +#: ../../Zotlabs/Module/Thing.php:196 +#, php-format +msgid "OBJ: %1$s %2$s %3$s" +msgstr "OBJ: %1$s %2$s %3$s" -#: ../../Zotlabs/Module/Connedit.php:935 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1158 -msgid "Locality" -msgstr "Localidad" +#: ../../Zotlabs/Module/Thing.php:259 +msgid "Show Thing" +msgstr "Mostrar elemento" -#: ../../Zotlabs/Module/Connedit.php:936 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1159 -msgid "Region" -msgstr "Provincia, región o estado" +#: ../../Zotlabs/Module/Thing.php:266 +msgid "item not found." +msgstr "elemento no encontrado." -#: ../../Zotlabs/Module/Connedit.php:937 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1160 -msgid "ZIP Code" -msgstr "Código postal" +#: ../../Zotlabs/Module/Thing.php:299 +msgid "Edit Thing" +msgstr "Editar elemento" -#: ../../Zotlabs/Module/Connedit.php:938 ../../Zotlabs/Module/Profiles.php:760 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:1161 -msgid "Country" -msgstr "País" +#: ../../Zotlabs/Module/Thing.php:301 ../../Zotlabs/Module/Thing.php:355 +msgid "Select a profile" +msgstr "Seleccionar un perfil" -#: ../../Zotlabs/Module/Events.php:25 -msgid "Calendar entries imported." -msgstr "Entradas de calendario importadas." +#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:358 +msgid "Post an activity" +msgstr "Publicar una actividad" -#: ../../Zotlabs/Module/Events.php:27 -msgid "No calendar entries found." -msgstr "No se han encontrado entradas de calendario." +#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:358 +msgid "Only sends to viewers of the applicable profile" +msgstr "Sólo enviar a espectadores del perfil pertinente." -#: ../../Zotlabs/Module/Events.php:110 -msgid "Event can not end before it has started." -msgstr "Un evento no puede terminar antes de que haya comenzado." +#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:360 +msgid "Name of thing e.g. something" +msgstr "Nombre del elemento, p. ej.:. \"algo\"" -#: ../../Zotlabs/Module/Events.php:112 ../../Zotlabs/Module/Events.php:121 -#: ../../Zotlabs/Module/Events.php:143 -msgid "Unable to generate preview." -msgstr "No se puede crear la vista previa." +#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:361 +msgid "URL of thing (optional)" +msgstr "Dirección del elemento (opcional)" -#: ../../Zotlabs/Module/Events.php:119 -msgid "Event title and start time are required." -msgstr "Se requieren el título del evento y su hora de inicio." +#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:362 +msgid "URL for photo of thing (optional)" +msgstr "Dirección para la foto o elemento (opcional)" -#: ../../Zotlabs/Module/Events.php:141 ../../Zotlabs/Module/Events.php:265 -msgid "Event not found." -msgstr "Evento no encontrado." +#: ../../Zotlabs/Module/Thing.php:313 ../../Zotlabs/Module/Thing.php:363 +#: ../../Zotlabs/Module/Photos.php:647 ../../Zotlabs/Module/Photos.php:1011 +#: ../../Zotlabs/Module/Connedit.php:680 ../../Zotlabs/Module/Chat.php:233 +#: ../../Zotlabs/Module/Filestorage.php:152 +#: ../../include/acl_selectors.php:218 +msgid "Permissions" +msgstr "Permisos" -#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Like.php:372 -#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:1141 -#: ../../include/conversation.php:123 ../../include/text.php:1961 -msgid "event" -msgstr "evento" +#: ../../Zotlabs/Module/Thing.php:353 +msgid "Add Thing to your Profile" +msgstr "Añadir alguna cosa a su perfil" -#: ../../Zotlabs/Module/Events.php:460 -msgid "Edit event title" -msgstr "Editar el título del evento" +#: ../../Zotlabs/Module/Notify.php:57 +#: ../../Zotlabs/Module/Notifications.php:38 +msgid "No more system notifications." +msgstr "No hay más notificaciones del sistema" -#: ../../Zotlabs/Module/Events.php:460 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:835 -msgid "Event title" -msgstr "Título del evento" +#: ../../Zotlabs/Module/Notify.php:61 +#: ../../Zotlabs/Module/Notifications.php:42 +msgid "System Notifications" +msgstr "Notificaciones del sistema" -#: ../../Zotlabs/Module/Events.php:462 -msgid "Categories (comma-separated list)" -msgstr "Temas (lista separada por comas)" +#: ../../Zotlabs/Module/Follow.php:31 +msgid "Channel added." +msgstr "Canal añadido." -#: ../../Zotlabs/Module/Events.php:463 -msgid "Edit Category" -msgstr "Modificar el tema" +#: ../../Zotlabs/Module/Import.php:144 +#, php-format +msgid "Your service plan only allows %d channels." +msgstr "Su paquete de servicios solo permite %d canales." -#: ../../Zotlabs/Module/Events.php:463 -msgid "Category" -msgstr "Tema" +#: ../../Zotlabs/Module/Import.php:158 +msgid "No channel. Import failed." +msgstr "No hay canal. La importación ha fallado" -#: ../../Zotlabs/Module/Events.php:466 -msgid "Edit start date and time" -msgstr "Modificar la fecha y hora de comienzo" +#: ../../Zotlabs/Module/Import.php:466 +#: ../../addon/diaspora/import_diaspora.php:142 +msgid "Import completed." +msgstr "Importación completada." -#: ../../Zotlabs/Module/Events.php:466 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:836 -msgid "Start date and time" -msgstr "Fecha y hora de comienzo" +#: ../../Zotlabs/Module/Import.php:492 +msgid "You must be logged in to use this feature." +msgstr "Debe estar registrado para poder usar esta funcionalidad." -#: ../../Zotlabs/Module/Events.php:467 ../../Zotlabs/Module/Events.php:470 -msgid "Finish date and time are not known or not relevant" -msgstr "La fecha y hora de terminación no se conocen o no son relevantes" +#: ../../Zotlabs/Module/Import.php:497 +msgid "Import Channel" +msgstr "Importar canal" -#: ../../Zotlabs/Module/Events.php:469 -msgid "Edit finish date and time" -msgstr "Modificar la fecha y hora de terminación" +#: ../../Zotlabs/Module/Import.php:498 +msgid "" +"Use this form to import an existing channel from a different server/hub. You" +" may retrieve the channel identity from the old server/hub via the network " +"or provide an export file." +msgstr "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación." -#: ../../Zotlabs/Module/Events.php:469 -msgid "Finish date and time" -msgstr "Fecha y hora de terminación" +#: ../../Zotlabs/Module/Import.php:500 +msgid "Or provide the old server/hub details" +msgstr "O proporcione los detalles de su antiguo servidor/hub" -#: ../../Zotlabs/Module/Events.php:471 ../../Zotlabs/Module/Events.php:472 -msgid "Adjust for viewer timezone" -msgstr "Ajustar para obtener el visor de los husos horarios" +#: ../../Zotlabs/Module/Import.php:501 +msgid "Your old identity address (xyz@example.com)" +msgstr "Su identidad en el antiguo servidor (canal@ejemplo.com)" -#: ../../Zotlabs/Module/Events.php:471 +#: ../../Zotlabs/Module/Import.php:502 +msgid "Your old login email address" +msgstr "Su antigua dirección de correo electrónico" + +#: ../../Zotlabs/Module/Import.php:503 +msgid "Your old login password" +msgstr "Su antigua contraseña" + +#: ../../Zotlabs/Module/Import.php:504 msgid "" -"Important for events that happen in a particular place. Not practical for " -"global holidays." -msgstr "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales." +"For either option, please choose whether to make this hub your new primary " +"address, or whether your old location should continue this role. You will be" +" able to post from either location, but only one can be marked as the " +"primary location for files, photos, and media." +msgstr "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua dirección debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos." -#: ../../Zotlabs/Module/Events.php:473 -msgid "Edit Description" -msgstr "Editar la descripción" +#: ../../Zotlabs/Module/Import.php:505 +msgid "Make this hub my primary location" +msgstr "Convertir este servidor en mi ubicación primaria" -#: ../../Zotlabs/Module/Events.php:475 -msgid "Edit Location" -msgstr "Modificar la dirección" +#: ../../Zotlabs/Module/Import.php:506 +msgid "Move this channel (disable all previous locations)" +msgstr "Mover este canal (desactivar todas las ubicaciones anteriores)" -#: ../../Zotlabs/Module/Events.php:478 ../../Zotlabs/Module/Photos.php:1094 -#: ../../Zotlabs/Module/Webpages.php:251 ../../Zotlabs/Lib/ThreadItem.php:740 -#: ../../include/page_widgets.php:43 ../../include/conversation.php:1347 -msgid "Preview" -msgstr "Previsualizar" +#: ../../Zotlabs/Module/Import.php:507 +msgid "Import a few months of posts if possible (limited by available memory" +msgstr "Importar unos meses de mensajes si es posible (limitado por la memoria disponible" -#: ../../Zotlabs/Module/Events.php:479 ../../include/conversation.php:1410 -msgid "Permission settings" -msgstr "Configuración de permisos" +#: ../../Zotlabs/Module/Import.php:508 +msgid "" +"This process may take several minutes to complete. Please submit the form " +"only once and leave this page open until finished." +msgstr "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine." -#: ../../Zotlabs/Module/Events.php:489 -msgid "Timezone:" -msgstr "Zona horaria: " +#: ../../Zotlabs/Module/Rmagic.php:35 +msgid "Authentication failed." +msgstr "Falló la autenticación." -#: ../../Zotlabs/Module/Events.php:494 -msgid "Advanced Options" -msgstr "Opciones avanzadas" +#: ../../Zotlabs/Module/Rmagic.php:75 ../../include/channel.php:1982 +msgid "Remote Authentication" +msgstr "Acceso desde su servidor" -#: ../../Zotlabs/Module/Events.php:605 ../../Zotlabs/Module/Cal.php:263 -msgid "l, F j" -msgstr "l j F" +#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:1983 +msgid "Enter your channel address (e.g. channel@example.com)" +msgstr "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)" -#: ../../Zotlabs/Module/Events.php:633 -msgid "Edit event" -msgstr "Editar evento" +#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:1984 +msgid "Authenticate" +msgstr "Acceder" -#: ../../Zotlabs/Module/Events.php:635 -msgid "Delete event" -msgstr "Borrar evento" +#: ../../Zotlabs/Module/Cal.php:62 ../../Zotlabs/Module/Chanview.php:96 +#: ../../Zotlabs/Module/Page.php:56 ../../Zotlabs/Module/Wall_upload.php:31 +#: ../../Zotlabs/Module/Block.php:43 +msgid "Channel not found." +msgstr "Canal no encontrado." -#: ../../Zotlabs/Module/Events.php:660 ../../Zotlabs/Module/Cal.php:312 -#: ../../include/text.php:1766 -msgid "Link to Source" -msgstr "Enlazar con la entrada en su ubicación original" +#: ../../Zotlabs/Module/Cal.php:69 +msgid "Permissions denied." +msgstr "Permisos denegados." -#: ../../Zotlabs/Module/Events.php:669 -msgid "calendar" -msgstr "calendario" +#: ../../Zotlabs/Module/Cal.php:342 ../../include/text.php:2299 +msgid "Import" +msgstr "Importar" -#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:335 -msgid "Edit Event" -msgstr "Editar el evento" +#: ../../Zotlabs/Module/Api.php:72 ../../Zotlabs/Module/Api.php:93 +msgid "Authorize application connection" +msgstr "Autorizar una conexión de aplicación" -#: ../../Zotlabs/Module/Events.php:688 ../../Zotlabs/Module/Cal.php:335 -msgid "Create Event" -msgstr "Crear un evento" +#: ../../Zotlabs/Module/Api.php:73 +msgid "Return to your app and insert this Security Code:" +msgstr "Vuelva a su aplicación e introduzca este código de seguridad: " -#: ../../Zotlabs/Module/Events.php:689 ../../Zotlabs/Module/Events.php:698 -#: ../../Zotlabs/Module/Photos.php:935 ../../Zotlabs/Module/Cal.php:336 -#: ../../Zotlabs/Module/Cal.php:343 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:846 -msgid "Previous" -msgstr "Anterior" +#: ../../Zotlabs/Module/Api.php:83 +msgid "Please login to continue." +msgstr "Por favor inicie sesión para continuar." -#: ../../Zotlabs/Module/Events.php:690 ../../Zotlabs/Module/Events.php:699 -#: ../../Zotlabs/Module/Photos.php:944 ../../Zotlabs/Module/Cal.php:337 -#: ../../Zotlabs/Module/Cal.php:344 ../../Zotlabs/Module/Setup.php:264 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:847 -msgid "Next" -msgstr "Siguiente" +#: ../../Zotlabs/Module/Api.php:95 +msgid "" +"Do you want to authorize this application to access your posts and contacts," +" and/or create new posts for you?" +msgstr "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?" -#: ../../Zotlabs/Module/Events.php:691 ../../Zotlabs/Module/Cal.php:338 -#: ../../include/channel.php:1370 -msgid "Export" -msgstr "Exportar" +#: ../../Zotlabs/Module/Attach.php:13 +msgid "Item not available." +msgstr "Elemento no disponible" -#: ../../Zotlabs/Module/Events.php:695 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:849 -msgid "Month" -msgstr "Mes" +#: ../../Zotlabs/Module/Editblock.php:116 ../../Zotlabs/Module/Chat.php:205 +#: ../../Zotlabs/Module/Editwebpage.php:148 ../../Zotlabs/Module/Mail.php:287 +#: ../../Zotlabs/Module/Mail.php:424 ../../include/conversation.php:1228 +msgid "Insert web link" +msgstr "Insertar enlace web" -#: ../../Zotlabs/Module/Events.php:696 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:850 -msgid "Week" -msgstr "Semana" +#: ../../Zotlabs/Module/Editblock.php:129 ../../include/conversation.php:1339 +msgid "Title (optional)" +msgstr "Título (opcional)" -#: ../../Zotlabs/Module/Events.php:697 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:851 -msgid "Day" -msgstr "Día" +#: ../../Zotlabs/Module/Editblock.php:138 +msgid "Edit Block" +msgstr "Modificar este bloque" -#: ../../Zotlabs/Module/Events.php:700 ../../Zotlabs/Module/Cal.php:345 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:848 -msgid "Today" -msgstr "Hoy" +#: ../../Zotlabs/Module/Profile.php:91 +msgid "vcard" +msgstr "vcard" -#: ../../Zotlabs/Module/Events.php:731 -msgid "Event removed" -msgstr "Evento borrado" +#: ../../Zotlabs/Module/Apps.php:45 +msgid "Apps" +msgstr "Aplicaciones (apps)" -#: ../../Zotlabs/Module/Events.php:734 -msgid "Failed to remove event" -msgstr "Error al eliminar el evento" +#: ../../Zotlabs/Module/Apps.php:48 +msgid "Manage apps" +msgstr "Gestionar las aplicaciones" -#: ../../Zotlabs/Module/Home.php:74 ../../Zotlabs/Module/Home.php:82 -#: ../../extend/addon/addon/opensearch/opensearch.php:42 -msgid "$Projectname" -msgstr "$Projectname" +#: ../../Zotlabs/Module/Apps.php:49 +msgid "Create new app" +msgstr "Crear una nueva aplicación" -#: ../../Zotlabs/Module/Home.php:92 +#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:256 #, php-format -msgid "Welcome to %s" -msgstr "Bienvenido a %s" +msgctxt "mood" +msgid "%1$s is %2$s" +msgstr "%1$s está %2$s" -#: ../../Zotlabs/Module/Filestorage.php:87 -msgid "Permission Denied." -msgstr "Permiso denegado" +#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:234 +msgid "Mood" +msgstr "Estado de ánimo" -#: ../../Zotlabs/Module/Filestorage.php:103 -msgid "File not found." -msgstr "Fichero no encontrado." +#: ../../Zotlabs/Module/Mood.php:136 +msgid "Set your current mood and tell your friends" +msgstr "Describir su estado de ánimo para comunicárselo a sus amigos" -#: ../../Zotlabs/Module/Filestorage.php:146 -msgid "Edit file permissions" -msgstr "Modificar los permisos del fichero" +#: ../../Zotlabs/Module/Connections.php:52 +#: ../../Zotlabs/Module/Connections.php:157 +#: ../../Zotlabs/Module/Connections.php:246 +msgid "Blocked" +msgstr "Bloqueadas" -#: ../../Zotlabs/Module/Filestorage.php:159 -msgid "Set/edit permissions" -msgstr "Establecer/editar los permisos" +#: ../../Zotlabs/Module/Connections.php:57 +#: ../../Zotlabs/Module/Connections.php:164 +#: ../../Zotlabs/Module/Connections.php:245 +msgid "Ignored" +msgstr "Ignoradas" -#: ../../Zotlabs/Module/Filestorage.php:160 -msgid "Include all files and sub folders" -msgstr "Incluir todos los ficheros y subcarpetas" +#: ../../Zotlabs/Module/Connections.php:62 +#: ../../Zotlabs/Module/Connections.php:178 +#: ../../Zotlabs/Module/Connections.php:244 +msgid "Hidden" +msgstr "Ocultas" -#: ../../Zotlabs/Module/Filestorage.php:161 -msgid "Return to file list" -msgstr "Volver a la lista de ficheros" +#: ../../Zotlabs/Module/Connections.php:67 +#: ../../Zotlabs/Module/Connections.php:171 +#: ../../Zotlabs/Module/Connections.php:243 +msgid "Archived" +msgstr "Archivadas" -#: ../../Zotlabs/Module/Filestorage.php:163 -msgid "Copy/paste this code to attach file to a post" -msgstr "Copiar/pegar este código para adjuntar el fichero al envío" +#: ../../Zotlabs/Module/Connections.php:72 +#: ../../Zotlabs/Module/Connections.php:82 ../../Zotlabs/Module/Menu.php:116 +#: ../../include/conversation.php:1657 +msgid "New" +msgstr "Nuevas" -#: ../../Zotlabs/Module/Filestorage.php:164 -msgid "Copy/paste this URL to link file from a web page" -msgstr "Copiar/pegar esta dirección para enlazar el fichero desde una página web" +#: ../../Zotlabs/Module/Connections.php:88 +#: ../../Zotlabs/Module/Connections.php:103 +#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Widget/Affinity.php:30 +msgid "All" +msgstr "Todos/as" -#: ../../Zotlabs/Module/Filestorage.php:166 -msgid "Share this file" -msgstr "Compartir este fichero" +#: ../../Zotlabs/Module/Connections.php:134 +msgid "New Connections" +msgstr "Nuevas conexiones" -#: ../../Zotlabs/Module/Filestorage.php:167 -msgid "Show URL to this file" -msgstr "Mostrar la dirección de este fichero" +#: ../../Zotlabs/Module/Connections.php:137 +msgid "Show pending (new) connections" +msgstr "Mostrar conexiones (nuevas) pendientes" -#: ../../Zotlabs/Module/Filestorage.php:168 -msgid "Notify your contacts about this file" -msgstr "Avisar a sus contactos sobre este fichero" +#: ../../Zotlabs/Module/Connections.php:144 +msgid "Show all connections" +msgstr "Mostrar todas las conexiones" -#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:229 -#: ../../include/conversation.php:1836 -msgid "Photos" -msgstr "Fotos" +#: ../../Zotlabs/Module/Connections.php:160 +msgid "Only show blocked connections" +msgstr "Mostrar solo las conexiones bloqueadas" + +#: ../../Zotlabs/Module/Connections.php:167 +msgid "Only show ignored connections" +msgstr "Mostrar solo conexiones ignoradas" + +#: ../../Zotlabs/Module/Connections.php:174 +msgid "Only show archived connections" +msgstr "Mostrar solo las conexiones archivadas" + +#: ../../Zotlabs/Module/Connections.php:181 +msgid "Only show hidden connections" +msgstr "Mostrar solo las conexiones ocultas" + +#: ../../Zotlabs/Module/Connections.php:242 +msgid "Pending approval" +msgstr "Pendiente de aprobación" + +#: ../../Zotlabs/Module/Connections.php:258 +#, php-format +msgid "%1$s [%2$s]" +msgstr "%1$s [%2$s]" + +#: ../../Zotlabs/Module/Connections.php:259 +msgid "Edit connection" +msgstr "Editar conexión" + +#: ../../Zotlabs/Module/Connections.php:260 +msgid "Delete connection" +msgstr "Eliminar conexión" + +#: ../../Zotlabs/Module/Connections.php:269 +msgid "Channel address" +msgstr "Dirección del canal" -#: ../../Zotlabs/Module/Photos.php:82 +#: ../../Zotlabs/Module/Connections.php:271 +msgid "Network" +msgstr "Red" + +#: ../../Zotlabs/Module/Connections.php:274 +msgid "Call" +msgstr "Llamar" + +#: ../../Zotlabs/Module/Connections.php:276 +msgid "Status" +msgstr "Estado" + +#: ../../Zotlabs/Module/Connections.php:278 +msgid "Connected" +msgstr "Conectado/a" + +#: ../../Zotlabs/Module/Connections.php:280 +msgid "Approve connection" +msgstr "Aprobar esta conexión" + +#: ../../Zotlabs/Module/Connections.php:282 +msgid "Ignore connection" +msgstr "Ignorar esta conexión" + +#: ../../Zotlabs/Module/Connections.php:283 +#: ../../Zotlabs/Module/Connedit.php:634 +msgid "Ignore" +msgstr "Ignorar" + +#: ../../Zotlabs/Module/Connections.php:284 +msgid "Recent activity" +msgstr "Actividad reciente" + +#: ../../Zotlabs/Module/Connections.php:308 ../../Zotlabs/Lib/Apps.php:216 +#: ../../include/text.php:957 ../../include/nav.php:181 +msgid "Connections" +msgstr "Conexiones" + +#: ../../Zotlabs/Module/Connections.php:313 +msgid "Search your connections" +msgstr "Buscar sus conexiones" + +#: ../../Zotlabs/Module/Connections.php:314 +msgid "Connections search" +msgstr "Buscar conexiones" + +#: ../../Zotlabs/Module/Connections.php:315 +#: ../../Zotlabs/Module/Directory.php:391 +#: ../../Zotlabs/Module/Directory.php:396 ../../include/contact_widgets.php:23 +msgid "Find" +msgstr "Encontrar" + +#: ../../Zotlabs/Module/Viewsrc.php:46 +msgid "Source of Item" +msgstr "Origen del elemento" + +#: ../../Zotlabs/Module/Bookmarks.php:53 +msgid "Bookmark added" +msgstr "Marcador añadido" + +#: ../../Zotlabs/Module/Bookmarks.php:76 +msgid "My Bookmarks" +msgstr "Mis marcadores" + +#: ../../Zotlabs/Module/Bookmarks.php:87 +msgid "My Connections Bookmarks" +msgstr "Marcadores de mis conexiones" + +#: ../../Zotlabs/Module/Removeaccount.php:35 +msgid "" +"Account removals are not allowed within 48 hours of changing the account " +"password." +msgstr "La eliminación de cuentas no está permitida hasta después de que hayan transcurrido 48 horas desde el último cambio de contraseña." + +#: ../../Zotlabs/Module/Removeaccount.php:57 +msgid "Remove This Account" +msgstr "Eliminar esta cuenta" + +#: ../../Zotlabs/Module/Removeaccount.php:58 +msgid "" +"This account and all its channels will be completely removed from the " +"network. " +msgstr "Esta cuenta y todos sus canales van a ser eliminados de la red." + +#: ../../Zotlabs/Module/Removeaccount.php:60 +msgid "" +"Remove this account, all its channels and all its channel clones from the " +"network" +msgstr "Remover esta cuenta, todos sus canales y clones de la red" + +#: ../../Zotlabs/Module/Removeaccount.php:60 +msgid "" +"By default only the instances of the channels located on this hub will be " +"removed from the network" +msgstr "Por defecto, solo las instancias de los canales ubicados en este servidor serán eliminados de la red" + +#: ../../Zotlabs/Module/Photos.php:78 msgid "Page owner information could not be retrieved." msgstr "La información del propietario de la página no pudo ser recuperada." -#: ../../Zotlabs/Module/Photos.php:97 ../../Zotlabs/Module/Photos.php:729 -#: ../../Zotlabs/Module/Profile_photo.php:115 -#: ../../Zotlabs/Module/Profile_photo.php:224 -#: ../../include/photo/photo_driver.php:730 -msgid "Profile Photos" -msgstr "Fotos del perfil" - -#: ../../Zotlabs/Module/Photos.php:103 ../../Zotlabs/Module/Photos.php:129 +#: ../../Zotlabs/Module/Photos.php:94 ../../Zotlabs/Module/Photos.php:120 msgid "Album not found." msgstr "Álbum no encontrado." -#: ../../Zotlabs/Module/Photos.php:112 +#: ../../Zotlabs/Module/Photos.php:103 msgid "Delete Album" msgstr "Borrar álbum" -#: ../../Zotlabs/Module/Photos.php:133 -msgid "" -"Multiple storage folders exist with this album name, but within different " -"directories. Please remove the desired folder or folders using the Files " -"manager" -msgstr "Hay varias carpetas con este nombre de álbum, pero dentro de diferentes directorios. Por favor, elimine la carpeta o carpetas que desee utilizando el administrador de ficheros" - -#: ../../Zotlabs/Module/Photos.php:190 ../../Zotlabs/Module/Photos.php:1054 +#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1023 msgid "Delete Photo" msgstr "Borrar foto" -#: ../../Zotlabs/Module/Photos.php:508 ../../Zotlabs/Module/Display.php:22 -#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Search.php:17 -#: ../../Zotlabs/Module/Directory.php:64 -#: ../../Zotlabs/Module/Viewconnections.php:23 -#: ../../extend/addon/addon/friendica/dfrn_request.php:794 -msgid "Public access denied." -msgstr "Acceso público denegado." - -#: ../../Zotlabs/Module/Photos.php:519 +#: ../../Zotlabs/Module/Photos.php:501 msgid "No photos selected" msgstr "No hay fotos seleccionadas" -#: ../../Zotlabs/Module/Photos.php:568 +#: ../../Zotlabs/Module/Photos.php:550 msgid "Access to this item is restricted." msgstr "El acceso a este elemento está restringido." -#: ../../Zotlabs/Module/Photos.php:607 +#: ../../Zotlabs/Module/Photos.php:591 #, php-format msgid "%1$.2f MB of %2$.2f MB photo storage used." msgstr "%1$.2f MB de %2$.2f MB de almacenamiento de fotos utilizado." -#: ../../Zotlabs/Module/Photos.php:610 +#: ../../Zotlabs/Module/Photos.php:594 #, php-format msgid "%1$.2f MB photo storage used." msgstr "%1$.2f MB de almacenamiento de fotos utilizado." -#: ../../Zotlabs/Module/Photos.php:646 +#: ../../Zotlabs/Module/Photos.php:636 msgid "Upload Photos" msgstr "Subir fotos" -#: ../../Zotlabs/Module/Photos.php:650 +#: ../../Zotlabs/Module/Photos.php:640 msgid "Enter an album name" msgstr "Introducir un nombre de álbum" -#: ../../Zotlabs/Module/Photos.php:651 +#: ../../Zotlabs/Module/Photos.php:641 msgid "or select an existing album (doubleclick)" msgstr "o seleccionar uno existente (doble click)" -#: ../../Zotlabs/Module/Photos.php:652 +#: ../../Zotlabs/Module/Photos.php:642 msgid "Create a status post for this upload" msgstr "Crear un mensaje de estado para esta subida" -#: ../../Zotlabs/Module/Photos.php:653 +#: ../../Zotlabs/Module/Photos.php:643 msgid "Caption (optional):" msgstr "Título (opcional):" -#: ../../Zotlabs/Module/Photos.php:654 +#: ../../Zotlabs/Module/Photos.php:644 msgid "Description (optional):" msgstr "Descripción (opcional):" -#: ../../Zotlabs/Module/Photos.php:685 -msgid "Album name could not be decoded" -msgstr "El nombre del álbum no ha podido ser descifrado" - -#: ../../Zotlabs/Module/Photos.php:729 -msgid "Contact Photos" -msgstr "Fotos de contacto" - -#: ../../Zotlabs/Module/Photos.php:752 +#: ../../Zotlabs/Module/Photos.php:725 msgid "Show Newest First" msgstr "Mostrar lo más reciente primero" -#: ../../Zotlabs/Module/Photos.php:754 +#: ../../Zotlabs/Module/Photos.php:727 msgid "Show Oldest First" msgstr "Mostrar lo más antiguo primero" -#: ../../Zotlabs/Module/Photos.php:778 ../../Zotlabs/Module/Photos.php:1335 -#: ../../Zotlabs/Module/Embedphotos.php:139 ../../include/widgets.php:1751 -msgid "View Photo" -msgstr "Ver foto" - -#: ../../Zotlabs/Module/Photos.php:809 -#: ../../Zotlabs/Module/Embedphotos.php:155 ../../include/widgets.php:1768 -msgid "Edit Album" -msgstr "Editar álbum" - -#: ../../Zotlabs/Module/Photos.php:856 +#: ../../Zotlabs/Module/Photos.php:832 msgid "Permission denied. Access to this item may be restricted." msgstr "Permiso denegado. El acceso a este elemento puede estar restringido." -#: ../../Zotlabs/Module/Photos.php:858 +#: ../../Zotlabs/Module/Photos.php:834 msgid "Photo not available" msgstr "Foto no disponible" -#: ../../Zotlabs/Module/Photos.php:916 +#: ../../Zotlabs/Module/Photos.php:892 msgid "Use as profile photo" msgstr "Usar como foto del perfil" -#: ../../Zotlabs/Module/Photos.php:917 +#: ../../Zotlabs/Module/Photos.php:893 msgid "Use as cover photo" msgstr "Usar como imagen de portada del perfil" -#: ../../Zotlabs/Module/Photos.php:924 +#: ../../Zotlabs/Module/Photos.php:900 msgid "Private Photo" msgstr "Foto privada" -#: ../../Zotlabs/Module/Photos.php:939 +#: ../../Zotlabs/Module/Photos.php:915 msgid "View Full Size" msgstr "Ver tamaño completo" -#: ../../Zotlabs/Module/Photos.php:1028 +#: ../../Zotlabs/Module/Photos.php:997 msgid "Edit photo" msgstr "Editar foto" -#: ../../Zotlabs/Module/Photos.php:1030 +#: ../../Zotlabs/Module/Photos.php:999 msgid "Rotate CW (right)" msgstr "Girar CW (a la derecha)" -#: ../../Zotlabs/Module/Photos.php:1031 +#: ../../Zotlabs/Module/Photos.php:1000 msgid "Rotate CCW (left)" msgstr "Girar CCW (a la izquierda)" -#: ../../Zotlabs/Module/Photos.php:1034 +#: ../../Zotlabs/Module/Photos.php:1003 msgid "Move photo to album" msgstr "Mover la foto a un álbum" -#: ../../Zotlabs/Module/Photos.php:1035 +#: ../../Zotlabs/Module/Photos.php:1004 msgid "Enter a new album name" msgstr "Introducir un nuevo nombre de álbum" -#: ../../Zotlabs/Module/Photos.php:1036 +#: ../../Zotlabs/Module/Photos.php:1005 msgid "or select an existing one (doubleclick)" msgstr "o seleccionar uno (doble click) existente" -#: ../../Zotlabs/Module/Photos.php:1039 +#: ../../Zotlabs/Module/Photos.php:1008 msgid "Caption" msgstr "Título" -#: ../../Zotlabs/Module/Photos.php:1041 +#: ../../Zotlabs/Module/Photos.php:1010 msgid "Add a Tag" msgstr "Añadir una etiqueta" -#: ../../Zotlabs/Module/Photos.php:1049 +#: ../../Zotlabs/Module/Photos.php:1018 msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" msgstr "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com" -#: ../../Zotlabs/Module/Photos.php:1052 +#: ../../Zotlabs/Module/Photos.php:1021 msgid "Flag as adult in album view" msgstr "Marcar como \"solo para adultos\" en el álbum" -#: ../../Zotlabs/Module/Photos.php:1071 ../../Zotlabs/Lib/ThreadItem.php:268 +#: ../../Zotlabs/Module/Photos.php:1040 ../../Zotlabs/Lib/ThreadItem.php:269 msgid "I like this (toggle)" msgstr "Me gusta (cambiar)" -#: ../../Zotlabs/Module/Photos.php:1072 ../../Zotlabs/Lib/ThreadItem.php:269 +#: ../../Zotlabs/Module/Photos.php:1041 ../../Zotlabs/Lib/ThreadItem.php:270 msgid "I don't like this (toggle)" msgstr "No me gusta esto (cambiar)" -#: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Module/Webpages.php:245 -#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Layouts.php:193 -#: ../../extend/addon/addon/cdav/include/widgets.php:123 -#: ../../include/conversation.php:1378 -msgid "Share" -msgstr "Compartir" - -#: ../../Zotlabs/Module/Photos.php:1074 ../../Zotlabs/Lib/ThreadItem.php:411 -#: ../../include/conversation.php:738 +#: ../../Zotlabs/Module/Photos.php:1043 ../../Zotlabs/Lib/ThreadItem.php:412 +#: ../../include/conversation.php:739 msgid "Please wait" msgstr "Espere por favor" -#: ../../Zotlabs/Module/Photos.php:1090 ../../Zotlabs/Module/Photos.php:1208 -#: ../../Zotlabs/Lib/ThreadItem.php:728 +#: ../../Zotlabs/Module/Photos.php:1059 ../../Zotlabs/Module/Photos.php:1177 +#: ../../Zotlabs/Lib/ThreadItem.php:729 msgid "This is you" msgstr "Este es usted" -#: ../../Zotlabs/Module/Photos.php:1092 ../../Zotlabs/Module/Photos.php:1210 -#: ../../Zotlabs/Lib/ThreadItem.php:730 ../../include/js_strings.php:6 +#: ../../Zotlabs/Module/Photos.php:1061 ../../Zotlabs/Module/Photos.php:1179 +#: ../../Zotlabs/Lib/ThreadItem.php:731 ../../include/js_strings.php:6 msgid "Comment" msgstr "Comentar" -#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:577 +#: ../../Zotlabs/Module/Photos.php:1077 ../../include/conversation.php:574 msgctxt "title" msgid "Likes" msgstr "Me gusta" -#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:577 +#: ../../Zotlabs/Module/Photos.php:1077 ../../include/conversation.php:574 msgctxt "title" msgid "Dislikes" msgstr "No me gusta" -#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:578 +#: ../../Zotlabs/Module/Photos.php:1078 ../../include/conversation.php:575 msgctxt "title" msgid "Agree" msgstr "De acuerdo" -#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:578 +#: ../../Zotlabs/Module/Photos.php:1078 ../../include/conversation.php:575 msgctxt "title" msgid "Disagree" msgstr "En desacuerdo" -#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:578 +#: ../../Zotlabs/Module/Photos.php:1078 ../../include/conversation.php:575 msgctxt "title" msgid "Abstain" msgstr "Abstención" -#: ../../Zotlabs/Module/Photos.php:1110 ../../include/conversation.php:579 +#: ../../Zotlabs/Module/Photos.php:1079 ../../include/conversation.php:576 msgctxt "title" msgid "Attending" msgstr "Participaré" -#: ../../Zotlabs/Module/Photos.php:1110 ../../include/conversation.php:579 +#: ../../Zotlabs/Module/Photos.php:1079 ../../include/conversation.php:576 msgctxt "title" msgid "Not attending" msgstr "No participaré" -#: ../../Zotlabs/Module/Photos.php:1110 ../../include/conversation.php:579 +#: ../../Zotlabs/Module/Photos.php:1079 ../../include/conversation.php:576 msgctxt "title" msgid "Might attend" msgstr "Quizá participe" -#: ../../Zotlabs/Module/Photos.php:1127 ../../Zotlabs/Module/Photos.php:1139 -#: ../../Zotlabs/Lib/ThreadItem.php:186 ../../Zotlabs/Lib/ThreadItem.php:198 -#: ../../include/conversation.php:1928 +#: ../../Zotlabs/Module/Photos.php:1096 ../../Zotlabs/Module/Photos.php:1108 +#: ../../Zotlabs/Lib/ThreadItem.php:187 ../../Zotlabs/Lib/ThreadItem.php:199 msgid "View all" msgstr "Ver todo" -#: ../../Zotlabs/Module/Photos.php:1131 ../../Zotlabs/Lib/ThreadItem.php:190 -#: ../../include/taxonomy.php:403 ../../include/conversation.php:1952 -#: ../../include/channel.php:1273 +#: ../../Zotlabs/Module/Photos.php:1100 ../../Zotlabs/Lib/ThreadItem.php:191 +#: ../../include/conversation.php:1898 ../../include/channel.php:1266 +#: ../../include/taxonomy.php:403 msgctxt "noun" msgid "Like" msgid_plural "Likes" msgstr[0] "Me gusta" msgstr[1] "Me gusta" -#: ../../Zotlabs/Module/Photos.php:1136 ../../Zotlabs/Lib/ThreadItem.php:195 -#: ../../include/conversation.php:1955 +#: ../../Zotlabs/Module/Photos.php:1105 ../../Zotlabs/Lib/ThreadItem.php:196 +#: ../../include/conversation.php:1901 msgctxt "noun" msgid "Dislike" msgid_plural "Dislikes" msgstr[0] "No me gusta" msgstr[1] "No me gusta" -#: ../../Zotlabs/Module/Photos.php:1236 +#: ../../Zotlabs/Module/Photos.php:1205 msgid "Photo Tools" msgstr "Gestión de las fotos" -#: ../../Zotlabs/Module/Photos.php:1245 +#: ../../Zotlabs/Module/Photos.php:1214 msgid "In This Photo:" msgstr "En esta foto:" -#: ../../Zotlabs/Module/Photos.php:1250 +#: ../../Zotlabs/Module/Photos.php:1219 msgid "Map" msgstr "Mapa" -#: ../../Zotlabs/Module/Photos.php:1258 ../../Zotlabs/Lib/ThreadItem.php:400 +#: ../../Zotlabs/Module/Photos.php:1227 ../../Zotlabs/Lib/ThreadItem.php:401 msgctxt "noun" msgid "Likes" msgstr "Me gusta" -#: ../../Zotlabs/Module/Photos.php:1259 ../../Zotlabs/Lib/ThreadItem.php:401 +#: ../../Zotlabs/Module/Photos.php:1228 ../../Zotlabs/Lib/ThreadItem.php:402 msgctxt "noun" msgid "Dislikes" msgstr "No me gusta" -#: ../../Zotlabs/Module/Photos.php:1264 ../../Zotlabs/Lib/ThreadItem.php:406 +#: ../../Zotlabs/Module/Photos.php:1233 ../../Zotlabs/Lib/ThreadItem.php:407 #: ../../include/acl_selectors.php:220 msgid "Close" msgstr "Cerrar" -#: ../../Zotlabs/Module/Photos.php:1341 -msgid "View Album" -msgstr "Ver álbum" - -#: ../../Zotlabs/Module/Photos.php:1352 ../../Zotlabs/Module/Photos.php:1365 -#: ../../Zotlabs/Module/Photos.php:1366 +#: ../../Zotlabs/Module/Photos.php:1305 ../../Zotlabs/Module/Photos.php:1318 +#: ../../Zotlabs/Module/Photos.php:1319 ../../include/photos.php:528 msgid "Recent Photos" msgstr "Fotos recientes" -#: ../../Zotlabs/Module/Group.php:24 -msgid "Privacy group created." -msgstr "El grupo de canales ha sido creado." - -#: ../../Zotlabs/Module/Group.php:30 -msgid "Could not create privacy group." -msgstr "No se puede crear el grupo de canales" - -#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141 -#: ../../include/items.php:3901 -msgid "Privacy group not found." -msgstr "Grupo de canales no encontrado." - -#: ../../Zotlabs/Module/Group.php:58 -msgid "Privacy group updated." -msgstr "Grupo de canales actualizado." - -#: ../../Zotlabs/Module/Group.php:90 -msgid "Create a group of channels." -msgstr "Crear un grupo de canales." - -#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184 -msgid "Privacy group name: " -msgstr "Nombre del grupo de canales:" - -#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187 -msgid "Members are visible to other channels" -msgstr "Los miembros son visibles para otros canales" - -#: ../../Zotlabs/Module/Group.php:111 -msgid "Privacy group removed." -msgstr "Grupo de canales eliminado." - -#: ../../Zotlabs/Module/Group.php:113 -msgid "Unable to remove privacy group." -msgstr "No se puede eliminar el grupo de canales." - -#: ../../Zotlabs/Module/Group.php:183 -msgid "Privacy group editor" -msgstr "Editor de grupos de canales" - -#: ../../Zotlabs/Module/Group.php:199 -msgid "All Connected Channels" -msgstr "Todos los canales conectados" - -#: ../../Zotlabs/Module/Group.php:231 -msgid "Click on a channel to add or remove." -msgstr "Haga clic en un canal para agregarlo o quitarlo." - -#: ../../Zotlabs/Module/Dreport.php:45 -msgid "Invalid message" -msgstr "Mensaje no válido" - -#: ../../Zotlabs/Module/Dreport.php:78 -msgid "no results" -msgstr "sin resultados" - -#: ../../Zotlabs/Module/Dreport.php:93 -msgid "channel sync processed" -msgstr "se ha realizado la sincronización del canal" - -#: ../../Zotlabs/Module/Dreport.php:97 -msgid "queued" -msgstr "encolado" - -#: ../../Zotlabs/Module/Dreport.php:101 -msgid "posted" -msgstr "enviado" - -#: ../../Zotlabs/Module/Dreport.php:105 -msgid "accepted for delivery" -msgstr "aceptado para el envío" - -#: ../../Zotlabs/Module/Dreport.php:109 -msgid "updated" -msgstr "actualizado" - -#: ../../Zotlabs/Module/Dreport.php:112 -msgid "update ignored" -msgstr "actualización ignorada" - -#: ../../Zotlabs/Module/Dreport.php:115 -msgid "permission denied" -msgstr "permiso denegado" - -#: ../../Zotlabs/Module/Dreport.php:119 -msgid "recipient not found" -msgstr "destinatario no encontrado" - -#: ../../Zotlabs/Module/Dreport.php:122 -msgid "mail recalled" -msgstr "mensaje de correo revocado" - -#: ../../Zotlabs/Module/Dreport.php:125 -msgid "duplicate mail received" -msgstr "se ha recibido mensaje duplicado" - -#: ../../Zotlabs/Module/Dreport.php:128 -msgid "mail delivered" -msgstr "correo enviado" - -#: ../../Zotlabs/Module/Dreport.php:148 -#, php-format -msgid "Delivery report for %1$s" -msgstr "Informe de entrega para %1$s" - -#: ../../Zotlabs/Module/Dreport.php:151 -msgid "Options" -msgstr "Opciones" - -#: ../../Zotlabs/Module/Dreport.php:152 -msgid "Redeliver" -msgstr "Volver a enviar" - -#: ../../Zotlabs/Module/Mail.php:65 -msgid "Unable to lookup recipient." -msgstr "No se puede asociar a un destinatario." - -#: ../../Zotlabs/Module/Mail.php:72 -msgid "Unable to communicate with requested channel." -msgstr "No se puede establecer la comunicación con el canal solicitado." - -#: ../../Zotlabs/Module/Mail.php:79 -msgid "Cannot verify requested channel." -msgstr "No se puede verificar el canal solicitado." - -#: ../../Zotlabs/Module/Mail.php:97 -msgid "Selected channel has private message restrictions. Send failed." -msgstr "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló." - -#: ../../Zotlabs/Module/Mail.php:178 -msgid "Messages" -msgstr "Mensajes" - -#: ../../Zotlabs/Module/Mail.php:213 -msgid "Message recalled." -msgstr "Mensaje revocado." - -#: ../../Zotlabs/Module/Mail.php:226 -msgid "Conversation removed." -msgstr "Conversación eliminada." - -#: ../../Zotlabs/Module/Mail.php:240 ../../Zotlabs/Module/Mail.php:349 -#: ../../Zotlabs/Module/Chat.php:203 ../../include/conversation.php:1330 -msgid "Please enter a link URL:" -msgstr "Por favor, introduzca la dirección del enlace:" - -#: ../../Zotlabs/Module/Mail.php:241 ../../Zotlabs/Module/Mail.php:350 -msgid "Expires YYYY-MM-DD HH:MM" -msgstr "Caduca YYYY-MM-DD HH:MM" - -#: ../../Zotlabs/Module/Mail.php:269 -msgid "Requested channel is not in this network" -msgstr "El canal solicitado no existe en esta red" - -#: ../../Zotlabs/Module/Mail.php:277 -msgid "Send Private Message" -msgstr "Enviar un mensaje privado" - -#: ../../Zotlabs/Module/Mail.php:278 ../../Zotlabs/Module/Mail.php:403 -msgid "To:" -msgstr "Para:" - -#: ../../Zotlabs/Module/Mail.php:281 ../../Zotlabs/Module/Mail.php:405 -msgid "Subject:" -msgstr "Asunto:" - -#: ../../Zotlabs/Module/Mail.php:284 ../../Zotlabs/Module/Invite.php:138 -msgid "Your message:" -msgstr "Su mensaje:" - -#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:411 -#: ../../include/conversation.php:1390 -msgid "Attach file" -msgstr "Adjuntar fichero" - -#: ../../Zotlabs/Module/Mail.php:288 -msgid "Send" -msgstr "Enviar" - -#: ../../Zotlabs/Module/Mail.php:291 ../../Zotlabs/Module/Mail.php:416 -#: ../../include/conversation.php:1435 -msgid "Set expiration date" -msgstr "Configurar fecha de caducidad" - -#: ../../Zotlabs/Module/Mail.php:293 ../../Zotlabs/Module/Mail.php:418 -#: ../../Zotlabs/Module/Chat.php:204 ../../Zotlabs/Lib/ThreadItem.php:743 -#: ../../include/conversation.php:1440 -msgid "Encrypt text" -msgstr "Cifrar texto" - -#: ../../Zotlabs/Module/Mail.php:375 -msgid "Delete message" -msgstr "Borrar mensaje" - -#: ../../Zotlabs/Module/Mail.php:376 -msgid "Delivery report" -msgstr "Informe de transmisión" - -#: ../../Zotlabs/Module/Mail.php:377 -msgid "Recall message" -msgstr "Revocar el mensaje" - -#: ../../Zotlabs/Module/Mail.php:379 -msgid "Message has been recalled." -msgstr "El mensaje ha sido revocado." - -#: ../../Zotlabs/Module/Mail.php:396 -msgid "Delete Conversation" -msgstr "Eliminar conversación" - -#: ../../Zotlabs/Module/Mail.php:398 -msgid "" -"No secure communications available. You <strong>may</strong> be able to " -"respond from the sender's profile page." -msgstr "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente." - -#: ../../Zotlabs/Module/Mail.php:402 -msgid "Send Reply" -msgstr "Responder" - -#: ../../Zotlabs/Module/Mail.php:407 -#, php-format -msgid "Your message for %s (%s):" -msgstr "Su mensaje para %s (%s):" - -#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:203 -msgid "webpage" -msgstr "página web" - -#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:209 -msgid "block" -msgstr "bloque" - -#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:206 -msgid "layout" -msgstr "plantilla" - -#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:212 -msgid "menu" -msgstr "menú" - -#: ../../Zotlabs/Module/Impel.php:191 -#, php-format -msgid "%s element installed" -msgstr "%s elemento instalado" - -#: ../../Zotlabs/Module/Impel.php:194 -#, php-format -msgid "%s element installation failed" -msgstr "Elemento con instalación fallida: %s" - -#: ../../Zotlabs/Module/Import_items.php:104 -msgid "Import completed" -msgstr "Importación completada" +#: ../../Zotlabs/Module/Wiki.php:30 +msgid "Profile Unavailable." +msgstr "Perfil no disponible" -#: ../../Zotlabs/Module/Import_items.php:119 -msgid "Import Items" -msgstr "Importar elementos" +#: ../../Zotlabs/Module/Wiki.php:44 ../../addon/gitwiki/Mod_Gitwiki.php:42 +msgid "Not found" +msgstr "No encontrado" -#: ../../Zotlabs/Module/Import_items.php:120 -msgid "" -"Use this form to import existing posts and content from an export file." -msgstr "Utilice este formulario para importar entradas existentes y contenido desde un archivo de exportación." +#: ../../Zotlabs/Module/Wiki.php:68 ../../addon/gitwiki/Mod_Gitwiki.php:62 +msgid "Invalid channel" +msgstr "Canal no válido" -#: ../../Zotlabs/Module/Manage.php:136 -#: ../../Zotlabs/Module/New_channel.php:121 -#, php-format -msgid "You have created %1$.0f of %2$.0f allowed channels." -msgstr "Ha creado %1$.0f de %2$.0f canales permitidos." +#: ../../Zotlabs/Module/Wiki.php:160 ../../addon/gitwiki/Mod_Gitwiki.php:146 +#: ../../include/conversation.php:1845 +msgid "Wikis" +msgstr "Wikis" -#: ../../Zotlabs/Module/Manage.php:143 -msgid "Create a new channel" -msgstr "Crear un nuevo canal" +#: ../../Zotlabs/Module/Wiki.php:166 ../../addon/gitwiki/Mod_Gitwiki.php:152 +msgid "Download" +msgstr "Descargar" -#: ../../Zotlabs/Module/Manage.php:143 ../../Zotlabs/Module/Profiles.php:834 -#: ../../Zotlabs/Module/Wiki.php:167 ../../Zotlabs/Module/Chat.php:253 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:152 +#: ../../Zotlabs/Module/Wiki.php:168 ../../Zotlabs/Module/Chat.php:254 +#: ../../Zotlabs/Module/Profiles.php:834 ../../Zotlabs/Module/Manage.php:143 +#: ../../addon/gitwiki/Mod_Gitwiki.php:154 msgid "Create New" msgstr "Crear" -#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:221 -#: ../../include/nav.php:223 -msgid "Channel Manager" -msgstr "Administración de canales" - -#: ../../Zotlabs/Module/Manage.php:165 -msgid "Current Channel" -msgstr "Canal actual" - -#: ../../Zotlabs/Module/Manage.php:167 -msgid "Switch to one of your channels by selecting it." -msgstr "Cambiar a uno de sus canales seleccionándolo." - -#: ../../Zotlabs/Module/Manage.php:168 -msgid "Default Channel" -msgstr "Canal principal" - -#: ../../Zotlabs/Module/Manage.php:169 -msgid "Make Default" -msgstr "Convertir en predeterminado" - -#: ../../Zotlabs/Module/Manage.php:172 -#, php-format -msgid "%d new messages" -msgstr "%d mensajes nuevos" - -#: ../../Zotlabs/Module/Manage.php:173 -#, php-format -msgid "%d new introductions" -msgstr "%d nuevas solicitudes de conexión" - -#: ../../Zotlabs/Module/Manage.php:175 -msgid "Delegated Channel" -msgstr "Canal delegado" - -#: ../../Zotlabs/Module/Magic.php:71 -msgid "Hub not found." -msgstr "Servidor no encontrado" - -#: ../../Zotlabs/Module/Mitem.php:52 -msgid "Unable to create element." -msgstr "No se puede crear el elemento." - -#: ../../Zotlabs/Module/Mitem.php:76 -msgid "Unable to update menu element." -msgstr "No es posible actualizar el elemento del menú." - -#: ../../Zotlabs/Module/Mitem.php:92 -msgid "Unable to add menu element." -msgstr "No es posible añadir el elemento al menú" - -#: ../../Zotlabs/Module/Mitem.php:153 ../../Zotlabs/Module/Mitem.php:230 -msgid "Menu Item Permissions" -msgstr "Permisos del elemento del menú" - -#: ../../Zotlabs/Module/Mitem.php:154 ../../Zotlabs/Module/Mitem.php:231 -#: ../../Zotlabs/Module/Settings/Channel.php:510 -msgid "(click to open/close)" -msgstr "(pulsar para abrir o cerrar)" - -#: ../../Zotlabs/Module/Mitem.php:160 ../../Zotlabs/Module/Mitem.php:176 -msgid "Link Name" -msgstr "Nombre del enlace" - -#: ../../Zotlabs/Module/Mitem.php:161 ../../Zotlabs/Module/Mitem.php:239 -msgid "Link or Submenu Target" -msgstr "Destino del enlace o submenú" - -#: ../../Zotlabs/Module/Mitem.php:161 -msgid "Enter URL of the link or select a menu name to create a submenu" -msgstr "Introducir la dirección del enlace o seleccionar el nombre de un submenú" - -#: ../../Zotlabs/Module/Mitem.php:162 ../../Zotlabs/Module/Mitem.php:240 -msgid "Use magic-auth if available" -msgstr "Usar la autenticación mágica si está disponible" - -#: ../../Zotlabs/Module/Mitem.php:163 ../../Zotlabs/Module/Mitem.php:241 -msgid "Open link in new window" -msgstr "Abrir el enlace en una nueva ventana" - -#: ../../Zotlabs/Module/Mitem.php:164 ../../Zotlabs/Module/Mitem.php:242 -msgid "Order in list" -msgstr "Orden en la lista" - -#: ../../Zotlabs/Module/Mitem.php:164 ../../Zotlabs/Module/Mitem.php:242 -msgid "Higher numbers will sink to bottom of listing" -msgstr "Los números más altos irán al final de la lista" - -#: ../../Zotlabs/Module/Mitem.php:165 -msgid "Submit and finish" -msgstr "Enviar y terminar" - -#: ../../Zotlabs/Module/Mitem.php:166 -msgid "Submit and continue" -msgstr "Enviar y continuar" - -#: ../../Zotlabs/Module/Mitem.php:174 -msgid "Menu:" -msgstr "Menú:" - -#: ../../Zotlabs/Module/Mitem.php:177 -msgid "Link Target" -msgstr "Destino del enlace" - -#: ../../Zotlabs/Module/Mitem.php:180 -msgid "Edit menu" -msgstr "Editar menú" - -#: ../../Zotlabs/Module/Mitem.php:183 -msgid "Edit element" -msgstr "Editar el elemento" - -#: ../../Zotlabs/Module/Mitem.php:184 -msgid "Drop element" -msgstr "Eliminar el elemento" - -#: ../../Zotlabs/Module/Mitem.php:185 -msgid "New element" -msgstr "Nuevo elemento" - -#: ../../Zotlabs/Module/Mitem.php:186 -msgid "Edit this menu container" -msgstr "Modificar el contenedor del menú" - -#: ../../Zotlabs/Module/Mitem.php:187 -msgid "Add menu element" -msgstr "Añadir un elemento al menú" - -#: ../../Zotlabs/Module/Mitem.php:188 -msgid "Delete this menu item" -msgstr "Eliminar este elemento del menú" - -#: ../../Zotlabs/Module/Mitem.php:189 -msgid "Edit this menu item" -msgstr "Modificar este elemento del menú" - -#: ../../Zotlabs/Module/Mitem.php:206 -msgid "Menu item not found." -msgstr "Este elemento del menú no se ha encontrado" - -#: ../../Zotlabs/Module/Mitem.php:219 -msgid "Menu item deleted." -msgstr "Este elemento del menú ha sido borrado" - -#: ../../Zotlabs/Module/Mitem.php:221 -msgid "Menu item could not be deleted." -msgstr "Este elemento del menú no puede ser borrado." - -#: ../../Zotlabs/Module/Mitem.php:228 -msgid "Edit Menu Element" -msgstr "Editar elemento del menú" - -#: ../../Zotlabs/Module/Mitem.php:238 -msgid "Link text" -msgstr "Texto del enlace" - -#: ../../Zotlabs/Module/Editpost.php:35 -msgid "Item is not editable" -msgstr "El elemento no es editable" - -#: ../../Zotlabs/Module/Ratings.php:70 -msgid "No ratings" -msgstr "Ninguna valoración" - -#: ../../Zotlabs/Module/Ratings.php:98 -msgid "Rating: " -msgstr "Valoración:" - -#: ../../Zotlabs/Module/Ratings.php:99 -msgid "Website: " -msgstr "Sitio web:" - -#: ../../Zotlabs/Module/Ratings.php:101 -msgid "Description: " -msgstr "Descripción:" - -#: ../../Zotlabs/Module/Attach.php:13 -msgid "Item not available." -msgstr "Elemento no disponible" - -#: ../../Zotlabs/Module/Cal.php:69 -msgid "Permissions denied." -msgstr "Permisos denegados." - -#: ../../Zotlabs/Module/Cal.php:341 ../../include/text.php:2312 -msgid "Import" -msgstr "Importar" - -#: ../../Zotlabs/Module/Notify.php:57 -#: ../../Zotlabs/Module/Notifications.php:38 -msgid "No more system notifications." -msgstr "No hay más notificaciones del sistema" - -#: ../../Zotlabs/Module/Notify.php:61 -#: ../../Zotlabs/Module/Notifications.php:42 -msgid "System Notifications" -msgstr "Notificaciones del sistema" - -#: ../../Zotlabs/Module/Api.php:72 ../../Zotlabs/Module/Api.php:93 -msgid "Authorize application connection" -msgstr "Autorizar una conexión de aplicación" - -#: ../../Zotlabs/Module/Api.php:73 -msgid "Return to your app and insert this Security Code:" -msgstr "Vuelva a su aplicación e introduzca este código de seguridad: " - -#: ../../Zotlabs/Module/Api.php:83 -msgid "Please login to continue." -msgstr "Por favor inicie sesión para continuar." - -#: ../../Zotlabs/Module/Api.php:95 -msgid "" -"Do you want to authorize this application to access your posts and contacts," -" and/or create new posts for you?" -msgstr "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?" - -#: ../../Zotlabs/Module/Invite.php:29 -msgid "Total invitation limit exceeded." -msgstr "Se ha superado el límite máximo de invitaciones." - -#: ../../Zotlabs/Module/Invite.php:53 -#, php-format -msgid "%s : Not a valid email address." -msgstr "%s : No es una dirección de correo electrónico válida. " +#: ../../Zotlabs/Module/Wiki.php:170 ../../addon/gitwiki/Mod_Gitwiki.php:156 +msgid "Wiki name" +msgstr "Nombre del wiki" -#: ../../Zotlabs/Module/Invite.php:67 -msgid "Please join us on $Projectname" -msgstr "Únase a nosotros en $Projectname" +#: ../../Zotlabs/Module/Wiki.php:171 ../../addon/gitwiki/Mod_Gitwiki.php:157 +msgid "Content type" +msgstr "Tipo de contenido" -#: ../../Zotlabs/Module/Invite.php:77 -msgid "Invitation limit exceeded. Please contact your site administrator." -msgstr "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio." +#: ../../Zotlabs/Module/Wiki.php:173 ../../Zotlabs/Storage/Browser.php:234 +#: ../../addon/gitwiki/Mod_Gitwiki.php:159 +msgid "Type" +msgstr "Tipo" -#: ../../Zotlabs/Module/Invite.php:82 -#, php-format -msgid "%s : Message delivery failed." -msgstr "%s : Falló el envío del mensaje." +#: ../../Zotlabs/Module/Wiki.php:180 ../../addon/gitwiki/Mod_Gitwiki.php:166 +msgid "Create a status post for this wiki" +msgstr "Crear un mensaje de estado para este wiki" -#: ../../Zotlabs/Module/Invite.php:86 -#, php-format -msgid "%d message sent." -msgid_plural "%d messages sent." -msgstr[0] "%d mensajes enviados." -msgstr[1] "%d mensajes enviados." +#: ../../Zotlabs/Module/Wiki.php:205 ../../addon/gitwiki/Mod_Gitwiki.php:185 +msgid "Wiki not found" +msgstr "Wiki no encontrado" -#: ../../Zotlabs/Module/Invite.php:105 -msgid "You have no more invitations available" -msgstr "No tiene más invitaciones disponibles" +#: ../../Zotlabs/Module/Wiki.php:229 ../../addon/gitwiki/Mod_Gitwiki.php:210 +msgid "Rename page" +msgstr "Renombrar la página" -#: ../../Zotlabs/Module/Invite.php:136 -msgid "Send invitations" -msgstr "Enviar invitaciones" +#: ../../Zotlabs/Module/Wiki.php:233 ../../addon/gitwiki/Mod_Gitwiki.php:214 +msgid "Error retrieving page content" +msgstr "Error al recuperar el contenido de la página" -#: ../../Zotlabs/Module/Invite.php:137 -msgid "Enter email addresses, one per line:" -msgstr "Introduzca las direcciones de correo electrónico, una por línea:" +#: ../../Zotlabs/Module/Wiki.php:239 +msgid "New page" +msgstr "Nueva página" -#: ../../Zotlabs/Module/Invite.php:139 -msgid "Please join my community on $Projectname." -msgstr "Por favor, únase a mi comunidad en $Projectname." +#: ../../Zotlabs/Module/Wiki.php:263 ../../addon/gitwiki/Mod_Gitwiki.php:242 +msgid "Revision Comparison" +msgstr "Comparación de revisiones" -#: ../../Zotlabs/Module/Invite.php:141 -msgid "You will need to supply this invitation code:" -msgstr "Tendrá que suministrar este código de invitación:" +#: ../../Zotlabs/Module/Wiki.php:264 ../../addon/gitwiki/Mod_Gitwiki.php:243 +msgid "Revert" +msgstr "Revertir" -#: ../../Zotlabs/Module/Invite.php:142 -msgid "" -"1. Register at any $Projectname location (they are all inter-connected)" -msgstr "1. Regístrese en cualquier sitio de $Projectname (están todos interconectados)" +#: ../../Zotlabs/Module/Wiki.php:268 +msgid "Short description of your changes (optional)" +msgstr "Breve descripción de sus cambios (opcional)" -#: ../../Zotlabs/Module/Invite.php:144 -msgid "2. Enter my $Projectname network address into the site searchbar." -msgstr "2. Introduzca mi dirección $Projectname en la caja de búsqueda del sitio." +#: ../../Zotlabs/Module/Wiki.php:275 ../../addon/gitwiki/Mod_Gitwiki.php:252 +msgid "Source" +msgstr "Fuente" -#: ../../Zotlabs/Module/Invite.php:145 -msgid "or visit" -msgstr "o visitar" +#: ../../Zotlabs/Module/Wiki.php:283 ../../addon/gitwiki/Mod_Gitwiki.php:260 +msgid "New page name" +msgstr "Nombre de la nueva página" -#: ../../Zotlabs/Module/Invite.php:147 -msgid "3. Click [Connect]" -msgstr "3. Pulse [conectar]" +#: ../../Zotlabs/Module/Wiki.php:288 ../../addon/gitwiki/Mod_Gitwiki.php:265 +#: ../../include/conversation.php:1232 +msgid "Embed image from photo albums" +msgstr "Incluir una imagen de los álbumes de fotos" -#: ../../Zotlabs/Module/Siteinfo.php:20 -msgid "About this site" -msgstr "Acerca de este sitio" +#: ../../Zotlabs/Module/Wiki.php:289 ../../addon/gitwiki/Mod_Gitwiki.php:266 +#: ../../include/conversation.php:1326 +msgid "Embed an image from your albums" +msgstr "Incluir una imagen de sus álbumes" -#: ../../Zotlabs/Module/Siteinfo.php:21 -msgid "Site Name" -msgstr "Nombre del sitio" +#: ../../Zotlabs/Module/Wiki.php:291 ../../addon/gitwiki/Mod_Gitwiki.php:268 +#: ../../include/conversation.php:1328 ../../include/conversation.php:1375 +msgid "OK" +msgstr "OK" -#: ../../Zotlabs/Module/Siteinfo.php:25 ../../include/network.php:1995 -msgid "Administrator" -msgstr "Administrador" +#: ../../Zotlabs/Module/Wiki.php:292 ../../addon/gitwiki/Mod_Gitwiki.php:269 +#: ../../include/conversation.php:1268 +msgid "Choose images to embed" +msgstr "Elegir imágenes para incluir" -#: ../../Zotlabs/Module/Siteinfo.php:28 -msgid "Software and Project information" -msgstr "Información sobre el software y el proyecto" +#: ../../Zotlabs/Module/Wiki.php:293 ../../addon/gitwiki/Mod_Gitwiki.php:270 +#: ../../include/conversation.php:1269 +msgid "Choose an album" +msgstr "Elegir un álbum" -#: ../../Zotlabs/Module/Siteinfo.php:29 -msgid "This site is powered by $Projectname" -msgstr "Este sitio funciona con $Projectname" +#: ../../Zotlabs/Module/Wiki.php:294 ../../addon/gitwiki/Mod_Gitwiki.php:271 +msgid "Choose a different album" +msgstr "Elegir un álbum diferente..." -#: ../../Zotlabs/Module/Siteinfo.php:30 -msgid "" -"Federated and decentralised networking and identity services provided by Zot" -msgstr "Servicios federados y descentralizados de identidad y redes proporcionados por Zot" +#: ../../Zotlabs/Module/Wiki.php:295 ../../addon/gitwiki/Mod_Gitwiki.php:272 +#: ../../include/conversation.php:1271 +msgid "Error getting album list" +msgstr "Error al obtener la lista de álbumes" -#: ../../Zotlabs/Module/Siteinfo.php:32 -#, php-format -msgid "Version %s" -msgstr "Versión %s" +#: ../../Zotlabs/Module/Wiki.php:296 ../../addon/gitwiki/Mod_Gitwiki.php:273 +#: ../../include/conversation.php:1272 +msgid "Error getting photo link" +msgstr "Error al obtener el enlace de la foto" -#: ../../Zotlabs/Module/Siteinfo.php:33 -msgid "Project homepage" -msgstr "Página principal del proyecto" +#: ../../Zotlabs/Module/Wiki.php:297 ../../addon/gitwiki/Mod_Gitwiki.php:274 +#: ../../include/conversation.php:1273 +msgid "Error getting album" +msgstr "Error al obtener el álbum" -#: ../../Zotlabs/Module/Siteinfo.php:34 -msgid "Developer homepage" -msgstr "Página principal del desarrollador" +#: ../../Zotlabs/Module/Wiki.php:364 ../../addon/gitwiki/Mod_Gitwiki.php:337 +msgid "Error creating wiki. Invalid name." +msgstr "Error al crear el wiki: el nombre no es válido." -#: ../../Zotlabs/Module/New_channel.php:140 -msgid "Create Channel" -msgstr "Crear un canal" +#: ../../Zotlabs/Module/Wiki.php:371 +msgid "A wiki with this name already exists." +msgstr "Ya hay un wiki con este nombre." -#: ../../Zotlabs/Module/New_channel.php:141 -msgid "" -"A channel is your identity on this network. It can represent a person, a " -"blog, or a forum to name a few. Channels can make connections with other " -"channels to share information with highly detailed permissions." -msgstr "Un canal es su identidad en esta red. Puede representar a una persona, un blog o un foro, por nombrar unos pocos ejemplos. Los canales se pueden conectar con otros canales para compartir información con una gama de permisos extremadamente detallada." +#: ../../Zotlabs/Module/Wiki.php:384 ../../addon/gitwiki/Mod_Gitwiki.php:348 +msgid "Wiki created, but error creating Home page." +msgstr "Se ha creado el wiki, pero se ha producido un error al crear la página de inicio." -#: ../../Zotlabs/Module/New_channel.php:142 -msgid "" -"or <a href=\"import\">import an existing channel</a> from another location." -msgstr "O <a href=\"import\">importar un canal existente</a> desde otro lugar." +#: ../../Zotlabs/Module/Wiki.php:391 ../../addon/gitwiki/Mod_Gitwiki.php:353 +msgid "Error creating wiki" +msgstr "Error al crear el wiki" -#: ../../Zotlabs/Module/Webpages.php:52 -msgid "Import Webpage Elements" -msgstr "Importar elementos de una página web" +#: ../../Zotlabs/Module/Wiki.php:403 +msgid "Wiki delete permission denied." +msgstr "Se ha denegado el permiso para eliminar el wiki." -#: ../../Zotlabs/Module/Webpages.php:53 -msgid "Import selected" -msgstr "Importar elementos seleccionados" +#: ../../Zotlabs/Module/Wiki.php:413 +msgid "Error deleting wiki" +msgstr "Se ha producido un error al eliminar el wiki" -#: ../../Zotlabs/Module/Webpages.php:76 -msgid "Export Webpage Elements" -msgstr "Exportar elementos de una página web" +#: ../../Zotlabs/Module/Wiki.php:439 ../../addon/gitwiki/Mod_Gitwiki.php:400 +msgid "New page created" +msgstr "Se ha creado la nueva página" -#: ../../Zotlabs/Module/Webpages.php:77 -msgid "Export selected" -msgstr "Exportar los elementos seleccionados" +#: ../../Zotlabs/Module/Wiki.php:558 +msgid "Cannot delete Home" +msgstr "No se puede eliminar la página principal" -#: ../../Zotlabs/Module/Webpages.php:241 ../../Zotlabs/Lib/Apps.php:225 -#: ../../include/conversation.php:1889 -msgid "Webpages" -msgstr "Páginas web" +#: ../../Zotlabs/Module/Wiki.php:622 +msgid "Current Revision" +msgstr "Revisión actual" -#: ../../Zotlabs/Module/Webpages.php:252 ../../include/page_widgets.php:44 -msgid "Actions" -msgstr "Acciones" +#: ../../Zotlabs/Module/Wiki.php:622 +msgid "Selected Revision" +msgstr "Revisión seleccionada" -#: ../../Zotlabs/Module/Webpages.php:253 ../../include/page_widgets.php:45 -msgid "Page Link" -msgstr "Vínculo de la página" +#: ../../Zotlabs/Module/Wiki.php:672 +msgid "You must be authenticated." +msgstr "Debe estar autenticado." -#: ../../Zotlabs/Module/Webpages.php:254 -msgid "Page Title" -msgstr "Título de página" +#: ../../Zotlabs/Module/Chanview.php:134 +msgid "toggle full screen mode" +msgstr "cambiar al modo de pantalla completa" -#: ../../Zotlabs/Module/Webpages.php:284 -msgid "Invalid file type." -msgstr "Tipo de fichero no válido." +#: ../../Zotlabs/Module/Pdledit.php:21 +msgid "Layout updated." +msgstr "Plantilla actualizada." -#: ../../Zotlabs/Module/Webpages.php:296 -msgid "Error opening zip file" -msgstr "Error al abrir el fichero comprimido zip" +#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Chat.php:217 +msgid "Feature disabled." +msgstr "Funcionalidad deshabilitada." -#: ../../Zotlabs/Module/Webpages.php:307 -msgid "Invalid folder path." -msgstr "La ruta de la carpeta no es válida." +#: ../../Zotlabs/Module/Pdledit.php:42 ../../Zotlabs/Module/Pdledit.php:69 +msgid "Edit System Page Description" +msgstr "Editor del Sistema de Descripción de Páginas" -#: ../../Zotlabs/Module/Webpages.php:334 -msgid "No webpage elements detected." -msgstr "No se han detectado elementos de ninguna página web." +#: ../../Zotlabs/Module/Pdledit.php:64 +msgid "Layout not found." +msgstr "Plantilla no encontrada" -#: ../../Zotlabs/Module/Webpages.php:409 -msgid "Import complete." -msgstr "Importación completada." +#: ../../Zotlabs/Module/Pdledit.php:70 +msgid "Module Name:" +msgstr "Nombre del módulo:" -#: ../../Zotlabs/Module/Notifications.php:43 ../../include/nav.php:208 -msgid "Mark all system notifications seen" -msgstr "Marcar todas las notificaciones de sistema como leídas" +#: ../../Zotlabs/Module/Pdledit.php:71 +msgid "Layout Help" +msgstr "Ayuda para el diseño de plantillas de página" #: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:235 -#: ../../include/conversation.php:942 ../../include/conversation.php:1109 +#: ../../include/conversation.php:1042 msgid "Poke" msgstr "Toques y otras cosas" @@ -4713,35 +4749,107 @@ msgstr "Elegir qué desea enviar al destinatario" msgid "Make this post private" msgstr "Convertir en privado este envío" -#: ../../Zotlabs/Module/Profperm.php:34 ../../Zotlabs/Module/Profperm.php:63 -msgid "Invalid profile identifier." -msgstr "Identificador del perfil no válido" +#: ../../Zotlabs/Module/Profile_photo.php:61 +#: ../../Zotlabs/Module/Cover_photo.php:56 +msgid "Image uploaded but image cropping failed." +msgstr "Imagen actualizada, pero el recorte de la imagen ha fallado. " -#: ../../Zotlabs/Module/Profperm.php:111 -msgid "Profile Visibility Editor" -msgstr "Editor de visibilidad del perfil" +#: ../../Zotlabs/Module/Profile_photo.php:115 +#: ../../Zotlabs/Module/Profile_photo.php:226 +#: ../../include/photo/photo_driver.php:646 +msgid "Profile Photos" +msgstr "Fotos del perfil" -#: ../../Zotlabs/Module/Profperm.php:113 ../../include/channel.php:1367 -msgid "Profile" -msgstr "Perfil" +#: ../../Zotlabs/Module/Profile_photo.php:137 +#: ../../Zotlabs/Module/Cover_photo.php:159 +msgid "Image resize failed." +msgstr "El ajuste del tamaño de la imagen ha fallado." -#: ../../Zotlabs/Module/Profperm.php:115 -msgid "Click on a contact to add or remove." -msgstr "Pulsar en un contacto para añadirlo o eliminarlo." +#: ../../Zotlabs/Module/Profile_photo.php:196 +#: ../../addon/openclipatar/openclipatar.php:298 +msgid "" +"Shift-reload the page or clear browser cache if the new photo does not " +"display immediately." +msgstr "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente." -#: ../../Zotlabs/Module/Profperm.php:124 -msgid "Visible To" -msgstr "Visible para" +#: ../../Zotlabs/Module/Profile_photo.php:203 +#: ../../Zotlabs/Module/Cover_photo.php:173 ../../include/photos.php:149 +msgid "Unable to process image" +msgstr "No ha sido posible procesar la imagen" -#: ../../Zotlabs/Module/Hcard.php:35 ../../Zotlabs/Module/Channel.php:47 -#: ../../Zotlabs/Module/Profile.php:43 -msgid "Posts and comments" -msgstr "Publicaciones y comentarios" +#: ../../Zotlabs/Module/Profile_photo.php:238 +#: ../../Zotlabs/Module/Cover_photo.php:197 +msgid "Image upload failed." +msgstr "La carga de la imagen ha fallado." -#: ../../Zotlabs/Module/Hcard.php:42 ../../Zotlabs/Module/Channel.php:54 -#: ../../Zotlabs/Module/Profile.php:50 -msgid "Only posts" -msgstr "Solo publicaciones" +#: ../../Zotlabs/Module/Profile_photo.php:257 +#: ../../Zotlabs/Module/Cover_photo.php:214 +msgid "Unable to process image." +msgstr "No ha sido posible procesar la imagen." + +#: ../../Zotlabs/Module/Profile_photo.php:318 +#: ../../Zotlabs/Module/Profile_photo.php:365 +#: ../../Zotlabs/Module/Cover_photo.php:307 +#: ../../Zotlabs/Module/Cover_photo.php:322 +msgid "Photo not available." +msgstr "Foto no disponible." + +#: ../../Zotlabs/Module/Profile_photo.php:420 +#: ../../Zotlabs/Module/Cover_photo.php:358 +msgid "Upload File:" +msgstr "Subir fichero:" + +#: ../../Zotlabs/Module/Profile_photo.php:421 +#: ../../Zotlabs/Module/Cover_photo.php:359 +msgid "Select a profile:" +msgstr "Seleccionar un perfil:" + +#: ../../Zotlabs/Module/Profile_photo.php:422 +msgid "Use Photo for Profile" +msgstr "Usar la fotografía para el perfil" + +#: ../../Zotlabs/Module/Profile_photo.php:422 +msgid "Upload Profile Photo" +msgstr "Subir foto de perfil" + +#: ../../Zotlabs/Module/Profile_photo.php:423 +#: ../../addon/openclipatar/openclipatar.php:182 +#: ../../addon/openclipatar/openclipatar.php:194 +msgid "Use" +msgstr "Usar" + +#: ../../Zotlabs/Module/Profile_photo.php:429 +#: ../../Zotlabs/Module/Cover_photo.php:365 +msgid "skip this step" +msgstr "Omitir este paso" + +#: ../../Zotlabs/Module/Profile_photo.php:429 +#: ../../Zotlabs/Module/Cover_photo.php:365 +msgid "select a photo from your photo albums" +msgstr "Seleccione una foto de sus álbumes de fotos" + +#: ../../Zotlabs/Module/Profile_photo.php:448 +#: ../../Zotlabs/Module/Cover_photo.php:381 +msgid "Crop Image" +msgstr "Recortar imagen" + +#: ../../Zotlabs/Module/Profile_photo.php:449 +#: ../../Zotlabs/Module/Cover_photo.php:382 +msgid "Please adjust the image cropping for optimum viewing." +msgstr "Por favor ajuste el recorte de la imagen para una visión óptima." + +#: ../../Zotlabs/Module/Profile_photo.php:451 +#: ../../Zotlabs/Module/Cover_photo.php:384 +msgid "Done Editing" +msgstr "Edición completada" + +#: ../../Zotlabs/Module/Chatsvc.php:131 +msgid "Away" +msgstr "Ausente" + +#: ../../Zotlabs/Module/Chatsvc.php:136 +msgid "Online" +msgstr "Conectado/a" #: ../../Zotlabs/Module/Item.php:184 msgid "Unable to locate original post." @@ -4751,649 +4859,650 @@ msgstr "No ha sido posible encontrar la entrada original." msgid "Empty post discarded." msgstr "La entrada vacía ha sido desechada." -#: ../../Zotlabs/Module/Item.php:492 -msgid "Executable content type not permitted to this channel." -msgstr "Contenido de tipo ejecutable no permitido en este canal." - -#: ../../Zotlabs/Module/Item.php:842 +#: ../../Zotlabs/Module/Item.php:824 msgid "Duplicate post suppressed." msgstr "Se ha suprimido la entrada duplicada." -#: ../../Zotlabs/Module/Item.php:984 +#: ../../Zotlabs/Module/Item.php:954 msgid "System error. Post not saved." msgstr "Error del sistema. La entrada no se ha podido salvar." -#: ../../Zotlabs/Module/Item.php:1114 +#: ../../Zotlabs/Module/Item.php:1084 msgid "Unable to obtain post information from database." msgstr "No ha sido posible obtener información de la entrada en la base de datos." -#: ../../Zotlabs/Module/Item.php:1121 +#: ../../Zotlabs/Module/Item.php:1091 #, php-format msgid "You have reached your limit of %1$.0f top level posts." msgstr "Ha alcanzado su límite de %1$.0f entradas en la página principal." -#: ../../Zotlabs/Module/Item.php:1128 +#: ../../Zotlabs/Module/Item.php:1098 #, php-format msgid "You have reached your limit of %1$.0f webpages." msgstr "Ha alcanzado su límite de %1$.0f páginas web." -#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59 -msgid "This setting requires special processing and editing has been blocked." -msgstr "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada." +#: ../../Zotlabs/Module/Ping.php:254 +msgid "sent you a private message" +msgstr "le ha enviado un mensaje privado" -#: ../../Zotlabs/Module/Pconfig.php:48 -msgid "Configuration Editor" -msgstr "Editor de configuración" +#: ../../Zotlabs/Module/Ping.php:302 +msgid "added your channel" +msgstr "añadió este canal a sus conexiones" -#: ../../Zotlabs/Module/Pconfig.php:49 -msgid "" -"Warning: Changing some settings could render your channel inoperable. Please" -" leave this page unless you are comfortable with and knowledgeable about how" -" to correctly use this feature." -msgstr "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica." +#: ../../Zotlabs/Module/Ping.php:312 +msgid "g A l F d" +msgstr "g A l d F" -#: ../../Zotlabs/Module/Search.php:224 -#, php-format -msgid "Items tagged with: %s" -msgstr "elementos etiquetados con: %s" +#: ../../Zotlabs/Module/Ping.php:330 +msgid "[today]" +msgstr "[hoy]" -#: ../../Zotlabs/Module/Search.php:226 -#, php-format -msgid "Search results for: %s" -msgstr "Resultados de la búsqueda para: %s" +#: ../../Zotlabs/Module/Ping.php:339 +msgid "posted an event" +msgstr "publicó un evento" -#: ../../Zotlabs/Module/Lockview.php:75 -msgid "Remote privacy information not available." -msgstr "La información privada remota no está disponible." +#: ../../Zotlabs/Module/Page.php:40 ../../Zotlabs/Module/Block.php:31 +msgid "Invalid item." +msgstr "Elemento no válido." -#: ../../Zotlabs/Module/Lockview.php:96 -msgid "Visible to:" -msgstr "Visible para:" +#: ../../Zotlabs/Module/Page.php:94 ../../Zotlabs/Module/Block.php:79 +#: ../../Zotlabs/Module/Display.php:122 +#: ../../Zotlabs/Lib/NativeWikiPage.php:489 ../../Zotlabs/Web/Router.php:146 +#: ../../include/help.php:68 +msgid "Page not found." +msgstr "Página no encontrada." -#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153 -#: ../../Zotlabs/Module/Acl.php:117 ../../include/acl_selectors.php:183 -msgctxt "acl" -msgid "Profile" -msgstr "Perfil" +#: ../../Zotlabs/Module/Page.php:131 +msgid "" +"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " +"tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam," +" quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo " +"consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse " +"cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat " +"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +msgstr "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." -#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2288 -msgid "Blocks" -msgstr "Bloques" +#: ../../Zotlabs/Module/Connedit.php:79 +msgid "Could not access contact record." +msgstr "No se ha podido acceder al registro de contacto." -#: ../../Zotlabs/Module/Blocks.php:156 -msgid "Block Title" -msgstr "Título del bloque" +#: ../../Zotlabs/Module/Connedit.php:109 +msgid "Could not locate selected profile." +msgstr "No se ha podido localizar el perfil seleccionado." -#: ../../Zotlabs/Module/Layouts.php:183 ../../include/text.php:2290 -msgid "Layouts" -msgstr "Plantillas" +#: ../../Zotlabs/Module/Connedit.php:246 +msgid "Connection updated." +msgstr "Conexión actualizada." -#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Lib/Apps.php:232 -#: ../../include/help.php:55 ../../include/help.php:61 -#: ../../include/nav.php:174 ../../include/nav.php:288 -msgid "Help" -msgstr "Ayuda" +#: ../../Zotlabs/Module/Connedit.php:248 +msgid "Failed to update connection record." +msgstr "Error al actualizar el registro de la conexión." -#: ../../Zotlabs/Module/Layouts.php:185 -msgid "Comanche page description language help" -msgstr "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche" +#: ../../Zotlabs/Module/Connedit.php:298 +msgid "is now connected to" +msgstr "ahora está conectado/a" -#: ../../Zotlabs/Module/Layouts.php:189 -msgid "Layout Description" -msgstr "Descripción de la plantilla" +#: ../../Zotlabs/Module/Connedit.php:431 +msgid "Could not access address book record." +msgstr "No se pudo acceder al registro en su libreta de direcciones." -#: ../../Zotlabs/Module/Layouts.php:194 -msgid "Download PDL file" -msgstr "Descargar el fichero PDL" +#: ../../Zotlabs/Module/Connedit.php:479 +msgid "Refresh failed - channel is currently unavailable." +msgstr "Recarga fallida - no se puede encontrar el canal en este momento." -#: ../../Zotlabs/Module/Rate.php:156 -msgid "Website:" -msgstr "Sitio web:" +#: ../../Zotlabs/Module/Connedit.php:494 ../../Zotlabs/Module/Connedit.php:503 +#: ../../Zotlabs/Module/Connedit.php:512 ../../Zotlabs/Module/Connedit.php:521 +#: ../../Zotlabs/Module/Connedit.php:534 +msgid "Unable to set address book parameters." +msgstr "No ha sido posible establecer los parámetros de la libreta de direcciones." -#: ../../Zotlabs/Module/Rate.php:159 +#: ../../Zotlabs/Module/Connedit.php:558 +msgid "Connection has been removed." +msgstr "La conexión ha sido eliminada." + +#: ../../Zotlabs/Module/Connedit.php:598 ../../Zotlabs/Lib/Apps.php:228 +#: ../../addon/openclipatar/openclipatar.php:57 +#: ../../include/conversation.php:982 ../../include/nav.php:102 +msgid "View Profile" +msgstr "Ver el perfil" + +#: ../../Zotlabs/Module/Connedit.php:601 #, php-format -msgid "Remote Channel [%s] (not yet known on this site)" -msgstr "Canal remoto [%s] (aún no es conocido en este sitio)" +msgid "View %s's profile" +msgstr "Ver el perfil de %s" -#: ../../Zotlabs/Module/Rate.php:160 -msgid "Rating (this information is public)" -msgstr "Valoración (esta información es pública)" +#: ../../Zotlabs/Module/Connedit.php:605 +msgid "Refresh Permissions" +msgstr "Recargar los permisos" -#: ../../Zotlabs/Module/Rate.php:161 -msgid "Optionally explain your rating (this information is public)" -msgstr "Opcionalmente puede explicar su valoración (esta información es pública)" +#: ../../Zotlabs/Module/Connedit.php:608 +msgid "Fetch updated permissions" +msgstr "Obtener los permisos actualizados" -#: ../../Zotlabs/Module/Profile_photo.php:194 -#: ../../extend/addon/addon/openclipatar/openclipatar.php:298 -msgid "" -"Shift-reload the page or clear browser cache if the new photo does not " -"display immediately." -msgstr "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente." +#: ../../Zotlabs/Module/Connedit.php:612 +msgid "Refresh Photo" +msgstr "Actualizar la foto" -#: ../../Zotlabs/Module/Profile_photo.php:420 -msgid "Use Photo for Profile" -msgstr "Usar la fotografía para el perfil" +#: ../../Zotlabs/Module/Connedit.php:615 +msgid "Fetch updated photo" +msgstr "Obtener una foto actualizada" -#: ../../Zotlabs/Module/Profile_photo.php:420 -msgid "Upload Profile Photo" -msgstr "Subir foto de perfil" +#: ../../Zotlabs/Module/Connedit.php:619 +msgid "Recent Activity" +msgstr "Actividad reciente" -#: ../../Zotlabs/Module/Profile_photo.php:421 -#: ../../extend/addon/addon/openclipatar/openclipatar.php:182 -#: ../../extend/addon/addon/openclipatar/openclipatar.php:194 -msgid "Use" -msgstr "Usar" +#: ../../Zotlabs/Module/Connedit.php:622 +msgid "View recent posts and comments" +msgstr "Ver publicaciones y comentarios recientes" -#: ../../Zotlabs/Module/Like.php:19 -msgid "Like/Dislike" -msgstr "Me gusta/No me gusta" +#: ../../Zotlabs/Module/Connedit.php:629 +msgid "Block (or Unblock) all communications with this connection" +msgstr "Bloquear (o desbloquear) todas las comunicaciones con esta conexión" -#: ../../Zotlabs/Module/Like.php:24 -msgid "This action is restricted to members." -msgstr "Esta acción está restringida solo para miembros." +#: ../../Zotlabs/Module/Connedit.php:630 +msgid "This connection is blocked!" +msgstr "¡Esta conexión está bloqueada!" -#: ../../Zotlabs/Module/Like.php:25 -msgid "" -"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a " -"href=\"register\">register as a new $Projectname member</a> to continue." -msgstr "Por favor, <a href=\"rmagic\">identifíquese con su $Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo $Projectname member</a> para continuar." +#: ../../Zotlabs/Module/Connedit.php:634 +msgid "Unignore" +msgstr "Dejar de ignorar" -#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131 -#: ../../Zotlabs/Module/Like.php:169 -msgid "Invalid request." -msgstr "Solicitud incorrecta." +#: ../../Zotlabs/Module/Connedit.php:637 +msgid "Ignore (or Unignore) all inbound communications from this connection" +msgstr "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión" -#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:126 -msgid "channel" -msgstr "el canal" +#: ../../Zotlabs/Module/Connedit.php:638 +msgid "This connection is ignored!" +msgstr "¡Esta conexión es ignorada!" -#: ../../Zotlabs/Module/Like.php:146 -msgid "thing" -msgstr "elemento" +#: ../../Zotlabs/Module/Connedit.php:642 +msgid "Unarchive" +msgstr "Desarchivar" -#: ../../Zotlabs/Module/Like.php:192 -msgid "Channel unavailable." -msgstr "Canal no disponible." +#: ../../Zotlabs/Module/Connedit.php:642 +msgid "Archive" +msgstr "Archivar" -#: ../../Zotlabs/Module/Like.php:240 -msgid "Previous action reversed." -msgstr "Acción anterior revocada." +#: ../../Zotlabs/Module/Connedit.php:645 +msgid "" +"Archive (or Unarchive) this connection - mark channel dead but keep content" +msgstr "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos" -#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 -#: ../../Zotlabs/Module/Tagger.php:47 -#: ../../extend/addon/addon/diaspora/inbound.php:1794 -#: ../../extend/addon/addon/redphotos/redphotohelper.php:74 -#: ../../include/conversation.php:120 ../../include/text.php:1958 -msgid "photo" -msgstr "foto" +#: ../../Zotlabs/Module/Connedit.php:646 +msgid "This connection is archived!" +msgstr "¡Esta conexión esta archivada!" -#: ../../Zotlabs/Module/Like.php:370 ../../Zotlabs/Module/Subthread.php:87 -#: ../../extend/addon/addon/diaspora/inbound.php:1794 -#: ../../include/conversation.php:148 ../../include/text.php:1964 -msgid "status" -msgstr "el mensaje de estado" +#: ../../Zotlabs/Module/Connedit.php:650 +msgid "Unhide" +msgstr "Mostrar" -#: ../../Zotlabs/Module/Like.php:419 -#: ../../extend/addon/addon/diaspora/inbound.php:1823 -#: ../../include/conversation.php:164 -#, php-format -msgid "%1$s likes %2$s's %3$s" -msgstr "A %1$s le gusta %3$s de %2$s" +#: ../../Zotlabs/Module/Connedit.php:650 +msgid "Hide" +msgstr "Ocultar" -#: ../../Zotlabs/Module/Like.php:421 ../../include/conversation.php:167 -#, php-format -msgid "%1$s doesn't like %2$s's %3$s" -msgstr "A %1$s no le gusta %3$s de %2$s" +#: ../../Zotlabs/Module/Connedit.php:653 +msgid "Hide or Unhide this connection from your other connections" +msgstr "Ocultar o mostrar esta conexión a sus otras conexiones" -#: ../../Zotlabs/Module/Like.php:423 -#, php-format -msgid "%1$s agrees with %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s está de acuerdo" +#: ../../Zotlabs/Module/Connedit.php:654 +msgid "This connection is hidden!" +msgstr "¡Esta conexión está oculta!" -#: ../../Zotlabs/Module/Like.php:425 -#, php-format -msgid "%1$s doesn't agree with %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s no está de acuerdo" +#: ../../Zotlabs/Module/Connedit.php:661 +msgid "Delete this connection" +msgstr "Eliminar esta conexión" -#: ../../Zotlabs/Module/Like.php:427 -#, php-format -msgid "%1$s abstains from a decision on %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s se abstiene" +#: ../../Zotlabs/Module/Connedit.php:669 +msgid "Fetch Vcard" +msgstr "Obtener una vcard" -#: ../../Zotlabs/Module/Like.php:429 -#, php-format -msgid "%1$s is attending %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s participa" +#: ../../Zotlabs/Module/Connedit.php:672 +msgid "Fetch electronic calling card for this connection" +msgstr "Obtener una tarjeta de llamada electrónica para esta conexión" -#: ../../Zotlabs/Module/Like.php:431 -#, php-format -msgid "%1$s is not attending %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s no participa" +#: ../../Zotlabs/Module/Connedit.php:683 +msgid "Open Individual Permissions section by default" +msgstr "Abrir la sección de permisos individuales por defecto" -#: ../../Zotlabs/Module/Like.php:433 -#, php-format -msgid "%1$s may attend %2$s's %3$s" -msgstr "%3$s de %2$s: %1$s quizá participe" +#: ../../Zotlabs/Module/Connedit.php:706 +msgid "Affinity" +msgstr "Afinidad" -#: ../../Zotlabs/Module/Like.php:538 -msgid "Action completed." -msgstr "Acción completada." +#: ../../Zotlabs/Module/Connedit.php:709 +msgid "Open Set Affinity section by default" +msgstr "Abrir por defecto la sección para definir la afinidad" -#: ../../Zotlabs/Module/Like.php:539 -msgid "Thank you." -msgstr "Gracias." +#: ../../Zotlabs/Module/Connedit.php:713 ../../Zotlabs/Widget/Affinity.php:26 +msgid "Me" +msgstr "Yo" -#: ../../Zotlabs/Module/Common.php:14 -msgid "No channel." -msgstr "Ningún canal." +#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Widget/Affinity.php:27 +msgid "Family" +msgstr "Familia" -#: ../../Zotlabs/Module/Common.php:43 -msgid "Common connections" -msgstr "Conexiones comunes" +#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Widget/Affinity.php:29 +msgid "Acquaintances" +msgstr "Conocidos/as" -#: ../../Zotlabs/Module/Common.php:48 -msgid "No connections in common." -msgstr "Ninguna conexión en común." +#: ../../Zotlabs/Module/Connedit.php:743 +msgid "Filter" +msgstr "Filtrar" -#: ../../Zotlabs/Module/Chanview.php:134 -msgid "toggle full screen mode" -msgstr "cambiar al modo de pantalla completa" +#: ../../Zotlabs/Module/Connedit.php:746 +msgid "Open Custom Filter section by default" +msgstr "Abrir por defecto la sección de personalización de filtros" -#: ../../Zotlabs/Module/Subthread.php:118 -#, php-format -msgid "%1$s is following %2$s's %3$s" -msgstr "%1$s está siguiendo %3$s de %2$s" +#: ../../Zotlabs/Module/Connedit.php:783 +msgid "Approve this connection" +msgstr "Aprobar esta conexión" -#: ../../Zotlabs/Module/Subthread.php:120 -#, php-format -msgid "%1$s stopped following %2$s's %3$s" -msgstr "%1$s ha dejado de seguir %3$s de %2$s" +#: ../../Zotlabs/Module/Connedit.php:783 +msgid "Accept connection to allow communication" +msgstr "Aceptar la conexión para permitir la comunicación" -#: ../../Zotlabs/Module/Channel.php:32 ../../Zotlabs/Module/Chat.php:25 -#: ../../extend/addon/addon/chess/chess.php:403 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:26 -msgid "You must be logged in to see this page." -msgstr "Debe haber iniciado sesión para poder ver esta página." +#: ../../Zotlabs/Module/Connedit.php:788 +msgid "Set Affinity" +msgstr "Ajustar la afinidad" -#: ../../Zotlabs/Module/Channel.php:112 -msgid "Insufficient permissions. Request redirected to profile page." -msgstr "Permisos insuficientes. Petición redirigida a la página del perfil." +#: ../../Zotlabs/Module/Connedit.php:791 +msgid "Set Profile" +msgstr "Ajustar el perfil" -#: ../../Zotlabs/Module/Lostpass.php:19 -msgid "No valid account found." -msgstr "No se ha encontrado una cuenta válida." +#: ../../Zotlabs/Module/Connedit.php:794 +msgid "Set Affinity & Profile" +msgstr "Ajustar la afinidad y el perfil" -#: ../../Zotlabs/Module/Lostpass.php:33 -msgid "Password reset request issued. Check your email." -msgstr "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico." +#: ../../Zotlabs/Module/Connedit.php:852 +msgid "none" +msgstr "-" -#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108 -#, php-format -msgid "Site Member (%s)" -msgstr "Usuario del sitio (%s)" +#: ../../Zotlabs/Module/Connedit.php:855 +#: ../../Zotlabs/Widget/Settings_menu.php:107 +msgid "Connection Default Permissions" +msgstr "Permisos predeterminados de conexión" -#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49 +#: ../../Zotlabs/Module/Connedit.php:855 ../../include/items.php:3942 #, php-format -msgid "Password reset requested at %s" -msgstr "Se ha solicitado restablecer la contraseña en %s" +msgid "Connection: %s" +msgstr "Conexión: %s" -#: ../../Zotlabs/Module/Lostpass.php:68 -msgid "" -"Request could not be verified. (You may have previously submitted it.) " -"Password reset failed." -msgstr "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado." +#: ../../Zotlabs/Module/Connedit.php:856 +msgid "Apply these permissions automatically" +msgstr "Aplicar estos permisos automaticamente" -#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1757 -msgid "Password Reset" -msgstr "Restablecer la contraseña" +#: ../../Zotlabs/Module/Connedit.php:856 +msgid "Connection requests will be approved without your interaction" +msgstr "Las solicitudes de conexión serán aprobadas sin su intervención" -#: ../../Zotlabs/Module/Lostpass.php:92 -msgid "Your password has been reset as requested." -msgstr "Su contraseña ha sido restablecida según lo solicitó." +#: ../../Zotlabs/Module/Connedit.php:857 +msgid "Permission role" +msgstr "Rol de acceso" -#: ../../Zotlabs/Module/Lostpass.php:93 -msgid "Your new password is" -msgstr "Su nueva contraseña es" +#: ../../Zotlabs/Module/Connedit.php:858 +msgid "Add permission role" +msgstr "Añadir un rol de acceso" -#: ../../Zotlabs/Module/Lostpass.php:94 -msgid "Save or copy your new password - and then" -msgstr "Guarde o copie su nueva contraseña - y después" +#: ../../Zotlabs/Module/Connedit.php:864 +msgid "This connection's primary address is" +msgstr "La dirección primaria de esta conexión es" -#: ../../Zotlabs/Module/Lostpass.php:95 -msgid "click here to login" -msgstr "pulse aquí para conectarse" +#: ../../Zotlabs/Module/Connedit.php:865 +msgid "Available locations:" +msgstr "Ubicaciones disponibles:" -#: ../../Zotlabs/Module/Lostpass.php:96 +#: ../../Zotlabs/Module/Connedit.php:869 msgid "" -"Your password may be changed from the <em>Settings</em> page after " -"successful login." -msgstr "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión." +"The permissions indicated on this page will be applied to all new " +"connections." +msgstr "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones." -#: ../../Zotlabs/Module/Lostpass.php:117 -#, php-format -msgid "Your password has changed at %s" -msgstr "Su contraseña en %s ha sido cambiada" +#: ../../Zotlabs/Module/Connedit.php:870 +msgid "Connection Tools" +msgstr "Gestión de las conexiones" -#: ../../Zotlabs/Module/Lostpass.php:130 -msgid "Forgot your Password?" -msgstr "¿Ha olvidado su contraseña?" +#: ../../Zotlabs/Module/Connedit.php:872 +msgid "Slide to adjust your degree of friendship" +msgstr "Deslizar para ajustar el grado de amistad" -#: ../../Zotlabs/Module/Lostpass.php:131 -msgid "" -"Enter your email address and submit to have your password reset. Then check " -"your email for further instructions." -msgstr "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones." +#: ../../Zotlabs/Module/Connedit.php:873 ../../Zotlabs/Module/Rate.php:155 +#: ../../include/js_strings.php:20 +msgid "Rating" +msgstr "Valoración" -#: ../../Zotlabs/Module/Lostpass.php:132 -msgid "Email Address" -msgstr "Dirección de correo electrónico" +#: ../../Zotlabs/Module/Connedit.php:874 +msgid "Slide to adjust your rating" +msgstr "Deslizar para ajustar su valoración" -#: ../../Zotlabs/Module/Lostpass.php:133 -msgid "Reset" -msgstr "Reiniciar" +#: ../../Zotlabs/Module/Connedit.php:875 ../../Zotlabs/Module/Connedit.php:880 +msgid "Optionally explain your rating" +msgstr "Opcionalmente, puede explicar su valoración" -#: ../../Zotlabs/Module/Rbmark.php:94 -msgid "Select a bookmark folder" -msgstr "Seleccionar una carpeta de marcadores" +#: ../../Zotlabs/Module/Connedit.php:877 +msgid "Custom Filter" +msgstr "Filtro personalizado" -#: ../../Zotlabs/Module/Rbmark.php:99 -msgid "Save Bookmark" -msgstr "Guardar marcador" +#: ../../Zotlabs/Module/Connedit.php:878 +msgid "Only import posts with this text" +msgstr "Importar solo entradas que contengan este texto" -#: ../../Zotlabs/Module/Rbmark.php:100 -msgid "URL of bookmark" -msgstr "Dirección del marcador" +#: ../../Zotlabs/Module/Connedit.php:878 ../../Zotlabs/Module/Connedit.php:879 +msgid "" +"words one per line or #tags or /patterns/ or lang=xx, leave blank to import " +"all posts" +msgstr "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo" -#: ../../Zotlabs/Module/Rbmark.php:105 -msgid "Or enter new bookmark folder name" -msgstr "O introduzca un nuevo nombre para la carpeta de marcadores" +#: ../../Zotlabs/Module/Connedit.php:879 +msgid "Do not import posts with this text" +msgstr "No importar entradas que contengan este texto" -#: ../../Zotlabs/Module/Follow.php:31 -msgid "Channel added." -msgstr "Canal añadido." +#: ../../Zotlabs/Module/Connedit.php:881 +msgid "This information is public!" +msgstr "¡Esta información es pública!" + +#: ../../Zotlabs/Module/Connedit.php:886 +msgid "Connection Pending Approval" +msgstr "Conexión pendiente de aprobación" -#: ../../Zotlabs/Module/Mood.php:67 ../../include/conversation.php:260 +#: ../../Zotlabs/Module/Connedit.php:891 #, php-format -msgctxt "mood" -msgid "%1$s is %2$s" -msgstr "%1$s está %2$s" +msgid "" +"Please choose the profile you would like to display to %s when viewing your " +"profile securely." +msgstr "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura." -#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:234 -msgid "Mood" -msgstr "Estado de ánimo" +#: ../../Zotlabs/Module/Connedit.php:898 +msgid "" +"Some permissions may be inherited from your channel's <a " +"href=\"settings\"><strong>privacy settings</strong></a>, which have higher " +"priority than individual settings. You can change those settings here but " +"they wont have any impact unless the inherited setting changes." +msgstr "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados." -#: ../../Zotlabs/Module/Mood.php:136 -msgid "Set your current mood and tell your friends" -msgstr "Describir su estado de ánimo para comunicárselo a sus amigos" +#: ../../Zotlabs/Module/Connedit.php:899 +msgid "Last update:" +msgstr "Última actualización:" -#: ../../Zotlabs/Module/Regmod.php:15 -msgid "Please login." -msgstr "Por favor, inicie sesión." +#: ../../Zotlabs/Module/Connedit.php:908 +msgid "Details" +msgstr "Detalles" -#: ../../Zotlabs/Module/Removeaccount.php:35 -msgid "" -"Account removals are not allowed within 48 hours of changing the account " -"password." -msgstr "La eliminación de cuentas no está permitida hasta después de que hayan transcurrido 48 horas desde el último cambio de contraseña." +#: ../../Zotlabs/Module/Connedit.php:911 ../../addon/cdav/Mod_Cdav.php:1137 +msgid "Organisation" +msgstr "Organización" -#: ../../Zotlabs/Module/Removeaccount.php:57 -msgid "Remove This Account" -msgstr "Eliminar esta cuenta" +#: ../../Zotlabs/Module/Connedit.php:912 ../../addon/cdav/Mod_Cdav.php:1138 +#: ../../include/page_widgets.php:46 +msgid "Title" +msgstr "Título" -#: ../../Zotlabs/Module/Removeaccount.php:58 -#: ../../Zotlabs/Module/Removeme.php:61 -msgid "WARNING: " -msgstr "ATENCIÓN:" +#: ../../Zotlabs/Module/Connedit.php:913 ../../Zotlabs/Module/Profiles.php:789 +#: ../../addon/cdav/Mod_Cdav.php:1139 +msgid "Phone" +msgstr "Teléfono" -#: ../../Zotlabs/Module/Removeaccount.php:58 -msgid "" -"This account and all its channels will be completely removed from the " -"network. " -msgstr "Esta cuenta y todos sus canales van a ser eliminados de la red." +#: ../../Zotlabs/Module/Connedit.php:915 ../../Zotlabs/Module/Profiles.php:791 +#: ../../addon/cdav/Mod_Cdav.php:1141 +msgid "Instant messenger" +msgstr "Mensajería instantánea" -#: ../../Zotlabs/Module/Removeaccount.php:58 -#: ../../Zotlabs/Module/Removeme.php:61 -msgid "This action is permanent and can not be undone!" -msgstr "¡Esta acción tiene carácter definitivo y no se puede deshacer!" +#: ../../Zotlabs/Module/Connedit.php:916 ../../Zotlabs/Module/Profiles.php:792 +#: ../../addon/cdav/Mod_Cdav.php:1142 +msgid "Website" +msgstr "Sitio web" -#: ../../Zotlabs/Module/Removeaccount.php:59 -#: ../../Zotlabs/Module/Removeme.php:62 -msgid "Please enter your password for verification:" -msgstr "Por favor, introduzca su contraseña para su verificación:" +#: ../../Zotlabs/Module/Connedit.php:918 ../../Zotlabs/Module/Profiles.php:794 +#: ../../addon/cdav/Mod_Cdav.php:1144 +msgid "Note" +msgstr "Nota" -#: ../../Zotlabs/Module/Removeaccount.php:60 -msgid "" -"Remove this account, all its channels and all its channel clones from the " -"network" -msgstr "Remover esta cuenta, todos sus canales y clones de la red" +#: ../../Zotlabs/Module/Connedit.php:919 ../../Zotlabs/Module/Profiles.php:795 +#: ../../addon/cdav/Mod_Cdav.php:1145 ../../addon/cdav/cdav.php:270 +#: ../../include/connections.php:668 +msgid "Mobile" +msgstr "Móvil" -#: ../../Zotlabs/Module/Removeaccount.php:60 -msgid "" -"By default only the instances of the channels located on this hub will be " -"removed from the network" -msgstr "Por defecto, solo las instancias de los canales ubicados en este servidor serán eliminados de la red" +#: ../../Zotlabs/Module/Connedit.php:920 ../../Zotlabs/Module/Profiles.php:796 +#: ../../addon/cdav/Mod_Cdav.php:1146 ../../addon/cdav/cdav.php:271 +#: ../../include/connections.php:669 +msgid "Home" +msgstr "Inicio" -#: ../../Zotlabs/Module/Removeaccount.php:61 -#: ../../Zotlabs/Module/Settings/Account.php:120 -msgid "Remove Account" -msgstr "Eliminar cuenta" +#: ../../Zotlabs/Module/Connedit.php:921 ../../Zotlabs/Module/Profiles.php:797 +#: ../../addon/cdav/Mod_Cdav.php:1147 ../../addon/cdav/cdav.php:274 +#: ../../include/connections.php:672 +msgid "Work" +msgstr "Trabajo" -#: ../../Zotlabs/Module/Pdledit.php:21 -msgid "Layout updated." -msgstr "Plantilla actualizada." +#: ../../Zotlabs/Module/Connedit.php:923 ../../Zotlabs/Module/Profiles.php:799 +#: ../../addon/cdav/Mod_Cdav.php:1149 +#: ../../addon/jappixmini/jappixmini.php:368 +msgid "Add Contact" +msgstr "Añadir un contacto" -#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Chat.php:216 -msgid "Feature disabled." -msgstr "Funcionalidad deshabilitada." +#: ../../Zotlabs/Module/Connedit.php:924 ../../Zotlabs/Module/Profiles.php:800 +#: ../../addon/cdav/Mod_Cdav.php:1150 +msgid "Add Field" +msgstr "Añadir un campo" -#: ../../Zotlabs/Module/Pdledit.php:42 ../../Zotlabs/Module/Pdledit.php:69 -msgid "Edit System Page Description" -msgstr "Editor del Sistema de Descripción de Páginas" +#: ../../Zotlabs/Module/Connedit.php:929 ../../addon/cdav/Mod_Cdav.php:1155 +msgid "P.O. Box" +msgstr "Buzón de correos" -#: ../../Zotlabs/Module/Pdledit.php:64 -msgid "Layout not found." -msgstr "Plantilla no encontrada" +#: ../../Zotlabs/Module/Connedit.php:930 ../../addon/cdav/Mod_Cdav.php:1156 +msgid "Additional" +msgstr "Adicional" -#: ../../Zotlabs/Module/Pdledit.php:70 -msgid "Module Name:" -msgstr "Nombre del módulo:" +#: ../../Zotlabs/Module/Connedit.php:931 ../../addon/cdav/Mod_Cdav.php:1157 +msgid "Street" +msgstr "Calle" -#: ../../Zotlabs/Module/Pdledit.php:71 -msgid "Layout Help" -msgstr "Ayuda para el diseño de plantillas de página" +#: ../../Zotlabs/Module/Connedit.php:932 ../../addon/cdav/Mod_Cdav.php:1158 +msgid "Locality" +msgstr "Localidad" -#: ../../Zotlabs/Module/Directory.php:246 -#, php-format -msgid "%d rating" -msgid_plural "%d ratings" -msgstr[0] "%d valoración" -msgstr[1] "%d valoraciones" +#: ../../Zotlabs/Module/Connedit.php:933 ../../addon/cdav/Mod_Cdav.php:1159 +msgid "Region" +msgstr "Provincia, región o estado" -#: ../../Zotlabs/Module/Directory.php:257 -msgid "Gender: " -msgstr "Género:" +#: ../../Zotlabs/Module/Connedit.php:934 ../../addon/cdav/Mod_Cdav.php:1160 +msgid "ZIP Code" +msgstr "Código postal" -#: ../../Zotlabs/Module/Directory.php:259 -msgid "Status: " -msgstr "Estado:" +#: ../../Zotlabs/Module/Connedit.php:935 ../../Zotlabs/Module/Profiles.php:760 +#: ../../addon/cdav/Mod_Cdav.php:1161 +msgid "Country" +msgstr "País" -#: ../../Zotlabs/Module/Directory.php:261 -msgid "Homepage: " -msgstr "Página personal:" +#: ../../Zotlabs/Module/Chat.php:179 +msgid "Room not found" +msgstr "Sala no encontrada" -#: ../../Zotlabs/Module/Directory.php:310 ../../include/channel.php:1298 -msgid "Age:" -msgstr "Edad:" +#: ../../Zotlabs/Module/Chat.php:195 +msgid "Leave Room" +msgstr "Abandonar la sala" -#: ../../Zotlabs/Module/Directory.php:315 ../../include/event.php:52 -#: ../../include/event.php:84 ../../include/markdown.php:562 -#: ../../include/channel.php:1134 -msgid "Location:" -msgstr "Ubicación:" +#: ../../Zotlabs/Module/Chat.php:196 +msgid "Delete Room" +msgstr "Eliminar esta sala" -#: ../../Zotlabs/Module/Directory.php:321 -msgid "Description:" -msgstr "Descripción:" +#: ../../Zotlabs/Module/Chat.php:197 +msgid "I am away right now" +msgstr "Estoy ausente momentáneamente" -#: ../../Zotlabs/Module/Directory.php:326 ../../include/channel.php:1314 -msgid "Hometown:" -msgstr "Lugar de nacimiento:" +#: ../../Zotlabs/Module/Chat.php:198 +msgid "I am online" +msgstr "Estoy conectado/a" -#: ../../Zotlabs/Module/Directory.php:328 ../../include/channel.php:1322 -msgid "About:" -msgstr "Sobre mí:" +#: ../../Zotlabs/Module/Chat.php:200 +msgid "Bookmark this room" +msgstr "Añadir esta sala a Marcadores" -#: ../../Zotlabs/Module/Directory.php:329 ../../Zotlabs/Module/Suggest.php:56 -#: ../../include/widgets.php:134 ../../include/widgets.php:171 -#: ../../include/connections.php:110 ../../include/conversation.php:938 -#: ../../include/conversation.php:1069 ../../include/channel.php:1119 -msgid "Connect" -msgstr "Conectar" +#: ../../Zotlabs/Module/Chat.php:203 ../../Zotlabs/Module/Mail.php:240 +#: ../../Zotlabs/Module/Mail.php:361 ../../include/conversation.php:1263 +msgid "Please enter a link URL:" +msgstr "Por favor, introduzca la dirección del enlace:" -#: ../../Zotlabs/Module/Directory.php:330 -msgid "Public Forum:" -msgstr "Foro público:" +#: ../../Zotlabs/Module/Chat.php:204 ../../Zotlabs/Module/Mail.php:293 +#: ../../Zotlabs/Module/Mail.php:430 ../../Zotlabs/Lib/ThreadItem.php:744 +#: ../../include/conversation.php:1373 +msgid "Encrypt text" +msgstr "Cifrar texto" -#: ../../Zotlabs/Module/Directory.php:333 -msgid "Keywords: " -msgstr "Palabras clave:" +#: ../../Zotlabs/Module/Chat.php:230 +msgid "New Chatroom" +msgstr "Nueva sala de chat" -#: ../../Zotlabs/Module/Directory.php:336 -msgid "Don't suggest" -msgstr "No sugerir:" +#: ../../Zotlabs/Module/Chat.php:231 +msgid "Chatroom name" +msgstr "Nombre de la sala de chat" -#: ../../Zotlabs/Module/Directory.php:338 -msgid "Common connections:" -msgstr "Conexiones comunes:" +#: ../../Zotlabs/Module/Chat.php:232 +msgid "Expiration of chats (minutes)" +msgstr "Caducidad de los mensajes en los chats (en minutos)" -#: ../../Zotlabs/Module/Directory.php:387 -msgid "Global Directory" -msgstr "Directorio global:" +#: ../../Zotlabs/Module/Chat.php:248 +#, php-format +msgid "%1$s's Chatrooms" +msgstr "Salas de chat de %1$s" -#: ../../Zotlabs/Module/Directory.php:387 -msgid "Local Directory" -msgstr "Directorio local:" +#: ../../Zotlabs/Module/Chat.php:253 +msgid "No chatrooms available" +msgstr "No hay salas de chat disponibles" -#: ../../Zotlabs/Module/Directory.php:393 -msgid "Finding:" -msgstr "Encontrar:" +#: ../../Zotlabs/Module/Chat.php:257 +msgid "Expiration" +msgstr "Caducidad" -#: ../../Zotlabs/Module/Directory.php:396 ../../Zotlabs/Module/Suggest.php:64 -#: ../../include/contact_widgets.php:24 -msgid "Channel Suggestions" -msgstr "Sugerencias de canales" +#: ../../Zotlabs/Module/Chat.php:258 +msgid "min" +msgstr "min" -#: ../../Zotlabs/Module/Directory.php:398 -msgid "next page" -msgstr "siguiente página" +#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:229 +#: ../../include/conversation.php:1774 +msgid "Photos" +msgstr "Fotos" -#: ../../Zotlabs/Module/Directory.php:398 -msgid "previous page" -msgstr "página anterior" +#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:224 +#: ../../Zotlabs/Storage/Browser.php:224 ../../include/conversation.php:1782 +msgid "Files" +msgstr "Ficheros" -#: ../../Zotlabs/Module/Directory.php:399 -msgid "Sort options" -msgstr "Ordenar opciones" +#: ../../Zotlabs/Module/Menu.php:49 +msgid "Unable to update menu." +msgstr "No se puede actualizar el menú." -#: ../../Zotlabs/Module/Directory.php:400 -msgid "Alphabetic" -msgstr "Alfabético" +#: ../../Zotlabs/Module/Menu.php:60 +msgid "Unable to create menu." +msgstr "No se puede crear el menú." -#: ../../Zotlabs/Module/Directory.php:401 -msgid "Reverse Alphabetic" -msgstr "Alfabético inverso" +#: ../../Zotlabs/Module/Menu.php:98 ../../Zotlabs/Module/Menu.php:110 +msgid "Menu Name" +msgstr "Nombre del menú" -#: ../../Zotlabs/Module/Directory.php:402 -msgid "Newest to Oldest" -msgstr "De más nuevo a más antiguo" +#: ../../Zotlabs/Module/Menu.php:98 +msgid "Unique name (not visible on webpage) - required" +msgstr "Nombre único (no será visible en la página web) - requerido" -#: ../../Zotlabs/Module/Directory.php:403 -msgid "Oldest to Newest" -msgstr "De más antiguo a más nuevo" +#: ../../Zotlabs/Module/Menu.php:99 ../../Zotlabs/Module/Menu.php:111 +msgid "Menu Title" +msgstr "Título del menú" -#: ../../Zotlabs/Module/Directory.php:420 -msgid "No entries (some entries may be hidden)." -msgstr "Sin entradas (algunas entradas pueden estar ocultas)." +#: ../../Zotlabs/Module/Menu.php:99 +msgid "Visible on webpage - leave empty for no title" +msgstr "Visible en la página web - no ponga nada si no desea un título" -#: ../../Zotlabs/Module/Profile.php:91 -msgid "vcard" -msgstr "vcard" +#: ../../Zotlabs/Module/Menu.php:100 +msgid "Allow Bookmarks" +msgstr "Permitir marcadores" -#: ../../Zotlabs/Module/Oexchange.php:27 -msgid "Unable to find your hub." -msgstr "No se puede encontrar su servidor." +#: ../../Zotlabs/Module/Menu.php:100 ../../Zotlabs/Module/Menu.php:157 +msgid "Menu may be used to store saved bookmarks" +msgstr "El menú se puede usar para guardar marcadores" -#: ../../Zotlabs/Module/Oexchange.php:41 -msgid "Post successful." -msgstr "Enviado con éxito." +#: ../../Zotlabs/Module/Menu.php:101 ../../Zotlabs/Module/Menu.php:159 +msgid "Submit and proceed" +msgstr "Enviar y proceder" -#: ../../Zotlabs/Module/Viewsrc.php:46 -msgid "Source of Item" -msgstr "Origen del elemento" +#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2276 +msgid "Menus" +msgstr "Menús" -#: ../../Zotlabs/Module/Service_limits.php:23 -msgid "No service class restrictions found." -msgstr "No se han encontrado restricciones sobre esta clase de servicio." +#: ../../Zotlabs/Module/Menu.php:117 +msgid "Bookmarks allowed" +msgstr "Marcadores permitidos" -#: ../../Zotlabs/Module/Acl.php:344 -msgid "network" -msgstr "red" +#: ../../Zotlabs/Module/Menu.php:119 +msgid "Delete this menu" +msgstr "Borrar este menú" -#: ../../Zotlabs/Module/Acl.php:354 -msgid "RSS" -msgstr "RSS" +#: ../../Zotlabs/Module/Menu.php:120 ../../Zotlabs/Module/Menu.php:154 +msgid "Edit menu contents" +msgstr "Editar los contenidos del menú" -#: ../../Zotlabs/Module/Removeme.php:35 -msgid "" -"Channel removals are not allowed within 48 hours of changing the account " -"password." -msgstr "La eliminación de canales no está permitida hasta pasadas 48 horas desde el último cambio de contraseña." +#: ../../Zotlabs/Module/Menu.php:121 +msgid "Edit this menu" +msgstr "Modificar este menú" -#: ../../Zotlabs/Module/Removeme.php:60 -msgid "Remove This Channel" -msgstr "Eliminar este canal" +#: ../../Zotlabs/Module/Menu.php:136 +msgid "Menu could not be deleted." +msgstr "El menú no puede ser eliminado." -#: ../../Zotlabs/Module/Removeme.php:61 -msgid "This channel will be completely removed from the network. " -msgstr "Este canal va a ser completamente eliminado de la red. " +#: ../../Zotlabs/Module/Menu.php:149 +msgid "Edit Menu" +msgstr "Modificar el menú" -#: ../../Zotlabs/Module/Removeme.php:63 -msgid "Remove this channel and all its clones from the network" -msgstr "Eliminar este canal y todos sus clones de la red" +#: ../../Zotlabs/Module/Menu.php:153 +msgid "Add or remove entries to this menu" +msgstr "Añadir o quitar entradas en este menú" -#: ../../Zotlabs/Module/Removeme.php:63 -msgid "" -"By default only the instance of the channel located on this hub will be " -"removed from the network" -msgstr "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red" +#: ../../Zotlabs/Module/Menu.php:155 +msgid "Menu name" +msgstr "Nombre del menú" -#: ../../Zotlabs/Module/Removeme.php:64 -#: ../../Zotlabs/Module/Settings/Channel.php:575 -msgid "Remove Channel" -msgstr "Eliminar el canal" +#: ../../Zotlabs/Module/Menu.php:155 +msgid "Must be unique, only seen by you" +msgstr "Debe ser único, solo será visible para usted" -#: ../../Zotlabs/Module/Sharedwithme.php:98 -msgid "Files: shared with me" -msgstr "Ficheros: compartidos conmigo" +#: ../../Zotlabs/Module/Menu.php:156 +msgid "Menu title" +msgstr "Título del menú" -#: ../../Zotlabs/Module/Sharedwithme.php:100 -msgid "NEW" -msgstr "NUEVO" +#: ../../Zotlabs/Module/Menu.php:156 +msgid "Menu title as seen by others" +msgstr "El título del menú tal como será visto por los demás" -#: ../../Zotlabs/Module/Sharedwithme.php:103 -msgid "Remove all files" -msgstr "Eliminar todos los ficheros" +#: ../../Zotlabs/Module/Menu.php:157 +msgid "Allow bookmarks" +msgstr "Permitir marcadores" -#: ../../Zotlabs/Module/Sharedwithme.php:104 -msgid "Remove this file" -msgstr "Eliminar este fichero" +#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2277 +msgid "Layouts" +msgstr "Plantillas" + +#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:232 +#: ../../include/nav.php:157 ../../include/nav.php:264 +#: ../../include/help.php:55 ../../include/help.php:61 +msgid "Help" +msgstr "Ayuda" + +#: ../../Zotlabs/Module/Layouts.php:186 +msgid "Comanche page description language help" +msgstr "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche" + +#: ../../Zotlabs/Module/Layouts.php:190 +msgid "Layout Description" +msgstr "Descripción de la plantilla" + +#: ../../Zotlabs/Module/Layouts.php:195 +msgid "Download PDL file" +msgstr "Descargar el fichero PDL" #: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:274 msgid "post" msgstr "la entrada" -#: ../../Zotlabs/Module/Tagger.php:57 ../../include/conversation.php:150 -#: ../../include/text.php:1966 +#: ../../Zotlabs/Module/Tagger.php:57 ../../include/conversation.php:146 +#: ../../include/text.php:1953 msgid "comment" msgstr "el comentario" @@ -5402,97 +5511,76 @@ msgstr "el comentario" msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "%1$s ha etiquetado %3$s de %2$s con %4$s" -#: ../../Zotlabs/Module/Sources.php:37 -msgid "Failed to create source. No channel selected." -msgstr "No se ha podido crear el origen de los contenidos. No ha sido seleccionado ningún canal." - -#: ../../Zotlabs/Module/Sources.php:51 -msgid "Source created." -msgstr "Fuente creada." - -#: ../../Zotlabs/Module/Sources.php:64 -msgid "Source updated." -msgstr "Fuente actualizada." - -#: ../../Zotlabs/Module/Sources.php:90 -msgid "*" -msgstr "*" - -#: ../../Zotlabs/Module/Sources.php:96 ../../include/widgets.php:677 -#: ../../include/features.php:213 -msgid "Channel Sources" -msgstr "Orígenes de los contenidos del canal" - -#: ../../Zotlabs/Module/Sources.php:97 -msgid "Manage remote sources of content for your channel." -msgstr "Gestionar contenido de origen remoto para su canal." +#: ../../Zotlabs/Module/Pconfig.php:26 ../../Zotlabs/Module/Pconfig.php:59 +msgid "This setting requires special processing and editing has been blocked." +msgstr "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada." -#: ../../Zotlabs/Module/Sources.php:98 ../../Zotlabs/Module/Sources.php:108 -msgid "New Source" -msgstr "Nueva fuente" +#: ../../Zotlabs/Module/Pconfig.php:48 +msgid "Configuration Editor" +msgstr "Editor de configuración" -#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:143 +#: ../../Zotlabs/Module/Pconfig.php:49 msgid "" -"Import all or selected content from the following channel into this channel " -"and distribute it according to your channel settings." -msgstr "Importar todo el contenido o una selección de los siguientes canales en este canal y distribuirlo de acuerdo con sus ajustes." +"Warning: Changing some settings could render your channel inoperable. Please" +" leave this page unless you are comfortable with and knowledgeable about how" +" to correctly use this feature." +msgstr "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica." -#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144 -msgid "Only import content with these words (one per line)" -msgstr "Importar solo contenido que contenga estas palabras (una por línea)" +#: ../../Zotlabs/Module/Group.php:24 +msgid "Privacy group created." +msgstr "El grupo de canales ha sido creado." -#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144 -msgid "Leave blank to import all public content" -msgstr "Dejar en blanco para importar todo el contenido público" +#: ../../Zotlabs/Module/Group.php:30 +msgid "Could not create privacy group." +msgstr "No se puede crear el grupo de canales" -#: ../../Zotlabs/Module/Sources.php:111 ../../Zotlabs/Module/Sources.php:148 -msgid "Channel Name" -msgstr "Nombre del canal" +#: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141 +#: ../../include/items.php:3909 +msgid "Privacy group not found." +msgstr "Grupo de canales no encontrado." -#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147 -msgid "" -"Add the following categories to posts imported from this source (comma " -"separated)" -msgstr "Añadir los temas siguientes a las entradas importadas de esta fuente (separadas por comas)" +#: ../../Zotlabs/Module/Group.php:58 +msgid "Privacy group updated." +msgstr "Grupo de canales actualizado." -#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147 -#: ../../Zotlabs/Module/Settings/Oauth.php:93 -msgid "Optional" -msgstr "Opcional" +#: ../../Zotlabs/Module/Group.php:90 +msgid "Create a group of channels." +msgstr "Crear un grupo de canales." -#: ../../Zotlabs/Module/Sources.php:133 ../../Zotlabs/Module/Sources.php:161 -msgid "Source not found." -msgstr "Fuente no encontrada" +#: ../../Zotlabs/Module/Group.php:91 ../../Zotlabs/Module/Group.php:184 +msgid "Privacy group name: " +msgstr "Nombre del grupo de canales:" -#: ../../Zotlabs/Module/Sources.php:140 -msgid "Edit Source" -msgstr "Editar fuente" +#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Group.php:187 +msgid "Members are visible to other channels" +msgstr "Los miembros son visibles para otros canales" -#: ../../Zotlabs/Module/Sources.php:141 -msgid "Delete Source" -msgstr "Eliminar fuente" +#: ../../Zotlabs/Module/Group.php:111 +msgid "Privacy group removed." +msgstr "Grupo de canales eliminado." -#: ../../Zotlabs/Module/Sources.php:169 -msgid "Source removed" -msgstr "Fuente eliminada" +#: ../../Zotlabs/Module/Group.php:113 +msgid "Unable to remove privacy group." +msgstr "No se puede eliminar el grupo de canales." -#: ../../Zotlabs/Module/Sources.php:171 -msgid "Unable to remove source." -msgstr "No se puede eliminar la fuente." +#: ../../Zotlabs/Module/Group.php:183 +msgid "Privacy group editor" +msgstr "Editor de grupos de canales" -#: ../../Zotlabs/Module/Suggest.php:39 -msgid "" -"No suggestions available. If this is a new site, please try again in 24 " -"hours." -msgstr "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo." +#: ../../Zotlabs/Module/Group.php:197 ../../Zotlabs/Module/Help.php:81 +msgid "Members" +msgstr "Miembros" -#: ../../Zotlabs/Module/Suggest.php:58 ../../include/widgets.php:136 -msgid "Ignore/Hide" -msgstr "Ignorar/Ocultar" +#: ../../Zotlabs/Module/Group.php:199 +msgid "All Connected Channels" +msgstr "Todos los canales conectados" + +#: ../../Zotlabs/Module/Group.php:231 +msgid "Click on a channel to add or remove." +msgstr "Haga clic en un canal para agregarlo o quitarlo." #: ../../Zotlabs/Module/Profiles.php:24 ../../Zotlabs/Module/Profiles.php:184 #: ../../Zotlabs/Module/Profiles.php:241 ../../Zotlabs/Module/Profiles.php:659 -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:62 msgid "Profile not found." msgstr "Perfil no encontrado." @@ -5549,7 +5637,7 @@ msgid "Political Views" msgstr "Ideas políticas" #: ../../Zotlabs/Module/Profiles.php:486 -#: ../../extend/addon/addon/openid/MysqlProvider.php:74 +#: ../../addon/openid/MysqlProvider.php:74 msgid "Gender" msgstr "Género" @@ -5582,7 +5670,7 @@ msgid "View this profile" msgstr "Ver este perfil" #: ../../Zotlabs/Module/Profiles.php:728 ../../Zotlabs/Module/Profiles.php:827 -#: ../../include/channel.php:1066 +#: ../../include/channel.php:1064 msgid "Edit visibility" msgstr "Editar visibilidad" @@ -5594,7 +5682,7 @@ msgstr "Gestión del perfil" msgid "Change cover photo" msgstr "Cambiar la imagen de portada del perfil" -#: ../../Zotlabs/Module/Profiles.php:731 ../../include/channel.php:1037 +#: ../../Zotlabs/Module/Profiles.php:731 ../../include/channel.php:1035 msgid "Change profile photo" msgstr "Cambiar la foto del perfil" @@ -5614,7 +5702,7 @@ msgstr "Eliminar este perfil" msgid "Add profile things" msgstr "Añadir cosas al perfil" -#: ../../Zotlabs/Module/Profiles.php:736 ../../include/conversation.php:1715 +#: ../../Zotlabs/Module/Profiles.php:736 ../../include/conversation.php:1648 msgid "Personal" msgstr "Personales" @@ -5695,7 +5783,7 @@ msgid "Tell us about yourself" msgstr "Háblenos de usted" #: ../../Zotlabs/Module/Profiles.php:770 -#: ../../extend/addon/addon/openid/MysqlProvider.php:68 +#: ../../addon/openid/MysqlProvider.php:68 msgid "Homepage URL" msgstr "Dirección de la página personal" @@ -5759,1493 +5847,1463 @@ msgstr "Mis otros canales" msgid "Communications" msgstr "Comunicaciones" -#: ../../Zotlabs/Module/Profiles.php:823 ../../include/channel.php:1062 +#: ../../Zotlabs/Module/Profiles.php:823 ../../include/channel.php:1060 msgid "Profile Image" msgstr "Imagen del perfil" -#: ../../Zotlabs/Module/Profiles.php:833 ../../include/nav.php:105 -#: ../../include/channel.php:1044 +#: ../../Zotlabs/Module/Profiles.php:833 ../../include/channel.php:1042 +#: ../../include/nav.php:105 msgid "Edit Profiles" msgstr "Editar perfiles" -#: ../../Zotlabs/Module/Settings/Features.php:45 -msgid "Additional Features" -msgstr "Funcionalidades" +#: ../../Zotlabs/Module/Editwebpage.php:144 +msgid "Page link" +msgstr "Enlace de la página" -#: ../../Zotlabs/Module/Settings/Oauth.php:34 -msgid "Name is required" -msgstr "El nombre es obligatorio" +#: ../../Zotlabs/Module/Editwebpage.php:171 +msgid "Edit Webpage" +msgstr "Editar la página web" -#: ../../Zotlabs/Module/Settings/Oauth.php:38 -msgid "Key and Secret are required" -msgstr "\"Key\" y \"Secret\" son obligatorios" +#: ../../Zotlabs/Module/Manage.php:143 +msgid "Create a new channel" +msgstr "Crear un nuevo canal" -#: ../../Zotlabs/Module/Settings/Oauth.php:86 -#: ../../Zotlabs/Module/Settings/Oauth.php:112 -#: ../../Zotlabs/Module/Settings/Oauth.php:148 -msgid "Add application" -msgstr "Añadir aplicación" +#: ../../Zotlabs/Module/Manage.php:164 ../../Zotlabs/Lib/Apps.php:221 +#: ../../include/nav.php:201 +msgid "Channel Manager" +msgstr "Administración de canales" -#: ../../Zotlabs/Module/Settings/Oauth.php:89 -msgid "Name of application" -msgstr "Nombre de la aplicación" +#: ../../Zotlabs/Module/Manage.php:165 +msgid "Current Channel" +msgstr "Canal actual" -#: ../../Zotlabs/Module/Settings/Oauth.php:90 -#: ../../Zotlabs/Module/Settings/Oauth.php:116 -#: ../../extend/addon/addon/statusnet/statusnet.php:893 -#: ../../extend/addon/addon/twitter/twitter.php:775 -msgid "Consumer Key" -msgstr "Consumer Key" +#: ../../Zotlabs/Module/Manage.php:167 +msgid "Switch to one of your channels by selecting it." +msgstr "Cambiar a uno de sus canales seleccionándolo." -#: ../../Zotlabs/Module/Settings/Oauth.php:90 -#: ../../Zotlabs/Module/Settings/Oauth.php:91 -msgid "Automatically generated - change if desired. Max length 20" -msgstr "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 20" +#: ../../Zotlabs/Module/Manage.php:168 +msgid "Default Channel" +msgstr "Canal principal" -#: ../../Zotlabs/Module/Settings/Oauth.php:91 -#: ../../Zotlabs/Module/Settings/Oauth.php:117 -#: ../../extend/addon/addon/statusnet/statusnet.php:892 -#: ../../extend/addon/addon/twitter/twitter.php:776 -msgid "Consumer Secret" -msgstr "Consumer Secret" +#: ../../Zotlabs/Module/Manage.php:169 +msgid "Make Default" +msgstr "Convertir en predeterminado" -#: ../../Zotlabs/Module/Settings/Oauth.php:92 -#: ../../Zotlabs/Module/Settings/Oauth.php:118 -msgid "Redirect" -msgstr "Redirigir" +#: ../../Zotlabs/Module/Manage.php:172 +#, php-format +msgid "%d new messages" +msgstr "%d mensajes nuevos" -#: ../../Zotlabs/Module/Settings/Oauth.php:92 -msgid "" -"Redirect URI - leave blank unless your application specifically requires " -"this" -msgstr "URI de redirección - dejar en blanco a menos que su aplicación específicamente lo requiera" +#: ../../Zotlabs/Module/Manage.php:173 +#, php-format +msgid "%d new introductions" +msgstr "%d nuevas solicitudes de conexión" -#: ../../Zotlabs/Module/Settings/Oauth.php:93 -#: ../../Zotlabs/Module/Settings/Oauth.php:119 -msgid "Icon url" -msgstr "Dirección del icono" +#: ../../Zotlabs/Module/Manage.php:175 +msgid "Delegated Channel" +msgstr "Canal delegado" -#: ../../Zotlabs/Module/Settings/Oauth.php:104 -msgid "Application not found." -msgstr "Aplicación no encontrada." +#: ../../Zotlabs/Module/Dirsearch.php:33 +msgid "This directory server requires an access token" +msgstr "El servidor de este directorio necesita un \"token\" de acceso" -#: ../../Zotlabs/Module/Settings/Oauth.php:147 -msgid "Connected Apps" -msgstr "Aplicaciones (apps) conectadas" +#: ../../Zotlabs/Module/Siteinfo.php:20 +msgid "About this site" +msgstr "Acerca de este sitio" -#: ../../Zotlabs/Module/Settings/Oauth.php:151 -msgid "Client key starts with" -msgstr "La \"client key\" empieza por" +#: ../../Zotlabs/Module/Siteinfo.php:21 +msgid "Site Name" +msgstr "Nombre del sitio" -#: ../../Zotlabs/Module/Settings/Oauth.php:152 -msgid "No name" -msgstr "Sin nombre" +#: ../../Zotlabs/Module/Siteinfo.php:25 ../../include/network.php:1995 +msgid "Administrator" +msgstr "Administrador" -#: ../../Zotlabs/Module/Settings/Oauth.php:153 -msgid "Remove authorization" -msgstr "Eliminar autorización" +#: ../../Zotlabs/Module/Siteinfo.php:27 ../../Zotlabs/Module/Register.php:221 +msgid "Terms of Service" +msgstr "Términos del servicio" -#: ../../Zotlabs/Module/Settings/Account.php:20 -msgid "Not valid email." -msgstr "Correo electrónico no válido." +#: ../../Zotlabs/Module/Siteinfo.php:28 +msgid "Software and Project information" +msgstr "Información sobre el software y el proyecto" -#: ../../Zotlabs/Module/Settings/Account.php:23 -msgid "Protected email address. Cannot change to that email." -msgstr "Dirección de correo electrónico protegida. No se puede cambiar a ella." +#: ../../Zotlabs/Module/Siteinfo.php:29 +msgid "This site is powered by $Projectname" +msgstr "Este sitio funciona con $Projectname" -#: ../../Zotlabs/Module/Settings/Account.php:32 -msgid "System failure storing new email. Please try again." -msgstr "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo." +#: ../../Zotlabs/Module/Siteinfo.php:30 +msgid "" +"Federated and decentralised networking and identity services provided by Zot" +msgstr "Servicios federados y descentralizados de identidad y redes proporcionados por Zot" -#: ../../Zotlabs/Module/Settings/Account.php:40 -msgid "Technical skill level updated" -msgstr "Se ha actualizado el nivel de habilidad técnica" +#: ../../Zotlabs/Module/Siteinfo.php:32 +#, php-format +msgid "Version %s" +msgstr "Versión %s" -#: ../../Zotlabs/Module/Settings/Account.php:56 -msgid "Password verification failed." -msgstr "La comprobación de la contraseña ha fallado." +#: ../../Zotlabs/Module/Siteinfo.php:33 +msgid "Project homepage" +msgstr "Página principal del proyecto" -#: ../../Zotlabs/Module/Settings/Account.php:63 -msgid "Passwords do not match. Password unchanged." -msgstr "Las contraseñas no coinciden. La contraseña no se ha cambiado." +#: ../../Zotlabs/Module/Siteinfo.php:34 +msgid "Developer homepage" +msgstr "Página principal del desarrollador" -#: ../../Zotlabs/Module/Settings/Account.php:67 -msgid "Empty passwords are not allowed. Password unchanged." -msgstr "No se permiten contraseñas vacías. La contraseña no se ha cambiado." +#: ../../Zotlabs/Module/Ratings.php:70 +msgid "No ratings" +msgstr "Ninguna valoración" -#: ../../Zotlabs/Module/Settings/Account.php:81 -msgid "Password changed." -msgstr "Contraseña cambiada." +#: ../../Zotlabs/Module/Ratings.php:97 ../../Zotlabs/Module/Pubsites.php:35 +#: ../../include/conversation.php:1032 +msgid "Ratings" +msgstr "Valoraciones" -#: ../../Zotlabs/Module/Settings/Account.php:83 -msgid "Password update failed. Please try again." -msgstr "La actualización de la contraseña ha fallado. Por favor, inténtalo de nuevo." +#: ../../Zotlabs/Module/Ratings.php:98 +msgid "Rating: " +msgstr "Valoración:" -#: ../../Zotlabs/Module/Settings/Account.php:112 -msgid "Account Settings" -msgstr "Configuración de la cuenta" +#: ../../Zotlabs/Module/Ratings.php:99 +msgid "Website: " +msgstr "Sitio web:" -#: ../../Zotlabs/Module/Settings/Account.php:113 -msgid "Current Password" -msgstr "Contraseña actual" +#: ../../Zotlabs/Module/Ratings.php:101 +msgid "Description: " +msgstr "Descripción:" -#: ../../Zotlabs/Module/Settings/Account.php:114 -msgid "Enter New Password" -msgstr "Escribir una nueva contraseña" +#: ../../Zotlabs/Module/Webpages.php:52 +msgid "Import Webpage Elements" +msgstr "Importar elementos de una página web" -#: ../../Zotlabs/Module/Settings/Account.php:115 -msgid "Confirm New Password" -msgstr "Confirmar la nueva contraseña" +#: ../../Zotlabs/Module/Webpages.php:53 +msgid "Import selected" +msgstr "Importar elementos seleccionados" -#: ../../Zotlabs/Module/Settings/Account.php:115 -msgid "Leave password fields blank unless changing" -msgstr "Dejar en blanco la contraseña a menos que desee cambiarla." +#: ../../Zotlabs/Module/Webpages.php:76 +msgid "Export Webpage Elements" +msgstr "Exportar elementos de una página web" -#: ../../Zotlabs/Module/Settings/Account.php:116 -msgid "Your technical skill level" -msgstr "Su nivel de habilidad técnica" +#: ../../Zotlabs/Module/Webpages.php:77 +msgid "Export selected" +msgstr "Exportar los elementos seleccionados" -#: ../../Zotlabs/Module/Settings/Account.php:116 -msgid "Used to provide a member experience matched to your comfort level" -msgstr "Se utiliza para proporcionar la experiencia de los miembros adaptada a su nivel de comodidad" +#: ../../Zotlabs/Module/Webpages.php:242 ../../Zotlabs/Lib/Apps.php:225 +#: ../../include/conversation.php:1832 +msgid "Webpages" +msgstr "Páginas web" -#: ../../Zotlabs/Module/Settings/Account.php:119 -#: ../../Zotlabs/Module/Settings/Channel.php:483 -msgid "Email Address:" -msgstr "Dirección de correo electrónico:" +#: ../../Zotlabs/Module/Webpages.php:253 ../../include/page_widgets.php:44 +msgid "Actions" +msgstr "Acciones" -#: ../../Zotlabs/Module/Settings/Account.php:121 -msgid "Remove this account including all its channels" -msgstr "Eliminar esta cuenta incluyendo todos sus canales" +#: ../../Zotlabs/Module/Webpages.php:254 ../../include/page_widgets.php:45 +msgid "Page Link" +msgstr "Vínculo de la página" -#: ../../Zotlabs/Module/Settings/Channel.php:251 -#: ../../extend/addon/addon/logrot/logrot.php:54 -#: ../../extend/addon/addon/msgfooter/msgfooter.php:54 -#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:184 -#: ../../extend/addon/addon/piwik/piwik.php:116 -#: ../../extend/addon/addon/twitter/twitter.php:766 -#: ../../extend/addon/addon/xmpp/xmpp.php:102 -#: ../../extend/addon/addon/rendezvous/rendezvous.php:82 -msgid "Settings updated." -msgstr "Ajustes actualizados." +#: ../../Zotlabs/Module/Webpages.php:255 +msgid "Page Title" +msgstr "Título de página" -#: ../../Zotlabs/Module/Settings/Channel.php:312 -msgid "Nobody except yourself" -msgstr "Nadie excepto usted" +#: ../../Zotlabs/Module/Webpages.php:285 +msgid "Invalid file type." +msgstr "Tipo de fichero no válido." -#: ../../Zotlabs/Module/Settings/Channel.php:313 -msgid "Only those you specifically allow" -msgstr "Solo aquellos a los que usted permita explícitamente" +#: ../../Zotlabs/Module/Webpages.php:297 +msgid "Error opening zip file" +msgstr "Error al abrir el fichero comprimido zip" -#: ../../Zotlabs/Module/Settings/Channel.php:314 -msgid "Approved connections" -msgstr "Conexiones aprobadas" +#: ../../Zotlabs/Module/Webpages.php:308 +msgid "Invalid folder path." +msgstr "La ruta de la carpeta no es válida." -#: ../../Zotlabs/Module/Settings/Channel.php:315 -msgid "Any connections" -msgstr "Cualquier conexión" +#: ../../Zotlabs/Module/Webpages.php:335 +msgid "No webpage elements detected." +msgstr "No se han detectado elementos de ninguna página web." -#: ../../Zotlabs/Module/Settings/Channel.php:316 -msgid "Anybody on this website" -msgstr "Cualquiera en este sitio web" +#: ../../Zotlabs/Module/Webpages.php:410 +msgid "Import complete." +msgstr "Importación completada." -#: ../../Zotlabs/Module/Settings/Channel.php:317 -msgid "Anybody in this network" -msgstr "Cualquiera en esta red" +#: ../../Zotlabs/Module/Editpost.php:35 +msgid "Item is not editable" +msgstr "El elemento no es editable" -#: ../../Zotlabs/Module/Settings/Channel.php:318 -msgid "Anybody authenticated" -msgstr "Cualquiera que esté autenticado" +#: ../../Zotlabs/Module/Editpost.php:108 ../../Zotlabs/Module/Rpost.php:138 +msgid "Edit post" +msgstr "Editar la entrada" -#: ../../Zotlabs/Module/Settings/Channel.php:319 -msgid "Anybody on the internet" -msgstr "Cualquiera en internet" +#: ../../Zotlabs/Module/Dreport.php:45 +msgid "Invalid message" +msgstr "Mensaje no válido" -#: ../../Zotlabs/Module/Settings/Channel.php:395 -msgid "Publish your default profile in the network directory" -msgstr "Publicar su perfil principal en el directorio de la red" +#: ../../Zotlabs/Module/Dreport.php:78 +msgid "no results" +msgstr "sin resultados" -#: ../../Zotlabs/Module/Settings/Channel.php:400 -msgid "Allow us to suggest you as a potential friend to new members?" -msgstr "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?" +#: ../../Zotlabs/Module/Dreport.php:93 +msgid "channel sync processed" +msgstr "se ha realizado la sincronización del canal" -#: ../../Zotlabs/Module/Settings/Channel.php:409 -msgid "Your channel address is" -msgstr "Su dirección de canal es" +#: ../../Zotlabs/Module/Dreport.php:97 +msgid "queued" +msgstr "encolado" -#: ../../Zotlabs/Module/Settings/Channel.php:412 -msgid "Your files/photos are accessible via WebDAV at" -msgstr "Sus archivos y fotos son accesibles a través de WebDAV en " +#: ../../Zotlabs/Module/Dreport.php:101 +msgid "posted" +msgstr "enviado" -#: ../../Zotlabs/Module/Settings/Channel.php:474 -msgid "Channel Settings" -msgstr "Ajustes del canal" +#: ../../Zotlabs/Module/Dreport.php:105 +msgid "accepted for delivery" +msgstr "aceptado para el envío" -#: ../../Zotlabs/Module/Settings/Channel.php:481 -msgid "Basic Settings" -msgstr "Configuración básica" +#: ../../Zotlabs/Module/Dreport.php:109 +msgid "updated" +msgstr "actualizado" -#: ../../Zotlabs/Module/Settings/Channel.php:482 -#: ../../include/channel.php:1255 -msgid "Full Name:" -msgstr "Nombre completo:" +#: ../../Zotlabs/Module/Dreport.php:112 +msgid "update ignored" +msgstr "actualización ignorada" -#: ../../Zotlabs/Module/Settings/Channel.php:484 -msgid "Your Timezone:" -msgstr "Su huso horario:" +#: ../../Zotlabs/Module/Dreport.php:115 +msgid "permission denied" +msgstr "permiso denegado" -#: ../../Zotlabs/Module/Settings/Channel.php:485 -msgid "Default Post Location:" -msgstr "Localización geográfica predeterminada para sus publicaciones:" +#: ../../Zotlabs/Module/Dreport.php:119 +msgid "recipient not found" +msgstr "destinatario no encontrado" -#: ../../Zotlabs/Module/Settings/Channel.php:485 -msgid "Geographical location to display on your posts" -msgstr "Localización geográfica que debe mostrarse en sus publicaciones" +#: ../../Zotlabs/Module/Dreport.php:122 +msgid "mail recalled" +msgstr "mensaje de correo revocado" -#: ../../Zotlabs/Module/Settings/Channel.php:486 -msgid "Use Browser Location:" -msgstr "Usar la localización geográfica del navegador:" +#: ../../Zotlabs/Module/Dreport.php:125 +msgid "duplicate mail received" +msgstr "se ha recibido mensaje duplicado" -#: ../../Zotlabs/Module/Settings/Channel.php:488 -msgid "Adult Content" -msgstr "Contenido solo para adultos" +#: ../../Zotlabs/Module/Dreport.php:128 +msgid "mail delivered" +msgstr "correo enviado" -#: ../../Zotlabs/Module/Settings/Channel.php:488 -msgid "" -"This channel frequently or regularly publishes adult content. (Please tag " -"any adult material and/or nudity with #NSFW)" -msgstr "Este canal publica contenido solo para adultos con frecuencia o regularmente. (Por favor etiquete cualquier material para adultos con la etiqueta #NSFW)" +#: ../../Zotlabs/Module/Dreport.php:148 +#, php-format +msgid "Delivery report for %1$s" +msgstr "Informe de entrega para %1$s" -#: ../../Zotlabs/Module/Settings/Channel.php:490 -msgid "Security and Privacy Settings" -msgstr "Configuración de seguridad y privacidad" +#: ../../Zotlabs/Module/Dreport.php:151 +msgid "Options" +msgstr "Opciones" -#: ../../Zotlabs/Module/Settings/Channel.php:493 -msgid "Your permissions are already configured. Click to view/adjust" -msgstr "Sus permisos ya están configurados. Pulse para ver/ajustar" +#: ../../Zotlabs/Module/Dreport.php:152 +msgid "Redeliver" +msgstr "Volver a enviar" -#: ../../Zotlabs/Module/Settings/Channel.php:495 -msgid "Hide my online presence" -msgstr "Ocultar mi presencia en línea" +#: ../../Zotlabs/Module/Sources.php:37 +msgid "Failed to create source. No channel selected." +msgstr "No se ha podido crear el origen de los contenidos. No ha sido seleccionado ningún canal." -#: ../../Zotlabs/Module/Settings/Channel.php:495 -msgid "Prevents displaying in your profile that you are online" -msgstr "Evitar mostrar en su perfil que está en línea" +#: ../../Zotlabs/Module/Sources.php:51 +msgid "Source created." +msgstr "Fuente creada." -#: ../../Zotlabs/Module/Settings/Channel.php:497 -msgid "Simple Privacy Settings:" -msgstr "Configuración de privacidad sencilla:" +#: ../../Zotlabs/Module/Sources.php:64 +msgid "Source updated." +msgstr "Fuente actualizada." -#: ../../Zotlabs/Module/Settings/Channel.php:498 -msgid "" -"Very Public - <em>extremely permissive (should be used with caution)</em>" -msgstr "Muy Público - <em>extremadamente permisivo (debería ser usado con precaución)</em>" +#: ../../Zotlabs/Module/Sources.php:90 +msgid "*" +msgstr "*" -#: ../../Zotlabs/Module/Settings/Channel.php:499 +#: ../../Zotlabs/Module/Sources.php:96 +#: ../../Zotlabs/Widget/Settings_menu.php:123 ../../include/features.php:213 +msgid "Channel Sources" +msgstr "Orígenes de los contenidos del canal" + +#: ../../Zotlabs/Module/Sources.php:97 +msgid "Manage remote sources of content for your channel." +msgstr "Gestionar contenido de origen remoto para su canal." + +#: ../../Zotlabs/Module/Sources.php:98 ../../Zotlabs/Module/Sources.php:108 +msgid "New Source" +msgstr "Nueva fuente" + +#: ../../Zotlabs/Module/Sources.php:109 ../../Zotlabs/Module/Sources.php:143 msgid "" -"Typical - <em>default public, privacy when desired (similar to social " -"network permissions but with improved privacy)</em>" -msgstr "Típico - <em>por defecto público, privado cuando se desee (similar a los permisos de una red social pero con privacidad mejorada)</em>" +"Import all or selected content from the following channel into this channel " +"and distribute it according to your channel settings." +msgstr "Importar todo el contenido o una selección de los siguientes canales en este canal y distribuirlo de acuerdo con sus ajustes." -#: ../../Zotlabs/Module/Settings/Channel.php:500 -msgid "Private - <em>default private, never open or public</em>" -msgstr "Privado - <em>por defecto, privado, nunca abierto o público</em>" +#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144 +msgid "Only import content with these words (one per line)" +msgstr "Importar solo contenido que contenga estas palabras (una por línea)" -#: ../../Zotlabs/Module/Settings/Channel.php:501 -msgid "Blocked - <em>default blocked to/from everybody</em>" -msgstr "Bloqueado - <em>por defecto, bloqueado/a para cualquiera</em>" +#: ../../Zotlabs/Module/Sources.php:110 ../../Zotlabs/Module/Sources.php:144 +msgid "Leave blank to import all public content" +msgstr "Dejar en blanco para importar todo el contenido público" -#: ../../Zotlabs/Module/Settings/Channel.php:503 -msgid "Allow others to tag your posts" -msgstr "Permitir a otros etiquetar sus publicaciones" +#: ../../Zotlabs/Module/Sources.php:111 ../../Zotlabs/Module/Sources.php:148 +msgid "Channel Name" +msgstr "Nombre del canal" -#: ../../Zotlabs/Module/Settings/Channel.php:503 +#: ../../Zotlabs/Module/Sources.php:112 ../../Zotlabs/Module/Sources.php:147 msgid "" -"Often used by the community to retro-actively flag inappropriate content" -msgstr "A menudo usado por la comunidad para marcar contenido inapropiado de forma retroactiva." +"Add the following categories to posts imported from this source (comma " +"separated)" +msgstr "Añadir los temas siguientes a las entradas importadas de esta fuente (separadas por comas)" -#: ../../Zotlabs/Module/Settings/Channel.php:505 -msgid "Channel Permission Limits" -msgstr "Límites de los permisos del canal" +#: ../../Zotlabs/Module/Sources.php:133 ../../Zotlabs/Module/Sources.php:161 +msgid "Source not found." +msgstr "Fuente no encontrada" -#: ../../Zotlabs/Module/Settings/Channel.php:507 -msgid "Expire other channel content after this many days" -msgstr "Caducar contenido de otros canales después de este número de días" +#: ../../Zotlabs/Module/Sources.php:140 +msgid "Edit Source" +msgstr "Editar fuente" -#: ../../Zotlabs/Module/Settings/Channel.php:507 -msgid "0 or blank to use the website limit." -msgstr "0 o en blanco para usar el límite del sitio web." +#: ../../Zotlabs/Module/Sources.php:141 +msgid "Delete Source" +msgstr "Eliminar fuente" -#: ../../Zotlabs/Module/Settings/Channel.php:507 -#, php-format -msgid "This website expires after %d days." -msgstr "Este sitio web caduca después de %d días." +#: ../../Zotlabs/Module/Sources.php:169 +msgid "Source removed" +msgstr "Fuente eliminada" -#: ../../Zotlabs/Module/Settings/Channel.php:507 -msgid "This website does not expire imported content." -msgstr "Este sitio web no caduca el contenido importado." +#: ../../Zotlabs/Module/Sources.php:171 +msgid "Unable to remove source." +msgstr "No se puede eliminar la fuente." -#: ../../Zotlabs/Module/Settings/Channel.php:507 -msgid "The website limit takes precedence if lower than your limit." -msgstr "El límite del sitio web tiene prioridad si es inferior a su propio límite." +#: ../../Zotlabs/Module/Like.php:19 +msgid "Like/Dislike" +msgstr "Me gusta/No me gusta" -#: ../../Zotlabs/Module/Settings/Channel.php:508 -msgid "Maximum Friend Requests/Day:" -msgstr "Máximo de solicitudes de amistad por día:" +#: ../../Zotlabs/Module/Like.php:24 +msgid "This action is restricted to members." +msgstr "Esta acción está restringida solo para miembros." -#: ../../Zotlabs/Module/Settings/Channel.php:508 -msgid "May reduce spam activity" -msgstr "Podría reducir la actividad de spam" +#: ../../Zotlabs/Module/Like.php:25 +msgid "" +"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a " +"href=\"register\">register as a new $Projectname member</a> to continue." +msgstr "Por favor, <a href=\"rmagic\">identifíquese con su $Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo $Projectname member</a> para continuar." -#: ../../Zotlabs/Module/Settings/Channel.php:509 -msgid "Default Access Control List (ACL)" -msgstr "Lista de control de acceso (ACL) por defecto" +#: ../../Zotlabs/Module/Like.php:105 ../../Zotlabs/Module/Like.php:131 +#: ../../Zotlabs/Module/Like.php:169 +msgid "Invalid request." +msgstr "Solicitud incorrecta." -#: ../../Zotlabs/Module/Settings/Channel.php:511 -msgid "Use my default audience setting for the type of object published" -msgstr "Usar los ajustes de mi audiencia predeterminada para el tipo de publicación" +#: ../../Zotlabs/Module/Like.php:117 ../../include/conversation.php:122 +msgid "channel" +msgstr "el canal" -#: ../../Zotlabs/Module/Settings/Channel.php:518 -msgid "Channel permissions category:" -msgstr "Categoría de los permisos del canal:" +#: ../../Zotlabs/Module/Like.php:146 +msgid "thing" +msgstr "elemento" -#: ../../Zotlabs/Module/Settings/Channel.php:519 -msgid "Default Permissions Group" -msgstr "Grupo de permisos predeterminado" +#: ../../Zotlabs/Module/Like.php:192 +msgid "Channel unavailable." +msgstr "Canal no disponible." -#: ../../Zotlabs/Module/Settings/Channel.php:525 -msgid "Maximum private messages per day from unknown people:" -msgstr "Máximo de mensajes privados por día de gente desconocida:" +#: ../../Zotlabs/Module/Like.php:240 +msgid "Previous action reversed." +msgstr "Acción anterior revocada." -#: ../../Zotlabs/Module/Settings/Channel.php:525 -msgid "Useful to reduce spamming" -msgstr "Útil para reducir el envío de correo no deseado" +#: ../../Zotlabs/Module/Like.php:419 ../../addon/diaspora/inbound.php:1823 +#: ../../include/conversation.php:160 +#, php-format +msgid "%1$s likes %2$s's %3$s" +msgstr "A %1$s le gusta %3$s de %2$s" -#: ../../Zotlabs/Module/Settings/Channel.php:528 -msgid "Notification Settings" -msgstr "Configuración de las notificaciones" +#: ../../Zotlabs/Module/Like.php:421 ../../include/conversation.php:163 +#, php-format +msgid "%1$s doesn't like %2$s's %3$s" +msgstr "A %1$s no le gusta %3$s de %2$s" -#: ../../Zotlabs/Module/Settings/Channel.php:529 -msgid "By default post a status message when:" -msgstr "Por defecto, enviar un mensaje de estado cuando:" +#: ../../Zotlabs/Module/Like.php:423 +#, php-format +msgid "%1$s agrees with %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s está de acuerdo" -#: ../../Zotlabs/Module/Settings/Channel.php:530 -msgid "accepting a friend request" -msgstr "Acepte una solicitud de amistad" +#: ../../Zotlabs/Module/Like.php:425 +#, php-format +msgid "%1$s doesn't agree with %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s no está de acuerdo" -#: ../../Zotlabs/Module/Settings/Channel.php:531 -msgid "joining a forum/community" -msgstr "al unirse a un foro o comunidad" +#: ../../Zotlabs/Module/Like.php:427 +#, php-format +msgid "%1$s abstains from a decision on %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s se abstiene" -#: ../../Zotlabs/Module/Settings/Channel.php:532 -msgid "making an <em>interesting</em> profile change" -msgstr "Realice un cambio <em>interesante</em> en su perfil" +#: ../../Zotlabs/Module/Like.php:429 +#, php-format +msgid "%1$s is attending %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s participa" -#: ../../Zotlabs/Module/Settings/Channel.php:533 -msgid "Send a notification email when:" -msgstr "Enviar una notificación por correo electrónico cuando:" +#: ../../Zotlabs/Module/Like.php:431 +#, php-format +msgid "%1$s is not attending %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s no participa" -#: ../../Zotlabs/Module/Settings/Channel.php:534 -msgid "You receive a connection request" -msgstr "Reciba una solicitud de conexión" +#: ../../Zotlabs/Module/Like.php:433 +#, php-format +msgid "%1$s may attend %2$s's %3$s" +msgstr "%3$s de %2$s: %1$s quizá participe" -#: ../../Zotlabs/Module/Settings/Channel.php:535 -msgid "Your connections are confirmed" -msgstr "Sus conexiones hayan sido confirmadas" +#: ../../Zotlabs/Module/Like.php:538 +msgid "Action completed." +msgstr "Acción completada." -#: ../../Zotlabs/Module/Settings/Channel.php:536 -msgid "Someone writes on your profile wall" -msgstr "Alguien escriba en la página de su perfil (\"muro\")" +#: ../../Zotlabs/Module/Like.php:539 +msgid "Thank you." +msgstr "Gracias." -#: ../../Zotlabs/Module/Settings/Channel.php:537 -msgid "Someone writes a followup comment" -msgstr "Alguien escriba un comentario sobre sus publicaciones" +#: ../../Zotlabs/Module/Directory.php:245 +#, php-format +msgid "%d rating" +msgid_plural "%d ratings" +msgstr[0] "%d valoración" +msgstr[1] "%d valoraciones" -#: ../../Zotlabs/Module/Settings/Channel.php:538 -msgid "You receive a private message" -msgstr "Reciba un mensaje privado" +#: ../../Zotlabs/Module/Directory.php:256 +msgid "Gender: " +msgstr "Género:" -#: ../../Zotlabs/Module/Settings/Channel.php:539 -msgid "You receive a friend suggestion" -msgstr "Reciba una sugerencia de amistad" +#: ../../Zotlabs/Module/Directory.php:258 +msgid "Status: " +msgstr "Estado:" -#: ../../Zotlabs/Module/Settings/Channel.php:540 -msgid "You are tagged in a post" -msgstr "Usted sea etiquetado en una publicación" +#: ../../Zotlabs/Module/Directory.php:260 +msgid "Homepage: " +msgstr "Página personal:" -#: ../../Zotlabs/Module/Settings/Channel.php:541 -msgid "You are poked/prodded/etc. in a post" -msgstr "Reciba un toque o incitación en una publicación" +#: ../../Zotlabs/Module/Directory.php:309 ../../include/channel.php:1291 +msgid "Age:" +msgstr "Edad:" -#: ../../Zotlabs/Module/Settings/Channel.php:543 -msgid "Someone likes your post/comment" -msgstr "Alguien muestre agrado por su entrada o comentario" +#: ../../Zotlabs/Module/Directory.php:314 ../../include/markdown.php:560 +#: ../../include/channel.php:1132 ../../include/event.php:52 +#: ../../include/event.php:84 +msgid "Location:" +msgstr "Ubicación:" -#: ../../Zotlabs/Module/Settings/Channel.php:546 -msgid "Show visual notifications including:" -msgstr "Mostrar notificaciones visuales que incluyan:" +#: ../../Zotlabs/Module/Directory.php:320 +msgid "Description:" +msgstr "Descripción:" -#: ../../Zotlabs/Module/Settings/Channel.php:548 -msgid "Unseen grid activity" -msgstr "Nueva actividad en la red" +#: ../../Zotlabs/Module/Directory.php:325 ../../include/channel.php:1307 +msgid "Hometown:" +msgstr "Lugar de nacimiento:" -#: ../../Zotlabs/Module/Settings/Channel.php:549 -msgid "Unseen channel activity" -msgstr "Actividad no vista en el canal" +#: ../../Zotlabs/Module/Directory.php:327 ../../include/channel.php:1315 +msgid "About:" +msgstr "Sobre mí:" -#: ../../Zotlabs/Module/Settings/Channel.php:550 -msgid "Unseen private messages" -msgstr "Mensajes privados no leídos" +#: ../../Zotlabs/Module/Directory.php:328 ../../Zotlabs/Module/Suggest.php:54 +#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Widget/Suggestions.php:44 +#: ../../include/conversation.php:1002 ../../include/channel.php:1117 +#: ../../include/connections.php:110 +msgid "Connect" +msgstr "Conectar" -#: ../../Zotlabs/Module/Settings/Channel.php:550 -#: ../../Zotlabs/Module/Settings/Channel.php:555 -#: ../../Zotlabs/Module/Settings/Channel.php:556 -#: ../../Zotlabs/Module/Settings/Channel.php:557 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 -msgid "Recommended" -msgstr "Recomendado" +#: ../../Zotlabs/Module/Directory.php:329 +msgid "Public Forum:" +msgstr "Foro público:" -#: ../../Zotlabs/Module/Settings/Channel.php:551 -msgid "Upcoming events" -msgstr "Próximos eventos" +#: ../../Zotlabs/Module/Directory.php:332 +msgid "Keywords: " +msgstr "Palabras clave:" -#: ../../Zotlabs/Module/Settings/Channel.php:552 -msgid "Events today" -msgstr "Eventos de hoy" +#: ../../Zotlabs/Module/Directory.php:335 +msgid "Don't suggest" +msgstr "No sugerir:" -#: ../../Zotlabs/Module/Settings/Channel.php:553 -msgid "Upcoming birthdays" -msgstr "Próximos cumpleaños" +#: ../../Zotlabs/Module/Directory.php:337 +msgid "Common connections:" +msgstr "Conexiones comunes:" -#: ../../Zotlabs/Module/Settings/Channel.php:553 -msgid "Not available in all themes" -msgstr "No disponible en todos los temas" +#: ../../Zotlabs/Module/Directory.php:386 +msgid "Global Directory" +msgstr "Directorio global:" -#: ../../Zotlabs/Module/Settings/Channel.php:554 -msgid "System (personal) notifications" -msgstr "Notificaciones del sistema (personales)" +#: ../../Zotlabs/Module/Directory.php:386 +msgid "Local Directory" +msgstr "Directorio local:" -#: ../../Zotlabs/Module/Settings/Channel.php:555 -msgid "System info messages" -msgstr "Mensajes de información del sistema" +#: ../../Zotlabs/Module/Directory.php:392 +msgid "Finding:" +msgstr "Encontrar:" -#: ../../Zotlabs/Module/Settings/Channel.php:556 -msgid "System critical alerts" -msgstr "Alertas críticas del sistema" +#: ../../Zotlabs/Module/Directory.php:395 ../../Zotlabs/Module/Suggest.php:62 +#: ../../include/contact_widgets.php:24 +msgid "Channel Suggestions" +msgstr "Sugerencias de canales" -#: ../../Zotlabs/Module/Settings/Channel.php:557 -msgid "New connections" -msgstr "Nuevas conexiones" +#: ../../Zotlabs/Module/Directory.php:397 +msgid "next page" +msgstr "siguiente página" -#: ../../Zotlabs/Module/Settings/Channel.php:558 -msgid "System Registrations" -msgstr "Registros del sistema" +#: ../../Zotlabs/Module/Directory.php:397 +msgid "previous page" +msgstr "página anterior" -#: ../../Zotlabs/Module/Settings/Channel.php:559 -msgid "" -"Also show new wall posts, private messages and connections under Notices" -msgstr "Mostrar también en Avisos las nuevas publicaciones, los mensajes privados y las conexiones" +#: ../../Zotlabs/Module/Directory.php:398 +msgid "Sort options" +msgstr "Ordenar opciones" -#: ../../Zotlabs/Module/Settings/Channel.php:561 -msgid "Notify me of events this many days in advance" -msgstr "Avisarme de los eventos con algunos días de antelación" +#: ../../Zotlabs/Module/Directory.php:399 +msgid "Alphabetic" +msgstr "Alfabético" -#: ../../Zotlabs/Module/Settings/Channel.php:561 -msgid "Must be greater than 0" -msgstr "Debe ser mayor que 0" +#: ../../Zotlabs/Module/Directory.php:400 +msgid "Reverse Alphabetic" +msgstr "Alfabético inverso" -#: ../../Zotlabs/Module/Settings/Channel.php:567 -msgid "Advanced Account/Page Type Settings" -msgstr "Ajustes avanzados de la cuenta y de los tipos de página" +#: ../../Zotlabs/Module/Directory.php:401 +msgid "Newest to Oldest" +msgstr "De más nuevo a más antiguo" -#: ../../Zotlabs/Module/Settings/Channel.php:568 -msgid "Change the behaviour of this account for special situations" -msgstr "Cambiar el comportamiento de esta cuenta en situaciones especiales" +#: ../../Zotlabs/Module/Directory.php:402 +msgid "Oldest to Newest" +msgstr "De más antiguo a más nuevo" -#: ../../Zotlabs/Module/Settings/Channel.php:570 -msgid "Miscellaneous Settings" -msgstr "Ajustes diversos" +#: ../../Zotlabs/Module/Directory.php:419 +msgid "No entries (some entries may be hidden)." +msgstr "Sin entradas (algunas entradas pueden estar ocultas)." -#: ../../Zotlabs/Module/Settings/Channel.php:571 -msgid "Default photo upload folder" -msgstr "Carpeta por defecto de las fotos subidas" +#: ../../Zotlabs/Module/Xchan.php:10 +msgid "Xchan Lookup" +msgstr "Búsqueda de canales" -#: ../../Zotlabs/Module/Settings/Channel.php:571 -#: ../../Zotlabs/Module/Settings/Channel.php:572 -msgid "%Y - current year, %m - current month" -msgstr "%Y - año en curso, %m - mes actual" +#: ../../Zotlabs/Module/Xchan.php:13 +msgid "Lookup xchan beginning with (or webbie): " +msgstr "Buscar un canal (o un \"webbie\") que comience por:" -#: ../../Zotlabs/Module/Settings/Channel.php:572 -msgid "Default file upload folder" -msgstr "Carpeta por defecto de los ficheros subidos" +#: ../../Zotlabs/Module/Suggest.php:37 +msgid "" +"No suggestions available. If this is a new site, please try again in 24 " +"hours." +msgstr "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo." -#: ../../Zotlabs/Module/Settings/Channel.php:574 -msgid "Personal menu to display in your channel pages" -msgstr "Menú personal que debe mostrarse en las páginas de su canal" +#: ../../Zotlabs/Module/Suggest.php:56 ../../Zotlabs/Widget/Suggestions.php:46 +msgid "Ignore/Hide" +msgstr "Ignorar/Ocultar" -#: ../../Zotlabs/Module/Settings/Channel.php:576 -msgid "Remove this channel." -msgstr "Eliminar este canal." +#: ../../Zotlabs/Module/Oexchange.php:27 +msgid "Unable to find your hub." +msgstr "No se puede encontrar su servidor." -#: ../../Zotlabs/Module/Settings/Channel.php:577 -msgid "Firefox Share $Projectname provider" -msgstr "Servicio de compartición de Firefox: proveedor $Projectname" +#: ../../Zotlabs/Module/Oexchange.php:41 +msgid "Post successful." +msgstr "Enviado con éxito." -#: ../../Zotlabs/Module/Settings/Channel.php:578 -msgid "Start calendar week on monday" -msgstr "Comenzar el calendario semanal por el lunes" +#: ../../Zotlabs/Module/Mail.php:65 +msgid "Unable to lookup recipient." +msgstr "No se puede asociar a un destinatario." -#: ../../Zotlabs/Module/Settings/Featured.php:20 -msgid "Affinity Slider settings updated." -msgstr "Se han actualizado los ajustes del controlador de afinidad." +#: ../../Zotlabs/Module/Mail.php:72 +msgid "Unable to communicate with requested channel." +msgstr "No se puede establecer la comunicación con el canal solicitado." -#: ../../Zotlabs/Module/Settings/Featured.php:34 -msgid "No feature settings configured" -msgstr "No se ha establecido la configuración de los complementos" +#: ../../Zotlabs/Module/Mail.php:79 +msgid "Cannot verify requested channel." +msgstr "No se puede verificar el canal solicitado." -#: ../../Zotlabs/Module/Settings/Featured.php:41 -msgid "Default maximum affinity level" -msgstr "Nivel máximo de afinidad por defecto" +#: ../../Zotlabs/Module/Mail.php:97 +msgid "Selected channel has private message restrictions. Send failed." +msgstr "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló." -#: ../../Zotlabs/Module/Settings/Featured.php:46 -msgid "Default minimum affinity level" -msgstr "Nivel mínimo de afinidad por defecto" +#: ../../Zotlabs/Module/Mail.php:178 +msgid "Messages" +msgstr "Mensajes" -#: ../../Zotlabs/Module/Settings/Featured.php:50 -msgid "Affinity Slider Settings" -msgstr "Ajustes del controlador de afinidad" +#: ../../Zotlabs/Module/Mail.php:213 +msgid "Message recalled." +msgstr "Mensaje revocado." -#: ../../Zotlabs/Module/Settings/Featured.php:60 -msgid "Feature/Addon Settings" -msgstr "Ajustes de los complementos" +#: ../../Zotlabs/Module/Mail.php:226 +msgid "Conversation removed." +msgstr "Conversación eliminada." -#: ../../Zotlabs/Module/Settings/Permcats.php:37 -msgid "Permission category saved." -msgstr "Se ha guardado la categoría del permiso." +#: ../../Zotlabs/Module/Mail.php:241 ../../Zotlabs/Module/Mail.php:362 +msgid "Expires YYYY-MM-DD HH:MM" +msgstr "Caduca YYYY-MM-DD HH:MM" -#: ../../Zotlabs/Module/Settings/Permcats.php:63 -msgid "" -"Use this form to create permission rules for various classes of people or " -"connections." -msgstr "Utilice este formulario para crear reglas de permiso para varias clases de personas o conexiones." +#: ../../Zotlabs/Module/Mail.php:269 +msgid "Requested channel is not in this network" +msgstr "El canal solicitado no existe en esta red" -#: ../../Zotlabs/Module/Settings/Permcats.php:96 -msgid "Permission Categories" -msgstr "Categorías de autorización" +#: ../../Zotlabs/Module/Mail.php:277 +msgid "Send Private Message" +msgstr "Enviar un mensaje privado" -#: ../../Zotlabs/Module/Settings/Permcats.php:104 -msgid "Permission Name" -msgstr "Nombre de la autorización" +#: ../../Zotlabs/Module/Mail.php:278 ../../Zotlabs/Module/Mail.php:415 +msgid "To:" +msgstr "Para:" -#: ../../Zotlabs/Module/Settings/Tokens.php:31 -#, php-format -msgid "This channel is limited to %d tokens" -msgstr "Este canal tiene un límite de %d tokens" +#: ../../Zotlabs/Module/Mail.php:281 ../../Zotlabs/Module/Mail.php:417 +msgid "Subject:" +msgstr "Asunto:" -#: ../../Zotlabs/Module/Settings/Tokens.php:37 -msgid "Name and Password are required." -msgstr "Se requiere el nombre y la contraseña." +#: ../../Zotlabs/Module/Mail.php:286 ../../Zotlabs/Module/Mail.php:423 +#: ../../include/conversation.php:1323 +msgid "Attach file" +msgstr "Adjuntar fichero" -#: ../../Zotlabs/Module/Settings/Tokens.php:77 -msgid "Token saved." -msgstr "Token salvado." +#: ../../Zotlabs/Module/Mail.php:288 +msgid "Send" +msgstr "Enviar" -#: ../../Zotlabs/Module/Settings/Tokens.php:113 -msgid "" -"Use this form to create temporary access identifiers to share things with " -"non-members. These identities may be used in Access Control Lists and " -"visitors may login using these credentials to access private content." -msgstr "Utilice este formulario para crear identificadores de acceso temporal para compartir cosas con los no miembros de Hubzilla. Estas identidades se pueden usar en las Listas de control de acceso (ACL) y así los visitantes pueden iniciar sesión, utilizando estas credenciales, para acceder a su contenido privado." +#: ../../Zotlabs/Module/Mail.php:291 ../../Zotlabs/Module/Mail.php:428 +#: ../../include/conversation.php:1368 +msgid "Set expiration date" +msgstr "Configurar fecha de caducidad" -#: ../../Zotlabs/Module/Settings/Tokens.php:115 -msgid "" -"You may also provide <em>dropbox</em> style access links to friends and " -"associates by adding the Login Password to any specific site URL as shown. " -"Examples:" -msgstr "También puede proporcionar, con el estilo <em>dropbox</em>, enlaces de acceso a sus amigos y asociados añadiendo la contraseña de inicio de sesión a cualquier dirección URL, como se muestra. Ejemplos: " +#: ../../Zotlabs/Module/Mail.php:387 +msgid "Delete message" +msgstr "Borrar mensaje" -#: ../../Zotlabs/Module/Settings/Tokens.php:150 ../../include/widgets.php:644 -msgid "Guest Access Tokens" -msgstr "Tokens de acceso para invitados" +#: ../../Zotlabs/Module/Mail.php:388 +msgid "Delivery report" +msgstr "Informe de transmisión" -#: ../../Zotlabs/Module/Settings/Tokens.php:157 -msgid "Login Name" -msgstr "Nombre de inicio de sesión" +#: ../../Zotlabs/Module/Mail.php:389 +msgid "Recall message" +msgstr "Revocar el mensaje" -#: ../../Zotlabs/Module/Settings/Tokens.php:158 -msgid "Login Password" -msgstr "Contraseña de inicio de sesión" +#: ../../Zotlabs/Module/Mail.php:391 +msgid "Message has been recalled." +msgstr "El mensaje ha sido revocado." -#: ../../Zotlabs/Module/Settings/Tokens.php:159 -msgid "Expires (yyyy-mm-dd)" -msgstr "Expira (aaaa-mm-dd)" +#: ../../Zotlabs/Module/Mail.php:408 +msgid "Delete Conversation" +msgstr "Eliminar conversación" -#: ../../Zotlabs/Module/Settings/Display.php:145 -msgid "No special theme for mobile devices" -msgstr "Sin tema especial para dispositivos móviles" +#: ../../Zotlabs/Module/Mail.php:410 +msgid "" +"No secure communications available. You <strong>may</strong> be able to " +"respond from the sender's profile page." +msgstr "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente." -#: ../../Zotlabs/Module/Settings/Display.php:148 +#: ../../Zotlabs/Module/Mail.php:414 +msgid "Send Reply" +msgstr "Responder" + +#: ../../Zotlabs/Module/Mail.php:419 #, php-format -msgid "%s - (Experimental)" -msgstr "%s - (Experimental)" +msgid "Your message for %s (%s):" +msgstr "Su mensaje para %s (%s):" -#: ../../Zotlabs/Module/Settings/Display.php:198 -msgid "Display Settings" -msgstr "Ajustes de visualización" +#: ../../Zotlabs/Module/Pubsites.php:24 ../../Zotlabs/Widget/Pubsites.php:12 +msgid "Public Hubs" +msgstr "Servidores públicos" -#: ../../Zotlabs/Module/Settings/Display.php:199 -msgid "Theme Settings" -msgstr "Ajustes del tema" +#: ../../Zotlabs/Module/Pubsites.php:27 +msgid "" +"The listed hubs allow public registration for the $Projectname network. All " +"hubs in the network are interlinked so membership on any of them conveys " +"membership in the network as a whole. Some hubs may require subscription or " +"provide tiered service plans. The hub itself <strong>may</strong> provide " +"additional details." +msgstr "Los sitios listados permiten el registro público en la red $Projectname. Todos los sitios de la red están vinculados entre sí, por lo que sus miembros, en ninguno de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los mismos hubs <strong>pueden</strong> proporcionar detalles adicionales." -#: ../../Zotlabs/Module/Settings/Display.php:200 -msgid "Custom Theme Settings" -msgstr "Ajustes personalizados del tema" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Hub URL" +msgstr "Dirección del hub" -#: ../../Zotlabs/Module/Settings/Display.php:201 -msgid "Content Settings" -msgstr "Ajustes del contenido" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Access Type" +msgstr "Tipo de acceso" -#: ../../Zotlabs/Module/Settings/Display.php:207 -msgid "Display Theme:" -msgstr "Tema gráfico del perfil:" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Registration Policy" +msgstr "Normas de registro" -#: ../../Zotlabs/Module/Settings/Display.php:208 -msgid "Select scheme" -msgstr "Elegir un esquema" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Stats" +msgstr "Estadísticas" -#: ../../Zotlabs/Module/Settings/Display.php:210 -msgid "Mobile Theme:" -msgstr "Tema para el móvil:" +#: ../../Zotlabs/Module/Pubsites.php:33 +msgid "Software" +msgstr "Software" -#: ../../Zotlabs/Module/Settings/Display.php:211 -msgid "Preload images before rendering the page" -msgstr "Carga previa de las imágenes antes de generar la página" +#: ../../Zotlabs/Module/Pubsites.php:48 +msgid "Rate" +msgstr "Valorar" -#: ../../Zotlabs/Module/Settings/Display.php:211 -msgid "" -"The subjective page load time will be longer but the page will be ready when" -" displayed" -msgstr "El tiempo subjetivo de carga de la página será más largo, pero la página estará lista cuando se muestre." +#: ../../Zotlabs/Module/Impel.php:41 ../../include/bbcode.php:203 +msgid "webpage" +msgstr "página web" -#: ../../Zotlabs/Module/Settings/Display.php:212 -msgid "Enable user zoom on mobile devices" -msgstr "Habilitar zoom de usuario en dispositivos móviles" +#: ../../Zotlabs/Module/Impel.php:46 ../../include/bbcode.php:209 +msgid "block" +msgstr "bloque" -#: ../../Zotlabs/Module/Settings/Display.php:213 -msgid "Update browser every xx seconds" -msgstr "Actualizar navegador cada xx segundos" +#: ../../Zotlabs/Module/Impel.php:51 ../../include/bbcode.php:206 +msgid "layout" +msgstr "plantilla" -#: ../../Zotlabs/Module/Settings/Display.php:213 -msgid "Minimum of 10 seconds, no maximum" -msgstr "Mínimo de 10 segundos, sin máximo" +#: ../../Zotlabs/Module/Impel.php:58 ../../include/bbcode.php:212 +msgid "menu" +msgstr "menú" -#: ../../Zotlabs/Module/Settings/Display.php:214 -msgid "Maximum number of conversations to load at any time:" -msgstr "Máximo número de conversaciones a cargar en cualquier momento:" +#: ../../Zotlabs/Module/Impel.php:181 +#, php-format +msgid "%s element installed" +msgstr "%s elemento instalado" -#: ../../Zotlabs/Module/Settings/Display.php:214 -msgid "Maximum of 100 items" -msgstr "Máximo de 100 elementos" +#: ../../Zotlabs/Module/Impel.php:184 +#, php-format +msgid "%s element installation failed" +msgstr "Elemento con instalación fallida: %s" -#: ../../Zotlabs/Module/Settings/Display.php:215 -msgid "Show emoticons (smilies) as images" -msgstr "Mostrar emoticonos (smilies) como imágenes" +#: ../../Zotlabs/Module/Rbmark.php:94 +msgid "Select a bookmark folder" +msgstr "Seleccionar una carpeta de marcadores" -#: ../../Zotlabs/Module/Settings/Display.php:216 -msgid "Manual conversation updates" -msgstr "Actualizaciones manuales de la conversación" +#: ../../Zotlabs/Module/Rbmark.php:99 +msgid "Save Bookmark" +msgstr "Guardar marcador" -#: ../../Zotlabs/Module/Settings/Display.php:216 -msgid "Default is on, turning this off may increase screen jumping" -msgstr "El valor predeterminado está activado, al desactivarlo puede aumentar el salto de pantalla" +#: ../../Zotlabs/Module/Rbmark.php:100 +msgid "URL of bookmark" +msgstr "Dirección del marcador" -#: ../../Zotlabs/Module/Settings/Display.php:217 -msgid "Link post titles to source" -msgstr "Enlazar título de la publicación a la fuente original" +#: ../../Zotlabs/Module/Rbmark.php:105 +msgid "Or enter new bookmark folder name" +msgstr "O introduzca un nuevo nombre para la carpeta de marcadores" -#: ../../Zotlabs/Module/Settings/Display.php:218 -msgid "System Page Layout Editor - (advanced)" -msgstr "Editor de plantilla de página del sistema - (avanzado)" +#: ../../Zotlabs/Module/Filer.php:52 +msgid "Enter a folder name" +msgstr "Escriba un nombre de carpeta" -#: ../../Zotlabs/Module/Settings/Display.php:221 -msgid "Use blog/list mode on channel page" -msgstr "Usar modo blog/lista en la página de inicio del canal" +#: ../../Zotlabs/Module/Filer.php:52 +msgid "or select an existing folder (doubleclick)" +msgstr "o seleccione una (con un doble click)" -#: ../../Zotlabs/Module/Settings/Display.php:221 -#: ../../Zotlabs/Module/Settings/Display.php:222 -msgid "(comments displayed separately)" -msgstr "(comentarios mostrados de forma separada)" +#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:137 +msgid "Save to Folder" +msgstr "Guardar en carpeta" -#: ../../Zotlabs/Module/Settings/Display.php:222 -msgid "Use blog/list mode on grid page" -msgstr "Mostrar mi red en modo blog" +#: ../../Zotlabs/Module/Probe.php:28 ../../Zotlabs/Module/Probe.php:32 +#, php-format +msgid "Fetching URL returns error: %1$s" +msgstr "Al intentar obtener la dirección, retorna el error: %1$s" -#: ../../Zotlabs/Module/Settings/Display.php:223 -msgid "Channel page max height of content (in pixels)" -msgstr "Altura máxima del contenido de la página del canal (en píxeles)" +#: ../../Zotlabs/Module/Register.php:49 +msgid "Maximum daily site registrations exceeded. Please try again tomorrow." +msgstr "Se ha superado el límite máximo de inscripciones diarias de este sitio. Por favor, pruebe de nuevo mañana." -#: ../../Zotlabs/Module/Settings/Display.php:223 -#: ../../Zotlabs/Module/Settings/Display.php:224 -msgid "click to expand content exceeding this height" -msgstr "Pulsar para expandir el contenido que exceda de esta altura" +#: ../../Zotlabs/Module/Register.php:55 +msgid "" +"Please indicate acceptance of the Terms of Service. Registration failed." +msgstr "Por favor, confirme que acepta los Términos del servicio. El registro ha fallado." -#: ../../Zotlabs/Module/Settings/Display.php:224 -msgid "Grid page max height of content (in pixels)" -msgstr "Altura máxima del contenido de mi red (en píxeles)" +#: ../../Zotlabs/Module/Register.php:89 +msgid "Passwords do not match." +msgstr "Las contraseñas no coinciden." -#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 -msgid "Tag removed" -msgstr "Etiqueta eliminada." +#: ../../Zotlabs/Module/Register.php:131 +msgid "" +"Registration successful. Please check your email for validation " +"instructions." +msgstr "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo." -#: ../../Zotlabs/Module/Tagrm.php:123 -msgid "Remove Item Tag" -msgstr "Eliminar etiqueta del elemento." +#: ../../Zotlabs/Module/Register.php:137 +msgid "Your registration is pending approval by the site owner." +msgstr "Su registro está pendiente de aprobación por el propietario del sitio." -#: ../../Zotlabs/Module/Tagrm.php:125 -msgid "Select a tag to remove: " -msgstr "Seleccionar una etiqueta para eliminar:" +#: ../../Zotlabs/Module/Register.php:140 +msgid "Your registration can not be processed." +msgstr "Su registro no puede ser procesado." -#: ../../Zotlabs/Module/Thing.php:114 -msgid "Thing updated" -msgstr "Elemento actualizado." +#: ../../Zotlabs/Module/Register.php:184 +msgid "Registration on this hub is disabled." +msgstr "El registro está deshabilitado en este sitio." -#: ../../Zotlabs/Module/Thing.php:166 -msgid "Object store: failed" -msgstr "Guardar objeto: ha fallado" +#: ../../Zotlabs/Module/Register.php:193 +msgid "Registration on this hub is by approval only." +msgstr "El registro en este hub está sometido a aprobación previa." -#: ../../Zotlabs/Module/Thing.php:170 -msgid "Thing added" -msgstr "Elemento añadido" +#: ../../Zotlabs/Module/Register.php:194 +msgid "<a href=\"pubsites\">Register at another affiliated hub.</a>" +msgstr "<a href=\"pubsites\">Registrarse en otro hub afiliado.</a>" -#: ../../Zotlabs/Module/Thing.php:196 +#: ../../Zotlabs/Module/Register.php:204 +msgid "" +"This site has exceeded the number of allowed daily account registrations. " +"Please try again tomorrow." +msgstr "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana." + +#: ../../Zotlabs/Module/Register.php:227 #, php-format -msgid "OBJ: %1$s %2$s %3$s" -msgstr "OBJ: %1$s %2$s %3$s" +msgid "I accept the %s for this website" +msgstr "Acepto los %s de este sitio" -#: ../../Zotlabs/Module/Thing.php:259 -msgid "Show Thing" -msgstr "Mostrar elemento" +#: ../../Zotlabs/Module/Register.php:229 +#, php-format +msgid "I am over 13 years of age and accept the %s for this website" +msgstr "Tengo más de 13 años de edad y acepto los %s de este sitio" -#: ../../Zotlabs/Module/Thing.php:266 -msgid "item not found." -msgstr "elemento no encontrado." +#: ../../Zotlabs/Module/Register.php:233 +msgid "Your email address" +msgstr "Su dirección de correo electrónico" -#: ../../Zotlabs/Module/Thing.php:299 -msgid "Edit Thing" -msgstr "Editar elemento" +#: ../../Zotlabs/Module/Register.php:234 +msgid "Choose a password" +msgstr "Elija una contraseña" -#: ../../Zotlabs/Module/Thing.php:301 ../../Zotlabs/Module/Thing.php:355 -msgid "Select a profile" -msgstr "Seleccionar un perfil" +#: ../../Zotlabs/Module/Register.php:235 +msgid "Please re-enter your password" +msgstr "Por favor, vuelva a escribir su contraseña" -#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:358 -msgid "Post an activity" -msgstr "Publicar una actividad" +#: ../../Zotlabs/Module/Register.php:236 +msgid "Please enter your invitation code" +msgstr "Por favor, introduzca el código de su invitación" -#: ../../Zotlabs/Module/Thing.php:305 ../../Zotlabs/Module/Thing.php:358 -msgid "Only sends to viewers of the applicable profile" -msgstr "Sólo enviar a espectadores del perfil pertinente." +#: ../../Zotlabs/Module/Register.php:241 +msgid "no" +msgstr "no" -#: ../../Zotlabs/Module/Thing.php:307 ../../Zotlabs/Module/Thing.php:360 -msgid "Name of thing e.g. something" -msgstr "Nombre del elemento, p. ej.:. \"algo\"" +#: ../../Zotlabs/Module/Register.php:241 +msgid "yes" +msgstr "sí" -#: ../../Zotlabs/Module/Thing.php:309 ../../Zotlabs/Module/Thing.php:361 -msgid "URL of thing (optional)" -msgstr "Dirección del elemento (opcional)" +#: ../../Zotlabs/Module/Register.php:258 +msgid "Membership on this site is by invitation only." +msgstr "Para registrarse en este sitio es necesaria una invitación." -#: ../../Zotlabs/Module/Thing.php:311 ../../Zotlabs/Module/Thing.php:362 -msgid "URL for photo of thing (optional)" -msgstr "Dirección para la foto o elemento (opcional)" +#: ../../Zotlabs/Module/Register.php:270 ../../boot.php:1612 +#: ../../include/nav.php:145 +msgid "Register" +msgstr "Registrarse" -#: ../../Zotlabs/Module/Thing.php:353 -msgid "Add Thing to your Profile" -msgstr "Añadir alguna cosa a su perfil" +#: ../../Zotlabs/Module/Register.php:271 +msgid "" +"This site may require email verification after submitting this form. If you " +"are returned to a login page, please check your email for instructions." +msgstr "Este sitio puede requerir una verificación de correo electrónico después de enviar este formulario. Si es devuelto a una página de inicio de sesión, compruebe su email para recibir y leer las instrucciones." -#: ../../Zotlabs/Module/Setup.php:176 -msgid "$Projectname Server - Setup" -msgstr "Servidor $Projectname - Instalación" +#: ../../Zotlabs/Module/Cover_photo.php:136 +#: ../../Zotlabs/Module/Cover_photo.php:186 +msgid "Cover Photos" +msgstr "Imágenes de portada del perfil" -#: ../../Zotlabs/Module/Setup.php:180 -msgid "Could not connect to database." -msgstr "No se ha podido conectar a la base de datos." +#: ../../Zotlabs/Module/Cover_photo.php:237 ../../include/items.php:4286 +msgid "female" +msgstr "mujer" -#: ../../Zotlabs/Module/Setup.php:184 -msgid "" -"Could not connect to specified site URL. Possible SSL certificate or DNS " -"issue." -msgstr "No se puede conectar con la dirección del sitio indicada. Podría tratarse de un problema de SSL o DNS." +#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4287 +#, php-format +msgid "%1$s updated her %2$s" +msgstr "%1$s ha actualizado su %2$s" -#: ../../Zotlabs/Module/Setup.php:191 -msgid "Could not create table." -msgstr "No se puede crear la tabla." +#: ../../Zotlabs/Module/Cover_photo.php:239 ../../include/items.php:4288 +msgid "male" +msgstr "hombre" -#: ../../Zotlabs/Module/Setup.php:196 -msgid "Your site database has been installed." -msgstr "La base de datos del sitio ha sido instalada." +#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/items.php:4289 +#, php-format +msgid "%1$s updated his %2$s" +msgstr "%1$s ha actualizado su %2$s" -#: ../../Zotlabs/Module/Setup.php:200 -msgid "" -"You may need to import the file \"install/schema_xxx.sql\" manually using a " -"database client." -msgstr "Podría tener que importar manualmente el fichero \"install/schema_xxx.sql\" usando un cliente de base de datos." +#: ../../Zotlabs/Module/Cover_photo.php:242 ../../include/items.php:4291 +#, php-format +msgid "%1$s updated their %2$s" +msgstr "%1$s ha actualizado su %2$s" -#: ../../Zotlabs/Module/Setup.php:201 ../../Zotlabs/Module/Setup.php:263 -#: ../../Zotlabs/Module/Setup.php:750 -msgid "Please see the file \"install/INSTALL.txt\"." -msgstr "Por favor, lea el fichero \"install/INSTALL.txt\"." +#: ../../Zotlabs/Module/Cover_photo.php:244 ../../include/channel.php:1757 +msgid "cover photo" +msgstr "Imagen de portada del perfil" -#: ../../Zotlabs/Module/Setup.php:260 -msgid "System check" -msgstr "Verificación del sistema" +#: ../../Zotlabs/Module/Cover_photo.php:360 +msgid "Upload Cover Photo" +msgstr "Subir imagen de portada del perfil" -#: ../../Zotlabs/Module/Setup.php:265 -msgid "Check again" -msgstr "Verificar de nuevo" +#: ../../Zotlabs/Module/Help.php:23 +msgid "Documentation Search" +msgstr "Búsqueda de Documentación" -#: ../../Zotlabs/Module/Setup.php:287 -msgid "Database connection" -msgstr "Conexión a la base de datos" +#: ../../Zotlabs/Module/Help.php:80 ../../include/conversation.php:1764 +msgid "About" +msgstr "Mi perfil" -#: ../../Zotlabs/Module/Setup.php:288 -msgid "" -"In order to install $Projectname we need to know how to connect to your " -"database." -msgstr "Para instalar $Projectname es necesario saber cómo conectar con su base de datos." +#: ../../Zotlabs/Module/Help.php:82 +msgid "Administrators" +msgstr "Administradores" -#: ../../Zotlabs/Module/Setup.php:289 -msgid "" -"Please contact your hosting provider or site administrator if you have " -"questions about these settings." -msgstr "Por favor, contacte con el proveedor de servicios o el administrador del sitio si tiene dudas sobre estos ajustes." +#: ../../Zotlabs/Module/Help.php:83 +msgid "Developers" +msgstr "Desarrolladores" -#: ../../Zotlabs/Module/Setup.php:290 -msgid "" -"The database you specify below should already exist. If it does not, please " -"create it before continuing." -msgstr "La base de datos que especifique a continuación debe existir ya. Si no es así, por favor, créela antes de seguir." +#: ../../Zotlabs/Module/Help.php:84 +msgid "Tutorials" +msgstr "Tutoriales" -#: ../../Zotlabs/Module/Setup.php:294 -msgid "Database Server Name" -msgstr "Nombre del servidor de base de datos" +#: ../../Zotlabs/Module/Help.php:93 +msgid "$Projectname Documentation" +msgstr "Documentación de $Projectname" -#: ../../Zotlabs/Module/Setup.php:294 -msgid "Default is 127.0.0.1" -msgstr "De forma predeterminada es 127.0.0.1" +#: ../../Zotlabs/Module/Help.php:94 +msgid "Contents" +msgstr "Contenidos" -#: ../../Zotlabs/Module/Setup.php:295 -msgid "Database Port" -msgstr "Puerto de la base de datos" +#: ../../Zotlabs/Module/Tagrm.php:48 ../../Zotlabs/Module/Tagrm.php:98 +msgid "Tag removed" +msgstr "Etiqueta eliminada." -#: ../../Zotlabs/Module/Setup.php:295 -msgid "Communication port number - use 0 for default" -msgstr "Número del puerto de comunicaciones - use 0 como valor por defecto" +#: ../../Zotlabs/Module/Tagrm.php:123 +msgid "Remove Item Tag" +msgstr "Eliminar etiqueta del elemento." -#: ../../Zotlabs/Module/Setup.php:296 -msgid "Database Login Name" -msgstr "Usuario de la base de datos" +#: ../../Zotlabs/Module/Tagrm.php:125 +msgid "Select a tag to remove: " +msgstr "Seleccionar una etiqueta para eliminar:" -#: ../../Zotlabs/Module/Setup.php:297 -msgid "Database Login Password" -msgstr "Contraseña de acceso a la base de datos" +#: ../../Zotlabs/Module/Network.php:96 +msgid "No such group" +msgstr "No se encuentra el grupo" -#: ../../Zotlabs/Module/Setup.php:298 -msgid "Database Name" -msgstr "Nombre de la base de datos" +#: ../../Zotlabs/Module/Network.php:136 +msgid "No such channel" +msgstr "No se encuentra el canal" -#: ../../Zotlabs/Module/Setup.php:299 -msgid "Database Type" -msgstr "Tipo de base de datos" +#: ../../Zotlabs/Module/Network.php:141 +msgid "forum" +msgstr "foro" -#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:347 -msgid "Site administrator email address" -msgstr "Dirección de correo electrónico del administrador del sitio" +#: ../../Zotlabs/Module/Network.php:153 +msgid "Search Results For:" +msgstr "Buscar resultados para:" -#: ../../Zotlabs/Module/Setup.php:301 ../../Zotlabs/Module/Setup.php:347 -msgid "" -"Your account email address must match this in order to use the web admin " -"panel." -msgstr "Su cuenta deberá usar la misma dirección de correo electrónico para poder utilizar el panel de administración web." +#: ../../Zotlabs/Module/Network.php:221 +msgid "Privacy group is empty" +msgstr "El grupo de canales está vacío" -#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:349 -msgid "Website URL" -msgstr "Dirección del sitio web" +#: ../../Zotlabs/Module/Network.php:230 +msgid "Privacy group: " +msgstr "Grupo de canales: " -#: ../../Zotlabs/Module/Setup.php:302 ../../Zotlabs/Module/Setup.php:349 -msgid "Please use SSL (https) URL if available." -msgstr "Por favor, use SSL (https) si está disponible." +#: ../../Zotlabs/Module/Network.php:256 +msgid "Invalid connection." +msgstr "Conexión no válida." -#: ../../Zotlabs/Module/Setup.php:303 ../../Zotlabs/Module/Setup.php:353 -msgid "Please select a default timezone for your website" -msgstr "Por favor, selecciones el huso horario por defecto de su sitio web" +#: ../../Zotlabs/Module/Network.php:275 ../../addon/redred/redred.php:65 +msgid "Invalid channel." +msgstr "El canal no es válido." -#: ../../Zotlabs/Module/Setup.php:336 -msgid "Site settings" -msgstr "Ajustes del sitio" +#: ../../Zotlabs/Module/Acl.php:344 +msgid "network" +msgstr "red" -#: ../../Zotlabs/Module/Setup.php:392 -msgid "PHP version 5.5 or greater is required." -msgstr "Se requiere la versión 5.5, o superior, de PHP." +#: ../../Zotlabs/Module/Acl.php:354 +msgid "RSS" +msgstr "RSS" -#: ../../Zotlabs/Module/Setup.php:393 -msgid "PHP version" -msgstr "Versión de PHP" +#: ../../Zotlabs/Module/Home.php:74 ../../Zotlabs/Module/Home.php:82 +#: ../../addon/opensearch/opensearch.php:42 +msgid "$Projectname" +msgstr "$Projectname" -#: ../../Zotlabs/Module/Setup.php:409 -msgid "Could not find a command line version of PHP in the web server PATH." -msgstr "No se puede encontrar una versión en línea de comandos de PHP en la ruta del servidor web." +#: ../../Zotlabs/Module/Home.php:92 +#, php-format +msgid "Welcome to %s" +msgstr "Bienvenido a %s" -#: ../../Zotlabs/Module/Setup.php:410 -msgid "" -"If you don't have a command line version of PHP installed on server, you " -"will not be able to run background polling via cron." -msgstr "Si no tiene instalada la versión de línea de comandos de PHP en su servidor, no podrá realizar envíos en segundo plano mediante cron." +#: ../../Zotlabs/Module/Filestorage.php:87 +msgid "Permission Denied." +msgstr "Permiso denegado" -#: ../../Zotlabs/Module/Setup.php:414 -msgid "PHP executable path" -msgstr "Ruta del ejecutable PHP" +#: ../../Zotlabs/Module/Filestorage.php:103 +msgid "File not found." +msgstr "Fichero no encontrado." -#: ../../Zotlabs/Module/Setup.php:414 -msgid "" -"Enter full path to php executable. You can leave this blank to continue the " -"installation." -msgstr "Introducir la ruta completa del ejecutable PHP. Puede dejar la línea en blanco para continuar la instalación." +#: ../../Zotlabs/Module/Filestorage.php:146 +msgid "Edit file permissions" +msgstr "Modificar los permisos del fichero" -#: ../../Zotlabs/Module/Setup.php:419 -msgid "Command line PHP" -msgstr "PHP en línea de comandos" +#: ../../Zotlabs/Module/Filestorage.php:159 +msgid "Set/edit permissions" +msgstr "Establecer/editar los permisos" -#: ../../Zotlabs/Module/Setup.php:429 -msgid "" -"Unable to check command line PHP, as shell_exec() is disabled. This is " -"required." -msgstr "No se puede comprobar la línea de comandos PHP, ya que shell_exec() está deshabilitado. Es necesario que esté activado." +#: ../../Zotlabs/Module/Filestorage.php:160 +msgid "Include all files and sub folders" +msgstr "Incluir todos los ficheros y subcarpetas" -#: ../../Zotlabs/Module/Setup.php:432 -msgid "" -"The command line version of PHP on your system does not have " -"\"register_argc_argv\" enabled." -msgstr "La línea de comandos PHP de su sistema no tiene activado \"register_argc_argv\"." +#: ../../Zotlabs/Module/Filestorage.php:161 +msgid "Return to file list" +msgstr "Volver a la lista de ficheros" -#: ../../Zotlabs/Module/Setup.php:433 -msgid "This is required for message delivery to work." -msgstr "Esto es necesario para que funcione la transmisión de mensajes." +#: ../../Zotlabs/Module/Filestorage.php:163 +msgid "Copy/paste this code to attach file to a post" +msgstr "Copiar/pegar este código para adjuntar el fichero al envío" -#: ../../Zotlabs/Module/Setup.php:436 -msgid "PHP register_argc_argv" -msgstr "PHP register_argc_argv" +#: ../../Zotlabs/Module/Filestorage.php:164 +msgid "Copy/paste this URL to link file from a web page" +msgstr "Copiar/pegar esta dirección para enlazar el fichero desde una página web" -#: ../../Zotlabs/Module/Setup.php:454 -#, php-format -msgid "" -"Your max allowed total upload size is set to %s. Maximum size of one file to" -" upload is set to %s. You are allowed to upload up to %d files at once." -msgstr "La carga máxima que se le permite subir está establecida en %s. El tamaño máximo de un fichero está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez." +#: ../../Zotlabs/Module/Filestorage.php:166 +msgid "Share this file" +msgstr "Compartir este fichero" -#: ../../Zotlabs/Module/Setup.php:459 -msgid "You can adjust these settings in the server php.ini file." -msgstr "Puede ajustar estos valores en el fichero php.ini de su servidor." +#: ../../Zotlabs/Module/Filestorage.php:167 +msgid "Show URL to this file" +msgstr "Mostrar la dirección de este fichero" -#: ../../Zotlabs/Module/Setup.php:461 -msgid "PHP upload limits" -msgstr "Límites PHP de subida" +#: ../../Zotlabs/Module/Filestorage.php:168 +msgid "Notify your contacts about this file" +msgstr "Avisar a sus contactos sobre este fichero" -#: ../../Zotlabs/Module/Setup.php:484 -msgid "" -"Error: the \"openssl_pkey_new\" function on this system is not able to " -"generate encryption keys" -msgstr "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado." +#: ../../Zotlabs/Module/Common.php:14 +msgid "No channel." +msgstr "Ningún canal." -#: ../../Zotlabs/Module/Setup.php:485 -msgid "" -"If running under Windows, please see " -"\"http://www.php.net/manual/en/openssl.installation.php\"." -msgstr "Si está en un servidor Windows, por favor, lea \"http://www.php.net/manual/en/openssl.installation.php\"." +#: ../../Zotlabs/Module/Common.php:43 +msgid "Common connections" +msgstr "Conexiones comunes" -#: ../../Zotlabs/Module/Setup.php:488 -msgid "Generate encryption keys" -msgstr "Generar claves de cifrado" +#: ../../Zotlabs/Module/Common.php:48 +msgid "No connections in common." +msgstr "Ninguna conexión en común." -#: ../../Zotlabs/Module/Setup.php:505 -msgid "libCurl PHP module" -msgstr "módulo libCurl PHP" +#: ../../Zotlabs/Module/Viewconnections.php:65 +msgid "No connections." +msgstr "Sin conexiones." -#: ../../Zotlabs/Module/Setup.php:506 -msgid "GD graphics PHP module" -msgstr "módulo PHP GD graphics" +#: ../../Zotlabs/Module/Viewconnections.php:78 +#, php-format +msgid "Visit %s's profile [%s]" +msgstr "Visitar el perfil de %s [%s]" -#: ../../Zotlabs/Module/Setup.php:507 -msgid "OpenSSL PHP module" -msgstr "módulo PHP OpenSSL" +#: ../../Zotlabs/Module/Viewconnections.php:107 +msgid "View Connections" +msgstr "Ver conexiones" -#: ../../Zotlabs/Module/Setup.php:508 -msgid "PDO database PHP module" -msgstr "Módulo PHP de la base de datos PDO " +#: ../../Zotlabs/Module/Admin.php:94 +msgid "# Accounts" +msgstr "# Cuentas" -#: ../../Zotlabs/Module/Setup.php:509 -msgid "mb_string PHP module" -msgstr "módulo PHP mb_string" +#: ../../Zotlabs/Module/Admin.php:95 +msgid "# blocked accounts" +msgstr "# cuentas bloqueadas" -#: ../../Zotlabs/Module/Setup.php:510 -msgid "xml PHP module" -msgstr "módulo PHP xml" +#: ../../Zotlabs/Module/Admin.php:96 +msgid "# expired accounts" +msgstr "# cuentas caducadas" -#: ../../Zotlabs/Module/Setup.php:514 ../../Zotlabs/Module/Setup.php:516 -msgid "Apache mod_rewrite module" -msgstr "módulo Apache mod_rewrite " +#: ../../Zotlabs/Module/Admin.php:97 +msgid "# expiring accounts" +msgstr "# cuentas que caducan" -#: ../../Zotlabs/Module/Setup.php:514 -msgid "" -"Error: Apache webserver mod-rewrite module is required but not installed." -msgstr "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado." +#: ../../Zotlabs/Module/Admin.php:108 +msgid "# Channels" +msgstr "# Canales" -#: ../../Zotlabs/Module/Setup.php:520 ../../Zotlabs/Module/Setup.php:523 -msgid "exec" -msgstr "ejecutable" +#: ../../Zotlabs/Module/Admin.php:109 +msgid "# primary" +msgstr "# primario" -#: ../../Zotlabs/Module/Setup.php:520 -msgid "" -"Error: exec is required but is either not installed or has been disabled in " -"php.ini" -msgstr "Error: se necesita un ejecutable pero o no se instaló o está deshabilitado en php.ini" +#: ../../Zotlabs/Module/Admin.php:110 +msgid "# clones" +msgstr "# clones" -#: ../../Zotlabs/Module/Setup.php:526 ../../Zotlabs/Module/Setup.php:529 -msgid "shell_exec" -msgstr "shell_exec" +#: ../../Zotlabs/Module/Admin.php:116 +msgid "Message queues" +msgstr "Mensajes en cola" -#: ../../Zotlabs/Module/Setup.php:526 -msgid "" -"Error: shell_exec is required but is either not installed or has been " -"disabled in php.ini" -msgstr "Error: se necesita shell_exec pero o no se instaló o está deshabilitado en php.ini" +#: ../../Zotlabs/Module/Admin.php:133 +msgid "Your software should be updated" +msgstr "Debe actualizar su software" -#: ../../Zotlabs/Module/Setup.php:534 -msgid "Error: libCURL PHP module required but not installed." -msgstr "Error: se necesita el módulo PHP libCURL pero no está instalado." +#: ../../Zotlabs/Module/Admin.php:138 +msgid "Summary" +msgstr "Sumario" -#: ../../Zotlabs/Module/Setup.php:538 -msgid "" -"Error: GD graphics PHP module with JPEG support required but not installed." -msgstr "Error: el módulo PHP GD graphics es necesario, pero no está instalado." +#: ../../Zotlabs/Module/Admin.php:141 +msgid "Registered accounts" +msgstr "Cuentas registradas" -#: ../../Zotlabs/Module/Setup.php:542 -msgid "Error: openssl PHP module required but not installed." -msgstr "Error: el módulo PHP openssl es necesario, pero no está instalado." +#: ../../Zotlabs/Module/Admin.php:142 +msgid "Pending registrations" +msgstr "Registros pendientes" -#: ../../Zotlabs/Module/Setup.php:546 -msgid "Error: PDO database PHP module required but not installed." -msgstr "Error: se necesita el módulo PHP de la base de datos PDO, pero no está instalado." +#: ../../Zotlabs/Module/Admin.php:143 +msgid "Registered channels" +msgstr "Canales registrados" -#: ../../Zotlabs/Module/Setup.php:550 -msgid "Error: mb_string PHP module required but not installed." -msgstr "Error: el módulo PHP mb_string es necesario, pero no está instalado." +#: ../../Zotlabs/Module/Admin.php:144 +msgid "Active plugins" +msgstr "Extensiones (plugins) activas" -#: ../../Zotlabs/Module/Setup.php:554 -msgid "Error: xml PHP module required for DAV but not installed." -msgstr "Error: el módulo PHP xml es necesario para DAV, pero no está instalado." +#: ../../Zotlabs/Module/Admin.php:145 +msgid "Version" +msgstr "Versión" -#: ../../Zotlabs/Module/Setup.php:572 -msgid "" -"The web installer needs to be able to create a file called \".htconfig.php\"" -" in the top folder of your web server and it is unable to do so." -msgstr "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor." +#: ../../Zotlabs/Module/Admin.php:146 +msgid "Repository version (master)" +msgstr "Versión del repositorio (master)" -#: ../../Zotlabs/Module/Setup.php:573 -msgid "" -"This is most often a permission setting, as the web server may not be able " -"to write files in your folder - even if you can." -msgstr "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos." +#: ../../Zotlabs/Module/Admin.php:147 +msgid "Repository version (dev)" +msgstr "Versión del repositorio (dev)" -#: ../../Zotlabs/Module/Setup.php:574 -msgid "" -"At the end of this procedure, we will give you a text to save in a file " -"named .htconfig.php in your Red top folder." -msgstr "Al término de este procedimiento, podemos crear un fichero de texto para guardar con el nombre .htconfig.php en el directorio raíz de su instalación de Hubzilla." +#: ../../Zotlabs/Module/Service_limits.php:23 +msgid "No service class restrictions found." +msgstr "No se han encontrado restricciones sobre esta clase de servicio." -#: ../../Zotlabs/Module/Setup.php:575 -msgid "" -"You can alternatively skip this procedure and perform a manual installation." -" Please see the file \"install/INSTALL.txt\" for instructions." -msgstr "Como alternativa, puede dejar este procedimiento e intentar realizar una instalación manual. Lea, por favor, el fichero\"install/INSTALL.txt\" para las instrucciones." +#: ../../Zotlabs/Module/Rate.php:156 +msgid "Website:" +msgstr "Sitio web:" -#: ../../Zotlabs/Module/Setup.php:578 -msgid ".htconfig.php is writable" -msgstr ".htconfig.php tiene permisos de escritura" +#: ../../Zotlabs/Module/Rate.php:159 +#, php-format +msgid "Remote Channel [%s] (not yet known on this site)" +msgstr "Canal remoto [%s] (aún no es conocido en este sitio)" -#: ../../Zotlabs/Module/Setup.php:592 -msgid "" -"This software uses the Smarty3 template engine to render its web views. " -"Smarty3 compiles templates to PHP to speed up rendering." -msgstr "Este software hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 compila las plantillas a PHP para acelerar la renderización." +#: ../../Zotlabs/Module/Rate.php:160 +msgid "Rating (this information is public)" +msgstr "Valoración (esta información es pública)" -#: ../../Zotlabs/Module/Setup.php:593 -#, php-format -msgid "" -"In order to store these compiled templates, the web server needs to have " -"write access to the directory %s under the top level web folder." -msgstr "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal." +#: ../../Zotlabs/Module/Rate.php:161 +msgid "Optionally explain your rating (this information is public)" +msgstr "Opcionalmente puede explicar su valoración (esta información es pública)" -#: ../../Zotlabs/Module/Setup.php:594 ../../Zotlabs/Module/Setup.php:615 -msgid "" -"Please ensure that the user that your web server runs as (e.g. www-data) has" -" write access to this folder." -msgstr "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data)." +#: ../../Zotlabs/Module/Lostpass.php:19 +msgid "No valid account found." +msgstr "No se ha encontrado una cuenta válida." -#: ../../Zotlabs/Module/Setup.php:595 +#: ../../Zotlabs/Module/Lostpass.php:33 +msgid "Password reset request issued. Check your email." +msgstr "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico." + +#: ../../Zotlabs/Module/Lostpass.php:39 ../../Zotlabs/Module/Lostpass.php:108 #, php-format -msgid "" -"Note: as a security measure, you should give the web server write access to " -"%s only--not the template files (.tpl) that it contains." -msgstr "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene." +msgid "Site Member (%s)" +msgstr "Usuario del sitio (%s)" -#: ../../Zotlabs/Module/Setup.php:598 +#: ../../Zotlabs/Module/Lostpass.php:44 ../../Zotlabs/Module/Lostpass.php:49 #, php-format -msgid "%s is writable" -msgstr "%s tiene permisos de escritura" +msgid "Password reset requested at %s" +msgstr "Se ha solicitado restablecer la contraseña en %s" -#: ../../Zotlabs/Module/Setup.php:614 +#: ../../Zotlabs/Module/Lostpass.php:68 msgid "" -"This software uses the store directory to save uploaded files. The web " -"server needs to have write access to the store directory under the top level" -" web folder" -msgstr "Este software utiliza el directorio de almacenamiento para guardar los ficheros subidos. El servidor web debe tener acceso de escritura a este directorio en la carpeta de nivel superior" - -#: ../../Zotlabs/Module/Setup.php:618 -msgid "store is writable" -msgstr "\"store\" tiene permisos de escritura" +"Request could not be verified. (You may have previously submitted it.) " +"Password reset failed." +msgstr "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado." -#: ../../Zotlabs/Module/Setup.php:651 -msgid "" -"SSL certificate cannot be validated. Fix certificate or disable https access" -" to this site." -msgstr "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio." +#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1639 +msgid "Password Reset" +msgstr "Restablecer la contraseña" -#: ../../Zotlabs/Module/Setup.php:652 -msgid "" -"If you have https access to your website or allow connections to TCP port " -"443 (the https: port), you MUST use a browser-valid certificate. You MUST " -"NOT use self-signed certificates!" -msgstr "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo." +#: ../../Zotlabs/Module/Lostpass.php:92 +msgid "Your password has been reset as requested." +msgstr "Su contraseña ha sido restablecida según lo solicitó." -#: ../../Zotlabs/Module/Setup.php:653 -msgid "" -"This restriction is incorporated because public posts from you may for " -"example contain references to images on your own hub." -msgstr "Se ha incorporado esta restricción para evitar que sus entradas públicas hagan referencia a imágenes en su propio servidor." +#: ../../Zotlabs/Module/Lostpass.php:93 +msgid "Your new password is" +msgstr "Su nueva contraseña es" -#: ../../Zotlabs/Module/Setup.php:654 -msgid "" -"If your certificate is not recognized, members of other sites (who may " -"themselves have valid certificates) will get a warning message on their own " -"site complaining about security issues." -msgstr "Si su certificado no ha sido reconocido, los miembros de otros sitios (con certificados válidos) recibirán mensajes de aviso en sus propios sitios web." +#: ../../Zotlabs/Module/Lostpass.php:94 +msgid "Save or copy your new password - and then" +msgstr "Guarde o copie su nueva contraseña - y después" -#: ../../Zotlabs/Module/Setup.php:655 -msgid "" -"This can cause usability issues elsewhere (not just on your own site) so we " -"must insist on this requirement." -msgstr "Por razones de compatibilidad (sobre el conjunto de la red, no solo sobre su propio sitio), debemos insistir en estos requisitos." +#: ../../Zotlabs/Module/Lostpass.php:95 +msgid "click here to login" +msgstr "pulse aquí para conectarse" -#: ../../Zotlabs/Module/Setup.php:656 +#: ../../Zotlabs/Module/Lostpass.php:96 msgid "" -"Providers are available that issue free certificates which are browser-" -"valid." -msgstr "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos." +"Your password may be changed from the <em>Settings</em> page after " +"successful login." +msgstr "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión." -#: ../../Zotlabs/Module/Setup.php:658 -msgid "" -"If you are confident that the certificate is valid and signed by a trusted " -"authority, check to see if you have failed to install an intermediate cert. " -"These are not normally required by browsers, but are required for server-to-" -"server communications." -msgstr "Si se tiene la certeza de que el certificado es válido y está firmado por una autoridad de confianza, comprobar para ver si hubo un error al instalar un certificado intermedio. Estos no son normalmente requeridos por los navegadores, pero son necesarios para las comunicaciones de servidor a servidor." +#: ../../Zotlabs/Module/Lostpass.php:117 +#, php-format +msgid "Your password has changed at %s" +msgstr "Su contraseña en %s ha sido cambiada" -#: ../../Zotlabs/Module/Setup.php:660 -msgid "SSL certificate validation" -msgstr "validación del certificado SSL" +#: ../../Zotlabs/Module/Lostpass.php:130 +msgid "Forgot your Password?" +msgstr "¿Ha olvidado su contraseña?" -#: ../../Zotlabs/Module/Setup.php:666 +#: ../../Zotlabs/Module/Lostpass.php:131 msgid "" -"Url rewrite in .htaccess is not working. Check your server " -"configuration.Test: " -msgstr "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:" +"Enter your email address and submit to have your password reset. Then check " +"your email for further instructions." +msgstr "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones." -#: ../../Zotlabs/Module/Setup.php:669 -msgid "Url rewrite is working" -msgstr "La reescritura de las direcciones funciona correctamente" +#: ../../Zotlabs/Module/Lostpass.php:132 +msgid "Email Address" +msgstr "Dirección de correo electrónico" -#: ../../Zotlabs/Module/Setup.php:683 -msgid "" -"The database configuration file \".htconfig.php\" could not be written. " -"Please use the enclosed text to create a configuration file in your web " -"server root." -msgstr "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor." +#: ../../Zotlabs/Module/Lostpass.php:133 +msgid "Reset" +msgstr "Reiniciar" -#: ../../Zotlabs/Module/Setup.php:707 -#: ../../extend/addon/addon/cdav/cdav.php:41 -#: ../../extend/addon/addon/rendezvous/rendezvous.php:401 -msgid "Errors encountered creating database tables." -msgstr "Se han encontrado errores al crear las tablas de la base de datos." +#: ../../Zotlabs/Module/Notifications.php:43 ../../include/nav.php:186 +msgid "Mark all system notifications seen" +msgstr "Marcar todas las notificaciones del sistema como leídas" -#: ../../Zotlabs/Module/Setup.php:748 -msgid "<h1>What next</h1>" -msgstr "<h1>Siguiente paso</h1>" +#: ../../Zotlabs/Lib/Apps.php:212 +msgid "Site Admin" +msgstr "Administrador del sitio" -#: ../../Zotlabs/Module/Setup.php:749 -msgid "" -"IMPORTANT: You will need to [manually] setup a scheduled task for the " -"poller." -msgstr "IMPORTANTE: Debe crear [manualmente] una tarea programada para el \"poller\"." +#: ../../Zotlabs/Lib/Apps.php:213 ../../addon/buglink/buglink.php:16 +msgid "Report Bug" +msgstr "Informe de errores" -#: ../../Zotlabs/Module/Viewconnections.php:65 -msgid "No connections." -msgstr "Sin conexiones." +#: ../../Zotlabs/Lib/Apps.php:214 +msgid "View Bookmarks" +msgstr "Ver los marcadores" -#: ../../Zotlabs/Module/Viewconnections.php:78 -#, php-format -msgid "Visit %s's profile [%s]" -msgstr "Visitar el perfil de %s [%s]" +#: ../../Zotlabs/Lib/Apps.php:215 +msgid "My Chatrooms" +msgstr "Mis salas de chat" -#: ../../Zotlabs/Module/Viewconnections.php:107 -msgid "View Connections" -msgstr "Ver conexiones" +#: ../../Zotlabs/Lib/Apps.php:217 +msgid "Firefox Share" +msgstr "Servicio de compartición de Firefox" -#: ../../Zotlabs/Module/Wiki.php:30 -msgid "Profile Unavailable." -msgstr "Perfil no disponible" +#: ../../Zotlabs/Lib/Apps.php:218 +msgid "Remote Diagnostics" +msgstr "Diagnóstico remoto" -#: ../../Zotlabs/Module/Wiki.php:44 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:40 -msgid "Not found" -msgstr "No encontrado" +#: ../../Zotlabs/Lib/Apps.php:219 ../../include/features.php:337 +msgid "Suggest Channels" +msgstr "Sugerir canales" -#: ../../Zotlabs/Module/Wiki.php:68 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:60 -msgid "Invalid channel" -msgstr "Canal no válido" +#: ../../Zotlabs/Lib/Apps.php:220 ../../boot.php:1631 +#: ../../include/nav.php:113 +msgid "Login" +msgstr "Iniciar sesión" -#: ../../Zotlabs/Module/Wiki.php:159 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:144 -#: ../../include/conversation.php:1900 -msgid "Wikis" -msgstr "Wikis" +#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:172 +msgid "Grid" +msgstr "Red" -#: ../../Zotlabs/Module/Wiki.php:165 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:150 -msgid "Download" -msgstr "Descargar" +#: ../../Zotlabs/Lib/Apps.php:226 ../../include/conversation.php:1848 +#: ../../include/features.php:99 +msgid "Wiki" +msgstr "Wiki" -#: ../../Zotlabs/Module/Wiki.php:169 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:154 -msgid "Wiki name" -msgstr "Nombre del wiki" +#: ../../Zotlabs/Lib/Apps.php:227 ../../include/nav.php:176 +msgid "Channel Home" +msgstr "Mi canal" -#: ../../Zotlabs/Module/Wiki.php:170 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:155 -msgid "Content type" -msgstr "Tipo de contenido" +#: ../../Zotlabs/Lib/Apps.php:230 ../../include/conversation.php:1793 +#: ../../include/conversation.php:1796 ../../include/nav.php:196 +msgid "Events" +msgstr "Eventos" -#: ../../Zotlabs/Module/Wiki.php:179 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:164 -msgid "Create a status post for this wiki" -msgstr "Crear un mensaje de estado para este wiki" +#: ../../Zotlabs/Lib/Apps.php:231 +msgid "Directory" +msgstr "Directorio" -#: ../../Zotlabs/Module/Wiki.php:204 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:183 -msgid "Wiki not found" -msgstr "Wiki no encontrado" +#: ../../Zotlabs/Lib/Apps.php:233 ../../include/nav.php:188 +msgid "Mail" +msgstr "Correo" -#: ../../Zotlabs/Module/Wiki.php:228 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:208 -msgid "Rename page" -msgstr "Renombrar la página" +#: ../../Zotlabs/Lib/Apps.php:236 +msgid "Chat" +msgstr "Chat" -#: ../../Zotlabs/Module/Wiki.php:232 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:212 -msgid "Error retrieving page content" -msgstr "Error al recuperar el contenido de la página" +#: ../../Zotlabs/Lib/Apps.php:238 +msgid "Probe" +msgstr "Probar" -#: ../../Zotlabs/Module/Wiki.php:259 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:241 -msgid "Revision Comparison" -msgstr "Comparación de revisiones" +#: ../../Zotlabs/Lib/Apps.php:239 +msgid "Suggest" +msgstr "Sugerir" -#: ../../Zotlabs/Module/Wiki.php:260 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:242 -msgid "Revert" -msgstr "Revertir" +#: ../../Zotlabs/Lib/Apps.php:240 +msgid "Random Channel" +msgstr "Canal aleatorio" -#: ../../Zotlabs/Module/Wiki.php:264 -msgid "Short description of your changes (optional)" -msgstr "Breve descripción de sus cambios (opcional)" +#: ../../Zotlabs/Lib/Apps.php:241 +msgid "Invite" +msgstr "Invitar" -#: ../../Zotlabs/Module/Wiki.php:271 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:251 -msgid "Source" -msgstr "Fuente" +#: ../../Zotlabs/Lib/Apps.php:242 ../../Zotlabs/Widget/Admin.php:26 +msgid "Features" +msgstr "Funcionalidades" -#: ../../Zotlabs/Module/Wiki.php:279 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:259 -msgid "New page name" -msgstr "Nombre de la nueva página" +#: ../../Zotlabs/Lib/Apps.php:243 ../../addon/openid/MysqlProvider.php:69 +msgid "Language" +msgstr "Idioma" -#: ../../Zotlabs/Module/Wiki.php:284 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:264 -#: ../../include/conversation.php:1299 -msgid "Embed image from photo albums" -msgstr "Incluir una imagen de los álbumes de fotos" +#: ../../Zotlabs/Lib/Apps.php:244 +msgid "Post" +msgstr "Publicación" -#: ../../Zotlabs/Module/Wiki.php:285 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:265 -#: ../../include/conversation.php:1393 -msgid "Embed an image from your albums" -msgstr "Incluir una imagen de sus álbumes" +#: ../../Zotlabs/Lib/Apps.php:245 ../../addon/openid/MysqlProvider.php:58 +#: ../../addon/openid/MysqlProvider.php:59 +#: ../../addon/openid/MysqlProvider.php:60 +msgid "Profile Photo" +msgstr "Foto del perfil" -#: ../../Zotlabs/Module/Wiki.php:287 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:267 -#: ../../include/conversation.php:1395 ../../include/conversation.php:1442 -msgid "OK" -msgstr "OK" +#: ../../Zotlabs/Lib/Apps.php:355 +msgid "Purchase" +msgstr "Comprar" -#: ../../Zotlabs/Module/Wiki.php:288 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:268 -#: ../../include/conversation.php:1335 -msgid "Choose images to embed" -msgstr "Elegir imágenes para incluir" +#: ../../Zotlabs/Lib/Apps.php:359 +msgid "Undelete" +msgstr "Recuperar" -#: ../../Zotlabs/Module/Wiki.php:289 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:269 -#: ../../include/conversation.php:1336 -msgid "Choose an album" -msgstr "Elegir un álbum" +#: ../../Zotlabs/Lib/Apps.php:364 +msgid "Add to app-tray" +msgstr "Añadir a la bandeja de aplicaciones" -#: ../../Zotlabs/Module/Wiki.php:290 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:270 -msgid "Choose a different album" -msgstr "Elegir un álbum diferente..." +#: ../../Zotlabs/Lib/Apps.php:365 +msgid "Remove from app-tray" +msgstr "Quitar de la bandeja de aplicaciones" -#: ../../Zotlabs/Module/Wiki.php:291 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:271 -#: ../../include/conversation.php:1338 -msgid "Error getting album list" -msgstr "Error al obtener la lista de álbumes" +#: ../../Zotlabs/Lib/Permcat.php:58 +msgctxt "permcat" +msgid "default" +msgstr "por defecto" -#: ../../Zotlabs/Module/Wiki.php:292 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:272 -#: ../../include/conversation.php:1339 -msgid "Error getting photo link" -msgstr "Error al obtener el enlace de la foto" +#: ../../Zotlabs/Lib/Permcat.php:96 +msgctxt "permcat" +msgid "follower" +msgstr "seguidor" -#: ../../Zotlabs/Module/Wiki.php:293 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:273 -#: ../../include/conversation.php:1340 -msgid "Error getting album" -msgstr "Error al obtener el álbum" +#: ../../Zotlabs/Lib/Permcat.php:100 +msgctxt "permcat" +msgid "contributor" +msgstr "contribuidor" -#: ../../Zotlabs/Module/Wiki.php:357 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:337 -msgid "Error creating wiki. Invalid name." -msgstr "Error al crear el wiki: el nombre no es válido." +#: ../../Zotlabs/Lib/Permcat.php:104 +msgctxt "permcat" +msgid "publisher" +msgstr "editor" -#: ../../Zotlabs/Module/Wiki.php:369 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:348 -msgid "Wiki created, but error creating Home page." -msgstr "Se ha creado el wiki, pero se ha producido un error al crear la página de inicio." +#: ../../Zotlabs/Lib/NativeWikiPage.php:31 +#: ../../Zotlabs/Lib/NativeWikiPage.php:72 +msgid "(No Title)" +msgstr "(Sin título)" -#: ../../Zotlabs/Module/Wiki.php:376 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:353 -msgid "Error creating wiki" -msgstr "Error al crear el wiki" +#: ../../Zotlabs/Lib/NativeWikiPage.php:86 +msgid "Wiki page create failed." +msgstr "Se ha producido un error en la creación de la página wiki." -#: ../../Zotlabs/Module/Wiki.php:388 -msgid "Wiki delete permission denied." -msgstr "Se ha denegado el permiso para eliminar el wiki." +#: ../../Zotlabs/Lib/NativeWikiPage.php:99 +msgid "Wiki not found." +msgstr "No se ha encontrado el wiki." -#: ../../Zotlabs/Module/Wiki.php:398 -msgid "Error deleting wiki" -msgstr "Se ha producido un error al eliminar el wiki" +#: ../../Zotlabs/Lib/NativeWikiPage.php:110 +msgid "Destination name already exists" +msgstr "El nombre de destino ya existe" -#: ../../Zotlabs/Module/Wiki.php:424 -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:400 -msgid "New page created" -msgstr "Se ha creado la nueva página" +#: ../../Zotlabs/Lib/NativeWikiPage.php:136 +#: ../../Zotlabs/Lib/NativeWikiPage.php:331 +msgid "Page not found" +msgstr "No se ha encontrado la página" -#: ../../Zotlabs/Module/Wiki.php:539 -msgid "Cannot delete Home" -msgstr "No se puede eliminar la página principal" +#: ../../Zotlabs/Lib/NativeWikiPage.php:166 +msgid "Error reading page content" +msgstr "Se ha producido un error al leer el contenido de la página" -#: ../../Zotlabs/Module/Wiki.php:603 -msgid "Current Revision" -msgstr "Revisión actual" +#: ../../Zotlabs/Lib/NativeWikiPage.php:322 +#: ../../Zotlabs/Lib/NativeWikiPage.php:370 +#: ../../Zotlabs/Lib/NativeWikiPage.php:437 +#: ../../Zotlabs/Lib/NativeWikiPage.php:478 +msgid "Error reading wiki" +msgstr "Se ha producido un error al leer el wiki" -#: ../../Zotlabs/Module/Wiki.php:603 -msgid "Selected Revision" -msgstr "Revisión seleccionada" +#: ../../Zotlabs/Lib/NativeWikiPage.php:358 +msgid "Page update failed." +msgstr "Se ha producido un error al actualizar la página." -#: ../../Zotlabs/Module/Wiki.php:653 -msgid "You must be authenticated." -msgstr "Debe estar autenticado." +#: ../../Zotlabs/Lib/NativeWikiPage.php:392 +msgid "Nothing deleted" +msgstr "No se ha eliminado nada" -#: ../../Zotlabs/Module/Chat.php:179 -msgid "Room not found" -msgstr "Sala no encontrada" +#: ../../Zotlabs/Lib/NativeWikiPage.php:458 +msgid "Compare: object not found." +msgstr "No se ha encontrado un objeto para comparar." -#: ../../Zotlabs/Module/Chat.php:195 -msgid "Leave Room" -msgstr "Abandonar la sala" +#: ../../Zotlabs/Lib/NativeWikiPage.php:464 +msgid "Page updated" +msgstr "Se ha actualizado la página" -#: ../../Zotlabs/Module/Chat.php:196 -msgid "Delete Room" -msgstr "Eliminar esta sala" +#: ../../Zotlabs/Lib/NativeWikiPage.php:467 +msgid "Untitled" +msgstr "Sin título" -#: ../../Zotlabs/Module/Chat.php:197 -msgid "I am away right now" -msgstr "Estoy ausente momentáneamente" +#: ../../Zotlabs/Lib/NativeWikiPage.php:473 +msgid "Wiki resource_id required for git commit" +msgstr "Se necesita Wiki resource_id para el git commit" -#: ../../Zotlabs/Module/Chat.php:198 -msgid "I am online" -msgstr "Estoy conectado/a" +#: ../../Zotlabs/Lib/NativeWikiPage.php:529 +#: ../../Zotlabs/Widget/Wiki_page_history.php:23 +msgctxt "wiki_history" +msgid "Message" +msgstr "Mensaje" -#: ../../Zotlabs/Module/Chat.php:200 -msgid "Bookmark this room" -msgstr "Añadir esta sala a Marcadores" +#: ../../Zotlabs/Lib/NativeWikiPage.php:567 +#: ../../addon/gitwiki/gitwiki_backend.php:579 ../../include/bbcode.php:610 +#: ../../include/bbcode.php:756 +msgid "Different viewers will see this text differently" +msgstr "Visitantes diferentes verán este texto de forma distinta" -#: ../../Zotlabs/Module/Chat.php:229 -msgid "New Chatroom" -msgstr "Nueva sala de chat" +#: ../../Zotlabs/Lib/PermissionDescription.php:34 +#: ../../include/acl_selectors.php:128 +msgid "Visible to your default audience" +msgstr "Visible para su público predeterminado." -#: ../../Zotlabs/Module/Chat.php:230 -msgid "Chatroom name" -msgstr "Nombre de la sala de chat" +#: ../../Zotlabs/Lib/PermissionDescription.php:107 +#: ../../include/acl_selectors.php:201 +msgid "Only me" +msgstr "Sólo yo" -#: ../../Zotlabs/Module/Chat.php:231 -msgid "Expiration of chats (minutes)" -msgstr "Caducidad de los mensajes en los chats (en minutos)" +#: ../../Zotlabs/Lib/PermissionDescription.php:108 +msgid "Public" +msgstr "Público" + +#: ../../Zotlabs/Lib/PermissionDescription.php:109 +msgid "Anybody in the $Projectname network" +msgstr "Cualquiera en la red $Projectname" -#: ../../Zotlabs/Module/Chat.php:247 +#: ../../Zotlabs/Lib/PermissionDescription.php:110 #, php-format -msgid "%1$s's Chatrooms" -msgstr "Salas de chat de %1$s" +msgid "Any account on %s" +msgstr "Cualquier cuenta en %s" -#: ../../Zotlabs/Module/Chat.php:252 -msgid "No chatrooms available" -msgstr "No hay salas de chat disponibles" +#: ../../Zotlabs/Lib/PermissionDescription.php:111 +msgid "Any of my connections" +msgstr "Cualquiera de mis conexiones" -#: ../../Zotlabs/Module/Chat.php:256 -msgid "Expiration" -msgstr "Caducidad" +#: ../../Zotlabs/Lib/PermissionDescription.php:112 +msgid "Only connections I specifically allow" +msgstr "Sólo las conexiones que yo permita de forma explícita" -#: ../../Zotlabs/Module/Chat.php:257 -msgid "min" -msgstr "min" +#: ../../Zotlabs/Lib/PermissionDescription.php:113 +msgid "Anybody authenticated (could include visitors from other networks)" +msgstr "Cualquiera que esté autenticado (podría incluir a los visitantes de otras redes)" -#: ../../Zotlabs/Module/Xchan.php:10 -msgid "Xchan Lookup" -msgstr "Búsqueda de canales" +#: ../../Zotlabs/Lib/PermissionDescription.php:114 +msgid "Any connections including those who haven't yet been approved" +msgstr "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas" -#: ../../Zotlabs/Module/Xchan.php:13 -msgid "Lookup xchan beginning with (or webbie): " -msgstr "Buscar un canal (o un \"webbie\") que comience por:" +#: ../../Zotlabs/Lib/PermissionDescription.php:150 +msgid "" +"This is your default setting for the audience of your normal stream, and " +"posts." +msgstr "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones." + +#: ../../Zotlabs/Lib/PermissionDescription.php:151 +msgid "" +"This is your default setting for who can view your default channel profile" +msgstr "Esta es su configuración por defecto para establecer quién puede ver su perfil del canal predeterminado" + +#: ../../Zotlabs/Lib/PermissionDescription.php:152 +msgid "This is your default setting for who can view your connections" +msgstr "Este es su ajuste predeterminado para establecer quién puede ver sus conexiones" + +#: ../../Zotlabs/Lib/PermissionDescription.php:153 +msgid "" +"This is your default setting for who can view your file storage and photos" +msgstr "Este es su ajuste predeterminado para establecer quién puede ver su repositorio de ficheros y sus fotos" + +#: ../../Zotlabs/Lib/PermissionDescription.php:154 +msgid "This is your default setting for the audience of your webpages" +msgstr "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web" #: ../../Zotlabs/Lib/Chatroom.php:27 msgid "Missing room name" @@ -7271,9 +7329,8 @@ msgstr "La sala está llena." msgid "$Projectname Notification" msgstr "Notificación de $Projectname" -#: ../../Zotlabs/Lib/Enotify.php:61 ../../extend/addon/addon/diaspora/p.php:46 -#: ../../extend/addon/addon/diaspora/util.php:218 -#: ../../extend/addon/addon/diaspora/util.php:231 +#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:218 +#: ../../addon/diaspora/util.php:231 ../../addon/diaspora/p.php:46 #: ../../include/network.php:1948 msgid "$projectname" msgstr "$projectname" @@ -7490,275 +7547,139 @@ msgstr "ha creado una nueva entrada" msgid "commented on %s's post" msgstr "ha comentado la entrada de %s" -#: ../../Zotlabs/Lib/PermissionDescription.php:34 -#: ../../include/acl_selectors.php:128 -msgid "Visible to your default audience" -msgstr "Visible para su público predeterminado." - -#: ../../Zotlabs/Lib/PermissionDescription.php:107 -#: ../../include/acl_selectors.php:201 -msgid "Only me" -msgstr "Sólo yo" - -#: ../../Zotlabs/Lib/PermissionDescription.php:108 -msgid "Public" -msgstr "Público" - -#: ../../Zotlabs/Lib/PermissionDescription.php:109 -msgid "Anybody in the $Projectname network" -msgstr "Cualquiera en la red $Projectname" +#: ../../Zotlabs/Lib/NativeWiki.php:128 +msgid "Wiki files deleted successfully" +msgstr "Se han borrado con éxito los ficheros del wiki" -#: ../../Zotlabs/Lib/PermissionDescription.php:110 +#: ../../Zotlabs/Lib/DB_Upgrade.php:93 #, php-format -msgid "Any account on %s" -msgstr "Cualquier cuenta en %s" - -#: ../../Zotlabs/Lib/PermissionDescription.php:111 -msgid "Any of my connections" -msgstr "Cualquiera de mis conexiones" - -#: ../../Zotlabs/Lib/PermissionDescription.php:112 -msgid "Only connections I specifically allow" -msgstr "Sólo las conexiones que yo permita de forma explícita" - -#: ../../Zotlabs/Lib/PermissionDescription.php:113 -msgid "Anybody authenticated (could include visitors from other networks)" -msgstr "Cualquiera que esté autenticado (podría incluir a los visitantes de otras redes)" - -#: ../../Zotlabs/Lib/PermissionDescription.php:114 -msgid "Any connections including those who haven't yet been approved" -msgstr "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas" - -#: ../../Zotlabs/Lib/PermissionDescription.php:150 -msgid "" -"This is your default setting for the audience of your normal stream, and " -"posts." -msgstr "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones." - -#: ../../Zotlabs/Lib/PermissionDescription.php:151 -msgid "" -"This is your default setting for who can view your default channel profile" -msgstr "Esta es su configuración por defecto para establecer quién puede ver su perfil del canal predeterminado" - -#: ../../Zotlabs/Lib/PermissionDescription.php:152 -msgid "This is your default setting for who can view your connections" -msgstr "Este es su ajuste predeterminado para establecer quién puede ver sus conexiones" - -#: ../../Zotlabs/Lib/PermissionDescription.php:153 -msgid "" -"This is your default setting for who can view your file storage and photos" -msgstr "Este es su ajuste predeterminado para establecer quién puede ver su repositorio de ficheros y sus fotos" - -#: ../../Zotlabs/Lib/PermissionDescription.php:154 -msgid "This is your default setting for the audience of your webpages" -msgstr "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:31 -#: ../../Zotlabs/Lib/NativeWikiPage.php:70 -msgid "(No Title)" -msgstr "(Sin título)" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:84 -msgid "Wiki page create failed." -msgstr "Se ha producido un error en la creación de la página wiki." - -#: ../../Zotlabs/Lib/NativeWikiPage.php:97 -msgid "Wiki not found." -msgstr "No se ha encontrado el wiki." - -#: ../../Zotlabs/Lib/NativeWikiPage.php:108 -msgid "Destination name already exists" -msgstr "El nombre de destino ya existe" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:134 -#: ../../Zotlabs/Lib/NativeWikiPage.php:361 -msgid "Page not found" -msgstr "No se ha encontrado la página" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:164 -msgid "Error reading page content" -msgstr "Se ha producido un error al leer el contenido de la página" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:346 -#: ../../Zotlabs/Lib/NativeWikiPage.php:399 -#: ../../Zotlabs/Lib/NativeWikiPage.php:466 -#: ../../Zotlabs/Lib/NativeWikiPage.php:507 -msgid "Error reading wiki" -msgstr "Se ha producido un error al leer el wiki" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:387 -msgid "Page update failed." -msgstr "Se ha producido un error al actualizar la página." - -#: ../../Zotlabs/Lib/NativeWikiPage.php:421 -msgid "Nothing deleted" -msgstr "No se ha eliminado nada" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:487 -msgid "Compare: object not found." -msgstr "No se ha encontrado un objeto para comparar." - -#: ../../Zotlabs/Lib/NativeWikiPage.php:493 -msgid "Page updated" -msgstr "Se ha actualizado la página" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:496 -msgid "Untitled" -msgstr "Sin título" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:502 -msgid "Wiki resource_id required for git commit" -msgstr "Se necesita Wiki resource_id para el git commit" - -#: ../../Zotlabs/Lib/NativeWikiPage.php:573 -#: ../../extend/addon/addon/gitwiki/gitwiki_backend.php:579 -#: ../../include/bbcode.php:610 ../../include/bbcode.php:756 -msgid "Different viewers will see this text differently" -msgstr "Visitantes diferentes verán este texto de forma distinta" - -#: ../../Zotlabs/Lib/Permcat.php:58 -msgctxt "permcat" -msgid "default" -msgstr "por defecto" - -#: ../../Zotlabs/Lib/Permcat.php:96 -msgctxt "permcat" -msgid "follower" -msgstr "seguidor" - -#: ../../Zotlabs/Lib/Permcat.php:100 -msgctxt "permcat" -msgid "contributor" -msgstr "contribuidor" +msgid "Update Error at %s" +msgstr "Error de actualización en %s" -#: ../../Zotlabs/Lib/Permcat.php:104 -msgctxt "permcat" -msgid "publisher" -msgstr "editor" +#: ../../Zotlabs/Lib/DB_Upgrade.php:99 +#, php-format +msgid "Update %s failed. See error logs." +msgstr "La actualización %s ha fallado. Mire el informe de errores." -#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:663 +#: ../../Zotlabs/Lib/ThreadItem.php:96 ../../include/conversation.php:661 msgid "Private Message" msgstr "Mensaje Privado" -#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:655 +#: ../../Zotlabs/Lib/ThreadItem.php:133 ../../include/conversation.php:653 msgid "Select" msgstr "Seleccionar" -#: ../../Zotlabs/Lib/ThreadItem.php:136 -msgid "Save to Folder" -msgstr "Guardar en carpeta" - -#: ../../Zotlabs/Lib/ThreadItem.php:157 +#: ../../Zotlabs/Lib/ThreadItem.php:158 msgid "I will attend" msgstr "Participaré" -#: ../../Zotlabs/Lib/ThreadItem.php:157 +#: ../../Zotlabs/Lib/ThreadItem.php:158 msgid "I will not attend" msgstr "No participaré" -#: ../../Zotlabs/Lib/ThreadItem.php:157 +#: ../../Zotlabs/Lib/ThreadItem.php:158 msgid "I might attend" msgstr "Quizá participe" -#: ../../Zotlabs/Lib/ThreadItem.php:167 +#: ../../Zotlabs/Lib/ThreadItem.php:168 msgid "I agree" msgstr "Estoy de acuerdo" -#: ../../Zotlabs/Lib/ThreadItem.php:167 +#: ../../Zotlabs/Lib/ThreadItem.php:168 msgid "I disagree" msgstr "No estoy de acuerdo" -#: ../../Zotlabs/Lib/ThreadItem.php:167 +#: ../../Zotlabs/Lib/ThreadItem.php:168 msgid "I abstain" msgstr "Me abstengo" -#: ../../Zotlabs/Lib/ThreadItem.php:223 +#: ../../Zotlabs/Lib/ThreadItem.php:224 msgid "Add Star" msgstr "Destacar añadiendo una estrella" -#: ../../Zotlabs/Lib/ThreadItem.php:224 +#: ../../Zotlabs/Lib/ThreadItem.php:225 msgid "Remove Star" msgstr "Eliminar estrella" -#: ../../Zotlabs/Lib/ThreadItem.php:225 +#: ../../Zotlabs/Lib/ThreadItem.php:226 msgid "Toggle Star Status" msgstr "Activar o desactivar el estado de entrada preferida" -#: ../../Zotlabs/Lib/ThreadItem.php:229 +#: ../../Zotlabs/Lib/ThreadItem.php:230 msgid "starred" msgstr "preferidas" -#: ../../Zotlabs/Lib/ThreadItem.php:239 ../../include/conversation.php:670 +#: ../../Zotlabs/Lib/ThreadItem.php:240 ../../include/conversation.php:668 msgid "Message signature validated" msgstr "Firma de mensaje validada" -#: ../../Zotlabs/Lib/ThreadItem.php:240 ../../include/conversation.php:671 +#: ../../Zotlabs/Lib/ThreadItem.php:241 ../../include/conversation.php:669 msgid "Message signature incorrect" msgstr "Firma de mensaje incorrecta" -#: ../../Zotlabs/Lib/ThreadItem.php:248 +#: ../../Zotlabs/Lib/ThreadItem.php:249 msgid "Add Tag" msgstr "Añadir etiqueta" -#: ../../Zotlabs/Lib/ThreadItem.php:268 ../../include/taxonomy.php:316 +#: ../../Zotlabs/Lib/ThreadItem.php:269 ../../include/taxonomy.php:316 msgid "like" msgstr "me gusta" -#: ../../Zotlabs/Lib/ThreadItem.php:269 ../../include/taxonomy.php:317 +#: ../../Zotlabs/Lib/ThreadItem.php:270 ../../include/taxonomy.php:317 msgid "dislike" msgstr "no me gusta" -#: ../../Zotlabs/Lib/ThreadItem.php:273 +#: ../../Zotlabs/Lib/ThreadItem.php:274 msgid "Share This" msgstr "Compartir esto" -#: ../../Zotlabs/Lib/ThreadItem.php:273 +#: ../../Zotlabs/Lib/ThreadItem.php:274 msgid "share" msgstr "compartir" -#: ../../Zotlabs/Lib/ThreadItem.php:282 +#: ../../Zotlabs/Lib/ThreadItem.php:283 msgid "Delivery Report" msgstr "Informe de transmisión" -#: ../../Zotlabs/Lib/ThreadItem.php:300 +#: ../../Zotlabs/Lib/ThreadItem.php:301 #, php-format msgid "%d comment" msgid_plural "%d comments" msgstr[0] "%d comentario" msgstr[1] "%d comentarios" -#: ../../Zotlabs/Lib/ThreadItem.php:329 ../../Zotlabs/Lib/ThreadItem.php:330 +#: ../../Zotlabs/Lib/ThreadItem.php:330 ../../Zotlabs/Lib/ThreadItem.php:331 #, php-format msgid "View %s's profile - %s" msgstr "Ver el perfil de %s - %s" -#: ../../Zotlabs/Lib/ThreadItem.php:333 +#: ../../Zotlabs/Lib/ThreadItem.php:334 msgid "to" msgstr "a" -#: ../../Zotlabs/Lib/ThreadItem.php:334 +#: ../../Zotlabs/Lib/ThreadItem.php:335 msgid "via" msgstr "mediante" -#: ../../Zotlabs/Lib/ThreadItem.php:335 +#: ../../Zotlabs/Lib/ThreadItem.php:336 msgid "Wall-to-Wall" msgstr "De página del perfil a página del perfil (de \"muro\" a \"muro\")" -#: ../../Zotlabs/Lib/ThreadItem.php:336 +#: ../../Zotlabs/Lib/ThreadItem.php:337 msgid "via Wall-To-Wall:" msgstr "Mediante el procedimiento página del perfil a página del perfil (de \"muro\" a \"muro\")" -#: ../../Zotlabs/Lib/ThreadItem.php:350 ../../include/conversation.php:717 +#: ../../Zotlabs/Lib/ThreadItem.php:350 ../../include/conversation.php:718 #, php-format msgid "from %s" msgstr "desde %s" -#: ../../Zotlabs/Lib/ThreadItem.php:353 ../../include/conversation.php:720 +#: ../../Zotlabs/Lib/ThreadItem.php:353 ../../include/conversation.php:721 #, php-format msgid "last edited: %s" msgstr "último cambio: %s" -#: ../../Zotlabs/Lib/ThreadItem.php:354 ../../include/conversation.php:721 +#: ../../Zotlabs/Lib/ThreadItem.php:354 ../../include/conversation.php:722 #, php-format msgid "Expires: %s" msgstr "Caduca: %s" @@ -7779,1942 +7700,2332 @@ msgstr "Votar" msgid "Voting Options" msgstr "Opciones de votación" -#: ../../Zotlabs/Lib/ThreadItem.php:383 -#: ../../extend/addon/addon/bookmarker/bookmarker.php:38 +#: ../../Zotlabs/Lib/ThreadItem.php:384 +#: ../../addon/bookmarker/bookmarker.php:38 msgid "Save Bookmarks" msgstr "Guardar en Marcadores" -#: ../../Zotlabs/Lib/ThreadItem.php:384 +#: ../../Zotlabs/Lib/ThreadItem.php:385 msgid "Add to Calendar" msgstr "Añadir al calendario" -#: ../../Zotlabs/Lib/ThreadItem.php:393 +#: ../../Zotlabs/Lib/ThreadItem.php:394 msgid "Mark all seen" msgstr "Marcar todo como visto" -#: ../../Zotlabs/Lib/ThreadItem.php:442 ../../include/js_strings.php:7 +#: ../../Zotlabs/Lib/ThreadItem.php:443 ../../include/js_strings.php:7 #, php-format msgid "%s show all" msgstr "%s mostrar todo" -#: ../../Zotlabs/Lib/ThreadItem.php:732 ../../include/conversation.php:1385 +#: ../../Zotlabs/Lib/ThreadItem.php:733 ../../include/conversation.php:1318 msgid "Bold" msgstr "Negrita" -#: ../../Zotlabs/Lib/ThreadItem.php:733 ../../include/conversation.php:1386 +#: ../../Zotlabs/Lib/ThreadItem.php:734 ../../include/conversation.php:1319 msgid "Italic" msgstr "Itálico " -#: ../../Zotlabs/Lib/ThreadItem.php:734 ../../include/conversation.php:1387 +#: ../../Zotlabs/Lib/ThreadItem.php:735 ../../include/conversation.php:1320 msgid "Underline" msgstr "Subrayar" -#: ../../Zotlabs/Lib/ThreadItem.php:735 ../../include/conversation.php:1388 +#: ../../Zotlabs/Lib/ThreadItem.php:736 ../../include/conversation.php:1321 msgid "Quote" msgstr "Citar" -#: ../../Zotlabs/Lib/ThreadItem.php:736 ../../include/conversation.php:1389 +#: ../../Zotlabs/Lib/ThreadItem.php:737 ../../include/conversation.php:1322 msgid "Code" msgstr "Código" -#: ../../Zotlabs/Lib/ThreadItem.php:737 +#: ../../Zotlabs/Lib/ThreadItem.php:738 msgid "Image" msgstr "Imagen" -#: ../../Zotlabs/Lib/ThreadItem.php:738 +#: ../../Zotlabs/Lib/ThreadItem.php:739 msgid "Insert Link" msgstr "Insertar enlace" -#: ../../Zotlabs/Lib/ThreadItem.php:739 +#: ../../Zotlabs/Lib/ThreadItem.php:740 msgid "Video" msgstr "Vídeo" -#: ../../Zotlabs/Lib/NativeWiki.php:126 -msgid "Wiki files deleted successfully" -msgstr "Se han borrado con éxito los ficheros del wiki" +#: ../../Zotlabs/Zot/Auth.php:138 +msgid "" +"Remote authentication blocked. You are logged into this site locally. Please" +" logout and retry." +msgstr "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo." -#: ../../Zotlabs/Lib/Apps.php:212 -msgid "Site Admin" -msgstr "Administrador del sitio" +#: ../../Zotlabs/Zot/Auth.php:250 ../../addon/openid/Mod_Openid.php:76 +#: ../../addon/openid/Mod_Openid.php:178 +#, php-format +msgid "Welcome %s. Remote authentication successful." +msgstr "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente." -#: ../../Zotlabs/Lib/Apps.php:213 -#: ../../extend/addon/addon/buglink/buglink.php:16 -msgid "Report Bug" -msgstr "Informe de errores" +#: ../../Zotlabs/Storage/Browser.php:106 ../../Zotlabs/Storage/Browser.php:237 +msgid "parent" +msgstr "padre" -#: ../../Zotlabs/Lib/Apps.php:214 -msgid "View Bookmarks" -msgstr "Ver los marcadores" +#: ../../Zotlabs/Storage/Browser.php:130 ../../include/text.php:2687 +msgid "Collection" +msgstr "Colección" -#: ../../Zotlabs/Lib/Apps.php:215 -msgid "My Chatrooms" -msgstr "Mis salas de chat" +#: ../../Zotlabs/Storage/Browser.php:133 +msgid "Principal" +msgstr "Principal" -#: ../../Zotlabs/Lib/Apps.php:217 -msgid "Firefox Share" -msgstr "Servicio de compartición de Firefox" +#: ../../Zotlabs/Storage/Browser.php:136 +msgid "Addressbook" +msgstr "Libreta de direcciones" -#: ../../Zotlabs/Lib/Apps.php:218 -msgid "Remote Diagnostics" -msgstr "Diagnóstico remoto" +#: ../../Zotlabs/Storage/Browser.php:139 +msgid "Calendar" +msgstr "Calendario" -#: ../../Zotlabs/Lib/Apps.php:219 ../../include/features.php:337 -msgid "Suggest Channels" -msgstr "Sugerir canales" +#: ../../Zotlabs/Storage/Browser.php:142 +msgid "Schedule Inbox" +msgstr "Programar bandeja de entrada" -#: ../../Zotlabs/Lib/Apps.php:220 ../../include/nav.php:130 -#: ../../boot.php:1749 -msgid "Login" -msgstr "Iniciar sesión" +#: ../../Zotlabs/Storage/Browser.php:145 +msgid "Schedule Outbox" +msgstr "Programar bandeja de salida" -#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:194 -msgid "Grid" -msgstr "Red" +#: ../../Zotlabs/Storage/Browser.php:225 +msgid "Total" +msgstr "Total" -#: ../../Zotlabs/Lib/Apps.php:226 ../../include/conversation.php:1903 -#: ../../include/features.php:99 -msgid "Wiki" -msgstr "Wiki" +#: ../../Zotlabs/Storage/Browser.php:227 +msgid "Shared" +msgstr "Compartido" -#: ../../Zotlabs/Lib/Apps.php:227 ../../include/nav.php:198 -msgid "Channel Home" -msgstr "Mi canal" +#: ../../Zotlabs/Storage/Browser.php:301 +#, php-format +msgid "You are using %1$s of your available file storage." +msgstr "Está usando %1$s de su espacio disponible para ficheros." -#: ../../Zotlabs/Lib/Apps.php:230 ../../include/conversation.php:1853 -#: ../../include/conversation.php:1856 ../../include/nav.php:218 -msgid "Events" -msgstr "Eventos" +#: ../../Zotlabs/Storage/Browser.php:306 +#, php-format +msgid "You are using %1$s of %2$s available file storage. (%3$s%)" +msgstr "Está usando %1$s de %2$s que tiene a su disposición para ficheros. (%3$s%)" -#: ../../Zotlabs/Lib/Apps.php:231 ../../include/nav.php:182 -msgid "Directory" -msgstr "Directorio" +#: ../../Zotlabs/Storage/Browser.php:317 +msgid "WARNING:" +msgstr "ATENCIÓN: " -#: ../../Zotlabs/Lib/Apps.php:233 ../../include/nav.php:210 -msgid "Mail" -msgstr "Correo" +#: ../../Zotlabs/Storage/Browser.php:327 +msgid "" +"Please use DAV to upload large (video, audio) files.<br>See <a class=\"zrl\"" +" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop " +"Clients</a>" +msgstr "Por favor, use DAV para subir ficheros de gran tamaño (vídeo, audio).<br>Mire en <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>" -#: ../../Zotlabs/Lib/Apps.php:236 -msgid "Chat" -msgstr "Chat" +#: ../../Zotlabs/Storage/Browser.php:331 +msgid "Create new folder" +msgstr "Crear nueva carpeta" -#: ../../Zotlabs/Lib/Apps.php:238 -msgid "Probe" -msgstr "Probar" +#: ../../Zotlabs/Storage/Browser.php:333 +msgid "Upload file" +msgstr "Subir fichero" -#: ../../Zotlabs/Lib/Apps.php:239 -msgid "Suggest" -msgstr "Sugerir" +#: ../../Zotlabs/Storage/Browser.php:347 +msgid "Drop files here to immediately upload" +msgstr "Arrastre los ficheros aquí para subirlos de forma inmediata" -#: ../../Zotlabs/Lib/Apps.php:240 -msgid "Random Channel" -msgstr "Canal aleatorio" +#: ../../Zotlabs/Widget/Forums.php:85 +msgid "Forums" +msgstr "Foros" -#: ../../Zotlabs/Lib/Apps.php:241 -msgid "Invite" -msgstr "Invitar" +#: ../../Zotlabs/Widget/Appcategories.php:39 +#: ../../Zotlabs/Widget/Tagcloud.php:25 ../../include/contact_widgets.php:91 +#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270 +msgid "Categories" +msgstr "Temas" -#: ../../Zotlabs/Lib/Apps.php:242 ../../include/widgets.php:1638 -msgid "Features" +#: ../../Zotlabs/Widget/Appcategories.php:42 ../../Zotlabs/Widget/Filer.php:31 +#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94 +msgid "Everything" +msgstr "Todo" + +#: ../../Zotlabs/Widget/Eventstools.php:13 +msgid "Events Tools" +msgstr "Gestión de eventos" + +#: ../../Zotlabs/Widget/Eventstools.php:14 +msgid "Export Calendar" +msgstr "Exportar el calendario" + +#: ../../Zotlabs/Widget/Eventstools.php:15 +msgid "Import Calendar" +msgstr "Importar un calendario" + +#: ../../Zotlabs/Widget/Suggestedchats.php:32 +msgid "Suggested Chatrooms" +msgstr "Salas de chat sugeridas" + +#: ../../Zotlabs/Widget/Mailmenu.php:13 +msgid "Private Mail Menu" +msgstr "Menú de correo privado" + +#: ../../Zotlabs/Widget/Mailmenu.php:15 +msgid "Combined View" +msgstr "Vista combinada" + +#: ../../Zotlabs/Widget/Mailmenu.php:20 ../../include/nav.php:191 +msgid "Inbox" +msgstr "Bandeja de entrada" + +#: ../../Zotlabs/Widget/Mailmenu.php:25 ../../include/nav.php:192 +msgid "Outbox" +msgstr "Bandeja de salida" + +#: ../../Zotlabs/Widget/Mailmenu.php:30 ../../include/nav.php:193 +msgid "New Message" +msgstr "Nuevo mensaje" + +#: ../../Zotlabs/Widget/Chatroom_list.php:16 +#: ../../include/conversation.php:1807 ../../include/conversation.php:1810 +msgid "Chatrooms" +msgstr "Salas de chat" + +#: ../../Zotlabs/Widget/Chatroom_list.php:20 +msgid "Overview" +msgstr "Resumen" + +#: ../../Zotlabs/Widget/Rating.php:51 +msgid "Rating Tools" +msgstr "Valoraciones" + +#: ../../Zotlabs/Widget/Rating.php:55 ../../Zotlabs/Widget/Rating.php:57 +msgid "Rate Me" +msgstr "Valorar este canal" + +#: ../../Zotlabs/Widget/Rating.php:60 +msgid "View Ratings" +msgstr "Mostrar las valoraciones" + +#: ../../Zotlabs/Widget/Activity.php:50 +msgctxt "widget" +msgid "Activity" +msgstr "Actividad" + +#: ../../Zotlabs/Widget/Follow.php:22 +#, php-format +msgid "You have %1$.0f of %2$.0f allowed connections." +msgstr "Tiene %1$.0f de %2$.0f conexiones permitidas." + +#: ../../Zotlabs/Widget/Follow.php:29 +msgid "Add New Connection" +msgstr "Añadir nueva conexión" + +#: ../../Zotlabs/Widget/Follow.php:30 +msgid "Enter channel address" +msgstr "Dirección del canal" + +#: ../../Zotlabs/Widget/Follow.php:31 +msgid "Examples: bob@example.com, https://example.com/barbara" +msgstr "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen" + +#: ../../Zotlabs/Widget/Wiki_list.php:15 ../../addon/gitwiki/gitwiki.php:95 +msgid "Wiki List" +msgstr "Lista de wikis" + +#: ../../Zotlabs/Widget/Archive.php:43 +msgid "Archives" +msgstr "Hemeroteca" + +#: ../../Zotlabs/Widget/Conversations.php:17 +#: ../../Zotlabs/Widget/Conversations.php:29 +msgid "Conversations" +msgstr "Conversaciones" + +#: ../../Zotlabs/Widget/Conversations.php:21 +msgid "Received Messages" +msgstr "Mensajes recibidos" + +#: ../../Zotlabs/Widget/Conversations.php:25 +msgid "Sent Messages" +msgstr "Enviar mensajes" + +#: ../../Zotlabs/Widget/Conversations.php:39 +msgid "No messages." +msgstr "Sin mensajes." + +#: ../../Zotlabs/Widget/Conversations.php:57 +msgid "Delete conversation" +msgstr "Eliminar conversación" + +#: ../../Zotlabs/Widget/Chatroom_members.php:11 +msgid "Chat Members" +msgstr "Miembros del chat" + +#: ../../Zotlabs/Widget/Photo.php:48 ../../Zotlabs/Widget/Photo_rand.php:58 +msgid "photo/image" +msgstr "foto/imagen" + +#: ../../Zotlabs/Widget/Savedsearch.php:75 +msgid "Remove term" +msgstr "Eliminar término" + +#: ../../Zotlabs/Widget/Savedsearch.php:83 ../../include/features.php:301 +msgid "Saved Searches" +msgstr "Búsquedas guardadas" + +#: ../../Zotlabs/Widget/Savedsearch.php:84 ../../include/group.php:336 +msgid "add" +msgstr "añadir" + +#: ../../Zotlabs/Widget/Notes.php:16 +msgid "Notes" +msgstr "Notas" + +#: ../../Zotlabs/Widget/Wiki_pages.php:54 ../../addon/gitwiki/gitwiki.php:76 +msgid "Wiki Pages" +msgstr "Páginas del wiki" + +#: ../../Zotlabs/Widget/Wiki_pages.php:60 ../../addon/gitwiki/gitwiki.php:81 +msgid "Add new page" +msgstr "Añadir una nueva página" + +#: ../../Zotlabs/Widget/Wiki_pages.php:61 ../../addon/gitwiki/gitwiki.php:82 +msgid "Page name" +msgstr "Nombre de la página" + +#: ../../Zotlabs/Widget/Affinity.php:49 +msgid "Refresh" +msgstr "Recargar" + +#: ../../Zotlabs/Widget/Tasklist.php:23 +msgid "Tasks" +msgstr "Tareas" + +#: ../../Zotlabs/Widget/Suggestions.php:51 +msgid "Suggestions" +msgstr "Sugerencias" + +#: ../../Zotlabs/Widget/Suggestions.php:52 +msgid "See more..." +msgstr "Ver más..." + +#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53 +#: ../../include/features.php:390 +msgid "Saved Folders" +msgstr "Carpetas guardadas" + +#: ../../Zotlabs/Widget/Cover_photo.php:54 +msgid "Click to show more" +msgstr "Hacer clic para ver más" + +#: ../../Zotlabs/Widget/Admin.php:23 ../../Zotlabs/Widget/Admin.php:60 +msgid "Member registrations waiting for confirmation" +msgstr "Inscripciones de nuevos miembros pendientes de aprobación" + +#: ../../Zotlabs/Widget/Admin.php:29 +msgid "Inspect queue" +msgstr "Examinar la cola" + +#: ../../Zotlabs/Widget/Admin.php:31 +msgid "DB updates" +msgstr "Actualizaciones de la base de datos" + +#: ../../Zotlabs/Widget/Admin.php:55 ../../include/nav.php:211 +msgid "Admin" +msgstr "Administrador" + +#: ../../Zotlabs/Widget/Admin.php:56 +msgid "Plugin Features" +msgstr "Extensiones" + +#: ../../Zotlabs/Widget/Settings_menu.php:35 +msgid "Account settings" +msgstr "Configuración de la cuenta" + +#: ../../Zotlabs/Widget/Settings_menu.php:41 +msgid "Channel settings" +msgstr "Configuración del canal" + +#: ../../Zotlabs/Widget/Settings_menu.php:50 +msgid "Additional features" msgstr "Funcionalidades" -#: ../../Zotlabs/Lib/Apps.php:243 -#: ../../extend/addon/addon/openid/MysqlProvider.php:69 -msgid "Language" -msgstr "Idioma" +#: ../../Zotlabs/Widget/Settings_menu.php:57 +msgid "Feature/Addon settings" +msgstr "Complementos" -#: ../../Zotlabs/Lib/Apps.php:244 -msgid "Post" -msgstr "Publicación" +#: ../../Zotlabs/Widget/Settings_menu.php:63 +msgid "Display settings" +msgstr "Ajustes de visualización" -#: ../../Zotlabs/Lib/Apps.php:245 -#: ../../extend/addon/addon/openid/MysqlProvider.php:58 -#: ../../extend/addon/addon/openid/MysqlProvider.php:59 -#: ../../extend/addon/addon/openid/MysqlProvider.php:60 -msgid "Profile Photo" -msgstr "Foto del perfil" +#: ../../Zotlabs/Widget/Settings_menu.php:70 +msgid "Manage locations" +msgstr "Gestión de ubicaciones (clones) del canal" -#: ../../Zotlabs/Lib/Apps.php:355 -msgid "Purchase" -msgstr "Comprar" +#: ../../Zotlabs/Widget/Settings_menu.php:77 +msgid "Export channel" +msgstr "Exportar canal" -#: ../../Zotlabs/Lib/Apps.php:359 -msgid "Undelete" -msgstr "Recuperar" +#: ../../Zotlabs/Widget/Settings_menu.php:83 +msgid "Connected apps" +msgstr "Aplicaciones (apps) conectadas" -#: ../../Zotlabs/Lib/Apps.php:364 -msgid "Add to app-tray" -msgstr "Añadir a la bandeja de aplicaciones" +#: ../../Zotlabs/Widget/Settings_menu.php:98 ../../include/features.php:153 +msgid "Permission Groups" +msgstr "Grupos de permisos" -#: ../../Zotlabs/Lib/Apps.php:365 -msgid "Remove from app-tray" -msgstr "Quitar de la bandeja de aplicaciones" +#: ../../Zotlabs/Widget/Settings_menu.php:115 +msgid "Premium Channel Settings" +msgstr "Configuración del canal premium" -#: ../../extend/addon/addon/adultphotoflag/adultphotoflag.php:24 -msgid "Flag Adult Photos" -msgstr "Indicador (\"flag\") de fotos de adultos" +#: ../../Zotlabs/Widget/Bookmarkedchats.php:24 +msgid "Bookmarked Chatrooms" +msgstr "Salas de chat preferidas" -#: ../../extend/addon/addon/adultphotoflag/adultphotoflag.php:25 -msgid "" -"Provide photo edit option to hide inappropriate photos from default album " -"view" -msgstr "Proporcionar una opción de edición de fotos para ocultar las fotos inapropiadas de la vista de álbum predeterminada" +#: ../../util/nconfig.php:34 +msgid "Source channel not found." +msgstr "No se ha encontrado el canal de origen." -#: ../../extend/addon/addon/chords/Mod_Chords.php:44 -msgid "" -"This is a fairly comprehensive and complete guitar chord dictionary which " -"will list most of the available ways to play a certain chord, starting from " -"the base of the fingerboard up to a few frets beyond the twelfth fret " -"(beyond which everything repeats). A couple of non-standard tunings are " -"provided for the benefit of slide players, etc." -msgstr "Se trata de un diccionario bastante amplio y completo de acordes de guitarra que enumerará la mayor parte de las formas disponibles para tocar un acorde determinado, partiendo de la base del diapasón hasta unos pocos trastes más allá del traste doce (más allá del cual todo se repite). Se proporcionan un par de afinaciones no convencionales para provecho de los guitarristas con \"slides\" ( barras de acero), etc." +#: ../../boot.php:1164 ../../addon/opensearch/opensearch.php:26 +#, php-format +msgctxt "opensearch" +msgid "Search %1$s (%2$s)" +msgstr "Buscar %1$s (%2$s)" -#: ../../extend/addon/addon/chords/Mod_Chords.php:46 -msgid "" -"Chord names start with a root note (A-G) and may include sharps (#) and " -"flats (b). This software will parse most of the standard naming conventions " -"such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements." -msgstr "Los nombres de acordes comienzan con una nota fundamental (La-Sol) y pueden incluir sostenidos (#) y bemoles (b). Este software analizará la mayor parte de las convenciones de nomenclatura estándar como maj, min, tenue, SUS (2 ó 4), aug, con la repetición de elementos opcionales." +#: ../../boot.php:1164 ../../addon/opensearch/opensearch.php:28 +msgctxt "opensearch" +msgid "$Projectname" +msgstr "$Projectname" -#: ../../extend/addon/addon/chords/Mod_Chords.php:48 -msgid "" -"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, " -"E7b13b11 ..." -msgstr "Ejemplos válidos son A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..." +#: ../../boot.php:1611 +msgid "Create an account to access services and applications" +msgstr "Crear una cuenta para acceder a los servicios y aplicaciones" -#: ../../extend/addon/addon/chords/Mod_Chords.php:51 -msgid "Guitar Chords" -msgstr "Acordes de guitarra" +#: ../../boot.php:1630 ../../include/nav.php:99 ../../include/nav.php:123 +msgid "Logout" +msgstr "Finalizar sesión" -#: ../../extend/addon/addon/chords/Mod_Chords.php:52 -msgid "The complete online chord dictionary" -msgstr "El diccionario completo de acordes en línea" +#: ../../boot.php:1633 +msgid "Login/Email" +msgstr "Inicio de sesión / Correo electrónico" -#: ../../extend/addon/addon/chords/Mod_Chords.php:57 -msgid "Tuning" -msgstr "Afinación" +#: ../../boot.php:1634 +msgid "Password" +msgstr "Contraseña" -#: ../../extend/addon/addon/chords/Mod_Chords.php:58 -msgid "Chord name: example: Em7" -msgstr "Nombre del acorde, por ejemplo: Em7" +#: ../../boot.php:1635 +msgid "Remember me" +msgstr "Recordarme" -#: ../../extend/addon/addon/chords/Mod_Chords.php:59 -msgid "Show for left handed stringing" -msgstr "Mostrar para tocadores zurdos" +#: ../../boot.php:1638 +msgid "Forgot your password?" +msgstr "¿Olvidó su contraseña?" -#: ../../extend/addon/addon/chords/chords.php:33 -msgid "Quick Reference" -msgstr "Referencia rápida" +#: ../../boot.php:2176 +msgid "toggle mobile" +msgstr "cambiar a modo móvil" -#: ../../extend/addon/addon/diaspora/import_diaspora.php:16 -msgid "No username found in import file." -msgstr "No se ha encontrado el nombre de usuario en el fichero importado." +#: ../../boot.php:2329 +#, php-format +msgid "[$Projectname] Website SSL error for %s" +msgstr "[$Projectname] Error SSL del sitio web en %s" -#: ../../extend/addon/addon/diaspora/import_diaspora.php:41 -#: ../../include/import.php:51 -msgid "Unable to create a unique channel address. Import failed." -msgstr "No se ha podido crear una dirección de canal única. Ha fallado la importación." +#: ../../boot.php:2334 +msgid "Website SSL certificate is not valid. Please correct." +msgstr "El certificado SSL del sitio web no es válido. Por favor, solucione el problema." -#: ../../extend/addon/addon/diaspora/diaspora.php:677 -msgid "Diaspora Protocol Settings updated." -msgstr "Los ajustes del protocolo de Diaspora se han actualizado." +#: ../../boot.php:2452 +#, php-format +msgid "[$Projectname] Cron tasks not running on %s" +msgstr "[$Projectname] Las tareas de Cron no están funcionando en %s" -#: ../../extend/addon/addon/diaspora/diaspora.php:696 -msgid "Enable the Diaspora protocol for this channel" -msgstr "Activar el protocolo de Diaspora para este canal" +#: ../../boot.php:2457 +msgid "Cron/Scheduled tasks not running." +msgstr "Las tareas del Planificador/Cron no están funcionando." -#: ../../extend/addon/addon/diaspora/diaspora.php:700 -msgid "Allow any Diaspora member to comment on your public posts" -msgstr "Permitir a cualquier miembro de Diaspora comentar sus entradas públicas" +#: ../../boot.php:2458 ../../include/datetime.php:286 +msgid "never" +msgstr "nunca" -#: ../../extend/addon/addon/diaspora/diaspora.php:704 -msgid "Prevent your hashtags from being redirected to other sites" -msgstr "Impedir que sus \"hashtags\" sean redirigidos a otros sitios " +#: ../../view/theme/redbasic/php/config.php:9 +msgid "Focus (Hubzilla default)" +msgstr "Focus (predefinido)" -#: ../../extend/addon/addon/diaspora/diaspora.php:709 -msgid "Followed hashtags (comma separated, do not include the #)" -msgstr "\"Hashtags\" seguidos (separados por comas, sin incluir #)" +#: ../../view/theme/redbasic/php/config.php:88 +msgid "Theme settings" +msgstr "Ajustes del tema" -#: ../../extend/addon/addon/diaspora/diaspora.php:714 -msgid "Diaspora Protocol Settings" -msgstr "Ajustes del protocolo de Diaspora" +#: ../../view/theme/redbasic/php/config.php:89 +msgid "Narrow navbar" +msgstr "Estrechar la barra de navegación" -#: ../../extend/addon/addon/dirstats/dirstats.php:94 -msgid "Hubzilla Directory Stats" -msgstr "Estadísticas de directorio de Hubzilla" +#: ../../view/theme/redbasic/php/config.php:90 +msgid "Navigation bar background color" +msgstr "Color de fondo de la barra de navegación" -#: ../../extend/addon/addon/dirstats/dirstats.php:95 -msgid "Total Hubs" -msgstr "Número total de servidores" +#: ../../view/theme/redbasic/php/config.php:91 +msgid "Navigation bar icon color " +msgstr "Color del icono de la barra de navegación" -#: ../../extend/addon/addon/dirstats/dirstats.php:97 -msgid "Hubzilla Hubs" -msgstr "Servidores (hubs) de Hubzilla" +#: ../../view/theme/redbasic/php/config.php:92 +msgid "Navigation bar active icon color " +msgstr "Color del icono activo de la barra de navegación" -#: ../../extend/addon/addon/dirstats/dirstats.php:99 -msgid "Friendica Hubs" -msgstr "Servidores (hubs) de Friendica" +#: ../../view/theme/redbasic/php/config.php:93 +msgid "Link color" +msgstr "Color del enlace" -#: ../../extend/addon/addon/dirstats/dirstats.php:101 -msgid "Diaspora Pods" -msgstr "Servidores (pods) de Diaspora" +#: ../../view/theme/redbasic/php/config.php:94 +msgid "Set font-color for banner" +msgstr "Ajustar el color del tipo de letra para el \"banner\"" -#: ../../extend/addon/addon/dirstats/dirstats.php:103 -msgid "Hubzilla Channels" -msgstr "Canales de Hubzilla" +#: ../../view/theme/redbasic/php/config.php:95 +msgid "Set the background color" +msgstr "Ajustar el color de fondo" -#: ../../extend/addon/addon/dirstats/dirstats.php:105 -msgid "Friendica Channels" -msgstr "Canales de Friendica" +#: ../../view/theme/redbasic/php/config.php:96 +msgid "Set the background image" +msgstr "Ajustar la imagen de fondo" -#: ../../extend/addon/addon/dirstats/dirstats.php:107 -msgid "Diaspora Channels" -msgstr "Canales de Diaspora" +#: ../../view/theme/redbasic/php/config.php:97 +msgid "Set the background color of items" +msgstr "Ajustar el color de los elementos de fondo" -#: ../../extend/addon/addon/dirstats/dirstats.php:109 -msgid "Aged 35 and above" -msgstr "De 35 años de edad en adelante" +#: ../../view/theme/redbasic/php/config.php:98 +msgid "Set the background color of comments" +msgstr "Ajustar el color de fondo de los comentarios" -#: ../../extend/addon/addon/dirstats/dirstats.php:111 -msgid "Aged 34 and under" -msgstr "De 34 o menos años de edad" +#: ../../view/theme/redbasic/php/config.php:99 +msgid "Set font-size for the entire application" +msgstr "Ajustar el tamaño de letra para toda la aplicación" -#: ../../extend/addon/addon/dirstats/dirstats.php:113 -msgid "Average Age" -msgstr "Promedio de edad" +#: ../../view/theme/redbasic/php/config.php:99 +msgid "Examples: 87.5%, 14px" +msgstr "Ejemploss: 87.5%, 14px" -#: ../../extend/addon/addon/dirstats/dirstats.php:115 -msgid "Known Chatrooms" -msgstr "Salas de chat conocidas" +#: ../../view/theme/redbasic/php/config.php:100 +msgid "Set font-color for posts and comments" +msgstr "Establecer el color de la letra para publicaciones y comentarios" -#: ../../extend/addon/addon/dirstats/dirstats.php:117 -msgid "Known Tags" -msgstr "Etiquetas conocidas" +#: ../../view/theme/redbasic/php/config.php:101 +msgid "Set radius of corners" +msgstr "Establecer el radio de curvatura de las esquinas" -#: ../../extend/addon/addon/dirstats/dirstats.php:119 -msgid "" -"Please note Diaspora and Friendica statistics are merely those **this " -"directory** is aware of, and not all those known in the network. This also " -"applies to chatrooms," -msgstr "Tenga en cuenta que las estadísticas de Diaspora y Friendica se refieren únicamente a aquellas de las que **este directorio** es consciente, y no a todos los conocidos en la red. Esto también es aplicable a las salas de chat," +#: ../../view/theme/redbasic/php/config.php:101 +msgid "Example: 4px" +msgstr "Ejemplo: 4px" -#: ../../extend/addon/addon/donate/donate.php:21 -msgid "Project Servers and Resources" -msgstr "Servidores y recursos del proyecto" +#: ../../view/theme/redbasic/php/config.php:102 +msgid "Set shadow depth of photos" +msgstr "Ajustar la profundidad de sombras de las fotos" -#: ../../extend/addon/addon/donate/donate.php:22 -msgid "Project Creator and Tech Lead" -msgstr "Creador del proyecto y director técnico" +#: ../../view/theme/redbasic/php/config.php:103 +msgid "Set maximum width of content region in pixel" +msgstr "Ajustar la anchura máxima de la región de contenido, en pixels" -#: ../../extend/addon/addon/donate/donate.php:23 -msgid "Admin, developer, directorymin, support bloke" -msgstr "Administrador, desarrollador, administrador del directorio, trabajador de apoyo" +#: ../../view/theme/redbasic/php/config.php:103 +msgid "Leave empty for default width" +msgstr "Dejar en blanco para la anchura predeterminada" -#: ../../extend/addon/addon/donate/donate.php:50 -msgid "" -"And the hundreds of other people and organisations who helped make the " -"Hubzilla possible." -msgstr "Y los cientos de personas y organizaciones más que ayudaron a hacer posible Hubzilla." +#: ../../view/theme/redbasic/php/config.php:104 +msgid "Left align page content" +msgstr "Alinear a la izquierda el contenido de la página" + +#: ../../view/theme/redbasic/php/config.php:105 +msgid "Set size of conversation author photo" +msgstr "Ajustar el tamaño de la foto del autor de la conversación" + +#: ../../view/theme/redbasic/php/config.php:106 +msgid "Set size of followup author photos" +msgstr "Ajustar el tamaño de foto de los seguidores del autor" -#: ../../extend/addon/addon/donate/donate.php:53 +#: ../../addon/rendezvous/rendezvous.php:57 +msgid "Errors encountered deleting database table " +msgstr "Errores encontrados al eliminar la tabla de la base de datos" + +#: ../../addon/rendezvous/rendezvous.php:95 +#: ../../addon/twitter/twitter.php:773 +msgid "Submit Settings" +msgstr "Enviar los ajustes" + +#: ../../addon/rendezvous/rendezvous.php:96 +msgid "Drop tables when uninstalling?" +msgstr "¿Eliminar tablas al desinstalar?" + +#: ../../addon/rendezvous/rendezvous.php:96 msgid "" -"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving " -"their time and expertise - and often paying out of pocket for services they " -"share with others." -msgstr "Los proyectos Redmatrix / Hubzilla están proporcionados principalmente por voluntarios que les prestan su tiempo y experiencia, pagando a menudo de su bolsillo por los servicios que comparten con otros." +"If checked, the Rendezvous database tables will be deleted when the plugin " +"is uninstalled." +msgstr "Si se selecciona, las tablas de la base de datos Rendezvous se eliminarán cuando se desinstale el plugin." -#: ../../extend/addon/addon/donate/donate.php:54 +#: ../../addon/rendezvous/rendezvous.php:97 +msgid "Mapbox Access Token" +msgstr "Token de acceso de Mapbox" + +#: ../../addon/rendezvous/rendezvous.php:97 msgid "" -"There is no corporate funding and no ads, and we do not collect and sell " -"your personal information. (We don't control your personal information - " -"<strong>you do</strong>.)" -msgstr "No hay financiación corporativa ni publicidad y no recogemos ni vendemos su información personal. (De hecho, no tenemos control sobre sus datos privados. <Strong>Usted lo tiene</strong>.)" +"If you enter a Mapbox access token, it will be used to retrieve map tiles " +"from Mapbox instead of the default OpenStreetMap tile server." +msgstr "Si introduce un token de acceso a Mapbox, se utilizará para recuperar los mapas de mosaicos de imágenes de Mapbox en lugar del servidor de mosaico de imágenes OpenStreetMap predeterminado." -#: ../../extend/addon/addon/donate/donate.php:55 +#: ../../addon/rendezvous/rendezvous.php:162 +msgid "Rendezvous" +msgstr "Rendezvous" + +#: ../../addon/rendezvous/rendezvous.php:167 msgid "" -"Help support our ground-breaking work in decentralisation, web identity, and" -" privacy." -msgstr "Ayude apoyando nuestro trabajo pionero en la descentralización, la identidad web, y la privacidad." +"This identity has been deleted by another member due to inactivity. Please " +"press the \"New identity\" button or refresh the page to register a new " +"identity. You may use the same name." +msgstr "Esta identidad ha sido eliminada por otro miembro debido a su inactividad. Pulse el botón \"Nueva identidad\" o actualice la página para registrar una nueva identidad. Puede usar el mismo nombre." + +#: ../../addon/rendezvous/rendezvous.php:168 +msgid "Welcome to Rendezvous!" +msgstr "¡Bienvenido/a a Rendevous!" -#: ../../extend/addon/addon/donate/donate.php:57 +#: ../../addon/rendezvous/rendezvous.php:169 msgid "" -"Your donations keep servers and services running and also helps us to " -"provide innovative new features and continued development." -msgstr "Sus donaciones mantienen servidores y servicios en ejecución y también nos ayudan a proporcionar nuevas características innovadoras y a mantener el desarrollo de forma continuada." +"Enter your name to join this rendezvous. To begin sharing your location with" +" the other members, tap the GPS control. When your location is discovered, a" +" red dot will appear and others will be able to see you on the map." +msgstr "Introduzca tu nombre para unirse a esta cita. Para comenzar a compartir su ubicación con los demás miembros, pulse en el control GPS. Cuando se descubra su ubicación, aparecerá un punto rojo y otros podrán verlo en el mapa." -#: ../../extend/addon/addon/donate/donate.php:60 -msgid "Donate" -msgstr "Donar" +#: ../../addon/rendezvous/rendezvous.php:171 +msgid "Let's meet here" +msgstr "Reunámonos aquí" + +#: ../../addon/rendezvous/rendezvous.php:174 +msgid "New marker" +msgstr "Nuevo marcador" + +#: ../../addon/rendezvous/rendezvous.php:175 +msgid "Edit marker" +msgstr "Editar un marcador" + +#: ../../addon/rendezvous/rendezvous.php:176 +msgid "New identity" +msgstr "Nueva identidad" + +#: ../../addon/rendezvous/rendezvous.php:177 +msgid "Delete marker" +msgstr "Eliminar un marcador" + +#: ../../addon/rendezvous/rendezvous.php:178 +msgid "Delete member" +msgstr "Eliminar un miembro" -#: ../../extend/addon/addon/donate/donate.php:62 +#: ../../addon/rendezvous/rendezvous.php:179 +msgid "Edit proximity alert" +msgstr "Editar alerta de proximidad" + +#: ../../addon/rendezvous/rendezvous.php:180 msgid "" -"Choose a project, developer, or public hub to support with a one-time " -"donation" -msgstr "Elija un proyecto, desarrollador, o \"hub\" público para apoyar con una donación de una sola vez" +"A proximity alert will be issued when this member is within a certain radius" +" of you.<br><br>Enter a radius in meters (0 to disable):" +msgstr "Se emitirá una alerta de proximidad cuando este miembro esté dentro de un radio determinado respecto a usted.<br><br> Ingrese el radio en metros (0 para deshabilitar):" -#: ../../extend/addon/addon/donate/donate.php:63 -msgid "Donate Now" -msgstr "Donar ahora" +#: ../../addon/rendezvous/rendezvous.php:180 +#: ../../addon/rendezvous/rendezvous.php:185 +msgid "distance" +msgstr "distancia" -#: ../../extend/addon/addon/donate/donate.php:64 +#: ../../addon/rendezvous/rendezvous.php:181 +msgid "Proximity alert distance (meters)" +msgstr "Distancia (en metros) para la alerta de proximidad" + +#: ../../addon/rendezvous/rendezvous.php:182 +#: ../../addon/rendezvous/rendezvous.php:184 msgid "" -"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project " -"only)" -msgstr "<strong><em>O</em></strong> convertirse en un patrocinador del proyecto (sólo del proyecto Hubzilla)" +"A proximity alert will be issued when you are within a certain radius of the" +" marker location.<br><br>Enter a radius in meters (0 to disable):" +msgstr "Se emitirá una alerta de proximidad cuando usted esté dentro de un radio determinado respecto al marcador de localización.<br><br> Ingrese el radio en metros (0 para deshabilitar):" -#: ../../extend/addon/addon/donate/donate.php:65 +#: ../../addon/rendezvous/rendezvous.php:183 +msgid "Marker proximity alert" +msgstr "Marcador de alerta de proximidad" + +#: ../../addon/rendezvous/rendezvous.php:186 +msgid "Reminder note" +msgstr "Recordatorio" + +#: ../../addon/rendezvous/rendezvous.php:187 msgid "" -"Please indicate if you would like your first name or full name (or nothing) " -"to appear in our sponsor listing" -msgstr "Por favor, indique si desea que su nombre de pila o el nombre completo (o nada) aparezca en nuestra lista de patrocinadores" +"Enter a note to be displayed when you are within the specified proximity..." +msgstr "Introduzca una nota que se mostrará cuando esté dentro de la proximidad especificada..." -#: ../../extend/addon/addon/donate/donate.php:66 -msgid "Sponsor" -msgstr "Patrocinador" +#: ../../addon/rendezvous/rendezvous.php:199 +msgid "Add new rendezvous" +msgstr "Añadir una nueva cita" -#: ../../extend/addon/addon/donate/donate.php:69 -msgid "Special thanks to: " -msgstr "Agradecimiento especial a: " +#: ../../addon/rendezvous/rendezvous.php:200 +msgid "" +"Create a new rendezvous and share the access link with those you wish to " +"invite to the group. Those who open the link become members of the " +"rendezvous. They can view other member locations, add markers to the map, or" +" share their own locations with the group." +msgstr "Cree una nueva cita y comparta los enlaces de acceso con los que desea invitar al grupo. Aquellos que abran el enlace se convertirán en miembros de la cita. Pueden ver otras ubicaciones de miembros, añadir marcadores al mapa o compartir sus propias ubicaciones con el grupo." -#: ../../extend/addon/addon/dwpost/dwpost.php:42 -msgid "Post to Dreamwidth" -msgstr "Publicar en Dreamwidth" +#: ../../addon/skeleton/skeleton.php:59 +msgid "Some setting" +msgstr "Algunos ajustes" -#: ../../extend/addon/addon/dwpost/dwpost.php:73 -msgid "Enable Dreamwidth Post Plugin" -msgstr "Activar el plugin de publicación en Dreamwidth" +#: ../../addon/skeleton/skeleton.php:61 +msgid "A setting" +msgstr "Un ajuste" -#: ../../extend/addon/addon/dwpost/dwpost.php:77 -msgid "Dreamwidth username" -msgstr "Nombre de usuario en Dreamwidth" +#: ../../addon/skeleton/skeleton.php:64 +msgid "Skeleton Settings" +msgstr "Ajustes de Skeleton" -#: ../../extend/addon/addon/dwpost/dwpost.php:81 -msgid "Dreamwidth password" -msgstr "Contraseña en Dreamwidth" +#: ../../addon/gnusoc/gnusoc.php:118 +msgid "GNU-Social Protocol Settings updated." +msgstr "Se han actualizado los ajustes del protocolo de GNU-Social." -#: ../../extend/addon/addon/dwpost/dwpost.php:85 -msgid "Post to Dreamwidth by default" -msgstr "Publicar en Dreamwidth de forma predeterminada" +#: ../../addon/gnusoc/gnusoc.php:129 +msgid "Enable the GNU-Social protocol for this channel" +msgstr "Activar el protocolo de GNU-Social para este canal" -#: ../../extend/addon/addon/dwpost/dwpost.php:89 -msgid "Dreamwidth Post Settings" -msgstr "Ajustes de publicación en Dreamwidth" +#: ../../addon/gnusoc/gnusoc.php:133 +msgid "GNU-Social Protocol Settings" +msgstr "Ajustes del protocolo de GNU-Social" -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:45 -msgid "Flattr this!" -msgstr "¡Apoyar esto en Flattr!" +#: ../../addon/gnusoc/gnusoc.php:323 +msgid "Follow" +msgstr "Seguir" -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:83 -msgid "Flattr widget settings updated." -msgstr "Los ajustes del widget Flattr han sido actualizados." +#: ../../addon/gnusoc/gnusoc.php:326 +#, php-format +msgid "%1$s is now following %2$s" +msgstr "%1$s está siguiendo ahora a %2$s" -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:100 -msgid "Flattr user" -msgstr "Usuario en Flattr" +#: ../../addon/cdav/Mod_Cdav.php:744 +msgid "INVALID EVENT DISMISSED!" +msgstr "¡EVENTO NO VÁLIDO RECHAZADO!" -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:104 -msgid "URL of the Thing to flattr" -msgstr "URL de la Cosa para apoyar en flattr" +#: ../../addon/cdav/Mod_Cdav.php:745 +msgid "Summary: " +msgstr "Resumen: " -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:104 -msgid "If empty channel URL is used" -msgstr "Si está vacío, se usa la URL del canal" +#: ../../addon/cdav/Mod_Cdav.php:746 +msgid "Date: " +msgstr "Fecha: " -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:108 -msgid "Title of the Thing to flattr" -msgstr "Título de la Cosa para apoyar en flattr" +#: ../../addon/cdav/Mod_Cdav.php:747 ../../addon/cdav/Mod_Cdav.php:754 +msgid "Reason: " +msgstr "Razón: " -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:108 -msgid "If empty \"channel name on The Hubzilla\" will be used" -msgstr "Si está vacío, se usará \"nombre del canal en Hubzilla\"" +#: ../../addon/cdav/Mod_Cdav.php:752 +msgid "INVALID CARD DISMISSED!" +msgstr "¡TARJETA NO VÁLIDA RECHAZADA!" -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:112 -msgid "Static or dynamic flattr button" -msgstr "Botón de flattr estático o dinámico" +#: ../../addon/cdav/Mod_Cdav.php:753 +msgid "Name: " +msgstr "Nombre: " -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:112 -msgid "static" -msgstr "estático" +#: ../../addon/cdav/Mod_Cdav.php:770 +msgid "" +"You have to enable this plugin in Feature/Addon Settings > CalDAV/CardDAV " +"Settings before you can use it." +msgstr "Debe habilitar este complemento en Ajustes/Complementos>Configuración de CalDAV/CardDAV antes de poder utilizarlo." -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:112 -msgid "dynamic" -msgstr "dinámico" +#: ../../addon/cdav/Mod_Cdav.php:836 ../../addon/cdav/Mod_Cdav.php:837 +msgid "Example: YYYY-MM-DD HH:mm" +msgstr "Ejemplo: YYYY-MM-DD HH:mm" -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:116 -msgid "Alignment of the widget" -msgstr "Alineamiento del widget" +#: ../../addon/cdav/Mod_Cdav.php:837 +msgid "End date and time" +msgstr "Fecha y hora de finalización" -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:116 -msgid "left" -msgstr "izquierda" +#: ../../addon/cdav/Mod_Cdav.php:852 +msgid "List month" +msgstr "Lista mensual" -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:116 -msgid "right" -msgstr "derecha" +#: ../../addon/cdav/Mod_Cdav.php:853 +msgid "List week" +msgstr "Lista semanal" -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:120 -msgid "Enable Flattr widget" -msgstr "Habilitar el widget Flattr" +#: ../../addon/cdav/Mod_Cdav.php:854 +msgid "List day" +msgstr "Lista diaria" -#: ../../extend/addon/addon/flattrwidget/flattrwidget.php:124 -msgid "Flattr Widget Settings" -msgstr "Ajustes del widget Flattr" +#: ../../addon/cdav/Mod_Cdav.php:861 +msgid "More" +msgstr "Más" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:118 -msgid "Contact not found." -msgstr "No se ha encontrado el contacto." +#: ../../addon/cdav/Mod_Cdav.php:862 +msgid "Less" +msgstr "Menos" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:119 -msgid "" -"This may occasionally happen if contact was requested by both persons and it" -" has already been approved." -msgstr "Esto puede ocurrir de vez en cuando si el contacto fue solicitado por ambas personas y ya había sido aprobado." +#: ../../addon/cdav/Mod_Cdav.php:863 +msgid "Select calendar" +msgstr "Seleccionar un calendario" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:238 -msgid "Response from remote site was not understood." -msgstr "No se entendió la respuesta del sitio remoto." +#: ../../addon/cdav/Mod_Cdav.php:865 +msgid "Delete all" +msgstr "Eliminar todos" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:247 -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:252 -msgid "Unexpected response from remote site: " -msgstr "Respuesta inesperada desde el sitio remoto: " +#: ../../addon/cdav/Mod_Cdav.php:867 +msgid "Sorry! Editing of recurrent events is not yet implemented." +msgstr "¡Disculpas! La edición de eventos recurrentes aún no se ha implementado." -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:261 -msgid "Confirmation completed successfully." -msgstr "La confirmación se ha completado satisfactoriamente." +#: ../../addon/cdav/cdav.php:36 +msgid "Errors encountered creating database table: " +msgstr "Errores encontrados al crear la tabla de la base de datos: " -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:263 -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:277 -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:284 -msgid "Remote site reported: " -msgstr "El sitio remoto informó: " +#: ../../addon/cdav/cdav.php:197 +msgid "Default Calendar" +msgstr "Calendario por defecto" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:275 -msgid "Temporary failure. Please wait and try again." -msgstr "Fallo temporal. Por favor, espere e inténtelo de nuevo." +#: ../../addon/cdav/cdav.php:206 +msgid "Default Addressbook" +msgstr "Agenda de direcciones por defecto" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:282 -msgid "Introduction failed or was revoked." -msgstr "La solicitud ha fallado o ha sido revocada." +#: ../../addon/cdav/cdav.php:215 +msgid "CalDAV/CardDAV Settings saved." +msgstr "Se ha guardado la configuración de CalDAV/CardDAV." -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:428 -msgid "Unable to set contact photo." -msgstr "No se puede establecer la foto del contacto." +#: ../../addon/cdav/cdav.php:234 +msgid "Enable CalDAV/CardDAV Server for this channel" +msgstr "Habilitar el servidor CalDAV/CardDAV para este canal" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:485 +#: ../../addon/cdav/cdav.php:237 #, php-format -msgid "%1$s is now friends with %2$s" -msgstr "%1$s es amigo ahora de %2$s" +msgid "Your CalDAV resources are located at %s " +msgstr "Los recursos de CalDAV se encuentran en %s" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:570 +#: ../../addon/cdav/cdav.php:240 #, php-format -msgid "No user record found for '%s' " -msgstr "No se encuentra ningún registro de usuario para '%s' " +msgid "Your CardDAV resources are located at %s " +msgstr "Sus recursos de CalDAV están localizados en %s " -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:580 -msgid "Our site encryption key is apparently messed up." -msgstr "La clave de cifrado de nuestro sitio está aparentemente en mal estado." +#: ../../addon/cdav/cdav.php:246 +msgid "CalDAV/CardDAV Settings" +msgstr "Configuración de CalDAV/CardDAV" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:591 -msgid "Empty site URL was provided or URL could not be decrypted by us." -msgstr "Se ha proporcionado la URL de un sitio inexistente o la URL no ha podido ser descifrada por nosotros." +#: ../../addon/cdav/cdav.php:272 ../../include/connections.php:670 +msgid "Home, Voice" +msgstr "Llamadas particulares" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:612 -msgid "Contact record was not found for you on our site." -msgstr "No se ha encontrado un registro de contacto para usted en nuestro sitio." +#: ../../addon/cdav/cdav.php:273 ../../include/connections.php:671 +msgid "Home, Fax" +msgstr "Fax particular" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:626 -#, php-format -msgid "Site public key not available in contact record for URL %s." -msgstr "La clave del sitio público no está disponible en el registro de contacto para la URL %s." +#: ../../addon/cdav/cdav.php:275 ../../include/connections.php:673 +msgid "Work, Voice" +msgstr "Llamadas de trabajo" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:646 -msgid "" -"The ID provided by your system is a duplicate on our system. It should work " -"if you try again." -msgstr "La ID proporcionada por su sistema está duplicada en el nuestro. Debería funcionar si lo intenta de nuevo." +#: ../../addon/cdav/cdav.php:276 ../../include/connections.php:674 +msgid "Work, Fax" +msgstr "Fax de trabajo" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:657 -msgid "Unable to set your contact credentials on our system." -msgstr "No se pueden establecer sus credenciales de contacto en nuestro sistema." +#: ../../addon/cdav/include/widgets.php:37 +msgid "Select Channel" +msgstr "Seleccionar un canal" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:724 -msgid "Unable to update your contact profile details on our system" -msgstr "No se pueden actualizar los detalles del perfil de su contacto en nuestro sistema" +#: ../../addon/cdav/include/widgets.php:42 +msgid "Read-write" +msgstr "Lectura y escritura" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:751 -#: ../../extend/addon/addon/friendica/dfrn_request.php:749 -msgid "[Name Withheld]" -msgstr "[Nombre omitido]" +#: ../../addon/cdav/include/widgets.php:43 +msgid "Read-only" +msgstr "Sólo lectura" -#: ../../extend/addon/addon/friendica/dfrn_confirm.php:796 -#, php-format -msgid "%1$s has joined %2$s" -msgstr "%1$s se ha unido a %2$s" +#: ../../addon/cdav/include/widgets.php:116 +msgid "My Calendars" +msgstr "Mis calendarios" -#: ../../extend/addon/addon/friendica/dfrn_poll.php:103 -#: ../../extend/addon/addon/friendica/dfrn_poll.php:536 -#, php-format -msgid "%1$s welcomes %2$s" -msgstr "%1$s da la bienvenida a %2$s" +#: ../../addon/cdav/include/widgets.php:118 +msgid "Shared Calendars" +msgstr "Calendarios compartidos" -#: ../../extend/addon/addon/friendica/dfrn_request.php:102 -msgid "This introduction has already been accepted." -msgstr "Esta solicitud ya ha sido aceptada." +#: ../../addon/cdav/include/widgets.php:122 +msgid "Share this calendar" +msgstr "Compartir este calendario" -#: ../../extend/addon/addon/friendica/dfrn_request.php:123 -#: ../../extend/addon/addon/friendica/dfrn_request.php:528 -msgid "Profile location is not valid or does not contain profile information." -msgstr "La ubicación del perfil no es válida o no contiene información del perfil." +#: ../../addon/cdav/include/widgets.php:124 +msgid "Calendar name and color" +msgstr "Nombre y color del calendario" -#: ../../extend/addon/addon/friendica/dfrn_request.php:128 -#: ../../extend/addon/addon/friendica/dfrn_request.php:533 -msgid "Warning: profile location has no identifiable owner name." -msgstr "Advertencia: el perfil de la ubicación no tiene un nombre de propietario identificable." +#: ../../addon/cdav/include/widgets.php:126 +msgid "Create new calendar" +msgstr "Crear un nuevo calendario" -#: ../../extend/addon/addon/friendica/dfrn_request.php:130 -#: ../../extend/addon/addon/friendica/dfrn_request.php:535 -msgid "Warning: profile location has no profile photo." -msgstr "Advertencia: el perfil de la ubicación no tiene ninguna foto de perfil." +#: ../../addon/cdav/include/widgets.php:128 +msgid "Calendar Name" +msgstr "Nombre del calendario" -#: ../../extend/addon/addon/friendica/dfrn_request.php:133 -#: ../../extend/addon/addon/friendica/dfrn_request.php:538 -#, php-format -msgid "%d required parameter was not found at the given location" -msgid_plural "%d required parameters were not found at the given location" -msgstr[0] "Los parámetros requeridos de %d no se han encontrado en la localización proporcionada" -msgstr[1] "Los parámetros requeridos de %d no se han encontrado en la localización proporcionada" +#: ../../addon/cdav/include/widgets.php:129 +msgid "Calendar Tools" +msgstr "Gestión de calendarios" -#: ../../extend/addon/addon/friendica/dfrn_request.php:180 -msgid "Introduction complete." -msgstr "Solicitud completa." +#: ../../addon/cdav/include/widgets.php:130 +msgid "Import calendar" +msgstr "Importar un calendario" -#: ../../extend/addon/addon/friendica/dfrn_request.php:224 -msgid "Unrecoverable protocol error." -msgstr "Error irrecuperable de protocolo." +#: ../../addon/cdav/include/widgets.php:131 +msgid "Select a calendar to import to" +msgstr "Seleccionar un calendario para importarlo" -#: ../../extend/addon/addon/friendica/dfrn_request.php:252 -msgid "Profile unavailable." -msgstr "Perfil no disponible." +#: ../../addon/cdav/include/widgets.php:158 +msgid "Addressbooks" +msgstr "Agenda de direcciones" -#: ../../extend/addon/addon/friendica/dfrn_request.php:277 -#, php-format -msgid "%s has received too many connection requests today." -msgstr "%s ha recibido demasiadas peticiones de conexión hoy." +#: ../../addon/cdav/include/widgets.php:160 +msgid "Addressbook name" +msgstr "Nombre de la agenda" -#: ../../extend/addon/addon/friendica/dfrn_request.php:278 -msgid "Spam protection measures have been invoked." -msgstr "Se han activado las medidas de protección contra el spam." +#: ../../addon/cdav/include/widgets.php:162 +msgid "Create new addressbook" +msgstr "Crear una nueva agenda de direcciones" -#: ../../extend/addon/addon/friendica/dfrn_request.php:279 -msgid "Friends are advised to please try again in 24 hours." -msgstr "Se aconseja a los amigos que por favor lo intenten de nuevo en 24 horas." +#: ../../addon/cdav/include/widgets.php:163 +msgid "Addressbook Name" +msgstr "Nombre de la agenda" -#: ../../extend/addon/addon/friendica/dfrn_request.php:341 -msgid "Invalid locator" -msgstr "Localizador no válido" +#: ../../addon/cdav/include/widgets.php:165 +msgid "Addressbook Tools" +msgstr "Gestión de agendas de direcciones" -#: ../../extend/addon/addon/friendica/dfrn_request.php:350 -msgid "Invalid email address." -msgstr "Dirección de correo no válida." +#: ../../addon/cdav/include/widgets.php:166 +msgid "Import addressbook" +msgstr "Importar una agenda de direcciones" -#: ../../extend/addon/addon/friendica/dfrn_request.php:377 -msgid "This account has not been configured for email. Request failed." -msgstr "Esta cuenta no se ha configurado para el correo electrónico. La petición ha fallado." +#: ../../addon/cdav/include/widgets.php:167 +msgid "Select an addressbook to import to" +msgstr "Seleccionar una agenda para importarla" -#: ../../extend/addon/addon/friendica/dfrn_request.php:473 -msgid "Unable to resolve your name at the provided location." -msgstr "No se puede resolver el nombre en la localización proporcionada." +#: ../../addon/planets/planets.php:121 +msgid "Planets Settings updated." +msgstr "Se han guardado los ajustes de Planets." -#: ../../extend/addon/addon/friendica/dfrn_request.php:486 -msgid "You have already introduced yourself here." -msgstr "Ya se ha inscrito usted mismo aquí." +#: ../../addon/planets/planets.php:153 +msgid "Enable Planets Plugin" +msgstr "Habilitar el plugin Planets" -#: ../../extend/addon/addon/friendica/dfrn_request.php:490 -#, php-format -msgid "Apparently you are already friends with %s." -msgstr "Al parecer ya es amigo de %s" +#: ../../addon/planets/planets.php:157 +msgid "Planets Settings" +msgstr "Ajustes de Planets" -#: ../../extend/addon/addon/friendica/dfrn_request.php:511 -msgid "Invalid profile URL." -msgstr "URL del perfil no válida." +#: ../../addon/openclipatar/openclipatar.php:50 +#: ../../addon/openclipatar/openclipatar.php:128 +msgid "System defaults:" +msgstr "Valores predeterminados del sistema: " -#: ../../extend/addon/addon/friendica/dfrn_request.php:517 -msgid "Disallowed profile URL." -msgstr "No se ha permitido la URL del perfil." +#: ../../addon/openclipatar/openclipatar.php:54 +msgid "Preferred Clipart IDs" +msgstr "IDs de las imágenes clipart preferidas" -#: ../../extend/addon/addon/friendica/dfrn_request.php:587 -msgid "Failed to update contact record." -msgstr "Se ha producido un error al actualizar el registro del contacto." +#: ../../addon/openclipatar/openclipatar.php:54 +msgid "List of preferred clipart ids. These will be shown first." +msgstr "Lista de ids de imágenes de clipart preferidas. Se verán en primer lugar." -#: ../../extend/addon/addon/friendica/dfrn_request.php:608 -msgid "Your introduction has been sent." -msgstr "Su solicitud ha sido enviada." +#: ../../addon/openclipatar/openclipatar.php:55 +msgid "Default Search Term" +msgstr "Términos de búsqueda predeterminados" -#: ../../extend/addon/addon/friendica/dfrn_request.php:662 -msgid "Please login to confirm introduction." -msgstr "Por favor, inicie sesión para confirmar la solicitud." +#: ../../addon/openclipatar/openclipatar.php:55 +msgid "The default search term. These will be shown second." +msgstr "Los términos de búsqueda predeterminados. Estos se mostrarán en segundo lugar." -#: ../../extend/addon/addon/friendica/dfrn_request.php:676 -msgid "" -"Incorrect identity currently logged in. Please login to " -"<strong>this</strong> profile." -msgstr "Actualmente su identidad en el sistema es incorrecta. Por favor, inicie sesión en <strong>este</strong> perfil." +#: ../../addon/openclipatar/openclipatar.php:56 +msgid "Return After" +msgstr "Regresar después" -#: ../../extend/addon/addon/friendica/dfrn_request.php:690 -#: ../../extend/addon/addon/friendica/dfrn_request.php:707 -msgid "Confirm" -msgstr "Confirmar" +#: ../../addon/openclipatar/openclipatar.php:56 +msgid "Page to load after image selection." +msgstr "Página para cargar después de la selección de imágenes." -#: ../../extend/addon/addon/friendica/dfrn_request.php:702 -msgid "Hide this contact" -msgstr "Ocultar este contacto" +#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1046 +#: ../../include/nav.php:107 +msgid "Edit Profile" +msgstr "Editar el perfil" -#: ../../extend/addon/addon/friendica/dfrn_request.php:705 -#, php-format -msgid "Welcome home %s." -msgstr "Bienvenido a la página principal %s." +#: ../../addon/openclipatar/openclipatar.php:59 +msgid "Profile List" +msgstr "Lista de perfiles" -#: ../../extend/addon/addon/friendica/dfrn_request.php:706 -#, php-format -msgid "Please confirm your introduction/connection request to %s." -msgstr "Por favor, confirme su solicitud de conexión a %s." +#: ../../addon/openclipatar/openclipatar.php:61 +msgid "Order of Preferred" +msgstr "Orden de preferencia" -#: ../../extend/addon/addon/friendica/dfrn_request.php:836 -msgid "" -"Please enter your 'Identity Address' from one of the following supported " -"communications networks:" -msgstr "Por favor, elija su 'dirección identificativa' de entre las siguientes redes de comunicación soportadas: " +#: ../../addon/openclipatar/openclipatar.php:61 +msgid "Sort order of preferred clipart ids." +msgstr "Orden de clasificación de los identificadores de imágenes clipart preferidas." -#: ../../extend/addon/addon/friendica/dfrn_request.php:857 -#, php-format -msgid "" -"If you are not yet a member of the free social web, <a " -"href=\"%s/siteinfo\">follow this link to find a public Friendica site and " -"join us today</a>." -msgstr "Si aún no es miembro de las redes sociales libres, <a href=\"%s/siteinfo\">siga este enlace para encontrar un sitio público de Friendica y unirse a nosotros hoy</a>." +#: ../../addon/openclipatar/openclipatar.php:62 +#: ../../addon/openclipatar/openclipatar.php:68 +msgid "Newest first" +msgstr "Las más nuevas en primer lugar" -#: ../../extend/addon/addon/friendica/dfrn_request.php:862 -msgid "Friend/Connection Request" -msgstr "Solicitud de conexión o amistad" +#: ../../addon/openclipatar/openclipatar.php:65 +msgid "As entered" +msgstr "Tal como se ingresaron" -#: ../../extend/addon/addon/friendica/dfrn_request.php:863 -msgid "" -"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " -"testuser@identi.ca" -msgstr "Ejemplos: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca" +#: ../../addon/openclipatar/openclipatar.php:67 +msgid "Order of other" +msgstr "Orden de los demás" -#: ../../extend/addon/addon/friendica/dfrn_request.php:864 -msgid "Please answer the following:" -msgstr "Por favor, responda a lo siguiente: " +#: ../../addon/openclipatar/openclipatar.php:67 +msgid "Sort order of other clipart ids." +msgstr "Orden de clasificación de otros ids de imágenes clipart." -#: ../../extend/addon/addon/friendica/dfrn_request.php:865 -#, php-format -msgid "Does %s know you?" -msgstr "¿%s le conoce?" +#: ../../addon/openclipatar/openclipatar.php:69 +msgid "Most downloaded first" +msgstr "Las más descargadas en primer lugar" + +#: ../../addon/openclipatar/openclipatar.php:70 +msgid "Most liked first" +msgstr "Las más apreciadas en primer lugar" -#: ../../extend/addon/addon/friendica/dfrn_request.php:869 -msgid "Add a personal note:" -msgstr "Añadir un comentario personal: " +#: ../../addon/openclipatar/openclipatar.php:72 +msgid "Preferred IDs Message" +msgstr "Mensaje de IDs preferido" -#: ../../extend/addon/addon/friendica/dfrn_request.php:871 -#: ../../include/network.php:2265 ../../include/network.php:2266 -msgid "Friendica" -msgstr "Friendica" +#: ../../addon/openclipatar/openclipatar.php:72 +msgid "Message to display above preferred results." +msgstr "Mensaje para mostrar sobre los resultados preferidos." -#: ../../extend/addon/addon/friendica/dfrn_request.php:872 -msgid "StatusNet/Federated Social Web" -msgstr "Red social federada StatusNet" +#: ../../addon/openclipatar/openclipatar.php:78 +msgid "Uploaded by: " +msgstr "Subida por: " -#: ../../extend/addon/addon/friendica/dfrn_request.php:873 -#: ../../include/network.php:2271 -msgid "Diaspora" -msgstr "Diaspora" +#: ../../addon/openclipatar/openclipatar.php:78 +msgid "Drawn by: " +msgstr "Creada por: " -#: ../../extend/addon/addon/friendica/dfrn_request.php:874 -#, php-format +#: ../../addon/openclipatar/openclipatar.php:192 +msgid "Or select from a free OpenClipart.org image:" +msgstr "O seleccionar una imagen gratuita de OpenClipart.org: " + +#: ../../addon/openclipatar/openclipatar.php:195 +msgid "Search Term" +msgstr "Término de búsqueda" + +#: ../../addon/openclipatar/openclipatar.php:232 +msgid "Unknown error. Please try again later." +msgstr "Error desconocido. Por favor, inténtelo otra vez." + +#: ../../addon/openclipatar/openclipatar.php:308 +msgid "Profile photo updated successfully." +msgstr "Se ha actualizado con éxito la foto de perfil." + +#: ../../addon/adultphotoflag/adultphotoflag.php:24 +msgid "Flag Adult Photos" +msgstr "Indicador (\"flag\") de fotos de adultos" + +#: ../../addon/adultphotoflag/adultphotoflag.php:25 msgid "" -" - please do not use this form. Instead, enter %s into your Diaspora search" -" bar." -msgstr "- Por favor, no use este formato. En su lugar, escriba %s en la barra de búsqueda de Diaspora." +"Provide photo edit option to hide inappropriate photos from default album " +"view" +msgstr "Proporcionar una opción de edición de fotos para ocultar las fotos inapropiadas de la vista de álbum predeterminada" -#: ../../extend/addon/addon/friendica/dfrn_request.php:875 -msgid "Your Identity Address:" -msgstr "Su dirección identificativa: " +#: ../../addon/wppost/wppost.php:45 +msgid "Post to WordPress" +msgstr "Publicar en WordPress" -#: ../../extend/addon/addon/friendica/dfrn_request.php:878 -msgid "Submit Request" -msgstr "Enviar la solicitud" +#: ../../addon/wppost/wppost.php:82 +msgid "Enable WordPress Post Plugin" +msgstr "Habilitar el plugin de publicación en WordPress" -#: ../../extend/addon/addon/friendica/friendica.php:113 -#: ../../extend/addon/addon/gnusoc/gnusoc.php:118 -msgid "GNU-Social Protocol Settings updated." -msgstr "Se han actualizado los ajustes del protocolo de GNU-Social." +#: ../../addon/wppost/wppost.php:86 +msgid "WordPress username" +msgstr "Nombre de usuario de WordPress" -#: ../../extend/addon/addon/friendica/friendica.php:124 -msgid "Enable the (experimental) GNU-Social protocol for this channel" -msgstr "Activar el protocolo (experimental) de GNU-Social para este canal" +#: ../../addon/wppost/wppost.php:90 +msgid "WordPress password" +msgstr "Contraseña de WordPress" -#: ../../extend/addon/addon/friendica/friendica.php:128 -#: ../../extend/addon/addon/gnusoc/gnusoc.php:133 -msgid "GNU-Social Protocol Settings" -msgstr "Ajustes del protocolo de GNU-Social" +#: ../../addon/wppost/wppost.php:94 +msgid "WordPress API URL" +msgstr "URL de la API de WordPress" -#: ../../extend/addon/addon/friendica/friendica.php:185 -#: ../../extend/addon/addon/gnusoc/gnusoc.php:323 -msgid "Follow" -msgstr "Seguir" +#: ../../addon/wppost/wppost.php:95 +msgid "Typically https://your-blog.tld/xmlrpc.php" +msgstr "Habitualmente https://your-blog.tld/xmlrpc.php" -#: ../../extend/addon/addon/friendica/friendica.php:188 -#: ../../extend/addon/addon/gnusoc/gnusoc.php:326 -#, php-format -msgid "%1$s is now following %2$s" -msgstr "%1$s está siguiendo ahora a %2$s" +#: ../../addon/wppost/wppost.php:98 +msgid "WordPress blogid" +msgstr "Blog de WordPress" -#: ../../extend/addon/addon/frphotos/frphotos.php:91 -msgid "Friendica Photo Album Import" -msgstr "Importar un álbum de fotos de Friendica" +#: ../../addon/wppost/wppost.php:99 +msgid "For multi-user sites such as wordpress.com, otherwise leave blank" +msgstr "Para sitios multiusuario como wordpress.com, de lo contrario, dejar en blanco" -#: ../../extend/addon/addon/frphotos/frphotos.php:92 -msgid "This will import all your Friendica photo albums to this Red channel." -msgstr "Esto importará todos sus álbumes de fotos de Friendica a este canal de Hubzilla." +#: ../../addon/wppost/wppost.php:105 +msgid "Post to WordPress by default" +msgstr "Publicar en WordPress por defecto" -#: ../../extend/addon/addon/frphotos/frphotos.php:93 -msgid "Friendica Server base URL" -msgstr "URL base del servidor de Friendica" +#: ../../addon/wppost/wppost.php:109 +msgid "Forward comments (requires hubzilla_wp plugin)" +msgstr "Reenviar comentarios (requerido por el plugin hubzilla_wp)" -#: ../../extend/addon/addon/frphotos/frphotos.php:94 -msgid "Friendica Login Username" -msgstr "Nombre de inicio de sesión en Friendica" +#: ../../addon/wppost/wppost.php:113 +msgid "WordPress Post Settings" +msgstr "Ajustes de publicación en WordPress" -#: ../../extend/addon/addon/frphotos/frphotos.php:95 -msgid "Friendica Login Password" -msgstr "Contraseña de inicio de sesión en Friendica" +#: ../../addon/wppost/wppost.php:129 +msgid "Wordpress Settings saved." +msgstr "Se han guardado los ajustes de WordPress." -#: ../../extend/addon/addon/hubwall/hubwall.php:19 -msgid "Send email to all members" -msgstr "Enviar un correo electrónico a todos los miembros" +#: ../../addon/nsfw/nsfw.php:80 +msgid "" +"This plugin looks in posts for the words/text you specify below, and " +"collapses any content containing those keywords so it is not displayed at " +"inappropriate times, such as sexual innuendo that may be improper in a work " +"setting. It is polite and recommended to tag any content containing nudity " +"with #NSFW. This filter can also match any other word/text you specify, and" +" can thereby be used as a general purpose content filter." +msgstr "Este complemento busca en los mensajes las palabras o texto que se especifican a continuación y contrae cualquier contenido que contenga esas palabras clave para que no se muestre en momentos inapropiados, como insinuaciones sexuales que pueden ser impropias en un entorno de trabajo. Es una muestra de educación y se recomienda marcar cualquier contenido que contenga desnudos con #NSFW. Este filtro también puede coincidir con cualquier otra palabra o texto que especifique y, por lo tanto, puede utilizarse como un filtro de contenido de propósito general." -#: ../../extend/addon/addon/hubwall/hubwall.php:33 -#, php-format -msgid "$1%s Administrator" -msgstr "Administrador de $1%s " +#: ../../addon/nsfw/nsfw.php:84 +msgid "Enable Content filter" +msgstr "Habilitar filtro de contenido" -#: ../../extend/addon/addon/hubwall/hubwall.php:50 -#: ../../extend/addon/addon/mailtest/mailtest.php:50 -msgid "No recipients found." -msgstr "No se han encontrado destinatarios." +#: ../../addon/nsfw/nsfw.php:88 +msgid "Comma separated list of keywords to hide" +msgstr "Lista separada por comas de palabras clave para ocultar" -#: ../../extend/addon/addon/hubwall/hubwall.php:73 -#, php-format -msgid "%1$d of %2$d messages sent." -msgstr "%1$d de %2$d mensajes enviados." +#: ../../addon/nsfw/nsfw.php:88 +msgid "Word, /regular-expression/, lang=xx, lang!=xx" +msgstr "Palabra, /expresión regular/, lang=xx, lang!=xx" -#: ../../extend/addon/addon/hubwall/hubwall.php:81 -msgid "Send email to all hub members." -msgstr "Enviar un correo electrónico a todos los miembros del hub." +#: ../../addon/nsfw/nsfw.php:92 +msgid "Not Safe For Work Settings" +msgstr "No es seguro para ajustes de trabajo" -#: ../../extend/addon/addon/hubwall/hubwall.php:92 -#: ../../extend/addon/addon/mailtest/mailtest.php:96 -msgid "Message subject" -msgstr "Asunto del mensaje" +#: ../../addon/nsfw/nsfw.php:92 +msgid "General Purpose Content Filter" +msgstr "Filtro de contenido de propósito general" -#: ../../extend/addon/addon/hubwall/hubwall.php:93 -msgid "Sender Email address" -msgstr "Dirección de correo electrónico del remitente" +#: ../../addon/nsfw/nsfw.php:110 +msgid "NSFW Settings saved." +msgstr "Se han guardado los ajustes de NSFW." -#: ../../extend/addon/addon/hubwall/hubwall.php:94 -msgid "Test mode (only send to hub administrator)" -msgstr "Modo de prueba (enviar sólo al administrador del hub)" +#: ../../addon/nsfw/nsfw.php:207 +msgid "Possible adult content" +msgstr "Posible contenido para adultos" -#: ../../extend/addon/addon/ijpost/ijpost.php:42 +#: ../../addon/nsfw/nsfw.php:211 +#, php-format +msgid "%s - view" +msgstr "ver - %s" + +#: ../../addon/ijpost/ijpost.php:42 msgid "Post to Insanejournal" msgstr "Publicar en Insanejournal" -#: ../../extend/addon/addon/ijpost/ijpost.php:73 +#: ../../addon/ijpost/ijpost.php:73 msgid "Enable InsaneJournal Post Plugin" msgstr "Habilitar el plugin de publicación en InsaneJournal" -#: ../../extend/addon/addon/ijpost/ijpost.php:77 +#: ../../addon/ijpost/ijpost.php:77 msgid "InsaneJournal username" msgstr "Nombre de usuario en InsaneJournal" -#: ../../extend/addon/addon/ijpost/ijpost.php:81 +#: ../../addon/ijpost/ijpost.php:81 msgid "InsaneJournal password" msgstr "Contraseña en InsaneJournal" -#: ../../extend/addon/addon/ijpost/ijpost.php:85 +#: ../../addon/ijpost/ijpost.php:85 msgid "Post to InsaneJournal by default" msgstr "Publicar por defecto en InsaneJournal" -#: ../../extend/addon/addon/ijpost/ijpost.php:89 +#: ../../addon/ijpost/ijpost.php:89 msgid "InsaneJournal Post Settings" msgstr "Ajustes de publicación en InsaneJournal" -#: ../../extend/addon/addon/ijpost/ijpost.php:104 +#: ../../addon/ijpost/ijpost.php:104 msgid "Insane Journal Settings saved." msgstr "Se han guardado los ajustes de InsaneJournal." -#: ../../extend/addon/addon/irc/irc.php:45 -msgid "Channels to auto connect" -msgstr "Canales para conexión automática" +#: ../../addon/js_upload/js_upload.php:44 +msgid "Upload a file" +msgstr "Subir un fichero" -#: ../../extend/addon/addon/irc/irc.php:45 -#: ../../extend/addon/addon/irc/irc.php:49 -msgid "Comma separated list" -msgstr "Lista separada por comas" +#: ../../addon/js_upload/js_upload.php:45 +msgid "Drop files here to upload" +msgstr "Arrastre los ficheros aquí para subirlos" -#: ../../extend/addon/addon/irc/irc.php:49 -#: ../../extend/addon/addon/irc/irc.php:96 -msgid "Popular Channels" -msgstr "Canales populares" +#: ../../addon/js_upload/js_upload.php:47 +msgid "Failed" +msgstr "Ha fallado" -#: ../../extend/addon/addon/irc/irc.php:53 -msgid "IRC Settings" -msgstr "Ajustes de IRC" +#: ../../addon/js_upload/js_upload.php:315 +msgid "No files were uploaded." +msgstr "No se han subido ficheros." -#: ../../extend/addon/addon/irc/irc.php:69 -msgid "IRC settings saved." -msgstr "Se han guardado los ajustes de IRC." +#: ../../addon/js_upload/js_upload.php:322 +msgid "Uploaded file is empty" +msgstr "El fichero subido está vacío" -#: ../../extend/addon/addon/irc/irc.php:74 -msgid "IRC Chatroom" -msgstr "Sala de chat IRC" +#: ../../addon/js_upload/js_upload.php:335 +msgid "Image exceeds size limit of " +msgstr "La imagen supera el límite de tamaño de " -#: ../../extend/addon/addon/jappixmini/jappixmini.php:305 -#: ../../include/channel.php:1139 ../../include/channel.php:1301 -msgid "Status:" -msgstr "Estado:" +#: ../../addon/js_upload/js_upload.php:347 +msgid "File has an invalid extension, it should be one of " +msgstr "El fichero tiene una extensión no válida, debería ser una de estas: " -#: ../../extend/addon/addon/jappixmini/jappixmini.php:309 -msgid "Activate addon" -msgstr "Habilitar complemento" +#: ../../addon/js_upload/js_upload.php:359 +msgid "Upload was cancelled, or server error encountered" +msgstr "Se canceló la carga o se encontró un error del servidor" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:313 -msgid "Hide Jappixmini Chat-Widget from the webinterface" -msgstr "Ocultar el widget de chat Jappixmini en la interfaz web" +#: ../../addon/dwpost/dwpost.php:42 +msgid "Post to Dreamwidth" +msgstr "Publicar en Dreamwidth" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:318 -msgid "Jabber username" -msgstr "Nombre de usuario en Jabber" +#: ../../addon/dwpost/dwpost.php:73 +msgid "Enable Dreamwidth Post Plugin" +msgstr "Activar el plugin de publicación en Dreamwidth" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:324 -msgid "Jabber server" -msgstr "Servidor de Jabber" +#: ../../addon/dwpost/dwpost.php:77 +msgid "Dreamwidth username" +msgstr "Nombre de usuario en Dreamwidth" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:330 -msgid "Jabber BOSH host URL" -msgstr "URL del host BOSH de Jabber" +#: ../../addon/dwpost/dwpost.php:81 +msgid "Dreamwidth password" +msgstr "Contraseña en Dreamwidth" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:337 -msgid "Jabber password" -msgstr "Contraseña en Jabber" +#: ../../addon/dwpost/dwpost.php:85 +msgid "Post to Dreamwidth by default" +msgstr "Publicar en Dreamwidth de forma predeterminada" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:343 -msgid "Encrypt Jabber password with Hubzilla password" -msgstr "Cifrar la contraseña de Jabber con la contraseña de Hubzilla" +#: ../../addon/dwpost/dwpost.php:89 +msgid "Dreamwidth Post Settings" +msgstr "Ajustes de publicación en Dreamwidth" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:347 -#: ../../extend/addon/addon/redred/redred.php:115 -msgid "Hubzilla password" -msgstr "Contraseña de Hubzilla" +#: ../../addon/firefox/firefox.php:23 +msgid "Install Firefox Sharing Tools" +msgstr "Instalar las herramientas de compartición de Firefox" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:351 -#: ../../extend/addon/addon/jappixmini/jappixmini.php:355 -msgid "Approve subscription requests from Hubzilla contacts automatically" -msgstr "Aprobar automáticamente las solicitudes de suscripción de los contactos de Hubzilla" +#: ../../addon/firefox/firefox.php:34 +msgid "Share content from Firefox to $Projectname" +msgstr "Compartir contenido desde Firefox a $Projectname" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:359 -msgid "Purge internal list of jabber addresses of contacts" -msgstr "Purgar la lista interna de las direcciones de contactos de jabber" +#: ../../addon/firefox/firefox.php:37 +msgid "Install Firefox Sharing Tools to this web browser" +msgstr "Instalar las herramientas de compartición de Firefox en este navegador" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:364 -msgid "Configuration Help" -msgstr "Ayuda para los ajustes" +#: ../../addon/dirstats/dirstats.php:94 +msgid "Hubzilla Directory Stats" +msgstr "Estadísticas de directorio de Hubzilla" -#: ../../extend/addon/addon/jappixmini/jappixmini.php:371 -msgid "Jappix Mini Settings" -msgstr "Ajustes de Jappix Mini" +#: ../../addon/dirstats/dirstats.php:95 +msgid "Total Hubs" +msgstr "Número total de servidores" -#: ../../extend/addon/addon/js_upload/js_upload.php:44 -msgid "Upload a file" -msgstr "Subir un fichero" +#: ../../addon/dirstats/dirstats.php:97 +msgid "Hubzilla Hubs" +msgstr "Servidores (hubs) de Hubzilla" -#: ../../extend/addon/addon/js_upload/js_upload.php:45 -msgid "Drop files here to upload" -msgstr "Arrastre los ficheros aquí para subirlos" +#: ../../addon/dirstats/dirstats.php:99 +msgid "Friendica Hubs" +msgstr "Servidores (hubs) de Friendica" -#: ../../extend/addon/addon/js_upload/js_upload.php:47 -msgid "Failed" -msgstr "Ha fallado" +#: ../../addon/dirstats/dirstats.php:101 +msgid "Diaspora Pods" +msgstr "Servidores (pods) de Diaspora" -#: ../../extend/addon/addon/js_upload/js_upload.php:315 -msgid "No files were uploaded." -msgstr "No se han subido ficheros." +#: ../../addon/dirstats/dirstats.php:103 +msgid "Hubzilla Channels" +msgstr "Canales de Hubzilla" -#: ../../extend/addon/addon/js_upload/js_upload.php:322 -msgid "Uploaded file is empty" -msgstr "El fichero subido está vacío" +#: ../../addon/dirstats/dirstats.php:105 +msgid "Friendica Channels" +msgstr "Canales de Friendica" -#: ../../extend/addon/addon/js_upload/js_upload.php:335 -msgid "Image exceeds size limit of " -msgstr "La imagen supera el límite de tamaño de " +#: ../../addon/dirstats/dirstats.php:107 +msgid "Diaspora Channels" +msgstr "Canales de Diaspora" -#: ../../extend/addon/addon/js_upload/js_upload.php:347 -msgid "File has an invalid extension, it should be one of " -msgstr "El fichero tiene una extensión no válida, debería ser una de estas: " +#: ../../addon/dirstats/dirstats.php:109 +msgid "Aged 35 and above" +msgstr "De 35 años de edad en adelante" -#: ../../extend/addon/addon/js_upload/js_upload.php:359 -msgid "Upload was cancelled, or server error encountered" -msgstr "Se canceló la carga o se encontró un error del servidor" +#: ../../addon/dirstats/dirstats.php:111 +msgid "Aged 34 and under" +msgstr "De 34 o menos años de edad" -#: ../../extend/addon/addon/ldapauth/ldapauth.php:61 -msgid "An account has been created for you." -msgstr "Se ha creado una cuenta para usted." +#: ../../addon/dirstats/dirstats.php:113 +msgid "Average Age" +msgstr "Promedio de edad" -#: ../../extend/addon/addon/ldapauth/ldapauth.php:68 -msgid "Authentication successful but rejected: account creation is disabled." -msgstr "Autenticación correcta pero rechazada: la creación de cuentas está deshabilitada." +#: ../../addon/dirstats/dirstats.php:115 +msgid "Known Chatrooms" +msgstr "Salas de chat conocidas" -#: ../../extend/addon/addon/libertree/libertree.php:38 -msgid "Post to Libertree" -msgstr "Publicar en Libertree" +#: ../../addon/dirstats/dirstats.php:117 +msgid "Known Tags" +msgstr "Etiquetas conocidas" -#: ../../extend/addon/addon/libertree/libertree.php:69 -msgid "Enable Libertree Post Plugin" -msgstr "Habilitar el plugin de publicación en Libertree" +#: ../../addon/dirstats/dirstats.php:119 +msgid "" +"Please note Diaspora and Friendica statistics are merely those **this " +"directory** is aware of, and not all those known in the network. This also " +"applies to chatrooms," +msgstr "Tenga en cuenta que las estadísticas de Diaspora y Friendica se refieren únicamente a aquellas de las que **este directorio** es consciente, y no a todos los conocidos en la red. Esto también es aplicable a las salas de chat," -#: ../../extend/addon/addon/libertree/libertree.php:73 -msgid "Libertree API token" -msgstr "Token de la API de Libertree" +#: ../../addon/mailhost/mailhost.php:36 +msgid "Email notification hub" +msgstr "Notificación por correo electrónico del hub" -#: ../../extend/addon/addon/libertree/libertree.php:77 -msgid "Libertree site URL" -msgstr "URL del servidor de Libertree" +#: ../../addon/mailhost/mailhost.php:36 +msgid "Hostname" +msgstr "Nombre del host" -#: ../../extend/addon/addon/libertree/libertree.php:81 -msgid "Post to Libertree by default" -msgstr "Publicar en Libertree por defecto" +#: ../../addon/mailhost/mailhost.php:40 +msgid "Mailhost Settings" +msgstr "Ajustes de Mailhost" -#: ../../extend/addon/addon/libertree/libertree.php:85 -msgid "Libertree Post Settings" -msgstr "Ajustes de publicación en Libertree" +#: ../../addon/mailhost/mailhost.php:54 +msgid "MAILHOST Settings saved." +msgstr "Se han guardado los ajustes de MAILHOST." -#: ../../extend/addon/addon/libertree/libertree.php:99 -msgid "Libertree Settings saved." -msgstr "Se han guardado los ajustes de Libertree." +#: ../../addon/likebanner/likebanner.php:51 +msgid "Your Webbie:" +msgstr "Su webbie: " + +#: ../../addon/likebanner/likebanner.php:54 +msgid "Fontsize (px):" +msgstr "Tamaño de fuente (px): " + +#: ../../addon/likebanner/likebanner.php:68 +msgid "Link:" +msgstr "Enlace: " -#: ../../extend/addon/addon/ljpost/ljpost.php:42 +#: ../../addon/likebanner/likebanner.php:70 +msgid "Like us on Hubzilla" +msgstr "Múestrenos su agrado en Hubzilla" + +#: ../../addon/likebanner/likebanner.php:72 +msgid "Embed:" +msgstr "Incorporado: " + +#: ../../addon/redphotos/redphotos.php:106 +msgid "Photos imported" +msgstr "Se han importado las fotos" + +#: ../../addon/redphotos/redphotos.php:129 +msgid "Redmatrix Photo Album Import" +msgstr "Importar un álbum de fotos de Redmatrix" + +#: ../../addon/redphotos/redphotos.php:130 +msgid "This will import all your Redmatrix photo albums to this channel." +msgstr "Esto importará todos sus álbumes de fotos de Redmatrix a este canal." + +#: ../../addon/redphotos/redphotos.php:131 +#: ../../addon/redfiles/redfiles.php:121 +msgid "Redmatrix Server base URL" +msgstr "URL base del servidor Redmatrix" + +#: ../../addon/redphotos/redphotos.php:132 +#: ../../addon/redfiles/redfiles.php:122 +msgid "Redmatrix Login Username" +msgstr "Nombre de inicio de sesión en Redmatrix" + +#: ../../addon/redphotos/redphotos.php:133 +#: ../../addon/redfiles/redfiles.php:123 +msgid "Redmatrix Login Password" +msgstr "Contraseña de inicio de sesión en Redmatrix" + +#: ../../addon/redphotos/redphotos.php:134 +msgid "Import just this album" +msgstr "Importar solo este álbum" + +#: ../../addon/redphotos/redphotos.php:134 +msgid "Leave blank to import all albums" +msgstr "Dejar en blanco para importar todos los álbumes" + +#: ../../addon/redphotos/redphotos.php:135 +msgid "Maximum count to import" +msgstr "Límite máximo de importación" + +#: ../../addon/redphotos/redphotos.php:135 +msgid "0 or blank to import all available" +msgstr "0 o en blanco para importar todos los disponibles" + +#: ../../addon/irc/irc.php:45 +msgid "Channels to auto connect" +msgstr "Canales para conexión automática" + +#: ../../addon/irc/irc.php:45 ../../addon/irc/irc.php:49 +msgid "Comma separated list" +msgstr "Lista separada por comas" + +#: ../../addon/irc/irc.php:49 ../../addon/irc/irc.php:96 +msgid "Popular Channels" +msgstr "Canales populares" + +#: ../../addon/irc/irc.php:53 +msgid "IRC Settings" +msgstr "Ajustes de IRC" + +#: ../../addon/irc/irc.php:69 +msgid "IRC settings saved." +msgstr "Se han guardado los ajustes de IRC." + +#: ../../addon/irc/irc.php:74 +msgid "IRC Chatroom" +msgstr "Sala de chat IRC" + +#: ../../addon/ljpost/ljpost.php:42 msgid "Post to LiveJournal" msgstr "Publicar en LiveJournal" -#: ../../extend/addon/addon/ljpost/ljpost.php:70 +#: ../../addon/ljpost/ljpost.php:70 msgid "Enable LiveJournal Post Plugin" msgstr "Habilitar el plugin de publicación en LiveJournal" -#: ../../extend/addon/addon/ljpost/ljpost.php:74 +#: ../../addon/ljpost/ljpost.php:74 msgid "LiveJournal username" msgstr "Nombre de usuario en LiveJournal" -#: ../../extend/addon/addon/ljpost/ljpost.php:78 +#: ../../addon/ljpost/ljpost.php:78 msgid "LiveJournal password" msgstr "Contraseña en LiveJournal" -#: ../../extend/addon/addon/ljpost/ljpost.php:82 +#: ../../addon/ljpost/ljpost.php:82 msgid "Post to LiveJournal by default" msgstr "Publicar en LiveJournal por defecto" -#: ../../extend/addon/addon/ljpost/ljpost.php:86 +#: ../../addon/ljpost/ljpost.php:86 msgid "LiveJournal Post Settings" msgstr "Ajustes de publicación en LiveJournal" -#: ../../extend/addon/addon/ljpost/ljpost.php:101 +#: ../../addon/ljpost/ljpost.php:101 msgid "LiveJournal Settings saved." msgstr "Se han guardado los ajustes de LiveJournal." -#: ../../extend/addon/addon/logrot/logrot.php:36 -msgid "Logfile archive directory" -msgstr "Directorio de los ficheros de informe" - -#: ../../extend/addon/addon/logrot/logrot.php:36 -msgid "Directory to store rotated logs" -msgstr "Directorio para almacenar los informes rotados" - -#: ../../extend/addon/addon/logrot/logrot.php:37 -msgid "Logfile size in bytes before rotating" -msgstr "Tamaño del fichero de informe en bytes antes de rotarlo" +#: ../../addon/openid/openid.php:49 +msgid "" +"We encountered a problem while logging in with the OpenID you provided. " +"Please check the correct spelling of the ID." +msgstr "Encontramos un problema al iniciar sesión con el OpenID que proporcionó. Compruebe si el ID está correctamente escrito." -#: ../../extend/addon/addon/logrot/logrot.php:38 -msgid "Number of logfiles to retain" -msgstr "Número de ficheros de informe que se deben retener" +#: ../../addon/openid/openid.php:49 +msgid "The error message was:" +msgstr "El mensaje de error ha sido: " -#: ../../extend/addon/addon/mailhost/mailhost.php:36 -msgid "Email notification hub" -msgstr "Notificación por correo electrónico del hub" +#: ../../addon/openid/MysqlProvider.php:52 +msgid "First Name" +msgstr "Nombre" -#: ../../extend/addon/addon/mailhost/mailhost.php:36 -msgid "Hostname" -msgstr "Nombre del host" +#: ../../addon/openid/MysqlProvider.php:53 +msgid "Last Name" +msgstr "Apellido" -#: ../../extend/addon/addon/mailhost/mailhost.php:40 -msgid "Mailhost Settings" -msgstr "Ajustes de Mailhost" +#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/redred.php:111 +msgid "Nickname" +msgstr "Alias" -#: ../../extend/addon/addon/mailhost/mailhost.php:54 -msgid "MAILHOST Settings saved." -msgstr "Se han guardado los ajustes de MAILHOST." +#: ../../addon/openid/MysqlProvider.php:55 +msgid "Full Name" +msgstr "Nombre completo" -#: ../../extend/addon/addon/moremoods/moremoods.php:19 -msgid "lonely" -msgstr "Solo/a" +#: ../../addon/openid/MysqlProvider.php:61 +msgid "Profile Photo 16px" +msgstr "Foto del perfil 16px" -#: ../../extend/addon/addon/moremoods/moremoods.php:20 -msgid "drunk" -msgstr "ebrio/a" +#: ../../addon/openid/MysqlProvider.php:62 +msgid "Profile Photo 32px" +msgstr "Foto del perfil 32px" -#: ../../extend/addon/addon/moremoods/moremoods.php:21 -msgid "horny" -msgstr "caliente" +#: ../../addon/openid/MysqlProvider.php:63 +msgid "Profile Photo 48px" +msgstr "Foto del perfil 48px" -#: ../../extend/addon/addon/moremoods/moremoods.php:22 -msgid "stoned" -msgstr "drogado/a" +#: ../../addon/openid/MysqlProvider.php:64 +msgid "Profile Photo 64px" +msgstr "Foto del perfil 64px" -#: ../../extend/addon/addon/moremoods/moremoods.php:23 -msgid "fucked up" -msgstr "jodido/a" +#: ../../addon/openid/MysqlProvider.php:65 +msgid "Profile Photo 80px" +msgstr "Foto del perfil 80px" -#: ../../extend/addon/addon/moremoods/moremoods.php:24 -msgid "clusterfucked" -msgstr "hecho/a polvo" +#: ../../addon/openid/MysqlProvider.php:66 +msgid "Profile Photo 128px" +msgstr "Foto del perfil 128px" -#: ../../extend/addon/addon/moremoods/moremoods.php:25 -msgid "crazy" -msgstr "loco/a" +#: ../../addon/openid/MysqlProvider.php:67 +msgid "Timezone" +msgstr "Zona horaria" -#: ../../extend/addon/addon/moremoods/moremoods.php:26 -msgid "hurt" -msgstr "ofendido/a" +#: ../../addon/openid/MysqlProvider.php:70 +msgid "Birth Year" +msgstr "Año de nacimiento" -#: ../../extend/addon/addon/moremoods/moremoods.php:27 -msgid "sleepy" -msgstr "soñoliento/a" +#: ../../addon/openid/MysqlProvider.php:71 +msgid "Birth Month" +msgstr "Mes de nacimiento" -#: ../../extend/addon/addon/moremoods/moremoods.php:28 -msgid "grumpy" -msgstr "gruñón/ona" +#: ../../addon/openid/MysqlProvider.php:72 +msgid "Birth Day" +msgstr "Día de nacimiento" -#: ../../extend/addon/addon/moremoods/moremoods.php:29 -msgid "high" -msgstr "superior" +#: ../../addon/openid/MysqlProvider.php:73 +msgid "Birthdate" +msgstr "Fecha de nacimiento" -#: ../../extend/addon/addon/moremoods/moremoods.php:30 -msgid "semi-conscious" -msgstr "semiconsciente" +#: ../../addon/openid/Mod_Openid.php:30 +msgid "OpenID protocol error. No ID returned." +msgstr "Error de protocolo OpenID. No se recuperó ninguna ID." -#: ../../extend/addon/addon/moremoods/moremoods.php:31 -msgid "in love" -msgstr "enamorado/a" +#: ../../addon/openid/Mod_Openid.php:188 ../../include/auth.php:286 +msgid "Login failed." +msgstr "El acceso ha fallado." -#: ../../extend/addon/addon/moremoods/moremoods.php:32 -msgid "in lust" -msgstr "lujurioso/a" +#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:49 +#: ../../include/selectors.php:66 +msgid "Male" +msgstr "Hombre" -#: ../../extend/addon/addon/moremoods/moremoods.php:33 -msgid "naked" -msgstr "desnudo/a" +#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:49 +#: ../../include/selectors.php:66 +msgid "Female" +msgstr "Mujer" -#: ../../extend/addon/addon/moremoods/moremoods.php:34 -msgid "stinky" -msgstr "apestoso/a" +#: ../../addon/randpost/randpost.php:97 +msgid "You're welcome." +msgstr "Bienvenido." -#: ../../extend/addon/addon/moremoods/moremoods.php:35 -msgid "sweaty" -msgstr "sudoroso/a" +#: ../../addon/randpost/randpost.php:98 +msgid "Ah shucks..." +msgstr "Ah, joder..." -#: ../../extend/addon/addon/moremoods/moremoods.php:36 -msgid "bleeding out" -msgstr "una maldición" +#: ../../addon/randpost/randpost.php:99 +msgid "Don't mention it." +msgstr "No lo menciones." -#: ../../extend/addon/addon/moremoods/moremoods.php:37 -msgid "victorious" -msgstr "victorioso/a" +#: ../../addon/randpost/randpost.php:100 +msgid "<blush>" +msgstr "<sonrojo>" -#: ../../extend/addon/addon/moremoods/moremoods.php:38 -msgid "defeated" -msgstr "derrotado/a" +#: ../../addon/startpage/startpage.php:109 +msgid "Page to load after login" +msgstr "Página para cargar tras el inicio de sesión" -#: ../../extend/addon/addon/moremoods/moremoods.php:39 -msgid "envious" -msgstr "envidioso/a" +#: ../../addon/startpage/startpage.php:109 +msgid "" +"Examples: "apps", "network?f=&gid=37" (privacy " +"collection), "channel" or "notifications/system" (leave " +"blank for default network page (grid)." +msgstr "Ejemplos: "aplicaciones", "mi red?f=&gid=37" (grupo de canales), "mi canal" or "notificaciones del sistema" (dejar en blanco para la página de mi red por defecto (grid)." -#: ../../extend/addon/addon/moremoods/moremoods.php:40 -msgid "jealous" -msgstr "celoso/a" +#: ../../addon/startpage/startpage.php:113 +msgid "Startpage Settings" +msgstr "Ajustes de startpage" -#: ../../extend/addon/addon/morepokes/morepokes.php:19 +#: ../../addon/morepokes/morepokes.php:19 msgid "bitchslap" msgstr "una bofetada humillante" -#: ../../extend/addon/addon/morepokes/morepokes.php:19 +#: ../../addon/morepokes/morepokes.php:19 msgid "bitchslapped" msgstr "ha abofeteado de forma humillante a" -#: ../../extend/addon/addon/morepokes/morepokes.php:20 +#: ../../addon/morepokes/morepokes.php:20 msgid "shag" msgstr "un polvo" -#: ../../extend/addon/addon/morepokes/morepokes.php:20 +#: ../../addon/morepokes/morepokes.php:20 msgid "shagged" msgstr "ha dejado exhausto/a a" -#: ../../extend/addon/addon/morepokes/morepokes.php:21 +#: ../../addon/morepokes/morepokes.php:21 msgid "patent" msgstr "una patente" -#: ../../extend/addon/addon/morepokes/morepokes.php:21 +#: ../../addon/morepokes/morepokes.php:21 msgid "patented" msgstr "ha patentado a" -#: ../../extend/addon/addon/morepokes/morepokes.php:22 +#: ../../addon/morepokes/morepokes.php:22 msgid "hug" msgstr "un abrazo" -#: ../../extend/addon/addon/morepokes/morepokes.php:22 +#: ../../addon/morepokes/morepokes.php:22 msgid "hugged" msgstr "ha abrazado a" -#: ../../extend/addon/addon/morepokes/morepokes.php:23 +#: ../../addon/morepokes/morepokes.php:23 msgid "murder" msgstr "un asesinato" -#: ../../extend/addon/addon/morepokes/morepokes.php:23 +#: ../../addon/morepokes/morepokes.php:23 msgid "murdered" msgstr "ha asesinado a" -#: ../../extend/addon/addon/morepokes/morepokes.php:24 +#: ../../addon/morepokes/morepokes.php:24 msgid "worship" msgstr "una alabanza" -#: ../../extend/addon/addon/morepokes/morepokes.php:24 +#: ../../addon/morepokes/morepokes.php:24 msgid "worshipped" msgstr "ha elogiado a" -#: ../../extend/addon/addon/morepokes/morepokes.php:25 +#: ../../addon/morepokes/morepokes.php:25 msgid "kiss" msgstr "un beso" -#: ../../extend/addon/addon/morepokes/morepokes.php:25 +#: ../../addon/morepokes/morepokes.php:25 msgid "kissed" msgstr "ha besado a" -#: ../../extend/addon/addon/morepokes/morepokes.php:26 +#: ../../addon/morepokes/morepokes.php:26 msgid "tempt" msgstr "una tentación" -#: ../../extend/addon/addon/morepokes/morepokes.php:26 +#: ../../addon/morepokes/morepokes.php:26 msgid "tempted" msgstr "ha tentado a" -#: ../../extend/addon/addon/morepokes/morepokes.php:27 +#: ../../addon/morepokes/morepokes.php:27 msgid "raise eyebrows at" msgstr "un levantamiento de cejas" -#: ../../extend/addon/addon/morepokes/morepokes.php:27 +#: ../../addon/morepokes/morepokes.php:27 msgid "raised their eyebrows at" msgstr "ha levantado las cejas a" -#: ../../extend/addon/addon/morepokes/morepokes.php:28 +#: ../../addon/morepokes/morepokes.php:28 msgid "insult" msgstr "un insulto" -#: ../../extend/addon/addon/morepokes/morepokes.php:28 +#: ../../addon/morepokes/morepokes.php:28 msgid "insulted" msgstr "ha insultado a" -#: ../../extend/addon/addon/morepokes/morepokes.php:29 +#: ../../addon/morepokes/morepokes.php:29 msgid "praise" msgstr "un elogio" -#: ../../extend/addon/addon/morepokes/morepokes.php:29 +#: ../../addon/morepokes/morepokes.php:29 msgid "praised" msgstr "ha elogiado a" -#: ../../extend/addon/addon/morepokes/morepokes.php:30 +#: ../../addon/morepokes/morepokes.php:30 msgid "be dubious of" msgstr "una indecisión" -#: ../../extend/addon/addon/morepokes/morepokes.php:30 +#: ../../addon/morepokes/morepokes.php:30 msgid "was dubious of" msgstr "estaba dudoso de" -#: ../../extend/addon/addon/morepokes/morepokes.php:31 +#: ../../addon/morepokes/morepokes.php:31 msgid "eat" msgstr "una comida" -#: ../../extend/addon/addon/morepokes/morepokes.php:31 +#: ../../addon/morepokes/morepokes.php:31 msgid "ate" msgstr "ha comido" -#: ../../extend/addon/addon/morepokes/morepokes.php:32 +#: ../../addon/morepokes/morepokes.php:32 msgid "giggle and fawn at" msgstr "una sonrisa aduladora" -#: ../../extend/addon/addon/morepokes/morepokes.php:32 +#: ../../addon/morepokes/morepokes.php:32 msgid "giggled and fawned at" msgstr "ha sonreído y adulado a" -#: ../../extend/addon/addon/morepokes/morepokes.php:33 +#: ../../addon/morepokes/morepokes.php:33 msgid "doubt" msgstr "una duda" -#: ../../extend/addon/addon/morepokes/morepokes.php:33 +#: ../../addon/morepokes/morepokes.php:33 msgid "doubted" msgstr "ha dudado de" -#: ../../extend/addon/addon/morepokes/morepokes.php:34 +#: ../../addon/morepokes/morepokes.php:34 msgid "glare" msgstr "una mirada furiosa" -#: ../../extend/addon/addon/morepokes/morepokes.php:34 +#: ../../addon/morepokes/morepokes.php:34 msgid "glared at" msgstr "ha mirado con furia" -#: ../../extend/addon/addon/morepokes/morepokes.php:35 +#: ../../addon/morepokes/morepokes.php:35 msgid "fuck" msgstr "una mierda" -#: ../../extend/addon/addon/morepokes/morepokes.php:35 +#: ../../addon/morepokes/morepokes.php:35 msgid "fucked" msgstr "ha mandado a la mierda a" -#: ../../extend/addon/addon/morepokes/morepokes.php:36 +#: ../../addon/morepokes/morepokes.php:36 msgid "bonk" msgstr "un golpe" -#: ../../extend/addon/addon/morepokes/morepokes.php:36 +#: ../../addon/morepokes/morepokes.php:36 msgid "bonked" msgstr "ha golpeado a" -#: ../../extend/addon/addon/morepokes/morepokes.php:37 +#: ../../addon/morepokes/morepokes.php:37 msgid "declare undying love for" msgstr "una declaración de amor eterno" -#: ../../extend/addon/addon/morepokes/morepokes.php:37 +#: ../../addon/morepokes/morepokes.php:37 msgid "declared undying love for" msgstr "ha declarado amor eterno a" -#: ../../extend/addon/addon/msgfooter/msgfooter.php:46 -#: ../../extend/addon/addon/xmpp/xmpp.php:91 -msgid "Save Settings" -msgstr "Guardar ajustes" - -#: ../../extend/addon/addon/msgfooter/msgfooter.php:47 -msgid "text to include in all outgoing posts from this site" -msgstr "texto a incluir en todos los mensajes salientes de este sitio" - -#: ../../extend/addon/addon/nofed/nofed.php:42 -msgid "Federate" -msgstr "Federar" - -#: ../../extend/addon/addon/nofed/nofed.php:56 -msgid "nofed Settings saved." -msgstr "Se han guardado los ajustes de nofed." - -#: ../../extend/addon/addon/nofed/nofed.php:72 -msgid "Allow Federation Toggle" -msgstr "Permitir alternancia de federación" +#: ../../addon/diaspora/diaspora.php:677 +msgid "Diaspora Protocol Settings updated." +msgstr "Los ajustes del protocolo de Diaspora se han actualizado." -#: ../../extend/addon/addon/nofed/nofed.php:76 -msgid "Federate posts by default" -msgstr "Federar las publicaciones por defecto" +#: ../../addon/diaspora/diaspora.php:696 +msgid "Enable the Diaspora protocol for this channel" +msgstr "Activar el protocolo de Diaspora para este canal" -#: ../../extend/addon/addon/nofed/nofed.php:80 -msgid "NoFed Settings" -msgstr "Ajustes de NoFed" +#: ../../addon/diaspora/diaspora.php:700 +msgid "Allow any Diaspora member to comment on your public posts" +msgstr "Permitir a cualquier miembro de Diaspora comentar sus entradas públicas" -#: ../../extend/addon/addon/nsabait/nsabait.php:125 -msgid "Nsabait Settings updated." -msgstr "Se han actualizado los ajustes de Nsabait" +#: ../../addon/diaspora/diaspora.php:704 +msgid "Prevent your hashtags from being redirected to other sites" +msgstr "Impedir que sus \"hashtags\" sean redirigidos a otros sitios " -#: ../../extend/addon/addon/nsabait/nsabait.php:157 -msgid "Enable NSAbait Plugin" -msgstr "Habilitar el plugin NSAbait" +#: ../../addon/diaspora/diaspora.php:709 +msgid "Followed hashtags (comma separated, do not include the #)" +msgstr "\"Hashtags\" seguidos (separados por comas, sin incluir #)" -#: ../../extend/addon/addon/nsabait/nsabait.php:161 -msgid "NSAbait Settings" -msgstr "Ajustes de NSAbait" +#: ../../addon/diaspora/diaspora.php:714 +msgid "Diaspora Protocol Settings" +msgstr "Ajustes del protocolo de Diaspora" -#: ../../extend/addon/addon/nsfw/nsfw.php:80 -msgid "" -"This plugin looks in posts for the words/text you specify below, and " -"collapses any content containing those keywords so it is not displayed at " -"inappropriate times, such as sexual innuendo that may be improper in a work " -"setting. It is polite and recommended to tag any content containing nudity " -"with #NSFW. This filter can also match any other word/text you specify, and" -" can thereby be used as a general purpose content filter." -msgstr "Este complemento busca en los mensajes las palabras o texto que se especifican a continuación y contrae cualquier contenido que contenga esas palabras clave para que no se muestre en momentos inapropiados, como insinuaciones sexuales que pueden ser impropias en un entorno de trabajo. Es una muestra de educación y se recomienda marcar cualquier contenido que contenga desnudos con #NSFW. Este filtro también puede coincidir con cualquier otra palabra o texto que especifique y, por lo tanto, puede utilizarse como un filtro de contenido de propósito general." +#: ../../addon/diaspora/import_diaspora.php:16 +msgid "No username found in import file." +msgstr "No se ha encontrado el nombre de usuario en el fichero de importación." -#: ../../extend/addon/addon/nsfw/nsfw.php:84 -msgid "Enable Content filter" -msgstr "Habilitar filtro de contenido" +#: ../../addon/diaspora/import_diaspora.php:41 ../../include/import.php:62 +msgid "Unable to create a unique channel address. Import failed." +msgstr "No se ha podido crear una dirección de canal única. Ha fallado la importación." -#: ../../extend/addon/addon/nsfw/nsfw.php:88 -msgid "Comma separated list of keywords to hide" -msgstr "Lista separada por comas de palabras clave para ocultar" +#: ../../addon/gitwiki/Mod_Gitwiki.php:107 +msgid "Error retrieving wiki" +msgstr "Error al recuperar el wiki" -#: ../../extend/addon/addon/nsfw/nsfw.php:88 -msgid "Word, /regular-expression/, lang=xx, lang!=xx" -msgstr "Palabra, /expresión regular/, lang=xx, lang!=xx" +#: ../../addon/gitwiki/Mod_Gitwiki.php:114 +msgid "Error creating zip file export folder" +msgstr "Error al crear el fichero comprimido zip de la carpeta a exportar" -#: ../../extend/addon/addon/nsfw/nsfw.php:92 -msgid "Not Safe For Work Settings" -msgstr "No es seguro para ajustes de trabajo" +#: ../../addon/gitwiki/Mod_Gitwiki.php:132 +msgid "Error downloading wiki: " +msgstr "Error al descargar el wiki: " -#: ../../extend/addon/addon/nsfw/nsfw.php:92 -msgid "General Purpose Content Filter" -msgstr "Filtro de contenido de propósito general" +#: ../../addon/testdrive/testdrive.php:104 +#, php-format +msgid "Your account on %s will expire in a few days." +msgstr "Su cuenta en %s caducará en unos pocos días." -#: ../../extend/addon/addon/nsfw/nsfw.php:110 -msgid "NSFW Settings saved." -msgstr "Se han guardado los ajustes de NSFW." +#: ../../addon/testdrive/testdrive.php:105 +msgid "Your $Productname test account is about to expire." +msgstr "Su cuenta de prueba de $Productname está a punto de caducar." -#: ../../extend/addon/addon/nsfw/nsfw.php:207 -msgid "Possible adult content" -msgstr "Posible contenido para adultos" +#: ../../addon/rainbowtag/rainbowtag.php:81 +msgid "Enable Rainbowtag" +msgstr "Habilitar Rainbowtag" -#: ../../extend/addon/addon/nsfw/nsfw.php:211 -#, php-format -msgid "%s - view" -msgstr "ver - %s" +#: ../../addon/rainbowtag/rainbowtag.php:85 +msgid "Rainbowtag Settings" +msgstr "Ajustes de Rainbowtag" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:50 -#: ../../extend/addon/addon/openclipatar/openclipatar.php:128 -msgid "System defaults:" -msgstr "Valores predeterminados del sistema: " +#: ../../addon/rainbowtag/rainbowtag.php:101 +msgid "Rainbowtag Settings saved." +msgstr "Se han guardado los ajustes de Rainbowtag." -#: ../../extend/addon/addon/openclipatar/openclipatar.php:54 -msgid "Preferred Clipart IDs" -msgstr "IDs de las imágenes clipart preferidas" +#: ../../addon/upload_limits/upload_limits.php:25 +msgid "Show Upload Limits" +msgstr "Mostrar los límites de subida" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:54 -msgid "List of preferred clipart ids. These will be shown first." -msgstr "Lista de ids de imágenes de clipart preferidas. Se verán en primer lugar." +#: ../../addon/upload_limits/upload_limits.php:27 +msgid "Hubzilla configured maximum size: " +msgstr "Tamaño máximo configurado por Hubzilla: " -#: ../../extend/addon/addon/openclipatar/openclipatar.php:55 -msgid "Default Search Term" -msgstr "Términos de búsqueda predeterminados" +#: ../../addon/upload_limits/upload_limits.php:28 +msgid "PHP upload_max_filesize: " +msgstr "PHP upload_max_filesize: " -#: ../../extend/addon/addon/openclipatar/openclipatar.php:55 -msgid "The default search term. These will be shown second." -msgstr "Los términos de búsqueda predeterminados. Estos se mostrarán en segundo lugar." +#: ../../addon/upload_limits/upload_limits.php:29 +msgid "PHP post_max_size (must be larger than upload_max_filesize): " +msgstr "PHP post_max_size (debe ser mayor que upload_max_filesize): " -#: ../../extend/addon/addon/openclipatar/openclipatar.php:56 -msgid "Return After" -msgstr "Regresar después" +#: ../../addon/visage/visage.php:93 +msgid "Recent Channel/Profile Viewers" +msgstr "Visitantes recientes del canal o perfil" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:56 -msgid "Page to load after image selection." -msgstr "Página para cargar después de la selección de imágenes." +#: ../../addon/visage/visage.php:98 +msgid "This plugin/addon has not been configured." +msgstr "El plugin o complemento no se ha configurado." -#: ../../extend/addon/addon/openclipatar/openclipatar.php:58 -#: ../../include/nav.php:107 ../../include/channel.php:1048 -msgid "Edit Profile" -msgstr "Editar el perfil" +#: ../../addon/visage/visage.php:99 +#, php-format +msgid "Please visit the Visage settings on %s" +msgstr "Por favor, revise los ajustes de Visage en %s" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:59 -msgid "Profile List" -msgstr "Lista de perfiles" +#: ../../addon/visage/visage.php:99 +msgid "your feature settings page" +msgstr "su página de ajustes de las funcionalidades" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:61 -msgid "Order of Preferred" -msgstr "Orden de preferencia" +#: ../../addon/visage/visage.php:112 +msgid "No entries." +msgstr "No hay entradas." -#: ../../extend/addon/addon/openclipatar/openclipatar.php:61 -msgid "Sort order of preferred clipart ids." -msgstr "Orden de clasificación de los identificadores de imágenes clipart preferidas." +#: ../../addon/visage/visage.php:166 +msgid "Enable Visage Visitor Logging" +msgstr "Habilitar el registro de visitantes de Visage" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:62 -#: ../../extend/addon/addon/openclipatar/openclipatar.php:68 -msgid "Newest first" -msgstr "Las más nuevas en primer lugar" +#: ../../addon/visage/visage.php:170 +msgid "Visage Settings" +msgstr "Ajustes de Visage" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:65 -msgid "As entered" -msgstr "Tal como se ingresaron" +#: ../../addon/nsabait/nsabait.php:125 +msgid "Nsabait Settings updated." +msgstr "Se han actualizado los ajustes de Nsabait" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:67 -msgid "Order of other" -msgstr "Orden de los demás" +#: ../../addon/nsabait/nsabait.php:157 +msgid "Enable NSAbait Plugin" +msgstr "Habilitar el plugin NSAbait" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:67 -msgid "Sort order of other clipart ids." -msgstr "Orden de clasificación de otros ids de imágenes clipart." +#: ../../addon/nsabait/nsabait.php:161 +msgid "NSAbait Settings" +msgstr "Ajustes de NSAbait" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:69 -msgid "Most downloaded first" -msgstr "Las más descargadas en primer lugar" +#: ../../addon/mailtest/mailtest.php:19 +msgid "Send test email" +msgstr "Enviar un correo electrónico de prueba" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:70 -msgid "Most liked first" -msgstr "Las más apreciadas en primer lugar" +#: ../../addon/mailtest/mailtest.php:50 ../../addon/hubwall/hubwall.php:50 +msgid "No recipients found." +msgstr "No se han encontrado destinatarios." -#: ../../extend/addon/addon/openclipatar/openclipatar.php:72 -msgid "Preferred IDs Message" -msgstr "Mensaje de IDs preferido" +#: ../../addon/mailtest/mailtest.php:66 +msgid "Mail sent." +msgstr "El correo electrónico ha sido enviado." -#: ../../extend/addon/addon/openclipatar/openclipatar.php:72 -msgid "Message to display above preferred results." -msgstr "Mensaje para mostrar sobre los resultados preferidos." +#: ../../addon/mailtest/mailtest.php:68 +msgid "Sending of mail failed." +msgstr "No se pudo enviar el correo." -#: ../../extend/addon/addon/openclipatar/openclipatar.php:78 -msgid "Uploaded by: " -msgstr "Subida por: " +#: ../../addon/mailtest/mailtest.php:77 +msgid "Mail Test" +msgstr "Prueba de correo" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:78 -msgid "Drawn by: " -msgstr "Creada por: " +#: ../../addon/mailtest/mailtest.php:96 ../../addon/hubwall/hubwall.php:92 +msgid "Message subject" +msgstr "Asunto del mensaje" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:192 -msgid "Or select from a free OpenClipart.org image:" -msgstr "O seleccionar una imagen gratuita de OpenClipart.org: " +#: ../../addon/diaspora_reconnect/diaspora_reconnect.php:44 +#, php-format +msgid "Reconnecting %d connections" +msgstr "Reconectando %d conexiones" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:195 -msgid "Search Term" -msgstr "Término de búsqueda" +#: ../../addon/diaspora_reconnect/diaspora_reconnect.php:63 +msgid "Diaspora Reconnect" +msgstr "Reconectar con Diaspora" -#: ../../extend/addon/addon/openclipatar/openclipatar.php:232 -msgid "Unknown error. Please try again later." -msgstr "Error desconocido. Por favor, inténtelo otra vez." +#: ../../addon/diaspora_reconnect/diaspora_reconnect.php:65 +msgid "" +"Use this form to re-establish Diaspora connections which were initially made" +" from a different hub." +msgstr "Utilice este formulario para restablecer las conexiones de diáspora que se hicieron inicialmente desde un hub diferente." -#: ../../extend/addon/addon/openclipatar/openclipatar.php:308 -msgid "Profile photo updated successfully." -msgstr "Se ha actualizado con éxito la foto de perfil." +#: ../../addon/diaspora_reconnect/diaspora_reconnect.php:70 +msgid "Reconnect" +msgstr "Reconectar" -#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:146 +#: ../../addon/openstreetmap/openstreetmap.php:146 msgid "View Larger" msgstr "Ver más grande" -#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:169 +#: ../../addon/openstreetmap/openstreetmap.php:169 msgid "Tile Server URL" msgstr "URL del servidor de mosaicos de imágenes " -#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:169 +#: ../../addon/openstreetmap/openstreetmap.php:169 msgid "" "A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" " "target=\"_blank\">public tile servers</a>" msgstr "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">servidores públicos de mosaicos de imágenes</a>" -#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:170 +#: ../../addon/openstreetmap/openstreetmap.php:170 msgid "Nominatim (reverse geocoding) Server URL" msgstr "URL del servidor nominatim (geocodificación inversa)" -#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:170 +#: ../../addon/openstreetmap/openstreetmap.php:170 msgid "" "A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" " "target=\"_blank\">Nominatim servers</a>" msgstr "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target=\"_blank\">servidores nominatim</a>" -#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:171 +#: ../../addon/openstreetmap/openstreetmap.php:171 msgid "Default zoom" msgstr "Zoom predeterminado" -#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:171 +#: ../../addon/openstreetmap/openstreetmap.php:171 msgid "" "The default zoom level. (1:world, 18:highest, also depends on tile server)" msgstr "El nivel de zoom predeterminado. (1: mundo, 18: el más alto, también depende del servidor del mosaico de imágenes)" -#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:172 +#: ../../addon/openstreetmap/openstreetmap.php:172 msgid "Include marker on map" msgstr "Incluir un marcador en el mapa" -#: ../../extend/addon/addon/openstreetmap/openstreetmap.php:172 +#: ../../addon/openstreetmap/openstreetmap.php:172 msgid "Include a marker on the map." msgstr "Incluir un marcador en el mapa." -#: ../../extend/addon/addon/pageheader/pageheader.php:43 -msgid "Message to display on every page on this server" -msgstr "Mensaje para mostrar en todas las páginas de este servidor" - -#: ../../extend/addon/addon/pageheader/pageheader.php:48 -msgid "Pageheader Settings" -msgstr "Ajustes del encabezado de página" - -#: ../../extend/addon/addon/pageheader/pageheader.php:64 -msgid "pageheader Settings saved." -msgstr "Se han guardado los ajustes del encabezado de página." - -#: ../../extend/addon/addon/piwik/piwik.php:85 -msgid "" -"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> " -"analytics tool." -msgstr "Este sitio es rastreado mediante la herramienta analítica <a href='http://www.piwik.org'>Piwik</a>." - -#: ../../extend/addon/addon/piwik/piwik.php:88 -#, php-format -msgid "" -"If you do not want that your visits are logged this way you <a href='%s'>can" -" set a cookie to prevent Piwik from tracking further visits of the site</a> " -"(opt-out)." -msgstr "Si usted no quiere que sus visitas se registren de esta manera <a href='%s'>puede establecer una cookie para evitar que Piwik rastree otras visitas del sitio</a> (opt-out)." - -#: ../../extend/addon/addon/piwik/piwik.php:96 -msgid "Piwik Base URL" -msgstr "URL base de Piwik" - -#: ../../extend/addon/addon/piwik/piwik.php:96 -msgid "" -"Absolute path to your Piwik installation. (without protocol (http/s), with " -"trailing slash)" -msgstr "Ruta absoluta a la instalación de Piwik. (Sin protocolo (http/s), con barra diagonal)" - -#: ../../extend/addon/addon/piwik/piwik.php:97 -msgid "Site ID" -msgstr "ID del sitio" - -#: ../../extend/addon/addon/piwik/piwik.php:98 -msgid "Show opt-out cookie link?" -msgstr "Mostrar el enlace de la cookie opt-out?" - -#: ../../extend/addon/addon/piwik/piwik.php:99 -msgid "Asynchronous tracking" -msgstr "Rastreo asíncrono" - -#: ../../extend/addon/addon/piwik/piwik.php:100 -msgid "Enable frontend JavaScript error tracking" -msgstr "Habilitar la interfaz JavaScript de seguimiento de errores" - -#: ../../extend/addon/addon/piwik/piwik.php:100 -msgid "This feature requires Piwik >= 2.2.0" -msgstr "Esta funcionalidad requiere Piwik >= 2.2.0" - -#: ../../extend/addon/addon/planets/planets.php:121 -msgid "Planets Settings updated." -msgstr "Se han guardado los ajustes de Planets." - -#: ../../extend/addon/addon/planets/planets.php:153 -msgid "Enable Planets Plugin" -msgstr "Habilitar el plugin Planets" - -#: ../../extend/addon/addon/planets/planets.php:157 -msgid "Planets Settings" -msgstr "Ajustes de Planets" - -#: ../../extend/addon/addon/pumpio/pumpio.php:148 -msgid "You are now authenticated to pumpio." -msgstr "Ahora está autenticado en pump.io." - -#: ../../extend/addon/addon/pumpio/pumpio.php:149 -msgid "return to the featured settings page" -msgstr "Volver a la página de configuración destacada" - -#: ../../extend/addon/addon/pumpio/pumpio.php:163 -msgid "Post to Pump.io" -msgstr "Publicar en Pump.io" - -#: ../../extend/addon/addon/pumpio/pumpio.php:198 -msgid "Pump.io servername" -msgstr "Nombre del servidor de Pump.io" - -#: ../../extend/addon/addon/pumpio/pumpio.php:198 -msgid "Without \"http://\" or \"https://\"" -msgstr "Sin \"http://\" or \"https://\"" +#: ../../addon/msgfooter/msgfooter.php:46 ../../addon/xmpp/xmpp.php:91 +msgid "Save Settings" +msgstr "Guardar ajustes" -#: ../../extend/addon/addon/pumpio/pumpio.php:202 -msgid "Pump.io username" -msgstr "Nombre de usuario en Pump.io" +#: ../../addon/msgfooter/msgfooter.php:47 +msgid "text to include in all outgoing posts from this site" +msgstr "texto a incluir en todos los mensajes salientes de este sitio" -#: ../../extend/addon/addon/pumpio/pumpio.php:202 -msgid "Without the servername" -msgstr "Sin el nombre del servidor" +#: ../../addon/rtof/rtof.php:45 +msgid "Post to Friendica" +msgstr "Publicar en Friendica" -#: ../../extend/addon/addon/pumpio/pumpio.php:213 -msgid "You are not authenticated to pumpio" -msgstr "No está autenticado en pump.io" +#: ../../addon/rtof/rtof.php:62 +msgid "rtof Settings saved." +msgstr "Se han guardado los ajustes de rtof" -#: ../../extend/addon/addon/pumpio/pumpio.php:215 -msgid "(Re-)Authenticate your pump.io connection" -msgstr "(Re-)Autenticar su conexión en pump.io" +#: ../../addon/rtof/rtof.php:81 +msgid "Allow posting to Friendica" +msgstr "Permitir publicar en Friendica" -#: ../../extend/addon/addon/pumpio/pumpio.php:219 -msgid "Enable pump.io Post Plugin" -msgstr "Habilitar el plugin de publicación en pump.io" +#: ../../addon/rtof/rtof.php:85 +msgid "Send public postings to Friendica by default" +msgstr "Enviar entradas públicas a Friendica por defecto" -#: ../../extend/addon/addon/pumpio/pumpio.php:223 -msgid "Post to pump.io by default" -msgstr "Publicar por defecto en pump.io" +#: ../../addon/rtof/rtof.php:89 +msgid "Friendica API Path" +msgstr "Ruta a la API de Friendica" -#: ../../extend/addon/addon/pumpio/pumpio.php:227 -msgid "Should posts be public" -msgstr "¿Las entradas deben ser públicas?" +#: ../../addon/rtof/rtof.php:89 ../../addon/redred/redred.php:103 +msgid "https://{sitename}/api" +msgstr "https://{sitename}/api" -#: ../../extend/addon/addon/pumpio/pumpio.php:231 -msgid "Mirror all public posts" -msgstr "Reflejar todos los mensajes públicos" +#: ../../addon/rtof/rtof.php:93 +msgid "Friendica login name" +msgstr "Nombre de inicio de sesión en Friendica" -#: ../../extend/addon/addon/pumpio/pumpio.php:237 -msgid "Pump.io Post Settings" -msgstr "Ajustes de publicación en pump.io" +#: ../../addon/rtof/rtof.php:97 +msgid "Friendica password" +msgstr "Contraseña de Friendica" -#: ../../extend/addon/addon/pumpio/pumpio.php:266 -msgid "PumpIO Settings saved." -msgstr "Se han guardado los ajustes de PumpIO." +#: ../../addon/rtof/rtof.php:101 +msgid "Hubzilla to Friendica Post Settings" +msgstr "Ajustes de publicación de Hubzilla a Friendica" -#: ../../extend/addon/addon/qrator/qrator.php:48 -msgid "QR code" -msgstr "Código QR" +#: ../../addon/jappixmini/jappixmini.php:305 ../../include/channel.php:1137 +#: ../../include/channel.php:1294 +msgid "Status:" +msgstr "Estado:" -#: ../../extend/addon/addon/qrator/qrator.php:63 -msgid "QR Generator" -msgstr "Generador QR" +#: ../../addon/jappixmini/jappixmini.php:309 +msgid "Activate addon" +msgstr "Habilitar complemento" -#: ../../extend/addon/addon/qrator/qrator.php:64 -msgid "Enter some text" -msgstr "Escribir algún texto" +#: ../../addon/jappixmini/jappixmini.php:313 +msgid "Hide Jappixmini Chat-Widget from the webinterface" +msgstr "Ocultar el widget de chat Jappixmini en la interfaz web" -#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:81 -msgid "Enable Rainbowtag" -msgstr "Habilitar Rainbowtag" +#: ../../addon/jappixmini/jappixmini.php:318 +msgid "Jabber username" +msgstr "Nombre de usuario en Jabber" -#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:85 -msgid "Rainbowtag Settings" -msgstr "Ajustes de Rainbowtag" +#: ../../addon/jappixmini/jappixmini.php:324 +msgid "Jabber server" +msgstr "Servidor de Jabber" -#: ../../extend/addon/addon/rainbowtag/rainbowtag.php:101 -msgid "Rainbowtag Settings saved." -msgstr "Se han guardado los ajustes de Rainbowtag." +#: ../../addon/jappixmini/jappixmini.php:330 +msgid "Jabber BOSH host URL" +msgstr "URL del host BOSH de Jabber" -#: ../../extend/addon/addon/randpost/randpost.php:97 -msgid "You're welcome." -msgstr "Bienvenido." +#: ../../addon/jappixmini/jappixmini.php:337 +msgid "Jabber password" +msgstr "Contraseña en Jabber" -#: ../../extend/addon/addon/randpost/randpost.php:98 -msgid "Ah shucks..." -msgstr "Ah, joder..." +#: ../../addon/jappixmini/jappixmini.php:343 +msgid "Encrypt Jabber password with Hubzilla password" +msgstr "Cifrar la contraseña de Jabber con la contraseña de Hubzilla" -#: ../../extend/addon/addon/randpost/randpost.php:99 -msgid "Don't mention it." -msgstr "No lo menciones." +#: ../../addon/jappixmini/jappixmini.php:347 ../../addon/redred/redred.php:115 +msgid "Hubzilla password" +msgstr "Contraseña de Hubzilla" -#: ../../extend/addon/addon/randpost/randpost.php:100 -msgid "<blush>" -msgstr "<sonrojo>" +#: ../../addon/jappixmini/jappixmini.php:351 +#: ../../addon/jappixmini/jappixmini.php:355 +msgid "Approve subscription requests from Hubzilla contacts automatically" +msgstr "Aprobar automáticamente las solicitudes de suscripción de los contactos de Hubzilla" -#: ../../extend/addon/addon/redfiles/redfiles.php:119 -msgid "Redmatrix File Storage Import" -msgstr "Importar repositorio de ficheros de Redmatrix" +#: ../../addon/jappixmini/jappixmini.php:359 +msgid "Purge internal list of jabber addresses of contacts" +msgstr "Purgar la lista interna de las direcciones de contactos de jabber" -#: ../../extend/addon/addon/redfiles/redfiles.php:120 -msgid "This will import all your Redmatrix cloud files to this channel." -msgstr "Esto importará todos sus ficheros de la nube de Redmatrix a este canal." +#: ../../addon/jappixmini/jappixmini.php:364 +msgid "Configuration Help" +msgstr "Ayuda para los ajustes" -#: ../../extend/addon/addon/redfiles/redfiles.php:121 -#: ../../extend/addon/addon/redphotos/redphotos.php:131 -msgid "Redmatrix Server base URL" -msgstr "URL base del servidor Redmatrix" +#: ../../addon/jappixmini/jappixmini.php:371 +msgid "Jappix Mini Settings" +msgstr "Ajustes de Jappix Mini" -#: ../../extend/addon/addon/redfiles/redfiles.php:122 -#: ../../extend/addon/addon/redphotos/redphotos.php:132 -msgid "Redmatrix Login Username" -msgstr "Nombre de inicio de sesión en Redmatrix" +#: ../../addon/superblock/superblock.php:112 +msgid "Currently blocked" +msgstr "Actualmente bloqueado" -#: ../../extend/addon/addon/redfiles/redfiles.php:123 -#: ../../extend/addon/addon/redphotos/redphotos.php:133 -msgid "Redmatrix Login Password" -msgstr "Contraseña de inicio de sesión en Redmatrix" +#: ../../addon/superblock/superblock.php:114 +msgid "No channels currently blocked" +msgstr "No hay canales bloqueados actualmente" -#: ../../extend/addon/addon/redfiles/redfilehelper.php:67 -msgid "file" -msgstr "fichero" +#: ../../addon/superblock/superblock.php:120 +msgid "\"Superblock\" Settings" +msgstr "Ajustes de \"Superblock\"" -#: ../../extend/addon/addon/redphotos/redphotos.php:106 -msgid "Photos imported" -msgstr "Se han importado las fotos" +#: ../../addon/superblock/superblock.php:345 +msgid "Block Completely" +msgstr "Bloquear completamente" -#: ../../extend/addon/addon/redphotos/redphotos.php:129 -msgid "Redmatrix Photo Album Import" -msgstr "Importar un álbum de fotos de Redmatrix" +#: ../../addon/superblock/superblock.php:394 +msgid "superblock settings updated" +msgstr "se han actualizado los ajustes de superblock" -#: ../../extend/addon/addon/redphotos/redphotos.php:130 -msgid "This will import all your Redmatrix photo albums to this channel." -msgstr "Esto importará todos sus álbumes de fotos de Redmatrix a este canal." +#: ../../addon/nofed/nofed.php:42 +msgid "Federate" +msgstr "Federar" -#: ../../extend/addon/addon/redphotos/redphotos.php:134 -msgid "Import just this album" -msgstr "Importar solo este álbum" +#: ../../addon/nofed/nofed.php:56 +msgid "nofed Settings saved." +msgstr "Se han guardado los ajustes de nofed." -#: ../../extend/addon/addon/redphotos/redphotos.php:134 -msgid "Leave blank to import all albums" -msgstr "Dejar en blanco para importar todos los álbumes" +#: ../../addon/nofed/nofed.php:72 +msgid "Allow Federation Toggle" +msgstr "Permitir alternancia de federación" -#: ../../extend/addon/addon/redphotos/redphotos.php:135 -msgid "Maximum count to import" -msgstr "Límite máximo de importación" +#: ../../addon/nofed/nofed.php:76 +msgid "Federate posts by default" +msgstr "Federar las publicaciones por defecto" -#: ../../extend/addon/addon/redphotos/redphotos.php:135 -msgid "0 or blank to import all available" -msgstr "0 o en blanco para importar todos los disponibles" +#: ../../addon/nofed/nofed.php:80 +msgid "NoFed Settings" +msgstr "Ajustes de NoFed" -#: ../../extend/addon/addon/redred/redred.php:45 +#: ../../addon/redred/redred.php:45 msgid "Post to Red" msgstr "Enviar a Red" -#: ../../extend/addon/addon/redred/redred.php:60 +#: ../../addon/redred/redred.php:60 msgid "Channel is required." msgstr "Se requiere un canal." -#: ../../extend/addon/addon/redred/redred.php:76 +#: ../../addon/redred/redred.php:76 msgid "redred Settings saved." msgstr "Se han salvado los ajustes de redred." -#: ../../extend/addon/addon/redred/redred.php:95 +#: ../../addon/redred/redred.php:95 msgid "Allow posting to another Hubzilla Channel" msgstr "Permitir la publicación en otro canal de Hubzilla" -#: ../../extend/addon/addon/redred/redred.php:99 +#: ../../addon/redred/redred.php:99 msgid "Send public postings to Hubzilla channel by default" msgstr "Enviar entradas públicas al canal Hubzilla por defecto" -#: ../../extend/addon/addon/redred/redred.php:103 +#: ../../addon/redred/redred.php:103 msgid "Hubzilla API Path" msgstr "Ruta de la API de Hubzilla" -#: ../../extend/addon/addon/redred/redred.php:103 -#: ../../extend/addon/addon/rtof/rtof.php:89 -msgid "https://{sitename}/api" -msgstr "https://{sitename}/api" - -#: ../../extend/addon/addon/redred/redred.php:107 +#: ../../addon/redred/redred.php:107 msgid "Hubzilla login name" msgstr "Nombre de inicio de sesión en Hubzilla" -#: ../../extend/addon/addon/redred/redred.php:111 +#: ../../addon/redred/redred.php:111 msgid "Hubzilla channel name" msgstr "Nombre del canal de Hubzilla" -#: ../../extend/addon/addon/redred/redred.php:111 -#: ../../extend/addon/addon/openid/MysqlProvider.php:54 -msgid "Nickname" -msgstr "Alias" - -#: ../../extend/addon/addon/redred/redred.php:119 +#: ../../addon/redred/redred.php:119 msgid "Hubzilla Crosspost Settings" msgstr "Ajustes de Hubzilla Crosspost" -#: ../../extend/addon/addon/rtof/rtof.php:45 -msgid "Post to Friendica" -msgstr "Publicar en Friendica" +#: ../../addon/logrot/logrot.php:36 +msgid "Logfile archive directory" +msgstr "Directorio de los ficheros de informe" -#: ../../extend/addon/addon/rtof/rtof.php:62 -msgid "rtof Settings saved." -msgstr "Se han guardado los ajustes de rtof" +#: ../../addon/logrot/logrot.php:36 +msgid "Directory to store rotated logs" +msgstr "Directorio para almacenar los informes rotados" -#: ../../extend/addon/addon/rtof/rtof.php:81 -msgid "Allow posting to Friendica" -msgstr "Permitir publicar en Friendica" +#: ../../addon/logrot/logrot.php:37 +msgid "Logfile size in bytes before rotating" +msgstr "Tamaño del fichero de informe en bytes antes de rotarlo" -#: ../../extend/addon/addon/rtof/rtof.php:85 -msgid "Send public postings to Friendica by default" -msgstr "Enviar entradas públicas a Friendica por defecto" +#: ../../addon/logrot/logrot.php:38 +msgid "Number of logfiles to retain" +msgstr "Número de ficheros de informe que se deben retener" -#: ../../extend/addon/addon/rtof/rtof.php:89 -msgid "Friendica API Path" -msgstr "Ruta a la API de Friendica" +#: ../../addon/frphotos/frphotos.php:91 +msgid "Friendica Photo Album Import" +msgstr "Importar un álbum de fotos de Friendica" -#: ../../extend/addon/addon/rtof/rtof.php:93 -msgid "Friendica login name" +#: ../../addon/frphotos/frphotos.php:92 +msgid "This will import all your Friendica photo albums to this Red channel." +msgstr "Esto importará todos sus álbumes de fotos de Friendica a este canal de Hubzilla." + +#: ../../addon/frphotos/frphotos.php:93 +msgid "Friendica Server base URL" +msgstr "URL base del servidor de Friendica" + +#: ../../addon/frphotos/frphotos.php:94 +msgid "Friendica Login Username" msgstr "Nombre de inicio de sesión en Friendica" -#: ../../extend/addon/addon/rtof/rtof.php:97 -msgid "Friendica password" -msgstr "Contraseña de Friendica" +#: ../../addon/frphotos/frphotos.php:95 +msgid "Friendica Login Password" +msgstr "Contraseña de inicio de sesión en Friendica" -#: ../../extend/addon/addon/rtof/rtof.php:101 -msgid "Hubzilla to Friendica Post Settings" -msgstr "Ajustes de publicación de Hubzilla a Friendica" +#: ../../addon/donate/donate.php:21 +msgid "Project Servers and Resources" +msgstr "Servidores y recursos del proyecto" -#: ../../extend/addon/addon/sendzid/sendzid.php:25 -msgid "Extended Identity Sharing" -msgstr "Compartir identidad extendida" +#: ../../addon/donate/donate.php:22 +msgid "Project Creator and Tech Lead" +msgstr "Creador del proyecto y director técnico" + +#: ../../addon/donate/donate.php:23 +msgid "Admin, developer, directorymin, support bloke" +msgstr "Administrador, desarrollador, administrador del directorio, trabajador de apoyo" -#: ../../extend/addon/addon/sendzid/sendzid.php:26 +#: ../../addon/donate/donate.php:50 msgid "" -"Share your identity with all websites on the internet. When disabled, " -"identity is only shared with sites in the matrix." -msgstr "Compartir su identidad con todos los sitios web en Internet. Cuando se inhabilita, la identidad sólo se comparte con los sitios de la matriz." +"And the hundreds of other people and organisations who helped make the " +"Hubzilla possible." +msgstr "Y los cientos de personas y organizaciones más que ayudaron a hacer posible Hubzilla." -#: ../../extend/addon/addon/skeleton/skeleton.php:59 -msgid "Some setting" -msgstr "Algunos ajustes" +#: ../../addon/donate/donate.php:53 +msgid "" +"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving " +"their time and expertise - and often paying out of pocket for services they " +"share with others." +msgstr "Los proyectos Redmatrix / Hubzilla están proporcionados principalmente por voluntarios que les prestan su tiempo y experiencia, pagando a menudo de su bolsillo por los servicios que comparten con otros." -#: ../../extend/addon/addon/skeleton/skeleton.php:61 -msgid "A setting" -msgstr "Un ajuste" +#: ../../addon/donate/donate.php:54 +msgid "" +"There is no corporate funding and no ads, and we do not collect and sell " +"your personal information. (We don't control your personal information - " +"<strong>you do</strong>.)" +msgstr "No hay financiación corporativa ni publicidad y no recogemos ni vendemos su información personal. (De hecho, no tenemos control sobre sus datos privados. <Strong>Usted lo tiene</strong>.)" -#: ../../extend/addon/addon/skeleton/skeleton.php:64 -msgid "Skeleton Settings" -msgstr "Ajustes de Skeleton" +#: ../../addon/donate/donate.php:55 +msgid "" +"Help support our ground-breaking work in decentralisation, web identity, and" +" privacy." +msgstr "Ayude apoyando nuestro trabajo pionero en la descentralización, la identidad web, y la privacidad." -#: ../../extend/addon/addon/smileybutton/smileybutton.php:273 -msgid "Deactivate the feature" -msgstr "Desactivar la funcionalidad" +#: ../../addon/donate/donate.php:57 +msgid "" +"Your donations keep servers and services running and also helps us to " +"provide innovative new features and continued development." +msgstr "Sus donaciones mantienen servidores y servicios en ejecución y también nos ayudan a proporcionar nuevas características innovadoras y a mantener el desarrollo de forma continuada." -#: ../../extend/addon/addon/smileybutton/smileybutton.php:277 -msgid "Hide the button and show the smilies directly." -msgstr "Ocultar el botón y mostrar los smilies directamente." +#: ../../addon/donate/donate.php:60 +msgid "Donate" +msgstr "Donar" -#: ../../extend/addon/addon/smileybutton/smileybutton.php:281 -msgid "Smileybutton Settings" -msgstr "Ajustes de Smileybutton" +#: ../../addon/donate/donate.php:62 +msgid "" +"Choose a project, developer, or public hub to support with a one-time " +"donation" +msgstr "Elija un proyecto, desarrollador, o \"hub\" público para apoyar con una donación de una sola vez" -#: ../../extend/addon/addon/startpage/startpage.php:109 -msgid "Page to load after login" -msgstr "Página para cargar tras el inicio de sesión" +#: ../../addon/donate/donate.php:63 +msgid "Donate Now" +msgstr "Donar ahora" -#: ../../extend/addon/addon/startpage/startpage.php:109 +#: ../../addon/donate/donate.php:64 msgid "" -"Examples: "apps", "network?f=&gid=37" (privacy " -"collection), "channel" or "notifications/system" (leave " -"blank for default network page (grid)." -msgstr "Ejemplos: "aplicaciones", "mi red?f=&gid=37" (grupo de canales), "mi canal" or "notificaciones del sistema" (dejar en blanco para la página de mi red por defecto (grid)." +"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project " +"only)" +msgstr "<strong><em>O</em></strong> convertirse en un patrocinador del proyecto (sólo del proyecto Hubzilla)" -#: ../../extend/addon/addon/startpage/startpage.php:113 -msgid "Startpage Settings" -msgstr "Ajustes de startpage" +#: ../../addon/donate/donate.php:65 +msgid "" +"Please indicate if you would like your first name or full name (or nothing) " +"to appear in our sponsor listing" +msgstr "Por favor, indique si desea que su nombre de pila o el nombre completo (o nada) aparezca en nuestra lista de patrocinadores" + +#: ../../addon/donate/donate.php:66 +msgid "Sponsor" +msgstr "Patrocinador" + +#: ../../addon/donate/donate.php:69 +msgid "Special thanks to: " +msgstr "Agradecimiento especial a: " + +#: ../../addon/chords/Mod_Chords.php:44 +msgid "" +"This is a fairly comprehensive and complete guitar chord dictionary which " +"will list most of the available ways to play a certain chord, starting from " +"the base of the fingerboard up to a few frets beyond the twelfth fret " +"(beyond which everything repeats). A couple of non-standard tunings are " +"provided for the benefit of slide players, etc." +msgstr "Se trata de un diccionario bastante amplio y completo de acordes de guitarra que enumerará la mayor parte de las formas disponibles para tocar un acorde determinado, partiendo de la base del diapasón hasta unos pocos trastes más allá del traste doce (más allá del cual todo se repite). Se proporcionan un par de afinaciones no convencionales para provecho de los guitarristas con \"slides\" ( barras de acero), etc." + +#: ../../addon/chords/Mod_Chords.php:46 +msgid "" +"Chord names start with a root note (A-G) and may include sharps (#) and " +"flats (b). This software will parse most of the standard naming conventions " +"such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements." +msgstr "Los nombres de acordes comienzan con una nota fundamental (La-Sol) y pueden incluir sostenidos (#) y bemoles (b). Este software analizará la mayor parte de las convenciones de nomenclatura estándar como maj, min, tenue, SUS (2 ó 4), aug, con la repetición de elementos opcionales." + +#: ../../addon/chords/Mod_Chords.php:48 +msgid "" +"Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, " +"E7b13b11 ..." +msgstr "Ejemplos válidos son A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..." + +#: ../../addon/chords/Mod_Chords.php:51 +msgid "Guitar Chords" +msgstr "Acordes de guitarra" + +#: ../../addon/chords/Mod_Chords.php:52 +msgid "The complete online chord dictionary" +msgstr "El diccionario completo de acordes en línea" + +#: ../../addon/chords/Mod_Chords.php:57 +msgid "Tuning" +msgstr "Afinación" + +#: ../../addon/chords/Mod_Chords.php:58 +msgid "Chord name: example: Em7" +msgstr "Nombre del acorde, por ejemplo: Em7" + +#: ../../addon/chords/Mod_Chords.php:59 +msgid "Show for left handed stringing" +msgstr "Mostrar para tocadores zurdos" + +#: ../../addon/chords/chords.php:33 +msgid "Quick Reference" +msgstr "Referencia rápida" + +#: ../../addon/libertree/libertree.php:38 +msgid "Post to Libertree" +msgstr "Publicar en Libertree" + +#: ../../addon/libertree/libertree.php:69 +msgid "Enable Libertree Post Plugin" +msgstr "Habilitar el plugin de publicación en Libertree" + +#: ../../addon/libertree/libertree.php:73 +msgid "Libertree API token" +msgstr "Token de la API de Libertree" + +#: ../../addon/libertree/libertree.php:77 +msgid "Libertree site URL" +msgstr "URL del servidor de Libertree" + +#: ../../addon/libertree/libertree.php:81 +msgid "Post to Libertree by default" +msgstr "Publicar en Libertree por defecto" + +#: ../../addon/libertree/libertree.php:85 +msgid "Libertree Post Settings" +msgstr "Ajustes de publicación en Libertree" + +#: ../../addon/libertree/libertree.php:99 +msgid "Libertree Settings saved." +msgstr "Se han guardado los ajustes de Libertree." + +#: ../../addon/flattrwidget/flattrwidget.php:45 +msgid "Flattr this!" +msgstr "¡Apoyar esto en Flattr!" + +#: ../../addon/flattrwidget/flattrwidget.php:83 +msgid "Flattr widget settings updated." +msgstr "Los ajustes del widget Flattr han sido actualizados." + +#: ../../addon/flattrwidget/flattrwidget.php:100 +msgid "Flattr user" +msgstr "Usuario en Flattr" + +#: ../../addon/flattrwidget/flattrwidget.php:104 +msgid "URL of the Thing to flattr" +msgstr "URL de la Cosa para apoyar en flattr" + +#: ../../addon/flattrwidget/flattrwidget.php:104 +msgid "If empty channel URL is used" +msgstr "Si está vacío, se usa la URL del canal" -#: ../../extend/addon/addon/statusnet/statusnet.php:143 +#: ../../addon/flattrwidget/flattrwidget.php:108 +msgid "Title of the Thing to flattr" +msgstr "Título de la Cosa para apoyar en flattr" + +#: ../../addon/flattrwidget/flattrwidget.php:108 +msgid "If empty \"channel name on The Hubzilla\" will be used" +msgstr "Si está vacío, se usará \"nombre del canal en Hubzilla\"" + +#: ../../addon/flattrwidget/flattrwidget.php:112 +msgid "Static or dynamic flattr button" +msgstr "Botón de flattr estático o dinámico" + +#: ../../addon/flattrwidget/flattrwidget.php:112 +msgid "static" +msgstr "estático" + +#: ../../addon/flattrwidget/flattrwidget.php:112 +msgid "dynamic" +msgstr "dinámico" + +#: ../../addon/flattrwidget/flattrwidget.php:116 +msgid "Alignment of the widget" +msgstr "Alineamiento del widget" + +#: ../../addon/flattrwidget/flattrwidget.php:116 +msgid "left" +msgstr "izquierda" + +#: ../../addon/flattrwidget/flattrwidget.php:116 +msgid "right" +msgstr "derecha" + +#: ../../addon/flattrwidget/flattrwidget.php:120 +msgid "Enable Flattr widget" +msgstr "Habilitar el widget Flattr" + +#: ../../addon/flattrwidget/flattrwidget.php:124 +msgid "Flattr Widget Settings" +msgstr "Ajustes del widget Flattr" + +#: ../../addon/statusnet/statusnet.php:143 msgid "Post to GNU social" msgstr "Publicar en GNU social" -#: ../../extend/addon/addon/statusnet/statusnet.php:195 +#: ../../addon/statusnet/statusnet.php:195 msgid "" "Please contact your site administrator.<br />The provided API URL is not " "valid." msgstr "Por favor, contacte con el administrador de su sitio.<br />La URL de la API proporcionada no es válida." -#: ../../extend/addon/addon/statusnet/statusnet.php:232 +#: ../../addon/statusnet/statusnet.php:232 msgid "We could not contact the GNU social API with the Path you entered." msgstr "No podemos conectar con la API de GNU social con la ruta que ha proporcionado." -#: ../../extend/addon/addon/statusnet/statusnet.php:266 +#: ../../addon/statusnet/statusnet.php:266 msgid "GNU social settings updated." msgstr "Se han guardado los ajustes de GNU social." -#: ../../extend/addon/addon/statusnet/statusnet.php:310 +#: ../../addon/statusnet/statusnet.php:310 msgid "Globally Available GNU social OAuthKeys" msgstr "OAuthKeys globales de GNU social disponibles" -#: ../../extend/addon/addon/statusnet/statusnet.php:312 +#: ../../addon/statusnet/statusnet.php:312 msgid "" "There are preconfigured OAuth key pairs for some GNU social servers " "available. If you are using one of them, please use these credentials.<br " "/>If not feel free to connect to any other GNU social instance (see below)." msgstr "Existen pares de claves OAuth preconfiguradas disponibles para algunos servidores libres de GNU social. Si está usando uno de ellos, utilice estas credenciales.<br />Si no se siente libre de conectarse a cualquier otra instancia de GNU social (vea a continuación)." -#: ../../extend/addon/addon/statusnet/statusnet.php:327 +#: ../../addon/statusnet/statusnet.php:327 msgid "Provide your own OAuth Credentials" msgstr "Proporcione sus propias credenciales de OAuth" -#: ../../extend/addon/addon/statusnet/statusnet.php:329 +#: ../../addon/statusnet/statusnet.php:329 msgid "" "No consumer key pair for GNU social found. Register your Hubzilla Account as" " an desktop client on your GNU social account, copy the consumer key pair " @@ -9723,27 +10034,27 @@ msgid "" "Hubzilla installation at your favourite GNU social installation." msgstr "No se ha encontrado un par de claves de consumidor para GNU social. Registre su cuenta de Hubzilla como un cliente de escritorio en su cuenta social GNU, copie el par de claves de consumidor aquí y escriba la dirección raíz de la API.<br />Antes de registrar su propio par de claves OAuth, pregunte al administrador si ya hay un par de claves para esta instalación de Hubzilla en su instalación GNU social favorita." -#: ../../extend/addon/addon/statusnet/statusnet.php:333 +#: ../../addon/statusnet/statusnet.php:333 msgid "OAuth Consumer Key" msgstr "OAuth Consumer Key" -#: ../../extend/addon/addon/statusnet/statusnet.php:337 +#: ../../addon/statusnet/statusnet.php:337 msgid "OAuth Consumer Secret" msgstr "OAuth Consumer Secret" -#: ../../extend/addon/addon/statusnet/statusnet.php:341 +#: ../../addon/statusnet/statusnet.php:341 msgid "Base API Path" msgstr "Ruta base de la API" -#: ../../extend/addon/addon/statusnet/statusnet.php:341 +#: ../../addon/statusnet/statusnet.php:341 msgid "Remember the trailing /" msgstr "Recuerde la barra /" -#: ../../extend/addon/addon/statusnet/statusnet.php:345 +#: ../../addon/statusnet/statusnet.php:345 msgid "GNU social application name" msgstr "Nombre de la aplicación de GNU social" -#: ../../extend/addon/addon/statusnet/statusnet.php:368 +#: ../../addon/statusnet/statusnet.php:368 msgid "" "To connect to your GNU social account click the button below to get a " "security code from GNU social which you have to copy into the input box " @@ -9751,32 +10062,31 @@ msgid "" "posted to GNU social." msgstr "Para conectarse a su cuenta de GNU social, haga clic en el botón de abajo para obtener un código de seguridad de GNU social que tiene que copiar en el cuadro de entrada a continuación y envíe el formulario. Solo sus <strong>entradas</strong> públicas aparecerán en GNU social." -#: ../../extend/addon/addon/statusnet/statusnet.php:370 +#: ../../addon/statusnet/statusnet.php:370 msgid "Log in with GNU social" msgstr "Inicio de sesión en GNU social" -#: ../../extend/addon/addon/statusnet/statusnet.php:373 +#: ../../addon/statusnet/statusnet.php:373 msgid "Copy the security code from GNU social here" msgstr "Copiar aquí el código de seguridad de GNU social" -#: ../../extend/addon/addon/statusnet/statusnet.php:383 +#: ../../addon/statusnet/statusnet.php:383 msgid "Cancel Connection Process" msgstr "Cancelar el proceso de conexión" -#: ../../extend/addon/addon/statusnet/statusnet.php:385 +#: ../../addon/statusnet/statusnet.php:385 msgid "Current GNU social API is" msgstr "La API actual de GNU social es " -#: ../../extend/addon/addon/statusnet/statusnet.php:389 +#: ../../addon/statusnet/statusnet.php:389 msgid "Cancel GNU social Connection" msgstr "Cancelar la conexión de GNU social" -#: ../../extend/addon/addon/statusnet/statusnet.php:401 -#: ../../extend/addon/addon/twitter/twitter.php:232 +#: ../../addon/statusnet/statusnet.php:401 ../../addon/twitter/twitter.php:232 msgid "Currently connected to: " msgstr "Actualmente está conectado a: " -#: ../../extend/addon/addon/statusnet/statusnet.php:406 +#: ../../addon/statusnet/statusnet.php:406 msgid "" "<strong>Note</strong>: Due your privacy settings (<em>Hide your profile " "details from unknown viewers?</em>) the link potentially included in public " @@ -9784,277 +10094,363 @@ msgid "" "informing the visitor that the access to your profile has been restricted." msgstr "<strong>Aviso</strong>: Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>) el vínculo potencialmente incluido en las entradas públicas retransmitidas a GNU social llevará al visitante a una página en blanco que le informará de que el acceso a su perfil ha sido restringido." -#: ../../extend/addon/addon/statusnet/statusnet.php:411 +#: ../../addon/statusnet/statusnet.php:411 msgid "Allow posting to GNU social" msgstr "Habilitar la publicación en GNU social" -#: ../../extend/addon/addon/statusnet/statusnet.php:411 +#: ../../addon/statusnet/statusnet.php:411 msgid "" "If enabled your public postings can be posted to the associated GNU-social " "account" msgstr "Si está habilitado, sus entradas públicas se pueden publicar en la cuenta GNU-social asociada" -#: ../../extend/addon/addon/statusnet/statusnet.php:415 +#: ../../addon/statusnet/statusnet.php:415 msgid "Post to GNU social by default" msgstr "Publicar en GNU social por defecto" -#: ../../extend/addon/addon/statusnet/statusnet.php:415 +#: ../../addon/statusnet/statusnet.php:415 msgid "" "If enabled your public postings will be posted to the associated GNU-social " "account by default" msgstr "Si está activado, sus entradas públicas se publicarán en la cuenta GNU-social asociada de forma predeterminada" -#: ../../extend/addon/addon/statusnet/statusnet.php:424 -#: ../../extend/addon/addon/twitter/twitter.php:255 +#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:255 msgid "Clear OAuth configuration" msgstr "Limpiar la configuración de OAuth" -#: ../../extend/addon/addon/statusnet/statusnet.php:432 +#: ../../addon/statusnet/statusnet.php:432 msgid "GNU social Post Settings" msgstr "Ajustes de publicación en GNU social" -#: ../../extend/addon/addon/statusnet/statusnet.php:891 +#: ../../addon/statusnet/statusnet.php:891 msgid "API URL" msgstr "URL de la API" -#: ../../extend/addon/addon/statusnet/statusnet.php:894 +#: ../../addon/statusnet/statusnet.php:894 msgid "Application name" msgstr "Nombre de la aplicación" -#: ../../extend/addon/addon/superblock/superblock.php:112 -msgid "Currently blocked" -msgstr "Actualmente bloqueado" +#: ../../addon/qrator/qrator.php:48 +msgid "QR code" +msgstr "Código QR" -#: ../../extend/addon/addon/superblock/superblock.php:114 -msgid "No channels currently blocked" -msgstr "No hay canales bloqueados actualmente" +#: ../../addon/qrator/qrator.php:63 +msgid "QR Generator" +msgstr "Generador QR" -#: ../../extend/addon/addon/superblock/superblock.php:120 -msgid "\"Superblock\" Settings" -msgstr "Ajustes de \"Superblock\"" +#: ../../addon/qrator/qrator.php:64 +msgid "Enter some text" +msgstr "Escribir algún texto" -#: ../../extend/addon/addon/superblock/superblock.php:345 -msgid "Block Completely" -msgstr "Bloquear completamente" +#: ../../addon/chess/chess.php:276 ../../addon/chess/chess.php:433 +msgid "Invalid game." +msgstr "Juego no válido." -#: ../../extend/addon/addon/superblock/superblock.php:394 -msgid "superblock settings updated" -msgstr "se han actualizado los ajustes de superblock" +#: ../../addon/chess/chess.php:282 ../../addon/chess/chess.php:439 +msgid "You are not a player in this game." +msgstr "Usted no participa en este juego." -#: ../../extend/addon/addon/testdrive/testdrive.php:104 -#, php-format -msgid "Your account on %s will expire in a few days." -msgstr "Su cuenta en %s caducará en unos pocos días." +#: ../../addon/chess/chess.php:315 +msgid "You must be a local channel to create a game." +msgstr "Debe ser un canal local para crear un juego" -#: ../../extend/addon/addon/testdrive/testdrive.php:105 -msgid "Your $Productname test account is about to expire." -msgstr "Su cuenta de prueba de $Productname está a punto de caducar." +#: ../../addon/chess/chess.php:333 +msgid "You must select one opponent that is not yourself." +msgstr "Debe seleccionar un oponente que no sea usted mismo." -#: ../../extend/addon/addon/tictac/tictac.php:21 -msgid "Three Dimensional Tic-Tac-Toe" -msgstr "Juego en 3D Tic-Tac-Toe" +#: ../../addon/chess/chess.php:336 +msgid "Creating new game..." +msgstr "Crear un nuevo juego..." -#: ../../extend/addon/addon/tictac/tictac.php:54 -msgid "3D Tic-Tac-Toe" -msgstr "3D Tic-Tac-Toe" +#: ../../addon/chess/chess.php:342 +msgid "You must select white or black." +msgstr "Debe elegir blancas o negras." -#: ../../extend/addon/addon/tictac/tictac.php:59 -msgid "New game" -msgstr "Nuevo juego" +#: ../../addon/chess/chess.php:349 +msgid "Error creating new game." +msgstr "Error al crear un nuevo juego." -#: ../../extend/addon/addon/tictac/tictac.php:60 -msgid "New game with handicap" -msgstr "Nuevo juego con hándicap" +#: ../../addon/chess/chess.php:381 ../../include/channel.php:897 +msgid "Requested channel is not available." +msgstr "El canal solicitado no está disponible." + +#: ../../addon/chess/chess.php:395 +msgid "You must select a local channel /chess/channelname" +msgstr "Debe seleccionar un canal local /chess/nombredelcanal" + +#: ../../addon/chess/chess.php:923 +msgid "Enable notifications" +msgstr "Habilitar notificaciones" + +#: ../../addon/twitter/twitter.php:99 +msgid "Post to Twitter" +msgstr "Publicar en Twitter" + +#: ../../addon/twitter/twitter.php:154 +msgid "Twitter settings updated." +msgstr "Se han actualizado los ajustes de Twitter." -#: ../../extend/addon/addon/tictac/tictac.php:61 +#: ../../addon/twitter/twitter.php:183 msgid "" -"Three dimensional tic-tac-toe is just like the traditional game except that " -"it is played on multiple levels simultaneously. " -msgstr "El juego en 3D tic-tac-toe es como el juego tradicional, excepto que se juega en varios niveles simultáneamente." +"No consumer key pair for Twitter found. Please contact your site " +"administrator." +msgstr "No se encontró ningún par de \"consumer key\" para Twitter. Póngase en contacto con el administrador del sitio." -#: ../../extend/addon/addon/tictac/tictac.php:62 +#: ../../addon/twitter/twitter.php:205 msgid "" -"In this case there are three levels. You win by getting three in a row on " -"any level, as well as up, down, and diagonally across the different levels." -msgstr "En este caso hay tres niveles. Usted gana al conseguir tres en una fila en cualquier nivel, así como arriba, abajo, y en diagonal a través de los diferentes niveles." +"At this Hubzilla instance the Twitter plugin was enabled but you have not " +"yet connected your account to your Twitter account. To do so click the " +"button below to get a PIN from Twitter which you have to copy into the input" +" box below and submit the form. Only your <strong>public</strong> posts will" +" be posted to Twitter." +msgstr "En esta instancia de Hubzilla, el complemento de Twitter estaba habilitado pero aún no ha conectado su cuenta a la cuenta de Twitter. Para ello, haga clic en el botón de abajo, para obtener un PIN de Twitter que debe copiar en el cuadro de entrada a continuación y enviar el formulario. Solo sus entradas <strong>públicas</ strong> se publicarán en Twitter." + +#: ../../addon/twitter/twitter.php:207 +msgid "Log in with Twitter" +msgstr "Iniciar sesión en Twitter" -#: ../../extend/addon/addon/tictac/tictac.php:64 +#: ../../addon/twitter/twitter.php:210 +msgid "Copy the PIN from Twitter here" +msgstr "Copiar aquí el PIN de Twitter" + +#: ../../addon/twitter/twitter.php:237 msgid "" -"The handicap game disables the center position on the middle level because " -"the player claiming this square often has an unfair advantage." -msgstr "El juego con hándicap deshabilita la posición central en el nivel medio porque el jugador que reclama este cuadrado a menudo tiene una ventaja injusta." +"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile " +"details from unknown viewers?</em>) the link potentially included in public " +"postings relayed to Twitter will lead the visitor to a blank page informing " +"the visitor that the access to your profile has been restricted." +msgstr "<strong>Aviso:</strong> Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>), el enlace potencialmente incluido en las entradas públicas retransmitidas a Twitter llevará al visitante a una página en blanco informándolo de que el acceso a su perfil ha sido restringido." -#: ../../extend/addon/addon/tictac/tictac.php:183 -msgid "You go first..." -msgstr "Usted va primero..." +#: ../../addon/twitter/twitter.php:242 +msgid "Allow posting to Twitter" +msgstr "Permitir la publicación en Twitter" -#: ../../extend/addon/addon/tictac/tictac.php:188 -msgid "I'm going first this time..." -msgstr "Yo voy primero esta vez..." +#: ../../addon/twitter/twitter.php:242 +msgid "" +"If enabled your public postings can be posted to the associated Twitter " +"account" +msgstr "Si está activado, sus entradas públicas se pueden publicar en la cuenta de Twitter asociada" -#: ../../extend/addon/addon/tictac/tictac.php:194 -msgid "You won!" -msgstr "¡Usted ha ganado!" +#: ../../addon/twitter/twitter.php:246 +msgid "Send public postings to Twitter by default" +msgstr "Enviar mensajes públicos a Twitter de forma predeterminada" -#: ../../extend/addon/addon/tictac/tictac.php:200 -#: ../../extend/addon/addon/tictac/tictac.php:225 -msgid "\"Cat\" game!" -msgstr "¡El juego del \"gato\"!" +#: ../../addon/twitter/twitter.php:246 +msgid "" +"If enabled your public postings will be posted to the associated Twitter " +"account by default" +msgstr "Si está activado, sus entradas públicas se publicarán en la cuenta de Twitter asociada de forma predeterminada." -#: ../../extend/addon/addon/tictac/tictac.php:223 -msgid "I won!" -msgstr "¡He ganado yo!" +#: ../../addon/twitter/twitter.php:264 +msgid "Twitter Post Settings" +msgstr "Ajustes de publicación en Twitter" + +#: ../../addon/smileybutton/smileybutton.php:273 +msgid "Deactivate the feature" +msgstr "Desactivar la funcionalidad" + +#: ../../addon/smileybutton/smileybutton.php:277 +msgid "Hide the button and show the smilies directly." +msgstr "Ocultar el botón y mostrar los smilies directamente." + +#: ../../addon/smileybutton/smileybutton.php:281 +msgid "Smileybutton Settings" +msgstr "Ajustes de Smileybutton" + +#: ../../addon/piwik/piwik.php:85 +msgid "" +"This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> " +"analytics tool." +msgstr "Este sitio es rastreado mediante la herramienta analítica <a href='http://www.piwik.org'>Piwik</a>." + +#: ../../addon/piwik/piwik.php:88 +#, php-format +msgid "" +"If you do not want that your visits are logged this way you <a href='%s'>can" +" set a cookie to prevent Piwik from tracking further visits of the site</a> " +"(opt-out)." +msgstr "Si usted no quiere que sus visitas se registren de esta manera <a href='%s'>puede establecer una cookie para evitar que Piwik rastree otras visitas del sitio</a> (opt-out)." + +#: ../../addon/piwik/piwik.php:96 +msgid "Piwik Base URL" +msgstr "URL base de Piwik" + +#: ../../addon/piwik/piwik.php:96 +msgid "" +"Absolute path to your Piwik installation. (without protocol (http/s), with " +"trailing slash)" +msgstr "Ruta absoluta a la instalación de Piwik. (Sin protocolo (http/s), con barra diagonal)" + +#: ../../addon/piwik/piwik.php:97 +msgid "Site ID" +msgstr "ID del sitio" + +#: ../../addon/piwik/piwik.php:98 +msgid "Show opt-out cookie link?" +msgstr "Mostrar el enlace de la cookie opt-out?" + +#: ../../addon/piwik/piwik.php:99 +msgid "Asynchronous tracking" +msgstr "Rastreo asíncrono" -#: ../../extend/addon/addon/tour/tour.php:75 +#: ../../addon/piwik/piwik.php:100 +msgid "Enable frontend JavaScript error tracking" +msgstr "Habilitar la interfaz JavaScript de seguimiento de errores" + +#: ../../addon/piwik/piwik.php:100 +msgid "This feature requires Piwik >= 2.2.0" +msgstr "Esta funcionalidad requiere Piwik >= 2.2.0" + +#: ../../addon/tour/tour.php:75 msgid "Edit your profile and change settings." msgstr "Editar su perfil y cambiar los ajustes." -#: ../../extend/addon/addon/tour/tour.php:76 +#: ../../addon/tour/tour.php:76 msgid "Click here to see activity from your connections." msgstr "Pulsar aquí para ver la actividad de sus conexiones." -#: ../../extend/addon/addon/tour/tour.php:77 +#: ../../addon/tour/tour.php:77 msgid "Click here to see your channel home." msgstr "Pulsar aquí para ver la página de inicio de su canal." -#: ../../extend/addon/addon/tour/tour.php:78 +#: ../../addon/tour/tour.php:78 msgid "You can access your private messages from here." msgstr "Puede acceder a sus mensajes privados desde aquí." -#: ../../extend/addon/addon/tour/tour.php:79 +#: ../../addon/tour/tour.php:79 msgid "Create new events here." msgstr "Crear nuevos eventos aquí." -#: ../../extend/addon/addon/tour/tour.php:80 +#: ../../addon/tour/tour.php:80 msgid "" "You can accept new connections and change permissions for existing ones " "here. You can also e.g. create groups of contacts." msgstr "Puede aceptar nuevas conexiones y cambiar permisos para las existentes aquí. También puede, por ejemplo, crear grupos de contactos." -#: ../../extend/addon/addon/tour/tour.php:81 +#: ../../addon/tour/tour.php:81 msgid "System notifications will arrive here" msgstr "Las notificaciones del sistema llegarán aquí" -#: ../../extend/addon/addon/tour/tour.php:82 +#: ../../addon/tour/tour.php:82 msgid "Search for content and users" msgstr "Buscar contenido y usuarios" -#: ../../extend/addon/addon/tour/tour.php:83 +#: ../../addon/tour/tour.php:83 msgid "Browse for new contacts" msgstr "Buscar nuevos contactos" -#: ../../extend/addon/addon/tour/tour.php:84 +#: ../../addon/tour/tour.php:84 msgid "Launch installed apps" msgstr "Iniciar aplicaciones instaladas" -#: ../../extend/addon/addon/tour/tour.php:85 +#: ../../addon/tour/tour.php:85 msgid "Looking for help? Click here." msgstr "¿Busca ayuda? Pulse aquí." -#: ../../extend/addon/addon/tour/tour.php:86 +#: ../../addon/tour/tour.php:86 msgid "" "New events have occurred in your network. Click here to see what has " "happened!" msgstr "Se han producido nuevos eventos en su red. ¡Haga clic aquí para ver lo que ha sucedido!" -#: ../../extend/addon/addon/tour/tour.php:87 +#: ../../addon/tour/tour.php:87 msgid "You have received a new private message. Click here to see from who!" msgstr "Ha recibido un nuevo mensaje privado. Haga clic aquí para ver de quién!" -#: ../../extend/addon/addon/tour/tour.php:88 +#: ../../addon/tour/tour.php:88 msgid "There are events this week. Click here too see which!" msgstr "Hay eventos esta semana. Haga clic aquí para ver cuáles!" -#: ../../extend/addon/addon/tour/tour.php:89 +#: ../../addon/tour/tour.php:89 msgid "You have received a new introduction. Click here to see who!" msgstr "Ha recibido una nueva solicitud de conexión. ¡Pulse aquí para ver de quién!" -#: ../../extend/addon/addon/tour/tour.php:90 +#: ../../addon/tour/tour.php:90 msgid "" "There is a new system notification. Click here to see what has happened!" msgstr "Hay una nueva notificación del sistema. ¡Haga clic aquí para ver lo que ha sucedido!" -#: ../../extend/addon/addon/tour/tour.php:93 +#: ../../addon/tour/tour.php:93 msgid "Click here to share text, images, videos and sound." msgstr "Haga clic aquí para compartir texto, imágenes, vídeos y sonido." -#: ../../extend/addon/addon/tour/tour.php:94 +#: ../../addon/tour/tour.php:94 msgid "You can write an optional title for your update (good for long posts)." msgstr "Puede escribir un título opcional para su actualización (bueno para los mensajes largos)." -#: ../../extend/addon/addon/tour/tour.php:95 +#: ../../addon/tour/tour.php:95 msgid "Entering some categories here makes it easier to find your post later." msgstr "Al ingresar algunos temas aquí, es más fácil encontrar su publicación más tarde." -#: ../../extend/addon/addon/tour/tour.php:96 +#: ../../addon/tour/tour.php:96 msgid "Share photos, links, location, etc." msgstr "Compartir fotos, enlaces, ubicación, etc." -#: ../../extend/addon/addon/tour/tour.php:97 +#: ../../addon/tour/tour.php:97 msgid "" "Only want to share content for a while? Make it expire at a certain date." msgstr "¿Solo quieres compartir contenido durante un tiempo? Haga que expire en una fecha determinada." -#: ../../extend/addon/addon/tour/tour.php:98 +#: ../../addon/tour/tour.php:98 msgid "You can password protect content." msgstr "Puede proteger contenido con una contraseña." -#: ../../extend/addon/addon/tour/tour.php:99 +#: ../../addon/tour/tour.php:99 msgid "Choose who you share with." msgstr "Elegir con quién compartir." -#: ../../extend/addon/addon/tour/tour.php:101 +#: ../../addon/tour/tour.php:101 msgid "Click here when you are done." msgstr "Haga clic aquí cuando haya terminado." -#: ../../extend/addon/addon/tour/tour.php:104 +#: ../../addon/tour/tour.php:104 msgid "Adjust from which channels posts should be displayed." msgstr "Ajustar de qué canales se deben mostrar las publicaciones." -#: ../../extend/addon/addon/tour/tour.php:105 +#: ../../addon/tour/tour.php:105 msgid "Only show posts from channels in the specified privacy group." msgstr "Mostrar solo las entradas de los canales de un grupo específico de canales." -#: ../../extend/addon/addon/tour/tour.php:109 +#: ../../addon/tour/tour.php:109 msgid "Easily find posts containing tags (keywords preceded by the \"#\" symbol)." msgstr "Encuentre fácilmente entradas que contengan etiquetas (palabras clave precedidas del símbolo \"#\")." -#: ../../extend/addon/addon/tour/tour.php:110 +#: ../../addon/tour/tour.php:110 msgid "Easily find posts in given category." msgstr "Encuentre fácilmente las publicaciones en una categoría dada." -#: ../../extend/addon/addon/tour/tour.php:111 +#: ../../addon/tour/tour.php:111 msgid "Easily find posts by date." msgstr "Encuentre fácilmente entradas por fechas." -#: ../../extend/addon/addon/tour/tour.php:112 +#: ../../addon/tour/tour.php:112 msgid "" "Suggested users who have volounteered to be shown as suggestions, and who we" " think you might find interesting." msgstr "Se sugiere a los usuarios que se han ofrecido voluntariamente que se muestren como sugerencias, y que creemos que podrían resultar interesantes." -#: ../../extend/addon/addon/tour/tour.php:113 +#: ../../addon/tour/tour.php:113 msgid "Here you see channels you have connected to." msgstr "Aquí puede ver los canales a los que está conectado." -#: ../../extend/addon/addon/tour/tour.php:114 +#: ../../addon/tour/tour.php:114 msgid "Save your search so you can repeat it at a later date." msgstr "Guarde su búsqueda para poder repetirla en una fecha posterior." -#: ../../extend/addon/addon/tour/tour.php:117 +#: ../../addon/tour/tour.php:117 msgid "" "If you see this icon you can be sure that the sender is who it say it is. It" " is normal that it is not always possible to verify the sender, so the icon " "will be missing sometimes. There is usually no need to worry about that." msgstr "Si ve este icono puede estar seguro de que el remitente es quien dice ser. Es normal que no siempre sea posible verificar el remitente, por lo que el icono faltará en ocasiones. Por lo general, no hay necesidad de preocuparse por eso." -#: ../../extend/addon/addon/tour/tour.php:118 +#: ../../addon/tour/tour.php:118 msgid "" "Danger! It seems someone tried to forge a message! This message is not " "necessarily from who it says it is from!" msgstr "¡Peligro! ¡Parece que alguien intentó falsificar un mensaje! ¡Este mensaje no es necesariamente de quien dice que es!" -#: ../../extend/addon/addon/tour/tour.php:125 +#: ../../addon/tour/tour.php:125 msgid "" "Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can " "pause it at any time and continue where you left off by reloading the page, " @@ -10062,1246 +10458,318 @@ msgid "" "return key" msgstr "¡Bienvenido/a a Hubzilla! ¿Quiere hacer un recorrido por la interfaz de usuario?</p> <p> Puede detenerlo en cualquier momento y continuar donde lo dejó recargando la página o navegando a otra.</p> <p> También puede avanzar pulsando la tecla de retorno" -#: ../../extend/addon/addon/twitter/twitter.php:99 -msgid "Post to Twitter" -msgstr "Publicar en Twitter" - -#: ../../extend/addon/addon/twitter/twitter.php:154 -msgid "Twitter settings updated." -msgstr "Se han actualizado los ajustes de Twitter." +#: ../../addon/sendzid/sendzid.php:25 +msgid "Extended Identity Sharing" +msgstr "Compartir identidad extendida" -#: ../../extend/addon/addon/twitter/twitter.php:183 +#: ../../addon/sendzid/sendzid.php:26 msgid "" -"No consumer key pair for Twitter found. Please contact your site " -"administrator." -msgstr "No se encontró ningún par de \"consumer key\" para Twitter. Póngase en contacto con el administrador del sitio." +"Share your identity with all websites on the internet. When disabled, " +"identity is only shared with sites in the matrix." +msgstr "Compartir su identidad con todos los sitios web en Internet. Cuando se inhabilita, la identidad sólo se comparte con los sitios de la matriz." -#: ../../extend/addon/addon/twitter/twitter.php:205 -msgid "" -"At this Hubzilla instance the Twitter plugin was enabled but you have not " -"yet connected your account to your Twitter account. To do so click the " -"button below to get a PIN from Twitter which you have to copy into the input" -" box below and submit the form. Only your <strong>public</strong> posts will" -" be posted to Twitter." -msgstr "En esta instancia de Hubzilla, el complemento de Twitter estaba habilitado pero aún no ha conectado su cuenta a la cuenta de Twitter. Para ello, haga clic en el botón de abajo, para obtener un PIN de Twitter que debe copiar en el cuadro de entrada a continuación y enviar el formulario. Solo sus entradas <strong>públicas</ strong> se publicarán en Twitter." +#: ../../addon/tictac/tictac.php:21 +msgid "Three Dimensional Tic-Tac-Toe" +msgstr "Juego en 3D Tic-Tac-Toe" -#: ../../extend/addon/addon/twitter/twitter.php:207 -msgid "Log in with Twitter" -msgstr "Iniciar sesión en Twitter" +#: ../../addon/tictac/tictac.php:54 +msgid "3D Tic-Tac-Toe" +msgstr "3D Tic-Tac-Toe" -#: ../../extend/addon/addon/twitter/twitter.php:210 -msgid "Copy the PIN from Twitter here" -msgstr "Copiar aquí el PIN de Twitter" +#: ../../addon/tictac/tictac.php:59 +msgid "New game" +msgstr "Nuevo juego" -#: ../../extend/addon/addon/twitter/twitter.php:237 +#: ../../addon/tictac/tictac.php:60 +msgid "New game with handicap" +msgstr "Nuevo juego con hándicap" + +#: ../../addon/tictac/tictac.php:61 msgid "" -"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile " -"details from unknown viewers?</em>) the link potentially included in public " -"postings relayed to Twitter will lead the visitor to a blank page informing " -"the visitor that the access to your profile has been restricted." -msgstr "<strong>Aviso:</strong> Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>), el enlace potencialmente incluido en las entradas públicas retransmitidas a Twitter llevará al visitante a una página en blanco informándolo de que el acceso a su perfil ha sido restringido." +"Three dimensional tic-tac-toe is just like the traditional game except that " +"it is played on multiple levels simultaneously. " +msgstr "El juego en 3D tic-tac-toe es como el juego tradicional, excepto que se juega en varios niveles simultáneamente." -#: ../../extend/addon/addon/twitter/twitter.php:242 -msgid "Allow posting to Twitter" -msgstr "Permitir la publicación en Twitter" +#: ../../addon/tictac/tictac.php:62 +msgid "" +"In this case there are three levels. You win by getting three in a row on " +"any level, as well as up, down, and diagonally across the different levels." +msgstr "En este caso hay tres niveles. Usted gana al conseguir tres en una fila en cualquier nivel, así como arriba, abajo, y en diagonal a través de los diferentes niveles." -#: ../../extend/addon/addon/twitter/twitter.php:242 +#: ../../addon/tictac/tictac.php:64 msgid "" -"If enabled your public postings can be posted to the associated Twitter " -"account" -msgstr "Si está activado, sus entradas públicas se pueden publicar en la cuenta de Twitter asociada" +"The handicap game disables the center position on the middle level because " +"the player claiming this square often has an unfair advantage." +msgstr "El juego con hándicap deshabilita la posición central en el nivel medio porque el jugador que reclama este cuadrado a menudo tiene una ventaja injusta." -#: ../../extend/addon/addon/twitter/twitter.php:246 -msgid "Send public postings to Twitter by default" -msgstr "Enviar mensajes públicos a Twitter de forma predeterminada" +#: ../../addon/tictac/tictac.php:183 +msgid "You go first..." +msgstr "Usted va primero..." -#: ../../extend/addon/addon/twitter/twitter.php:246 -msgid "" -"If enabled your public postings will be posted to the associated Twitter " -"account by default" -msgstr "Si está activado, sus entradas públicas se publicarán en la cuenta de Twitter asociada de forma predeterminada." +#: ../../addon/tictac/tictac.php:188 +msgid "I'm going first this time..." +msgstr "Yo voy primero esta vez..." -#: ../../extend/addon/addon/twitter/twitter.php:264 -msgid "Twitter Post Settings" -msgstr "Ajustes de publicación en Twitter" +#: ../../addon/tictac/tictac.php:194 +msgid "You won!" +msgstr "¡Usted ha ganado!" -#: ../../extend/addon/addon/twitter/twitter.php:773 -#: ../../extend/addon/addon/rendezvous/rendezvous.php:95 -msgid "Submit Settings" -msgstr "Enviar los ajustes" +#: ../../addon/tictac/tictac.php:200 ../../addon/tictac/tictac.php:225 +msgid "\"Cat\" game!" +msgstr "¡El juego del \"gato\"!" -#: ../../extend/addon/addon/upload_limits/upload_limits.php:25 -msgid "Show Upload Limits" -msgstr "Mostrar los límites de subida" +#: ../../addon/tictac/tictac.php:223 +msgid "I won!" +msgstr "¡He ganado yo!" -#: ../../extend/addon/addon/upload_limits/upload_limits.php:27 -msgid "Hubzilla configured maximum size: " -msgstr "Tamaño máximo configurado por Hubzilla: " +#: ../../addon/pageheader/pageheader.php:43 +msgid "Message to display on every page on this server" +msgstr "Mensaje para mostrar en todas las páginas de este servidor" -#: ../../extend/addon/addon/upload_limits/upload_limits.php:28 -msgid "PHP upload_max_filesize: " -msgstr "PHP upload_max_filesize: " +#: ../../addon/pageheader/pageheader.php:48 +msgid "Pageheader Settings" +msgstr "Ajustes del encabezado de página" -#: ../../extend/addon/addon/upload_limits/upload_limits.php:29 -msgid "PHP post_max_size (must be larger than upload_max_filesize): " -msgstr "PHP post_max_size (debe ser mayor que upload_max_filesize): " +#: ../../addon/pageheader/pageheader.php:64 +msgid "pageheader Settings saved." +msgstr "Se han guardado los ajustes del encabezado de página." -#: ../../extend/addon/addon/visage/visage.php:93 -msgid "Recent Channel/Profile Viewers" -msgstr "Visitantes recientes del canal o perfil" +#: ../../addon/moremoods/moremoods.php:19 +msgid "lonely" +msgstr "Solo/a" -#: ../../extend/addon/addon/visage/visage.php:98 -msgid "This plugin/addon has not been configured." -msgstr "El plugin o complemento no se ha configurado." +#: ../../addon/moremoods/moremoods.php:20 +msgid "drunk" +msgstr "ebrio/a" -#: ../../extend/addon/addon/visage/visage.php:99 -#, php-format -msgid "Please visit the Visage settings on %s" -msgstr "Por favor, revise los ajustes de Visage en %s" +#: ../../addon/moremoods/moremoods.php:21 +msgid "horny" +msgstr "caliente" -#: ../../extend/addon/addon/visage/visage.php:99 -msgid "your feature settings page" -msgstr "su página de ajustes de las funcionalidades" +#: ../../addon/moremoods/moremoods.php:22 +msgid "stoned" +msgstr "drogado/a" -#: ../../extend/addon/addon/visage/visage.php:112 -msgid "No entries." -msgstr "No hay entradas." +#: ../../addon/moremoods/moremoods.php:23 +msgid "fucked up" +msgstr "jodido/a" -#: ../../extend/addon/addon/visage/visage.php:166 -msgid "Enable Visage Visitor Logging" -msgstr "Habilitar el registro de visitantes de Visage" +#: ../../addon/moremoods/moremoods.php:24 +msgid "clusterfucked" +msgstr "hecho/a polvo" -#: ../../extend/addon/addon/visage/visage.php:170 -msgid "Visage Settings" -msgstr "Ajustes de Visage" +#: ../../addon/moremoods/moremoods.php:25 +msgid "crazy" +msgstr "loco/a" -#: ../../extend/addon/addon/wholikesme/wholikesme.php:29 -msgid "Who likes me?" -msgstr "¿Quién me ha puesto \"Me gusta\"?" +#: ../../addon/moremoods/moremoods.php:26 +msgid "hurt" +msgstr "ofendido/a" -#: ../../extend/addon/addon/wppost/wppost.php:45 -msgid "Post to WordPress" -msgstr "Publicar en WordPress" +#: ../../addon/moremoods/moremoods.php:27 +msgid "sleepy" +msgstr "soñoliento/a" -#: ../../extend/addon/addon/wppost/wppost.php:82 -msgid "Enable WordPress Post Plugin" -msgstr "Habilitar el plugin de publicación en WordPress" +#: ../../addon/moremoods/moremoods.php:28 +msgid "grumpy" +msgstr "gruñón/ona" -#: ../../extend/addon/addon/wppost/wppost.php:86 -msgid "WordPress username" -msgstr "Nombre de usuario de WordPress" +#: ../../addon/moremoods/moremoods.php:29 +msgid "high" +msgstr "superior" -#: ../../extend/addon/addon/wppost/wppost.php:90 -msgid "WordPress password" -msgstr "Contraseña de WordPress" +#: ../../addon/moremoods/moremoods.php:30 +msgid "semi-conscious" +msgstr "semiconsciente" -#: ../../extend/addon/addon/wppost/wppost.php:94 -msgid "WordPress API URL" -msgstr "URL de la API de WordPress" +#: ../../addon/moremoods/moremoods.php:31 +msgid "in love" +msgstr "enamorado/a" -#: ../../extend/addon/addon/wppost/wppost.php:95 -msgid "Typically https://your-blog.tld/xmlrpc.php" -msgstr "Habitualmente https://your-blog.tld/xmlrpc.php" +#: ../../addon/moremoods/moremoods.php:32 +msgid "in lust" +msgstr "lujurioso/a" -#: ../../extend/addon/addon/wppost/wppost.php:98 -msgid "WordPress blogid" -msgstr "Blog de WordPress" +#: ../../addon/moremoods/moremoods.php:33 +msgid "naked" +msgstr "desnudo/a" -#: ../../extend/addon/addon/wppost/wppost.php:99 -msgid "For multi-user sites such as wordpress.com, otherwise leave blank" -msgstr "Para sitios multiusuario como wordpress.com, de lo contrario, dejar en blanco" +#: ../../addon/moremoods/moremoods.php:34 +msgid "stinky" +msgstr "apestoso/a" -#: ../../extend/addon/addon/wppost/wppost.php:105 -msgid "Post to WordPress by default" -msgstr "Publicar en WordPress por defecto" +#: ../../addon/moremoods/moremoods.php:35 +msgid "sweaty" +msgstr "sudoroso/a" -#: ../../extend/addon/addon/wppost/wppost.php:109 -msgid "Forward comments (requires hubzilla_wp plugin)" -msgstr "Reenviar comentarios (requerido por el plugin hubzilla_wp)" +#: ../../addon/moremoods/moremoods.php:36 +msgid "bleeding out" +msgstr "una maldición" -#: ../../extend/addon/addon/wppost/wppost.php:113 -msgid "WordPress Post Settings" -msgstr "Ajustes de publicación en WordPress" +#: ../../addon/moremoods/moremoods.php:37 +msgid "victorious" +msgstr "victorioso/a" -#: ../../extend/addon/addon/wppost/wppost.php:129 -msgid "Wordpress Settings saved." -msgstr "Se han guardado los ajustes de WordPress." +#: ../../addon/moremoods/moremoods.php:38 +msgid "defeated" +msgstr "derrotado/a" -#: ../../extend/addon/addon/xmpp/xmpp.php:31 +#: ../../addon/moremoods/moremoods.php:39 +msgid "envious" +msgstr "envidioso/a" + +#: ../../addon/moremoods/moremoods.php:40 +msgid "jealous" +msgstr "celoso/a" + +#: ../../addon/xmpp/xmpp.php:31 msgid "XMPP settings updated." msgstr "Se han actualizado los ajustes de XMPP." -#: ../../extend/addon/addon/xmpp/xmpp.php:53 +#: ../../addon/xmpp/xmpp.php:53 msgid "Enable Chat" msgstr "Habilitar el chat" -#: ../../extend/addon/addon/xmpp/xmpp.php:58 +#: ../../addon/xmpp/xmpp.php:58 msgid "Individual credentials" msgstr "Credenciales individuales" -#: ../../extend/addon/addon/xmpp/xmpp.php:64 +#: ../../addon/xmpp/xmpp.php:64 msgid "Jabber BOSH server" msgstr "Servidor BOSH de Jabber" -#: ../../extend/addon/addon/xmpp/xmpp.php:69 +#: ../../addon/xmpp/xmpp.php:69 msgid "XMPP Settings" msgstr "Ajustes de XMPP" -#: ../../extend/addon/addon/xmpp/xmpp.php:92 +#: ../../addon/xmpp/xmpp.php:92 msgid "Jabber BOSH host" msgstr "BOSH de Jabber" -#: ../../extend/addon/addon/xmpp/xmpp.php:93 +#: ../../addon/xmpp/xmpp.php:93 msgid "Use central userbase" msgstr "Usar la base de usuarios central" -#: ../../extend/addon/addon/xmpp/xmpp.php:93 +#: ../../addon/xmpp/xmpp.php:93 msgid "" "If enabled, members will automatically login to an ejabberd server that has " "to be installed on this machine with synchronized credentials via the " "\"auth_ejabberd.php\" script." msgstr "Si está habilitado, los miembros se conectarán automáticamente a un servidor ejabberd que debe instalarse en esta máquina con credenciales sincronizadas a través del script \"auth ejabberd.php\"." -#: ../../extend/addon/addon/cdav/include/widgets.php:37 -msgid "Select Channel" -msgstr "Seleccionar un canal" - -#: ../../extend/addon/addon/cdav/include/widgets.php:42 -msgid "Read-write" -msgstr "Lectura y escritura" - -#: ../../extend/addon/addon/cdav/include/widgets.php:43 -msgid "Read-only" -msgstr "Sólo lectura" - -#: ../../extend/addon/addon/cdav/include/widgets.php:116 -msgid "My Calendars" -msgstr "Mis calendarios" - -#: ../../extend/addon/addon/cdav/include/widgets.php:118 -msgid "Shared Calendars" -msgstr "Calendarios compartidos" - -#: ../../extend/addon/addon/cdav/include/widgets.php:122 -msgid "Share this calendar" -msgstr "Compartir este calendario" - -#: ../../extend/addon/addon/cdav/include/widgets.php:124 -msgid "Calendar name and color" -msgstr "Nombre y color del calendario" - -#: ../../extend/addon/addon/cdav/include/widgets.php:126 -msgid "Create new calendar" -msgstr "Crear un nuevo calendario" - -#: ../../extend/addon/addon/cdav/include/widgets.php:128 -msgid "Calendar Name" -msgstr "Nombre del calendario" - -#: ../../extend/addon/addon/cdav/include/widgets.php:129 -msgid "Calendar Tools" -msgstr "Gestión de calendarios" - -#: ../../extend/addon/addon/cdav/include/widgets.php:130 -msgid "Import calendar" -msgstr "Importar un calendario" - -#: ../../extend/addon/addon/cdav/include/widgets.php:131 -msgid "Select a calendar to import to" -msgstr "Seleccionar un calendario para importarlo" - -#: ../../extend/addon/addon/cdav/include/widgets.php:158 -msgid "Addressbooks" -msgstr "Agenda de direcciones" - -#: ../../extend/addon/addon/cdav/include/widgets.php:160 -msgid "Addressbook name" -msgstr "Nombre de la agenda" - -#: ../../extend/addon/addon/cdav/include/widgets.php:162 -msgid "Create new addressbook" -msgstr "Crear una nueva agenda de direcciones" - -#: ../../extend/addon/addon/cdav/include/widgets.php:163 -msgid "Addressbook Name" -msgstr "Nombre de la agenda" - -#: ../../extend/addon/addon/cdav/include/widgets.php:165 -msgid "Addressbook Tools" -msgstr "Gestión de agendas de direcciones" - -#: ../../extend/addon/addon/cdav/include/widgets.php:166 -msgid "Import addressbook" -msgstr "Importar una agenda de direcciones" - -#: ../../extend/addon/addon/cdav/include/widgets.php:167 -msgid "Select an addressbook to import to" -msgstr "Seleccionar una agenda para importarla" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:744 -msgid "INVALID EVENT DISMISSED!" -msgstr "¡EVENTO NO VÁLIDO RECHAZADO!" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:745 -msgid "Summary: " -msgstr "Resumen: " - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:746 -msgid "Date: " -msgstr "Fecha: " - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:747 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:754 -msgid "Reason: " -msgstr "Razón: " - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:752 -msgid "INVALID CARD DISMISSED!" -msgstr "¡TARJETA NO VÁLIDA RECHAZADA!" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:753 -msgid "Name: " -msgstr "Nombre: " - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:770 -msgid "" -"You have to enable this plugin in Feature/Addon Settings > CalDAV/CardDAV " -"Settings before you can use it." -msgstr "Debe habilitar este complemento en Ajustes/Complementos>Configuración de CalDAV/CardDAV antes de poder utilizarlo." - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:836 -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:837 -msgid "Example: YYYY-MM-DD HH:mm" -msgstr "Ejemplo: YYYY-MM-DD HH:mm" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:837 -msgid "End date and time" -msgstr "Fecha y hora de finalización" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:852 -msgid "List month" -msgstr "Lista mensual" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:853 -msgid "List week" -msgstr "Lista semanal" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:854 -msgid "List day" -msgstr "Lista diaria" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:861 -msgid "More" -msgstr "Más" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:862 -msgid "Less" -msgstr "Menos" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:863 -msgid "Select calendar" -msgstr "Seleccionar un calendario" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:865 -msgid "Delete all" -msgstr "Eliminar todos" - -#: ../../extend/addon/addon/cdav/Mod_Cdav.php:867 -msgid "Sorry! Editing of recurrent events is not yet implemented." -msgstr "¡Disculpas! La edición de eventos recurrentes aún no se ha implementado." - -#: ../../extend/addon/addon/cdav/cdav.php:36 -msgid "Errors encountered creating database table: " -msgstr "Errores encontrados al crear la tabla de la base de datos: " - -#: ../../extend/addon/addon/cdav/cdav.php:197 -msgid "Default Calendar" -msgstr "Calendario por defecto" - -#: ../../extend/addon/addon/cdav/cdav.php:206 -msgid "Default Addressbook" -msgstr "Agenda de direcciones por defecto" - -#: ../../extend/addon/addon/cdav/cdav.php:215 -msgid "CalDAV/CardDAV Settings saved." -msgstr "Se ha guardado la configuración de CalDAV/CardDAV." - -#: ../../extend/addon/addon/cdav/cdav.php:234 -msgid "Enable CalDAV/CardDAV Server for this channel" -msgstr "Habilitar el servidor CalDAV/CardDAV para este canal" - -#: ../../extend/addon/addon/cdav/cdav.php:237 -#, php-format -msgid "Your CalDAV resources are located at %s " -msgstr "Los recursos de CalDAV se encuentran en %s" - -#: ../../extend/addon/addon/cdav/cdav.php:240 -#, php-format -msgid "Your CardDAV resources are located at %s " -msgstr "Sus recursos de CalDAV están localizados en %s " - -#: ../../extend/addon/addon/cdav/cdav.php:246 -msgid "CalDAV/CardDAV Settings" -msgstr "Configuración de CalDAV/CardDAV" - -#: ../../extend/addon/addon/cdav/cdav.php:272 -#: ../../include/connections.php:670 -msgid "Home, Voice" -msgstr "Llamadas particulares" - -#: ../../extend/addon/addon/cdav/cdav.php:273 -#: ../../include/connections.php:671 -msgid "Home, Fax" -msgstr "Fax particular" - -#: ../../extend/addon/addon/cdav/cdav.php:275 -#: ../../include/connections.php:673 -msgid "Work, Voice" -msgstr "Llamadas de trabajo" - -#: ../../extend/addon/addon/cdav/cdav.php:276 -#: ../../include/connections.php:674 -msgid "Work, Fax" -msgstr "Fax de trabajo" - -#: ../../extend/addon/addon/chess/chess.php:276 -#: ../../extend/addon/addon/chess/chess.php:433 -msgid "Invalid game." -msgstr "Juego no válido." - -#: ../../extend/addon/addon/chess/chess.php:282 -#: ../../extend/addon/addon/chess/chess.php:439 -msgid "You are not a player in this game." -msgstr "Usted no participa en este juego." - -#: ../../extend/addon/addon/chess/chess.php:315 -msgid "You must be a local channel to create a game." -msgstr "Debe ser un canal local para crear un juego" - -#: ../../extend/addon/addon/chess/chess.php:333 -msgid "You must select one opponent that is not yourself." -msgstr "Debe seleccionar un oponente que no sea usted mismo." - -#: ../../extend/addon/addon/chess/chess.php:336 -msgid "Creating new game..." -msgstr "Crear un nuevo juego..." - -#: ../../extend/addon/addon/chess/chess.php:342 -msgid "You must select white or black." -msgstr "Debe elegir blancas o negras." - -#: ../../extend/addon/addon/chess/chess.php:349 -msgid "Error creating new game." -msgstr "Error al crear un nuevo juego." - -#: ../../extend/addon/addon/chess/chess.php:381 ../../include/channel.php:899 -msgid "Requested channel is not available." -msgstr "El canal solicitado no está disponible." - -#: ../../extend/addon/addon/chess/chess.php:395 -msgid "You must select a local channel /chess/channelname" -msgstr "Debe seleccionar un canal local /chess/nombredelcanal" - -#: ../../extend/addon/addon/chess/chess.php:923 -msgid "Enable notifications" -msgstr "Habilitar notificaciones" - -#: ../../extend/addon/addon/likebanner/likebanner.php:51 -msgid "Your Webbie:" -msgstr "Su webbie: " - -#: ../../extend/addon/addon/likebanner/likebanner.php:54 -msgid "Fontsize (px):" -msgstr "Tamaño de fuente (px): " - -#: ../../extend/addon/addon/likebanner/likebanner.php:68 -msgid "Link:" -msgstr "Enlace: " - -#: ../../extend/addon/addon/likebanner/likebanner.php:70 -msgid "Like us on Hubzilla" -msgstr "Múestrenos su agrado en Hubzilla" - -#: ../../extend/addon/addon/likebanner/likebanner.php:72 -msgid "Embed:" -msgstr "Incorporado: " - -#: ../../extend/addon/addon/openid/Mod_Id.php:85 -#: ../../include/selectors.php:49 ../../include/selectors.php:66 -msgid "Male" -msgstr "Hombre" - -#: ../../extend/addon/addon/openid/Mod_Id.php:87 -#: ../../include/selectors.php:49 ../../include/selectors.php:66 -msgid "Female" -msgstr "Mujer" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:52 -msgid "First Name" -msgstr "Nombre" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:53 -msgid "Last Name" -msgstr "Apellido" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:55 -msgid "Full Name" -msgstr "Nombre completo" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:61 -msgid "Profile Photo 16px" -msgstr "Foto del perfil 16px" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:62 -msgid "Profile Photo 32px" -msgstr "Foto del perfil 32px" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:63 -msgid "Profile Photo 48px" -msgstr "Foto del perfil 48px" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:64 -msgid "Profile Photo 64px" -msgstr "Foto del perfil 64px" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:65 -msgid "Profile Photo 80px" -msgstr "Foto del perfil 80px" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:66 -msgid "Profile Photo 128px" -msgstr "Foto del perfil 128px" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:67 -msgid "Timezone" -msgstr "Zona horaria" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:70 -msgid "Birth Year" -msgstr "Año de nacimiento" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:71 -msgid "Birth Month" -msgstr "Mes de nacimiento" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:72 -msgid "Birth Day" -msgstr "Día de nacimiento" - -#: ../../extend/addon/addon/openid/MysqlProvider.php:73 -msgid "Birthdate" -msgstr "Fecha de nacimiento" - -#: ../../extend/addon/addon/openid/openid.php:49 -msgid "" -"We encountered a problem while logging in with the OpenID you provided. " -"Please check the correct spelling of the ID." -msgstr "Encontramos un problema al iniciar sesión con el OpenID que proporcionó. Compruebe si el ID está correctamente escrito." - -#: ../../extend/addon/addon/openid/openid.php:49 -msgid "The error message was:" -msgstr "El mensaje de error ha sido: " - -#: ../../extend/addon/addon/openid/Mod_Openid.php:30 -msgid "OpenID protocol error. No ID returned." -msgstr "Error de protocolo OpenID. No se recuperó ninguna ID." - -#: ../../extend/addon/addon/openid/Mod_Openid.php:188 -#: ../../include/auth.php:286 -msgid "Login failed." -msgstr "El acceso ha fallado." - -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:44 -#, php-format -msgid "Reconnecting %d connections" -msgstr "Reconectando %d conexiones" - -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:63 -msgid "Diaspora Reconnect" -msgstr "Reconectar con Diaspora" - -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:65 -msgid "" -"Use this form to re-establish Diaspora connections which were initially made" -" from a different hub." -msgstr "Utilice este formulario para restablecer las conexiones de diáspora que se hicieron inicialmente desde un hub diferente." - -#: ../../extend/addon/addon/diaspora_reconnect/diaspora_reconnect.php:70 -msgid "Reconnect" -msgstr "Reconectar" - -#: ../../extend/addon/addon/mailtest/mailtest.php:19 -msgid "Send test email" -msgstr "Enviar un correo electrónico de prueba" - -#: ../../extend/addon/addon/mailtest/mailtest.php:66 -msgid "Mail sent." -msgstr "El correo electrónico ha sido enviado." - -#: ../../extend/addon/addon/mailtest/mailtest.php:68 -msgid "Sending of mail failed." -msgstr "No se pudo enviar el correo." - -#: ../../extend/addon/addon/mailtest/mailtest.php:77 -msgid "Mail Test" -msgstr "Prueba de correo" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:57 -msgid "Errors encountered deleting database table " -msgstr "Errores encontrados al eliminar la tabla de la base de datos" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:96 -msgid "Drop tables when uninstalling?" -msgstr "¿Eliminar tablas al desinstalar?" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:96 -msgid "" -"If checked, the Rendezvous database tables will be deleted when the plugin " -"is uninstalled." -msgstr "Si se selecciona, las tablas de la base de datos Rendezvous se eliminarán cuando se desinstale el plugin." - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:97 -msgid "Mapbox Access Token" -msgstr "Token de acceso de Mapbox" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:97 -msgid "" -"If you enter a Mapbox access token, it will be used to retrieve map tiles " -"from Mapbox instead of the default OpenStreetMap tile server." -msgstr "Si introduce un token de acceso a Mapbox, se utilizará para recuperar los mapas de mosaicos de imágenes de Mapbox en lugar del servidor de mosaico de imágenes OpenStreetMap predeterminado." - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:162 -msgid "Rendezvous" -msgstr "Rendezvous" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:167 -msgid "" -"This identity has been deleted by another member due to inactivity. Please " -"press the \"New identity\" button or refresh the page to register a new " -"identity. You may use the same name." -msgstr "Esta identidad ha sido eliminada por otro miembro debido a su inactividad. Pulse el botón \"Nueva identidad\" o actualice la página para registrar una nueva identidad. Puede usar el mismo nombre." - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:168 -msgid "Welcome to Rendezvous!" -msgstr "¡Bienvenido/a a Rendevous!" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:169 -msgid "" -"Enter your name to join this rendezvous. To begin sharing your location with" -" the other members, tap the GPS control. When your location is discovered, a" -" red dot will appear and others will be able to see you on the map." -msgstr "Introduzca tu nombre para unirse a esta cita. Para comenzar a compartir su ubicación con los demás miembros, pulse en el control GPS. Cuando se descubra su ubicación, aparecerá un punto rojo y otros podrán verlo en el mapa." - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:171 -msgid "Let's meet here" -msgstr "Reunámonos aquí" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:174 -msgid "New marker" -msgstr "Nuevo marcador" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:175 -msgid "Edit marker" -msgstr "Editar un marcador" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:176 -msgid "New identity" -msgstr "Nueva identidad" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:177 -msgid "Delete marker" -msgstr "Eliminar un marcador" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:178 -msgid "Delete member" -msgstr "Eliminar un miembro" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:179 -msgid "Edit proximity alert" -msgstr "Editar alerta de proximidad" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:180 -msgid "" -"A proximity alert will be issued when this member is within a certain radius" -" of you.<br><br>Enter a radius in meters (0 to disable):" -msgstr "Se emitirá una alerta de proximidad cuando este miembro esté dentro de un radio determinado respecto a usted.<br><br> Ingrese el radio en metros (0 para deshabilitar):" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:180 -#: ../../extend/addon/addon/rendezvous/rendezvous.php:185 -msgid "distance" -msgstr "distancia" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:181 -msgid "Proximity alert distance (meters)" -msgstr "Distancia (en metros) para la alerta de proximidad" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:182 -#: ../../extend/addon/addon/rendezvous/rendezvous.php:184 -msgid "" -"A proximity alert will be issued when you are within a certain radius of the" -" marker location.<br><br>Enter a radius in meters (0 to disable):" -msgstr "Se emitirá una alerta de proximidad cuando usted esté dentro de un radio determinado respecto al marcador de localización.<br><br> Ingrese el radio en metros (0 para deshabilitar):" - -#: ../../extend/addon/addon/rendezvous/rendezvous.php:183 -msgid "Marker proximity alert" -msgstr "Marcador de alerta de proximidad" +#: ../../addon/wholikesme/wholikesme.php:29 +msgid "Who likes me?" +msgstr "¿Quién me ha puesto \"Me gusta\"?" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:186 -msgid "Reminder note" -msgstr "Recordatorio" +#: ../../addon/pumpio/pumpio.php:148 +msgid "You are now authenticated to pumpio." +msgstr "Ahora está autenticado en pump.io." -#: ../../extend/addon/addon/rendezvous/rendezvous.php:187 -msgid "" -"Enter a note to be displayed when you are within the specified proximity..." -msgstr "Introduzca una nota que se mostrará cuando esté dentro de la proximidad especificada..." +#: ../../addon/pumpio/pumpio.php:149 +msgid "return to the featured settings page" +msgstr "Volver a la página de configuración destacada" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:199 -msgid "Add new rendezvous" -msgstr "Añadir una nueva cita" +#: ../../addon/pumpio/pumpio.php:163 +msgid "Post to Pump.io" +msgstr "Publicar en Pump.io" -#: ../../extend/addon/addon/rendezvous/rendezvous.php:200 -msgid "" -"Create a new rendezvous and share the access link with those you wish to " -"invite to the group. Those who open the link become members of the " -"rendezvous. They can view other member locations, add markers to the map, or" -" share their own locations with the group." -msgstr "Cree una nueva cita y comparta los enlaces de acceso con los que desea invitar al grupo. Aquellos que abran el enlace se convertirán en miembros de la cita. Pueden ver otras ubicaciones de miembros, añadir marcadores al mapa o compartir sus propias ubicaciones con el grupo." +#: ../../addon/pumpio/pumpio.php:198 +msgid "Pump.io servername" +msgstr "Nombre del servidor de Pump.io" -#: ../../extend/addon/addon/firefox/firefox.php:23 -msgid "Install Firefox Sharing Tools" -msgstr "Instalar las herramientas de compartición de Firefox" +#: ../../addon/pumpio/pumpio.php:198 +msgid "Without \"http://\" or \"https://\"" +msgstr "Sin \"http://\" or \"https://\"" -#: ../../extend/addon/addon/firefox/firefox.php:34 -msgid "Share content from Firefox to $Projectname" -msgstr "Compartir contenido desde Firefox a $Projectname" +#: ../../addon/pumpio/pumpio.php:202 +msgid "Pump.io username" +msgstr "Nombre de usuario en Pump.io" -#: ../../extend/addon/addon/firefox/firefox.php:37 -msgid "Install Firefox Sharing Tools to this web browser" -msgstr "Instalar las herramientas de compartición de Firefox en este navegador" +#: ../../addon/pumpio/pumpio.php:202 +msgid "Without the servername" +msgstr "Sin el nombre del servidor" -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:105 -msgid "Error retrieving wiki" -msgstr "Error al recuperar el wiki" +#: ../../addon/pumpio/pumpio.php:213 +msgid "You are not authenticated to pumpio" +msgstr "No está autenticado en pump.io" -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:112 -msgid "Error creating zip file export folder" -msgstr "Error al crear el fichero comprimido zip de la carpeta a exportar" +#: ../../addon/pumpio/pumpio.php:215 +msgid "(Re-)Authenticate your pump.io connection" +msgstr "(Re-)Autenticar su conexión en pump.io" -#: ../../extend/addon/addon/gitwiki/Mod_Gitwiki.php:130 -msgid "Error downloading wiki: " -msgstr "Error al descargar el wiki: " +#: ../../addon/pumpio/pumpio.php:219 +msgid "Enable pump.io Post Plugin" +msgstr "Habilitar el plugin de publicación en pump.io" -#: ../../extend/addon/addon/gitwiki/gitwiki.php:76 -#: ../../include/widgets.php:956 -msgid "Wiki Pages" -msgstr "Páginas del wiki" +#: ../../addon/pumpio/pumpio.php:223 +msgid "Post to pump.io by default" +msgstr "Publicar por defecto en pump.io" -#: ../../extend/addon/addon/gitwiki/gitwiki.php:81 -#: ../../include/widgets.php:962 -msgid "Add new page" -msgstr "Añadir una nueva página" +#: ../../addon/pumpio/pumpio.php:227 +msgid "Should posts be public" +msgstr "¿Las entradas deben ser públicas?" -#: ../../extend/addon/addon/gitwiki/gitwiki.php:82 -#: ../../include/widgets.php:963 -msgid "Page name" -msgstr "Nombre de la página" +#: ../../addon/pumpio/pumpio.php:231 +msgid "Mirror all public posts" +msgstr "Reflejar todos los mensajes públicos" -#: ../../extend/addon/addon/gitwiki/gitwiki.php:95 -#: ../../include/widgets.php:913 -msgid "Wiki List" -msgstr "Lista de wikis" +#: ../../addon/pumpio/pumpio.php:237 +msgid "Pump.io Post Settings" +msgstr "Ajustes de publicación en pump.io" -#: ../../extend/addon/addon/gnusoc/gnusoc.php:129 -msgid "Enable the GNU-Social protocol for this channel" -msgstr "Activar el protocolo de GNU-Social para este canal" +#: ../../addon/pumpio/pumpio.php:266 +msgid "PumpIO Settings saved." +msgstr "Se han guardado los ajustes de PumpIO." -#: ../../extend/addon/addon/opensearch/opensearch.php:26 ../../boot.php:1186 -#, php-format -msgctxt "opensearch" -msgid "Search %1$s (%2$s)" -msgstr "Buscar %1$s (%2$s)" +#: ../../addon/ldapauth/ldapauth.php:61 +msgid "An account has been created for you." +msgstr "Se ha creado una cuenta para usted." -#: ../../extend/addon/addon/opensearch/opensearch.php:28 ../../boot.php:1186 -msgctxt "opensearch" -msgid "$Projectname" -msgstr "$Projectname" +#: ../../addon/ldapauth/ldapauth.php:68 +msgid "Authentication successful but rejected: account creation is disabled." +msgstr "Autenticación correcta pero rechazada: la creación de cuentas está deshabilitada." -#: ../../extend/addon/addon/opensearch/opensearch.php:43 +#: ../../addon/opensearch/opensearch.php:43 msgid "Search $Projectname" msgstr "Buscar $Projectname" -#: ../../include/dba/dba_driver.php:187 -#, php-format -msgid "Cannot locate DNS info for database server '%s'" -msgstr "No se ha podido localizar información de DNS para el servidor de base de datos “%s”" - -#: ../../include/language.php:367 ../../include/text.php:1788 -msgid "default" -msgstr "por defecto" - -#: ../../include/language.php:380 -msgid "Select an alternate language" -msgstr "Seleccionar un idioma alternativo" - -#: ../../include/account.php:35 -msgid "Not a valid email address" -msgstr "Dirección de correo no válida" - -#: ../../include/account.php:37 -msgid "Your email domain is not among those allowed on this site" -msgstr "Su dirección de correo no pertenece a ninguno de los dominios permitidos en este sitio." - -#: ../../include/account.php:43 -msgid "Your email address is already registered at this site." -msgstr "Su dirección de correo está ya registrada en este sitio." - -#: ../../include/account.php:75 -msgid "An invitation is required." -msgstr "Es obligatorio que le inviten." - -#: ../../include/account.php:79 -msgid "Invitation could not be verified." -msgstr "No se ha podido verificar su invitación." - -#: ../../include/account.php:130 -msgid "Please enter the required information." -msgstr "Por favor introduzca la información requerida." - -#: ../../include/account.php:198 -msgid "Failed to store account information." -msgstr "La información de la cuenta no se ha podido guardar." - -#: ../../include/account.php:263 -#, php-format -msgid "Registration confirmation for %s" -msgstr "Confirmación de registro para %s" - -#: ../../include/account.php:330 -#, php-format -msgid "Registration request at %s" -msgstr "Solicitud de registro en %s" - -#: ../../include/account.php:352 -msgid "your registration password" -msgstr "su contraseña de registro" - -#: ../../include/account.php:358 ../../include/account.php:420 -#, php-format -msgid "Registration details for %s" -msgstr "Detalles del registro de %s" - -#: ../../include/account.php:431 -msgid "Account approved." -msgstr "Cuenta aprobada." - -#: ../../include/account.php:471 -#, php-format -msgid "Registration revoked for %s" -msgstr "Registro revocado para %s" - -#: ../../include/account.php:756 ../../include/account.php:758 -msgid "Click here to upgrade." -msgstr "Pulse aquí para actualizar" - -#: ../../include/account.php:764 -msgid "This action exceeds the limits set by your subscription plan." -msgstr "Esta acción supera los límites establecidos por su plan de suscripción " - -#: ../../include/account.php:769 -msgid "This action is not available under your subscription plan." -msgstr "Esta acción no está disponible en su plan de suscripción." +#: ../../addon/redfiles/redfiles.php:119 +msgid "Redmatrix File Storage Import" +msgstr "Importar repositorio de ficheros de Redmatrix" -#: ../../include/widgets.php:46 ../../include/widgets.php:455 -#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270 -#: ../../include/contact_widgets.php:91 -msgid "Categories" -msgstr "Temas" +#: ../../addon/redfiles/redfiles.php:120 +msgid "This will import all your Redmatrix cloud files to this channel." +msgstr "Esto importará todos sus ficheros de la nube de Redmatrix a este canal." -#: ../../include/widgets.php:141 -msgid "Suggestions" -msgstr "Sugerencias" +#: ../../addon/redfiles/redfilehelper.php:67 +msgid "file" +msgstr "fichero" -#: ../../include/widgets.php:142 -msgid "See more..." -msgstr "Ver más..." +#: ../../addon/hubwall/hubwall.php:19 +msgid "Send email to all members" +msgstr "Enviar un correo electrónico a todos los miembros" -#: ../../include/widgets.php:162 +#: ../../addon/hubwall/hubwall.php:33 #, php-format -msgid "You have %1$.0f of %2$.0f allowed connections." -msgstr "Tiene %1$.0f de %2$.0f conexiones permitidas." - -#: ../../include/widgets.php:168 -msgid "Add New Connection" -msgstr "Añadir nueva conexión" - -#: ../../include/widgets.php:169 -msgid "Enter channel address" -msgstr "Dirección del canal" - -#: ../../include/widgets.php:170 -msgid "Examples: bob@example.com, https://example.com/barbara" -msgstr "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen" - -#: ../../include/widgets.php:186 -msgid "Notes" -msgstr "Notas" - -#: ../../include/widgets.php:262 -msgid "Remove term" -msgstr "Eliminar término" - -#: ../../include/widgets.php:270 ../../include/features.php:301 -msgid "Saved Searches" -msgstr "Búsquedas guardadas" - -#: ../../include/widgets.php:271 ../../include/group.php:336 -msgid "add" -msgstr "añadir" - -#: ../../include/widgets.php:333 ../../include/contact_widgets.php:53 -#: ../../include/features.php:390 -msgid "Saved Folders" -msgstr "Carpetas guardadas" - -#: ../../include/widgets.php:336 ../../include/widgets.php:458 -#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94 -msgid "Everything" -msgstr "Todo" - -#: ../../include/widgets.php:377 -msgid "Archives" -msgstr "Hemeroteca" - -#: ../../include/widgets.php:549 -msgid "Refresh" -msgstr "Recargar" - -#: ../../include/widgets.php:589 -msgid "Account settings" -msgstr "Configuración de la cuenta" - -#: ../../include/widgets.php:595 -msgid "Channel settings" -msgstr "Configuración del canal" - -#: ../../include/widgets.php:604 -msgid "Additional features" -msgstr "Funcionalidades" - -#: ../../include/widgets.php:611 -msgid "Feature/Addon settings" -msgstr "Complementos" - -#: ../../include/widgets.php:617 -msgid "Display settings" -msgstr "Ajustes de visualización" - -#: ../../include/widgets.php:624 -msgid "Manage locations" -msgstr "Gestión de ubicaciones (clones) del canal" - -#: ../../include/widgets.php:631 -msgid "Export channel" -msgstr "Exportar canal" - -#: ../../include/widgets.php:637 -msgid "Connected apps" -msgstr "Aplicaciones (apps) conectadas" - -#: ../../include/widgets.php:652 ../../include/features.php:153 -msgid "Permission Groups" -msgstr "Grupos de permisos" - -#: ../../include/widgets.php:669 -msgid "Premium Channel Settings" -msgstr "Configuración del canal premium" - -#: ../../include/widgets.php:698 -msgid "Private Mail Menu" -msgstr "Menú de correo privado" - -#: ../../include/widgets.php:700 -msgid "Combined View" -msgstr "Vista combinada" - -#: ../../include/widgets.php:705 ../../include/nav.php:213 -msgid "Inbox" -msgstr "Bandeja de entrada" - -#: ../../include/widgets.php:710 ../../include/nav.php:214 -msgid "Outbox" -msgstr "Bandeja de salida" - -#: ../../include/widgets.php:715 ../../include/nav.php:215 -msgid "New Message" -msgstr "Nuevo mensaje" - -#: ../../include/widgets.php:732 ../../include/widgets.php:744 -msgid "Conversations" -msgstr "Conversaciones" - -#: ../../include/widgets.php:736 -msgid "Received Messages" -msgstr "Mensajes recibidos" - -#: ../../include/widgets.php:740 -msgid "Sent Messages" -msgstr "Enviar mensajes" - -#: ../../include/widgets.php:754 -msgid "No messages." -msgstr "Sin mensajes." - -#: ../../include/widgets.php:772 -msgid "Delete conversation" -msgstr "Eliminar conversación" - -#: ../../include/widgets.php:798 -msgid "Events Tools" -msgstr "Gestión de eventos" - -#: ../../include/widgets.php:799 -msgid "Export Calendar" -msgstr "Exportar el calendario" - -#: ../../include/widgets.php:800 -msgid "Import Calendar" -msgstr "Importar un calendario" - -#: ../../include/widgets.php:888 ../../include/conversation.php:1866 -#: ../../include/conversation.php:1869 -msgid "Chatrooms" -msgstr "Salas de chat" - -#: ../../include/widgets.php:892 -msgid "Overview" -msgstr "Resumen" - -#: ../../include/widgets.php:899 -msgid "Chat Members" -msgstr "Miembros del chat" - -#: ../../include/widgets.php:977 -msgctxt "wiki_history" -msgid "Message" -msgstr "Mensaje" - -#: ../../include/widgets.php:999 -msgid "Bookmarked Chatrooms" -msgstr "Salas de chat preferidas" - -#: ../../include/widgets.php:1030 -msgid "Suggested Chatrooms" -msgstr "Salas de chat sugeridas" - -#: ../../include/widgets.php:1175 ../../include/widgets.php:1287 -msgid "photo/image" -msgstr "foto/imagen" - -#: ../../include/widgets.php:1230 -msgid "Click to show more" -msgstr "Hacer clic para ver más" - -#: ../../include/widgets.php:1381 -msgid "Rating Tools" -msgstr "Valoraciones" - -#: ../../include/widgets.php:1385 ../../include/widgets.php:1387 -msgid "Rate Me" -msgstr "Valorar este canal" - -#: ../../include/widgets.php:1390 -msgid "View Ratings" -msgstr "Mostrar las valoraciones" - -#: ../../include/widgets.php:1483 -msgid "Forums" -msgstr "Foros" - -#: ../../include/widgets.php:1540 -msgctxt "widget" -msgid "Activity" -msgstr "Actividad" - -#: ../../include/widgets.php:1569 -msgid "Tasks" -msgstr "Tareas" - -#: ../../include/widgets.php:1635 ../../include/widgets.php:1673 -msgid "Member registrations waiting for confirmation" -msgstr "Inscripciones de nuevos miembros pendientes de aprobación" - -#: ../../include/widgets.php:1641 -msgid "Inspect queue" -msgstr "Examinar la cola" - -#: ../../include/widgets.php:1643 -msgid "DB updates" -msgstr "Actualizaciones de la base de datos" - -#: ../../include/widgets.php:1668 ../../include/nav.php:233 -msgid "Admin" -msgstr "Administrador" - -#: ../../include/widgets.php:1669 -msgid "Plugin Features" -msgstr "Extensiones" - -#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249 -msgid "Tags" -msgstr "Etiquetas" - -#: ../../include/taxonomy.php:293 -msgid "Keywords" -msgstr "Palabras clave" - -#: ../../include/taxonomy.php:314 -msgid "have" -msgstr "tener" - -#: ../../include/taxonomy.php:314 -msgid "has" -msgstr "tiene" - -#: ../../include/taxonomy.php:315 -msgid "want" -msgstr "quiero" - -#: ../../include/taxonomy.php:315 -msgid "wants" -msgstr "quiere" - -#: ../../include/taxonomy.php:316 -msgid "likes" -msgstr "gusta de" - -#: ../../include/taxonomy.php:317 -msgid "dislikes" -msgstr "no gusta de" - -#: ../../include/event.php:22 ../../include/event.php:69 -#: ../../include/markdown.php:540 -msgid "l F d, Y \\@ g:i A" -msgstr "l d de F, Y \\@ G:i" - -#: ../../include/event.php:30 ../../include/event.php:73 -#: ../../include/markdown.php:546 -msgid "Starts:" -msgstr "Comienza:" - -#: ../../include/event.php:40 ../../include/event.php:77 -#: ../../include/markdown.php:554 -msgid "Finishes:" -msgstr "Finaliza:" - -#: ../../include/event.php:1004 -msgid "This event has been added to your calendar." -msgstr "Este evento ha sido añadido a su calendario." - -#: ../../include/event.php:1204 -msgid "Not specified" -msgstr "Sin especificar" - -#: ../../include/event.php:1205 -msgid "Needs Action" -msgstr "Necesita de una intervención" - -#: ../../include/event.php:1206 -msgid "Completed" -msgstr "Completado/a" - -#: ../../include/event.php:1207 -msgid "In Process" -msgstr "En proceso" - -#: ../../include/event.php:1208 -msgid "Cancelled" -msgstr "Cancelado/a" - -#: ../../include/datetime.php:147 -msgid "Birthday" -msgstr "Cumpleaños" - -#: ../../include/datetime.php:149 -msgid "Age: " -msgstr "Edad:" - -#: ../../include/datetime.php:151 -msgid "YYYY-MM-DD or MM-DD" -msgstr "AAAA-MM-DD o MM-DD" - -#: ../../include/datetime.php:286 ../../boot.php:2598 -msgid "never" -msgstr "nunca" - -#: ../../include/datetime.php:292 -msgid "less than a second ago" -msgstr "hace un instante" +msgid "$1%s Administrator" +msgstr "Administrador de $1%s " -#: ../../include/datetime.php:310 +#: ../../addon/hubwall/hubwall.php:73 #, php-format -msgctxt "e.g. 22 hours ago, 1 minute ago" -msgid "%1$d %2$s ago" -msgstr "hace %1$d %2$s" - -#: ../../include/datetime.php:321 -msgctxt "relative_date" -msgid "year" -msgid_plural "years" -msgstr[0] "año" -msgstr[1] "años" - -#: ../../include/datetime.php:324 -msgctxt "relative_date" -msgid "month" -msgid_plural "months" -msgstr[0] "mes" -msgstr[1] "meses" - -#: ../../include/datetime.php:327 -msgctxt "relative_date" -msgid "week" -msgid_plural "weeks" -msgstr[0] "semana" -msgstr[1] "semanas" - -#: ../../include/datetime.php:330 -msgctxt "relative_date" -msgid "day" -msgid_plural "days" -msgstr[0] "día" -msgstr[1] "días" - -#: ../../include/datetime.php:333 -msgctxt "relative_date" -msgid "hour" -msgid_plural "hours" -msgstr[0] "hora" -msgstr[1] "horas" - -#: ../../include/datetime.php:336 -msgctxt "relative_date" -msgid "minute" -msgid_plural "minutes" -msgstr[0] "minuto" -msgstr[1] "minutos" +msgid "%1$d of %2$d messages sent." +msgstr "%1$d de %2$d mensajes enviados." -#: ../../include/datetime.php:339 -msgctxt "relative_date" -msgid "second" -msgid_plural "seconds" -msgstr[0] "segundo" -msgstr[1] "segundos" +#: ../../addon/hubwall/hubwall.php:81 +msgid "Send email to all hub members." +msgstr "Enviar un correo electrónico a todos los miembros del hub." -#: ../../include/datetime.php:576 -#, php-format -msgid "%1$s's birthday" -msgstr "Cumpleaños de %1$s" +#: ../../addon/hubwall/hubwall.php:93 +msgid "Sender Email address" +msgstr "Dirección de correo electrónico del remitente" -#: ../../include/datetime.php:577 -#, php-format -msgid "Happy Birthday %1$s" -msgstr "Feliz cumpleaños %1$s" +#: ../../addon/hubwall/hubwall.php:94 +msgid "Test mode (only send to hub administrator)" +msgstr "Modo de prueba (enviar sólo al administrador del hub)" #: ../../include/selectors.php:30 msgid "Frequently" @@ -11543,1313 +11011,626 @@ msgstr "No me importa" msgid "Ask me" msgstr "Pregúnteme" -#: ../../include/acl_selectors.php:208 -msgid "Who can see this?" -msgstr "¿Quién puede ver esto?" - -#: ../../include/acl_selectors.php:209 -msgid "Custom selection" -msgstr "Selección personalizada" - -#: ../../include/acl_selectors.php:210 -msgid "" -"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit" -" the scope of \"Show\"." -msgstr "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"." - -#: ../../include/acl_selectors.php:211 -msgid "Show" -msgstr "Mostrar" - -#: ../../include/acl_selectors.php:212 -msgid "Don't show" -msgstr "No mostrar" - -#: ../../include/acl_selectors.php:245 -#, php-format -msgid "" -"Post permissions %s cannot be changed %s after a post is shared.</br />These" -" permissions set who is allowed to view the post." -msgstr "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje." - -#: ../../include/bbcode.php:134 ../../include/bbcode.php:1040 -#: ../../include/bbcode.php:1043 ../../include/bbcode.php:1048 -#: ../../include/bbcode.php:1051 ../../include/bbcode.php:1054 -#: ../../include/bbcode.php:1057 ../../include/bbcode.php:1062 -#: ../../include/bbcode.php:1065 ../../include/bbcode.php:1070 -#: ../../include/bbcode.php:1073 ../../include/bbcode.php:1076 -#: ../../include/bbcode.php:1079 -msgid "Image/photo" -msgstr "Imagen/foto" - -#: ../../include/bbcode.php:173 ../../include/bbcode.php:1090 -msgid "Encrypted content" -msgstr "Contenido cifrado" - -#: ../../include/bbcode.php:189 -#, php-format -msgid "Install %s element: " -msgstr "Instalar el elemento %s:" - -#: ../../include/bbcode.php:193 -#, php-format -msgid "" -"This post contains an installable %s element, however you lack permissions " -"to install it on this site." -msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio." - -#: ../../include/bbcode.php:272 -#, php-format -msgid "%1$s wrote the following %2$s %3$s" -msgstr "%1$s escribió %2$s siguiente %3$s" - -#: ../../include/bbcode.php:349 ../../include/bbcode.php:357 -msgid "Click to open/close" -msgstr "Pulsar para abrir/cerrar" - -#: ../../include/bbcode.php:357 -msgid "spoiler" -msgstr "spoiler" - -#: ../../include/bbcode.php:1028 -msgid "$1 wrote:" -msgstr "$1 escribió:" - -#: ../../include/bookmarks.php:34 -#, php-format -msgid "%1$s's bookmarks" -msgstr "Marcadores de %1$s" - -#: ../../include/connections.php:127 -msgid "New window" -msgstr "Nueva ventana" - -#: ../../include/connections.php:128 -msgid "Open the selected location in a different window or browser tab" -msgstr "Abrir la dirección seleccionada en una ventana o pestaña aparte" - -#: ../../include/help.php:33 -msgid "Help:" -msgstr "Ayuda:" - -#: ../../include/help.php:65 -msgid "Not Found" -msgstr "No encontrado" - -#: ../../include/page_widgets.php:7 -msgid "New Page" -msgstr "Nueva página" - -#: ../../include/contact_widgets.php:11 -#, php-format -msgid "%d invitation available" -msgid_plural "%d invitations available" -msgstr[0] "%d invitación pendiente" -msgstr[1] "%d invitaciones disponibles" - -#: ../../include/contact_widgets.php:19 -msgid "Find Channels" -msgstr "Encontrar canales" - -#: ../../include/contact_widgets.php:20 -msgid "Enter name or interest" -msgstr "Introducir nombre o interés" - -#: ../../include/contact_widgets.php:21 -msgid "Connect/Follow" -msgstr "Conectar/Seguir" - -#: ../../include/contact_widgets.php:22 -msgid "Examples: Robert Morgenstein, Fishing" -msgstr "Ejemplos: José Fernández, Pesca" - -#: ../../include/contact_widgets.php:26 -msgid "Random Profile" -msgstr "Perfil aleatorio" - -#: ../../include/contact_widgets.php:27 -msgid "Invite Friends" -msgstr "Invitar a amigos" - -#: ../../include/contact_widgets.php:29 -msgid "Advanced example: name=fred and country=iceland" -msgstr "Ejemplo avanzado: nombre=juan y país=españa" - -#: ../../include/contact_widgets.php:122 -#, php-format -msgid "%d connection in common" -msgid_plural "%d connections in common" -msgstr[0] "%d conexión en común" -msgstr[1] "%d conexiones en común" - -#: ../../include/contact_widgets.php:127 -msgid "show more" -msgstr "mostrar más" - -#: ../../include/js_strings.php:5 -msgid "Delete this item?" -msgstr "¿Borrar este elemento?" - -#: ../../include/js_strings.php:8 -#, php-format -msgid "%s show less" -msgstr "%s mostrar menos" - -#: ../../include/js_strings.php:9 -#, php-format -msgid "%s expand" -msgstr "%s expandir" - -#: ../../include/js_strings.php:10 -#, php-format -msgid "%s collapse" -msgstr "%s contraer" - -#: ../../include/js_strings.php:11 -msgid "Password too short" -msgstr "Contraseña demasiado corta" - -#: ../../include/js_strings.php:12 -msgid "Passwords do not match" -msgstr "Las contraseñas no coinciden" - -#: ../../include/js_strings.php:13 -msgid "everybody" -msgstr "cualquiera" - -#: ../../include/js_strings.php:14 -msgid "Secret Passphrase" -msgstr "Contraseña secreta" - -#: ../../include/js_strings.php:15 -msgid "Passphrase hint" -msgstr "Pista de contraseña" - -#: ../../include/js_strings.php:16 -msgid "Notice: Permissions have changed but have not yet been submitted." -msgstr "Aviso: los permisos han cambiado pero aún no han sido enviados." - -#: ../../include/js_strings.php:17 -msgid "close all" -msgstr "cerrar todo" - -#: ../../include/js_strings.php:18 -msgid "Nothing new here" -msgstr "Nada nuevo por aquí" - -#: ../../include/js_strings.php:19 -msgid "Rate This Channel (this is public)" -msgstr "Valorar este canal (esto es público)" - -#: ../../include/js_strings.php:21 -msgid "Describe (optional)" -msgstr "Describir (opcional)" - -#: ../../include/js_strings.php:23 -msgid "Please enter a link URL" -msgstr "Por favor, introduzca una dirección de enlace" - -#: ../../include/js_strings.php:24 -msgid "Unsaved changes. Are you sure you wish to leave this page?" -msgstr "Cambios no guardados. ¿Está seguro de que desea abandonar la página?" - -#: ../../include/js_strings.php:27 -msgid "timeago.prefixAgo" -msgstr "timeago.prefixAgo" - -#: ../../include/js_strings.php:28 -msgid "timeago.prefixFromNow" -msgstr "timeago.prefixFromNow" - -#: ../../include/js_strings.php:29 -msgid "ago" -msgstr "antes" - -#: ../../include/js_strings.php:30 -msgid "from now" -msgstr "desde ahora" - -#: ../../include/js_strings.php:31 -msgid "less than a minute" -msgstr "menos de un minuto" - -#: ../../include/js_strings.php:32 -msgid "about a minute" -msgstr "alrededor de un minuto" - -#: ../../include/js_strings.php:33 -#, php-format -msgid "%d minutes" -msgstr "%d minutos" - -#: ../../include/js_strings.php:34 -msgid "about an hour" -msgstr "alrededor de una hora" - -#: ../../include/js_strings.php:35 -#, php-format -msgid "about %d hours" -msgstr "alrededor de %d horas" - -#: ../../include/js_strings.php:36 -msgid "a day" -msgstr "un día" - -#: ../../include/js_strings.php:37 -#, php-format -msgid "%d days" -msgstr "%d días" - -#: ../../include/js_strings.php:38 -msgid "about a month" -msgstr "alrededor de un mes" - -#: ../../include/js_strings.php:39 -#, php-format -msgid "%d months" -msgstr "%d meses" - -#: ../../include/js_strings.php:40 -msgid "about a year" -msgstr "alrededor de un año" - -#: ../../include/js_strings.php:41 -#, php-format -msgid "%d years" -msgstr "%d años" - -#: ../../include/js_strings.php:42 -msgid " " -msgstr " " - -#: ../../include/js_strings.php:43 -msgid "timeago.numbers" -msgstr "timeago.numbers" - -#: ../../include/js_strings.php:45 ../../include/text.php:1331 -msgid "January" -msgstr "enero" - -#: ../../include/js_strings.php:46 ../../include/text.php:1331 -msgid "February" -msgstr "febrero" - -#: ../../include/js_strings.php:47 ../../include/text.php:1331 -msgid "March" -msgstr "marzo" - -#: ../../include/js_strings.php:48 ../../include/text.php:1331 -msgid "April" -msgstr "abril" - -#: ../../include/js_strings.php:49 -msgctxt "long" -msgid "May" -msgstr "mayo" - -#: ../../include/js_strings.php:50 ../../include/text.php:1331 -msgid "June" -msgstr "junio" - -#: ../../include/js_strings.php:51 ../../include/text.php:1331 -msgid "July" -msgstr "julio" - -#: ../../include/js_strings.php:52 ../../include/text.php:1331 -msgid "August" -msgstr "agosto" - -#: ../../include/js_strings.php:53 ../../include/text.php:1331 -msgid "September" -msgstr "septiembre" - -#: ../../include/js_strings.php:54 ../../include/text.php:1331 -msgid "October" -msgstr "octubre" - -#: ../../include/js_strings.php:55 ../../include/text.php:1331 -msgid "November" -msgstr "noviembre" - -#: ../../include/js_strings.php:56 ../../include/text.php:1331 -msgid "December" -msgstr "diciembre" - -#: ../../include/js_strings.php:57 -msgid "Jan" -msgstr "ene" - -#: ../../include/js_strings.php:58 -msgid "Feb" -msgstr "feb" - -#: ../../include/js_strings.php:59 -msgid "Mar" -msgstr "mar" - -#: ../../include/js_strings.php:60 -msgid "Apr" -msgstr "abr" - -#: ../../include/js_strings.php:61 -msgctxt "short" -msgid "May" -msgstr "may" - -#: ../../include/js_strings.php:62 -msgid "Jun" -msgstr "jun" - -#: ../../include/js_strings.php:63 -msgid "Jul" -msgstr "jul" - -#: ../../include/js_strings.php:64 -msgid "Aug" -msgstr "ago" - -#: ../../include/js_strings.php:65 -msgid "Sep" -msgstr "sep" - -#: ../../include/js_strings.php:66 -msgid "Oct" -msgstr "oct" - -#: ../../include/js_strings.php:67 -msgid "Nov" -msgstr "nov" - -#: ../../include/js_strings.php:68 -msgid "Dec" -msgstr "dic" - -#: ../../include/js_strings.php:69 ../../include/text.php:1327 -msgid "Sunday" -msgstr "domingo" - -#: ../../include/js_strings.php:70 ../../include/text.php:1327 -msgid "Monday" -msgstr "lunes" - -#: ../../include/js_strings.php:71 ../../include/text.php:1327 -msgid "Tuesday" -msgstr "martes" - -#: ../../include/js_strings.php:72 ../../include/text.php:1327 -msgid "Wednesday" -msgstr "miércoles" - -#: ../../include/js_strings.php:73 ../../include/text.php:1327 -msgid "Thursday" -msgstr "jueves" - -#: ../../include/js_strings.php:74 ../../include/text.php:1327 -msgid "Friday" -msgstr "viernes" - -#: ../../include/js_strings.php:75 ../../include/text.php:1327 -msgid "Saturday" -msgstr "sábado" - -#: ../../include/js_strings.php:76 -msgid "Sun" -msgstr "dom" - -#: ../../include/js_strings.php:77 -msgid "Mon" -msgstr "lun" - -#: ../../include/js_strings.php:78 -msgid "Tue" -msgstr "mar" - -#: ../../include/js_strings.php:79 -msgid "Wed" -msgstr "mié" - -#: ../../include/js_strings.php:80 -msgid "Thu" -msgstr "jue" - -#: ../../include/js_strings.php:81 -msgid "Fri" -msgstr "vie" - -#: ../../include/js_strings.php:82 -msgid "Sat" -msgstr "sáb" - -#: ../../include/js_strings.php:83 -msgctxt "calendar" -msgid "today" -msgstr "hoy" - -#: ../../include/js_strings.php:84 -msgctxt "calendar" -msgid "month" -msgstr "mes" - -#: ../../include/js_strings.php:85 -msgctxt "calendar" -msgid "week" -msgstr "semana" - -#: ../../include/js_strings.php:86 -msgctxt "calendar" -msgid "day" -msgstr "día" - -#: ../../include/js_strings.php:87 -msgctxt "calendar" -msgid "All day" -msgstr "Todos los días" - -#: ../../include/dir_fns.php:141 -msgid "Directory Options" -msgstr "Opciones del directorio" - -#: ../../include/dir_fns.php:143 -msgid "Safe Mode" -msgstr "Modo seguro" - -#: ../../include/dir_fns.php:144 -msgid "Public Forums Only" -msgstr "Solo foros públicos" - -#: ../../include/dir_fns.php:145 -msgid "This Website Only" -msgstr "Solo este sitio web" - -#: ../../include/network.php:756 -msgid "view full size" -msgstr "Ver en el tamaño original" - -#: ../../include/network.php:2011 -msgid "No Subject" -msgstr "Sin asunto" - -#: ../../include/network.php:2267 -msgid "OStatus" -msgstr "OStatus" - -#: ../../include/network.php:2268 -msgid "GNU-Social" -msgstr "GNU Social" - -#: ../../include/network.php:2269 -msgid "RSS/Atom" -msgstr "RSS/Atom" - -#: ../../include/network.php:2272 -msgid "Facebook" -msgstr "Facebook" - -#: ../../include/network.php:2273 -msgid "Zot" -msgstr "Zot" - -#: ../../include/network.php:2274 -msgid "LinkedIn" -msgstr "LinkedIn" - -#: ../../include/network.php:2275 -msgid "XMPP/IM" -msgstr "XMPP/IM" - -#: ../../include/network.php:2276 -msgid "MySpace" -msgstr "MySpace" - -#: ../../include/conversation.php:204 +#: ../../include/conversation.php:200 #, php-format msgid "%1$s is now connected with %2$s" msgstr "%1$s ahora está conectado/a con %2$s" -#: ../../include/conversation.php:239 +#: ../../include/conversation.php:235 #, php-format msgid "%1$s poked %2$s" msgstr "%1$s ha dado un toque a %2$s" -#: ../../include/conversation.php:243 ../../include/text.php:1098 -#: ../../include/text.php:1103 +#: ../../include/conversation.php:239 ../../include/text.php:1115 +#: ../../include/text.php:1120 msgid "poked" msgstr "ha dado un toque a" -#: ../../include/conversation.php:690 +#: ../../include/conversation.php:691 #, php-format msgid "View %s's profile @ %s" msgstr "Ver el perfil @ %s de %s" -#: ../../include/conversation.php:710 +#: ../../include/conversation.php:711 msgid "Categories:" msgstr "Temas:" -#: ../../include/conversation.php:711 +#: ../../include/conversation.php:712 msgid "Filed under:" msgstr "Archivado bajo:" -#: ../../include/conversation.php:736 +#: ../../include/conversation.php:737 msgid "View in context" msgstr "Mostrar en su contexto" -#: ../../include/conversation.php:832 +#: ../../include/conversation.php:834 msgid "remove" msgstr "eliminar" -#: ../../include/conversation.php:836 ../../include/nav.php:292 +#: ../../include/conversation.php:838 ../../include/nav.php:268 msgid "Loading..." msgstr "Cargando..." -#: ../../include/conversation.php:837 +#: ../../include/conversation.php:839 msgid "Delete Selected Items" msgstr "Eliminar elementos seleccionados" -#: ../../include/conversation.php:930 ../../include/conversation.php:972 +#: ../../include/conversation.php:882 msgid "View Source" msgstr "Ver el código fuente de la entrada" -#: ../../include/conversation.php:931 ../../include/conversation.php:982 +#: ../../include/conversation.php:892 msgid "Follow Thread" msgstr "Seguir este hilo" -#: ../../include/conversation.php:932 ../../include/conversation.php:991 +#: ../../include/conversation.php:901 msgid "Unfollow Thread" msgstr "Dejar de seguir este hilo" -#: ../../include/conversation.php:937 ../../include/conversation.php:1059 +#: ../../include/conversation.php:992 msgid "Activity/Posts" msgstr "Actividad y publicaciones" -#: ../../include/conversation.php:939 ../../include/conversation.php:1079 +#: ../../include/conversation.php:1012 msgid "Edit Connection" msgstr "Editar conexión" -#: ../../include/conversation.php:940 ../../include/conversation.php:1089 +#: ../../include/conversation.php:1022 msgid "Message" msgstr "Mensaje" -#: ../../include/conversation.php:1223 +#: ../../include/conversation.php:1156 #, php-format msgid "%s likes this." msgstr "A %s le gusta esto." -#: ../../include/conversation.php:1223 +#: ../../include/conversation.php:1156 #, php-format msgid "%s doesn't like this." msgstr "A %s no le gusta esto." -#: ../../include/conversation.php:1227 +#: ../../include/conversation.php:1160 #, php-format msgid "<span %1$s>%2$d people</span> like this." msgid_plural "<span %1$s>%2$d people</span> like this." msgstr[0] "a <span %1$s>%2$d personas</span> le gusta esto." msgstr[1] "A <span %1$s>%2$d personas</span> les gusta esto." -#: ../../include/conversation.php:1229 +#: ../../include/conversation.php:1162 #, php-format msgid "<span %1$s>%2$d people</span> don't like this." msgid_plural "<span %1$s>%2$d people</span> don't like this." msgstr[0] "a <span %1$s>%2$d personas</span> no les gusta esto." msgstr[1] "A <span %1$s>%2$d personas</span> no les gusta esto." -#: ../../include/conversation.php:1235 +#: ../../include/conversation.php:1168 msgid "and" msgstr "y" -#: ../../include/conversation.php:1238 +#: ../../include/conversation.php:1171 #, php-format msgid ", and %d other people" msgid_plural ", and %d other people" msgstr[0] ", y %d persona más" msgstr[1] ", y %d personas más" -#: ../../include/conversation.php:1239 +#: ../../include/conversation.php:1172 #, php-format msgid "%s like this." msgstr "A %s le gusta esto." -#: ../../include/conversation.php:1239 +#: ../../include/conversation.php:1172 #, php-format msgid "%s don't like this." msgstr "A %s no le gusta esto." -#: ../../include/conversation.php:1282 +#: ../../include/conversation.php:1215 msgid "Set your location" msgstr "Establecer su ubicación" -#: ../../include/conversation.php:1283 +#: ../../include/conversation.php:1216 msgid "Clear browser location" msgstr "Eliminar los datos de localización geográfica del navegador" -#: ../../include/conversation.php:1331 +#: ../../include/conversation.php:1264 msgid "Tag term:" msgstr "Término de la etiqueta:" -#: ../../include/conversation.php:1332 +#: ../../include/conversation.php:1265 msgid "Where are you right now?" msgstr "¿Donde está ahora?" -#: ../../include/conversation.php:1337 +#: ../../include/conversation.php:1270 msgid "Choose a different album..." msgstr "Elegir un álbum diferente..." -#: ../../include/conversation.php:1341 +#: ../../include/conversation.php:1274 msgid "Comments enabled" msgstr "Comentarios habilitados" -#: ../../include/conversation.php:1342 +#: ../../include/conversation.php:1275 msgid "Comments disabled" msgstr "Comentarios deshabilitados" -#: ../../include/conversation.php:1380 +#: ../../include/conversation.php:1313 msgid "Page link name" msgstr "Nombre del enlace de la página" -#: ../../include/conversation.php:1383 +#: ../../include/conversation.php:1316 msgid "Post as" msgstr "Publicar como" -#: ../../include/conversation.php:1397 +#: ../../include/conversation.php:1330 msgid "Toggle voting" msgstr "Cambiar votación" -#: ../../include/conversation.php:1400 +#: ../../include/conversation.php:1333 msgid "Disable comments" msgstr "Dehabilitar los comentarios" -#: ../../include/conversation.php:1401 +#: ../../include/conversation.php:1334 msgid "Toggle comments" msgstr "Activar o desactivar los comentarios" -#: ../../include/conversation.php:1409 +#: ../../include/conversation.php:1342 msgid "Categories (optional, comma-separated list)" msgstr "Temas (opcional, lista separada por comas)" -#: ../../include/conversation.php:1432 +#: ../../include/conversation.php:1365 msgid "Other networks and post services" msgstr "Otras redes y servicios de publicación" -#: ../../include/conversation.php:1438 +#: ../../include/conversation.php:1371 msgid "Set publish date" msgstr "Establecer la fecha de publicación" -#: ../../include/conversation.php:1692 +#: ../../include/conversation.php:1625 msgid "Discover" msgstr "Descubrir" -#: ../../include/conversation.php:1695 +#: ../../include/conversation.php:1628 msgid "Imported public streams" msgstr "Contenidos públicos importados" -#: ../../include/conversation.php:1700 +#: ../../include/conversation.php:1633 msgid "Commented Order" msgstr "Comentarios recientes" -#: ../../include/conversation.php:1703 +#: ../../include/conversation.php:1636 msgid "Sort by Comment Date" msgstr "Ordenar por fecha de comentario" -#: ../../include/conversation.php:1707 +#: ../../include/conversation.php:1640 msgid "Posted Order" msgstr "Publicaciones recientes" -#: ../../include/conversation.php:1710 +#: ../../include/conversation.php:1643 msgid "Sort by Post Date" msgstr "Ordenar por fecha de publicación" -#: ../../include/conversation.php:1718 +#: ../../include/conversation.php:1651 msgid "Posts that mention or involve you" msgstr "Publicaciones que le mencionan o involucran" -#: ../../include/conversation.php:1727 +#: ../../include/conversation.php:1660 msgid "Activity Stream - by date" msgstr "Contenido - por fecha" -#: ../../include/conversation.php:1733 +#: ../../include/conversation.php:1666 msgid "Starred" msgstr "Preferidas" -#: ../../include/conversation.php:1736 +#: ../../include/conversation.php:1669 msgid "Favourite Posts" msgstr "Publicaciones favoritas" -#: ../../include/conversation.php:1743 +#: ../../include/conversation.php:1676 msgid "Spam" msgstr "Correo basura" -#: ../../include/conversation.php:1746 +#: ../../include/conversation.php:1679 msgid "Posts flagged as SPAM" msgstr "Publicaciones marcadas como basura" -#: ../../include/conversation.php:1818 +#: ../../include/conversation.php:1754 msgid "Status Messages and Posts" msgstr "Mensajes de estado y publicaciones" -#: ../../include/conversation.php:1830 +#: ../../include/conversation.php:1767 msgid "Profile Details" msgstr "Detalles del perfil" -#: ../../include/conversation.php:1839 ../../include/photos.php:515 +#: ../../include/conversation.php:1777 ../../include/photos.php:527 msgid "Photo Albums" msgstr "Álbumes de fotos" -#: ../../include/conversation.php:1846 +#: ../../include/conversation.php:1785 msgid "Files and Storage" msgstr "Ficheros y repositorio" -#: ../../include/conversation.php:1879 +#: ../../include/conversation.php:1821 msgid "Bookmarks" msgstr "Marcadores" -#: ../../include/conversation.php:1882 +#: ../../include/conversation.php:1824 msgid "Saved Bookmarks" msgstr "Marcadores guardados" -#: ../../include/conversation.php:1892 +#: ../../include/conversation.php:1835 msgid "View Webpages" msgstr "Ver páginas web" -#: ../../include/conversation.php:1958 +#: ../../include/conversation.php:1904 msgctxt "noun" msgid "Attending" msgid_plural "Attending" msgstr[0] "Participaré" msgstr[1] "Participaré" -#: ../../include/conversation.php:1961 +#: ../../include/conversation.php:1907 msgctxt "noun" msgid "Not Attending" msgid_plural "Not Attending" msgstr[0] "No participaré" msgstr[1] "No participaré" -#: ../../include/conversation.php:1964 +#: ../../include/conversation.php:1910 msgctxt "noun" msgid "Undecided" msgid_plural "Undecided" msgstr[0] "Indeciso/a" msgstr[1] "Indecisos/as" -#: ../../include/conversation.php:1967 +#: ../../include/conversation.php:1913 msgctxt "noun" msgid "Agree" msgid_plural "Agrees" msgstr[0] "De acuerdo" msgstr[1] "De acuerdo" -#: ../../include/conversation.php:1970 +#: ../../include/conversation.php:1916 msgctxt "noun" msgid "Disagree" msgid_plural "Disagrees" msgstr[0] "En desacuerdo" msgstr[1] "En desacuerdo" -#: ../../include/conversation.php:1973 +#: ../../include/conversation.php:1919 msgctxt "noun" msgid "Abstain" msgid_plural "Abstains" msgstr[0] "se abstiene" msgstr[1] "Se abstienen" -#: ../../include/group.php:26 -msgid "" -"A deleted group with this name was revived. Existing item permissions " -"<strong>may</strong> apply to this group and any future members. If this is " -"not what you intended, please create another group with a different name." -msgstr "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente." - -#: ../../include/group.php:268 -msgid "Add new connections to this privacy group" -msgstr "Añadir conexiones nuevas a este grupo de canales" - -#: ../../include/group.php:309 -msgid "edit" -msgstr "editar" - -#: ../../include/group.php:331 ../../include/features.php:292 -msgid "Privacy Groups" -msgstr "Grupos de canales" - -#: ../../include/group.php:332 -msgid "Edit group" -msgstr "Editar grupo" - -#: ../../include/group.php:333 -msgid "Add privacy group" -msgstr "Añadir un grupo de canales" - -#: ../../include/group.php:334 -msgid "Channels not in any privacy group" -msgstr "Sin canales en ningún grupo" - -#: ../../include/items.php:843 ../../include/items.php:890 -msgid "(Unknown)" -msgstr "(Desconocido)" - -#: ../../include/items.php:1091 -msgid "Visible to anybody on the internet." -msgstr "Visible para cualquiera en internet." - -#: ../../include/items.php:1093 -msgid "Visible to you only." -msgstr "Visible sólo para usted." - -#: ../../include/items.php:1095 -msgid "Visible to anybody in this network." -msgstr "Visible para cualquiera en esta red." - -#: ../../include/items.php:1097 -msgid "Visible to anybody authenticated." -msgstr "Visible para cualquiera que esté autenticado." - -#: ../../include/items.php:1099 -#, php-format -msgid "Visible to anybody on %s." -msgstr "Visible para cualquiera en %s." - -#: ../../include/items.php:1101 -msgid "Visible to all connections." -msgstr "Visible para todas las conexiones." - -#: ../../include/items.php:1103 -msgid "Visible to approved connections." -msgstr "Visible para las conexiones permitidas." +#: ../../include/permissions.php:35 +msgid "Can view my normal stream and posts" +msgstr "Pueden verse mi actividad y publicaciones normales" -#: ../../include/items.php:1105 -msgid "Visible to specific connections." -msgstr "Visible para conexiones específicas." +#: ../../include/permissions.php:39 +msgid "Can view my webpages" +msgstr "Pueden verse mis páginas web" -#: ../../include/items.php:3917 -msgid "Privacy group is empty." -msgstr "El grupo de canales está vacío." +#: ../../include/permissions.php:43 +msgid "Can post on my channel page (\"wall\")" +msgstr "Pueden crearse entradas en mi página de inicio del canal (“muro”)" -#: ../../include/items.php:3924 -#, php-format -msgid "Privacy group: %s" -msgstr "Grupo de canales: %s" +#: ../../include/permissions.php:46 +msgid "Can like/dislike stuff" +msgstr "Puede marcarse contenido como me gusta/no me gusta" -#: ../../include/items.php:3936 -msgid "Connection not found." -msgstr "Conexión no encontrada" +#: ../../include/permissions.php:46 +msgid "Profiles and things other than posts/comments" +msgstr "Perfiles y otras cosas aparte de publicaciones/comentarios" -#: ../../include/items.php:4285 -msgid "profile photo" -msgstr "foto del perfil" +#: ../../include/permissions.php:48 +msgid "Can forward to all my channel contacts via post @mentions" +msgstr "Puede enviarse una entrada a todos mis contactos del canal mediante una @mención" -#: ../../include/items.php:4481 -#, php-format -msgid "[Edited %s]" -msgstr "[se ha editado %s]" +#: ../../include/permissions.php:48 +msgid "Advanced - useful for creating group forum channels" +msgstr "Avanzado - útil para crear canales de foros de discusión o grupos" -#: ../../include/items.php:4481 -msgctxt "edit_activity" -msgid "Post" -msgstr "Publicar" +#: ../../include/permissions.php:49 +msgid "Can chat with me (when available)" +msgstr "Se puede charlar conmigo (cuando esté disponible)" -#: ../../include/items.php:4481 -msgctxt "edit_activity" -msgid "Comment" -msgstr "Comentar" +#: ../../include/permissions.php:50 +msgid "Can write to my file storage and photos" +msgstr "Puede escribirse en mi repositorio de ficheros y fotos" -#: ../../include/markdown.php:445 -msgid "Attachments:" -msgstr "Ficheros adjuntos:" +#: ../../include/permissions.php:51 +msgid "Can edit my webpages" +msgstr "Pueden editarse mis páginas web" -#: ../../include/markdown.php:542 -msgid "$Projectname event notification:" -msgstr "Notificación de eventos de $Projectname:" +#: ../../include/permissions.php:53 +msgid "Somewhat advanced - very useful in open communities" +msgstr "Algo avanzado - muy útil en comunidades abiertas" -#: ../../include/security.php:117 -msgid "guest:" -msgstr "invitado: " +#: ../../include/permissions.php:55 +msgid "Can administer my channel resources" +msgstr "Pueden administrarse mis recursos del canal" -#: ../../include/security.php:532 +#: ../../include/permissions.php:55 msgid "" -"The form security token was not correct. This probably happened because the " -"form has been opened for too long (>3 hours) before submitting it." -msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado" - -#: ../../include/nav.php:88 -msgid "Remote authentication" -msgstr "Acceder desde su servidor" - -#: ../../include/nav.php:88 -msgid "Click to authenticate to your home hub" -msgstr "Pulsar para identificarse en su servidor de inicio" - -#: ../../include/nav.php:99 ../../include/nav.php:140 ../../boot.php:1748 -msgid "Logout" -msgstr "Finalizar sesión" - -#: ../../include/nav.php:99 ../../include/nav.php:140 -msgid "End this session" -msgstr "Finalizar esta sesión" - -#: ../../include/nav.php:103 -msgid "Your profile page" -msgstr "Su página del perfil" - -#: ../../include/nav.php:105 -msgid "Manage/Edit profiles" -msgstr "Administrar/editar perfiles" - -#: ../../include/nav.php:107 -msgid "Edit your profile" -msgstr "Editar su perfil" - -#: ../../include/nav.php:130 -msgid "Sign in" -msgstr "Acceder" - -#: ../../include/nav.php:155 -msgid "Get me home" -msgstr "Volver a la página principal" - -#: ../../include/nav.php:157 -msgid "Log me out of this site" -msgstr "Salir de este sitio" - -#: ../../include/nav.php:162 -msgid "Create an account" -msgstr "Crear una cuenta" - -#: ../../include/nav.php:174 -msgid "Help and documentation" -msgstr "Ayuda y documentación" - -#: ../../include/nav.php:178 -msgid "Applications, utilities, links, games" -msgstr "Aplicaciones, utilidades, enlaces, juegos" - -#: ../../include/nav.php:180 -msgid "Search site @name, #tag, ?docs, content" -msgstr "Buscar en el sitio por @nombre, #etiqueta, ?ayuda o contenido" - -#: ../../include/nav.php:182 -msgid "Channel Directory" -msgstr "Directorio de canales" - -#: ../../include/nav.php:194 -msgid "Your grid" -msgstr "Mi red" - -#: ../../include/nav.php:195 -msgid "View your network/grid" -msgstr "Ver su red" - -#: ../../include/nav.php:196 -msgid "Mark all grid notifications seen" -msgstr "Marcar todas las notificaciones de la red como vistas" - -#: ../../include/nav.php:198 -msgid "Channel home" -msgstr "Mi canal" - -#: ../../include/nav.php:199 -msgid "View your channel home" -msgstr "Ver su página principal del canal" - -#: ../../include/nav.php:200 -msgid "Mark all channel notifications seen" -msgstr "Marcar todas las notificaciones del canal como leídas" - -#: ../../include/nav.php:206 -msgid "Notices" -msgstr "Avisos" - -#: ../../include/nav.php:206 -msgid "Notifications" -msgstr "Notificaciones" - -#: ../../include/nav.php:207 -msgid "View all notifications" -msgstr "Ver todas las notificaciones" - -#: ../../include/nav.php:210 -msgid "Private mail" -msgstr "Correo privado" - -#: ../../include/nav.php:211 -msgid "View your private messages" -msgstr "Ver sus mensajes privados" - -#: ../../include/nav.php:212 -msgid "Mark all private messages seen" -msgstr "Marcar todos los mensajes privados como leídos" - -#: ../../include/nav.php:218 -msgid "Event Calendar" -msgstr "Calendario de eventos" - -#: ../../include/nav.php:219 -msgid "View events" -msgstr "Ver los eventos" - -#: ../../include/nav.php:220 -msgid "Mark all events seen" -msgstr "Marcar todos los eventos como leidos" - -#: ../../include/nav.php:223 -msgid "Manage Your Channels" -msgstr "Gestionar sus canales" - -#: ../../include/nav.php:225 -msgid "Account/Channel Settings" -msgstr "Ajustes de cuenta/canales" - -#: ../../include/nav.php:233 -msgid "Site Setup and Configuration" -msgstr "Ajustes y configuración del sitio" - -#: ../../include/nav.php:297 -msgid "@name, #tag, ?doc, content" -msgstr "@nombre, #etiqueta, ?ayuda, contenido" - -#: ../../include/nav.php:298 -msgid "Please wait..." -msgstr "Espere por favor…" - -#: ../../include/nav.php:300 -msgid "Add Apps" -msgstr "Añadir aplicaciones" - -#: ../../include/attach.php:250 ../../include/attach.php:338 -msgid "Item was not found." -msgstr "Elemento no encontrado." +"Extremely advanced. Leave this alone unless you know what you are doing" +msgstr "Muy avanzado. Déjelo a no ser que sepa bien lo que está haciendo." -#: ../../include/attach.php:499 -msgid "No source file." -msgstr "Ningún fichero de origen" +#: ../../include/dir_fns.php:141 +msgid "Directory Options" +msgstr "Opciones del directorio" -#: ../../include/attach.php:521 -msgid "Cannot locate file to replace" -msgstr "No se puede localizar el fichero que va a ser sustituido." +#: ../../include/dir_fns.php:143 +msgid "Safe Mode" +msgstr "Modo seguro" -#: ../../include/attach.php:539 -msgid "Cannot locate file to revise/update" -msgstr "No se puede localizar el fichero para revisar/actualizar" +#: ../../include/dir_fns.php:144 +msgid "Public Forums Only" +msgstr "Solo foros públicos" -#: ../../include/attach.php:670 -#, php-format -msgid "File exceeds size limit of %d" -msgstr "El fichero supera el limite de tamaño de %d" +#: ../../include/dir_fns.php:145 +msgid "This Website Only" +msgstr "Solo este sitio web" -#: ../../include/attach.php:684 +#: ../../include/bookmarks.php:34 #, php-format -msgid "You have reached your limit of %1$.0f Mbytes attachment storage." -msgstr "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos." - -#: ../../include/attach.php:854 -msgid "File upload failed. Possible system limit or action terminated." -msgstr "Error de carga, posiblemente por limite del sistema o porque la acción ha finalizado." - -#: ../../include/attach.php:867 -msgid "Stored file could not be verified. Upload failed." -msgstr "El fichero almacenado no ha podido ser verificado. El envío ha fallado." - -#: ../../include/attach.php:922 ../../include/attach.php:938 -msgid "Path not available." -msgstr "Ruta no disponible." - -#: ../../include/attach.php:984 ../../include/attach.php:1142 -msgid "Empty pathname" -msgstr "Ruta vacía" - -#: ../../include/attach.php:1010 -msgid "duplicate filename or path" -msgstr "Nombre duplicado de ruta o fichero" - -#: ../../include/attach.php:1032 -msgid "Path not found." -msgstr "Ruta no encontrada" - -#: ../../include/attach.php:1096 -msgid "mkdir failed." -msgstr "mkdir ha fallado." +msgid "%1$s's bookmarks" +msgstr "Marcadores de %1$s" -#: ../../include/attach.php:1100 -msgid "database storage failed." -msgstr "el almacenamiento en la base de datos ha fallado." +#: ../../include/import.php:41 +msgid "" +"Cannot create a duplicate channel identifier on this system. Import failed." +msgstr "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado." -#: ../../include/attach.php:1148 -msgid "Empty path" -msgstr "Ruta vacía" +#: ../../include/import.php:105 +msgid "Cloned channel not found. Import failed." +msgstr "No se ha podido importar el canal porque el canal clonado no se ha encontrado." -#: ../../include/text.php:461 +#: ../../include/text.php:478 msgid "prev" msgstr "anterior" -#: ../../include/text.php:463 +#: ../../include/text.php:480 msgid "first" msgstr "primera" -#: ../../include/text.php:492 +#: ../../include/text.php:509 msgid "last" msgstr "última" -#: ../../include/text.php:495 +#: ../../include/text.php:512 msgid "next" msgstr "próxima" -#: ../../include/text.php:506 +#: ../../include/text.php:523 msgid "older" msgstr "más antiguas" -#: ../../include/text.php:508 +#: ../../include/text.php:525 msgid "newer" msgstr "más recientes" -#: ../../include/text.php:928 +#: ../../include/text.php:945 msgid "No connections" msgstr "Sin conexiones" -#: ../../include/text.php:953 +#: ../../include/text.php:970 #, php-format msgid "View all %s connections" msgstr "Ver todas las %s conexiones" -#: ../../include/text.php:1098 ../../include/text.php:1103 +#: ../../include/text.php:1115 ../../include/text.php:1120 msgid "poke" msgstr "un toque" -#: ../../include/text.php:1104 +#: ../../include/text.php:1121 msgid "ping" msgstr "un \"ping\"" -#: ../../include/text.php:1104 +#: ../../include/text.php:1121 msgid "pinged" msgstr "ha enviado un \"ping\" a" -#: ../../include/text.php:1105 +#: ../../include/text.php:1122 msgid "prod" msgstr "una incitación " -#: ../../include/text.php:1105 +#: ../../include/text.php:1122 msgid "prodded" msgstr "ha incitado a " -#: ../../include/text.php:1106 +#: ../../include/text.php:1123 msgid "slap" msgstr "una bofetada " -#: ../../include/text.php:1106 +#: ../../include/text.php:1123 msgid "slapped" msgstr "ha abofeteado a " -#: ../../include/text.php:1107 +#: ../../include/text.php:1124 msgid "finger" msgstr "un \"finger\" " -#: ../../include/text.php:1107 +#: ../../include/text.php:1124 msgid "fingered" msgstr "envió un \"finger\" a" -#: ../../include/text.php:1108 +#: ../../include/text.php:1125 msgid "rebuff" msgstr "un reproche" -#: ../../include/text.php:1108 +#: ../../include/text.php:1125 msgid "rebuffed" msgstr "ha hecho un reproche a " -#: ../../include/text.php:1120 +#: ../../include/text.php:1137 msgid "happy" msgstr "feliz " -#: ../../include/text.php:1121 +#: ../../include/text.php:1138 msgid "sad" msgstr "triste " -#: ../../include/text.php:1122 +#: ../../include/text.php:1139 msgid "mellow" msgstr "tranquilo/a" -#: ../../include/text.php:1123 +#: ../../include/text.php:1140 msgid "tired" msgstr "cansado/a " -#: ../../include/text.php:1124 +#: ../../include/text.php:1141 msgid "perky" msgstr "vivaz" -#: ../../include/text.php:1125 +#: ../../include/text.php:1142 msgid "angry" msgstr "enfadado/a" -#: ../../include/text.php:1126 +#: ../../include/text.php:1143 msgid "stupefied" msgstr "asombrado/a" -#: ../../include/text.php:1127 +#: ../../include/text.php:1144 msgid "puzzled" msgstr "perplejo/a" -#: ../../include/text.php:1128 +#: ../../include/text.php:1145 msgid "interested" msgstr "interesado/a" -#: ../../include/text.php:1129 +#: ../../include/text.php:1146 msgid "bitter" msgstr "amargado/a" -#: ../../include/text.php:1130 +#: ../../include/text.php:1147 msgid "cheerful" msgstr "alegre" -#: ../../include/text.php:1131 +#: ../../include/text.php:1148 msgid "alive" msgstr "animado/a" -#: ../../include/text.php:1132 +#: ../../include/text.php:1149 msgid "annoyed" msgstr "molesto/a" -#: ../../include/text.php:1133 +#: ../../include/text.php:1150 msgid "anxious" msgstr "ansioso/a" -#: ../../include/text.php:1134 +#: ../../include/text.php:1151 msgid "cranky" msgstr "de mal humor" -#: ../../include/text.php:1135 +#: ../../include/text.php:1152 msgid "disturbed" msgstr "perturbado/a" -#: ../../include/text.php:1136 +#: ../../include/text.php:1153 msgid "frustrated" msgstr "frustrado/a" -#: ../../include/text.php:1137 +#: ../../include/text.php:1154 msgid "depressed" msgstr "deprimido/a" -#: ../../include/text.php:1138 +#: ../../include/text.php:1155 msgid "motivated" msgstr "motivado/a" -#: ../../include/text.php:1139 +#: ../../include/text.php:1156 msgid "relaxed" msgstr "relajado/a" -#: ../../include/text.php:1140 +#: ../../include/text.php:1157 msgid "surprised" msgstr "sorprendido/a" -#: ../../include/text.php:1331 +#: ../../include/text.php:1330 ../../include/js_strings.php:70 +msgid "Monday" +msgstr "lunes" + +#: ../../include/text.php:1330 ../../include/js_strings.php:71 +msgid "Tuesday" +msgstr "martes" + +#: ../../include/text.php:1330 ../../include/js_strings.php:72 +msgid "Wednesday" +msgstr "miércoles" + +#: ../../include/text.php:1330 ../../include/js_strings.php:73 +msgid "Thursday" +msgstr "jueves" + +#: ../../include/text.php:1330 ../../include/js_strings.php:74 +msgid "Friday" +msgstr "viernes" + +#: ../../include/text.php:1330 ../../include/js_strings.php:75 +msgid "Saturday" +msgstr "sábado" + +#: ../../include/text.php:1330 ../../include/js_strings.php:69 +msgid "Sunday" +msgstr "domingo" + +#: ../../include/text.php:1334 ../../include/js_strings.php:45 +msgid "January" +msgstr "enero" + +#: ../../include/text.php:1334 ../../include/js_strings.php:46 +msgid "February" +msgstr "febrero" + +#: ../../include/text.php:1334 ../../include/js_strings.php:47 +msgid "March" +msgstr "marzo" + +#: ../../include/text.php:1334 ../../include/js_strings.php:48 +msgid "April" +msgstr "abril" + +#: ../../include/text.php:1334 msgid "May" msgstr "mayo" -#: ../../include/text.php:1408 ../../include/text.php:1412 +#: ../../include/text.php:1334 ../../include/js_strings.php:50 +msgid "June" +msgstr "junio" + +#: ../../include/text.php:1334 ../../include/js_strings.php:51 +msgid "July" +msgstr "julio" + +#: ../../include/text.php:1334 ../../include/js_strings.php:52 +msgid "August" +msgstr "agosto" + +#: ../../include/text.php:1334 ../../include/js_strings.php:53 +msgid "September" +msgstr "septiembre" + +#: ../../include/text.php:1334 ../../include/js_strings.php:54 +msgid "October" +msgstr "octubre" + +#: ../../include/text.php:1334 ../../include/js_strings.php:55 +msgid "November" +msgstr "noviembre" + +#: ../../include/text.php:1334 ../../include/js_strings.php:56 +msgid "December" +msgstr "diciembre" + +#: ../../include/text.php:1411 ../../include/text.php:1415 msgid "Unknown Attachment" msgstr "Adjunto no reconocido" -#: ../../include/text.php:1414 +#: ../../include/text.php:1417 msgid "unknown" msgstr "desconocido" -#: ../../include/text.php:1450 +#: ../../include/text.php:1453 msgid "remove category" msgstr "eliminar el tema" @@ -12857,97 +11638,162 @@ msgstr "eliminar el tema" msgid "remove from file" msgstr "eliminar del fichero" -#: ../../include/text.php:1796 +#: ../../include/text.php:1789 ../../include/language.php:367 +msgid "default" +msgstr "por defecto" + +#: ../../include/text.php:1797 msgid "Page layout" msgstr "Plantilla de la página" -#: ../../include/text.php:1796 +#: ../../include/text.php:1797 msgid "You can create your own with the layouts tool" msgstr "Puede crear su propia disposición gráfica con la herramienta de plantillas" -#: ../../include/text.php:1838 +#: ../../include/text.php:1825 msgid "Page content type" msgstr "Tipo de contenido de la página" -#: ../../include/text.php:1971 +#: ../../include/text.php:1958 msgid "activity" msgstr "la actividad" -#: ../../include/text.php:2285 +#: ../../include/text.php:2272 msgid "Design Tools" msgstr "Herramientas de diseño web" -#: ../../include/text.php:2291 +#: ../../include/text.php:2278 msgid "Pages" msgstr "Páginas" -#: ../../include/text.php:2313 +#: ../../include/text.php:2300 msgid "Import website..." msgstr "Importar un sitio web..." -#: ../../include/text.php:2314 +#: ../../include/text.php:2301 msgid "Select folder to import" msgstr "Seleccionar la carpeta que se va a importar" -#: ../../include/text.php:2315 +#: ../../include/text.php:2302 msgid "Import from a zipped folder:" msgstr "Importar desde una carpeta comprimida: " -#: ../../include/text.php:2316 +#: ../../include/text.php:2303 msgid "Import from cloud files:" msgstr "Importar desde los ficheros en la nube: " -#: ../../include/text.php:2317 +#: ../../include/text.php:2304 msgid "/cloud/channel/path/to/folder" msgstr "/cloud/canal/ruta/a la/carpeta" -#: ../../include/text.php:2318 +#: ../../include/text.php:2305 msgid "Enter path to website files" msgstr "Ruta a los ficheros del sitio web" -#: ../../include/text.php:2319 +#: ../../include/text.php:2306 msgid "Select folder" msgstr "Seleccionar la carpeta" -#: ../../include/text.php:2320 +#: ../../include/text.php:2307 msgid "Export website..." msgstr "Exportar un sitio web..." -#: ../../include/text.php:2321 +#: ../../include/text.php:2308 msgid "Export to a zip file" msgstr "Exportar a un fichero comprimido .zip" -#: ../../include/text.php:2322 +#: ../../include/text.php:2309 msgid "website.zip" msgstr "sitio_web.zip" -#: ../../include/text.php:2323 +#: ../../include/text.php:2310 msgid "Enter a name for the zip file." msgstr "Escriba un nombre para el fichero zip." -#: ../../include/text.php:2324 +#: ../../include/text.php:2311 msgid "Export to cloud files" msgstr "Exportar a la nube de ficheros" -#: ../../include/text.php:2325 +#: ../../include/text.php:2312 msgid "/path/to/export/folder" msgstr "/ruta/para/exportar/carpeta" -#: ../../include/text.php:2326 +#: ../../include/text.php:2313 msgid "Enter a path to a cloud files destination." msgstr "Escriba una ruta de destino a la nube de ficheros." -#: ../../include/text.php:2327 +#: ../../include/text.php:2314 msgid "Specify folder" msgstr "Especificar una carpeta" -#: ../../include/auth.php:148 -msgid "Logged out." -msgstr "Desconectado/a." +#: ../../include/contact_widgets.php:11 +#, php-format +msgid "%d invitation available" +msgid_plural "%d invitations available" +msgstr[0] "%d invitación pendiente" +msgstr[1] "%d invitaciones disponibles" -#: ../../include/auth.php:275 -msgid "Failed authentication" -msgstr "Autenticación fallida." +#: ../../include/contact_widgets.php:19 +msgid "Find Channels" +msgstr "Encontrar canales" + +#: ../../include/contact_widgets.php:20 +msgid "Enter name or interest" +msgstr "Introducir nombre o interés" + +#: ../../include/contact_widgets.php:21 +msgid "Connect/Follow" +msgstr "Conectar/Seguir" + +#: ../../include/contact_widgets.php:22 +msgid "Examples: Robert Morgenstein, Fishing" +msgstr "Ejemplos: José Fernández, Pesca" + +#: ../../include/contact_widgets.php:26 +msgid "Random Profile" +msgstr "Perfil aleatorio" + +#: ../../include/contact_widgets.php:27 +msgid "Invite Friends" +msgstr "Invitar a amigos" + +#: ../../include/contact_widgets.php:29 +msgid "Advanced example: name=fred and country=iceland" +msgstr "Ejemplo avanzado: nombre=juan y país=españa" + +#: ../../include/contact_widgets.php:122 +#, php-format +msgid "%d connection in common" +msgid_plural "%d connections in common" +msgstr[0] "%d conexión en común" +msgstr[1] "%d conexiones en común" + +#: ../../include/contact_widgets.php:127 +msgid "show more" +msgstr "mostrar más" + +#: ../../include/markdown.php:444 +msgid "Attachments:" +msgstr "Ficheros adjuntos: " + +#: ../../include/markdown.php:538 ../../include/event.php:22 +#: ../../include/event.php:69 +msgid "l F d, Y \\@ g:i A" +msgstr "l d de F, Y \\@ G:i" + +#: ../../include/markdown.php:540 +msgid "$Projectname event notification:" +msgstr "Notificación de eventos de $Projectname: " + +#: ../../include/markdown.php:544 ../../include/event.php:30 +#: ../../include/event.php:73 +msgid "Starts:" +msgstr "Comienza:" + +#: ../../include/markdown.php:552 ../../include/event.php:40 +#: ../../include/event.php:77 +msgid "Finishes:" +msgstr "Finaliza:" #: ../../include/follow.php:26 msgid "Channel is blocked on this site." @@ -12977,124 +11823,268 @@ msgstr "El intento de acceder al canal ha fallado." msgid "Cannot connect to yourself." msgstr "No puede conectarse consigo mismo." -#: ../../include/import.php:30 -msgid "" -"Cannot create a duplicate channel identifier on this system. Import failed." -msgstr "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado." +#: ../../include/js_strings.php:5 +msgid "Delete this item?" +msgstr "¿Borrar este elemento?" -#: ../../include/import.php:90 -msgid "Channel clone failed. Import failed." -msgstr "La clonación del canal no ha salido bien. La importación ha fallado." +#: ../../include/js_strings.php:8 +#, php-format +msgid "%s show less" +msgstr "%s mostrar menos" -#: ../../include/import.php:100 -msgid "Cloned channel not found. Import failed." -msgstr "No se ha podido importar el canal porque el canal clonado no se ha encontrado." +#: ../../include/js_strings.php:9 +#, php-format +msgid "%s expand" +msgstr "%s expandir" -#: ../../include/import.php:1373 -msgid "Unable to import element \"" -msgstr "No se puede importar un elemento \"" +#: ../../include/js_strings.php:10 +#, php-format +msgid "%s collapse" +msgstr "%s contraer" -#: ../../include/message.php:32 -msgid "Unable to determine sender." -msgstr "No ha sido posible determinar el remitente. " +#: ../../include/js_strings.php:11 +msgid "Password too short" +msgstr "Contraseña demasiado corta" -#: ../../include/message.php:69 -msgid "No recipient provided." -msgstr "No se ha especificado ningún destinatario." +#: ../../include/js_strings.php:12 +msgid "Passwords do not match" +msgstr "Las contraseñas no coinciden" -#: ../../include/message.php:74 -msgid "[no subject]" -msgstr "[sin asunto]" +#: ../../include/js_strings.php:13 +msgid "everybody" +msgstr "cualquiera" -#: ../../include/message.php:225 -msgid "Stored post could not be verified." -msgstr "No se han podido verificar las publicaciones guardadas." +#: ../../include/js_strings.php:14 +msgid "Secret Passphrase" +msgstr "Contraseña secreta" -#: ../../include/oembed.php:308 -msgid " by " -msgstr "por" +#: ../../include/js_strings.php:15 +msgid "Passphrase hint" +msgstr "Pista de contraseña" -#: ../../include/oembed.php:309 -msgid " on " -msgstr "en" +#: ../../include/js_strings.php:16 +msgid "Notice: Permissions have changed but have not yet been submitted." +msgstr "Aviso: los permisos han cambiado pero aún no han sido enviados." -#: ../../include/oembed.php:338 -msgid "Embedded content" -msgstr "Contenido incorporado" +#: ../../include/js_strings.php:17 +msgid "close all" +msgstr "cerrar todo" -#: ../../include/oembed.php:347 -msgid "Embedding disabled" -msgstr "Incrustación deshabilitada" +#: ../../include/js_strings.php:18 +msgid "Nothing new here" +msgstr "Nada nuevo por aquí" -#: ../../include/zot.php:649 -msgid "Invalid data packet" -msgstr "Paquete de datos no válido" +#: ../../include/js_strings.php:19 +msgid "Rate This Channel (this is public)" +msgstr "Valorar este canal (esto es público)" -#: ../../include/zot.php:665 -msgid "Unable to verify channel signature" -msgstr "No ha sido posible de verificar la firma del canal" +#: ../../include/js_strings.php:21 +msgid "Describe (optional)" +msgstr "Describir (opcional)" -#: ../../include/zot.php:2316 +#: ../../include/js_strings.php:23 +msgid "Please enter a link URL" +msgstr "Por favor, introduzca una dirección de enlace" + +#: ../../include/js_strings.php:24 +msgid "Unsaved changes. Are you sure you wish to leave this page?" +msgstr "Cambios no guardados. ¿Está seguro de que desea abandonar la página?" + +#: ../../include/js_strings.php:27 +msgid "timeago.prefixAgo" +msgstr "timeago.prefixAgo" + +#: ../../include/js_strings.php:28 +msgid "timeago.prefixFromNow" +msgstr "timeago.prefixFromNow" + +#: ../../include/js_strings.php:29 +msgid "ago" +msgstr "antes" + +#: ../../include/js_strings.php:30 +msgid "from now" +msgstr "desde ahora" + +#: ../../include/js_strings.php:31 +msgid "less than a minute" +msgstr "menos de un minuto" + +#: ../../include/js_strings.php:32 +msgid "about a minute" +msgstr "alrededor de un minuto" + +#: ../../include/js_strings.php:33 #, php-format -msgid "Unable to verify site signature for %s" -msgstr "No ha sido posible de verificar la firma del sitio para %s" +msgid "%d minutes" +msgstr "%d minutos" -#: ../../include/zot.php:3722 -msgid "invalid target signature" -msgstr "La firma recibida no es válida" +#: ../../include/js_strings.php:34 +msgid "about an hour" +msgstr "alrededor de una hora" -#: ../../include/permissions.php:35 -msgid "Can view my normal stream and posts" -msgstr "Pueden verse mi actividad y publicaciones normales" +#: ../../include/js_strings.php:35 +#, php-format +msgid "about %d hours" +msgstr "alrededor de %d horas" -#: ../../include/permissions.php:39 -msgid "Can view my webpages" -msgstr "Pueden verse mis páginas web" +#: ../../include/js_strings.php:36 +msgid "a day" +msgstr "un día" -#: ../../include/permissions.php:43 -msgid "Can post on my channel page (\"wall\")" -msgstr "Pueden crearse entradas en mi página de inicio del canal (“muro”)" +#: ../../include/js_strings.php:37 +#, php-format +msgid "%d days" +msgstr "%d días" -#: ../../include/permissions.php:46 -msgid "Can like/dislike stuff" -msgstr "Puede marcarse contenido como me gusta/no me gusta" +#: ../../include/js_strings.php:38 +msgid "about a month" +msgstr "alrededor de un mes" -#: ../../include/permissions.php:46 -msgid "Profiles and things other than posts/comments" -msgstr "Perfiles y otras cosas aparte de publicaciones/comentarios" +#: ../../include/js_strings.php:39 +#, php-format +msgid "%d months" +msgstr "%d meses" -#: ../../include/permissions.php:48 -msgid "Can forward to all my channel contacts via post @mentions" -msgstr "Puede enviarse una entrada a todos mis contactos del canal mediante una @mención" +#: ../../include/js_strings.php:40 +msgid "about a year" +msgstr "alrededor de un año" -#: ../../include/permissions.php:48 -msgid "Advanced - useful for creating group forum channels" -msgstr "Avanzado - útil para crear canales de foros de discusión o grupos" +#: ../../include/js_strings.php:41 +#, php-format +msgid "%d years" +msgstr "%d años" -#: ../../include/permissions.php:49 -msgid "Can chat with me (when available)" -msgstr "Se puede charlar conmigo (cuando esté disponible)" +#: ../../include/js_strings.php:42 +msgid " " +msgstr " " -#: ../../include/permissions.php:50 -msgid "Can write to my file storage and photos" -msgstr "Puede escribirse en mi repositorio de ficheros y fotos" +#: ../../include/js_strings.php:43 +msgid "timeago.numbers" +msgstr "timeago.numbers" -#: ../../include/permissions.php:51 -msgid "Can edit my webpages" -msgstr "Pueden editarse mis páginas web" +#: ../../include/js_strings.php:49 +msgctxt "long" +msgid "May" +msgstr "mayo" -#: ../../include/permissions.php:53 -msgid "Somewhat advanced - very useful in open communities" -msgstr "Algo avanzado - muy útil en comunidades abiertas" +#: ../../include/js_strings.php:57 +msgid "Jan" +msgstr "ene" -#: ../../include/permissions.php:55 -msgid "Can administer my channel resources" -msgstr "Pueden administrarse mis recursos del canal" +#: ../../include/js_strings.php:58 +msgid "Feb" +msgstr "feb" -#: ../../include/permissions.php:55 -msgid "" -"Extremely advanced. Leave this alone unless you know what you are doing" -msgstr "Muy avanzado. Déjelo a no ser que sepa bien lo que está haciendo." +#: ../../include/js_strings.php:59 +msgid "Mar" +msgstr "mar" + +#: ../../include/js_strings.php:60 +msgid "Apr" +msgstr "abr" + +#: ../../include/js_strings.php:61 +msgctxt "short" +msgid "May" +msgstr "may" + +#: ../../include/js_strings.php:62 +msgid "Jun" +msgstr "jun" + +#: ../../include/js_strings.php:63 +msgid "Jul" +msgstr "jul" + +#: ../../include/js_strings.php:64 +msgid "Aug" +msgstr "ago" + +#: ../../include/js_strings.php:65 +msgid "Sep" +msgstr "sep" + +#: ../../include/js_strings.php:66 +msgid "Oct" +msgstr "oct" + +#: ../../include/js_strings.php:67 +msgid "Nov" +msgstr "nov" + +#: ../../include/js_strings.php:68 +msgid "Dec" +msgstr "dic" + +#: ../../include/js_strings.php:76 +msgid "Sun" +msgstr "dom" + +#: ../../include/js_strings.php:77 +msgid "Mon" +msgstr "lun" + +#: ../../include/js_strings.php:78 +msgid "Tue" +msgstr "mar" + +#: ../../include/js_strings.php:79 +msgid "Wed" +msgstr "mié" + +#: ../../include/js_strings.php:80 +msgid "Thu" +msgstr "jue" + +#: ../../include/js_strings.php:81 +msgid "Fri" +msgstr "vie" + +#: ../../include/js_strings.php:82 +msgid "Sat" +msgstr "sáb" + +#: ../../include/js_strings.php:83 +msgctxt "calendar" +msgid "today" +msgstr "hoy" + +#: ../../include/js_strings.php:84 +msgctxt "calendar" +msgid "month" +msgstr "mes" + +#: ../../include/js_strings.php:85 +msgctxt "calendar" +msgid "week" +msgstr "semana" + +#: ../../include/js_strings.php:86 +msgctxt "calendar" +msgid "day" +msgstr "día" + +#: ../../include/js_strings.php:87 +msgctxt "calendar" +msgid "All day" +msgstr "Todos los días" + +#: ../../include/message.php:30 +msgid "Unable to determine sender." +msgstr "No ha sido posible determinar el remitente. " + +#: ../../include/message.php:67 +msgid "No recipient provided." +msgstr "No se ha especificado ningún destinatario." + +#: ../../include/message.php:72 +msgid "[no subject]" +msgstr "[sin asunto]" + +#: ../../include/message.php:223 +msgid "Stored post could not be verified." +msgstr "No se han podido verificar las publicaciones guardadas." #: ../../include/activities.php:41 msgid " and " @@ -13119,6 +12109,471 @@ msgstr "Visitar %2$s de %1$s" msgid "%1$s has an updated %2$s, changing %3$s." msgstr "%1$s ha actualizado %2$s, cambiando %3$s." +#: ../../include/attach.php:250 ../../include/attach.php:339 +msgid "Item was not found." +msgstr "Elemento no encontrado." + +#: ../../include/attach.php:500 +msgid "No source file." +msgstr "Ningún fichero de origen" + +#: ../../include/attach.php:522 +msgid "Cannot locate file to replace" +msgstr "No se puede localizar el fichero que va a ser sustituido." + +#: ../../include/attach.php:540 +msgid "Cannot locate file to revise/update" +msgstr "No se puede localizar el fichero para revisar/actualizar" + +#: ../../include/attach.php:671 +#, php-format +msgid "File exceeds size limit of %d" +msgstr "El fichero supera el limite de tamaño de %d" + +#: ../../include/attach.php:685 +#, php-format +msgid "You have reached your limit of %1$.0f Mbytes attachment storage." +msgstr "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos." + +#: ../../include/attach.php:855 +msgid "File upload failed. Possible system limit or action terminated." +msgstr "Error de carga, posiblemente por limite del sistema o porque la acción ha finalizado." + +#: ../../include/attach.php:868 +msgid "Stored file could not be verified. Upload failed." +msgstr "El fichero almacenado no ha podido ser verificado. El envío ha fallado." + +#: ../../include/attach.php:923 ../../include/attach.php:939 +msgid "Path not available." +msgstr "Ruta no disponible." + +#: ../../include/attach.php:988 ../../include/attach.php:1153 +msgid "Empty pathname" +msgstr "Ruta vacía" + +#: ../../include/attach.php:1014 +msgid "duplicate filename or path" +msgstr "Nombre duplicado de ruta o fichero" + +#: ../../include/attach.php:1039 +msgid "Path not found." +msgstr "Ruta no encontrada" + +#: ../../include/attach.php:1107 +msgid "mkdir failed." +msgstr "mkdir ha fallado." + +#: ../../include/attach.php:1111 +msgid "database storage failed." +msgstr "el almacenamiento en la base de datos ha fallado." + +#: ../../include/attach.php:1159 +msgid "Empty path" +msgstr "Ruta vacía" + +#: ../../include/security.php:117 +msgid "guest:" +msgstr "invitado: " + +#: ../../include/security.php:532 +msgid "" +"The form security token was not correct. This probably happened because the " +"form has been opened for too long (>3 hours) before submitting it." +msgstr "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado" + +#: ../../include/items.php:846 ../../include/items.php:893 +msgid "(Unknown)" +msgstr "(Desconocido)" + +#: ../../include/items.php:1094 +msgid "Visible to anybody on the internet." +msgstr "Visible para cualquiera en internet." + +#: ../../include/items.php:1096 +msgid "Visible to you only." +msgstr "Visible sólo para usted." + +#: ../../include/items.php:1098 +msgid "Visible to anybody in this network." +msgstr "Visible para cualquiera en esta red." + +#: ../../include/items.php:1100 +msgid "Visible to anybody authenticated." +msgstr "Visible para cualquiera que esté autenticado." + +#: ../../include/items.php:1102 +#, php-format +msgid "Visible to anybody on %s." +msgstr "Visible para cualquiera en %s." + +#: ../../include/items.php:1104 +msgid "Visible to all connections." +msgstr "Visible para todas las conexiones." + +#: ../../include/items.php:1106 +msgid "Visible to approved connections." +msgstr "Visible para las conexiones permitidas." + +#: ../../include/items.php:1108 +msgid "Visible to specific connections." +msgstr "Visible para conexiones específicas." + +#: ../../include/items.php:3925 +msgid "Privacy group is empty." +msgstr "El grupo de canales está vacío." + +#: ../../include/items.php:3932 +#, php-format +msgid "Privacy group: %s" +msgstr "Grupo de canales: %s" + +#: ../../include/items.php:3944 +msgid "Connection not found." +msgstr "Conexión no encontrada" + +#: ../../include/items.php:4293 +msgid "profile photo" +msgstr "foto del perfil" + +#: ../../include/items.php:4489 +#, php-format +msgid "[Edited %s]" +msgstr "[se ha editado %s]" + +#: ../../include/items.php:4489 +msgctxt "edit_activity" +msgid "Post" +msgstr "Publicar" + +#: ../../include/items.php:4489 +msgctxt "edit_activity" +msgid "Comment" +msgstr "Comentar" + +#: ../../include/channel.php:33 +msgid "Unable to obtain identity information from database" +msgstr "No ha sido posible obtener información sobre la identidad desde la base de datos" + +#: ../../include/channel.php:67 +msgid "Empty name" +msgstr "Nombre vacío" + +#: ../../include/channel.php:70 +msgid "Name too long" +msgstr "Nombre demasiado largo" + +#: ../../include/channel.php:181 +msgid "No account identifier" +msgstr "Ningún identificador de la cuenta" + +#: ../../include/channel.php:193 +msgid "Nickname is required." +msgstr "Se requiere un sobrenombre (alias)." + +#: ../../include/channel.php:207 +msgid "Reserved nickname. Please choose another." +msgstr "Sobrenombre en uso. Por favor, elija otro." + +#: ../../include/channel.php:212 +msgid "" +"Nickname has unsupported characters or is already being used on this site." +msgstr "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio." + +#: ../../include/channel.php:270 +msgid "Unable to retrieve created identity" +msgstr "No ha sido posible recuperar la identidad creada" + +#: ../../include/channel.php:342 +msgid "Default Profile" +msgstr "Perfil principal" + +#: ../../include/channel.php:1043 +msgid "Create New Profile" +msgstr "Crear un nuevo perfil" + +#: ../../include/channel.php:1063 +msgid "Visible to everybody" +msgstr "Visible para todos" + +#: ../../include/channel.php:1136 ../../include/channel.php:1250 +msgid "Gender:" +msgstr "Género:" + +#: ../../include/channel.php:1138 ../../include/channel.php:1305 +msgid "Homepage:" +msgstr "Página personal:" + +#: ../../include/channel.php:1139 +msgid "Online Now" +msgstr "Ahora en línea" + +#: ../../include/channel.php:1255 +msgid "Like this channel" +msgstr "Me gusta este canal" + +#: ../../include/channel.php:1279 +msgid "j F, Y" +msgstr "j F Y" + +#: ../../include/channel.php:1280 +msgid "j F" +msgstr "j F" + +#: ../../include/channel.php:1287 +msgid "Birthday:" +msgstr "Cumpleaños:" + +#: ../../include/channel.php:1300 +#, php-format +msgid "for %1$d %2$s" +msgstr "por %1$d %2$s" + +#: ../../include/channel.php:1303 +msgid "Sexual Preference:" +msgstr "Orientación sexual:" + +#: ../../include/channel.php:1309 +msgid "Tags:" +msgstr "Etiquetas:" + +#: ../../include/channel.php:1311 +msgid "Political Views:" +msgstr "Posición política:" + +#: ../../include/channel.php:1313 +msgid "Religion:" +msgstr "Religión:" + +#: ../../include/channel.php:1317 +msgid "Hobbies/Interests:" +msgstr "Aficciones o intereses:" + +#: ../../include/channel.php:1319 +msgid "Likes:" +msgstr "Me gusta:" + +#: ../../include/channel.php:1321 +msgid "Dislikes:" +msgstr "No me gusta:" + +#: ../../include/channel.php:1323 +msgid "Contact information and Social Networks:" +msgstr "Información de contacto y redes sociales:" + +#: ../../include/channel.php:1325 +msgid "My other channels:" +msgstr "Mis otros canales:" + +#: ../../include/channel.php:1327 +msgid "Musical interests:" +msgstr "Preferencias musicales:" + +#: ../../include/channel.php:1329 +msgid "Books, literature:" +msgstr "Libros, literatura:" + +#: ../../include/channel.php:1331 +msgid "Television:" +msgstr "Televisión:" + +#: ../../include/channel.php:1333 +msgid "Film/dance/culture/entertainment:" +msgstr "Cine, danza, cultura, entretenimiento:" + +#: ../../include/channel.php:1335 +msgid "Love/Romance:" +msgstr "Vida sentimental o amorosa:" + +#: ../../include/channel.php:1337 +msgid "Work/employment:" +msgstr "Trabajo:" + +#: ../../include/channel.php:1339 +msgid "School/education:" +msgstr "Estudios:" + +#: ../../include/channel.php:1362 +msgid "Like this thing" +msgstr "Me gusta esto" + +#: ../../include/channel.php:2135 +#, php-format +msgid "User '%s' deleted" +msgstr "El usuario '%s' ha sido eliminado" + +#: ../../include/event.php:1004 +msgid "This event has been added to your calendar." +msgstr "Este evento ha sido añadido a su calendario." + +#: ../../include/event.php:1204 +msgid "Not specified" +msgstr "Sin especificar" + +#: ../../include/event.php:1205 +msgid "Needs Action" +msgstr "Necesita de una intervención" + +#: ../../include/event.php:1206 +msgid "Completed" +msgstr "Completado/a" + +#: ../../include/event.php:1207 +msgid "In Process" +msgstr "En proceso" + +#: ../../include/event.php:1208 +msgid "Cancelled" +msgstr "Cancelado/a" + +#: ../../include/network.php:756 +msgid "view full size" +msgstr "Ver en el tamaño original" + +#: ../../include/network.php:2011 +msgid "No Subject" +msgstr "Sin asunto" + +#: ../../include/network.php:2265 ../../include/network.php:2266 +msgid "Friendica" +msgstr "Friendica" + +#: ../../include/network.php:2267 +msgid "OStatus" +msgstr "OStatus" + +#: ../../include/network.php:2268 +msgid "GNU-Social" +msgstr "GNU Social" + +#: ../../include/network.php:2269 +msgid "RSS/Atom" +msgstr "RSS/Atom" + +#: ../../include/network.php:2271 +msgid "Diaspora" +msgstr "Diaspora" + +#: ../../include/network.php:2272 +msgid "Facebook" +msgstr "Facebook" + +#: ../../include/network.php:2273 +msgid "Zot" +msgstr "Zot" + +#: ../../include/network.php:2274 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: ../../include/network.php:2275 +msgid "XMPP/IM" +msgstr "XMPP/IM" + +#: ../../include/network.php:2276 +msgid "MySpace" +msgstr "MySpace" + +#: ../../include/page_widgets.php:7 +msgid "New Page" +msgstr "Nueva página" + +#: ../../include/language.php:380 +msgid "Select an alternate language" +msgstr "Seleccionar un idioma alternativo" + +#: ../../include/acl_selectors.php:208 +msgid "Who can see this?" +msgstr "¿Quién puede ver esto?" + +#: ../../include/acl_selectors.php:209 +msgid "Custom selection" +msgstr "Selección personalizada" + +#: ../../include/acl_selectors.php:210 +msgid "" +"Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit" +" the scope of \"Show\"." +msgstr "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"." + +#: ../../include/acl_selectors.php:211 +msgid "Show" +msgstr "Mostrar" + +#: ../../include/acl_selectors.php:212 +msgid "Don't show" +msgstr "No mostrar" + +#: ../../include/acl_selectors.php:245 +#, php-format +msgid "" +"Post permissions %s cannot be changed %s after a post is shared.</br />These" +" permissions set who is allowed to view the post." +msgstr "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje." + +#: ../../include/dba/dba_driver.php:189 +#, php-format +msgid "Cannot locate DNS info for database server '%s'" +msgstr "No se ha podido localizar información de DNS para el servidor de base de datos “%s”" + +#: ../../include/bbcode.php:134 ../../include/bbcode.php:1040 +#: ../../include/bbcode.php:1043 ../../include/bbcode.php:1048 +#: ../../include/bbcode.php:1051 ../../include/bbcode.php:1054 +#: ../../include/bbcode.php:1057 ../../include/bbcode.php:1062 +#: ../../include/bbcode.php:1065 ../../include/bbcode.php:1070 +#: ../../include/bbcode.php:1073 ../../include/bbcode.php:1076 +#: ../../include/bbcode.php:1079 +msgid "Image/photo" +msgstr "Imagen/foto" + +#: ../../include/bbcode.php:173 ../../include/bbcode.php:1090 +msgid "Encrypted content" +msgstr "Contenido cifrado" + +#: ../../include/bbcode.php:189 +#, php-format +msgid "Install %s element: " +msgstr "Instalar el elemento %s:" + +#: ../../include/bbcode.php:193 +#, php-format +msgid "" +"This post contains an installable %s element, however you lack permissions " +"to install it on this site." +msgstr "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio." + +#: ../../include/bbcode.php:272 +#, php-format +msgid "%1$s wrote the following %2$s %3$s" +msgstr "%1$s escribió %2$s siguiente %3$s" + +#: ../../include/bbcode.php:349 ../../include/bbcode.php:357 +msgid "Click to open/close" +msgstr "Pulsar para abrir/cerrar" + +#: ../../include/bbcode.php:357 +msgid "spoiler" +msgstr "spoiler" + +#: ../../include/bbcode.php:1028 +msgid "$1 wrote:" +msgstr "$1 escribió:" + +#: ../../include/oembed.php:308 +msgid " by " +msgstr "por" + +#: ../../include/oembed.php:309 +msgid " on " +msgstr "en" + +#: ../../include/oembed.php:338 +msgid "Embedded content" +msgstr "Contenido incorporado" + +#: ../../include/oembed.php:347 +msgid "Embedding disabled" +msgstr "Incrustación deshabilitada" + #: ../../include/features.php:58 msgid "General Features" msgstr "Funcionalidades básicas" @@ -13193,7 +12648,7 @@ msgstr "Proporcionar salas y servicios de chat moderados." #: ../../include/features.php:154 msgid "Provide alternate connection permission roles." -msgstr "Proporcionar roles de acceso alternativas para esta conexión." +msgstr "Proporcionar roles de acceso alternativos para esta conexión." #: ../../include/features.php:162 msgid "Smart Birthdays" @@ -13310,6 +12765,10 @@ msgstr "Buscar por fecha" msgid "Ability to select posts by date ranges" msgstr "Capacidad de seleccionar entradas por rango de fechas" +#: ../../include/features.php:292 ../../include/group.php:331 +msgid "Privacy Groups" +msgstr "Grupos de canales" + #: ../../include/features.php:293 msgid "Enable management and selection of privacy groups" msgstr "Activar la gestión y selección de grupos de canales" @@ -13420,368 +12879,410 @@ msgid "" "channel" msgstr "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal" -#: ../../include/photos.php:115 -#, php-format -msgid "Image exceeds website size limit of %lu bytes" -msgstr "La imagen excede el límite de %lu bytes del sitio" +#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249 +msgid "Tags" +msgstr "Etiquetas" -#: ../../include/photos.php:122 -msgid "Image file is empty." -msgstr "El fichero de imagen está vacío. " +#: ../../include/taxonomy.php:293 +msgid "Keywords" +msgstr "Palabras clave" -#: ../../include/photos.php:260 -msgid "Photo storage failed." -msgstr "La foto no ha podido ser guardada." +#: ../../include/taxonomy.php:314 +msgid "have" +msgstr "tener" -#: ../../include/photos.php:300 -msgid "a new photo" -msgstr "una nueva foto" +#: ../../include/taxonomy.php:314 +msgid "has" +msgstr "tiene" -#: ../../include/photos.php:304 -#, php-format -msgctxt "photo_upload" -msgid "%1$s posted %2$s to %3$s" -msgstr "%1$s ha publicado %2$s en %3$s" +#: ../../include/taxonomy.php:315 +msgid "want" +msgstr "quiero" -#: ../../include/photos.php:519 -msgid "Upload New Photos" -msgstr "Subir nuevas fotos" +#: ../../include/taxonomy.php:315 +msgid "wants" +msgstr "quiere" -#: ../../include/channel.php:33 -msgid "Unable to obtain identity information from database" -msgstr "No ha sido posible obtener información sobre la identidad desde la base de datos" +#: ../../include/taxonomy.php:316 +msgid "likes" +msgstr "gusta de" -#: ../../include/channel.php:67 -msgid "Empty name" -msgstr "Nombre vacío" +#: ../../include/taxonomy.php:317 +msgid "dislikes" +msgstr "no gusta de" -#: ../../include/channel.php:70 -msgid "Name too long" -msgstr "Nombre demasiado largo" +#: ../../include/account.php:35 +msgid "Not a valid email address" +msgstr "Dirección de correo no válida" -#: ../../include/channel.php:181 -msgid "No account identifier" -msgstr "Ningún identificador de la cuenta" +#: ../../include/account.php:37 +msgid "Your email domain is not among those allowed on this site" +msgstr "Su dirección de correo no pertenece a ninguno de los dominios permitidos en este sitio." -#: ../../include/channel.php:193 -msgid "Nickname is required." -msgstr "Se requiere un sobrenombre (alias)." +#: ../../include/account.php:43 +msgid "Your email address is already registered at this site." +msgstr "Su dirección de correo está ya registrada en este sitio." -#: ../../include/channel.php:207 -msgid "Reserved nickname. Please choose another." -msgstr "Sobrenombre en uso. Por favor, elija otro." +#: ../../include/account.php:75 +msgid "An invitation is required." +msgstr "Es obligatorio que le inviten." -#: ../../include/channel.php:212 -msgid "" -"Nickname has unsupported characters or is already being used on this site." -msgstr "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio." +#: ../../include/account.php:79 +msgid "Invitation could not be verified." +msgstr "No se ha podido verificar su invitación." -#: ../../include/channel.php:272 -msgid "Unable to retrieve created identity" -msgstr "No ha sido posible recuperar la identidad creada" +#: ../../include/account.php:130 +msgid "Please enter the required information." +msgstr "Por favor introduzca la información requerida." -#: ../../include/channel.php:344 -msgid "Default Profile" -msgstr "Perfil principal" +#: ../../include/account.php:198 +msgid "Failed to store account information." +msgstr "La información de la cuenta no se ha podido guardar." -#: ../../include/channel.php:1045 -msgid "Create New Profile" -msgstr "Crear un nuevo perfil" +#: ../../include/account.php:263 +#, php-format +msgid "Registration confirmation for %s" +msgstr "Confirmación de registro para %s" -#: ../../include/channel.php:1065 -msgid "Visible to everybody" -msgstr "Visible para todos" +#: ../../include/account.php:330 +#, php-format +msgid "Registration request at %s" +msgstr "Solicitud de registro en %s" -#: ../../include/channel.php:1138 ../../include/channel.php:1257 -msgid "Gender:" -msgstr "Género:" +#: ../../include/account.php:352 +msgid "your registration password" +msgstr "su contraseña de registro" -#: ../../include/channel.php:1140 ../../include/channel.php:1312 -msgid "Homepage:" -msgstr "Página personal:" +#: ../../include/account.php:358 ../../include/account.php:420 +#, php-format +msgid "Registration details for %s" +msgstr "Detalles del registro de %s" -#: ../../include/channel.php:1141 -msgid "Online Now" -msgstr "Ahora en línea" +#: ../../include/account.php:431 +msgid "Account approved." +msgstr "Cuenta aprobada." -#: ../../include/channel.php:1262 -msgid "Like this channel" -msgstr "Me gusta este canal" +#: ../../include/account.php:471 +#, php-format +msgid "Registration revoked for %s" +msgstr "Registro revocado para %s" -#: ../../include/channel.php:1286 -msgid "j F, Y" -msgstr "j F Y" +#: ../../include/account.php:756 ../../include/account.php:758 +msgid "Click here to upgrade." +msgstr "Pulse aquí para actualizar" -#: ../../include/channel.php:1287 -msgid "j F" -msgstr "j F" +#: ../../include/account.php:764 +msgid "This action exceeds the limits set by your subscription plan." +msgstr "Esta acción supera los límites establecidos por su plan de suscripción " -#: ../../include/channel.php:1294 -msgid "Birthday:" -msgstr "Cumpleaños:" +#: ../../include/account.php:769 +msgid "This action is not available under your subscription plan." +msgstr "Esta acción no está disponible en su plan de suscripción." -#: ../../include/channel.php:1307 -#, php-format -msgid "for %1$d %2$s" -msgstr "por %1$d %2$s" +#: ../../include/datetime.php:147 +msgid "Birthday" +msgstr "Cumpleaños" -#: ../../include/channel.php:1310 -msgid "Sexual Preference:" -msgstr "Orientación sexual:" +#: ../../include/datetime.php:149 +msgid "Age: " +msgstr "Edad:" -#: ../../include/channel.php:1316 -msgid "Tags:" -msgstr "Etiquetas:" +#: ../../include/datetime.php:151 +msgid "YYYY-MM-DD or MM-DD" +msgstr "AAAA-MM-DD o MM-DD" -#: ../../include/channel.php:1318 -msgid "Political Views:" -msgstr "Posición política:" +#: ../../include/datetime.php:292 +msgid "less than a second ago" +msgstr "hace un instante" -#: ../../include/channel.php:1320 -msgid "Religion:" -msgstr "Religión:" +#: ../../include/datetime.php:310 +#, php-format +msgctxt "e.g. 22 hours ago, 1 minute ago" +msgid "%1$d %2$s ago" +msgstr "hace %1$d %2$s" -#: ../../include/channel.php:1324 -msgid "Hobbies/Interests:" -msgstr "Aficciones o intereses:" +#: ../../include/datetime.php:321 +msgctxt "relative_date" +msgid "year" +msgid_plural "years" +msgstr[0] "año" +msgstr[1] "años" -#: ../../include/channel.php:1326 -msgid "Likes:" -msgstr "Me gusta:" +#: ../../include/datetime.php:324 +msgctxt "relative_date" +msgid "month" +msgid_plural "months" +msgstr[0] "mes" +msgstr[1] "meses" -#: ../../include/channel.php:1328 -msgid "Dislikes:" -msgstr "No me gusta:" +#: ../../include/datetime.php:327 +msgctxt "relative_date" +msgid "week" +msgid_plural "weeks" +msgstr[0] "semana" +msgstr[1] "semanas" -#: ../../include/channel.php:1330 -msgid "Contact information and Social Networks:" -msgstr "Información de contacto y redes sociales:" +#: ../../include/datetime.php:330 +msgctxt "relative_date" +msgid "day" +msgid_plural "days" +msgstr[0] "día" +msgstr[1] "días" -#: ../../include/channel.php:1332 -msgid "My other channels:" -msgstr "Mis otros canales:" +#: ../../include/datetime.php:333 +msgctxt "relative_date" +msgid "hour" +msgid_plural "hours" +msgstr[0] "hora" +msgstr[1] "horas" -#: ../../include/channel.php:1334 -msgid "Musical interests:" -msgstr "Preferencias musicales:" +#: ../../include/datetime.php:336 +msgctxt "relative_date" +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuto" +msgstr[1] "minutos" -#: ../../include/channel.php:1336 -msgid "Books, literature:" -msgstr "Libros, literatura:" +#: ../../include/datetime.php:339 +msgctxt "relative_date" +msgid "second" +msgid_plural "seconds" +msgstr[0] "segundo" +msgstr[1] "segundos" -#: ../../include/channel.php:1338 -msgid "Television:" -msgstr "Televisión:" +#: ../../include/datetime.php:576 +#, php-format +msgid "%1$s's birthday" +msgstr "Cumpleaños de %1$s" -#: ../../include/channel.php:1340 -msgid "Film/dance/culture/entertainment:" -msgstr "Cine, danza, cultura, entretenimiento:" +#: ../../include/datetime.php:577 +#, php-format +msgid "Happy Birthday %1$s" +msgstr "Feliz cumpleaños %1$s" -#: ../../include/channel.php:1342 -msgid "Love/Romance:" -msgstr "Vida sentimental o amorosa:" +#: ../../include/nav.php:88 +msgid "Remote authentication" +msgstr "Acceder desde su servidor" -#: ../../include/channel.php:1344 -msgid "Work/employment:" -msgstr "Trabajo:" +#: ../../include/nav.php:88 +msgid "Click to authenticate to your home hub" +msgstr "Pulsar para identificarse en su servidor de inicio" -#: ../../include/channel.php:1346 -msgid "School/education:" -msgstr "Estudios:" +#: ../../include/nav.php:99 ../../include/nav.php:123 +msgid "End this session" +msgstr "Finalizar esta sesión" -#: ../../include/channel.php:1369 -msgid "Like this thing" -msgstr "Me gusta esto" +#: ../../include/nav.php:102 +msgid "Your profile page" +msgstr "Su página del perfil" -#: ../../include/channel.php:2103 -#, php-format -msgid "User '%s' deleted" -msgstr "El usuario '%s' ha sido eliminado" +#: ../../include/nav.php:105 +msgid "Manage/Edit profiles" +msgstr "Administrar/editar perfiles" -#: ../../util/nconfig.php:34 -msgid "Source channel not found." -msgstr "No se ha encontrado el canal de origen." +#: ../../include/nav.php:107 +msgid "Edit your profile" +msgstr "Editar su perfil" -#: ../../view/theme/redbasic/php/config.php:9 -msgid "Focus (Hubzilla default)" -msgstr "Focus (predefinido)" +#: ../../include/nav.php:113 +msgid "Sign in" +msgstr "Acceder" -#: ../../view/theme/redbasic/php/config.php:110 -msgid "Theme settings" -msgstr "Ajustes del tema" +#: ../../include/nav.php:138 +msgid "Take me home" +msgstr "Volver a la página principal" -#: ../../view/theme/redbasic/php/config.php:111 -msgid "Narrow navbar" -msgstr "Estrechar la barra de navegación" +#: ../../include/nav.php:140 +msgid "Log me out of this site" +msgstr "Salir de este sitio" -#: ../../view/theme/redbasic/php/config.php:112 -msgid "Navigation bar background color" -msgstr "Color de fondo de la barra de navegación" +#: ../../include/nav.php:145 +msgid "Create an account" +msgstr "Crear una cuenta" -#: ../../view/theme/redbasic/php/config.php:113 -msgid "Navigation bar gradient top color" -msgstr "Color superior del gradiente de la barra de navegación" +#: ../../include/nav.php:157 +msgid "Help and documentation" +msgstr "Ayuda y documentación" -#: ../../view/theme/redbasic/php/config.php:114 -msgid "Navigation bar gradient bottom color" -msgstr "Color inferior del gradiente de la barra de navegación" +#: ../../include/nav.php:160 +msgid "Search site @name, #tag, ?docs, content" +msgstr "Buscar en el sitio por @nombre, #etiqueta, ?ayuda o contenido" -#: ../../view/theme/redbasic/php/config.php:115 -msgid "Navigation active button gradient top color" -msgstr "Color superior del gradiente del botón activo de navegación" +#: ../../include/nav.php:172 +msgid "Your grid" +msgstr "Mi red" -#: ../../view/theme/redbasic/php/config.php:116 -msgid "Navigation active button gradient bottom color" -msgstr "Color inferior del gradiente del botón activo de navegación" +#: ../../include/nav.php:173 +msgid "View your network/grid" +msgstr "Ver su red" -#: ../../view/theme/redbasic/php/config.php:117 -msgid "Navigation bar border color " -msgstr "Color del borde de la barra de navegación" +#: ../../include/nav.php:174 +msgid "Mark all grid notifications seen" +msgstr "Marcar todas las notificaciones de la red como vistas" -#: ../../view/theme/redbasic/php/config.php:118 -msgid "Navigation bar icon color " -msgstr "Color del icono de la barra de navegación" +#: ../../include/nav.php:176 +msgid "Channel home" +msgstr "Mi canal" -#: ../../view/theme/redbasic/php/config.php:119 -msgid "Navigation bar active icon color " -msgstr "Color del icono activo de la barra de navegación" +#: ../../include/nav.php:177 +msgid "View your channel home" +msgstr "Ver su página principal del canal" -#: ../../view/theme/redbasic/php/config.php:120 -msgid "link color" -msgstr "Color del enlace" +#: ../../include/nav.php:178 +msgid "Mark all channel notifications seen" +msgstr "Marcar todas las notificaciones del canal como leídas" -#: ../../view/theme/redbasic/php/config.php:121 -msgid "Set font-color for banner" -msgstr "Ajustar el color del tipo de letra para el \"banner\"" +#: ../../include/nav.php:184 +msgid "Notices" +msgstr "Avisos" -#: ../../view/theme/redbasic/php/config.php:122 -msgid "Set the background color" -msgstr "Ajustar el color de fondo" +#: ../../include/nav.php:184 +msgid "Notifications" +msgstr "Notificaciones" -#: ../../view/theme/redbasic/php/config.php:123 -msgid "Set the background image" -msgstr "Ajustar la imagen de fondo" +#: ../../include/nav.php:185 +msgid "View all notifications" +msgstr "Ver todas las notificaciones" -#: ../../view/theme/redbasic/php/config.php:124 -msgid "Set the background color of items" -msgstr "Ajustar el color de los elementos de fondo" +#: ../../include/nav.php:188 +msgid "Private mail" +msgstr "Correo privado" -#: ../../view/theme/redbasic/php/config.php:125 -msgid "Set the background color of comments" -msgstr "Ajustar el color de fondo de los comentarios" +#: ../../include/nav.php:189 +msgid "View your private messages" +msgstr "Ver sus mensajes privados" -#: ../../view/theme/redbasic/php/config.php:126 -msgid "Set the border color of comments" -msgstr "Ajustar el color del borde de los comentarios" +#: ../../include/nav.php:190 +msgid "Mark all private messages seen" +msgstr "Marcar todos los mensajes privados como leídos" -#: ../../view/theme/redbasic/php/config.php:127 -msgid "Set the indent for comments" -msgstr "Ajustar la indentación de los comentarios" +#: ../../include/nav.php:196 +msgid "Event Calendar" +msgstr "Calendario de eventos" -#: ../../view/theme/redbasic/php/config.php:128 -msgid "Set the basic color for item icons" -msgstr "Ajustar el color básico para los iconos de los elementos" +#: ../../include/nav.php:197 +msgid "View events" +msgstr "Ver los eventos" -#: ../../view/theme/redbasic/php/config.php:129 -msgid "Set the hover color for item icons" -msgstr "Ajustar el color flotante para los iconos de los elementos" +#: ../../include/nav.php:198 +msgid "Mark all events seen" +msgstr "Marcar todos los eventos como leidos" -#: ../../view/theme/redbasic/php/config.php:130 -msgid "Set font-size for the entire application" -msgstr "Ajustar el tamaño de letra para toda la aplicación" +#: ../../include/nav.php:201 +msgid "Manage Your Channels" +msgstr "Gestionar sus canales" -#: ../../view/theme/redbasic/php/config.php:130 -msgid "Example: 14px" -msgstr "Ejemplo: 14px" +#: ../../include/nav.php:203 +msgid "Account/Channel Settings" +msgstr "Ajustes de cuenta/canales" -#: ../../view/theme/redbasic/php/config.php:131 -msgid "Set font-size for posts and comments" -msgstr "Ajustar el tamaño del tipo de letra para publicaciones y comentarios" +#: ../../include/nav.php:211 +msgid "Site Setup and Configuration" +msgstr "Ajustes y configuración del sitio" -#: ../../view/theme/redbasic/php/config.php:132 -msgid "Set font-color for posts and comments" -msgstr "Establecer el color de la letra para publicaciones y comentarios" +#: ../../include/nav.php:273 +msgid "@name, #tag, ?doc, content" +msgstr "@nombre, #etiqueta, ?ayuda, contenido" -#: ../../view/theme/redbasic/php/config.php:133 -msgid "Set radius of corners" -msgstr "Establecer el radio de curvatura de las esquinas" +#: ../../include/nav.php:274 +msgid "Please wait..." +msgstr "Espere por favor…" -#: ../../view/theme/redbasic/php/config.php:134 -msgid "Set shadow depth of photos" -msgstr "Ajustar la profundidad de sombras de las fotos" +#: ../../include/nav.php:276 +msgid "Add Apps" +msgstr "Añadir aplicaciones" -#: ../../view/theme/redbasic/php/config.php:135 -msgid "Set maximum width of content region in pixel" -msgstr "Ajustar la anchura máxima de la región de contenido, en pixels" +#: ../../include/photos.php:115 +#, php-format +msgid "Image exceeds website size limit of %lu bytes" +msgstr "La imagen excede el límite de %lu bytes del sitio" -#: ../../view/theme/redbasic/php/config.php:135 -msgid "Leave empty for default width" -msgstr "Dejar en blanco para la anchura predeterminada" +#: ../../include/photos.php:122 +msgid "Image file is empty." +msgstr "El fichero de imagen está vacío. " -#: ../../view/theme/redbasic/php/config.php:136 -msgid "Left align page content" -msgstr "Alinear a la izquierda el contenido de la página" +#: ../../include/photos.php:261 +msgid "Photo storage failed." +msgstr "La foto no ha podido ser guardada." -#: ../../view/theme/redbasic/php/config.php:137 -msgid "Set minimum opacity of nav bar - to hide it" -msgstr "Ajustar la opacidad mínima de la barra de navegación - para ocultarla" +#: ../../include/photos.php:301 +msgid "a new photo" +msgstr "una nueva foto" -#: ../../view/theme/redbasic/php/config.php:138 -msgid "Set size of conversation author photo" -msgstr "Ajustar el tamaño de la foto del autor de la conversación" +#: ../../include/photos.php:305 +#, php-format +msgctxt "photo_upload" +msgid "%1$s posted %2$s to %3$s" +msgstr "%1$s ha publicado %2$s en %3$s" -#: ../../view/theme/redbasic/php/config.php:139 -msgid "Set size of followup author photos" -msgstr "Ajustar el tamaño de foto de los seguidores del autor" +#: ../../include/photos.php:532 +msgid "Upload New Photos" +msgstr "Subir nuevas fotos" -#: ../../boot.php:1522 -#, php-format -msgid "Update %s failed. See error logs." -msgstr "La actualización %s ha fallado. Mire el informe de errores." +#: ../../include/zot.php:649 +msgid "Invalid data packet" +msgstr "Paquete de datos no válido" -#: ../../boot.php:1525 +#: ../../include/zot.php:665 +msgid "Unable to verify channel signature" +msgstr "No ha sido posible de verificar la firma del canal" + +#: ../../include/zot.php:2316 #, php-format -msgid "Update Error at %s" -msgstr "Error de actualización en %s" +msgid "Unable to verify site signature for %s" +msgstr "No ha sido posible de verificar la firma del sitio para %s" -#: ../../boot.php:1729 -msgid "Create an account to access services and applications" -msgstr "Crear una cuenta para acceder a los servicios y aplicaciones" +#: ../../include/zot.php:3722 +msgid "invalid target signature" +msgstr "La firma recibida no es válida" -#: ../../boot.php:1751 -msgid "Login/Email" -msgstr "Inicio de sesión / Correo electrónico" +#: ../../include/group.php:26 +msgid "" +"A deleted group with this name was revived. Existing item permissions " +"<strong>may</strong> apply to this group and any future members. If this is " +"not what you intended, please create another group with a different name." +msgstr "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente." -#: ../../boot.php:1752 -msgid "Password" -msgstr "Contraseña" +#: ../../include/group.php:268 +msgid "Add new connections to this privacy group" +msgstr "Añadir conexiones nuevas a este grupo de canales" -#: ../../boot.php:1753 -msgid "Remember me" -msgstr "Recordarme" +#: ../../include/group.php:309 +msgid "edit" +msgstr "editar" -#: ../../boot.php:1756 -msgid "Forgot your password?" -msgstr "¿Olvidó su contraseña?" +#: ../../include/group.php:332 +msgid "Edit group" +msgstr "Editar grupo" -#: ../../boot.php:2320 -msgid "toggle mobile" -msgstr "cambiar a modo móvil" +#: ../../include/group.php:333 +msgid "Add privacy group" +msgstr "Añadir un grupo de canales" -#: ../../boot.php:2475 -msgid "Website SSL certificate is not valid. Please correct." -msgstr "El certificado SSL del sitio web no es válido. Por favor, solucione el problema." +#: ../../include/group.php:334 +msgid "Channels not in any privacy group" +msgstr "Sin canales en ningún grupo" -#: ../../boot.php:2478 -#, php-format -msgid "[hubzilla] Website SSL error for %s" -msgstr "[hubzilla] Error SSL del sitio web en %s" +#: ../../include/connections.php:127 +msgid "New window" +msgstr "Nueva ventana" -#: ../../boot.php:2597 -msgid "Cron/Scheduled tasks not running." -msgstr "Las tareas del Planificador/Cron no están funcionando." +#: ../../include/connections.php:128 +msgid "Open the selected location in a different window or browser tab" +msgstr "Abrir la dirección seleccionada en una ventana o pestaña aparte" -#: ../../boot.php:2601 -#, php-format -msgid "[hubzilla] Cron tasks not running on %s" -msgstr "[hubzilla] Las tareas de Cron no están funcionando en %s" +#: ../../include/auth.php:148 +msgid "Logged out." +msgstr "Desconectado/a." + +#: ../../include/auth.php:275 +msgid "Failed authentication" +msgstr "Autenticación fallida." + +#: ../../include/help.php:33 +msgid "Help:" +msgstr "Ayuda:" + +#: ../../include/help.php:65 +msgid "Not Found" +msgstr "No encontrado" diff --git a/view/es-es/hstrings.php b/view/es-es/hstrings.php index c7c6a5822..506df7618 100644 --- a/view/es-es/hstrings.php +++ b/view/es-es/hstrings.php @@ -5,22 +5,6 @@ function string_plural_select_es_es($n){ return ($n != 1);; }} App::$rtl = 0; -App::$strings["Social Networking"] = "Redes sociales"; -App::$strings["Social - Mostly Public"] = "Social - Público en su mayor parte"; -App::$strings["Social - Restricted"] = "Social - Restringido"; -App::$strings["Social - Private"] = "Social - Privado"; -App::$strings["Community Forum"] = "Foro de discusión"; -App::$strings["Forum - Mostly Public"] = "Foro - Público en su mayor parte"; -App::$strings["Forum - Restricted"] = "Foro - Restringido"; -App::$strings["Forum - Private"] = "Foro - Privado"; -App::$strings["Feed Republish"] = "Republicar un \"feed\""; -App::$strings["Feed - Mostly Public"] = "Feed - Público en su mayor parte"; -App::$strings["Feed - Restricted"] = "Feed - Restringido"; -App::$strings["Special Purpose"] = "Propósito especial"; -App::$strings["Special - Celebrity/Soapbox"] = "Especial - Celebridad / Tribuna improvisada"; -App::$strings["Special - Group Repository"] = "Especial - Repositorio de grupo"; -App::$strings["Other"] = "Otro"; -App::$strings["Custom/Expert Mode"] = "Modo personalizado/experto"; App::$strings["Can view my channel stream and posts"] = "Pueden verse la actividad y publicaciones de mi canal"; App::$strings["Can send me their channel stream and posts"] = "Se me pueden enviar entradas y contenido de un canal"; App::$strings["Can view my default channel profile"] = "Puede verse mi perfil de canal predeterminado."; @@ -39,72 +23,201 @@ App::$strings["Can forward to all my channel connections via @+ mentions in post App::$strings["Can chat with me"] = "Se puede chatear conmigo"; App::$strings["Can source my public posts in derived channels"] = "Pueden utilizarse mis entradas públicas como origen de contenidos en canales derivados"; App::$strings["Can administer my channel"] = "Se puede administrar mi canal"; -App::$strings["parent"] = "padre"; -App::$strings["Collection"] = "Colección"; -App::$strings["Principal"] = "Principal"; -App::$strings["Addressbook"] = "Libreta de direcciones"; -App::$strings["Calendar"] = "Calendario"; -App::$strings["Schedule Inbox"] = "Programar bandeja de entrada"; -App::$strings["Schedule Outbox"] = "Programar bandeja de salida"; -App::$strings["Unknown"] = "Desconocido"; -App::$strings["Files"] = "Ficheros"; -App::$strings["Total"] = "Total"; -App::$strings["Shared"] = "Compartido"; +App::$strings["Social Networking"] = "Redes sociales"; +App::$strings["Social - Mostly Public"] = "Social - Público en su mayor parte"; +App::$strings["Social - Restricted"] = "Social - Restringido"; +App::$strings["Social - Private"] = "Social - Privado"; +App::$strings["Community Forum"] = "Foro de discusión"; +App::$strings["Forum - Mostly Public"] = "Foro - Público en su mayor parte"; +App::$strings["Forum - Restricted"] = "Foro - Restringido"; +App::$strings["Forum - Private"] = "Foro - Privado"; +App::$strings["Feed Republish"] = "Republicar un \"feed\""; +App::$strings["Feed - Mostly Public"] = "Feed - Público en su mayor parte"; +App::$strings["Feed - Restricted"] = "Feed - Restringido"; +App::$strings["Special Purpose"] = "Propósito especial"; +App::$strings["Special - Celebrity/Soapbox"] = "Especial - Celebridad / Tribuna improvisada"; +App::$strings["Special - Group Repository"] = "Especial - Repositorio de grupo"; +App::$strings["Other"] = "Otro"; +App::$strings["Custom/Expert Mode"] = "Modo personalizado/experto"; +App::$strings["Requested profile is not available."] = "El perfil solicitado no está disponible."; +App::$strings["Permission denied."] = "Acceso denegado."; +App::$strings["Block Name"] = "Nombre del bloque"; +App::$strings["Blocks"] = "Bloques"; +App::$strings["Block Title"] = "Título del bloque"; +App::$strings["Created"] = "Creado"; +App::$strings["Edited"] = "Editado"; App::$strings["Create"] = "Crear"; -App::$strings["Upload"] = "Subir"; -App::$strings["Name"] = "Nombre"; -App::$strings["Type"] = "Tipo"; -App::$strings["Size"] = "Tamaño"; -App::$strings["Last Modified"] = "Última modificación"; App::$strings["Edit"] = "Editar"; +App::$strings["Share"] = "Compartir"; App::$strings["Delete"] = "Eliminar"; -App::$strings["You are using %1\$s of your available file storage."] = "Está usando %1\$s de su espacio disponible para ficheros."; -App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s%)"] = "Está usando %1\$s de %2\$s que tiene a su disposición para ficheros. (%3\$s%)"; -App::$strings["WARNING:"] = "ATENCIÓN: "; -App::$strings["Please use DAV to upload large (video, audio) files.<br>See <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>"] = "Por favor, use DAV para subir ficheros de gran tamaño (vídeo, audio).<br>Mire en <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>"; -App::$strings["Create new folder"] = "Crear nueva carpeta"; -App::$strings["Upload file"] = "Subir fichero"; -App::$strings["Drop files here to immediately upload"] = "Arrastre los ficheros aquí para subirlos de forma inmediata"; +App::$strings["View"] = "Ver"; +App::$strings["Total invitation limit exceeded."] = "Se ha superado el límite máximo de invitaciones."; +App::$strings["%s : Not a valid email address."] = "%s : No es una dirección de correo electrónico válida. "; +App::$strings["Please join us on \$Projectname"] = "Únase a nosotros en \$Projectname"; +App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio."; +App::$strings["%s : Message delivery failed."] = "%s : Falló el envío del mensaje."; +App::$strings["%d message sent."] = array( + 0 => "%d mensajes enviados.", + 1 => "%d mensajes enviados.", +); +App::$strings["You have no more invitations available"] = "No tiene más invitaciones disponibles"; +App::$strings["Send invitations"] = "Enviar invitaciones"; +App::$strings["Enter email addresses, one per line:"] = "Introduzca las direcciones de correo electrónico, una por línea:"; +App::$strings["Your message:"] = "Su mensaje:"; +App::$strings["Please join my community on \$Projectname."] = "Por favor, únase a mi comunidad en \$Projectname."; +App::$strings["You will need to supply this invitation code:"] = "Tendrá que suministrar este código de invitación:"; +App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Regístrese en cualquier sitio de \$Projectname (están todos interconectados)"; +App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Introduzca mi dirección \$Projectname en la caja de búsqueda del sitio."; +App::$strings["or visit"] = "o visitar"; +App::$strings["3. Click [Connect]"] = "3. Pulse [conectar]"; +App::$strings["Submit"] = "Enviar"; +App::$strings["Item not found"] = "Elemento no encontrado"; +App::$strings["Layout Name"] = "Nombre de la plantilla"; +App::$strings["Layout Description (Optional)"] = "Descripción de la plantilla (opcional)"; +App::$strings["Edit Layout"] = "Modificar la plantilla"; App::$strings["Permission denied"] = "Permiso denegado"; -App::$strings["Permission denied."] = "Acceso denegado."; -App::$strings["Page not found."] = "Página no encontrada."; -App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo."; -App::$strings["Welcome %s. Remote authentication successful."] = "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente."; -App::$strings["Requested profile is not available."] = "El perfil solicitado no está disponible."; -App::$strings["Some blurb about what to do when you're new here"] = "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí"; +App::$strings["Invalid profile identifier."] = "Identificador del perfil no válido"; +App::$strings["Profile Visibility Editor"] = "Editor de visibilidad del perfil"; +App::$strings["Profile"] = "Perfil"; +App::$strings["Click on a contact to add or remove."] = "Pulsar en un contacto para añadirlo o eliminarlo."; +App::$strings["Visible To"] = "Visible para"; +App::$strings["All Connections"] = "Todas las conexiones"; +App::$strings["This site is not a directory server"] = "Este sitio no es un servidor de directorio"; +App::$strings["You must be logged in to see this page."] = "Debe haber iniciado sesión para poder ver esta página."; +App::$strings["Posts and comments"] = "Publicaciones y comentarios"; +App::$strings["Only posts"] = "Solo publicaciones"; +App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficientes. Petición redirigida a la página del perfil."; +App::$strings["Export Channel"] = "Exportar el canal"; +App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Exportar la información básica del canal a un fichero. Este equivale a una copia de seguridad de sus conexiones, el perfil y datos fundamentales, que puede usarse para importar sus datos a un nuevo servidor, pero no incluye su contenido."; +App::$strings["Export Content"] = "Exportar contenidos"; +App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exportar la información sobre su canal y el contenido reciente a un fichero de respaldo JSON, que puede ser restaurado o importado a otro servidor. Este fichero incluye todas sus conexiones, permisos, datos del perfil y publicaciones de varios meses. Puede llegar a ser MUY grande. Por favor, sea paciente, la descarga puede tardar varios minutos en comenzar."; +App::$strings["Export your posts from a given year."] = "Exporta sus publicaciones de un año dado."; +App::$strings["You may also export your posts and conversations for a particular year or month. Adjust the date in your browser location bar to select other dates. If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "También puede exportar sus mensajes y conversaciones durante un año o mes en particular. Ajuste la fecha en la barra de direcciones del navegador para seleccionar otras fechas. Si la exportación falla (posiblemente debido al agotamiento de la memoria del servidor hub), por favor, intente de nuevo la selección de un rango de fechas más pequeño."; +App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un año determinado, como este año, visite <a href=\"%1\$s\">%2\$s</a>"; +App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un mes determinado, como el de enero de este año, visite <a href=\"%1\$s\">%2\$s</a>"; +App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1\$s\">%2\$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)."; +App::$strings["Public access denied."] = "Acceso público denegado."; +App::$strings["Search"] = "Buscar"; +App::$strings["Items tagged with: %s"] = "elementos etiquetados con: %s"; +App::$strings["Search results for: %s"] = "Resultados de la búsqueda para: %s"; +App::$strings["Location not found."] = "Dirección no encontrada."; +App::$strings["Location lookup failed."] = "Ha fallado la búsqueda de la dirección."; +App::$strings["Please select another location to become primary before removing the primary location."] = "Por favor, seleccione una copia de su canal (un clon) para convertirlo en primario antes de eliminar su canal principal."; +App::$strings["Syncing locations"] = "Sincronizando ubicaciones"; +App::$strings["No locations found."] = "No encontrada ninguna dirección."; +App::$strings["Manage Channel Locations"] = "Gestionar las direcciones del canal"; +App::$strings["Location"] = "Ubicación"; +App::$strings["Address"] = "Dirección"; +App::$strings["Primary"] = "Primario"; +App::$strings["Drop"] = "Eliminar"; +App::$strings["Sync Now"] = "Sincronizar ahora"; +App::$strings["Please wait several minutes between consecutive operations."] = "Por favor, espere algunos minutos entre operaciones consecutivas."; +App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio web o \"hub\" y borrando su canal."; +App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo."; +App::$strings["Menu not found."] = "Menú no encontrado"; +App::$strings["Unable to create element."] = "No se puede crear el elemento."; +App::$strings["Unable to update menu element."] = "No es posible actualizar el elemento del menú."; +App::$strings["Unable to add menu element."] = "No es posible añadir el elemento al menú"; +App::$strings["Not found."] = "No encontrado."; +App::$strings["Menu Item Permissions"] = "Permisos del elemento del menú"; +App::$strings["(click to open/close)"] = "(pulsar para abrir o cerrar)"; +App::$strings["Link Name"] = "Nombre del enlace"; +App::$strings["Link or Submenu Target"] = "Destino del enlace o submenú"; +App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Introducir la dirección del enlace o seleccionar el nombre de un submenú"; +App::$strings["Use magic-auth if available"] = "Usar la autenticación mágica si está disponible"; +App::$strings["No"] = "No"; +App::$strings["Yes"] = "Sí"; +App::$strings["Open link in new window"] = "Abrir el enlace en una nueva ventana"; +App::$strings["Order in list"] = "Orden en la lista"; +App::$strings["Higher numbers will sink to bottom of listing"] = "Los números más altos irán al final de la lista"; +App::$strings["Submit and finish"] = "Enviar y terminar"; +App::$strings["Submit and continue"] = "Enviar y continuar"; +App::$strings["Menu:"] = "Menú:"; +App::$strings["Link Target"] = "Destino del enlace"; +App::$strings["Edit menu"] = "Editar menú"; +App::$strings["Edit element"] = "Editar el elemento"; +App::$strings["Drop element"] = "Eliminar el elemento"; +App::$strings["New element"] = "Nuevo elemento"; +App::$strings["Edit this menu container"] = "Modificar el contenedor del menú"; +App::$strings["Add menu element"] = "Añadir un elemento al menú"; +App::$strings["Delete this menu item"] = "Eliminar este elemento del menú"; +App::$strings["Edit this menu item"] = "Modificar este elemento del menú"; +App::$strings["Menu item not found."] = "Este elemento del menú no se ha encontrado"; +App::$strings["Menu item deleted."] = "Este elemento del menú ha sido borrado"; +App::$strings["Menu item could not be deleted."] = "Este elemento del menú no puede ser borrado."; +App::$strings["Edit Menu Element"] = "Editar elemento del menú"; +App::$strings["Link text"] = "Texto del enlace"; +App::$strings["Calendar entries imported."] = "Entradas de calendario importadas."; +App::$strings["No calendar entries found."] = "No se han encontrado entradas de calendario."; +App::$strings["Event can not end before it has started."] = "Un evento no puede terminar antes de que haya comenzado."; +App::$strings["Unable to generate preview."] = "No se puede crear la vista previa."; +App::$strings["Event title and start time are required."] = "Se requieren el título del evento y su hora de inicio."; +App::$strings["Event not found."] = "Evento no encontrado."; +App::$strings["event"] = "evento"; +App::$strings["Edit event title"] = "Editar el título del evento"; +App::$strings["Event title"] = "Título del evento"; +App::$strings["Required"] = "Obligatorio"; +App::$strings["Categories (comma-separated list)"] = "Temas (lista separada por comas)"; +App::$strings["Edit Category"] = "Modificar el tema"; +App::$strings["Category"] = "Tema"; +App::$strings["Edit start date and time"] = "Modificar la fecha y hora de comienzo"; +App::$strings["Start date and time"] = "Fecha y hora de comienzo"; +App::$strings["Finish date and time are not known or not relevant"] = "La fecha y hora de terminación no se conocen o no son relevantes"; +App::$strings["Edit finish date and time"] = "Modificar la fecha y hora de terminación"; +App::$strings["Finish date and time"] = "Fecha y hora de terminación"; +App::$strings["Adjust for viewer timezone"] = "Ajustar para obtener el visor de los husos horarios"; +App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales."; +App::$strings["Edit Description"] = "Editar la descripción"; +App::$strings["Description"] = "Descripción"; +App::$strings["Edit Location"] = "Modificar la dirección"; +App::$strings["Preview"] = "Previsualizar"; +App::$strings["Permission settings"] = "Configuración de permisos"; +App::$strings["Timezone:"] = "Zona horaria: "; +App::$strings["Advanced Options"] = "Opciones avanzadas"; +App::$strings["l, F j"] = "l j F"; +App::$strings["Edit event"] = "Editar evento"; +App::$strings["Delete event"] = "Borrar evento"; +App::$strings["Link to Source"] = "Enlazar con la entrada en su ubicación original"; +App::$strings["calendar"] = "calendario"; +App::$strings["Edit Event"] = "Editar el evento"; +App::$strings["Create Event"] = "Crear un evento"; +App::$strings["Previous"] = "Anterior"; +App::$strings["Next"] = "Siguiente"; +App::$strings["Export"] = "Exportar"; +App::$strings["Month"] = "Mes"; +App::$strings["Week"] = "Semana"; +App::$strings["Day"] = "Día"; +App::$strings["Today"] = "Hoy"; +App::$strings["Event removed"] = "Evento borrado"; +App::$strings["Failed to remove event"] = "Error al eliminar el evento"; App::$strings["App installed."] = "Aplicación instalada."; App::$strings["Malformed app."] = "Aplicación con errores"; App::$strings["Embed code"] = "Código incorporado"; App::$strings["Edit App"] = "Modificar la aplicación"; App::$strings["Create App"] = "Crear una aplicación"; App::$strings["Name of app"] = "Nombre de la aplicación"; -App::$strings["Required"] = "Obligatorio"; App::$strings["Location (URL) of app"] = "Dirección (URL) de la aplicación"; -App::$strings["Description"] = "Descripción"; App::$strings["Photo icon URL"] = "Dirección del icono"; App::$strings["80 x 80 pixels - optional"] = "80 x 80 pixels - opcional"; App::$strings["Categories (optional, comma separated list)"] = "Temas (opcional, lista separada por comas)"; App::$strings["Version ID"] = "Versión"; App::$strings["Price of app"] = "Precio de la aplicación"; App::$strings["Location (URL) to purchase app"] = "Dirección (URL) donde adquirir la aplicación"; -App::$strings["Submit"] = "Enviar"; -App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Se ha superado el límite máximo de inscripciones diarias de este sitio. Por favor, pruebe de nuevo mañana."; -App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Por favor, confirme que acepta los Términos del servicio. El registro ha fallado."; -App::$strings["Passwords do not match."] = "Las contraseñas no coinciden."; -App::$strings["Registration successful. Please check your email for validation instructions."] = "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo."; -App::$strings["Your registration is pending approval by the site owner."] = "Su registro está pendiente de aprobación por el propietario del sitio."; -App::$strings["Your registration can not be processed."] = "Su registro no puede ser procesado."; -App::$strings["Registration on this hub is disabled."] = "El registro está deshabilitado en este sitio."; -App::$strings["Registration on this hub is by approval only."] = "El registro en este hub está sometido a aprobación previa."; -App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registrarse en otro hub afiliado.</a>"; -App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana."; -App::$strings["Terms of Service"] = "Términos del servicio"; -App::$strings["I accept the %s for this website"] = "Acepto los %s de este sitio"; -App::$strings["I am over 13 years of age and accept the %s for this website"] = "Tengo más de 13 años de edad y acepto los %s de este sitio"; -App::$strings["Your email address"] = "Su dirección de correo electrónico"; -App::$strings["Choose a password"] = "Elija una contraseña"; -App::$strings["Please re-enter your password"] = "Por favor, vuelva a escribir su contraseña"; -App::$strings["Please enter your invitation code"] = "Por favor, introduzca el código de su invitación"; +App::$strings["Please login."] = "Por favor, inicie sesión."; +App::$strings["Hub not found."] = "Servidor no encontrado"; +App::$strings["photo"] = "foto"; +App::$strings["status"] = "el mensaje de estado"; +App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está siguiendo %3\$s de %2\$s"; +App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s ha dejado de seguir %3\$s de %2\$s"; +App::$strings["Nothing to import."] = "No hay nada para importar."; +App::$strings["Unable to download data from old server"] = "No se han podido descargar datos de su antiguo servidor"; +App::$strings["Imported file is empty."] = "El fichero importado está vacío."; +App::$strings["Warning: Database versions differ by %1\$d updates."] = "Atención: Las versiones de la base de datos difieren en %1\$d actualizaciones."; +App::$strings["Import completed"] = "Importación completada"; +App::$strings["Import Items"] = "Importar elementos"; +App::$strings["Use this form to import existing posts and content from an export file."] = "Utilice este formulario para importar entradas existentes y contenido desde un archivo de exportación."; +App::$strings["File to Upload"] = "Fichero para subir"; +App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Ha creado %1$.0f de %2$.0f canales permitidos."; App::$strings["Name or caption"] = "Nombre o descripción"; App::$strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\""] = "Ejemplos: \"Juan García\", \"Luisa y sus caballos\", \"Fútbol\", \"Grupo de aviación\""; App::$strings["Choose a short nickname"] = "Elija un alias corto"; @@ -112,50 +225,117 @@ App::$strings["Your nickname will be used to create an easy to remember channel App::$strings["Channel role and privacy"] = "Clase de canal y privacidad"; App::$strings["Select a channel role with your privacy requirements."] = "Seleccione un tipo de canal con sus requisitos de privacidad"; App::$strings["Read more about roles"] = "Leer más sobre los roles"; -App::$strings["no"] = "no"; -App::$strings["yes"] = "sí"; -App::$strings["Registration"] = "Registro"; -App::$strings["Membership on this site is by invitation only."] = "Para registrarse en este sitio es necesaria una invitación."; -App::$strings["Register"] = "Registrarse"; -App::$strings["This site may require email verification after submitting this form. If you are returned to a login page, please check your email for instructions."] = "Este sitio puede requerir una verificación de correo electrónico después de enviar este formulario. Si es devuelto a una página de inicio de sesión, compruebe su email para recibir y leer las instrucciones."; -App::$strings["Fetching URL returns error: %1\$s"] = "Al intentar obtener la dirección, retorna el error: %1\$s"; -App::$strings["Authentication failed."] = "Falló la autenticación."; -App::$strings["Remote Authentication"] = "Acceso desde su servidor"; -App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)"; -App::$strings["Authenticate"] = "Acceder"; -App::$strings["Nothing to import."] = "No hay nada para importar."; -App::$strings["Unable to download data from old server"] = "No se han podido descargar datos de su antiguo servidor"; -App::$strings["Imported file is empty."] = "El fichero importado está vacío."; -App::$strings["Warning: Database versions differ by %1\$d updates."] = "Atención: Las versiones de la base de datos difieren en %1\$d actualizaciones."; -App::$strings["Your service plan only allows %d channels."] = "Su paquete de servicios solo permite %d canales."; -App::$strings["No channel. Import failed."] = "No hay canal. La importación ha fallado"; -App::$strings["Import completed."] = "Importación completada."; -App::$strings["You must be logged in to use this feature."] = "Debe estar registrado para poder usar esta funcionalidad."; -App::$strings["Import Channel"] = "Importar canal"; -App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación."; -App::$strings["File to Upload"] = "Fichero para subir"; -App::$strings["Or provide the old server/hub details"] = "O proporcione los detalles de su antiguo servidor/hub"; -App::$strings["Your old identity address (xyz@example.com)"] = "Su identidad en el antiguo servidor (canal@ejemplo.com)"; -App::$strings["Your old login email address"] = "Su antigua dirección de correo electrónico"; -App::$strings["Your old login password"] = "Su antigua contraseña"; -App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua dirección debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos."; -App::$strings["Make this hub my primary location"] = "Convertir este servidor en mi ubicación primaria"; -App::$strings["Move this channel (disable all previous locations)"] = "Mover este canal (desactivar todas las ubicaciones anteriores)"; -App::$strings["Import a few months of posts if possible (limited by available memory"] = "Importar unos meses de mensajes si es posible (limitado por la memoria disponible"; -App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine."; -App::$strings["Away"] = "Ausente"; -App::$strings["Online"] = "Conectado/a"; -App::$strings["Documentation Search"] = "Búsqueda de Documentación"; -App::$strings["About"] = "Mi perfil"; -App::$strings["Members"] = "Miembros"; -App::$strings["Administrators"] = "Administradores"; -App::$strings["Developers"] = "Desarrolladores"; -App::$strings["Tutorials"] = "Tutoriales"; -App::$strings["\$Projectname Documentation"] = "Documentación de \$Projectname"; -App::$strings["Contents"] = "Contenidos"; -App::$strings["Bookmark added"] = "Marcador añadido"; -App::$strings["My Bookmarks"] = "Mis marcadores"; -App::$strings["My Connections Bookmarks"] = "Marcadores de mis conexiones"; +App::$strings["Create Channel"] = "Crear un canal"; +App::$strings["A channel is your identity on this network. It can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions."] = "Un canal es su identidad en esta red. Puede representar a una persona, un blog o un foro, por nombrar unos pocos ejemplos. Los canales se pueden conectar con otros canales para compartir información con una gama de permisos extremadamente detallada."; +App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "O <a href=\"import\">importar un canal existente</a> desde otro lugar."; +App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "La eliminación de canales no está permitida hasta pasadas 48 horas desde el último cambio de contraseña."; +App::$strings["Remove This Channel"] = "Eliminar este canal"; +App::$strings["WARNING: "] = "ATENCIÓN:"; +App::$strings["This channel will be completely removed from the network. "] = "Este canal va a ser completamente eliminado de la red. "; +App::$strings["This action is permanent and can not be undone!"] = "¡Esta acción tiene carácter definitivo y no se puede deshacer!"; +App::$strings["Please enter your password for verification:"] = "Por favor, introduzca su contraseña para su verificación:"; +App::$strings["Remove this channel and all its clones from the network"] = "Eliminar este canal y todos sus clones de la red"; +App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red"; +App::$strings["Remove Channel"] = "Eliminar el canal"; +App::$strings["Files: shared with me"] = "Ficheros: compartidos conmigo"; +App::$strings["Name"] = "Nombre"; +App::$strings["NEW"] = "NUEVO"; +App::$strings["Size"] = "Tamaño"; +App::$strings["Last Modified"] = "Última modificación"; +App::$strings["Remove all files"] = "Eliminar todos los ficheros"; +App::$strings["Remove this file"] = "Eliminar este fichero"; +App::$strings["\$Projectname Server - Setup"] = "Servidor \$Projectname - Instalación"; +App::$strings["Could not connect to database."] = "No se ha podido conectar a la base de datos."; +App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "No se puede conectar con la dirección del sitio indicada. Podría tratarse de un problema de SSL o DNS."; +App::$strings["Could not create table."] = "No se puede crear la tabla."; +App::$strings["Your site database has been installed."] = "La base de datos del sitio ha sido instalada."; +App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Podría tener que importar manualmente el fichero \"install/schema_xxx.sql\" usando un cliente de base de datos."; +App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Por favor, lea el fichero \"install/INSTALL.txt\"."; +App::$strings["System check"] = "Verificación del sistema"; +App::$strings["Check again"] = "Verificar de nuevo"; +App::$strings["Database connection"] = "Conexión a la base de datos"; +App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Para instalar \$Projectname es necesario saber cómo conectar con su base de datos."; +App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Por favor, contacte con el proveedor de servicios o el administrador del sitio si tiene dudas sobre estos ajustes."; +App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de datos que especifique a continuación debe existir ya. Si no es así, por favor, créela antes de seguir."; +App::$strings["Database Server Name"] = "Nombre del servidor de base de datos"; +App::$strings["Default is 127.0.0.1"] = "De forma predeterminada es 127.0.0.1"; +App::$strings["Database Port"] = "Puerto de la base de datos"; +App::$strings["Communication port number - use 0 for default"] = "Número del puerto de comunicaciones - use 0 como valor por defecto"; +App::$strings["Database Login Name"] = "Usuario de la base de datos"; +App::$strings["Database Login Password"] = "Contraseña de acceso a la base de datos"; +App::$strings["Database Name"] = "Nombre de la base de datos"; +App::$strings["Database Type"] = "Tipo de base de datos"; +App::$strings["Site administrator email address"] = "Dirección de correo electrónico del administrador del sitio"; +App::$strings["Your account email address must match this in order to use the web admin panel."] = "Su cuenta deberá usar la misma dirección de correo electrónico para poder utilizar el panel de administración web."; +App::$strings["Website URL"] = "Dirección del sitio web"; +App::$strings["Please use SSL (https) URL if available."] = "Por favor, use SSL (https) si está disponible."; +App::$strings["Please select a default timezone for your website"] = "Por favor, selecciones el huso horario por defecto de su sitio web"; +App::$strings["Basic/Minimal Social Networking"] = "Red social básica o mínima"; +App::$strings["Standard Configuration (default)"] = "Configuración estándar (por defecto)"; +App::$strings["Professional"] = "Profesional"; +App::$strings["Site settings"] = "Ajustes del sitio"; +App::$strings["Server Configuration/Role"] = "Configuración del servidor"; +App::$strings["PHP version 5.5 or greater is required."] = "Se requiere la versión 5.5, o superior, de PHP."; +App::$strings["PHP version"] = "Versión de PHP"; +App::$strings["Could not find a command line version of PHP in the web server PATH."] = "No se puede encontrar una versión en línea de comandos de PHP en la ruta del servidor web."; +App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Si no tiene instalada la versión de línea de comandos de PHP en su servidor, no podrá realizar envíos en segundo plano mediante cron."; +App::$strings["PHP executable path"] = "Ruta del ejecutable PHP"; +App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Introducir la ruta completa del ejecutable PHP. Puede dejar la línea en blanco para continuar la instalación."; +App::$strings["Command line PHP"] = "PHP en línea de comandos"; +App::$strings["Unable to check command line PHP, as shell_exec() is disabled. This is required."] = "No se puede comprobar la línea de comandos PHP, ya que shell_exec() está deshabilitado. Es necesario que esté activado."; +App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La línea de comandos PHP de su sistema no tiene activado \"register_argc_argv\"."; +App::$strings["This is required for message delivery to work."] = "Esto es necesario para que funcione la transmisión de mensajes."; +App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv"; +App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "La carga máxima que se le permite subir está establecida en %s. El tamaño máximo de un fichero está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez."; +App::$strings["You can adjust these settings in the server php.ini file."] = "Puede ajustar estos valores en el fichero php.ini de su servidor."; +App::$strings["PHP upload limits"] = "Límites PHP de subida"; +App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado."; +App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si está en un servidor Windows, por favor, lea \"http://www.php.net/manual/en/openssl.installation.php\"."; +App::$strings["Generate encryption keys"] = "Generar claves de cifrado"; +App::$strings["libCurl PHP module"] = "módulo libCurl PHP"; +App::$strings["GD graphics PHP module"] = "módulo PHP GD graphics"; +App::$strings["OpenSSL PHP module"] = "módulo PHP OpenSSL"; +App::$strings["PDO database PHP module"] = "Módulo PHP de la base de datos PDO "; +App::$strings["mb_string PHP module"] = "módulo PHP mb_string"; +App::$strings["xml PHP module"] = "módulo PHP xml"; +App::$strings["Apache mod_rewrite module"] = "módulo Apache mod_rewrite "; +App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado."; +App::$strings["exec"] = "ejecutable"; +App::$strings["Error: exec is required but is either not installed or has been disabled in php.ini"] = "Error: se necesita un ejecutable pero o no se instaló o está deshabilitado en php.ini"; +App::$strings["shell_exec"] = "shell_exec"; +App::$strings["Error: shell_exec is required but is either not installed or has been disabled in php.ini"] = "Error: se necesita shell_exec pero o no se instaló o está deshabilitado en php.ini"; +App::$strings["Error: libCURL PHP module required but not installed."] = "Error: se necesita el módulo PHP libCURL pero no está instalado."; +App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: el módulo PHP GD graphics es necesario, pero no está instalado."; +App::$strings["Error: openssl PHP module required but not installed."] = "Error: el módulo PHP openssl es necesario, pero no está instalado."; +App::$strings["Error: PDO database PHP module required but not installed."] = "Error: se necesita el módulo PHP de la base de datos PDO, pero no está instalado."; +App::$strings["Error: mb_string PHP module required but not installed."] = "Error: el módulo PHP mb_string es necesario, pero no está instalado."; +App::$strings["Error: xml PHP module required for DAV but not installed."] = "Error: el módulo PHP xml es necesario para DAV, pero no está instalado."; +App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor."; +App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos."; +App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Al término de este procedimiento, podemos crear un fichero de texto para guardar con el nombre .htconfig.php en el directorio raíz de su instalación de Hubzilla."; +App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Como alternativa, puede dejar este procedimiento e intentar realizar una instalación manual. Lea, por favor, el fichero\"install/INSTALL.txt\" para las instrucciones."; +App::$strings[".htconfig.php is writable"] = ".htconfig.php tiene permisos de escritura"; +App::$strings["This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Este software hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 compila las plantillas a PHP para acelerar la renderización."; +App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal."; +App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data)."; +App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene."; +App::$strings["%s is writable"] = "%s tiene permisos de escritura"; +App::$strings["This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder"] = "Este software utiliza el directorio de almacenamiento para guardar los ficheros subidos. El servidor web debe tener acceso de escritura a este directorio en la carpeta de nivel superior"; +App::$strings["store is writable"] = "\"store\" tiene permisos de escritura"; +App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio."; +App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo."; +App::$strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Se ha incorporado esta restricción para evitar que sus entradas públicas hagan referencia a imágenes en su propio servidor."; +App::$strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Si su certificado no ha sido reconocido, los miembros de otros sitios (con certificados válidos) recibirán mensajes de aviso en sus propios sitios web."; +App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Por razones de compatibilidad (sobre el conjunto de la red, no solo sobre su propio sitio), debemos insistir en estos requisitos."; +App::$strings["Providers are available that issue free certificates which are browser-valid."] = "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos."; +App::$strings["If you are confident that the certificate is valid and signed by a trusted authority, check to see if you have failed to install an intermediate cert. These are not normally required by browsers, but are required for server-to-server communications."] = "Si se tiene la certeza de que el certificado es válido y está firmado por una autoridad de confianza, comprobar para ver si hubo un error al instalar un certificado intermedio. Estos no son normalmente requeridos por los navegadores, pero son necesarios para las comunicaciones de servidor a servidor."; +App::$strings["SSL certificate validation"] = "validación del certificado SSL"; +App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:"; +App::$strings["Url rewrite is working"] = "La reescritura de las direcciones funciona correctamente"; +App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor."; +App::$strings["Errors encountered creating database tables."] = "Se han encontrado errores al crear las tablas de la base de datos."; +App::$strings["<h1>What next</h1>"] = "<h1>Siguiente paso</h1>"; +App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Debe crear [manualmente] una tarea programada para el \"poller\"."; App::$strings["Continue"] = "Continuar"; App::$strings["Premium Channel Setup"] = "Configuración del canal premium"; App::$strings["Enable premium channel connection restrictions"] = "Habilitar restricciones de conexión del canal premium"; @@ -165,156 +345,57 @@ App::$strings["Potential connections will then see the following text before pro App::$strings["By continuing, I certify that I have complied with any instructions provided on this page."] = "Al continuar, certifico que he cumplido con todas las instrucciones proporcionadas en esta página."; App::$strings["(No specific instructions have been provided by the channel owner.)"] = "(No ha sido proporcionada ninguna instrucción específica por el propietario del canal.)"; App::$strings["Restricted or Premium Channel"] = "Canal premium o restringido"; -App::$strings["Item not found."] = "Elemento no encontrado."; -App::$strings["# Accounts"] = "# Cuentas"; -App::$strings["# blocked accounts"] = "# cuentas bloqueadas"; -App::$strings["# expired accounts"] = "# cuentas caducadas"; -App::$strings["# expiring accounts"] = "# cuentas que caducan"; -App::$strings["# Channels"] = "# Canales"; -App::$strings["# primary"] = "# primario"; -App::$strings["# clones"] = "# clones"; -App::$strings["Message queues"] = "Mensajes en cola"; -App::$strings["Your software should be updated"] = "Debe actualizar su software"; -App::$strings["Administration"] = "Administración"; -App::$strings["Summary"] = "Sumario"; -App::$strings["Registered accounts"] = "Cuentas registradas"; -App::$strings["Pending registrations"] = "Registros pendientes"; -App::$strings["Registered channels"] = "Canales registrados"; -App::$strings["Active plugins"] = "Extensiones (plugins) activas"; -App::$strings["Version"] = "Versión"; -App::$strings["Repository version (master)"] = "Versión del repositorio (master)"; -App::$strings["Repository version (dev)"] = "Versión del repositorio (dev)"; -App::$strings["Item not found"] = "Elemento no encontrado"; -App::$strings["Block Name"] = "Nombre del bloque"; -App::$strings["Insert web link"] = "Insertar enlace web"; -App::$strings["Title (optional)"] = "Título (opcional)"; -App::$strings["Edit Block"] = "Modificar este bloque"; -App::$strings["Invalid item."] = "Elemento no válido."; -App::$strings["Channel not found."] = "Canal no encontrado."; -App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; -App::$strings["Save to Folder:"] = "Guardar en carpeta:"; -App::$strings["- select -"] = "- seleccionar -"; -App::$strings["Save"] = "Guardar"; -App::$strings["sent you a private message"] = "le ha enviado un mensaje privado"; -App::$strings["added your channel"] = "añadió este canal a sus conexiones"; -App::$strings["g A l F d"] = "g A l d F"; -App::$strings["[today]"] = "[hoy]"; -App::$strings["posted an event"] = "publicó un evento"; -App::$strings["Blocked"] = "Bloqueadas"; -App::$strings["Ignored"] = "Ignoradas"; -App::$strings["Hidden"] = "Ocultas"; -App::$strings["Archived"] = "Archivadas"; -App::$strings["New"] = "Nuevas"; -App::$strings["All"] = "Todos/as"; -App::$strings["New Connections"] = "Nuevas conexiones"; -App::$strings["Show pending (new) connections"] = "Mostrar conexiones (nuevas) pendientes"; -App::$strings["All Connections"] = "Todas las conexiones"; -App::$strings["Show all connections"] = "Mostrar todas las conexiones"; -App::$strings["Only show blocked connections"] = "Mostrar solo las conexiones bloqueadas"; -App::$strings["Only show ignored connections"] = "Mostrar solo conexiones ignoradas"; -App::$strings["Only show archived connections"] = "Mostrar solo las conexiones archivadas"; -App::$strings["Only show hidden connections"] = "Mostrar solo las conexiones ocultas"; -App::$strings["Pending approval"] = "Pendiente de aprobación"; -App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]"; -App::$strings["Edit connection"] = "Editar conexión"; -App::$strings["Delete connection"] = "Eliminar conexión"; -App::$strings["Channel address"] = "Dirección del canal"; -App::$strings["Network"] = "Red"; -App::$strings["Call"] = "Llamar"; -App::$strings["Status"] = "Estado"; -App::$strings["Connected"] = "Conectado/a"; -App::$strings["Approve connection"] = "Aprobar esta conexión"; -App::$strings["Approve"] = "Aprobar"; -App::$strings["Ignore connection"] = "Ignorar esta conexión"; -App::$strings["Ignore"] = "Ignorar"; -App::$strings["Recent activity"] = "Actividad reciente"; -App::$strings["Connections"] = "Conexiones"; -App::$strings["Search"] = "Buscar"; -App::$strings["Search your connections"] = "Buscar sus conexiones"; -App::$strings["Connections search"] = "Buscar conexiones"; -App::$strings["Find"] = "Encontrar"; -App::$strings["Image uploaded but image cropping failed."] = "Imagen actualizada, pero el recorte de la imagen ha fallado. "; -App::$strings["Cover Photos"] = "Imágenes de portada del perfil"; -App::$strings["Image resize failed."] = "El ajuste del tamaño de la imagen ha fallado."; -App::$strings["Unable to process image"] = "No ha sido posible procesar la imagen"; -App::$strings["Image upload failed."] = "La carga de la imagen ha fallado."; -App::$strings["Unable to process image."] = "No ha sido posible procesar la imagen."; -App::$strings["female"] = "mujer"; -App::$strings["%1\$s updated her %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["male"] = "hombre"; -App::$strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s"; -App::$strings["cover photo"] = "Imagen de portada del perfil"; -App::$strings["Photo not available."] = "Foto no disponible."; -App::$strings["Upload File:"] = "Subir fichero:"; -App::$strings["Select a profile:"] = "Seleccionar un perfil:"; -App::$strings["Upload Cover Photo"] = "Subir imagen de portada del perfil"; -App::$strings["or"] = "o"; -App::$strings["skip this step"] = "Omitir este paso"; -App::$strings["select a photo from your photo albums"] = "Seleccione una foto de sus álbumes de fotos"; -App::$strings["Crop Image"] = "Recortar imagen"; -App::$strings["Please adjust the image cropping for optimum viewing."] = "Por favor ajuste el recorte de la imagen para una visión óptima."; -App::$strings["Done Editing"] = "Edición completada"; +App::$strings["Queue Statistics"] = "Estadísticas de la cola"; +App::$strings["Total Entries"] = "Total de entradas"; +App::$strings["Priority"] = "Prioridad"; +App::$strings["Destination URL"] = "Dirección de destino"; +App::$strings["Mark hub permanently offline"] = "Marcar el servidor como permanentemente fuera de línea"; +App::$strings["Empty queue for this hub"] = "Vaciar la cola para este servidor"; +App::$strings["Last known contact"] = "Último contacto conocido"; App::$strings["Off"] = "Desactivado"; App::$strings["On"] = "Activado"; App::$strings["Lock feature %s"] = "Bloquear la funcionalidad %s"; App::$strings["Manage Additional Features"] = "Gestionar las funcionalidades"; -App::$strings["Log settings updated."] = "Actualizado el informe de configuraciones."; -App::$strings["Logs"] = "Informes"; -App::$strings["Clear"] = "Vaciar"; -App::$strings["Debugging"] = "Depuración"; -App::$strings["Log file"] = "Fichero de informe"; -App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio web principal."; -App::$strings["Log level"] = "Nivel de depuración"; -App::$strings["New Profile Field"] = "Nuevo campo en el perfil"; -App::$strings["Field nickname"] = "Alias del campo"; -App::$strings["System name of field"] = "Nombre del campo en el sistema"; -App::$strings["Input type"] = "Tipo de entrada"; -App::$strings["Field Name"] = "Nombre del campo"; -App::$strings["Label on profile pages"] = "Etiqueta a mostrar en la página del perfil"; -App::$strings["Help text"] = "Texto de ayuda"; -App::$strings["Additional info (optional)"] = "Información adicional (opcional)"; -App::$strings["Field definition not found"] = "Definición del campo no encontrada"; -App::$strings["Edit Profile Field"] = "Modificar el campo del perfil"; -App::$strings["Profile Fields"] = "Campos del perfil"; -App::$strings["Basic Profile Fields"] = "Campos básicos del perfil"; -App::$strings["Advanced Profile Fields"] = "Campos avanzados del perfil"; -App::$strings["(In addition to basic fields)"] = "(Además de los campos básicos)"; -App::$strings["All available fields"] = "Todos los campos disponibles"; -App::$strings["Custom Fields"] = "Campos personalizados"; -App::$strings["Create Custom Field"] = "Crear un campo personalizado"; -App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "De forma predeterminada, el HTML sin filtrar está permitido en el contenido multimedia incorporado en una publicación. Esto es siempre inseguro."; -App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "La configuración recomendada es que sólo se permita HTML sin filtrar desde los siguientes sitios: "; -App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"; -App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "El resto del contenido incrustado se filtrará, <strong>excepto</ strong> si el contenido incorporado desde ese sitio está bloqueado de forma explícita."; -App::$strings["Security"] = "Seguridad"; -App::$strings["Block public"] = "Bloquear páginas públicas"; -App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado."; -App::$strings["Set \"Transport Security\" HTTP header"] = "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP"; -App::$strings["Set \"Content Security Policy\" HTTP header"] = "Habilitar la \"Política de seguridad del contenido\" (\"Content Security Policy\") en la cabecera HTTP"; -App::$strings["Allowed email domains"] = "Se aceptan dominios de correo electrónico"; -App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. "; -App::$strings["Not allowed email domains"] = "No se permiten dominios de correo electrónico"; -App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado."; -App::$strings["Allow communications only from these sites"] = "Permitir la comunicación solo desde estos sitios"; -App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"; -App::$strings["Block communications from these sites"] = "Bloquear la comunicación desde estos sitios"; -App::$strings["Allow communications only from these channels"] = "Permitir la comunicación solo desde estos canales"; -App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"; -App::$strings["Block communications from these channels"] = "Bloquear la comunicación desde estos canales"; -App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Sólo se permite contenido multimedia incorporado desde sitios y enlaces seguros (SSL)."; -App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Permitir contenido HTML sin filtrar sólo desde estos dominios "; -App::$strings["One site per line. By default embedded content is filtered."] = "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada."; -App::$strings["Block embedded HTML from these domains"] = "Bloquear contenido con HTML incorporado desde estos dominios"; -App::$strings["Password changed for account %d."] = "Ha cambiado la contraseña para la cuenta %d."; -App::$strings["Account settings updated."] = "Se han actualizado los ajustes de la cuenta."; -App::$strings["Account not found."] = "No se ha encontrado la cuenta."; -App::$strings["Account Edit"] = "Editar la cuenta"; -App::$strings["New Password"] = "Nueva contraseña"; -App::$strings["New Password again"] = "Nueva contraseña otra vez"; -App::$strings["Technical skill level"] = "Nivel de habilidad técnica"; -App::$strings["Account language (for emails)"] = "Idioma de la cuenta (para los correos electrónicos)"; -App::$strings["Service class"] = "Clase de servicio"; +App::$strings["Update has been marked successful"] = "La actualización ha sido marcada como exitosa"; +App::$strings["Executing %s failed. Check system logs."] = "La ejecución de %s ha fallado. Mirar en los informes del sistema."; +App::$strings["Update %s was successfully applied."] = "La actualización de %s se ha realizado exitosamente."; +App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "La actualización de %s no ha devuelto ningún estado. No se sabe si ha tenido éxito."; +App::$strings["Update function %s could not be found."] = "No se encuentra la función de actualización de %s."; +App::$strings["No failed updates."] = "No ha fallado ninguna actualización."; +App::$strings["Failed Updates"] = "Han fallado las actualizaciones"; +App::$strings["Mark success (if update was manually applied)"] = "Marcar como exitosa (si la actualización se ha hecho manualmente)"; +App::$strings["Attempt to execute this update step automatically"] = "Intentar ejecutar este paso de actualización automáticamente"; +App::$strings["Item not found."] = "Elemento no encontrado."; +App::$strings["Plugin %s disabled."] = "Extensión %s desactivada."; +App::$strings["Plugin %s enabled."] = "Extensión %s activada."; +App::$strings["Disable"] = "Desactivar"; +App::$strings["Enable"] = "Activar"; +App::$strings["Administration"] = "Administración"; +App::$strings["Plugins"] = "Extensiones (plugins)"; +App::$strings["Toggle"] = "Cambiar"; +App::$strings["Settings"] = "Ajustes"; +App::$strings["Author: "] = "Autor:"; +App::$strings["Maintainer: "] = "Mantenedor:"; +App::$strings["Minimum project version: "] = "Versión mínima del proyecto:"; +App::$strings["Maximum project version: "] = "Versión máxima del proyecto:"; +App::$strings["Minimum PHP version: "] = "Versión mínima de PHP:"; +App::$strings["Compatible Server Roles: "] = "Configuraciones compatibles con este servidor:"; +App::$strings["Requires: "] = "Se requiere:"; +App::$strings["Disabled - version incompatibility"] = "Deshabilitado - versiones incompatibles"; +App::$strings["Enter the public git repository URL of the plugin repo."] = "Escriba la URL pública del repositorio git del plugin."; +App::$strings["Plugin repo git URL"] = "URL del repositorio git del plugin"; +App::$strings["Custom repo name"] = "Nombre personalizado del repositorio"; +App::$strings["(optional)"] = "(opcional)"; +App::$strings["Download Plugin Repo"] = "Descargar el repositorio"; +App::$strings["Install new repo"] = "Instalar un nuevo repositorio"; +App::$strings["Install"] = "Instalar"; +App::$strings["Cancel"] = "Cancelar"; +App::$strings["Manage Repos"] = "Gestionar los repositorios"; +App::$strings["Installed Plugin Repositories"] = "Repositorios de los plugins instalados"; +App::$strings["Install a New Plugin Repository"] = "Instalar un nuevo repositorio de plugins"; +App::$strings["Update"] = "Actualizar"; +App::$strings["Switch branch"] = "Cambiar la rama"; +App::$strings["Remove"] = "Eliminar"; App::$strings["%s account blocked/unblocked"] = array( 0 => "%s cuenta bloqueada/desbloqueada", 1 => "%s cuenta bloqueada/desbloqueada", @@ -333,6 +414,7 @@ App::$strings["Registrations waiting for confirm"] = "Inscripciones en espera de App::$strings["Request date"] = "Fecha de solicitud"; App::$strings["Email"] = "Correo electrónico"; App::$strings["No registrations."] = "Sin registros."; +App::$strings["Approve"] = "Aprobar"; App::$strings["Deny"] = "Rechazar"; App::$strings["Block"] = "Bloquear"; App::$strings["Unblock"] = "Desbloquear"; @@ -344,6 +426,13 @@ App::$strings["Expires"] = "Caduca"; App::$strings["Service Class"] = "Clase de servicio"; App::$strings["Selected accounts will be deleted!\\n\\nEverything these accounts had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡Las cuentas seleccionadas van a ser eliminadas!\\n\\n¡Todo lo que estas cuentas han publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"; App::$strings["The account {0} will be deleted!\\n\\nEverything this account has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "¡La cuenta {0} va a ser eliminada!\\n\\n¡Todo lo que esta cuenta ha publicado en este sitio será borrado de forma permanente!\\n\\n¿Está seguro de querer hacerlo?"; +App::$strings["Log settings updated."] = "Actualizado el informe de configuraciones."; +App::$strings["Logs"] = "Informes"; +App::$strings["Clear"] = "Vaciar"; +App::$strings["Debugging"] = "Depuración"; +App::$strings["Log file"] = "Fichero de informe"; +App::$strings["Must be writable by web server. Relative to your top-level webserver directory."] = "Debe tener permisos de escritura por el servidor web. La ruta es relativa al directorio web principal."; +App::$strings["Log level"] = "Nivel de depuración"; App::$strings["%s channel censored/uncensored"] = array( 0 => "%s canales censurados/no censurados", 1 => "%s canales censurados/no censurados", @@ -369,41 +458,25 @@ App::$strings["Allow Code"] = "Permitir código"; App::$strings["Disallow Code"] = "No permitir código"; App::$strings["Channel"] = "Canal"; App::$strings["UID"] = "UID"; -App::$strings["Address"] = "Dirección"; App::$strings["Selected channels will be deleted!\\n\\nEverything that was posted in these channels on this site will be permanently deleted!\\n\\nAre you sure?"] = "Los canales seleccionados se eliminarán!\\n\\nTodo lo publicado por estos canales en este sitio se borrarán definitivamente!\\n\\n¿Está seguro de querer hacerlo?"; App::$strings["The channel {0} will be deleted!\\n\\nEverything that was posted in this channel on this site will be permanently deleted!\\n\\nAre you sure?"] = "El canal {0} va a ser eliminado!\\n\\nTodo lo publicado por el canal en este sitio se borrará definitivamente!\\n\\n¿Está seguro de querer hacerlo?"; -App::$strings["Update has been marked successful"] = "La actualización ha sido marcada como exitosa"; -App::$strings["Executing %s failed. Check system logs."] = "La ejecución de %s ha fallado. Mirar en los informes del sistema."; -App::$strings["Update %s was successfully applied."] = "La actualización de %s se ha realizado exitosamente."; -App::$strings["Update %s did not return a status. Unknown if it succeeded."] = "La actualización de %s no ha devuelto ningún estado. No se sabe si ha tenido éxito."; -App::$strings["Update function %s could not be found."] = "No se encuentra la función de actualización de %s."; -App::$strings["No failed updates."] = "No ha fallado ninguna actualización."; -App::$strings["Failed Updates"] = "Han fallado las actualizaciones"; -App::$strings["Mark success (if update was manually applied)"] = "Marcar como exitosa (si la actualización se ha hecho manualmente)"; -App::$strings["Attempt to execute this update step automatically"] = "Intentar ejecutar este paso de actualización automáticamente"; -App::$strings["Queue Statistics"] = "Estadísticas de la cola"; -App::$strings["Total Entries"] = "Total de entradas"; -App::$strings["Priority"] = "Prioridad"; -App::$strings["Destination URL"] = "Dirección de destino"; -App::$strings["Mark hub permanently offline"] = "Marcar el servidor como permanentemente fuera de línea"; -App::$strings["Empty queue for this hub"] = "Vaciar la cola para este servidor"; -App::$strings["Last known contact"] = "Último contacto conocido"; +App::$strings["Theme settings updated."] = "Ajustes del tema actualizados."; +App::$strings["No themes found."] = "No se han encontrado temas."; +App::$strings["Screenshot"] = "Instantánea de pantalla"; +App::$strings["Themes"] = "Temas"; +App::$strings["[Experimental]"] = "[Experimental]"; +App::$strings["[Unsupported]"] = "[No soportado]"; App::$strings["Site settings updated."] = "Ajustes del sitio actualizados."; App::$strings["Default"] = "Predeterminado"; App::$strings["%s - (Incompatible)"] = "%s - (Incompatible)"; App::$strings["mobile"] = "móvil"; App::$strings["experimental"] = "experimental"; App::$strings["unsupported"] = "no soportado"; -App::$strings["No"] = "No"; App::$strings["Yes - with approval"] = "Sí - con aprobación"; -App::$strings["Yes"] = "Sí"; App::$strings["My site is not a public server"] = "Mi sitio no es un servidor público"; App::$strings["My site has paid access only"] = "Mi sitio es un servicio de pago"; App::$strings["My site has free access only"] = "Mi sitio es un servicio gratuito"; App::$strings["My site offers free accounts with optional paid upgrades"] = "Mi sitio ofrece cuentas gratuitas con opciones extra de pago"; -App::$strings["Basic/Minimal Social Networking"] = "Red social básica o mínima"; -App::$strings["Standard Configuration (default)"] = "Configuración estándar (por defecto)"; -App::$strings["Professional"] = "Profesional"; App::$strings["Beginner/Basic"] = "Principiante / Básico"; App::$strings["Novice - not skilled but willing to learn"] = "Novato: no cualificado, pero dispuesto a aprender"; App::$strings["Intermediate - somewhat comfortable"] = "Intermedio: bastante cómodo"; @@ -411,11 +484,11 @@ App::$strings["Advanced - very comfortable"] = "Avanzado: muy cómodo"; App::$strings["Expert - I can write computer code"] = "Experto: puedo escribir código informático"; App::$strings["Wizard - I probably know more than you do"] = "Asistente: probablemente sé más que tú"; App::$strings["Site"] = "Sitio"; +App::$strings["Registration"] = "Registro"; App::$strings["File upload"] = "Subir fichero"; App::$strings["Policies"] = "Políticas"; App::$strings["Advanced"] = "Avanzado"; App::$strings["Site name"] = "Nombre del sitio"; -App::$strings["Server Configuration/Role"] = "Configuración del servidor"; App::$strings["Site default technical skill level"] = "Nivel de habilidad técnica predeterminado del sitio"; App::$strings["Used to provide a member experience matched to technical comfort level"] = "Se utiliza para proporcionar una experiencia a los miembros adaptada a su nivel de comodidad técnica"; App::$strings["Lock the technical skill level setting"] = "Bloquear el ajuste del nivel de habilidad técnica"; @@ -458,6 +531,9 @@ App::$strings["Login on Homepage"] = "Iniciar sesión en la página personal"; App::$strings["Present a login box to visitors on the home page if no other content has been configured."] = "Presentar a los visitantes una casilla de identificación en la página de inicio, si no se ha configurado otro tipo de contenido."; App::$strings["Enable context help"] = "Habilitar la ayuda contextual"; App::$strings["Display contextual help for the current page when the help button is pressed."] = "Ver la ayuda contextual para la página actual cuando se pulse el botón de Ayuda."; +App::$strings["Reply-to email address for system generated email."] = "Dirección de respuesta para el correo electrónico generado por el sistema."; +App::$strings["Sender (From) email address for system generated email."] = "Dirección del remitente (From) para el correo electrónico generado por el sistema."; +App::$strings["Name of email sender for system generated email."] = "Nombre del remitente del correo electrónico generado por el sistema."; App::$strings["Directory Server URL"] = "URL del servidor de directorio"; App::$strings["Default directory server"] = "Servidor de directorio predeterminado"; App::$strings["Proxy user"] = "Usuario del proxy"; @@ -474,785 +550,68 @@ App::$strings["Maximum Load Average"] = "Carga media máxima"; App::$strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Carga máxima del sistema antes de que los procesos de entrega y envío se hayan retardado - por defecto, 50."; App::$strings["Expiration period in days for imported (grid/network) content"] = "Caducidad del contenido importado de otros sitios (en días)"; App::$strings["0 for no expiration of imported content"] = "0 para que no caduque el contenido importado"; -App::$strings["Plugin %s disabled."] = "Extensión %s desactivada."; -App::$strings["Plugin %s enabled."] = "Extensión %s activada."; -App::$strings["Disable"] = "Desactivar"; -App::$strings["Enable"] = "Activar"; -App::$strings["Plugins"] = "Extensiones (plugins)"; -App::$strings["Toggle"] = "Cambiar"; -App::$strings["Settings"] = "Ajustes"; -App::$strings["Author: "] = "Autor:"; -App::$strings["Maintainer: "] = "Mantenedor:"; -App::$strings["Minimum project version: "] = "Versión mínima del proyecto:"; -App::$strings["Maximum project version: "] = "Versión máxima del proyecto:"; -App::$strings["Minimum PHP version: "] = "Versión mínima de PHP:"; -App::$strings["Compatible Server Roles: "] = "Configuraciones compatibles con este servidor:"; -App::$strings["Requires: "] = "Se requiere:"; -App::$strings["Disabled - version incompatibility"] = "Deshabilitado - versiones incompatibles"; -App::$strings["Enter the public git repository URL of the plugin repo."] = "Escriba la URL pública del repositorio git del plugin."; -App::$strings["Plugin repo git URL"] = "URL del repositorio git del plugin"; -App::$strings["Custom repo name"] = "Nombre personalizado del repositorio"; -App::$strings["(optional)"] = "(opcional)"; -App::$strings["Download Plugin Repo"] = "Descargar el repositorio"; -App::$strings["Install new repo"] = "Instalar un nuevo repositorio"; -App::$strings["Install"] = "Instalar"; -App::$strings["Cancel"] = "Cancelar"; -App::$strings["Manage Repos"] = "Gestionar los repositorios"; -App::$strings["Installed Plugin Repositories"] = "Repositorios de los plugins instalados"; -App::$strings["Install a New Plugin Repository"] = "Instalar un nuevo repositorio de plugins"; -App::$strings["Update"] = "Actualizar"; -App::$strings["Switch branch"] = "Cambiar la rama"; -App::$strings["Remove"] = "Eliminar"; -App::$strings["Theme settings updated."] = "Ajustes del tema actualizados."; -App::$strings["No themes found."] = "No se han encontrado temas."; -App::$strings["Screenshot"] = "Instantánea de pantalla"; -App::$strings["Themes"] = "Temas"; -App::$strings["[Experimental]"] = "[Experimental]"; -App::$strings["[Unsupported]"] = "[No soportado]"; -App::$strings["Export Channel"] = "Exportar el canal"; -App::$strings["Export your basic channel information to a file. This acts as a backup of your connections, permissions, profile and basic data, which can be used to import your data to a new server hub, but does not contain your content."] = "Exportar la información básica del canal a un fichero. Este equivale a una copia de seguridad de sus conexiones, el perfil y datos fundamentales, que puede usarse para importar sus datos a un nuevo servidor, pero no incluye su contenido."; -App::$strings["Export Content"] = "Exportar contenidos"; -App::$strings["Export your channel information and recent content to a JSON backup that can be restored or imported to another server hub. This backs up all of your connections, permissions, profile data and several months of posts. This file may be VERY large. Please be patient - it may take several minutes for this download to begin."] = "Exportar la información sobre su canal y el contenido reciente a un fichero de respaldo JSON, que puede ser restaurado o importado a otro servidor. Este fichero incluye todas sus conexiones, permisos, datos del perfil y publicaciones de varios meses. Puede llegar a ser MUY grande. Por favor, sea paciente, la descarga puede tardar varios minutos en comenzar."; -App::$strings["Export your posts from a given year."] = "Exporta sus publicaciones de un año dado."; -App::$strings["You may also export your posts and conversations for a particular year or month. Adjust the date in your browser location bar to select other dates. If the export fails (possibly due to memory exhaustion on your server hub), please try again selecting a more limited date range."] = "También puede exportar sus mensajes y conversaciones durante un año o mes en particular. Ajuste la fecha en la barra de direcciones del navegador para seleccionar otras fechas. Si la exportación falla (posiblemente debido al agotamiento de la memoria del servidor hub), por favor, intente de nuevo la selección de un rango de fechas más pequeño."; -App::$strings["To select all posts for a given year, such as this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un año determinado, como este año, visite <a href=\"%1\$s\">%2\$s</a>"; -App::$strings["To select all posts for a given month, such as January of this year, visit <a href=\"%1\$s\">%2\$s</a>"] = "Para seleccionar todos los mensajes de un mes determinado, como el de enero de este año, visite <a href=\"%1\$s\">%2\$s</a>"; -App::$strings["These content files may be imported or restored by visiting <a href=\"%1\$s\">%2\$s</a> on any site containing your channel. For best results please import or restore these in date order (oldest first)."] = "Estos ficheros pueden ser importados o restaurados visitando <a href=\"%1\$s\">%2\$s</a> o cualquier sitio que contenga su canal. Para obtener los mejores resultados, por favor, importar o restaurar estos ficheros en orden de fecha (la más antigua primero)."; -App::$strings["Layout Name"] = "Nombre de la plantilla"; -App::$strings["Layout Description (Optional)"] = "Descripción de la plantilla (opcional)"; -App::$strings["Edit Layout"] = "Modificar la plantilla"; -App::$strings["Page link"] = "Enlace de la página"; -App::$strings["Edit Webpage"] = "Editar la página web"; -App::$strings["Apps"] = "Aplicaciones (apps)"; -App::$strings["Manage apps"] = "Gestionar las aplicaciones"; -App::$strings["Create new app"] = "Crear una nueva aplicación"; -App::$strings["This site is not a directory server"] = "Este sitio no es un servidor de directorio"; -App::$strings["This directory server requires an access token"] = "El servidor de este directorio necesita un \"token\" de acceso"; -App::$strings["No such group"] = "No se encuentra el grupo"; -App::$strings["No such channel"] = "No se encuentra el canal"; -App::$strings["forum"] = "foro"; -App::$strings["Search Results For:"] = "Buscar resultados para:"; -App::$strings["Privacy group is empty"] = "El grupo de canales está vacío"; -App::$strings["Privacy group: "] = "Grupo de canales: "; -App::$strings["Invalid connection."] = "Conexión no válida."; -App::$strings["Invalid channel."] = "El canal no es válido."; -App::$strings["Unable to update menu."] = "No se puede actualizar el menú."; -App::$strings["Unable to create menu."] = "No se puede crear el menú."; -App::$strings["Menu Name"] = "Nombre del menú"; -App::$strings["Unique name (not visible on webpage) - required"] = "Nombre único (no será visible en la página web) - requerido"; -App::$strings["Menu Title"] = "Título del menú"; -App::$strings["Visible on webpage - leave empty for no title"] = "Visible en la página web - no ponga nada si no desea un título"; -App::$strings["Allow Bookmarks"] = "Permitir marcadores"; -App::$strings["Menu may be used to store saved bookmarks"] = "El menú se puede usar para guardar marcadores"; -App::$strings["Submit and proceed"] = "Enviar y proceder"; -App::$strings["Menus"] = "Menús"; -App::$strings["Drop"] = "Eliminar"; -App::$strings["Created"] = "Creado"; -App::$strings["Edited"] = "Editado"; -App::$strings["Bookmarks allowed"] = "Marcadores permitidos"; -App::$strings["Delete this menu"] = "Borrar este menú"; -App::$strings["Edit menu contents"] = "Editar los contenidos del menú"; -App::$strings["Edit this menu"] = "Modificar este menú"; -App::$strings["Menu could not be deleted."] = "El menú no puede ser eliminado."; -App::$strings["Menu not found."] = "Menú no encontrado"; -App::$strings["Edit Menu"] = "Modificar el menú"; -App::$strings["Add or remove entries to this menu"] = "Añadir o quitar entradas en este menú"; -App::$strings["Menu name"] = "Nombre del menú"; -App::$strings["Must be unique, only seen by you"] = "Debe ser único, solo será visible para usted"; -App::$strings["Menu title"] = "Título del menú"; -App::$strings["Menu title as seen by others"] = "El título del menú tal como será visto por los demás"; -App::$strings["Allow bookmarks"] = "Permitir marcadores"; -App::$strings["Not found."] = "No encontrado."; -App::$strings["Edit post"] = "Editar la entrada"; -App::$strings["Location not found."] = "Dirección no encontrada."; -App::$strings["Location lookup failed."] = "Ha fallado la búsqueda de la dirección."; -App::$strings["Please select another location to become primary before removing the primary location."] = "Por favor, seleccione una copia de su canal (un clon) para convertirlo en primario antes de eliminar su canal principal."; -App::$strings["Syncing locations"] = "Sincronizando ubicaciones"; -App::$strings["No locations found."] = "No encontrada ninguna dirección."; -App::$strings["Manage Channel Locations"] = "Gestionar las direcciones del canal"; -App::$strings["Location"] = "Ubicación"; -App::$strings["Primary"] = "Primario"; -App::$strings["Sync Now"] = "Sincronizar ahora"; -App::$strings["Please wait several minutes between consecutive operations."] = "Por favor, espere algunos minutos entre operaciones consecutivas."; -App::$strings["When possible, drop a location by logging into that website/hub and removing your channel."] = "Cuando sea posible, elimine una ubicación iniciando sesión en el sitio web o \"hub\" y borrando su canal."; -App::$strings["Use this form to drop the location if the hub is no longer operating."] = "Utilice este formulario para eliminar la dirección si el \"hub\" no está funcionando desde hace tiempo."; -App::$strings["Public Hubs"] = "Servidores públicos"; -App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Los sitios listados permiten el registro público en la red \$Projectname. Todos los sitios de la red están vinculados entre sí, por lo que sus miembros, en ninguno de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los mismos hubs <strong>pueden</strong> proporcionar detalles adicionales."; -App::$strings["Hub URL"] = "Dirección del hub"; -App::$strings["Access Type"] = "Tipo de acceso"; -App::$strings["Registration Policy"] = "Normas de registro"; -App::$strings["Stats"] = "Estadísticas"; -App::$strings["Software"] = "Software"; -App::$strings["Ratings"] = "Valoraciones"; -App::$strings["Rate"] = "Valorar"; -App::$strings["View"] = "Ver"; -App::$strings["Could not access contact record."] = "No se ha podido acceder al registro de contacto."; -App::$strings["Could not locate selected profile."] = "No se ha podido localizar el perfil seleccionado."; -App::$strings["Connection updated."] = "Conexión actualizada."; -App::$strings["Failed to update connection record."] = "Error al actualizar el registro de la conexión."; -App::$strings["is now connected to"] = "ahora está conectado/a"; -App::$strings["Could not access address book record."] = "No se pudo acceder al registro en su libreta de direcciones."; -App::$strings["Refresh failed - channel is currently unavailable."] = "Recarga fallida - no se puede encontrar el canal en este momento."; -App::$strings["Unable to set address book parameters."] = "No ha sido posible establecer los parámetros de la libreta de direcciones."; -App::$strings["Connection has been removed."] = "La conexión ha sido eliminada."; -App::$strings["View Profile"] = "Ver el perfil"; -App::$strings["View %s's profile"] = "Ver el perfil de %s"; -App::$strings["Refresh Permissions"] = "Recargar los permisos"; -App::$strings["Fetch updated permissions"] = "Obtener los permisos actualizados"; -App::$strings["Refresh Photo"] = "Actualizar la foto"; -App::$strings["Fetch updated photo"] = "Obtener una foto actualizada"; -App::$strings["Recent Activity"] = "Actividad reciente"; -App::$strings["View recent posts and comments"] = "Ver publicaciones y comentarios recientes"; -App::$strings["Block (or Unblock) all communications with this connection"] = "Bloquear (o desbloquear) todas las comunicaciones con esta conexión"; -App::$strings["This connection is blocked!"] = "¡Esta conexión está bloqueada!"; -App::$strings["Unignore"] = "Dejar de ignorar"; -App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión"; -App::$strings["This connection is ignored!"] = "¡Esta conexión es ignorada!"; -App::$strings["Unarchive"] = "Desarchivar"; -App::$strings["Archive"] = "Archivar"; -App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos"; -App::$strings["This connection is archived!"] = "¡Esta conexión esta archivada!"; -App::$strings["Unhide"] = "Mostrar"; -App::$strings["Hide"] = "Ocultar"; -App::$strings["Hide or Unhide this connection from your other connections"] = "Ocultar o mostrar esta conexión a sus otras conexiones"; -App::$strings["This connection is hidden!"] = "¡Esta conexión está oculta!"; -App::$strings["Delete this connection"] = "Eliminar esta conexión"; -App::$strings["Fetch Vcard"] = "Obtener una vcard"; -App::$strings["Fetch electronic calling card for this connection"] = "Obtener una tarjeta de llamada electrónica para esta conexión"; -App::$strings["Permissions"] = "Permisos"; -App::$strings["Open Individual Permissions section by default"] = "Abrir la sección de permisos individuales por defecto"; -App::$strings["Affinity"] = "Afinidad"; -App::$strings["Open Set Affinity section by default"] = "Abrir por defecto la sección para definir la afinidad"; -App::$strings["Me"] = "Yo"; -App::$strings["Family"] = "Familia"; -App::$strings["Friends"] = "Amigos/as"; -App::$strings["Acquaintances"] = "Conocidos/as"; -App::$strings["Filter"] = "Filtrar"; -App::$strings["Open Custom Filter section by default"] = "Abrir por defecto la sección de personalización de filtros"; -App::$strings["Approve this connection"] = "Aprobar esta conexión"; -App::$strings["Accept connection to allow communication"] = "Aceptar la conexión para permitir la comunicación"; -App::$strings["Set Affinity"] = "Ajustar la afinidad"; -App::$strings["Set Profile"] = "Ajustar el perfil"; -App::$strings["Set Affinity & Profile"] = "Ajustar la afinidad y el perfil"; -App::$strings["none"] = "-"; -App::$strings["Connection Default Permissions"] = "Permisos predeterminados de conexión"; -App::$strings["Connection: %s"] = "Conexión: %s"; -App::$strings["Apply these permissions automatically"] = "Aplicar estos permisos automaticamente"; -App::$strings["Connection requests will be approved without your interaction"] = "Las solicitudes de conexión serán aprobadas sin su intervención"; -App::$strings["Permission role"] = "Rol de acceso"; -App::$strings["Add permission role"] = "Añadir un rol de acceso"; -App::$strings["This connection's primary address is"] = "La dirección primaria de esta conexión es"; -App::$strings["Available locations:"] = "Ubicaciones disponibles:"; -App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones."; -App::$strings["Connection Tools"] = "Gestión de las conexiones"; -App::$strings["Slide to adjust your degree of friendship"] = "Deslizar para ajustar el grado de amistad"; -App::$strings["Rating"] = "Valoración"; -App::$strings["Slide to adjust your rating"] = "Deslizar para ajustar su valoración"; -App::$strings["Optionally explain your rating"] = "Opcionalmente, puede explicar su valoración"; -App::$strings["Custom Filter"] = "Filtro personalizado"; -App::$strings["Only import posts with this text"] = "Importar solo entradas que contengan este texto"; -App::$strings["words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts"] = "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo"; -App::$strings["Do not import posts with this text"] = "No importar entradas que contengan este texto"; -App::$strings["This information is public!"] = "¡Esta información es pública!"; -App::$strings["Connection Pending Approval"] = "Conexión pendiente de aprobación"; -App::$strings["inherited"] = "heredado"; -App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura."; -App::$strings["Their Settings"] = "Sus ajustes"; -App::$strings["My Settings"] = "Mis ajustes"; -App::$strings["Individual Permissions"] = "Permisos individuales"; -App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí."; -App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados."; -App::$strings["Last update:"] = "Última actualización:"; -App::$strings["Details"] = "Detalles"; -App::$strings["Organisation"] = "Organización"; -App::$strings["Title"] = "Título"; -App::$strings["Phone"] = "Teléfono"; -App::$strings["Instant messenger"] = "Mensajería instantánea"; -App::$strings["Website"] = "Sitio web"; -App::$strings["Note"] = "Nota"; -App::$strings["Mobile"] = "Móvil"; -App::$strings["Home"] = "Inicio"; -App::$strings["Work"] = "Trabajo"; -App::$strings["Add Contact"] = "Añadir un contacto"; -App::$strings["Add Field"] = "Añadir un campo"; -App::$strings["P.O. Box"] = "Buzón de correos"; -App::$strings["Additional"] = "Adicional"; -App::$strings["Street"] = "Calle"; -App::$strings["Locality"] = "Localidad"; -App::$strings["Region"] = "Provincia, región o estado"; -App::$strings["ZIP Code"] = "Código postal"; -App::$strings["Country"] = "País"; -App::$strings["Calendar entries imported."] = "Entradas de calendario importadas."; -App::$strings["No calendar entries found."] = "No se han encontrado entradas de calendario."; -App::$strings["Event can not end before it has started."] = "Un evento no puede terminar antes de que haya comenzado."; -App::$strings["Unable to generate preview."] = "No se puede crear la vista previa."; -App::$strings["Event title and start time are required."] = "Se requieren el título del evento y su hora de inicio."; -App::$strings["Event not found."] = "Evento no encontrado."; -App::$strings["event"] = "evento"; -App::$strings["Edit event title"] = "Editar el título del evento"; -App::$strings["Event title"] = "Título del evento"; -App::$strings["Categories (comma-separated list)"] = "Temas (lista separada por comas)"; -App::$strings["Edit Category"] = "Modificar el tema"; -App::$strings["Category"] = "Tema"; -App::$strings["Edit start date and time"] = "Modificar la fecha y hora de comienzo"; -App::$strings["Start date and time"] = "Fecha y hora de comienzo"; -App::$strings["Finish date and time are not known or not relevant"] = "La fecha y hora de terminación no se conocen o no son relevantes"; -App::$strings["Edit finish date and time"] = "Modificar la fecha y hora de terminación"; -App::$strings["Finish date and time"] = "Fecha y hora de terminación"; -App::$strings["Adjust for viewer timezone"] = "Ajustar para obtener el visor de los husos horarios"; -App::$strings["Important for events that happen in a particular place. Not practical for global holidays."] = "Importante para los eventos que suceden en un lugar determinado. No es práctico para los globales."; -App::$strings["Edit Description"] = "Editar la descripción"; -App::$strings["Edit Location"] = "Modificar la dirección"; -App::$strings["Preview"] = "Previsualizar"; -App::$strings["Permission settings"] = "Configuración de permisos"; -App::$strings["Timezone:"] = "Zona horaria: "; -App::$strings["Advanced Options"] = "Opciones avanzadas"; -App::$strings["l, F j"] = "l j F"; -App::$strings["Edit event"] = "Editar evento"; -App::$strings["Delete event"] = "Borrar evento"; -App::$strings["Link to Source"] = "Enlazar con la entrada en su ubicación original"; -App::$strings["calendar"] = "calendario"; -App::$strings["Edit Event"] = "Editar el evento"; -App::$strings["Create Event"] = "Crear un evento"; -App::$strings["Previous"] = "Anterior"; -App::$strings["Next"] = "Siguiente"; -App::$strings["Export"] = "Exportar"; -App::$strings["Month"] = "Mes"; -App::$strings["Week"] = "Semana"; -App::$strings["Day"] = "Día"; -App::$strings["Today"] = "Hoy"; -App::$strings["Event removed"] = "Evento borrado"; -App::$strings["Failed to remove event"] = "Error al eliminar el evento"; -App::$strings["\$Projectname"] = "\$Projectname"; -App::$strings["Welcome to %s"] = "Bienvenido a %s"; -App::$strings["Permission Denied."] = "Permiso denegado"; -App::$strings["File not found."] = "Fichero no encontrado."; -App::$strings["Edit file permissions"] = "Modificar los permisos del fichero"; -App::$strings["Set/edit permissions"] = "Establecer/editar los permisos"; -App::$strings["Include all files and sub folders"] = "Incluir todos los ficheros y subcarpetas"; -App::$strings["Return to file list"] = "Volver a la lista de ficheros"; -App::$strings["Copy/paste this code to attach file to a post"] = "Copiar/pegar este código para adjuntar el fichero al envío"; -App::$strings["Copy/paste this URL to link file from a web page"] = "Copiar/pegar esta dirección para enlazar el fichero desde una página web"; -App::$strings["Share this file"] = "Compartir este fichero"; -App::$strings["Show URL to this file"] = "Mostrar la dirección de este fichero"; -App::$strings["Notify your contacts about this file"] = "Avisar a sus contactos sobre este fichero"; -App::$strings["Photos"] = "Fotos"; -App::$strings["Page owner information could not be retrieved."] = "La información del propietario de la página no pudo ser recuperada."; -App::$strings["Profile Photos"] = "Fotos del perfil"; -App::$strings["Album not found."] = "Álbum no encontrado."; -App::$strings["Delete Album"] = "Borrar álbum"; -App::$strings["Multiple storage folders exist with this album name, but within different directories. Please remove the desired folder or folders using the Files manager"] = "Hay varias carpetas con este nombre de álbum, pero dentro de diferentes directorios. Por favor, elimine la carpeta o carpetas que desee utilizando el administrador de ficheros"; -App::$strings["Delete Photo"] = "Borrar foto"; -App::$strings["Public access denied."] = "Acceso público denegado."; -App::$strings["No photos selected"] = "No hay fotos seleccionadas"; -App::$strings["Access to this item is restricted."] = "El acceso a este elemento está restringido."; -App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB de %2$.2f MB de almacenamiento de fotos utilizado."; -App::$strings["%1$.2f MB photo storage used."] = "%1$.2f MB de almacenamiento de fotos utilizado."; -App::$strings["Upload Photos"] = "Subir fotos"; -App::$strings["Enter an album name"] = "Introducir un nombre de álbum"; -App::$strings["or select an existing album (doubleclick)"] = "o seleccionar uno existente (doble click)"; -App::$strings["Create a status post for this upload"] = "Crear un mensaje de estado para esta subida"; -App::$strings["Caption (optional):"] = "Título (opcional):"; -App::$strings["Description (optional):"] = "Descripción (opcional):"; -App::$strings["Album name could not be decoded"] = "El nombre del álbum no ha podido ser descifrado"; -App::$strings["Contact Photos"] = "Fotos de contacto"; -App::$strings["Show Newest First"] = "Mostrar lo más reciente primero"; -App::$strings["Show Oldest First"] = "Mostrar lo más antiguo primero"; -App::$strings["View Photo"] = "Ver foto"; -App::$strings["Edit Album"] = "Editar álbum"; -App::$strings["Permission denied. Access to this item may be restricted."] = "Permiso denegado. El acceso a este elemento puede estar restringido."; -App::$strings["Photo not available"] = "Foto no disponible"; -App::$strings["Use as profile photo"] = "Usar como foto del perfil"; -App::$strings["Use as cover photo"] = "Usar como imagen de portada del perfil"; -App::$strings["Private Photo"] = "Foto privada"; -App::$strings["View Full Size"] = "Ver tamaño completo"; -App::$strings["Edit photo"] = "Editar foto"; -App::$strings["Rotate CW (right)"] = "Girar CW (a la derecha)"; -App::$strings["Rotate CCW (left)"] = "Girar CCW (a la izquierda)"; -App::$strings["Move photo to album"] = "Mover la foto a un álbum"; -App::$strings["Enter a new album name"] = "Introducir un nuevo nombre de álbum"; -App::$strings["or select an existing one (doubleclick)"] = "o seleccionar uno (doble click) existente"; -App::$strings["Caption"] = "Título"; -App::$strings["Add a Tag"] = "Añadir una etiqueta"; -App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com"; -App::$strings["Flag as adult in album view"] = "Marcar como \"solo para adultos\" en el álbum"; -App::$strings["I like this (toggle)"] = "Me gusta (cambiar)"; -App::$strings["I don't like this (toggle)"] = "No me gusta esto (cambiar)"; -App::$strings["Share"] = "Compartir"; -App::$strings["Please wait"] = "Espere por favor"; -App::$strings["This is you"] = "Este es usted"; -App::$strings["Comment"] = "Comentar"; -App::$strings["__ctx:title__ Likes"] = "Me gusta"; -App::$strings["__ctx:title__ Dislikes"] = "No me gusta"; -App::$strings["__ctx:title__ Agree"] = "De acuerdo"; -App::$strings["__ctx:title__ Disagree"] = "En desacuerdo"; -App::$strings["__ctx:title__ Abstain"] = "Abstención"; -App::$strings["__ctx:title__ Attending"] = "Participaré"; -App::$strings["__ctx:title__ Not attending"] = "No participaré"; -App::$strings["__ctx:title__ Might attend"] = "Quizá participe"; -App::$strings["View all"] = "Ver todo"; -App::$strings["__ctx:noun__ Like"] = array( - 0 => "Me gusta", - 1 => "Me gusta", -); -App::$strings["__ctx:noun__ Dislike"] = array( - 0 => "No me gusta", - 1 => "No me gusta", -); -App::$strings["Photo Tools"] = "Gestión de las fotos"; -App::$strings["In This Photo:"] = "En esta foto:"; -App::$strings["Map"] = "Mapa"; -App::$strings["__ctx:noun__ Likes"] = "Me gusta"; -App::$strings["__ctx:noun__ Dislikes"] = "No me gusta"; -App::$strings["Close"] = "Cerrar"; -App::$strings["View Album"] = "Ver álbum"; -App::$strings["Recent Photos"] = "Fotos recientes"; -App::$strings["Privacy group created."] = "El grupo de canales ha sido creado."; -App::$strings["Could not create privacy group."] = "No se puede crear el grupo de canales"; -App::$strings["Privacy group not found."] = "Grupo de canales no encontrado."; -App::$strings["Privacy group updated."] = "Grupo de canales actualizado."; -App::$strings["Create a group of channels."] = "Crear un grupo de canales."; -App::$strings["Privacy group name: "] = "Nombre del grupo de canales:"; -App::$strings["Members are visible to other channels"] = "Los miembros son visibles para otros canales"; -App::$strings["Privacy group removed."] = "Grupo de canales eliminado."; -App::$strings["Unable to remove privacy group."] = "No se puede eliminar el grupo de canales."; -App::$strings["Privacy group editor"] = "Editor de grupos de canales"; -App::$strings["All Connected Channels"] = "Todos los canales conectados"; -App::$strings["Click on a channel to add or remove."] = "Haga clic en un canal para agregarlo o quitarlo."; -App::$strings["Invalid message"] = "Mensaje no válido"; -App::$strings["no results"] = "sin resultados"; -App::$strings["channel sync processed"] = "se ha realizado la sincronización del canal"; -App::$strings["queued"] = "encolado"; -App::$strings["posted"] = "enviado"; -App::$strings["accepted for delivery"] = "aceptado para el envío"; -App::$strings["updated"] = "actualizado"; -App::$strings["update ignored"] = "actualización ignorada"; -App::$strings["permission denied"] = "permiso denegado"; -App::$strings["recipient not found"] = "destinatario no encontrado"; -App::$strings["mail recalled"] = "mensaje de correo revocado"; -App::$strings["duplicate mail received"] = "se ha recibido mensaje duplicado"; -App::$strings["mail delivered"] = "correo enviado"; -App::$strings["Delivery report for %1\$s"] = "Informe de entrega para %1\$s"; -App::$strings["Options"] = "Opciones"; -App::$strings["Redeliver"] = "Volver a enviar"; -App::$strings["Unable to lookup recipient."] = "No se puede asociar a un destinatario."; -App::$strings["Unable to communicate with requested channel."] = "No se puede establecer la comunicación con el canal solicitado."; -App::$strings["Cannot verify requested channel."] = "No se puede verificar el canal solicitado."; -App::$strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló."; -App::$strings["Messages"] = "Mensajes"; -App::$strings["Message recalled."] = "Mensaje revocado."; -App::$strings["Conversation removed."] = "Conversación eliminada."; -App::$strings["Please enter a link URL:"] = "Por favor, introduzca la dirección del enlace:"; -App::$strings["Expires YYYY-MM-DD HH:MM"] = "Caduca YYYY-MM-DD HH:MM"; -App::$strings["Requested channel is not in this network"] = "El canal solicitado no existe en esta red"; -App::$strings["Send Private Message"] = "Enviar un mensaje privado"; -App::$strings["To:"] = "Para:"; -App::$strings["Subject:"] = "Asunto:"; -App::$strings["Your message:"] = "Su mensaje:"; -App::$strings["Attach file"] = "Adjuntar fichero"; -App::$strings["Send"] = "Enviar"; -App::$strings["Set expiration date"] = "Configurar fecha de caducidad"; -App::$strings["Encrypt text"] = "Cifrar texto"; -App::$strings["Delete message"] = "Borrar mensaje"; -App::$strings["Delivery report"] = "Informe de transmisión"; -App::$strings["Recall message"] = "Revocar el mensaje"; -App::$strings["Message has been recalled."] = "El mensaje ha sido revocado."; -App::$strings["Delete Conversation"] = "Eliminar conversación"; -App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente."; -App::$strings["Send Reply"] = "Responder"; -App::$strings["Your message for %s (%s):"] = "Su mensaje para %s (%s):"; -App::$strings["webpage"] = "página web"; -App::$strings["block"] = "bloque"; -App::$strings["layout"] = "plantilla"; -App::$strings["menu"] = "menú"; -App::$strings["%s element installed"] = "%s elemento instalado"; -App::$strings["%s element installation failed"] = "Elemento con instalación fallida: %s"; -App::$strings["Import completed"] = "Importación completada"; -App::$strings["Import Items"] = "Importar elementos"; -App::$strings["Use this form to import existing posts and content from an export file."] = "Utilice este formulario para importar entradas existentes y contenido desde un archivo de exportación."; -App::$strings["You have created %1$.0f of %2$.0f allowed channels."] = "Ha creado %1$.0f de %2$.0f canales permitidos."; -App::$strings["Create a new channel"] = "Crear un nuevo canal"; -App::$strings["Create New"] = "Crear"; -App::$strings["Channel Manager"] = "Administración de canales"; -App::$strings["Current Channel"] = "Canal actual"; -App::$strings["Switch to one of your channels by selecting it."] = "Cambiar a uno de sus canales seleccionándolo."; -App::$strings["Default Channel"] = "Canal principal"; -App::$strings["Make Default"] = "Convertir en predeterminado"; -App::$strings["%d new messages"] = "%d mensajes nuevos"; -App::$strings["%d new introductions"] = "%d nuevas solicitudes de conexión"; -App::$strings["Delegated Channel"] = "Canal delegado"; -App::$strings["Hub not found."] = "Servidor no encontrado"; -App::$strings["Unable to create element."] = "No se puede crear el elemento."; -App::$strings["Unable to update menu element."] = "No es posible actualizar el elemento del menú."; -App::$strings["Unable to add menu element."] = "No es posible añadir el elemento al menú"; -App::$strings["Menu Item Permissions"] = "Permisos del elemento del menú"; -App::$strings["(click to open/close)"] = "(pulsar para abrir o cerrar)"; -App::$strings["Link Name"] = "Nombre del enlace"; -App::$strings["Link or Submenu Target"] = "Destino del enlace o submenú"; -App::$strings["Enter URL of the link or select a menu name to create a submenu"] = "Introducir la dirección del enlace o seleccionar el nombre de un submenú"; -App::$strings["Use magic-auth if available"] = "Usar la autenticación mágica si está disponible"; -App::$strings["Open link in new window"] = "Abrir el enlace en una nueva ventana"; -App::$strings["Order in list"] = "Orden en la lista"; -App::$strings["Higher numbers will sink to bottom of listing"] = "Los números más altos irán al final de la lista"; -App::$strings["Submit and finish"] = "Enviar y terminar"; -App::$strings["Submit and continue"] = "Enviar y continuar"; -App::$strings["Menu:"] = "Menú:"; -App::$strings["Link Target"] = "Destino del enlace"; -App::$strings["Edit menu"] = "Editar menú"; -App::$strings["Edit element"] = "Editar el elemento"; -App::$strings["Drop element"] = "Eliminar el elemento"; -App::$strings["New element"] = "Nuevo elemento"; -App::$strings["Edit this menu container"] = "Modificar el contenedor del menú"; -App::$strings["Add menu element"] = "Añadir un elemento al menú"; -App::$strings["Delete this menu item"] = "Eliminar este elemento del menú"; -App::$strings["Edit this menu item"] = "Modificar este elemento del menú"; -App::$strings["Menu item not found."] = "Este elemento del menú no se ha encontrado"; -App::$strings["Menu item deleted."] = "Este elemento del menú ha sido borrado"; -App::$strings["Menu item could not be deleted."] = "Este elemento del menú no puede ser borrado."; -App::$strings["Edit Menu Element"] = "Editar elemento del menú"; -App::$strings["Link text"] = "Texto del enlace"; -App::$strings["Item is not editable"] = "El elemento no es editable"; -App::$strings["No ratings"] = "Ninguna valoración"; -App::$strings["Rating: "] = "Valoración:"; -App::$strings["Website: "] = "Sitio web:"; -App::$strings["Description: "] = "Descripción:"; -App::$strings["Item not available."] = "Elemento no disponible"; -App::$strings["Permissions denied."] = "Permisos denegados."; -App::$strings["Import"] = "Importar"; -App::$strings["No more system notifications."] = "No hay más notificaciones del sistema"; -App::$strings["System Notifications"] = "Notificaciones del sistema"; -App::$strings["Authorize application connection"] = "Autorizar una conexión de aplicación"; -App::$strings["Return to your app and insert this Security Code:"] = "Vuelva a su aplicación e introduzca este código de seguridad: "; -App::$strings["Please login to continue."] = "Por favor inicie sesión para continuar."; -App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?"; -App::$strings["Total invitation limit exceeded."] = "Se ha superado el límite máximo de invitaciones."; -App::$strings["%s : Not a valid email address."] = "%s : No es una dirección de correo electrónico válida. "; -App::$strings["Please join us on \$Projectname"] = "Únase a nosotros en \$Projectname"; -App::$strings["Invitation limit exceeded. Please contact your site administrator."] = "Excedido el límite de invitaciones. Por favor, contacte con el Administrador de su sitio."; -App::$strings["%s : Message delivery failed."] = "%s : Falló el envío del mensaje."; -App::$strings["%d message sent."] = array( - 0 => "%d mensajes enviados.", - 1 => "%d mensajes enviados.", -); -App::$strings["You have no more invitations available"] = "No tiene más invitaciones disponibles"; -App::$strings["Send invitations"] = "Enviar invitaciones"; -App::$strings["Enter email addresses, one per line:"] = "Introduzca las direcciones de correo electrónico, una por línea:"; -App::$strings["Please join my community on \$Projectname."] = "Por favor, únase a mi comunidad en \$Projectname."; -App::$strings["You will need to supply this invitation code:"] = "Tendrá que suministrar este código de invitación:"; -App::$strings["1. Register at any \$Projectname location (they are all inter-connected)"] = "1. Regístrese en cualquier sitio de \$Projectname (están todos interconectados)"; -App::$strings["2. Enter my \$Projectname network address into the site searchbar."] = "2. Introduzca mi dirección \$Projectname en la caja de búsqueda del sitio."; -App::$strings["or visit"] = "o visitar"; -App::$strings["3. Click [Connect]"] = "3. Pulse [conectar]"; -App::$strings["About this site"] = "Acerca de este sitio"; -App::$strings["Site Name"] = "Nombre del sitio"; -App::$strings["Administrator"] = "Administrador"; -App::$strings["Software and Project information"] = "Información sobre el software y el proyecto"; -App::$strings["This site is powered by \$Projectname"] = "Este sitio funciona con \$Projectname"; -App::$strings["Federated and decentralised networking and identity services provided by Zot"] = "Servicios federados y descentralizados de identidad y redes proporcionados por Zot"; -App::$strings["Version %s"] = "Versión %s"; -App::$strings["Project homepage"] = "Página principal del proyecto"; -App::$strings["Developer homepage"] = "Página principal del desarrollador"; -App::$strings["Create Channel"] = "Crear un canal"; -App::$strings["A channel is your identity on this network. It can represent a person, a blog, or a forum to name a few. Channels can make connections with other channels to share information with highly detailed permissions."] = "Un canal es su identidad en esta red. Puede representar a una persona, un blog o un foro, por nombrar unos pocos ejemplos. Los canales se pueden conectar con otros canales para compartir información con una gama de permisos extremadamente detallada."; -App::$strings["or <a href=\"import\">import an existing channel</a> from another location."] = "O <a href=\"import\">importar un canal existente</a> desde otro lugar."; -App::$strings["Import Webpage Elements"] = "Importar elementos de una página web"; -App::$strings["Import selected"] = "Importar elementos seleccionados"; -App::$strings["Export Webpage Elements"] = "Exportar elementos de una página web"; -App::$strings["Export selected"] = "Exportar los elementos seleccionados"; -App::$strings["Webpages"] = "Páginas web"; -App::$strings["Actions"] = "Acciones"; -App::$strings["Page Link"] = "Vínculo de la página"; -App::$strings["Page Title"] = "Título de página"; -App::$strings["Invalid file type."] = "Tipo de fichero no válido."; -App::$strings["Error opening zip file"] = "Error al abrir el fichero comprimido zip"; -App::$strings["Invalid folder path."] = "La ruta de la carpeta no es válida."; -App::$strings["No webpage elements detected."] = "No se han detectado elementos de ninguna página web."; -App::$strings["Import complete."] = "Importación completada."; -App::$strings["Mark all system notifications seen"] = "Marcar todas las notificaciones de sistema como leídas"; -App::$strings["Poke"] = "Toques y otras cosas"; -App::$strings["Poke somebody"] = "Dar un toque a alguien"; -App::$strings["Poke/Prod"] = "Toque/Incitación"; -App::$strings["Poke, prod or do other things to somebody"] = "Dar un toque, incitar o hacer otras cosas a alguien"; -App::$strings["Recipient"] = "Destinatario"; -App::$strings["Choose what you wish to do to recipient"] = "Elegir qué desea enviar al destinatario"; -App::$strings["Make this post private"] = "Convertir en privado este envío"; -App::$strings["Invalid profile identifier."] = "Identificador del perfil no válido"; -App::$strings["Profile Visibility Editor"] = "Editor de visibilidad del perfil"; -App::$strings["Profile"] = "Perfil"; -App::$strings["Click on a contact to add or remove."] = "Pulsar en un contacto para añadirlo o eliminarlo."; -App::$strings["Visible To"] = "Visible para"; -App::$strings["Posts and comments"] = "Publicaciones y comentarios"; -App::$strings["Only posts"] = "Solo publicaciones"; -App::$strings["Unable to locate original post."] = "No ha sido posible encontrar la entrada original."; -App::$strings["Empty post discarded."] = "La entrada vacía ha sido desechada."; -App::$strings["Executable content type not permitted to this channel."] = "Contenido de tipo ejecutable no permitido en este canal."; -App::$strings["Duplicate post suppressed."] = "Se ha suprimido la entrada duplicada."; -App::$strings["System error. Post not saved."] = "Error del sistema. La entrada no se ha podido salvar."; -App::$strings["Unable to obtain post information from database."] = "No ha sido posible obtener información de la entrada en la base de datos."; -App::$strings["You have reached your limit of %1$.0f top level posts."] = "Ha alcanzado su límite de %1$.0f entradas en la página principal."; -App::$strings["You have reached your limit of %1$.0f webpages."] = "Ha alcanzado su límite de %1$.0f páginas web."; -App::$strings["This setting requires special processing and editing has been blocked."] = "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada."; -App::$strings["Configuration Editor"] = "Editor de configuración"; -App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica."; -App::$strings["Items tagged with: %s"] = "elementos etiquetados con: %s"; -App::$strings["Search results for: %s"] = "Resultados de la búsqueda para: %s"; +App::$strings["New Profile Field"] = "Nuevo campo en el perfil"; +App::$strings["Field nickname"] = "Alias del campo"; +App::$strings["System name of field"] = "Nombre del campo en el sistema"; +App::$strings["Input type"] = "Tipo de entrada"; +App::$strings["Field Name"] = "Nombre del campo"; +App::$strings["Label on profile pages"] = "Etiqueta a mostrar en la página del perfil"; +App::$strings["Help text"] = "Texto de ayuda"; +App::$strings["Additional info (optional)"] = "Información adicional (opcional)"; +App::$strings["Save"] = "Guardar"; +App::$strings["Field definition not found"] = "Definición del campo no encontrada"; +App::$strings["Edit Profile Field"] = "Modificar el campo del perfil"; +App::$strings["Profile Fields"] = "Campos del perfil"; +App::$strings["Basic Profile Fields"] = "Campos básicos del perfil"; +App::$strings["Advanced Profile Fields"] = "Campos avanzados del perfil"; +App::$strings["(In addition to basic fields)"] = "(Además de los campos básicos)"; +App::$strings["All available fields"] = "Todos los campos disponibles"; +App::$strings["Custom Fields"] = "Campos personalizados"; +App::$strings["Create Custom Field"] = "Crear un campo personalizado"; +App::$strings["Password changed for account %d."] = "Ha cambiado la contraseña para la cuenta %d."; +App::$strings["Account settings updated."] = "Se han actualizado los ajustes de la cuenta."; +App::$strings["Account not found."] = "No se ha encontrado la cuenta."; +App::$strings["Account Edit"] = "Editar la cuenta"; +App::$strings["New Password"] = "Nueva contraseña"; +App::$strings["New Password again"] = "Nueva contraseña otra vez"; +App::$strings["Technical skill level"] = "Nivel de habilidad técnica"; +App::$strings["Account language (for emails)"] = "Idioma de la cuenta (para los correos electrónicos)"; +App::$strings["Service class"] = "Clase de servicio"; +App::$strings["By default, unfiltered HTML is allowed in embedded media. This is inherently insecure."] = "De forma predeterminada, el HTML sin filtrar está permitido en el contenido multimedia incorporado en una publicación. Esto es siempre inseguro."; +App::$strings["The recommended setting is to only allow unfiltered HTML from the following sites:"] = "La configuración recomendada es que sólo se permita HTML sin filtrar desde los siguientes sitios: "; +App::$strings["https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"] = "https://youtube.com/<br />https://www.youtube.com/<br />https://youtu.be/<br />https://vimeo.com/<br />https://soundcloud.com/<br />"; +App::$strings["All other embedded content will be filtered, <strong>unless</strong> embedded content from that site is explicitly blocked."] = "El resto del contenido incrustado se filtrará, <strong>excepto</ strong> si el contenido incorporado desde ese sitio está bloqueado de forma explícita."; +App::$strings["Security"] = "Seguridad"; +App::$strings["Block public"] = "Bloquear páginas públicas"; +App::$strings["Check to block public access to all otherwise public personal pages on this site unless you are currently authenticated."] = "Habilitar para impedir ver las páginas personales de este sitio a quien no esté actualmente autenticado."; +App::$strings["Set \"Transport Security\" HTTP header"] = "Habilitar \"Seguridad de transporte\" (\"Transport Security\") en la cabecera HTTP"; +App::$strings["Set \"Content Security Policy\" HTTP header"] = "Habilitar la \"Política de seguridad del contenido\" (\"Content Security Policy\") en la cabecera HTTP"; +App::$strings["Allowed email domains"] = "Se aceptan dominios de correo electrónico"; +App::$strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Lista separada por comas de los dominios de los que se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para aceptar cualquier dominio. "; +App::$strings["Not allowed email domains"] = "No se permiten dominios de correo electrónico"; +App::$strings["Comma separated list of domains which are not allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains, unless allowed domains have been defined."] = "Lista separada por comas de los dominios de los que no se acepta una dirección de correo electrónico para registros en este sitio. Se permiten comodines. Dejar en claro para no aceptar cualquier dominio, excepto los que se hayan autorizado."; +App::$strings["Allow communications only from these sites"] = "Permitir la comunicación solo desde estos sitios"; +App::$strings["One site per line. Leave empty to allow communication from anywhere by default"] = "Un sitio por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"; +App::$strings["Block communications from these sites"] = "Bloquear la comunicación desde estos sitios"; +App::$strings["Allow communications only from these channels"] = "Permitir la comunicación solo desde estos canales"; +App::$strings["One channel (hash) per line. Leave empty to allow from any channel by default"] = "Un canal (hash) por línea. Dejar en blanco para permitir por defecto la comunicación desde cualquiera"; +App::$strings["Block communications from these channels"] = "Bloquear la comunicación desde estos canales"; +App::$strings["Only allow embeds from secure (SSL) websites and links."] = "Sólo se permite contenido multimedia incorporado desde sitios y enlaces seguros (SSL)."; +App::$strings["Allow unfiltered embedded HTML content only from these domains"] = "Permitir contenido HTML sin filtrar sólo desde estos dominios "; +App::$strings["One site per line. By default embedded content is filtered."] = "Un sitio por línea. El contenido incorporado se filtra de forma predeterminada."; +App::$strings["Block embedded HTML from these domains"] = "Bloquear contenido con HTML incorporado desde estos dominios"; App::$strings["Remote privacy information not available."] = "La información privada remota no está disponible."; App::$strings["Visible to:"] = "Visible para:"; App::$strings["__ctx:acl__ Profile"] = "Perfil"; -App::$strings["Blocks"] = "Bloques"; -App::$strings["Block Title"] = "Título del bloque"; -App::$strings["Layouts"] = "Plantillas"; -App::$strings["Help"] = "Ayuda"; -App::$strings["Comanche page description language help"] = "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche"; -App::$strings["Layout Description"] = "Descripción de la plantilla"; -App::$strings["Download PDL file"] = "Descargar el fichero PDL"; -App::$strings["Website:"] = "Sitio web:"; -App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canal remoto [%s] (aún no es conocido en este sitio)"; -App::$strings["Rating (this information is public)"] = "Valoración (esta información es pública)"; -App::$strings["Optionally explain your rating (this information is public)"] = "Opcionalmente puede explicar su valoración (esta información es pública)"; -App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente."; -App::$strings["Use Photo for Profile"] = "Usar la fotografía para el perfil"; -App::$strings["Upload Profile Photo"] = "Subir foto de perfil"; -App::$strings["Use"] = "Usar"; -App::$strings["Like/Dislike"] = "Me gusta/No me gusta"; -App::$strings["This action is restricted to members."] = "Esta acción está restringida solo para miembros."; -App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Por favor, <a href=\"rmagic\">identifíquese con su \$Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo \$Projectname member</a> para continuar."; -App::$strings["Invalid request."] = "Solicitud incorrecta."; -App::$strings["channel"] = "el canal"; -App::$strings["thing"] = "elemento"; -App::$strings["Channel unavailable."] = "Canal no disponible."; -App::$strings["Previous action reversed."] = "Acción anterior revocada."; -App::$strings["photo"] = "foto"; -App::$strings["status"] = "el mensaje de estado"; -App::$strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s le gusta %3\$s de %2\$s"; -App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s"; -App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s está de acuerdo"; -App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no está de acuerdo"; -App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s se abstiene"; -App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s participa"; -App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no participa"; -App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s quizá participe"; -App::$strings["Action completed."] = "Acción completada."; -App::$strings["Thank you."] = "Gracias."; -App::$strings["No channel."] = "Ningún canal."; -App::$strings["Common connections"] = "Conexiones comunes"; -App::$strings["No connections in common."] = "Ninguna conexión en común."; -App::$strings["toggle full screen mode"] = "cambiar al modo de pantalla completa"; -App::$strings["%1\$s is following %2\$s's %3\$s"] = "%1\$s está siguiendo %3\$s de %2\$s"; -App::$strings["%1\$s stopped following %2\$s's %3\$s"] = "%1\$s ha dejado de seguir %3\$s de %2\$s"; -App::$strings["You must be logged in to see this page."] = "Debe haber iniciado sesión para poder ver esta página."; -App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficientes. Petición redirigida a la página del perfil."; -App::$strings["No valid account found."] = "No se ha encontrado una cuenta válida."; -App::$strings["Password reset request issued. Check your email."] = "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico."; -App::$strings["Site Member (%s)"] = "Usuario del sitio (%s)"; -App::$strings["Password reset requested at %s"] = "Se ha solicitado restablecer la contraseña en %s"; -App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado."; -App::$strings["Password Reset"] = "Restablecer la contraseña"; -App::$strings["Your password has been reset as requested."] = "Su contraseña ha sido restablecida según lo solicitó."; -App::$strings["Your new password is"] = "Su nueva contraseña es"; -App::$strings["Save or copy your new password - and then"] = "Guarde o copie su nueva contraseña - y después"; -App::$strings["click here to login"] = "pulse aquí para conectarse"; -App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión."; -App::$strings["Your password has changed at %s"] = "Su contraseña en %s ha sido cambiada"; -App::$strings["Forgot your Password?"] = "¿Ha olvidado su contraseña?"; -App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones."; -App::$strings["Email Address"] = "Dirección de correo electrónico"; -App::$strings["Reset"] = "Reiniciar"; -App::$strings["Select a bookmark folder"] = "Seleccionar una carpeta de marcadores"; -App::$strings["Save Bookmark"] = "Guardar marcador"; -App::$strings["URL of bookmark"] = "Dirección del marcador"; -App::$strings["Or enter new bookmark folder name"] = "O introduzca un nuevo nombre para la carpeta de marcadores"; -App::$strings["Channel added."] = "Canal añadido."; -App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s"; -App::$strings["Mood"] = "Estado de ánimo"; -App::$strings["Set your current mood and tell your friends"] = "Describir su estado de ánimo para comunicárselo a sus amigos"; -App::$strings["Please login."] = "Por favor, inicie sesión."; -App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "La eliminación de cuentas no está permitida hasta después de que hayan transcurrido 48 horas desde el último cambio de contraseña."; -App::$strings["Remove This Account"] = "Eliminar esta cuenta"; -App::$strings["WARNING: "] = "ATENCIÓN:"; -App::$strings["This account and all its channels will be completely removed from the network. "] = "Esta cuenta y todos sus canales van a ser eliminados de la red."; -App::$strings["This action is permanent and can not be undone!"] = "¡Esta acción tiene carácter definitivo y no se puede deshacer!"; -App::$strings["Please enter your password for verification:"] = "Por favor, introduzca su contraseña para su verificación:"; -App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Remover esta cuenta, todos sus canales y clones de la red"; -App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Por defecto, solo las instancias de los canales ubicados en este servidor serán eliminados de la red"; -App::$strings["Remove Account"] = "Eliminar cuenta"; -App::$strings["Layout updated."] = "Plantilla actualizada."; -App::$strings["Feature disabled."] = "Funcionalidad deshabilitada."; -App::$strings["Edit System Page Description"] = "Editor del Sistema de Descripción de Páginas"; -App::$strings["Layout not found."] = "Plantilla no encontrada"; -App::$strings["Module Name:"] = "Nombre del módulo:"; -App::$strings["Layout Help"] = "Ayuda para el diseño de plantillas de página"; -App::$strings["%d rating"] = array( - 0 => "%d valoración", - 1 => "%d valoraciones", -); -App::$strings["Gender: "] = "Género:"; -App::$strings["Status: "] = "Estado:"; -App::$strings["Homepage: "] = "Página personal:"; -App::$strings["Age:"] = "Edad:"; -App::$strings["Location:"] = "Ubicación:"; -App::$strings["Description:"] = "Descripción:"; -App::$strings["Hometown:"] = "Lugar de nacimiento:"; -App::$strings["About:"] = "Sobre mí:"; -App::$strings["Connect"] = "Conectar"; -App::$strings["Public Forum:"] = "Foro público:"; -App::$strings["Keywords: "] = "Palabras clave:"; -App::$strings["Don't suggest"] = "No sugerir:"; -App::$strings["Common connections:"] = "Conexiones comunes:"; -App::$strings["Global Directory"] = "Directorio global:"; -App::$strings["Local Directory"] = "Directorio local:"; -App::$strings["Finding:"] = "Encontrar:"; -App::$strings["Channel Suggestions"] = "Sugerencias de canales"; -App::$strings["next page"] = "siguiente página"; -App::$strings["previous page"] = "página anterior"; -App::$strings["Sort options"] = "Ordenar opciones"; -App::$strings["Alphabetic"] = "Alfabético"; -App::$strings["Reverse Alphabetic"] = "Alfabético inverso"; -App::$strings["Newest to Oldest"] = "De más nuevo a más antiguo"; -App::$strings["Oldest to Newest"] = "De más antiguo a más nuevo"; -App::$strings["No entries (some entries may be hidden)."] = "Sin entradas (algunas entradas pueden estar ocultas)."; -App::$strings["vcard"] = "vcard"; -App::$strings["Unable to find your hub."] = "No se puede encontrar su servidor."; -App::$strings["Post successful."] = "Enviado con éxito."; -App::$strings["Source of Item"] = "Origen del elemento"; -App::$strings["No service class restrictions found."] = "No se han encontrado restricciones sobre esta clase de servicio."; -App::$strings["network"] = "red"; -App::$strings["RSS"] = "RSS"; -App::$strings["Channel removals are not allowed within 48 hours of changing the account password."] = "La eliminación de canales no está permitida hasta pasadas 48 horas desde el último cambio de contraseña."; -App::$strings["Remove This Channel"] = "Eliminar este canal"; -App::$strings["This channel will be completely removed from the network. "] = "Este canal va a ser completamente eliminado de la red. "; -App::$strings["Remove this channel and all its clones from the network"] = "Eliminar este canal y todos sus clones de la red"; -App::$strings["By default only the instance of the channel located on this hub will be removed from the network"] = "Por defecto, solo la instancia del canal alojado en este servidor será eliminado de la red"; -App::$strings["Remove Channel"] = "Eliminar el canal"; -App::$strings["Files: shared with me"] = "Ficheros: compartidos conmigo"; -App::$strings["NEW"] = "NUEVO"; -App::$strings["Remove all files"] = "Eliminar todos los ficheros"; -App::$strings["Remove this file"] = "Eliminar este fichero"; -App::$strings["post"] = "la entrada"; -App::$strings["comment"] = "el comentario"; -App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetado %3\$s de %2\$s con %4\$s"; -App::$strings["Failed to create source. No channel selected."] = "No se ha podido crear el origen de los contenidos. No ha sido seleccionado ningún canal."; -App::$strings["Source created."] = "Fuente creada."; -App::$strings["Source updated."] = "Fuente actualizada."; -App::$strings["*"] = "*"; -App::$strings["Channel Sources"] = "Orígenes de los contenidos del canal"; -App::$strings["Manage remote sources of content for your channel."] = "Gestionar contenido de origen remoto para su canal."; -App::$strings["New Source"] = "Nueva fuente"; -App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importar todo el contenido o una selección de los siguientes canales en este canal y distribuirlo de acuerdo con sus ajustes."; -App::$strings["Only import content with these words (one per line)"] = "Importar solo contenido que contenga estas palabras (una por línea)"; -App::$strings["Leave blank to import all public content"] = "Dejar en blanco para importar todo el contenido público"; -App::$strings["Channel Name"] = "Nombre del canal"; -App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "Añadir los temas siguientes a las entradas importadas de esta fuente (separadas por comas)"; -App::$strings["Optional"] = "Opcional"; -App::$strings["Source not found."] = "Fuente no encontrada"; -App::$strings["Edit Source"] = "Editar fuente"; -App::$strings["Delete Source"] = "Eliminar fuente"; -App::$strings["Source removed"] = "Fuente eliminada"; -App::$strings["Unable to remove source."] = "No se puede eliminar la fuente."; -App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo."; -App::$strings["Ignore/Hide"] = "Ignorar/Ocultar"; -App::$strings["Profile not found."] = "Perfil no encontrado."; -App::$strings["Profile deleted."] = "Perfil eliminado."; -App::$strings["Profile-"] = "Perfil-"; -App::$strings["New profile created."] = "El nuevo perfil ha sido creado."; -App::$strings["Profile unavailable to clone."] = "Perfil no disponible para clonar."; -App::$strings["Profile unavailable to export."] = "Perfil no disponible para exportar."; -App::$strings["Profile Name is required."] = "Se necesita el nombre del perfil."; -App::$strings["Marital Status"] = "Estado civil"; -App::$strings["Romantic Partner"] = "Pareja sentimental"; -App::$strings["Likes"] = "Me gusta"; -App::$strings["Dislikes"] = "No me gusta"; -App::$strings["Work/Employment"] = "Trabajo:"; -App::$strings["Religion"] = "Religión"; -App::$strings["Political Views"] = "Ideas políticas"; -App::$strings["Gender"] = "Género"; -App::$strings["Sexual Preference"] = "Preferencia sexual"; -App::$strings["Homepage"] = "Página personal"; -App::$strings["Interests"] = "Intereses"; -App::$strings["Profile updated."] = "Perfil actualizado."; -App::$strings["Hide your connections list from viewers of this profile"] = "Ocultar la lista de conexiones a los visitantes del perfil"; -App::$strings["Edit Profile Details"] = "Modificar los detalles de este perfil"; -App::$strings["View this profile"] = "Ver este perfil"; -App::$strings["Edit visibility"] = "Editar visibilidad"; -App::$strings["Profile Tools"] = "Gestión del perfil"; -App::$strings["Change cover photo"] = "Cambiar la imagen de portada del perfil"; -App::$strings["Change profile photo"] = "Cambiar la foto del perfil"; -App::$strings["Create a new profile using these settings"] = "Crear un nuevo perfil usando estos ajustes"; -App::$strings["Clone this profile"] = "Clonar este perfil"; -App::$strings["Delete this profile"] = "Eliminar este perfil"; -App::$strings["Add profile things"] = "Añadir cosas al perfil"; -App::$strings["Personal"] = "Personales"; -App::$strings["Relation"] = "Relación"; -App::$strings["Miscellaneous"] = "Varios"; -App::$strings["Import profile from file"] = "Importar perfil desde un fichero"; -App::$strings["Export profile to file"] = "Exportar perfil a un fichero"; -App::$strings["Your gender"] = "Género"; -App::$strings["Marital status"] = "Estado civil"; -App::$strings["Sexual preference"] = "Preferencia sexual"; -App::$strings["Profile name"] = "Nombre del perfil"; -App::$strings["This is your default profile."] = "Este es su perfil principal."; -App::$strings["Your full name"] = "Nombre completo"; -App::$strings["Title/Description"] = "Título o descripción"; -App::$strings["Street address"] = "Dirección"; -App::$strings["Locality/City"] = "Ciudad"; -App::$strings["Region/State"] = "Región o Estado"; -App::$strings["Postal/Zip code"] = "Código postal"; -App::$strings["Who (if applicable)"] = "Quién (si es pertinente)"; -App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Por ejemplo: ana123, María González, sara@ejemplo.com"; -App::$strings["Since (date)"] = "Desde (fecha)"; -App::$strings["Tell us about yourself"] = "Háblenos de usted"; -App::$strings["Homepage URL"] = "Dirección de la página personal"; -App::$strings["Hometown"] = "Lugar de nacimiento"; -App::$strings["Political views"] = "Ideas políticas"; -App::$strings["Religious views"] = "Creencias religiosas"; -App::$strings["Keywords used in directory listings"] = "Palabras clave utilizadas en los listados de directorios"; -App::$strings["Example: fishing photography software"] = "Por ejemplo: software de fotografía submarina"; -App::$strings["Musical interests"] = "Preferencias musicales"; -App::$strings["Books, literature"] = "Libros, literatura"; -App::$strings["Television"] = "Televisión"; -App::$strings["Film/Dance/Culture/Entertainment"] = "Cine, danza, cultura, entretenimiento"; -App::$strings["Hobbies/Interests"] = "Aficiones o intereses"; -App::$strings["Love/Romance"] = "Vida sentimental o amorosa"; -App::$strings["School/Education"] = "Estudios"; -App::$strings["Contact information and social networks"] = "Información de contacto y redes sociales"; -App::$strings["My other channels"] = "Mis otros canales"; -App::$strings["Communications"] = "Comunicaciones"; -App::$strings["Profile Image"] = "Imagen del perfil"; -App::$strings["Edit Profiles"] = "Editar perfiles"; -App::$strings["Additional Features"] = "Funcionalidades"; -App::$strings["Name is required"] = "El nombre es obligatorio"; -App::$strings["Key and Secret are required"] = "\"Key\" y \"Secret\" son obligatorios"; -App::$strings["Add application"] = "Añadir aplicación"; -App::$strings["Name of application"] = "Nombre de la aplicación"; -App::$strings["Consumer Key"] = "Consumer Key"; -App::$strings["Automatically generated - change if desired. Max length 20"] = "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 20"; -App::$strings["Consumer Secret"] = "Consumer Secret"; -App::$strings["Redirect"] = "Redirigir"; -App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirección - dejar en blanco a menos que su aplicación específicamente lo requiera"; -App::$strings["Icon url"] = "Dirección del icono"; -App::$strings["Application not found."] = "Aplicación no encontrada."; -App::$strings["Connected Apps"] = "Aplicaciones (apps) conectadas"; -App::$strings["Client key starts with"] = "La \"client key\" empieza por"; -App::$strings["No name"] = "Sin nombre"; -App::$strings["Remove authorization"] = "Eliminar autorización"; -App::$strings["Not valid email."] = "Correo electrónico no válido."; -App::$strings["Protected email address. Cannot change to that email."] = "Dirección de correo electrónico protegida. No se puede cambiar a ella."; -App::$strings["System failure storing new email. Please try again."] = "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo."; -App::$strings["Technical skill level updated"] = "Se ha actualizado el nivel de habilidad técnica"; -App::$strings["Password verification failed."] = "La comprobación de la contraseña ha fallado."; -App::$strings["Passwords do not match. Password unchanged."] = "Las contraseñas no coinciden. La contraseña no se ha cambiado."; -App::$strings["Empty passwords are not allowed. Password unchanged."] = "No se permiten contraseñas vacías. La contraseña no se ha cambiado."; -App::$strings["Password changed."] = "Contraseña cambiada."; -App::$strings["Password update failed. Please try again."] = "La actualización de la contraseña ha fallado. Por favor, inténtalo de nuevo."; -App::$strings["Account Settings"] = "Configuración de la cuenta"; -App::$strings["Current Password"] = "Contraseña actual"; -App::$strings["Enter New Password"] = "Escribir una nueva contraseña"; -App::$strings["Confirm New Password"] = "Confirmar la nueva contraseña"; -App::$strings["Leave password fields blank unless changing"] = "Dejar en blanco la contraseña a menos que desee cambiarla."; -App::$strings["Your technical skill level"] = "Su nivel de habilidad técnica"; -App::$strings["Used to provide a member experience matched to your comfort level"] = "Se utiliza para proporcionar la experiencia de los miembros adaptada a su nivel de comodidad"; -App::$strings["Email Address:"] = "Dirección de correo electrónico:"; -App::$strings["Remove this account including all its channels"] = "Eliminar esta cuenta incluyendo todos sus canales"; +App::$strings["Permission category saved."] = "Se ha guardado la categoría del permiso."; +App::$strings["Use this form to create permission rules for various classes of people or connections."] = "Utilice este formulario para crear reglas de permiso para varias clases de personas o conexiones."; +App::$strings["Permission Categories"] = "Categorías de autorización"; +App::$strings["Permission Name"] = "Nombre de la autorización"; +App::$strings["My Settings"] = "Mis ajustes"; +App::$strings["inherited"] = "heredado"; +App::$strings["Individual Permissions"] = "Permisos individuales"; +App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can <strong>not</strong> change those settings here."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. <strong>No</strong> puede cambiar estos ajustes aquí."; +App::$strings["Friends"] = "Amigos/as"; App::$strings["Settings updated."] = "Ajustes actualizados."; App::$strings["Nobody except yourself"] = "Nadie excepto usted"; App::$strings["Only those you specifically allow"] = "Solo aquellos a los que usted permita explícitamente"; @@ -1264,11 +623,13 @@ App::$strings["Anybody authenticated"] = "Cualquiera que esté autenticado"; App::$strings["Anybody on the internet"] = "Cualquiera en internet"; App::$strings["Publish your default profile in the network directory"] = "Publicar su perfil principal en el directorio de la red"; App::$strings["Allow us to suggest you as a potential friend to new members?"] = "¿Nos permite sugerirle como amigo potencial a los nuevos miembros?"; +App::$strings["or"] = "o"; App::$strings["Your channel address is"] = "Su dirección de canal es"; App::$strings["Your files/photos are accessible via WebDAV at"] = "Sus archivos y fotos son accesibles a través de WebDAV en "; App::$strings["Channel Settings"] = "Ajustes del canal"; App::$strings["Basic Settings"] = "Configuración básica"; App::$strings["Full Name:"] = "Nombre completo:"; +App::$strings["Email Address:"] = "Dirección de correo electrónico:"; App::$strings["Your Timezone:"] = "Su huso horario:"; App::$strings["Default Post Location:"] = "Localización geográfica predeterminada para sus publicaciones:"; App::$strings["Geographical location to display on your posts"] = "Localización geográfica que debe mostrarse en sus publicaciones"; @@ -1341,17 +702,8 @@ App::$strings["Default file upload folder"] = "Carpeta por defecto de los ficher App::$strings["Personal menu to display in your channel pages"] = "Menú personal que debe mostrarse en las páginas de su canal"; App::$strings["Remove this channel."] = "Eliminar este canal."; App::$strings["Firefox Share \$Projectname provider"] = "Servicio de compartición de Firefox: proveedor \$Projectname"; -App::$strings["Start calendar week on monday"] = "Comenzar el calendario semanal por el lunes"; -App::$strings["Affinity Slider settings updated."] = "Se han actualizado los ajustes del controlador de afinidad."; -App::$strings["No feature settings configured"] = "No se ha establecido la configuración de los complementos"; -App::$strings["Default maximum affinity level"] = "Nivel máximo de afinidad por defecto"; -App::$strings["Default minimum affinity level"] = "Nivel mínimo de afinidad por defecto"; -App::$strings["Affinity Slider Settings"] = "Ajustes del controlador de afinidad"; -App::$strings["Feature/Addon Settings"] = "Ajustes de los complementos"; -App::$strings["Permission category saved."] = "Se ha guardado la categoría del permiso."; -App::$strings["Use this form to create permission rules for various classes of people or connections."] = "Utilice este formulario para crear reglas de permiso para varias clases de personas o conexiones."; -App::$strings["Permission Categories"] = "Categorías de autorización"; -App::$strings["Permission Name"] = "Nombre de la autorización"; +App::$strings["Start calendar week on Monday"] = "Comenzar el calendario semanal por el lunes"; +App::$strings["Additional Features"] = "Funcionalidades"; App::$strings["This channel is limited to %d tokens"] = "Este canal tiene un límite de %d tokens"; App::$strings["Name and Password are required."] = "Se requiere el nombre y la contraseña."; App::$strings["Token saved."] = "Token salvado."; @@ -1361,6 +713,31 @@ App::$strings["Guest Access Tokens"] = "Tokens de acceso para invitados"; App::$strings["Login Name"] = "Nombre de inicio de sesión"; App::$strings["Login Password"] = "Contraseña de inicio de sesión"; App::$strings["Expires (yyyy-mm-dd)"] = "Expira (aaaa-mm-dd)"; +App::$strings["Their Settings"] = "Sus ajustes"; +App::$strings["Not valid email."] = "Correo electrónico no válido."; +App::$strings["Protected email address. Cannot change to that email."] = "Dirección de correo electrónico protegida. No se puede cambiar a ella."; +App::$strings["System failure storing new email. Please try again."] = "Fallo de sistema al guardar el nuevo correo electrónico. Por favor, inténtelo de nuevo."; +App::$strings["Technical skill level updated"] = "Se ha actualizado el nivel de habilidad técnica"; +App::$strings["Password verification failed."] = "La comprobación de la contraseña ha fallado."; +App::$strings["Passwords do not match. Password unchanged."] = "Las contraseñas no coinciden. La contraseña no se ha cambiado."; +App::$strings["Empty passwords are not allowed. Password unchanged."] = "No se permiten contraseñas vacías. La contraseña no se ha cambiado."; +App::$strings["Password changed."] = "Contraseña cambiada."; +App::$strings["Password update failed. Please try again."] = "La actualización de la contraseña ha fallado. Por favor, inténtalo de nuevo."; +App::$strings["Account Settings"] = "Configuración de la cuenta"; +App::$strings["Current Password"] = "Contraseña actual"; +App::$strings["Enter New Password"] = "Escribir una nueva contraseña"; +App::$strings["Confirm New Password"] = "Confirmar la nueva contraseña"; +App::$strings["Leave password fields blank unless changing"] = "Dejar en blanco la contraseña a menos que desee cambiarla."; +App::$strings["Your technical skill level"] = "Su nivel de habilidad técnica"; +App::$strings["Used to provide a member experience matched to your comfort level"] = "Se utiliza para proporcionar la experiencia de los miembros adaptada a su nivel de comodidad"; +App::$strings["Remove Account"] = "Eliminar cuenta"; +App::$strings["Remove this account including all its channels"] = "Eliminar esta cuenta incluyendo todos sus canales"; +App::$strings["Affinity Slider settings updated."] = "Se han actualizado los ajustes del controlador de afinidad."; +App::$strings["No feature settings configured"] = "No se ha establecido la configuración de los complementos"; +App::$strings["Default maximum affinity level"] = "Nivel máximo de afinidad por defecto"; +App::$strings["Default minimum affinity level"] = "Nivel mínimo de afinidad por defecto"; +App::$strings["Affinity Slider Settings"] = "Ajustes del controlador de afinidad"; +App::$strings["Feature/Addon Settings"] = "Ajustes de los complementos"; App::$strings["No special theme for mobile devices"] = "Sin tema especial para dispositivos móviles"; App::$strings["%s - (Experimental)"] = "%s - (Experimental)"; App::$strings["Display Settings"] = "Ajustes de visualización"; @@ -1388,9 +765,27 @@ App::$strings["Use blog/list mode on grid page"] = "Mostrar mi red en modo blog" App::$strings["Channel page max height of content (in pixels)"] = "Altura máxima del contenido de la página del canal (en píxeles)"; App::$strings["click to expand content exceeding this height"] = "Pulsar para expandir el contenido que exceda de esta altura"; App::$strings["Grid page max height of content (in pixels)"] = "Altura máxima del contenido de mi red (en píxeles)"; -App::$strings["Tag removed"] = "Etiqueta eliminada."; -App::$strings["Remove Item Tag"] = "Eliminar etiqueta del elemento."; -App::$strings["Select a tag to remove: "] = "Seleccionar una etiqueta para eliminar:"; +App::$strings["Name is required"] = "El nombre es obligatorio"; +App::$strings["Key and Secret are required"] = "\"Key\" y \"Secret\" son obligatorios"; +App::$strings["Add application"] = "Añadir aplicación"; +App::$strings["Name of application"] = "Nombre de la aplicación"; +App::$strings["Consumer Key"] = "Consumer Key"; +App::$strings["Automatically generated - change if desired. Max length 20"] = "Generado automáticamente - si lo desea, cámbielo. Longitud máxima: 20"; +App::$strings["Consumer Secret"] = "Consumer Secret"; +App::$strings["Redirect"] = "Redirigir"; +App::$strings["Redirect URI - leave blank unless your application specifically requires this"] = "URI de redirección - dejar en blanco a menos que su aplicación específicamente lo requiera"; +App::$strings["Icon url"] = "Dirección del icono"; +App::$strings["Optional"] = "Opcional"; +App::$strings["Application not found."] = "Aplicación no encontrada."; +App::$strings["Connected Apps"] = "Aplicaciones (apps) conectadas"; +App::$strings["Client key starts with"] = "La \"client key\" empieza por"; +App::$strings["No name"] = "Sin nombre"; +App::$strings["Remove authorization"] = "Eliminar autorización"; +App::$strings["View Photo"] = "Ver foto"; +App::$strings["Unknown"] = "Desconocido"; +App::$strings["Edit Album"] = "Editar álbum"; +App::$strings["Upload"] = "Subir"; +App::$strings["Some blurb about what to do when you're new here"] = "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí"; App::$strings["Thing updated"] = "Elemento actualizado."; App::$strings["Object store: failed"] = "Guardar objeto: ha fallado"; App::$strings["Thing added"] = "Elemento añadido"; @@ -1404,109 +799,162 @@ App::$strings["Only sends to viewers of the applicable profile"] = "Sólo enviar App::$strings["Name of thing e.g. something"] = "Nombre del elemento, p. ej.:. \"algo\""; App::$strings["URL of thing (optional)"] = "Dirección del elemento (opcional)"; App::$strings["URL for photo of thing (optional)"] = "Dirección para la foto o elemento (opcional)"; +App::$strings["Permissions"] = "Permisos"; App::$strings["Add Thing to your Profile"] = "Añadir alguna cosa a su perfil"; -App::$strings["\$Projectname Server - Setup"] = "Servidor \$Projectname - Instalación"; -App::$strings["Could not connect to database."] = "No se ha podido conectar a la base de datos."; -App::$strings["Could not connect to specified site URL. Possible SSL certificate or DNS issue."] = "No se puede conectar con la dirección del sitio indicada. Podría tratarse de un problema de SSL o DNS."; -App::$strings["Could not create table."] = "No se puede crear la tabla."; -App::$strings["Your site database has been installed."] = "La base de datos del sitio ha sido instalada."; -App::$strings["You may need to import the file \"install/schema_xxx.sql\" manually using a database client."] = "Podría tener que importar manualmente el fichero \"install/schema_xxx.sql\" usando un cliente de base de datos."; -App::$strings["Please see the file \"install/INSTALL.txt\"."] = "Por favor, lea el fichero \"install/INSTALL.txt\"."; -App::$strings["System check"] = "Verificación del sistema"; -App::$strings["Check again"] = "Verificar de nuevo"; -App::$strings["Database connection"] = "Conexión a la base de datos"; -App::$strings["In order to install \$Projectname we need to know how to connect to your database."] = "Para instalar \$Projectname es necesario saber cómo conectar con su base de datos."; -App::$strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Por favor, contacte con el proveedor de servicios o el administrador del sitio si tiene dudas sobre estos ajustes."; -App::$strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de datos que especifique a continuación debe existir ya. Si no es así, por favor, créela antes de seguir."; -App::$strings["Database Server Name"] = "Nombre del servidor de base de datos"; -App::$strings["Default is 127.0.0.1"] = "De forma predeterminada es 127.0.0.1"; -App::$strings["Database Port"] = "Puerto de la base de datos"; -App::$strings["Communication port number - use 0 for default"] = "Número del puerto de comunicaciones - use 0 como valor por defecto"; -App::$strings["Database Login Name"] = "Usuario de la base de datos"; -App::$strings["Database Login Password"] = "Contraseña de acceso a la base de datos"; -App::$strings["Database Name"] = "Nombre de la base de datos"; -App::$strings["Database Type"] = "Tipo de base de datos"; -App::$strings["Site administrator email address"] = "Dirección de correo electrónico del administrador del sitio"; -App::$strings["Your account email address must match this in order to use the web admin panel."] = "Su cuenta deberá usar la misma dirección de correo electrónico para poder utilizar el panel de administración web."; -App::$strings["Website URL"] = "Dirección del sitio web"; -App::$strings["Please use SSL (https) URL if available."] = "Por favor, use SSL (https) si está disponible."; -App::$strings["Please select a default timezone for your website"] = "Por favor, selecciones el huso horario por defecto de su sitio web"; -App::$strings["Site settings"] = "Ajustes del sitio"; -App::$strings["PHP version 5.5 or greater is required."] = "Se requiere la versión 5.5, o superior, de PHP."; -App::$strings["PHP version"] = "Versión de PHP"; -App::$strings["Could not find a command line version of PHP in the web server PATH."] = "No se puede encontrar una versión en línea de comandos de PHP en la ruta del servidor web."; -App::$strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron."] = "Si no tiene instalada la versión de línea de comandos de PHP en su servidor, no podrá realizar envíos en segundo plano mediante cron."; -App::$strings["PHP executable path"] = "Ruta del ejecutable PHP"; -App::$strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Introducir la ruta completa del ejecutable PHP. Puede dejar la línea en blanco para continuar la instalación."; -App::$strings["Command line PHP"] = "PHP en línea de comandos"; -App::$strings["Unable to check command line PHP, as shell_exec() is disabled. This is required."] = "No se puede comprobar la línea de comandos PHP, ya que shell_exec() está deshabilitado. Es necesario que esté activado."; -App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La línea de comandos PHP de su sistema no tiene activado \"register_argc_argv\"."; -App::$strings["This is required for message delivery to work."] = "Esto es necesario para que funcione la transmisión de mensajes."; -App::$strings["PHP register_argc_argv"] = "PHP register_argc_argv"; -App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "La carga máxima que se le permite subir está establecida en %s. El tamaño máximo de un fichero está establecido en %s. Está permitido subir hasta un máximo de %d ficheros de una sola vez."; -App::$strings["You can adjust these settings in the server php.ini file."] = "Puede ajustar estos valores en el fichero php.ini de su servidor."; -App::$strings["PHP upload limits"] = "Límites PHP de subida"; -App::$strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: La función \"openssl_pkey_new\" en este sistema no es capaz de general claves de cifrado."; -App::$strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si está en un servidor Windows, por favor, lea \"http://www.php.net/manual/en/openssl.installation.php\"."; -App::$strings["Generate encryption keys"] = "Generar claves de cifrado"; -App::$strings["libCurl PHP module"] = "módulo libCurl PHP"; -App::$strings["GD graphics PHP module"] = "módulo PHP GD graphics"; -App::$strings["OpenSSL PHP module"] = "módulo PHP OpenSSL"; -App::$strings["PDO database PHP module"] = "Módulo PHP de la base de datos PDO "; -App::$strings["mb_string PHP module"] = "módulo PHP mb_string"; -App::$strings["xml PHP module"] = "módulo PHP xml"; -App::$strings["Apache mod_rewrite module"] = "módulo Apache mod_rewrite "; -App::$strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: se necesita el módulo del servidor web Apache mod-rewrite pero no está instalado."; -App::$strings["exec"] = "ejecutable"; -App::$strings["Error: exec is required but is either not installed or has been disabled in php.ini"] = "Error: se necesita un ejecutable pero o no se instaló o está deshabilitado en php.ini"; -App::$strings["shell_exec"] = "shell_exec"; -App::$strings["Error: shell_exec is required but is either not installed or has been disabled in php.ini"] = "Error: se necesita shell_exec pero o no se instaló o está deshabilitado en php.ini"; -App::$strings["Error: libCURL PHP module required but not installed."] = "Error: se necesita el módulo PHP libCURL pero no está instalado."; -App::$strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: el módulo PHP GD graphics es necesario, pero no está instalado."; -App::$strings["Error: openssl PHP module required but not installed."] = "Error: el módulo PHP openssl es necesario, pero no está instalado."; -App::$strings["Error: PDO database PHP module required but not installed."] = "Error: se necesita el módulo PHP de la base de datos PDO, pero no está instalado."; -App::$strings["Error: mb_string PHP module required but not installed."] = "Error: el módulo PHP mb_string es necesario, pero no está instalado."; -App::$strings["Error: xml PHP module required for DAV but not installed."] = "Error: el módulo PHP xml es necesario para DAV, pero no está instalado."; -App::$strings["The web installer needs to be able to create a file called \".htconfig.php\" in the top folder of your web server and it is unable to do so."] = "El instalador web no ha podido crear un fichero llamado “.htconfig.php” en la carpeta base de su servidor."; -App::$strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Esto está generalmente ligado a un problema de permisos, a causa del cual el servidor web tiene prohibido modificar ficheros en su carpeta - incluso si usted mismo tiene esos permisos."; -App::$strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Red top folder."] = "Al término de este procedimiento, podemos crear un fichero de texto para guardar con el nombre .htconfig.php en el directorio raíz de su instalación de Hubzilla."; -App::$strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"install/INSTALL.txt\" for instructions."] = "Como alternativa, puede dejar este procedimiento e intentar realizar una instalación manual. Lea, por favor, el fichero\"install/INSTALL.txt\" para las instrucciones."; -App::$strings[".htconfig.php is writable"] = ".htconfig.php tiene permisos de escritura"; -App::$strings["This software uses the Smarty3 template engine to render its web views. Smarty3 compiles templates to PHP to speed up rendering."] = "Este software hace uso del motor de plantillas Smarty3 para diseñar sus plantillas gráficas. Smarty3 compila las plantillas a PHP para acelerar la renderización."; -App::$strings["In order to store these compiled templates, the web server needs to have write access to the directory %s under the top level web folder."] = "Para poder guardar las plantillas compiladas, el servidor web necesita permisos para acceder al directorio %s en la carpeta web principal."; -App::$strings["Please ensure that the user that your web server runs as (e.g. www-data) has write access to this folder."] = "Por favor, asegúrese de que el servidor web está siendo ejecutado por un usuario que tenga permisos de escritura sobre esta carpeta (por ejemplo, www-data)."; -App::$strings["Note: as a security measure, you should give the web server write access to %s only--not the template files (.tpl) that it contains."] = "Nota: como medida de seguridad, debe dar al servidor web permisos de escritura solo sobre %s - no sobre el fichero de plantilla (.tpl) que contiene."; -App::$strings["%s is writable"] = "%s tiene permisos de escritura"; -App::$strings["This software uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the top level web folder"] = "Este software utiliza el directorio de almacenamiento para guardar los ficheros subidos. El servidor web debe tener acceso de escritura a este directorio en la carpeta de nivel superior"; -App::$strings["store is writable"] = "\"store\" tiene permisos de escritura"; -App::$strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "El certificado SSL no ha podido ser validado. Corrija este problema o desactive el acceso https a este sitio."; -App::$strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Si su servidor soporta conexiones cifradas SSL o si permite conexiones al puerto TCP 443 (el puerto usado por el protocolo https), debe utilizar un certificado válido. No debe usar un certificado firmado por usted mismo."; -App::$strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Se ha incorporado esta restricción para evitar que sus entradas públicas hagan referencia a imágenes en su propio servidor."; -App::$strings["If your certificate is not recognized, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Si su certificado no ha sido reconocido, los miembros de otros sitios (con certificados válidos) recibirán mensajes de aviso en sus propios sitios web."; -App::$strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Por razones de compatibilidad (sobre el conjunto de la red, no solo sobre su propio sitio), debemos insistir en estos requisitos."; -App::$strings["Providers are available that issue free certificates which are browser-valid."] = "Existen varias Autoridades de Certificación que le pueden proporcionar certificados válidos."; -App::$strings["If you are confident that the certificate is valid and signed by a trusted authority, check to see if you have failed to install an intermediate cert. These are not normally required by browsers, but are required for server-to-server communications."] = "Si se tiene la certeza de que el certificado es válido y está firmado por una autoridad de confianza, comprobar para ver si hubo un error al instalar un certificado intermedio. Estos no son normalmente requeridos por los navegadores, pero son necesarios para las comunicaciones de servidor a servidor."; -App::$strings["SSL certificate validation"] = "validación del certificado SSL"; -App::$strings["Url rewrite in .htaccess is not working. Check your server configuration.Test: "] = "No se pueden reescribir las direcciones web en .htaccess. Compruebe la configuración de su servidor:"; -App::$strings["Url rewrite is working"] = "La reescritura de las direcciones funciona correctamente"; -App::$strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "El fichero de configuración de la base de datos .htconfig.php no se ha podido modificar. Por favor, copie el texto generado en un fichero con ese nombre en el directorio raíz de su servidor."; -App::$strings["Errors encountered creating database tables."] = "Se han encontrado errores al crear las tablas de la base de datos."; -App::$strings["<h1>What next</h1>"] = "<h1>Siguiente paso</h1>"; -App::$strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANTE: Debe crear [manualmente] una tarea programada para el \"poller\"."; -App::$strings["No connections."] = "Sin conexiones."; -App::$strings["Visit %s's profile [%s]"] = "Visitar el perfil de %s [%s]"; -App::$strings["View Connections"] = "Ver conexiones"; +App::$strings["No more system notifications."] = "No hay más notificaciones del sistema"; +App::$strings["System Notifications"] = "Notificaciones del sistema"; +App::$strings["Channel added."] = "Canal añadido."; +App::$strings["Your service plan only allows %d channels."] = "Su paquete de servicios solo permite %d canales."; +App::$strings["No channel. Import failed."] = "No hay canal. La importación ha fallado"; +App::$strings["Import completed."] = "Importación completada."; +App::$strings["You must be logged in to use this feature."] = "Debe estar registrado para poder usar esta funcionalidad."; +App::$strings["Import Channel"] = "Importar canal"; +App::$strings["Use this form to import an existing channel from a different server/hub. You may retrieve the channel identity from the old server/hub via the network or provide an export file."] = "Emplee este formulario para importar un canal desde un servidor/hub diferente. Puede recuperar el canal desde el antiguo servidor/hub a través de la red o proporcionando un fichero de exportación."; +App::$strings["Or provide the old server/hub details"] = "O proporcione los detalles de su antiguo servidor/hub"; +App::$strings["Your old identity address (xyz@example.com)"] = "Su identidad en el antiguo servidor (canal@ejemplo.com)"; +App::$strings["Your old login email address"] = "Su antigua dirección de correo electrónico"; +App::$strings["Your old login password"] = "Su antigua contraseña"; +App::$strings["For either option, please choose whether to make this hub your new primary address, or whether your old location should continue this role. You will be able to post from either location, but only one can be marked as the primary location for files, photos, and media."] = "Para cualquiera de las opciones, elija si hacer de este servidor su nueva dirección primaria, o si su antigua dirección debe continuar con este papel. Usted podrá publicar desde cualquier ubicación, pero sólo una puede estar marcada como la ubicación principal para los ficheros, fotos y otras imágenes o vídeos."; +App::$strings["Make this hub my primary location"] = "Convertir este servidor en mi ubicación primaria"; +App::$strings["Move this channel (disable all previous locations)"] = "Mover este canal (desactivar todas las ubicaciones anteriores)"; +App::$strings["Import a few months of posts if possible (limited by available memory"] = "Importar unos meses de mensajes si es posible (limitado por la memoria disponible"; +App::$strings["This process may take several minutes to complete. Please submit the form only once and leave this page open until finished."] = "Este proceso puede tardar varios minutos en completarse. Por favor envíe el formulario una sola vez y mantenga esta página abierta hasta que termine."; +App::$strings["Authentication failed."] = "Falló la autenticación."; +App::$strings["Remote Authentication"] = "Acceso desde su servidor"; +App::$strings["Enter your channel address (e.g. channel@example.com)"] = "Introduzca la dirección del canal (p.ej. canal@ejemplo.com)"; +App::$strings["Authenticate"] = "Acceder"; +App::$strings["Channel not found."] = "Canal no encontrado."; +App::$strings["Permissions denied."] = "Permisos denegados."; +App::$strings["Import"] = "Importar"; +App::$strings["Authorize application connection"] = "Autorizar una conexión de aplicación"; +App::$strings["Return to your app and insert this Security Code:"] = "Vuelva a su aplicación e introduzca este código de seguridad: "; +App::$strings["Please login to continue."] = "Por favor inicie sesión para continuar."; +App::$strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "¿Desea autorizar a esta aplicación a acceder a sus publicaciones y contactos, y/o crear nuevas publicaciones por usted?"; +App::$strings["Item not available."] = "Elemento no disponible"; +App::$strings["Insert web link"] = "Insertar enlace web"; +App::$strings["Title (optional)"] = "Título (opcional)"; +App::$strings["Edit Block"] = "Modificar este bloque"; +App::$strings["vcard"] = "vcard"; +App::$strings["Apps"] = "Aplicaciones (apps)"; +App::$strings["Manage apps"] = "Gestionar las aplicaciones"; +App::$strings["Create new app"] = "Crear una nueva aplicación"; +App::$strings["__ctx:mood__ %1\$s is %2\$s"] = "%1\$s está %2\$s"; +App::$strings["Mood"] = "Estado de ánimo"; +App::$strings["Set your current mood and tell your friends"] = "Describir su estado de ánimo para comunicárselo a sus amigos"; +App::$strings["Blocked"] = "Bloqueadas"; +App::$strings["Ignored"] = "Ignoradas"; +App::$strings["Hidden"] = "Ocultas"; +App::$strings["Archived"] = "Archivadas"; +App::$strings["New"] = "Nuevas"; +App::$strings["All"] = "Todos/as"; +App::$strings["New Connections"] = "Nuevas conexiones"; +App::$strings["Show pending (new) connections"] = "Mostrar conexiones (nuevas) pendientes"; +App::$strings["Show all connections"] = "Mostrar todas las conexiones"; +App::$strings["Only show blocked connections"] = "Mostrar solo las conexiones bloqueadas"; +App::$strings["Only show ignored connections"] = "Mostrar solo conexiones ignoradas"; +App::$strings["Only show archived connections"] = "Mostrar solo las conexiones archivadas"; +App::$strings["Only show hidden connections"] = "Mostrar solo las conexiones ocultas"; +App::$strings["Pending approval"] = "Pendiente de aprobación"; +App::$strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]"; +App::$strings["Edit connection"] = "Editar conexión"; +App::$strings["Delete connection"] = "Eliminar conexión"; +App::$strings["Channel address"] = "Dirección del canal"; +App::$strings["Network"] = "Red"; +App::$strings["Call"] = "Llamar"; +App::$strings["Status"] = "Estado"; +App::$strings["Connected"] = "Conectado/a"; +App::$strings["Approve connection"] = "Aprobar esta conexión"; +App::$strings["Ignore connection"] = "Ignorar esta conexión"; +App::$strings["Ignore"] = "Ignorar"; +App::$strings["Recent activity"] = "Actividad reciente"; +App::$strings["Connections"] = "Conexiones"; +App::$strings["Search your connections"] = "Buscar sus conexiones"; +App::$strings["Connections search"] = "Buscar conexiones"; +App::$strings["Find"] = "Encontrar"; +App::$strings["Source of Item"] = "Origen del elemento"; +App::$strings["Bookmark added"] = "Marcador añadido"; +App::$strings["My Bookmarks"] = "Mis marcadores"; +App::$strings["My Connections Bookmarks"] = "Marcadores de mis conexiones"; +App::$strings["Account removals are not allowed within 48 hours of changing the account password."] = "La eliminación de cuentas no está permitida hasta después de que hayan transcurrido 48 horas desde el último cambio de contraseña."; +App::$strings["Remove This Account"] = "Eliminar esta cuenta"; +App::$strings["This account and all its channels will be completely removed from the network. "] = "Esta cuenta y todos sus canales van a ser eliminados de la red."; +App::$strings["Remove this account, all its channels and all its channel clones from the network"] = "Remover esta cuenta, todos sus canales y clones de la red"; +App::$strings["By default only the instances of the channels located on this hub will be removed from the network"] = "Por defecto, solo las instancias de los canales ubicados en este servidor serán eliminados de la red"; +App::$strings["Page owner information could not be retrieved."] = "La información del propietario de la página no pudo ser recuperada."; +App::$strings["Album not found."] = "Álbum no encontrado."; +App::$strings["Delete Album"] = "Borrar álbum"; +App::$strings["Delete Photo"] = "Borrar foto"; +App::$strings["No photos selected"] = "No hay fotos seleccionadas"; +App::$strings["Access to this item is restricted."] = "El acceso a este elemento está restringido."; +App::$strings["%1$.2f MB of %2$.2f MB photo storage used."] = "%1$.2f MB de %2$.2f MB de almacenamiento de fotos utilizado."; +App::$strings["%1$.2f MB photo storage used."] = "%1$.2f MB de almacenamiento de fotos utilizado."; +App::$strings["Upload Photos"] = "Subir fotos"; +App::$strings["Enter an album name"] = "Introducir un nombre de álbum"; +App::$strings["or select an existing album (doubleclick)"] = "o seleccionar uno existente (doble click)"; +App::$strings["Create a status post for this upload"] = "Crear un mensaje de estado para esta subida"; +App::$strings["Caption (optional):"] = "Título (opcional):"; +App::$strings["Description (optional):"] = "Descripción (opcional):"; +App::$strings["Show Newest First"] = "Mostrar lo más reciente primero"; +App::$strings["Show Oldest First"] = "Mostrar lo más antiguo primero"; +App::$strings["Permission denied. Access to this item may be restricted."] = "Permiso denegado. El acceso a este elemento puede estar restringido."; +App::$strings["Photo not available"] = "Foto no disponible"; +App::$strings["Use as profile photo"] = "Usar como foto del perfil"; +App::$strings["Use as cover photo"] = "Usar como imagen de portada del perfil"; +App::$strings["Private Photo"] = "Foto privada"; +App::$strings["View Full Size"] = "Ver tamaño completo"; +App::$strings["Edit photo"] = "Editar foto"; +App::$strings["Rotate CW (right)"] = "Girar CW (a la derecha)"; +App::$strings["Rotate CCW (left)"] = "Girar CCW (a la izquierda)"; +App::$strings["Move photo to album"] = "Mover la foto a un álbum"; +App::$strings["Enter a new album name"] = "Introducir un nuevo nombre de álbum"; +App::$strings["or select an existing one (doubleclick)"] = "o seleccionar uno (doble click) existente"; +App::$strings["Caption"] = "Título"; +App::$strings["Add a Tag"] = "Añadir una etiqueta"; +App::$strings["Example: @bob, @Barbara_Jensen, @jim@example.com"] = "Ejemplos: @eva, @Carmen_Osuna, @jaime@ejemplo.com"; +App::$strings["Flag as adult in album view"] = "Marcar como \"solo para adultos\" en el álbum"; +App::$strings["I like this (toggle)"] = "Me gusta (cambiar)"; +App::$strings["I don't like this (toggle)"] = "No me gusta esto (cambiar)"; +App::$strings["Please wait"] = "Espere por favor"; +App::$strings["This is you"] = "Este es usted"; +App::$strings["Comment"] = "Comentar"; +App::$strings["__ctx:title__ Likes"] = "Me gusta"; +App::$strings["__ctx:title__ Dislikes"] = "No me gusta"; +App::$strings["__ctx:title__ Agree"] = "De acuerdo"; +App::$strings["__ctx:title__ Disagree"] = "En desacuerdo"; +App::$strings["__ctx:title__ Abstain"] = "Abstención"; +App::$strings["__ctx:title__ Attending"] = "Participaré"; +App::$strings["__ctx:title__ Not attending"] = "No participaré"; +App::$strings["__ctx:title__ Might attend"] = "Quizá participe"; +App::$strings["View all"] = "Ver todo"; +App::$strings["__ctx:noun__ Like"] = array( + 0 => "Me gusta", + 1 => "Me gusta", +); +App::$strings["__ctx:noun__ Dislike"] = array( + 0 => "No me gusta", + 1 => "No me gusta", +); +App::$strings["Photo Tools"] = "Gestión de las fotos"; +App::$strings["In This Photo:"] = "En esta foto:"; +App::$strings["Map"] = "Mapa"; +App::$strings["__ctx:noun__ Likes"] = "Me gusta"; +App::$strings["__ctx:noun__ Dislikes"] = "No me gusta"; +App::$strings["Close"] = "Cerrar"; +App::$strings["Recent Photos"] = "Fotos recientes"; App::$strings["Profile Unavailable."] = "Perfil no disponible"; App::$strings["Not found"] = "No encontrado"; App::$strings["Invalid channel"] = "Canal no válido"; App::$strings["Wikis"] = "Wikis"; App::$strings["Download"] = "Descargar"; +App::$strings["Create New"] = "Crear"; App::$strings["Wiki name"] = "Nombre del wiki"; App::$strings["Content type"] = "Tipo de contenido"; +App::$strings["Type"] = "Tipo"; App::$strings["Create a status post for this wiki"] = "Crear un mensaje de estado para este wiki"; App::$strings["Wiki not found"] = "Wiki no encontrado"; App::$strings["Rename page"] = "Renombrar la página"; App::$strings["Error retrieving page content"] = "Error al recuperar el contenido de la página"; +App::$strings["New page"] = "Nueva página"; App::$strings["Revision Comparison"] = "Comparación de revisiones"; App::$strings["Revert"] = "Revertir"; App::$strings["Short description of your changes (optional)"] = "Breve descripción de sus cambios (opcional)"; @@ -1522,6 +970,7 @@ App::$strings["Error getting album list"] = "Error al obtener la lista de álbum App::$strings["Error getting photo link"] = "Error al obtener el enlace de la foto"; App::$strings["Error getting album"] = "Error al obtener el álbum"; App::$strings["Error creating wiki. Invalid name."] = "Error al crear el wiki: el nombre no es válido."; +App::$strings["A wiki with this name already exists."] = "Ya hay un wiki con este nombre."; App::$strings["Wiki created, but error creating Home page."] = "Se ha creado el wiki, pero se ha producido un error al crear la página de inicio."; App::$strings["Error creating wiki"] = "Error al crear el wiki"; App::$strings["Wiki delete permission denied."] = "Se ha denegado el permiso para eliminar el wiki."; @@ -1531,12 +980,152 @@ App::$strings["Cannot delete Home"] = "No se puede eliminar la página principal App::$strings["Current Revision"] = "Revisión actual"; App::$strings["Selected Revision"] = "Revisión seleccionada"; App::$strings["You must be authenticated."] = "Debe estar autenticado."; +App::$strings["toggle full screen mode"] = "cambiar al modo de pantalla completa"; +App::$strings["Layout updated."] = "Plantilla actualizada."; +App::$strings["Feature disabled."] = "Funcionalidad deshabilitada."; +App::$strings["Edit System Page Description"] = "Editor del Sistema de Descripción de Páginas"; +App::$strings["Layout not found."] = "Plantilla no encontrada"; +App::$strings["Module Name:"] = "Nombre del módulo:"; +App::$strings["Layout Help"] = "Ayuda para el diseño de plantillas de página"; +App::$strings["Poke"] = "Toques y otras cosas"; +App::$strings["Poke somebody"] = "Dar un toque a alguien"; +App::$strings["Poke/Prod"] = "Toque/Incitación"; +App::$strings["Poke, prod or do other things to somebody"] = "Dar un toque, incitar o hacer otras cosas a alguien"; +App::$strings["Recipient"] = "Destinatario"; +App::$strings["Choose what you wish to do to recipient"] = "Elegir qué desea enviar al destinatario"; +App::$strings["Make this post private"] = "Convertir en privado este envío"; +App::$strings["Image uploaded but image cropping failed."] = "Imagen actualizada, pero el recorte de la imagen ha fallado. "; +App::$strings["Profile Photos"] = "Fotos del perfil"; +App::$strings["Image resize failed."] = "El ajuste del tamaño de la imagen ha fallado."; +App::$strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Recargue la página o limpie el caché del navegador si la nueva foto no se muestra inmediatamente."; +App::$strings["Unable to process image"] = "No ha sido posible procesar la imagen"; +App::$strings["Image upload failed."] = "La carga de la imagen ha fallado."; +App::$strings["Unable to process image."] = "No ha sido posible procesar la imagen."; +App::$strings["Photo not available."] = "Foto no disponible."; +App::$strings["Upload File:"] = "Subir fichero:"; +App::$strings["Select a profile:"] = "Seleccionar un perfil:"; +App::$strings["Use Photo for Profile"] = "Usar la fotografía para el perfil"; +App::$strings["Upload Profile Photo"] = "Subir foto de perfil"; +App::$strings["Use"] = "Usar"; +App::$strings["skip this step"] = "Omitir este paso"; +App::$strings["select a photo from your photo albums"] = "Seleccione una foto de sus álbumes de fotos"; +App::$strings["Crop Image"] = "Recortar imagen"; +App::$strings["Please adjust the image cropping for optimum viewing."] = "Por favor ajuste el recorte de la imagen para una visión óptima."; +App::$strings["Done Editing"] = "Edición completada"; +App::$strings["Away"] = "Ausente"; +App::$strings["Online"] = "Conectado/a"; +App::$strings["Unable to locate original post."] = "No ha sido posible encontrar la entrada original."; +App::$strings["Empty post discarded."] = "La entrada vacía ha sido desechada."; +App::$strings["Duplicate post suppressed."] = "Se ha suprimido la entrada duplicada."; +App::$strings["System error. Post not saved."] = "Error del sistema. La entrada no se ha podido salvar."; +App::$strings["Unable to obtain post information from database."] = "No ha sido posible obtener información de la entrada en la base de datos."; +App::$strings["You have reached your limit of %1$.0f top level posts."] = "Ha alcanzado su límite de %1$.0f entradas en la página principal."; +App::$strings["You have reached your limit of %1$.0f webpages."] = "Ha alcanzado su límite de %1$.0f páginas web."; +App::$strings["sent you a private message"] = "le ha enviado un mensaje privado"; +App::$strings["added your channel"] = "añadió este canal a sus conexiones"; +App::$strings["g A l F d"] = "g A l d F"; +App::$strings["[today]"] = "[hoy]"; +App::$strings["posted an event"] = "publicó un evento"; +App::$strings["Invalid item."] = "Elemento no válido."; +App::$strings["Page not found."] = "Página no encontrada."; +App::$strings["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; +App::$strings["Could not access contact record."] = "No se ha podido acceder al registro de contacto."; +App::$strings["Could not locate selected profile."] = "No se ha podido localizar el perfil seleccionado."; +App::$strings["Connection updated."] = "Conexión actualizada."; +App::$strings["Failed to update connection record."] = "Error al actualizar el registro de la conexión."; +App::$strings["is now connected to"] = "ahora está conectado/a"; +App::$strings["Could not access address book record."] = "No se pudo acceder al registro en su libreta de direcciones."; +App::$strings["Refresh failed - channel is currently unavailable."] = "Recarga fallida - no se puede encontrar el canal en este momento."; +App::$strings["Unable to set address book parameters."] = "No ha sido posible establecer los parámetros de la libreta de direcciones."; +App::$strings["Connection has been removed."] = "La conexión ha sido eliminada."; +App::$strings["View Profile"] = "Ver el perfil"; +App::$strings["View %s's profile"] = "Ver el perfil de %s"; +App::$strings["Refresh Permissions"] = "Recargar los permisos"; +App::$strings["Fetch updated permissions"] = "Obtener los permisos actualizados"; +App::$strings["Refresh Photo"] = "Actualizar la foto"; +App::$strings["Fetch updated photo"] = "Obtener una foto actualizada"; +App::$strings["Recent Activity"] = "Actividad reciente"; +App::$strings["View recent posts and comments"] = "Ver publicaciones y comentarios recientes"; +App::$strings["Block (or Unblock) all communications with this connection"] = "Bloquear (o desbloquear) todas las comunicaciones con esta conexión"; +App::$strings["This connection is blocked!"] = "¡Esta conexión está bloqueada!"; +App::$strings["Unignore"] = "Dejar de ignorar"; +App::$strings["Ignore (or Unignore) all inbound communications from this connection"] = "Ignorar (o dejar de ignorar) todas las comunicaciones entrantes de esta conexión"; +App::$strings["This connection is ignored!"] = "¡Esta conexión es ignorada!"; +App::$strings["Unarchive"] = "Desarchivar"; +App::$strings["Archive"] = "Archivar"; +App::$strings["Archive (or Unarchive) this connection - mark channel dead but keep content"] = "Archiva (o desarchiva) esta conexión - marca el canal como muerto aunque mantiene sus contenidos"; +App::$strings["This connection is archived!"] = "¡Esta conexión esta archivada!"; +App::$strings["Unhide"] = "Mostrar"; +App::$strings["Hide"] = "Ocultar"; +App::$strings["Hide or Unhide this connection from your other connections"] = "Ocultar o mostrar esta conexión a sus otras conexiones"; +App::$strings["This connection is hidden!"] = "¡Esta conexión está oculta!"; +App::$strings["Delete this connection"] = "Eliminar esta conexión"; +App::$strings["Fetch Vcard"] = "Obtener una vcard"; +App::$strings["Fetch electronic calling card for this connection"] = "Obtener una tarjeta de llamada electrónica para esta conexión"; +App::$strings["Open Individual Permissions section by default"] = "Abrir la sección de permisos individuales por defecto"; +App::$strings["Affinity"] = "Afinidad"; +App::$strings["Open Set Affinity section by default"] = "Abrir por defecto la sección para definir la afinidad"; +App::$strings["Me"] = "Yo"; +App::$strings["Family"] = "Familia"; +App::$strings["Acquaintances"] = "Conocidos/as"; +App::$strings["Filter"] = "Filtrar"; +App::$strings["Open Custom Filter section by default"] = "Abrir por defecto la sección de personalización de filtros"; +App::$strings["Approve this connection"] = "Aprobar esta conexión"; +App::$strings["Accept connection to allow communication"] = "Aceptar la conexión para permitir la comunicación"; +App::$strings["Set Affinity"] = "Ajustar la afinidad"; +App::$strings["Set Profile"] = "Ajustar el perfil"; +App::$strings["Set Affinity & Profile"] = "Ajustar la afinidad y el perfil"; +App::$strings["none"] = "-"; +App::$strings["Connection Default Permissions"] = "Permisos predeterminados de conexión"; +App::$strings["Connection: %s"] = "Conexión: %s"; +App::$strings["Apply these permissions automatically"] = "Aplicar estos permisos automaticamente"; +App::$strings["Connection requests will be approved without your interaction"] = "Las solicitudes de conexión serán aprobadas sin su intervención"; +App::$strings["Permission role"] = "Rol de acceso"; +App::$strings["Add permission role"] = "Añadir un rol de acceso"; +App::$strings["This connection's primary address is"] = "La dirección primaria de esta conexión es"; +App::$strings["Available locations:"] = "Ubicaciones disponibles:"; +App::$strings["The permissions indicated on this page will be applied to all new connections."] = "Los permisos indicados en esta página serán aplicados en todas las nuevas conexiones."; +App::$strings["Connection Tools"] = "Gestión de las conexiones"; +App::$strings["Slide to adjust your degree of friendship"] = "Deslizar para ajustar el grado de amistad"; +App::$strings["Rating"] = "Valoración"; +App::$strings["Slide to adjust your rating"] = "Deslizar para ajustar su valoración"; +App::$strings["Optionally explain your rating"] = "Opcionalmente, puede explicar su valoración"; +App::$strings["Custom Filter"] = "Filtro personalizado"; +App::$strings["Only import posts with this text"] = "Importar solo entradas que contengan este texto"; +App::$strings["words one per line or #tags or /patterns/ or lang=xx, leave blank to import all posts"] = "Una sola opción por línea: palabras, #etiquetas, /patrones/ o lang=xx. Dejar en blanco para importarlo todo"; +App::$strings["Do not import posts with this text"] = "No importar entradas que contengan este texto"; +App::$strings["This information is public!"] = "¡Esta información es pública!"; +App::$strings["Connection Pending Approval"] = "Conexión pendiente de aprobación"; +App::$strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Por favor, escoja el perfil que quiere mostrar a %s cuando esté viendo su perfil de forma segura."; +App::$strings["Some permissions may be inherited from your channel's <a href=\"settings\"><strong>privacy settings</strong></a>, which have higher priority than individual settings. You can change those settings here but they wont have any impact unless the inherited setting changes."] = "Algunos permisos pueden ser heredados de los <a href=\"settings\"><strong>ajustes de privacidad</strong></a> de sus canales, los cuales tienen una prioridad más alta que los ajustes individuales. Puede cambiar estos ajustes aquí, pero no tendrán ningún consecuencia hasta que cambie los ajustes heredados."; +App::$strings["Last update:"] = "Última actualización:"; +App::$strings["Details"] = "Detalles"; +App::$strings["Organisation"] = "Organización"; +App::$strings["Title"] = "Título"; +App::$strings["Phone"] = "Teléfono"; +App::$strings["Instant messenger"] = "Mensajería instantánea"; +App::$strings["Website"] = "Sitio web"; +App::$strings["Note"] = "Nota"; +App::$strings["Mobile"] = "Móvil"; +App::$strings["Home"] = "Inicio"; +App::$strings["Work"] = "Trabajo"; +App::$strings["Add Contact"] = "Añadir un contacto"; +App::$strings["Add Field"] = "Añadir un campo"; +App::$strings["P.O. Box"] = "Buzón de correos"; +App::$strings["Additional"] = "Adicional"; +App::$strings["Street"] = "Calle"; +App::$strings["Locality"] = "Localidad"; +App::$strings["Region"] = "Provincia, región o estado"; +App::$strings["ZIP Code"] = "Código postal"; +App::$strings["Country"] = "País"; App::$strings["Room not found"] = "Sala no encontrada"; App::$strings["Leave Room"] = "Abandonar la sala"; App::$strings["Delete Room"] = "Eliminar esta sala"; App::$strings["I am away right now"] = "Estoy ausente momentáneamente"; App::$strings["I am online"] = "Estoy conectado/a"; App::$strings["Bookmark this room"] = "Añadir esta sala a Marcadores"; +App::$strings["Please enter a link URL:"] = "Por favor, introduzca la dirección del enlace:"; +App::$strings["Encrypt text"] = "Cifrar texto"; App::$strings["New Chatroom"] = "Nueva sala de chat"; App::$strings["Chatroom name"] = "Nombre de la sala de chat"; App::$strings["Expiration of chats (minutes)"] = "Caducidad de los mensajes en los chats (en minutos)"; @@ -1544,8 +1133,462 @@ App::$strings["%1\$s's Chatrooms"] = "Salas de chat de %1\$s"; App::$strings["No chatrooms available"] = "No hay salas de chat disponibles"; App::$strings["Expiration"] = "Caducidad"; App::$strings["min"] = "min"; +App::$strings["Photos"] = "Fotos"; +App::$strings["Files"] = "Ficheros"; +App::$strings["Unable to update menu."] = "No se puede actualizar el menú."; +App::$strings["Unable to create menu."] = "No se puede crear el menú."; +App::$strings["Menu Name"] = "Nombre del menú"; +App::$strings["Unique name (not visible on webpage) - required"] = "Nombre único (no será visible en la página web) - requerido"; +App::$strings["Menu Title"] = "Título del menú"; +App::$strings["Visible on webpage - leave empty for no title"] = "Visible en la página web - no ponga nada si no desea un título"; +App::$strings["Allow Bookmarks"] = "Permitir marcadores"; +App::$strings["Menu may be used to store saved bookmarks"] = "El menú se puede usar para guardar marcadores"; +App::$strings["Submit and proceed"] = "Enviar y proceder"; +App::$strings["Menus"] = "Menús"; +App::$strings["Bookmarks allowed"] = "Marcadores permitidos"; +App::$strings["Delete this menu"] = "Borrar este menú"; +App::$strings["Edit menu contents"] = "Editar los contenidos del menú"; +App::$strings["Edit this menu"] = "Modificar este menú"; +App::$strings["Menu could not be deleted."] = "El menú no puede ser eliminado."; +App::$strings["Edit Menu"] = "Modificar el menú"; +App::$strings["Add or remove entries to this menu"] = "Añadir o quitar entradas en este menú"; +App::$strings["Menu name"] = "Nombre del menú"; +App::$strings["Must be unique, only seen by you"] = "Debe ser único, solo será visible para usted"; +App::$strings["Menu title"] = "Título del menú"; +App::$strings["Menu title as seen by others"] = "El título del menú tal como será visto por los demás"; +App::$strings["Allow bookmarks"] = "Permitir marcadores"; +App::$strings["Layouts"] = "Plantillas"; +App::$strings["Help"] = "Ayuda"; +App::$strings["Comanche page description language help"] = "Página de ayuda del lenguaje de descripción de páginas (PDL) Comanche"; +App::$strings["Layout Description"] = "Descripción de la plantilla"; +App::$strings["Download PDL file"] = "Descargar el fichero PDL"; +App::$strings["post"] = "la entrada"; +App::$strings["comment"] = "el comentario"; +App::$strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s ha etiquetado %3\$s de %2\$s con %4\$s"; +App::$strings["This setting requires special processing and editing has been blocked."] = "Este ajuste necesita de un proceso especial y la edición ha sido bloqueada."; +App::$strings["Configuration Editor"] = "Editor de configuración"; +App::$strings["Warning: Changing some settings could render your channel inoperable. Please leave this page unless you are comfortable with and knowledgeable about how to correctly use this feature."] = "Atención: El cambio de algunos ajustes puede volver inutilizable su canal. Por favor, abandone la página excepto que esté seguro y sepa cómo usar correctamente esta característica."; +App::$strings["Privacy group created."] = "El grupo de canales ha sido creado."; +App::$strings["Could not create privacy group."] = "No se puede crear el grupo de canales"; +App::$strings["Privacy group not found."] = "Grupo de canales no encontrado."; +App::$strings["Privacy group updated."] = "Grupo de canales actualizado."; +App::$strings["Create a group of channels."] = "Crear un grupo de canales."; +App::$strings["Privacy group name: "] = "Nombre del grupo de canales:"; +App::$strings["Members are visible to other channels"] = "Los miembros son visibles para otros canales"; +App::$strings["Privacy group removed."] = "Grupo de canales eliminado."; +App::$strings["Unable to remove privacy group."] = "No se puede eliminar el grupo de canales."; +App::$strings["Privacy group editor"] = "Editor de grupos de canales"; +App::$strings["Members"] = "Miembros"; +App::$strings["All Connected Channels"] = "Todos los canales conectados"; +App::$strings["Click on a channel to add or remove."] = "Haga clic en un canal para agregarlo o quitarlo."; +App::$strings["Profile not found."] = "Perfil no encontrado."; +App::$strings["Profile deleted."] = "Perfil eliminado."; +App::$strings["Profile-"] = "Perfil-"; +App::$strings["New profile created."] = "El nuevo perfil ha sido creado."; +App::$strings["Profile unavailable to clone."] = "Perfil no disponible para clonar."; +App::$strings["Profile unavailable to export."] = "Perfil no disponible para exportar."; +App::$strings["Profile Name is required."] = "Se necesita el nombre del perfil."; +App::$strings["Marital Status"] = "Estado civil"; +App::$strings["Romantic Partner"] = "Pareja sentimental"; +App::$strings["Likes"] = "Me gusta"; +App::$strings["Dislikes"] = "No me gusta"; +App::$strings["Work/Employment"] = "Trabajo:"; +App::$strings["Religion"] = "Religión"; +App::$strings["Political Views"] = "Ideas políticas"; +App::$strings["Gender"] = "Género"; +App::$strings["Sexual Preference"] = "Preferencia sexual"; +App::$strings["Homepage"] = "Página personal"; +App::$strings["Interests"] = "Intereses"; +App::$strings["Profile updated."] = "Perfil actualizado."; +App::$strings["Hide your connections list from viewers of this profile"] = "Ocultar la lista de conexiones a los visitantes del perfil"; +App::$strings["Edit Profile Details"] = "Modificar los detalles de este perfil"; +App::$strings["View this profile"] = "Ver este perfil"; +App::$strings["Edit visibility"] = "Editar visibilidad"; +App::$strings["Profile Tools"] = "Gestión del perfil"; +App::$strings["Change cover photo"] = "Cambiar la imagen de portada del perfil"; +App::$strings["Change profile photo"] = "Cambiar la foto del perfil"; +App::$strings["Create a new profile using these settings"] = "Crear un nuevo perfil usando estos ajustes"; +App::$strings["Clone this profile"] = "Clonar este perfil"; +App::$strings["Delete this profile"] = "Eliminar este perfil"; +App::$strings["Add profile things"] = "Añadir cosas al perfil"; +App::$strings["Personal"] = "Personales"; +App::$strings["Relation"] = "Relación"; +App::$strings["Miscellaneous"] = "Varios"; +App::$strings["Import profile from file"] = "Importar perfil desde un fichero"; +App::$strings["Export profile to file"] = "Exportar perfil a un fichero"; +App::$strings["Your gender"] = "Género"; +App::$strings["Marital status"] = "Estado civil"; +App::$strings["Sexual preference"] = "Preferencia sexual"; +App::$strings["Profile name"] = "Nombre del perfil"; +App::$strings["This is your default profile."] = "Este es su perfil principal."; +App::$strings["Your full name"] = "Nombre completo"; +App::$strings["Title/Description"] = "Título o descripción"; +App::$strings["Street address"] = "Dirección"; +App::$strings["Locality/City"] = "Ciudad"; +App::$strings["Region/State"] = "Región o Estado"; +App::$strings["Postal/Zip code"] = "Código postal"; +App::$strings["Who (if applicable)"] = "Quién (si es pertinente)"; +App::$strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Por ejemplo: ana123, María González, sara@ejemplo.com"; +App::$strings["Since (date)"] = "Desde (fecha)"; +App::$strings["Tell us about yourself"] = "Háblenos de usted"; +App::$strings["Homepage URL"] = "Dirección de la página personal"; +App::$strings["Hometown"] = "Lugar de nacimiento"; +App::$strings["Political views"] = "Ideas políticas"; +App::$strings["Religious views"] = "Creencias religiosas"; +App::$strings["Keywords used in directory listings"] = "Palabras clave utilizadas en los listados de directorios"; +App::$strings["Example: fishing photography software"] = "Por ejemplo: software de fotografía submarina"; +App::$strings["Musical interests"] = "Preferencias musicales"; +App::$strings["Books, literature"] = "Libros, literatura"; +App::$strings["Television"] = "Televisión"; +App::$strings["Film/Dance/Culture/Entertainment"] = "Cine, danza, cultura, entretenimiento"; +App::$strings["Hobbies/Interests"] = "Aficiones o intereses"; +App::$strings["Love/Romance"] = "Vida sentimental o amorosa"; +App::$strings["School/Education"] = "Estudios"; +App::$strings["Contact information and social networks"] = "Información de contacto y redes sociales"; +App::$strings["My other channels"] = "Mis otros canales"; +App::$strings["Communications"] = "Comunicaciones"; +App::$strings["Profile Image"] = "Imagen del perfil"; +App::$strings["Edit Profiles"] = "Editar perfiles"; +App::$strings["Page link"] = "Enlace de la página"; +App::$strings["Edit Webpage"] = "Editar la página web"; +App::$strings["Create a new channel"] = "Crear un nuevo canal"; +App::$strings["Channel Manager"] = "Administración de canales"; +App::$strings["Current Channel"] = "Canal actual"; +App::$strings["Switch to one of your channels by selecting it."] = "Cambiar a uno de sus canales seleccionándolo."; +App::$strings["Default Channel"] = "Canal principal"; +App::$strings["Make Default"] = "Convertir en predeterminado"; +App::$strings["%d new messages"] = "%d mensajes nuevos"; +App::$strings["%d new introductions"] = "%d nuevas solicitudes de conexión"; +App::$strings["Delegated Channel"] = "Canal delegado"; +App::$strings["This directory server requires an access token"] = "El servidor de este directorio necesita un \"token\" de acceso"; +App::$strings["About this site"] = "Acerca de este sitio"; +App::$strings["Site Name"] = "Nombre del sitio"; +App::$strings["Administrator"] = "Administrador"; +App::$strings["Terms of Service"] = "Términos del servicio"; +App::$strings["Software and Project information"] = "Información sobre el software y el proyecto"; +App::$strings["This site is powered by \$Projectname"] = "Este sitio funciona con \$Projectname"; +App::$strings["Federated and decentralised networking and identity services provided by Zot"] = "Servicios federados y descentralizados de identidad y redes proporcionados por Zot"; +App::$strings["Version %s"] = "Versión %s"; +App::$strings["Project homepage"] = "Página principal del proyecto"; +App::$strings["Developer homepage"] = "Página principal del desarrollador"; +App::$strings["No ratings"] = "Ninguna valoración"; +App::$strings["Ratings"] = "Valoraciones"; +App::$strings["Rating: "] = "Valoración:"; +App::$strings["Website: "] = "Sitio web:"; +App::$strings["Description: "] = "Descripción:"; +App::$strings["Import Webpage Elements"] = "Importar elementos de una página web"; +App::$strings["Import selected"] = "Importar elementos seleccionados"; +App::$strings["Export Webpage Elements"] = "Exportar elementos de una página web"; +App::$strings["Export selected"] = "Exportar los elementos seleccionados"; +App::$strings["Webpages"] = "Páginas web"; +App::$strings["Actions"] = "Acciones"; +App::$strings["Page Link"] = "Vínculo de la página"; +App::$strings["Page Title"] = "Título de página"; +App::$strings["Invalid file type."] = "Tipo de fichero no válido."; +App::$strings["Error opening zip file"] = "Error al abrir el fichero comprimido zip"; +App::$strings["Invalid folder path."] = "La ruta de la carpeta no es válida."; +App::$strings["No webpage elements detected."] = "No se han detectado elementos de ninguna página web."; +App::$strings["Import complete."] = "Importación completada."; +App::$strings["Item is not editable"] = "El elemento no es editable"; +App::$strings["Edit post"] = "Editar la entrada"; +App::$strings["Invalid message"] = "Mensaje no válido"; +App::$strings["no results"] = "sin resultados"; +App::$strings["channel sync processed"] = "se ha realizado la sincronización del canal"; +App::$strings["queued"] = "encolado"; +App::$strings["posted"] = "enviado"; +App::$strings["accepted for delivery"] = "aceptado para el envío"; +App::$strings["updated"] = "actualizado"; +App::$strings["update ignored"] = "actualización ignorada"; +App::$strings["permission denied"] = "permiso denegado"; +App::$strings["recipient not found"] = "destinatario no encontrado"; +App::$strings["mail recalled"] = "mensaje de correo revocado"; +App::$strings["duplicate mail received"] = "se ha recibido mensaje duplicado"; +App::$strings["mail delivered"] = "correo enviado"; +App::$strings["Delivery report for %1\$s"] = "Informe de entrega para %1\$s"; +App::$strings["Options"] = "Opciones"; +App::$strings["Redeliver"] = "Volver a enviar"; +App::$strings["Failed to create source. No channel selected."] = "No se ha podido crear el origen de los contenidos. No ha sido seleccionado ningún canal."; +App::$strings["Source created."] = "Fuente creada."; +App::$strings["Source updated."] = "Fuente actualizada."; +App::$strings["*"] = "*"; +App::$strings["Channel Sources"] = "Orígenes de los contenidos del canal"; +App::$strings["Manage remote sources of content for your channel."] = "Gestionar contenido de origen remoto para su canal."; +App::$strings["New Source"] = "Nueva fuente"; +App::$strings["Import all or selected content from the following channel into this channel and distribute it according to your channel settings."] = "Importar todo el contenido o una selección de los siguientes canales en este canal y distribuirlo de acuerdo con sus ajustes."; +App::$strings["Only import content with these words (one per line)"] = "Importar solo contenido que contenga estas palabras (una por línea)"; +App::$strings["Leave blank to import all public content"] = "Dejar en blanco para importar todo el contenido público"; +App::$strings["Channel Name"] = "Nombre del canal"; +App::$strings["Add the following categories to posts imported from this source (comma separated)"] = "Añadir los temas siguientes a las entradas importadas de esta fuente (separadas por comas)"; +App::$strings["Source not found."] = "Fuente no encontrada"; +App::$strings["Edit Source"] = "Editar fuente"; +App::$strings["Delete Source"] = "Eliminar fuente"; +App::$strings["Source removed"] = "Fuente eliminada"; +App::$strings["Unable to remove source."] = "No se puede eliminar la fuente."; +App::$strings["Like/Dislike"] = "Me gusta/No me gusta"; +App::$strings["This action is restricted to members."] = "Esta acción está restringida solo para miembros."; +App::$strings["Please <a href=\"rmagic\">login with your \$Projectname ID</a> or <a href=\"register\">register as a new \$Projectname member</a> to continue."] = "Por favor, <a href=\"rmagic\">identifíquese con su \$Projectname ID</a> o <a href=\"register\">rregístrese como un nuevo \$Projectname member</a> para continuar."; +App::$strings["Invalid request."] = "Solicitud incorrecta."; +App::$strings["channel"] = "el canal"; +App::$strings["thing"] = "elemento"; +App::$strings["Channel unavailable."] = "Canal no disponible."; +App::$strings["Previous action reversed."] = "Acción anterior revocada."; +App::$strings["%1\$s likes %2\$s's %3\$s"] = "A %1\$s le gusta %3\$s de %2\$s"; +App::$strings["%1\$s doesn't like %2\$s's %3\$s"] = "A %1\$s no le gusta %3\$s de %2\$s"; +App::$strings["%1\$s agrees with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s está de acuerdo"; +App::$strings["%1\$s doesn't agree with %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no está de acuerdo"; +App::$strings["%1\$s abstains from a decision on %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s se abstiene"; +App::$strings["%1\$s is attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s participa"; +App::$strings["%1\$s is not attending %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s no participa"; +App::$strings["%1\$s may attend %2\$s's %3\$s"] = "%3\$s de %2\$s: %1\$s quizá participe"; +App::$strings["Action completed."] = "Acción completada."; +App::$strings["Thank you."] = "Gracias."; +App::$strings["%d rating"] = array( + 0 => "%d valoración", + 1 => "%d valoraciones", +); +App::$strings["Gender: "] = "Género:"; +App::$strings["Status: "] = "Estado:"; +App::$strings["Homepage: "] = "Página personal:"; +App::$strings["Age:"] = "Edad:"; +App::$strings["Location:"] = "Ubicación:"; +App::$strings["Description:"] = "Descripción:"; +App::$strings["Hometown:"] = "Lugar de nacimiento:"; +App::$strings["About:"] = "Sobre mí:"; +App::$strings["Connect"] = "Conectar"; +App::$strings["Public Forum:"] = "Foro público:"; +App::$strings["Keywords: "] = "Palabras clave:"; +App::$strings["Don't suggest"] = "No sugerir:"; +App::$strings["Common connections:"] = "Conexiones comunes:"; +App::$strings["Global Directory"] = "Directorio global:"; +App::$strings["Local Directory"] = "Directorio local:"; +App::$strings["Finding:"] = "Encontrar:"; +App::$strings["Channel Suggestions"] = "Sugerencias de canales"; +App::$strings["next page"] = "siguiente página"; +App::$strings["previous page"] = "página anterior"; +App::$strings["Sort options"] = "Ordenar opciones"; +App::$strings["Alphabetic"] = "Alfabético"; +App::$strings["Reverse Alphabetic"] = "Alfabético inverso"; +App::$strings["Newest to Oldest"] = "De más nuevo a más antiguo"; +App::$strings["Oldest to Newest"] = "De más antiguo a más nuevo"; +App::$strings["No entries (some entries may be hidden)."] = "Sin entradas (algunas entradas pueden estar ocultas)."; App::$strings["Xchan Lookup"] = "Búsqueda de canales"; App::$strings["Lookup xchan beginning with (or webbie): "] = "Buscar un canal (o un \"webbie\") que comience por:"; +App::$strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "No hay sugerencias disponibles. Si es un sitio nuevo, espere 24 horas y pruebe de nuevo."; +App::$strings["Ignore/Hide"] = "Ignorar/Ocultar"; +App::$strings["Unable to find your hub."] = "No se puede encontrar su servidor."; +App::$strings["Post successful."] = "Enviado con éxito."; +App::$strings["Unable to lookup recipient."] = "No se puede asociar a un destinatario."; +App::$strings["Unable to communicate with requested channel."] = "No se puede establecer la comunicación con el canal solicitado."; +App::$strings["Cannot verify requested channel."] = "No se puede verificar el canal solicitado."; +App::$strings["Selected channel has private message restrictions. Send failed."] = "El canal seleccionado tiene restricciones sobre los mensajes privados. El envío falló."; +App::$strings["Messages"] = "Mensajes"; +App::$strings["Message recalled."] = "Mensaje revocado."; +App::$strings["Conversation removed."] = "Conversación eliminada."; +App::$strings["Expires YYYY-MM-DD HH:MM"] = "Caduca YYYY-MM-DD HH:MM"; +App::$strings["Requested channel is not in this network"] = "El canal solicitado no existe en esta red"; +App::$strings["Send Private Message"] = "Enviar un mensaje privado"; +App::$strings["To:"] = "Para:"; +App::$strings["Subject:"] = "Asunto:"; +App::$strings["Attach file"] = "Adjuntar fichero"; +App::$strings["Send"] = "Enviar"; +App::$strings["Set expiration date"] = "Configurar fecha de caducidad"; +App::$strings["Delete message"] = "Borrar mensaje"; +App::$strings["Delivery report"] = "Informe de transmisión"; +App::$strings["Recall message"] = "Revocar el mensaje"; +App::$strings["Message has been recalled."] = "El mensaje ha sido revocado."; +App::$strings["Delete Conversation"] = "Eliminar conversación"; +App::$strings["No secure communications available. You <strong>may</strong> be able to respond from the sender's profile page."] = "Comunicación segura no disponible. Pero <strong>puede</strong> responder desde la página del perfil del remitente."; +App::$strings["Send Reply"] = "Responder"; +App::$strings["Your message for %s (%s):"] = "Su mensaje para %s (%s):"; +App::$strings["Public Hubs"] = "Servidores públicos"; +App::$strings["The listed hubs allow public registration for the \$Projectname network. All hubs in the network are interlinked so membership on any of them conveys membership in the network as a whole. Some hubs may require subscription or provide tiered service plans. The hub itself <strong>may</strong> provide additional details."] = "Los sitios listados permiten el registro público en la red \$Projectname. Todos los sitios de la red están vinculados entre sí, por lo que sus miembros, en ninguno de ellos, indican la pertenencia a la red en su conjunto. Algunos sitios pueden requerir suscripción o proporcionar planes de servicio por niveles. Los mismos hubs <strong>pueden</strong> proporcionar detalles adicionales."; +App::$strings["Hub URL"] = "Dirección del hub"; +App::$strings["Access Type"] = "Tipo de acceso"; +App::$strings["Registration Policy"] = "Normas de registro"; +App::$strings["Stats"] = "Estadísticas"; +App::$strings["Software"] = "Software"; +App::$strings["Rate"] = "Valorar"; +App::$strings["webpage"] = "página web"; +App::$strings["block"] = "bloque"; +App::$strings["layout"] = "plantilla"; +App::$strings["menu"] = "menú"; +App::$strings["%s element installed"] = "%s elemento instalado"; +App::$strings["%s element installation failed"] = "Elemento con instalación fallida: %s"; +App::$strings["Select a bookmark folder"] = "Seleccionar una carpeta de marcadores"; +App::$strings["Save Bookmark"] = "Guardar marcador"; +App::$strings["URL of bookmark"] = "Dirección del marcador"; +App::$strings["Or enter new bookmark folder name"] = "O introduzca un nuevo nombre para la carpeta de marcadores"; +App::$strings["Enter a folder name"] = "Escriba un nombre de carpeta"; +App::$strings["or select an existing folder (doubleclick)"] = "o seleccione una (con un doble click)"; +App::$strings["Save to Folder"] = "Guardar en carpeta"; +App::$strings["Fetching URL returns error: %1\$s"] = "Al intentar obtener la dirección, retorna el error: %1\$s"; +App::$strings["Maximum daily site registrations exceeded. Please try again tomorrow."] = "Se ha superado el límite máximo de inscripciones diarias de este sitio. Por favor, pruebe de nuevo mañana."; +App::$strings["Please indicate acceptance of the Terms of Service. Registration failed."] = "Por favor, confirme que acepta los Términos del servicio. El registro ha fallado."; +App::$strings["Passwords do not match."] = "Las contraseñas no coinciden."; +App::$strings["Registration successful. Please check your email for validation instructions."] = "Registro realizado con éxito. Por favor, compruebe su correo electrónico para ver las instrucciones para validarlo."; +App::$strings["Your registration is pending approval by the site owner."] = "Su registro está pendiente de aprobación por el propietario del sitio."; +App::$strings["Your registration can not be processed."] = "Su registro no puede ser procesado."; +App::$strings["Registration on this hub is disabled."] = "El registro está deshabilitado en este sitio."; +App::$strings["Registration on this hub is by approval only."] = "El registro en este hub está sometido a aprobación previa."; +App::$strings["<a href=\"pubsites\">Register at another affiliated hub.</a>"] = "<a href=\"pubsites\">Registrarse en otro hub afiliado.</a>"; +App::$strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Este sitio ha excedido el límite de inscripción diaria de cuentas. Por favor, inténtelo de nuevo mañana."; +App::$strings["I accept the %s for this website"] = "Acepto los %s de este sitio"; +App::$strings["I am over 13 years of age and accept the %s for this website"] = "Tengo más de 13 años de edad y acepto los %s de este sitio"; +App::$strings["Your email address"] = "Su dirección de correo electrónico"; +App::$strings["Choose a password"] = "Elija una contraseña"; +App::$strings["Please re-enter your password"] = "Por favor, vuelva a escribir su contraseña"; +App::$strings["Please enter your invitation code"] = "Por favor, introduzca el código de su invitación"; +App::$strings["no"] = "no"; +App::$strings["yes"] = "sí"; +App::$strings["Membership on this site is by invitation only."] = "Para registrarse en este sitio es necesaria una invitación."; +App::$strings["Register"] = "Registrarse"; +App::$strings["This site may require email verification after submitting this form. If you are returned to a login page, please check your email for instructions."] = "Este sitio puede requerir una verificación de correo electrónico después de enviar este formulario. Si es devuelto a una página de inicio de sesión, compruebe su email para recibir y leer las instrucciones."; +App::$strings["Cover Photos"] = "Imágenes de portada del perfil"; +App::$strings["female"] = "mujer"; +App::$strings["%1\$s updated her %2\$s"] = "%1\$s ha actualizado su %2\$s"; +App::$strings["male"] = "hombre"; +App::$strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s"; +App::$strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s"; +App::$strings["cover photo"] = "Imagen de portada del perfil"; +App::$strings["Upload Cover Photo"] = "Subir imagen de portada del perfil"; +App::$strings["Documentation Search"] = "Búsqueda de Documentación"; +App::$strings["About"] = "Mi perfil"; +App::$strings["Administrators"] = "Administradores"; +App::$strings["Developers"] = "Desarrolladores"; +App::$strings["Tutorials"] = "Tutoriales"; +App::$strings["\$Projectname Documentation"] = "Documentación de \$Projectname"; +App::$strings["Contents"] = "Contenidos"; +App::$strings["Tag removed"] = "Etiqueta eliminada."; +App::$strings["Remove Item Tag"] = "Eliminar etiqueta del elemento."; +App::$strings["Select a tag to remove: "] = "Seleccionar una etiqueta para eliminar:"; +App::$strings["No such group"] = "No se encuentra el grupo"; +App::$strings["No such channel"] = "No se encuentra el canal"; +App::$strings["forum"] = "foro"; +App::$strings["Search Results For:"] = "Buscar resultados para:"; +App::$strings["Privacy group is empty"] = "El grupo de canales está vacío"; +App::$strings["Privacy group: "] = "Grupo de canales: "; +App::$strings["Invalid connection."] = "Conexión no válida."; +App::$strings["Invalid channel."] = "El canal no es válido."; +App::$strings["network"] = "red"; +App::$strings["RSS"] = "RSS"; +App::$strings["\$Projectname"] = "\$Projectname"; +App::$strings["Welcome to %s"] = "Bienvenido a %s"; +App::$strings["Permission Denied."] = "Permiso denegado"; +App::$strings["File not found."] = "Fichero no encontrado."; +App::$strings["Edit file permissions"] = "Modificar los permisos del fichero"; +App::$strings["Set/edit permissions"] = "Establecer/editar los permisos"; +App::$strings["Include all files and sub folders"] = "Incluir todos los ficheros y subcarpetas"; +App::$strings["Return to file list"] = "Volver a la lista de ficheros"; +App::$strings["Copy/paste this code to attach file to a post"] = "Copiar/pegar este código para adjuntar el fichero al envío"; +App::$strings["Copy/paste this URL to link file from a web page"] = "Copiar/pegar esta dirección para enlazar el fichero desde una página web"; +App::$strings["Share this file"] = "Compartir este fichero"; +App::$strings["Show URL to this file"] = "Mostrar la dirección de este fichero"; +App::$strings["Notify your contacts about this file"] = "Avisar a sus contactos sobre este fichero"; +App::$strings["No channel."] = "Ningún canal."; +App::$strings["Common connections"] = "Conexiones comunes"; +App::$strings["No connections in common."] = "Ninguna conexión en común."; +App::$strings["No connections."] = "Sin conexiones."; +App::$strings["Visit %s's profile [%s]"] = "Visitar el perfil de %s [%s]"; +App::$strings["View Connections"] = "Ver conexiones"; +App::$strings["# Accounts"] = "# Cuentas"; +App::$strings["# blocked accounts"] = "# cuentas bloqueadas"; +App::$strings["# expired accounts"] = "# cuentas caducadas"; +App::$strings["# expiring accounts"] = "# cuentas que caducan"; +App::$strings["# Channels"] = "# Canales"; +App::$strings["# primary"] = "# primario"; +App::$strings["# clones"] = "# clones"; +App::$strings["Message queues"] = "Mensajes en cola"; +App::$strings["Your software should be updated"] = "Debe actualizar su software"; +App::$strings["Summary"] = "Sumario"; +App::$strings["Registered accounts"] = "Cuentas registradas"; +App::$strings["Pending registrations"] = "Registros pendientes"; +App::$strings["Registered channels"] = "Canales registrados"; +App::$strings["Active plugins"] = "Extensiones (plugins) activas"; +App::$strings["Version"] = "Versión"; +App::$strings["Repository version (master)"] = "Versión del repositorio (master)"; +App::$strings["Repository version (dev)"] = "Versión del repositorio (dev)"; +App::$strings["No service class restrictions found."] = "No se han encontrado restricciones sobre esta clase de servicio."; +App::$strings["Website:"] = "Sitio web:"; +App::$strings["Remote Channel [%s] (not yet known on this site)"] = "Canal remoto [%s] (aún no es conocido en este sitio)"; +App::$strings["Rating (this information is public)"] = "Valoración (esta información es pública)"; +App::$strings["Optionally explain your rating (this information is public)"] = "Opcionalmente puede explicar su valoración (esta información es pública)"; +App::$strings["No valid account found."] = "No se ha encontrado una cuenta válida."; +App::$strings["Password reset request issued. Check your email."] = "Se ha recibido una solicitud de restablecimiento de contraseña. Consulte su correo electrónico."; +App::$strings["Site Member (%s)"] = "Usuario del sitio (%s)"; +App::$strings["Password reset requested at %s"] = "Se ha solicitado restablecer la contraseña en %s"; +App::$strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La solicitud no ha podido ser verificada. (Puede que la haya enviado con anterioridad) El restablecimiento de la contraseña ha fallado."; +App::$strings["Password Reset"] = "Restablecer la contraseña"; +App::$strings["Your password has been reset as requested."] = "Su contraseña ha sido restablecida según lo solicitó."; +App::$strings["Your new password is"] = "Su nueva contraseña es"; +App::$strings["Save or copy your new password - and then"] = "Guarde o copie su nueva contraseña - y después"; +App::$strings["click here to login"] = "pulse aquí para conectarse"; +App::$strings["Your password may be changed from the <em>Settings</em> page after successful login."] = "Puede cambiar la contraseña en la página <em>Ajustes</em> una vez iniciada la sesión."; +App::$strings["Your password has changed at %s"] = "Su contraseña en %s ha sido cambiada"; +App::$strings["Forgot your Password?"] = "¿Ha olvidado su contraseña?"; +App::$strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Introduzca y envíe su dirección de correo electrónico para el restablecimiento de su contraseña. Luego revise su correo para obtener más instrucciones."; +App::$strings["Email Address"] = "Dirección de correo electrónico"; +App::$strings["Reset"] = "Reiniciar"; +App::$strings["Mark all system notifications seen"] = "Marcar todas las notificaciones del sistema como leídas"; +App::$strings["Site Admin"] = "Administrador del sitio"; +App::$strings["Report Bug"] = "Informe de errores"; +App::$strings["View Bookmarks"] = "Ver los marcadores"; +App::$strings["My Chatrooms"] = "Mis salas de chat"; +App::$strings["Firefox Share"] = "Servicio de compartición de Firefox"; +App::$strings["Remote Diagnostics"] = "Diagnóstico remoto"; +App::$strings["Suggest Channels"] = "Sugerir canales"; +App::$strings["Login"] = "Iniciar sesión"; +App::$strings["Grid"] = "Red"; +App::$strings["Wiki"] = "Wiki"; +App::$strings["Channel Home"] = "Mi canal"; +App::$strings["Events"] = "Eventos"; +App::$strings["Directory"] = "Directorio"; +App::$strings["Mail"] = "Correo"; +App::$strings["Chat"] = "Chat"; +App::$strings["Probe"] = "Probar"; +App::$strings["Suggest"] = "Sugerir"; +App::$strings["Random Channel"] = "Canal aleatorio"; +App::$strings["Invite"] = "Invitar"; +App::$strings["Features"] = "Funcionalidades"; +App::$strings["Language"] = "Idioma"; +App::$strings["Post"] = "Publicación"; +App::$strings["Profile Photo"] = "Foto del perfil"; +App::$strings["Purchase"] = "Comprar"; +App::$strings["Undelete"] = "Recuperar"; +App::$strings["Add to app-tray"] = "Añadir a la bandeja de aplicaciones"; +App::$strings["Remove from app-tray"] = "Quitar de la bandeja de aplicaciones"; +App::$strings["__ctx:permcat__ default"] = "por defecto"; +App::$strings["__ctx:permcat__ follower"] = "seguidor"; +App::$strings["__ctx:permcat__ contributor"] = "contribuidor"; +App::$strings["__ctx:permcat__ publisher"] = "editor"; +App::$strings["(No Title)"] = "(Sin título)"; +App::$strings["Wiki page create failed."] = "Se ha producido un error en la creación de la página wiki."; +App::$strings["Wiki not found."] = "No se ha encontrado el wiki."; +App::$strings["Destination name already exists"] = "El nombre de destino ya existe"; +App::$strings["Page not found"] = "No se ha encontrado la página"; +App::$strings["Error reading page content"] = "Se ha producido un error al leer el contenido de la página"; +App::$strings["Error reading wiki"] = "Se ha producido un error al leer el wiki"; +App::$strings["Page update failed."] = "Se ha producido un error al actualizar la página."; +App::$strings["Nothing deleted"] = "No se ha eliminado nada"; +App::$strings["Compare: object not found."] = "No se ha encontrado un objeto para comparar."; +App::$strings["Page updated"] = "Se ha actualizado la página"; +App::$strings["Untitled"] = "Sin título"; +App::$strings["Wiki resource_id required for git commit"] = "Se necesita Wiki resource_id para el git commit"; +App::$strings["__ctx:wiki_history__ Message"] = "Mensaje"; +App::$strings["Different viewers will see this text differently"] = "Visitantes diferentes verán este texto de forma distinta"; +App::$strings["Visible to your default audience"] = "Visible para su público predeterminado."; +App::$strings["Only me"] = "Sólo yo"; +App::$strings["Public"] = "Público"; +App::$strings["Anybody in the \$Projectname network"] = "Cualquiera en la red \$Projectname"; +App::$strings["Any account on %s"] = "Cualquier cuenta en %s"; +App::$strings["Any of my connections"] = "Cualquiera de mis conexiones"; +App::$strings["Only connections I specifically allow"] = "Sólo las conexiones que yo permita de forma explícita"; +App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Cualquiera que esté autenticado (podría incluir a los visitantes de otras redes)"; +App::$strings["Any connections including those who haven't yet been approved"] = "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas"; +App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones."; +App::$strings["This is your default setting for who can view your default channel profile"] = "Esta es su configuración por defecto para establecer quién puede ver su perfil del canal predeterminado"; +App::$strings["This is your default setting for who can view your connections"] = "Este es su ajuste predeterminado para establecer quién puede ver sus conexiones"; +App::$strings["This is your default setting for who can view your file storage and photos"] = "Este es su ajuste predeterminado para establecer quién puede ver su repositorio de ficheros y sus fotos"; +App::$strings["This is your default setting for the audience of your webpages"] = "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web"; App::$strings["Missing room name"] = "Sala de chat sin nombre"; App::$strings["Duplicate room name"] = "Nombre de sala duplicado."; App::$strings["Invalid room specifier."] = "Especificador de sala no válido."; @@ -1596,41 +1639,11 @@ App::$strings["Please visit %s to approve or reject the suggestion."] = "Por fav App::$strings["[\$Projectname:Notify]"] = "[\$Projectname:Aviso]"; App::$strings["created a new post"] = "ha creado una nueva entrada"; App::$strings["commented on %s's post"] = "ha comentado la entrada de %s"; -App::$strings["Visible to your default audience"] = "Visible para su público predeterminado."; -App::$strings["Only me"] = "Sólo yo"; -App::$strings["Public"] = "Público"; -App::$strings["Anybody in the \$Projectname network"] = "Cualquiera en la red \$Projectname"; -App::$strings["Any account on %s"] = "Cualquier cuenta en %s"; -App::$strings["Any of my connections"] = "Cualquiera de mis conexiones"; -App::$strings["Only connections I specifically allow"] = "Sólo las conexiones que yo permita de forma explícita"; -App::$strings["Anybody authenticated (could include visitors from other networks)"] = "Cualquiera que esté autenticado (podría incluir a los visitantes de otras redes)"; -App::$strings["Any connections including those who haven't yet been approved"] = "Cualquier conexión incluyendo aquellas que aún no han sido aprobadas"; -App::$strings["This is your default setting for the audience of your normal stream, and posts."] = "Esta es la configuración predeterminada para su flujo (stream) habitual de publicaciones."; -App::$strings["This is your default setting for who can view your default channel profile"] = "Esta es su configuración por defecto para establecer quién puede ver su perfil del canal predeterminado"; -App::$strings["This is your default setting for who can view your connections"] = "Este es su ajuste predeterminado para establecer quién puede ver sus conexiones"; -App::$strings["This is your default setting for who can view your file storage and photos"] = "Este es su ajuste predeterminado para establecer quién puede ver su repositorio de ficheros y sus fotos"; -App::$strings["This is your default setting for the audience of your webpages"] = "Este es el ajuste predeterminado para establecer la audiencia de sus páginas web"; -App::$strings["(No Title)"] = "(Sin título)"; -App::$strings["Wiki page create failed."] = "Se ha producido un error en la creación de la página wiki."; -App::$strings["Wiki not found."] = "No se ha encontrado el wiki."; -App::$strings["Destination name already exists"] = "El nombre de destino ya existe"; -App::$strings["Page not found"] = "No se ha encontrado la página"; -App::$strings["Error reading page content"] = "Se ha producido un error al leer el contenido de la página"; -App::$strings["Error reading wiki"] = "Se ha producido un error al leer el wiki"; -App::$strings["Page update failed."] = "Se ha producido un error al actualizar la página."; -App::$strings["Nothing deleted"] = "No se ha eliminado nada"; -App::$strings["Compare: object not found."] = "No se ha encontrado un objeto para comparar."; -App::$strings["Page updated"] = "Se ha actualizado la página"; -App::$strings["Untitled"] = "Sin título"; -App::$strings["Wiki resource_id required for git commit"] = "Se necesita Wiki resource_id para el git commit"; -App::$strings["Different viewers will see this text differently"] = "Visitantes diferentes verán este texto de forma distinta"; -App::$strings["__ctx:permcat__ default"] = "por defecto"; -App::$strings["__ctx:permcat__ follower"] = "seguidor"; -App::$strings["__ctx:permcat__ contributor"] = "contribuidor"; -App::$strings["__ctx:permcat__ publisher"] = "editor"; +App::$strings["Wiki files deleted successfully"] = "Se han borrado con éxito los ficheros del wiki"; +App::$strings["Update Error at %s"] = "Error de actualización en %s"; +App::$strings["Update %s failed. See error logs."] = "La actualización %s ha fallado. Mire el informe de errores."; App::$strings["Private Message"] = "Mensaje Privado"; App::$strings["Select"] = "Seleccionar"; -App::$strings["Save to Folder"] = "Guardar en carpeta"; App::$strings["I will attend"] = "Participaré"; App::$strings["I will not attend"] = "No participaré"; App::$strings["I might attend"] = "Quizá participe"; @@ -1677,53 +1690,279 @@ App::$strings["Code"] = "Código"; App::$strings["Image"] = "Imagen"; App::$strings["Insert Link"] = "Insertar enlace"; App::$strings["Video"] = "Vídeo"; -App::$strings["Wiki files deleted successfully"] = "Se han borrado con éxito los ficheros del wiki"; -App::$strings["Site Admin"] = "Administrador del sitio"; -App::$strings["Report Bug"] = "Informe de errores"; -App::$strings["View Bookmarks"] = "Ver los marcadores"; -App::$strings["My Chatrooms"] = "Mis salas de chat"; -App::$strings["Firefox Share"] = "Servicio de compartición de Firefox"; -App::$strings["Remote Diagnostics"] = "Diagnóstico remoto"; -App::$strings["Suggest Channels"] = "Sugerir canales"; -App::$strings["Login"] = "Iniciar sesión"; -App::$strings["Grid"] = "Red"; -App::$strings["Wiki"] = "Wiki"; -App::$strings["Channel Home"] = "Mi canal"; -App::$strings["Events"] = "Eventos"; -App::$strings["Directory"] = "Directorio"; -App::$strings["Mail"] = "Correo"; -App::$strings["Chat"] = "Chat"; -App::$strings["Probe"] = "Probar"; -App::$strings["Suggest"] = "Sugerir"; -App::$strings["Random Channel"] = "Canal aleatorio"; -App::$strings["Invite"] = "Invitar"; -App::$strings["Features"] = "Funcionalidades"; -App::$strings["Language"] = "Idioma"; -App::$strings["Post"] = "Publicación"; -App::$strings["Profile Photo"] = "Foto del perfil"; -App::$strings["Purchase"] = "Comprar"; -App::$strings["Undelete"] = "Recuperar"; -App::$strings["Add to app-tray"] = "Añadir a la bandeja de aplicaciones"; -App::$strings["Remove from app-tray"] = "Quitar de la bandeja de aplicaciones"; +App::$strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "La autenticación desde su servidor está bloqueada. Ha iniciado sesión localmente. Por favor, salga de la sesión y vuelva a intentarlo."; +App::$strings["Welcome %s. Remote authentication successful."] = "Bienvenido %s. La identificación desde su servidor se ha llevado a cabo correctamente."; +App::$strings["parent"] = "padre"; +App::$strings["Collection"] = "Colección"; +App::$strings["Principal"] = "Principal"; +App::$strings["Addressbook"] = "Libreta de direcciones"; +App::$strings["Calendar"] = "Calendario"; +App::$strings["Schedule Inbox"] = "Programar bandeja de entrada"; +App::$strings["Schedule Outbox"] = "Programar bandeja de salida"; +App::$strings["Total"] = "Total"; +App::$strings["Shared"] = "Compartido"; +App::$strings["You are using %1\$s of your available file storage."] = "Está usando %1\$s de su espacio disponible para ficheros."; +App::$strings["You are using %1\$s of %2\$s available file storage. (%3\$s%)"] = "Está usando %1\$s de %2\$s que tiene a su disposición para ficheros. (%3\$s%)"; +App::$strings["WARNING:"] = "ATENCIÓN: "; +App::$strings["Please use DAV to upload large (video, audio) files.<br>See <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>"] = "Por favor, use DAV para subir ficheros de gran tamaño (vídeo, audio).<br>Mire en <a class=\"zrl\" href=\"help/member/member_guide#Cloud_Desktop_Clients\">Cloud Desktop Clients</a>"; +App::$strings["Create new folder"] = "Crear nueva carpeta"; +App::$strings["Upload file"] = "Subir fichero"; +App::$strings["Drop files here to immediately upload"] = "Arrastre los ficheros aquí para subirlos de forma inmediata"; +App::$strings["Forums"] = "Foros"; +App::$strings["Categories"] = "Temas"; +App::$strings["Everything"] = "Todo"; +App::$strings["Events Tools"] = "Gestión de eventos"; +App::$strings["Export Calendar"] = "Exportar el calendario"; +App::$strings["Import Calendar"] = "Importar un calendario"; +App::$strings["Suggested Chatrooms"] = "Salas de chat sugeridas"; +App::$strings["Private Mail Menu"] = "Menú de correo privado"; +App::$strings["Combined View"] = "Vista combinada"; +App::$strings["Inbox"] = "Bandeja de entrada"; +App::$strings["Outbox"] = "Bandeja de salida"; +App::$strings["New Message"] = "Nuevo mensaje"; +App::$strings["Chatrooms"] = "Salas de chat"; +App::$strings["Overview"] = "Resumen"; +App::$strings["Rating Tools"] = "Valoraciones"; +App::$strings["Rate Me"] = "Valorar este canal"; +App::$strings["View Ratings"] = "Mostrar las valoraciones"; +App::$strings["__ctx:widget__ Activity"] = "Actividad"; +App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Tiene %1$.0f de %2$.0f conexiones permitidas."; +App::$strings["Add New Connection"] = "Añadir nueva conexión"; +App::$strings["Enter channel address"] = "Dirección del canal"; +App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen"; +App::$strings["Wiki List"] = "Lista de wikis"; +App::$strings["Archives"] = "Hemeroteca"; +App::$strings["Conversations"] = "Conversaciones"; +App::$strings["Received Messages"] = "Mensajes recibidos"; +App::$strings["Sent Messages"] = "Enviar mensajes"; +App::$strings["No messages."] = "Sin mensajes."; +App::$strings["Delete conversation"] = "Eliminar conversación"; +App::$strings["Chat Members"] = "Miembros del chat"; +App::$strings["photo/image"] = "foto/imagen"; +App::$strings["Remove term"] = "Eliminar término"; +App::$strings["Saved Searches"] = "Búsquedas guardadas"; +App::$strings["add"] = "añadir"; +App::$strings["Notes"] = "Notas"; +App::$strings["Wiki Pages"] = "Páginas del wiki"; +App::$strings["Add new page"] = "Añadir una nueva página"; +App::$strings["Page name"] = "Nombre de la página"; +App::$strings["Refresh"] = "Recargar"; +App::$strings["Tasks"] = "Tareas"; +App::$strings["Suggestions"] = "Sugerencias"; +App::$strings["See more..."] = "Ver más..."; +App::$strings["Saved Folders"] = "Carpetas guardadas"; +App::$strings["Click to show more"] = "Hacer clic para ver más"; +App::$strings["Member registrations waiting for confirmation"] = "Inscripciones de nuevos miembros pendientes de aprobación"; +App::$strings["Inspect queue"] = "Examinar la cola"; +App::$strings["DB updates"] = "Actualizaciones de la base de datos"; +App::$strings["Admin"] = "Administrador"; +App::$strings["Plugin Features"] = "Extensiones"; +App::$strings["Account settings"] = "Configuración de la cuenta"; +App::$strings["Channel settings"] = "Configuración del canal"; +App::$strings["Additional features"] = "Funcionalidades"; +App::$strings["Feature/Addon settings"] = "Complementos"; +App::$strings["Display settings"] = "Ajustes de visualización"; +App::$strings["Manage locations"] = "Gestión de ubicaciones (clones) del canal"; +App::$strings["Export channel"] = "Exportar canal"; +App::$strings["Connected apps"] = "Aplicaciones (apps) conectadas"; +App::$strings["Permission Groups"] = "Grupos de permisos"; +App::$strings["Premium Channel Settings"] = "Configuración del canal premium"; +App::$strings["Bookmarked Chatrooms"] = "Salas de chat preferidas"; +App::$strings["Source channel not found."] = "No se ha encontrado el canal de origen."; +App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "Buscar %1\$s (%2\$s)"; +App::$strings["__ctx:opensearch__ \$Projectname"] = "\$Projectname"; +App::$strings["Create an account to access services and applications"] = "Crear una cuenta para acceder a los servicios y aplicaciones"; +App::$strings["Logout"] = "Finalizar sesión"; +App::$strings["Login/Email"] = "Inicio de sesión / Correo electrónico"; +App::$strings["Password"] = "Contraseña"; +App::$strings["Remember me"] = "Recordarme"; +App::$strings["Forgot your password?"] = "¿Olvidó su contraseña?"; +App::$strings["toggle mobile"] = "cambiar a modo móvil"; +App::$strings["[\$Projectname] Website SSL error for %s"] = "[\$Projectname] Error SSL del sitio web en %s"; +App::$strings["Website SSL certificate is not valid. Please correct."] = "El certificado SSL del sitio web no es válido. Por favor, solucione el problema."; +App::$strings["[\$Projectname] Cron tasks not running on %s"] = "[\$Projectname] Las tareas de Cron no están funcionando en %s"; +App::$strings["Cron/Scheduled tasks not running."] = "Las tareas del Planificador/Cron no están funcionando."; +App::$strings["never"] = "nunca"; +App::$strings["Focus (Hubzilla default)"] = "Focus (predefinido)"; +App::$strings["Theme settings"] = "Ajustes del tema"; +App::$strings["Narrow navbar"] = "Estrechar la barra de navegación"; +App::$strings["Navigation bar background color"] = "Color de fondo de la barra de navegación"; +App::$strings["Navigation bar icon color "] = "Color del icono de la barra de navegación"; +App::$strings["Navigation bar active icon color "] = "Color del icono activo de la barra de navegación"; +App::$strings["Link color"] = "Color del enlace"; +App::$strings["Set font-color for banner"] = "Ajustar el color del tipo de letra para el \"banner\""; +App::$strings["Set the background color"] = "Ajustar el color de fondo"; +App::$strings["Set the background image"] = "Ajustar la imagen de fondo"; +App::$strings["Set the background color of items"] = "Ajustar el color de los elementos de fondo"; +App::$strings["Set the background color of comments"] = "Ajustar el color de fondo de los comentarios"; +App::$strings["Set font-size for the entire application"] = "Ajustar el tamaño de letra para toda la aplicación"; +App::$strings["Examples: 87.5%, 14px"] = "Ejemploss: 87.5%, 14px"; +App::$strings["Set font-color for posts and comments"] = "Establecer el color de la letra para publicaciones y comentarios"; +App::$strings["Set radius of corners"] = "Establecer el radio de curvatura de las esquinas"; +App::$strings["Example: 4px"] = "Ejemplo: 4px"; +App::$strings["Set shadow depth of photos"] = "Ajustar la profundidad de sombras de las fotos"; +App::$strings["Set maximum width of content region in pixel"] = "Ajustar la anchura máxima de la región de contenido, en pixels"; +App::$strings["Leave empty for default width"] = "Dejar en blanco para la anchura predeterminada"; +App::$strings["Left align page content"] = "Alinear a la izquierda el contenido de la página"; +App::$strings["Set size of conversation author photo"] = "Ajustar el tamaño de la foto del autor de la conversación"; +App::$strings["Set size of followup author photos"] = "Ajustar el tamaño de foto de los seguidores del autor"; +App::$strings["Errors encountered deleting database table "] = "Errores encontrados al eliminar la tabla de la base de datos"; +App::$strings["Submit Settings"] = "Enviar los ajustes"; +App::$strings["Drop tables when uninstalling?"] = "¿Eliminar tablas al desinstalar?"; +App::$strings["If checked, the Rendezvous database tables will be deleted when the plugin is uninstalled."] = "Si se selecciona, las tablas de la base de datos Rendezvous se eliminarán cuando se desinstale el plugin."; +App::$strings["Mapbox Access Token"] = "Token de acceso de Mapbox"; +App::$strings["If you enter a Mapbox access token, it will be used to retrieve map tiles from Mapbox instead of the default OpenStreetMap tile server."] = "Si introduce un token de acceso a Mapbox, se utilizará para recuperar los mapas de mosaicos de imágenes de Mapbox en lugar del servidor de mosaico de imágenes OpenStreetMap predeterminado."; +App::$strings["Rendezvous"] = "Rendezvous"; +App::$strings["This identity has been deleted by another member due to inactivity. Please press the \"New identity\" button or refresh the page to register a new identity. You may use the same name."] = "Esta identidad ha sido eliminada por otro miembro debido a su inactividad. Pulse el botón \"Nueva identidad\" o actualice la página para registrar una nueva identidad. Puede usar el mismo nombre."; +App::$strings["Welcome to Rendezvous!"] = "¡Bienvenido/a a Rendevous!"; +App::$strings["Enter your name to join this rendezvous. To begin sharing your location with the other members, tap the GPS control. When your location is discovered, a red dot will appear and others will be able to see you on the map."] = "Introduzca tu nombre para unirse a esta cita. Para comenzar a compartir su ubicación con los demás miembros, pulse en el control GPS. Cuando se descubra su ubicación, aparecerá un punto rojo y otros podrán verlo en el mapa."; +App::$strings["Let's meet here"] = "Reunámonos aquí"; +App::$strings["New marker"] = "Nuevo marcador"; +App::$strings["Edit marker"] = "Editar un marcador"; +App::$strings["New identity"] = "Nueva identidad"; +App::$strings["Delete marker"] = "Eliminar un marcador"; +App::$strings["Delete member"] = "Eliminar un miembro"; +App::$strings["Edit proximity alert"] = "Editar alerta de proximidad"; +App::$strings["A proximity alert will be issued when this member is within a certain radius of you.<br><br>Enter a radius in meters (0 to disable):"] = "Se emitirá una alerta de proximidad cuando este miembro esté dentro de un radio determinado respecto a usted.<br><br> Ingrese el radio en metros (0 para deshabilitar):"; +App::$strings["distance"] = "distancia"; +App::$strings["Proximity alert distance (meters)"] = "Distancia (en metros) para la alerta de proximidad"; +App::$strings["A proximity alert will be issued when you are within a certain radius of the marker location.<br><br>Enter a radius in meters (0 to disable):"] = "Se emitirá una alerta de proximidad cuando usted esté dentro de un radio determinado respecto al marcador de localización.<br><br> Ingrese el radio en metros (0 para deshabilitar):"; +App::$strings["Marker proximity alert"] = "Marcador de alerta de proximidad"; +App::$strings["Reminder note"] = "Recordatorio"; +App::$strings["Enter a note to be displayed when you are within the specified proximity..."] = "Introduzca una nota que se mostrará cuando esté dentro de la proximidad especificada..."; +App::$strings["Add new rendezvous"] = "Añadir una nueva cita"; +App::$strings["Create a new rendezvous and share the access link with those you wish to invite to the group. Those who open the link become members of the rendezvous. They can view other member locations, add markers to the map, or share their own locations with the group."] = "Cree una nueva cita y comparta los enlaces de acceso con los que desea invitar al grupo. Aquellos que abran el enlace se convertirán en miembros de la cita. Pueden ver otras ubicaciones de miembros, añadir marcadores al mapa o compartir sus propias ubicaciones con el grupo."; +App::$strings["Some setting"] = "Algunos ajustes"; +App::$strings["A setting"] = "Un ajuste"; +App::$strings["Skeleton Settings"] = "Ajustes de Skeleton"; +App::$strings["GNU-Social Protocol Settings updated."] = "Se han actualizado los ajustes del protocolo de GNU-Social."; +App::$strings["Enable the GNU-Social protocol for this channel"] = "Activar el protocolo de GNU-Social para este canal"; +App::$strings["GNU-Social Protocol Settings"] = "Ajustes del protocolo de GNU-Social"; +App::$strings["Follow"] = "Seguir"; +App::$strings["%1\$s is now following %2\$s"] = "%1\$s está siguiendo ahora a %2\$s"; +App::$strings["INVALID EVENT DISMISSED!"] = "¡EVENTO NO VÁLIDO RECHAZADO!"; +App::$strings["Summary: "] = "Resumen: "; +App::$strings["Date: "] = "Fecha: "; +App::$strings["Reason: "] = "Razón: "; +App::$strings["INVALID CARD DISMISSED!"] = "¡TARJETA NO VÁLIDA RECHAZADA!"; +App::$strings["Name: "] = "Nombre: "; +App::$strings["You have to enable this plugin in Feature/Addon Settings > CalDAV/CardDAV Settings before you can use it."] = "Debe habilitar este complemento en Ajustes/Complementos>Configuración de CalDAV/CardDAV antes de poder utilizarlo."; +App::$strings["Example: YYYY-MM-DD HH:mm"] = "Ejemplo: YYYY-MM-DD HH:mm"; +App::$strings["End date and time"] = "Fecha y hora de finalización"; +App::$strings["List month"] = "Lista mensual"; +App::$strings["List week"] = "Lista semanal"; +App::$strings["List day"] = "Lista diaria"; +App::$strings["More"] = "Más"; +App::$strings["Less"] = "Menos"; +App::$strings["Select calendar"] = "Seleccionar un calendario"; +App::$strings["Delete all"] = "Eliminar todos"; +App::$strings["Sorry! Editing of recurrent events is not yet implemented."] = "¡Disculpas! La edición de eventos recurrentes aún no se ha implementado."; +App::$strings["Errors encountered creating database table: "] = "Errores encontrados al crear la tabla de la base de datos: "; +App::$strings["Default Calendar"] = "Calendario por defecto"; +App::$strings["Default Addressbook"] = "Agenda de direcciones por defecto"; +App::$strings["CalDAV/CardDAV Settings saved."] = "Se ha guardado la configuración de CalDAV/CardDAV."; +App::$strings["Enable CalDAV/CardDAV Server for this channel"] = "Habilitar el servidor CalDAV/CardDAV para este canal"; +App::$strings["Your CalDAV resources are located at %s "] = "Los recursos de CalDAV se encuentran en %s"; +App::$strings["Your CardDAV resources are located at %s "] = "Sus recursos de CalDAV están localizados en %s "; +App::$strings["CalDAV/CardDAV Settings"] = "Configuración de CalDAV/CardDAV"; +App::$strings["Home, Voice"] = "Llamadas particulares"; +App::$strings["Home, Fax"] = "Fax particular"; +App::$strings["Work, Voice"] = "Llamadas de trabajo"; +App::$strings["Work, Fax"] = "Fax de trabajo"; +App::$strings["Select Channel"] = "Seleccionar un canal"; +App::$strings["Read-write"] = "Lectura y escritura"; +App::$strings["Read-only"] = "Sólo lectura"; +App::$strings["My Calendars"] = "Mis calendarios"; +App::$strings["Shared Calendars"] = "Calendarios compartidos"; +App::$strings["Share this calendar"] = "Compartir este calendario"; +App::$strings["Calendar name and color"] = "Nombre y color del calendario"; +App::$strings["Create new calendar"] = "Crear un nuevo calendario"; +App::$strings["Calendar Name"] = "Nombre del calendario"; +App::$strings["Calendar Tools"] = "Gestión de calendarios"; +App::$strings["Import calendar"] = "Importar un calendario"; +App::$strings["Select a calendar to import to"] = "Seleccionar un calendario para importarlo"; +App::$strings["Addressbooks"] = "Agenda de direcciones"; +App::$strings["Addressbook name"] = "Nombre de la agenda"; +App::$strings["Create new addressbook"] = "Crear una nueva agenda de direcciones"; +App::$strings["Addressbook Name"] = "Nombre de la agenda"; +App::$strings["Addressbook Tools"] = "Gestión de agendas de direcciones"; +App::$strings["Import addressbook"] = "Importar una agenda de direcciones"; +App::$strings["Select an addressbook to import to"] = "Seleccionar una agenda para importarla"; +App::$strings["Planets Settings updated."] = "Se han guardado los ajustes de Planets."; +App::$strings["Enable Planets Plugin"] = "Habilitar el plugin Planets"; +App::$strings["Planets Settings"] = "Ajustes de Planets"; +App::$strings["System defaults:"] = "Valores predeterminados del sistema: "; +App::$strings["Preferred Clipart IDs"] = "IDs de las imágenes clipart preferidas"; +App::$strings["List of preferred clipart ids. These will be shown first."] = "Lista de ids de imágenes de clipart preferidas. Se verán en primer lugar."; +App::$strings["Default Search Term"] = "Términos de búsqueda predeterminados"; +App::$strings["The default search term. These will be shown second."] = "Los términos de búsqueda predeterminados. Estos se mostrarán en segundo lugar."; +App::$strings["Return After"] = "Regresar después"; +App::$strings["Page to load after image selection."] = "Página para cargar después de la selección de imágenes."; +App::$strings["Edit Profile"] = "Editar el perfil"; +App::$strings["Profile List"] = "Lista de perfiles"; +App::$strings["Order of Preferred"] = "Orden de preferencia"; +App::$strings["Sort order of preferred clipart ids."] = "Orden de clasificación de los identificadores de imágenes clipart preferidas."; +App::$strings["Newest first"] = "Las más nuevas en primer lugar"; +App::$strings["As entered"] = "Tal como se ingresaron"; +App::$strings["Order of other"] = "Orden de los demás"; +App::$strings["Sort order of other clipart ids."] = "Orden de clasificación de otros ids de imágenes clipart."; +App::$strings["Most downloaded first"] = "Las más descargadas en primer lugar"; +App::$strings["Most liked first"] = "Las más apreciadas en primer lugar"; +App::$strings["Preferred IDs Message"] = "Mensaje de IDs preferido"; +App::$strings["Message to display above preferred results."] = "Mensaje para mostrar sobre los resultados preferidos."; +App::$strings["Uploaded by: "] = "Subida por: "; +App::$strings["Drawn by: "] = "Creada por: "; +App::$strings["Or select from a free OpenClipart.org image:"] = "O seleccionar una imagen gratuita de OpenClipart.org: "; +App::$strings["Search Term"] = "Término de búsqueda"; +App::$strings["Unknown error. Please try again later."] = "Error desconocido. Por favor, inténtelo otra vez."; +App::$strings["Profile photo updated successfully."] = "Se ha actualizado con éxito la foto de perfil."; App::$strings["Flag Adult Photos"] = "Indicador (\"flag\") de fotos de adultos"; App::$strings["Provide photo edit option to hide inappropriate photos from default album view"] = "Proporcionar una opción de edición de fotos para ocultar las fotos inapropiadas de la vista de álbum predeterminada"; -App::$strings["This is a fairly comprehensive and complete guitar chord dictionary which will list most of the available ways to play a certain chord, starting from the base of the fingerboard up to a few frets beyond the twelfth fret (beyond which everything repeats). A couple of non-standard tunings are provided for the benefit of slide players, etc."] = "Se trata de un diccionario bastante amplio y completo de acordes de guitarra que enumerará la mayor parte de las formas disponibles para tocar un acorde determinado, partiendo de la base del diapasón hasta unos pocos trastes más allá del traste doce (más allá del cual todo se repite). Se proporcionan un par de afinaciones no convencionales para provecho de los guitarristas con \"slides\" ( barras de acero), etc."; -App::$strings["Chord names start with a root note (A-G) and may include sharps (#) and flats (b). This software will parse most of the standard naming conventions such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."] = "Los nombres de acordes comienzan con una nota fundamental (La-Sol) y pueden incluir sostenidos (#) y bemoles (b). Este software analizará la mayor parte de las convenciones de nomenclatura estándar como maj, min, tenue, SUS (2 ó 4), aug, con la repetición de elementos opcionales."; -App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = "Ejemplos válidos son A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."; -App::$strings["Guitar Chords"] = "Acordes de guitarra"; -App::$strings["The complete online chord dictionary"] = "El diccionario completo de acordes en línea"; -App::$strings["Tuning"] = "Afinación"; -App::$strings["Chord name: example: Em7"] = "Nombre del acorde, por ejemplo: Em7"; -App::$strings["Show for left handed stringing"] = "Mostrar para tocadores zurdos"; -App::$strings["Quick Reference"] = "Referencia rápida"; -App::$strings["No username found in import file."] = "No se ha encontrado el nombre de usuario en el fichero importado."; -App::$strings["Unable to create a unique channel address. Import failed."] = "No se ha podido crear una dirección de canal única. Ha fallado la importación."; -App::$strings["Diaspora Protocol Settings updated."] = "Los ajustes del protocolo de Diaspora se han actualizado."; -App::$strings["Enable the Diaspora protocol for this channel"] = "Activar el protocolo de Diaspora para este canal"; -App::$strings["Allow any Diaspora member to comment on your public posts"] = "Permitir a cualquier miembro de Diaspora comentar sus entradas públicas"; -App::$strings["Prevent your hashtags from being redirected to other sites"] = "Impedir que sus \"hashtags\" sean redirigidos a otros sitios "; -App::$strings["Followed hashtags (comma separated, do not include the #)"] = "\"Hashtags\" seguidos (separados por comas, sin incluir #)"; -App::$strings["Diaspora Protocol Settings"] = "Ajustes del protocolo de Diaspora"; +App::$strings["Post to WordPress"] = "Publicar en WordPress"; +App::$strings["Enable WordPress Post Plugin"] = "Habilitar el plugin de publicación en WordPress"; +App::$strings["WordPress username"] = "Nombre de usuario de WordPress"; +App::$strings["WordPress password"] = "Contraseña de WordPress"; +App::$strings["WordPress API URL"] = "URL de la API de WordPress"; +App::$strings["Typically https://your-blog.tld/xmlrpc.php"] = "Habitualmente https://your-blog.tld/xmlrpc.php"; +App::$strings["WordPress blogid"] = "Blog de WordPress"; +App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = "Para sitios multiusuario como wordpress.com, de lo contrario, dejar en blanco"; +App::$strings["Post to WordPress by default"] = "Publicar en WordPress por defecto"; +App::$strings["Forward comments (requires hubzilla_wp plugin)"] = "Reenviar comentarios (requerido por el plugin hubzilla_wp)"; +App::$strings["WordPress Post Settings"] = "Ajustes de publicación en WordPress"; +App::$strings["Wordpress Settings saved."] = "Se han guardado los ajustes de WordPress."; +App::$strings["This plugin looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter."] = "Este complemento busca en los mensajes las palabras o texto que se especifican a continuación y contrae cualquier contenido que contenga esas palabras clave para que no se muestre en momentos inapropiados, como insinuaciones sexuales que pueden ser impropias en un entorno de trabajo. Es una muestra de educación y se recomienda marcar cualquier contenido que contenga desnudos con #NSFW. Este filtro también puede coincidir con cualquier otra palabra o texto que especifique y, por lo tanto, puede utilizarse como un filtro de contenido de propósito general."; +App::$strings["Enable Content filter"] = "Habilitar filtro de contenido"; +App::$strings["Comma separated list of keywords to hide"] = "Lista separada por comas de palabras clave para ocultar"; +App::$strings["Word, /regular-expression/, lang=xx, lang!=xx"] = "Palabra, /expresión regular/, lang=xx, lang!=xx"; +App::$strings["Not Safe For Work Settings"] = "No es seguro para ajustes de trabajo"; +App::$strings["General Purpose Content Filter"] = "Filtro de contenido de propósito general"; +App::$strings["NSFW Settings saved."] = "Se han guardado los ajustes de NSFW."; +App::$strings["Possible adult content"] = "Posible contenido para adultos"; +App::$strings["%s - view"] = "ver - %s"; +App::$strings["Post to Insanejournal"] = "Publicar en Insanejournal"; +App::$strings["Enable InsaneJournal Post Plugin"] = "Habilitar el plugin de publicación en InsaneJournal"; +App::$strings["InsaneJournal username"] = "Nombre de usuario en InsaneJournal"; +App::$strings["InsaneJournal password"] = "Contraseña en InsaneJournal"; +App::$strings["Post to InsaneJournal by default"] = "Publicar por defecto en InsaneJournal"; +App::$strings["InsaneJournal Post Settings"] = "Ajustes de publicación en InsaneJournal"; +App::$strings["Insane Journal Settings saved."] = "Se han guardado los ajustes de InsaneJournal."; +App::$strings["Upload a file"] = "Subir un fichero"; +App::$strings["Drop files here to upload"] = "Arrastre los ficheros aquí para subirlos"; +App::$strings["Failed"] = "Ha fallado"; +App::$strings["No files were uploaded."] = "No se han subido ficheros."; +App::$strings["Uploaded file is empty"] = "El fichero subido está vacío"; +App::$strings["Image exceeds size limit of "] = "La imagen supera el límite de tamaño de "; +App::$strings["File has an invalid extension, it should be one of "] = "El fichero tiene una extensión no válida, debería ser una de estas: "; +App::$strings["Upload was cancelled, or server error encountered"] = "Se canceló la carga o se encontró un error del servidor"; +App::$strings["Post to Dreamwidth"] = "Publicar en Dreamwidth"; +App::$strings["Enable Dreamwidth Post Plugin"] = "Activar el plugin de publicación en Dreamwidth"; +App::$strings["Dreamwidth username"] = "Nombre de usuario en Dreamwidth"; +App::$strings["Dreamwidth password"] = "Contraseña en Dreamwidth"; +App::$strings["Post to Dreamwidth by default"] = "Publicar en Dreamwidth de forma predeterminada"; +App::$strings["Dreamwidth Post Settings"] = "Ajustes de publicación en Dreamwidth"; +App::$strings["Install Firefox Sharing Tools"] = "Instalar las herramientas de compartición de Firefox"; +App::$strings["Share content from Firefox to \$Projectname"] = "Compartir contenido desde Firefox a \$Projectname"; +App::$strings["Install Firefox Sharing Tools to this web browser"] = "Instalar las herramientas de compartición de Firefox en este navegador"; App::$strings["Hubzilla Directory Stats"] = "Estadísticas de directorio de Hubzilla"; App::$strings["Total Hubs"] = "Número total de servidores"; App::$strings["Hubzilla Hubs"] = "Servidores (hubs) de Hubzilla"; @@ -1738,167 +1977,31 @@ App::$strings["Average Age"] = "Promedio de edad"; App::$strings["Known Chatrooms"] = "Salas de chat conocidas"; App::$strings["Known Tags"] = "Etiquetas conocidas"; App::$strings["Please note Diaspora and Friendica statistics are merely those **this directory** is aware of, and not all those known in the network. This also applies to chatrooms,"] = "Tenga en cuenta que las estadísticas de Diaspora y Friendica se refieren únicamente a aquellas de las que **este directorio** es consciente, y no a todos los conocidos en la red. Esto también es aplicable a las salas de chat,"; -App::$strings["Project Servers and Resources"] = "Servidores y recursos del proyecto"; -App::$strings["Project Creator and Tech Lead"] = "Creador del proyecto y director técnico"; -App::$strings["Admin, developer, directorymin, support bloke"] = "Administrador, desarrollador, administrador del directorio, trabajador de apoyo"; -App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = "Y los cientos de personas y organizaciones más que ayudaron a hacer posible Hubzilla."; -App::$strings["The Redmatrix/Hubzilla projects are provided primarily by volunteers giving their time and expertise - and often paying out of pocket for services they share with others."] = "Los proyectos Redmatrix / Hubzilla están proporcionados principalmente por voluntarios que les prestan su tiempo y experiencia, pagando a menudo de su bolsillo por los servicios que comparten con otros."; -App::$strings["There is no corporate funding and no ads, and we do not collect and sell your personal information. (We don't control your personal information - <strong>you do</strong>.)"] = "No hay financiación corporativa ni publicidad y no recogemos ni vendemos su información personal. (De hecho, no tenemos control sobre sus datos privados. <Strong>Usted lo tiene</strong>.)"; -App::$strings["Help support our ground-breaking work in decentralisation, web identity, and privacy."] = "Ayude apoyando nuestro trabajo pionero en la descentralización, la identidad web, y la privacidad."; -App::$strings["Your donations keep servers and services running and also helps us to provide innovative new features and continued development."] = "Sus donaciones mantienen servidores y servicios en ejecución y también nos ayudan a proporcionar nuevas características innovadoras y a mantener el desarrollo de forma continuada."; -App::$strings["Donate"] = "Donar"; -App::$strings["Choose a project, developer, or public hub to support with a one-time donation"] = "Elija un proyecto, desarrollador, o \"hub\" público para apoyar con una donación de una sola vez"; -App::$strings["Donate Now"] = "Donar ahora"; -App::$strings["<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"] = "<strong><em>O</em></strong> convertirse en un patrocinador del proyecto (sólo del proyecto Hubzilla)"; -App::$strings["Please indicate if you would like your first name or full name (or nothing) to appear in our sponsor listing"] = "Por favor, indique si desea que su nombre de pila o el nombre completo (o nada) aparezca en nuestra lista de patrocinadores"; -App::$strings["Sponsor"] = "Patrocinador"; -App::$strings["Special thanks to: "] = "Agradecimiento especial a: "; -App::$strings["Post to Dreamwidth"] = "Publicar en Dreamwidth"; -App::$strings["Enable Dreamwidth Post Plugin"] = "Activar el plugin de publicación en Dreamwidth"; -App::$strings["Dreamwidth username"] = "Nombre de usuario en Dreamwidth"; -App::$strings["Dreamwidth password"] = "Contraseña en Dreamwidth"; -App::$strings["Post to Dreamwidth by default"] = "Publicar en Dreamwidth de forma predeterminada"; -App::$strings["Dreamwidth Post Settings"] = "Ajustes de publicación en Dreamwidth"; -App::$strings["Flattr this!"] = "¡Apoyar esto en Flattr!"; -App::$strings["Flattr widget settings updated."] = "Los ajustes del widget Flattr han sido actualizados."; -App::$strings["Flattr user"] = "Usuario en Flattr"; -App::$strings["URL of the Thing to flattr"] = "URL de la Cosa para apoyar en flattr"; -App::$strings["If empty channel URL is used"] = "Si está vacío, se usa la URL del canal"; -App::$strings["Title of the Thing to flattr"] = "Título de la Cosa para apoyar en flattr"; -App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = "Si está vacío, se usará \"nombre del canal en Hubzilla\""; -App::$strings["Static or dynamic flattr button"] = "Botón de flattr estático o dinámico"; -App::$strings["static"] = "estático"; -App::$strings["dynamic"] = "dinámico"; -App::$strings["Alignment of the widget"] = "Alineamiento del widget"; -App::$strings["left"] = "izquierda"; -App::$strings["right"] = "derecha"; -App::$strings["Enable Flattr widget"] = "Habilitar el widget Flattr"; -App::$strings["Flattr Widget Settings"] = "Ajustes del widget Flattr"; -App::$strings["Contact not found."] = "No se ha encontrado el contacto."; -App::$strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "Esto puede ocurrir de vez en cuando si el contacto fue solicitado por ambas personas y ya había sido aprobado."; -App::$strings["Response from remote site was not understood."] = "No se entendió la respuesta del sitio remoto."; -App::$strings["Unexpected response from remote site: "] = "Respuesta inesperada desde el sitio remoto: "; -App::$strings["Confirmation completed successfully."] = "La confirmación se ha completado satisfactoriamente."; -App::$strings["Remote site reported: "] = "El sitio remoto informó: "; -App::$strings["Temporary failure. Please wait and try again."] = "Fallo temporal. Por favor, espere e inténtelo de nuevo."; -App::$strings["Introduction failed or was revoked."] = "La solicitud ha fallado o ha sido revocada."; -App::$strings["Unable to set contact photo."] = "No se puede establecer la foto del contacto."; -App::$strings["%1\$s is now friends with %2\$s"] = "%1\$s es amigo ahora de %2\$s"; -App::$strings["No user record found for '%s' "] = "No se encuentra ningún registro de usuario para '%s' "; -App::$strings["Our site encryption key is apparently messed up."] = "La clave de cifrado de nuestro sitio está aparentemente en mal estado."; -App::$strings["Empty site URL was provided or URL could not be decrypted by us."] = "Se ha proporcionado la URL de un sitio inexistente o la URL no ha podido ser descifrada por nosotros."; -App::$strings["Contact record was not found for you on our site."] = "No se ha encontrado un registro de contacto para usted en nuestro sitio."; -App::$strings["Site public key not available in contact record for URL %s."] = "La clave del sitio público no está disponible en el registro de contacto para la URL %s."; -App::$strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "La ID proporcionada por su sistema está duplicada en el nuestro. Debería funcionar si lo intenta de nuevo."; -App::$strings["Unable to set your contact credentials on our system."] = "No se pueden establecer sus credenciales de contacto en nuestro sistema."; -App::$strings["Unable to update your contact profile details on our system"] = "No se pueden actualizar los detalles del perfil de su contacto en nuestro sistema"; -App::$strings["[Name Withheld]"] = "[Nombre omitido]"; -App::$strings["%1\$s has joined %2\$s"] = "%1\$s se ha unido a %2\$s"; -App::$strings["%1\$s welcomes %2\$s"] = "%1\$s da la bienvenida a %2\$s"; -App::$strings["This introduction has already been accepted."] = "Esta solicitud ya ha sido aceptada."; -App::$strings["Profile location is not valid or does not contain profile information."] = "La ubicación del perfil no es válida o no contiene información del perfil."; -App::$strings["Warning: profile location has no identifiable owner name."] = "Advertencia: el perfil de la ubicación no tiene un nombre de propietario identificable."; -App::$strings["Warning: profile location has no profile photo."] = "Advertencia: el perfil de la ubicación no tiene ninguna foto de perfil."; -App::$strings["%d required parameter was not found at the given location"] = array( - 0 => "Los parámetros requeridos de %d no se han encontrado en la localización proporcionada", - 1 => "Los parámetros requeridos de %d no se han encontrado en la localización proporcionada", -); -App::$strings["Introduction complete."] = "Solicitud completa."; -App::$strings["Unrecoverable protocol error."] = "Error irrecuperable de protocolo."; -App::$strings["Profile unavailable."] = "Perfil no disponible."; -App::$strings["%s has received too many connection requests today."] = "%s ha recibido demasiadas peticiones de conexión hoy."; -App::$strings["Spam protection measures have been invoked."] = "Se han activado las medidas de protección contra el spam."; -App::$strings["Friends are advised to please try again in 24 hours."] = "Se aconseja a los amigos que por favor lo intenten de nuevo en 24 horas."; -App::$strings["Invalid locator"] = "Localizador no válido"; -App::$strings["Invalid email address."] = "Dirección de correo no válida."; -App::$strings["This account has not been configured for email. Request failed."] = "Esta cuenta no se ha configurado para el correo electrónico. La petición ha fallado."; -App::$strings["Unable to resolve your name at the provided location."] = "No se puede resolver el nombre en la localización proporcionada."; -App::$strings["You have already introduced yourself here."] = "Ya se ha inscrito usted mismo aquí."; -App::$strings["Apparently you are already friends with %s."] = "Al parecer ya es amigo de %s"; -App::$strings["Invalid profile URL."] = "URL del perfil no válida."; -App::$strings["Disallowed profile URL."] = "No se ha permitido la URL del perfil."; -App::$strings["Failed to update contact record."] = "Se ha producido un error al actualizar el registro del contacto."; -App::$strings["Your introduction has been sent."] = "Su solicitud ha sido enviada."; -App::$strings["Please login to confirm introduction."] = "Por favor, inicie sesión para confirmar la solicitud."; -App::$strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Actualmente su identidad en el sistema es incorrecta. Por favor, inicie sesión en <strong>este</strong> perfil."; -App::$strings["Confirm"] = "Confirmar"; -App::$strings["Hide this contact"] = "Ocultar este contacto"; -App::$strings["Welcome home %s."] = "Bienvenido a la página principal %s."; -App::$strings["Please confirm your introduction/connection request to %s."] = "Por favor, confirme su solicitud de conexión a %s."; -App::$strings["Please enter your 'Identity Address' from one of the following supported communications networks:"] = "Por favor, elija su 'dirección identificativa' de entre las siguientes redes de comunicación soportadas: "; -App::$strings["If you are not yet a member of the free social web, <a href=\"%s/siteinfo\">follow this link to find a public Friendica site and join us today</a>."] = "Si aún no es miembro de las redes sociales libres, <a href=\"%s/siteinfo\">siga este enlace para encontrar un sitio público de Friendica y unirse a nosotros hoy</a>."; -App::$strings["Friend/Connection Request"] = "Solicitud de conexión o amistad"; -App::$strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"] = "Ejemplos: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"; -App::$strings["Please answer the following:"] = "Por favor, responda a lo siguiente: "; -App::$strings["Does %s know you?"] = "¿%s le conoce?"; -App::$strings["Add a personal note:"] = "Añadir un comentario personal: "; -App::$strings["Friendica"] = "Friendica"; -App::$strings["StatusNet/Federated Social Web"] = "Red social federada StatusNet"; -App::$strings["Diaspora"] = "Diaspora"; -App::$strings[" - please do not use this form. Instead, enter %s into your Diaspora search bar."] = "- Por favor, no use este formato. En su lugar, escriba %s en la barra de búsqueda de Diaspora."; -App::$strings["Your Identity Address:"] = "Su dirección identificativa: "; -App::$strings["Submit Request"] = "Enviar la solicitud"; -App::$strings["GNU-Social Protocol Settings updated."] = "Se han actualizado los ajustes del protocolo de GNU-Social."; -App::$strings["Enable the (experimental) GNU-Social protocol for this channel"] = "Activar el protocolo (experimental) de GNU-Social para este canal"; -App::$strings["GNU-Social Protocol Settings"] = "Ajustes del protocolo de GNU-Social"; -App::$strings["Follow"] = "Seguir"; -App::$strings["%1\$s is now following %2\$s"] = "%1\$s está siguiendo ahora a %2\$s"; -App::$strings["Friendica Photo Album Import"] = "Importar un álbum de fotos de Friendica"; -App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Esto importará todos sus álbumes de fotos de Friendica a este canal de Hubzilla."; -App::$strings["Friendica Server base URL"] = "URL base del servidor de Friendica"; -App::$strings["Friendica Login Username"] = "Nombre de inicio de sesión en Friendica"; -App::$strings["Friendica Login Password"] = "Contraseña de inicio de sesión en Friendica"; -App::$strings["Send email to all members"] = "Enviar un correo electrónico a todos los miembros"; -App::$strings["$1%s Administrator"] = "Administrador de $1%s "; -App::$strings["No recipients found."] = "No se han encontrado destinatarios."; -App::$strings["%1\$d of %2\$d messages sent."] = "%1\$d de %2\$d mensajes enviados."; -App::$strings["Send email to all hub members."] = "Enviar un correo electrónico a todos los miembros del hub."; -App::$strings["Message subject"] = "Asunto del mensaje"; -App::$strings["Sender Email address"] = "Dirección de correo electrónico del remitente"; -App::$strings["Test mode (only send to hub administrator)"] = "Modo de prueba (enviar sólo al administrador del hub)"; -App::$strings["Post to Insanejournal"] = "Publicar en Insanejournal"; -App::$strings["Enable InsaneJournal Post Plugin"] = "Habilitar el plugin de publicación en InsaneJournal"; -App::$strings["InsaneJournal username"] = "Nombre de usuario en InsaneJournal"; -App::$strings["InsaneJournal password"] = "Contraseña en InsaneJournal"; -App::$strings["Post to InsaneJournal by default"] = "Publicar por defecto en InsaneJournal"; -App::$strings["InsaneJournal Post Settings"] = "Ajustes de publicación en InsaneJournal"; -App::$strings["Insane Journal Settings saved."] = "Se han guardado los ajustes de InsaneJournal."; +App::$strings["Email notification hub"] = "Notificación por correo electrónico del hub"; +App::$strings["Hostname"] = "Nombre del host"; +App::$strings["Mailhost Settings"] = "Ajustes de Mailhost"; +App::$strings["MAILHOST Settings saved."] = "Se han guardado los ajustes de MAILHOST."; +App::$strings["Your Webbie:"] = "Su webbie: "; +App::$strings["Fontsize (px):"] = "Tamaño de fuente (px): "; +App::$strings["Link:"] = "Enlace: "; +App::$strings["Like us on Hubzilla"] = "Múestrenos su agrado en Hubzilla"; +App::$strings["Embed:"] = "Incorporado: "; +App::$strings["Photos imported"] = "Se han importado las fotos"; +App::$strings["Redmatrix Photo Album Import"] = "Importar un álbum de fotos de Redmatrix"; +App::$strings["This will import all your Redmatrix photo albums to this channel."] = "Esto importará todos sus álbumes de fotos de Redmatrix a este canal."; +App::$strings["Redmatrix Server base URL"] = "URL base del servidor Redmatrix"; +App::$strings["Redmatrix Login Username"] = "Nombre de inicio de sesión en Redmatrix"; +App::$strings["Redmatrix Login Password"] = "Contraseña de inicio de sesión en Redmatrix"; +App::$strings["Import just this album"] = "Importar solo este álbum"; +App::$strings["Leave blank to import all albums"] = "Dejar en blanco para importar todos los álbumes"; +App::$strings["Maximum count to import"] = "Límite máximo de importación"; +App::$strings["0 or blank to import all available"] = "0 o en blanco para importar todos los disponibles"; App::$strings["Channels to auto connect"] = "Canales para conexión automática"; App::$strings["Comma separated list"] = "Lista separada por comas"; App::$strings["Popular Channels"] = "Canales populares"; App::$strings["IRC Settings"] = "Ajustes de IRC"; App::$strings["IRC settings saved."] = "Se han guardado los ajustes de IRC."; App::$strings["IRC Chatroom"] = "Sala de chat IRC"; -App::$strings["Status:"] = "Estado:"; -App::$strings["Activate addon"] = "Habilitar complemento"; -App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Ocultar el widget de chat Jappixmini en la interfaz web"; -App::$strings["Jabber username"] = "Nombre de usuario en Jabber"; -App::$strings["Jabber server"] = "Servidor de Jabber"; -App::$strings["Jabber BOSH host URL"] = "URL del host BOSH de Jabber"; -App::$strings["Jabber password"] = "Contraseña en Jabber"; -App::$strings["Encrypt Jabber password with Hubzilla password"] = "Cifrar la contraseña de Jabber con la contraseña de Hubzilla"; -App::$strings["Hubzilla password"] = "Contraseña de Hubzilla"; -App::$strings["Approve subscription requests from Hubzilla contacts automatically"] = "Aprobar automáticamente las solicitudes de suscripción de los contactos de Hubzilla"; -App::$strings["Purge internal list of jabber addresses of contacts"] = "Purgar la lista interna de las direcciones de contactos de jabber"; -App::$strings["Configuration Help"] = "Ayuda para los ajustes"; -App::$strings["Jappix Mini Settings"] = "Ajustes de Jappix Mini"; -App::$strings["Upload a file"] = "Subir un fichero"; -App::$strings["Drop files here to upload"] = "Arrastre los ficheros aquí para subirlos"; -App::$strings["Failed"] = "Ha fallado"; -App::$strings["No files were uploaded."] = "No se han subido ficheros."; -App::$strings["Uploaded file is empty"] = "El fichero subido está vacío"; -App::$strings["Image exceeds size limit of "] = "La imagen supera el límite de tamaño de "; -App::$strings["File has an invalid extension, it should be one of "] = "El fichero tiene una extensión no válida, debería ser una de estas: "; -App::$strings["Upload was cancelled, or server error encountered"] = "Se canceló la carga o se encontró un error del servidor"; -App::$strings["An account has been created for you."] = "Se ha creado una cuenta para usted."; -App::$strings["Authentication successful but rejected: account creation is disabled."] = "Autenticación correcta pero rechazada: la creación de cuentas está deshabilitada."; -App::$strings["Post to Libertree"] = "Publicar en Libertree"; -App::$strings["Enable Libertree Post Plugin"] = "Habilitar el plugin de publicación en Libertree"; -App::$strings["Libertree API token"] = "Token de la API de Libertree"; -App::$strings["Libertree site URL"] = "URL del servidor de Libertree"; -App::$strings["Post to Libertree by default"] = "Publicar en Libertree por defecto"; -App::$strings["Libertree Post Settings"] = "Ajustes de publicación en Libertree"; -App::$strings["Libertree Settings saved."] = "Se han guardado los ajustes de Libertree."; App::$strings["Post to LiveJournal"] = "Publicar en LiveJournal"; App::$strings["Enable LiveJournal Post Plugin"] = "Habilitar el plugin de publicación en LiveJournal"; App::$strings["LiveJournal username"] = "Nombre de usuario en LiveJournal"; @@ -1906,36 +2009,34 @@ App::$strings["LiveJournal password"] = "Contraseña en LiveJournal"; App::$strings["Post to LiveJournal by default"] = "Publicar en LiveJournal por defecto"; App::$strings["LiveJournal Post Settings"] = "Ajustes de publicación en LiveJournal"; App::$strings["LiveJournal Settings saved."] = "Se han guardado los ajustes de LiveJournal."; -App::$strings["Logfile archive directory"] = "Directorio de los ficheros de informe"; -App::$strings["Directory to store rotated logs"] = "Directorio para almacenar los informes rotados"; -App::$strings["Logfile size in bytes before rotating"] = "Tamaño del fichero de informe en bytes antes de rotarlo"; -App::$strings["Number of logfiles to retain"] = "Número de ficheros de informe que se deben retener"; -App::$strings["Email notification hub"] = "Notificación por correo electrónico del hub"; -App::$strings["Hostname"] = "Nombre del host"; -App::$strings["Mailhost Settings"] = "Ajustes de Mailhost"; -App::$strings["MAILHOST Settings saved."] = "Se han guardado los ajustes de MAILHOST."; -App::$strings["lonely"] = "Solo/a"; -App::$strings["drunk"] = "ebrio/a"; -App::$strings["horny"] = "caliente"; -App::$strings["stoned"] = "drogado/a"; -App::$strings["fucked up"] = "jodido/a"; -App::$strings["clusterfucked"] = "hecho/a polvo"; -App::$strings["crazy"] = "loco/a"; -App::$strings["hurt"] = "ofendido/a"; -App::$strings["sleepy"] = "soñoliento/a"; -App::$strings["grumpy"] = "gruñón/ona"; -App::$strings["high"] = "superior"; -App::$strings["semi-conscious"] = "semiconsciente"; -App::$strings["in love"] = "enamorado/a"; -App::$strings["in lust"] = "lujurioso/a"; -App::$strings["naked"] = "desnudo/a"; -App::$strings["stinky"] = "apestoso/a"; -App::$strings["sweaty"] = "sudoroso/a"; -App::$strings["bleeding out"] = "una maldición"; -App::$strings["victorious"] = "victorioso/a"; -App::$strings["defeated"] = "derrotado/a"; -App::$strings["envious"] = "envidioso/a"; -App::$strings["jealous"] = "celoso/a"; +App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Encontramos un problema al iniciar sesión con el OpenID que proporcionó. Compruebe si el ID está correctamente escrito."; +App::$strings["The error message was:"] = "El mensaje de error ha sido: "; +App::$strings["First Name"] = "Nombre"; +App::$strings["Last Name"] = "Apellido"; +App::$strings["Nickname"] = "Alias"; +App::$strings["Full Name"] = "Nombre completo"; +App::$strings["Profile Photo 16px"] = "Foto del perfil 16px"; +App::$strings["Profile Photo 32px"] = "Foto del perfil 32px"; +App::$strings["Profile Photo 48px"] = "Foto del perfil 48px"; +App::$strings["Profile Photo 64px"] = "Foto del perfil 64px"; +App::$strings["Profile Photo 80px"] = "Foto del perfil 80px"; +App::$strings["Profile Photo 128px"] = "Foto del perfil 128px"; +App::$strings["Timezone"] = "Zona horaria"; +App::$strings["Birth Year"] = "Año de nacimiento"; +App::$strings["Birth Month"] = "Mes de nacimiento"; +App::$strings["Birth Day"] = "Día de nacimiento"; +App::$strings["Birthdate"] = "Fecha de nacimiento"; +App::$strings["OpenID protocol error. No ID returned."] = "Error de protocolo OpenID. No se recuperó ninguna ID."; +App::$strings["Login failed."] = "El acceso ha fallado."; +App::$strings["Male"] = "Hombre"; +App::$strings["Female"] = "Mujer"; +App::$strings["You're welcome."] = "Bienvenido."; +App::$strings["Ah shucks..."] = "Ah, joder..."; +App::$strings["Don't mention it."] = "No lo menciones."; +App::$strings["<blush>"] = "<sonrojo>"; +App::$strings["Page to load after login"] = "Página para cargar tras el inicio de sesión"; +App::$strings["Examples: "apps", "network?f=&gid=37" (privacy collection), "channel" or "notifications/system" (leave blank for default network page (grid)."] = "Ejemplos: "aplicaciones", "mi red?f=&gid=37" (grupo de canales), "mi canal" or "notificaciones del sistema" (dejar en blanco para la página de mi red por defecto (grid)."; +App::$strings["Startpage Settings"] = "Ajustes de startpage"; App::$strings["bitchslap"] = "una bofetada humillante"; App::$strings["bitchslapped"] = "ha abofeteado de forma humillante a"; App::$strings["shag"] = "un polvo"; @@ -1974,50 +2075,46 @@ App::$strings["bonk"] = "un golpe"; App::$strings["bonked"] = "ha golpeado a"; App::$strings["declare undying love for"] = "una declaración de amor eterno"; App::$strings["declared undying love for"] = "ha declarado amor eterno a"; -App::$strings["Save Settings"] = "Guardar ajustes"; -App::$strings["text to include in all outgoing posts from this site"] = "texto a incluir en todos los mensajes salientes de este sitio"; -App::$strings["Federate"] = "Federar"; -App::$strings["nofed Settings saved."] = "Se han guardado los ajustes de nofed."; -App::$strings["Allow Federation Toggle"] = "Permitir alternancia de federación"; -App::$strings["Federate posts by default"] = "Federar las publicaciones por defecto"; -App::$strings["NoFed Settings"] = "Ajustes de NoFed"; +App::$strings["Diaspora Protocol Settings updated."] = "Los ajustes del protocolo de Diaspora se han actualizado."; +App::$strings["Enable the Diaspora protocol for this channel"] = "Activar el protocolo de Diaspora para este canal"; +App::$strings["Allow any Diaspora member to comment on your public posts"] = "Permitir a cualquier miembro de Diaspora comentar sus entradas públicas"; +App::$strings["Prevent your hashtags from being redirected to other sites"] = "Impedir que sus \"hashtags\" sean redirigidos a otros sitios "; +App::$strings["Followed hashtags (comma separated, do not include the #)"] = "\"Hashtags\" seguidos (separados por comas, sin incluir #)"; +App::$strings["Diaspora Protocol Settings"] = "Ajustes del protocolo de Diaspora"; +App::$strings["No username found in import file."] = "No se ha encontrado el nombre de usuario en el fichero de importación."; +App::$strings["Unable to create a unique channel address. Import failed."] = "No se ha podido crear una dirección de canal única. Ha fallado la importación."; +App::$strings["Error retrieving wiki"] = "Error al recuperar el wiki"; +App::$strings["Error creating zip file export folder"] = "Error al crear el fichero comprimido zip de la carpeta a exportar"; +App::$strings["Error downloading wiki: "] = "Error al descargar el wiki: "; +App::$strings["Your account on %s will expire in a few days."] = "Su cuenta en %s caducará en unos pocos días."; +App::$strings["Your $Productname test account is about to expire."] = "Su cuenta de prueba de $Productname está a punto de caducar."; +App::$strings["Enable Rainbowtag"] = "Habilitar Rainbowtag"; +App::$strings["Rainbowtag Settings"] = "Ajustes de Rainbowtag"; +App::$strings["Rainbowtag Settings saved."] = "Se han guardado los ajustes de Rainbowtag."; +App::$strings["Show Upload Limits"] = "Mostrar los límites de subida"; +App::$strings["Hubzilla configured maximum size: "] = "Tamaño máximo configurado por Hubzilla: "; +App::$strings["PHP upload_max_filesize: "] = "PHP upload_max_filesize: "; +App::$strings["PHP post_max_size (must be larger than upload_max_filesize): "] = "PHP post_max_size (debe ser mayor que upload_max_filesize): "; +App::$strings["Recent Channel/Profile Viewers"] = "Visitantes recientes del canal o perfil"; +App::$strings["This plugin/addon has not been configured."] = "El plugin o complemento no se ha configurado."; +App::$strings["Please visit the Visage settings on %s"] = "Por favor, revise los ajustes de Visage en %s"; +App::$strings["your feature settings page"] = "su página de ajustes de las funcionalidades"; +App::$strings["No entries."] = "No hay entradas."; +App::$strings["Enable Visage Visitor Logging"] = "Habilitar el registro de visitantes de Visage"; +App::$strings["Visage Settings"] = "Ajustes de Visage"; App::$strings["Nsabait Settings updated."] = "Se han actualizado los ajustes de Nsabait"; App::$strings["Enable NSAbait Plugin"] = "Habilitar el plugin NSAbait"; App::$strings["NSAbait Settings"] = "Ajustes de NSAbait"; -App::$strings["This plugin looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter."] = "Este complemento busca en los mensajes las palabras o texto que se especifican a continuación y contrae cualquier contenido que contenga esas palabras clave para que no se muestre en momentos inapropiados, como insinuaciones sexuales que pueden ser impropias en un entorno de trabajo. Es una muestra de educación y se recomienda marcar cualquier contenido que contenga desnudos con #NSFW. Este filtro también puede coincidir con cualquier otra palabra o texto que especifique y, por lo tanto, puede utilizarse como un filtro de contenido de propósito general."; -App::$strings["Enable Content filter"] = "Habilitar filtro de contenido"; -App::$strings["Comma separated list of keywords to hide"] = "Lista separada por comas de palabras clave para ocultar"; -App::$strings["Word, /regular-expression/, lang=xx, lang!=xx"] = "Palabra, /expresión regular/, lang=xx, lang!=xx"; -App::$strings["Not Safe For Work Settings"] = "No es seguro para ajustes de trabajo"; -App::$strings["General Purpose Content Filter"] = "Filtro de contenido de propósito general"; -App::$strings["NSFW Settings saved."] = "Se han guardado los ajustes de NSFW."; -App::$strings["Possible adult content"] = "Posible contenido para adultos"; -App::$strings["%s - view"] = "ver - %s"; -App::$strings["System defaults:"] = "Valores predeterminados del sistema: "; -App::$strings["Preferred Clipart IDs"] = "IDs de las imágenes clipart preferidas"; -App::$strings["List of preferred clipart ids. These will be shown first."] = "Lista de ids de imágenes de clipart preferidas. Se verán en primer lugar."; -App::$strings["Default Search Term"] = "Términos de búsqueda predeterminados"; -App::$strings["The default search term. These will be shown second."] = "Los términos de búsqueda predeterminados. Estos se mostrarán en segundo lugar."; -App::$strings["Return After"] = "Regresar después"; -App::$strings["Page to load after image selection."] = "Página para cargar después de la selección de imágenes."; -App::$strings["Edit Profile"] = "Editar el perfil"; -App::$strings["Profile List"] = "Lista de perfiles"; -App::$strings["Order of Preferred"] = "Orden de preferencia"; -App::$strings["Sort order of preferred clipart ids."] = "Orden de clasificación de los identificadores de imágenes clipart preferidas."; -App::$strings["Newest first"] = "Las más nuevas en primer lugar"; -App::$strings["As entered"] = "Tal como se ingresaron"; -App::$strings["Order of other"] = "Orden de los demás"; -App::$strings["Sort order of other clipart ids."] = "Orden de clasificación de otros ids de imágenes clipart."; -App::$strings["Most downloaded first"] = "Las más descargadas en primer lugar"; -App::$strings["Most liked first"] = "Las más apreciadas en primer lugar"; -App::$strings["Preferred IDs Message"] = "Mensaje de IDs preferido"; -App::$strings["Message to display above preferred results."] = "Mensaje para mostrar sobre los resultados preferidos."; -App::$strings["Uploaded by: "] = "Subida por: "; -App::$strings["Drawn by: "] = "Creada por: "; -App::$strings["Or select from a free OpenClipart.org image:"] = "O seleccionar una imagen gratuita de OpenClipart.org: "; -App::$strings["Search Term"] = "Término de búsqueda"; -App::$strings["Unknown error. Please try again later."] = "Error desconocido. Por favor, inténtelo otra vez."; -App::$strings["Profile photo updated successfully."] = "Se ha actualizado con éxito la foto de perfil."; +App::$strings["Send test email"] = "Enviar un correo electrónico de prueba"; +App::$strings["No recipients found."] = "No se han encontrado destinatarios."; +App::$strings["Mail sent."] = "El correo electrónico ha sido enviado."; +App::$strings["Sending of mail failed."] = "No se pudo enviar el correo."; +App::$strings["Mail Test"] = "Prueba de correo"; +App::$strings["Message subject"] = "Asunto del mensaje"; +App::$strings["Reconnecting %d connections"] = "Reconectando %d conexiones"; +App::$strings["Diaspora Reconnect"] = "Reconectar con Diaspora"; +App::$strings["Use this form to re-establish Diaspora connections which were initially made from a different hub."] = "Utilice este formulario para restablecer las conexiones de diáspora que se hicieron inicialmente desde un hub diferente."; +App::$strings["Reconnect"] = "Reconectar"; App::$strings["View Larger"] = "Ver más grande"; App::$strings["Tile Server URL"] = "URL del servidor de mosaicos de imágenes "; App::$strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Una lista de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">servidores públicos de mosaicos de imágenes</a>"; @@ -2027,89 +2124,104 @@ App::$strings["Default zoom"] = "Zoom predeterminado"; App::$strings["The default zoom level. (1:world, 18:highest, also depends on tile server)"] = "El nivel de zoom predeterminado. (1: mundo, 18: el más alto, también depende del servidor del mosaico de imágenes)"; App::$strings["Include marker on map"] = "Incluir un marcador en el mapa"; App::$strings["Include a marker on the map."] = "Incluir un marcador en el mapa."; -App::$strings["Message to display on every page on this server"] = "Mensaje para mostrar en todas las páginas de este servidor"; -App::$strings["Pageheader Settings"] = "Ajustes del encabezado de página"; -App::$strings["pageheader Settings saved."] = "Se han guardado los ajustes del encabezado de página."; -App::$strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Este sitio es rastreado mediante la herramienta analítica <a href='http://www.piwik.org'>Piwik</a>."; -App::$strings["If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."] = "Si usted no quiere que sus visitas se registren de esta manera <a href='%s'>puede establecer una cookie para evitar que Piwik rastree otras visitas del sitio</a> (opt-out)."; -App::$strings["Piwik Base URL"] = "URL base de Piwik"; -App::$strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Ruta absoluta a la instalación de Piwik. (Sin protocolo (http/s), con barra diagonal)"; -App::$strings["Site ID"] = "ID del sitio"; -App::$strings["Show opt-out cookie link?"] = "Mostrar el enlace de la cookie opt-out?"; -App::$strings["Asynchronous tracking"] = "Rastreo asíncrono"; -App::$strings["Enable frontend JavaScript error tracking"] = "Habilitar la interfaz JavaScript de seguimiento de errores"; -App::$strings["This feature requires Piwik >= 2.2.0"] = "Esta funcionalidad requiere Piwik >= 2.2.0"; -App::$strings["Planets Settings updated."] = "Se han guardado los ajustes de Planets."; -App::$strings["Enable Planets Plugin"] = "Habilitar el plugin Planets"; -App::$strings["Planets Settings"] = "Ajustes de Planets"; -App::$strings["You are now authenticated to pumpio."] = "Ahora está autenticado en pump.io."; -App::$strings["return to the featured settings page"] = "Volver a la página de configuración destacada"; -App::$strings["Post to Pump.io"] = "Publicar en Pump.io"; -App::$strings["Pump.io servername"] = "Nombre del servidor de Pump.io"; -App::$strings["Without \"http://\" or \"https://\""] = "Sin \"http://\" or \"https://\""; -App::$strings["Pump.io username"] = "Nombre de usuario en Pump.io"; -App::$strings["Without the servername"] = "Sin el nombre del servidor"; -App::$strings["You are not authenticated to pumpio"] = "No está autenticado en pump.io"; -App::$strings["(Re-)Authenticate your pump.io connection"] = "(Re-)Autenticar su conexión en pump.io"; -App::$strings["Enable pump.io Post Plugin"] = "Habilitar el plugin de publicación en pump.io"; -App::$strings["Post to pump.io by default"] = "Publicar por defecto en pump.io"; -App::$strings["Should posts be public"] = "¿Las entradas deben ser públicas?"; -App::$strings["Mirror all public posts"] = "Reflejar todos los mensajes públicos"; -App::$strings["Pump.io Post Settings"] = "Ajustes de publicación en pump.io"; -App::$strings["PumpIO Settings saved."] = "Se han guardado los ajustes de PumpIO."; -App::$strings["QR code"] = "Código QR"; -App::$strings["QR Generator"] = "Generador QR"; -App::$strings["Enter some text"] = "Escribir algún texto"; -App::$strings["Enable Rainbowtag"] = "Habilitar Rainbowtag"; -App::$strings["Rainbowtag Settings"] = "Ajustes de Rainbowtag"; -App::$strings["Rainbowtag Settings saved."] = "Se han guardado los ajustes de Rainbowtag."; -App::$strings["You're welcome."] = "Bienvenido."; -App::$strings["Ah shucks..."] = "Ah, joder..."; -App::$strings["Don't mention it."] = "No lo menciones."; -App::$strings["<blush>"] = "<sonrojo>"; -App::$strings["Redmatrix File Storage Import"] = "Importar repositorio de ficheros de Redmatrix"; -App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Esto importará todos sus ficheros de la nube de Redmatrix a este canal."; -App::$strings["Redmatrix Server base URL"] = "URL base del servidor Redmatrix"; -App::$strings["Redmatrix Login Username"] = "Nombre de inicio de sesión en Redmatrix"; -App::$strings["Redmatrix Login Password"] = "Contraseña de inicio de sesión en Redmatrix"; -App::$strings["file"] = "fichero"; -App::$strings["Photos imported"] = "Se han importado las fotos"; -App::$strings["Redmatrix Photo Album Import"] = "Importar un álbum de fotos de Redmatrix"; -App::$strings["This will import all your Redmatrix photo albums to this channel."] = "Esto importará todos sus álbumes de fotos de Redmatrix a este canal."; -App::$strings["Import just this album"] = "Importar solo este álbum"; -App::$strings["Leave blank to import all albums"] = "Dejar en blanco para importar todos los álbumes"; -App::$strings["Maximum count to import"] = "Límite máximo de importación"; -App::$strings["0 or blank to import all available"] = "0 o en blanco para importar todos los disponibles"; +App::$strings["Save Settings"] = "Guardar ajustes"; +App::$strings["text to include in all outgoing posts from this site"] = "texto a incluir en todos los mensajes salientes de este sitio"; +App::$strings["Post to Friendica"] = "Publicar en Friendica"; +App::$strings["rtof Settings saved."] = "Se han guardado los ajustes de rtof"; +App::$strings["Allow posting to Friendica"] = "Permitir publicar en Friendica"; +App::$strings["Send public postings to Friendica by default"] = "Enviar entradas públicas a Friendica por defecto"; +App::$strings["Friendica API Path"] = "Ruta a la API de Friendica"; +App::$strings["https://{sitename}/api"] = "https://{sitename}/api"; +App::$strings["Friendica login name"] = "Nombre de inicio de sesión en Friendica"; +App::$strings["Friendica password"] = "Contraseña de Friendica"; +App::$strings["Hubzilla to Friendica Post Settings"] = "Ajustes de publicación de Hubzilla a Friendica"; +App::$strings["Status:"] = "Estado:"; +App::$strings["Activate addon"] = "Habilitar complemento"; +App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Ocultar el widget de chat Jappixmini en la interfaz web"; +App::$strings["Jabber username"] = "Nombre de usuario en Jabber"; +App::$strings["Jabber server"] = "Servidor de Jabber"; +App::$strings["Jabber BOSH host URL"] = "URL del host BOSH de Jabber"; +App::$strings["Jabber password"] = "Contraseña en Jabber"; +App::$strings["Encrypt Jabber password with Hubzilla password"] = "Cifrar la contraseña de Jabber con la contraseña de Hubzilla"; +App::$strings["Hubzilla password"] = "Contraseña de Hubzilla"; +App::$strings["Approve subscription requests from Hubzilla contacts automatically"] = "Aprobar automáticamente las solicitudes de suscripción de los contactos de Hubzilla"; +App::$strings["Purge internal list of jabber addresses of contacts"] = "Purgar la lista interna de las direcciones de contactos de jabber"; +App::$strings["Configuration Help"] = "Ayuda para los ajustes"; +App::$strings["Jappix Mini Settings"] = "Ajustes de Jappix Mini"; +App::$strings["Currently blocked"] = "Actualmente bloqueado"; +App::$strings["No channels currently blocked"] = "No hay canales bloqueados actualmente"; +App::$strings["\"Superblock\" Settings"] = "Ajustes de \"Superblock\""; +App::$strings["Block Completely"] = "Bloquear completamente"; +App::$strings["superblock settings updated"] = "se han actualizado los ajustes de superblock"; +App::$strings["Federate"] = "Federar"; +App::$strings["nofed Settings saved."] = "Se han guardado los ajustes de nofed."; +App::$strings["Allow Federation Toggle"] = "Permitir alternancia de federación"; +App::$strings["Federate posts by default"] = "Federar las publicaciones por defecto"; +App::$strings["NoFed Settings"] = "Ajustes de NoFed"; App::$strings["Post to Red"] = "Enviar a Red"; App::$strings["Channel is required."] = "Se requiere un canal."; App::$strings["redred Settings saved."] = "Se han salvado los ajustes de redred."; App::$strings["Allow posting to another Hubzilla Channel"] = "Permitir la publicación en otro canal de Hubzilla"; App::$strings["Send public postings to Hubzilla channel by default"] = "Enviar entradas públicas al canal Hubzilla por defecto"; App::$strings["Hubzilla API Path"] = "Ruta de la API de Hubzilla"; -App::$strings["https://{sitename}/api"] = "https://{sitename}/api"; App::$strings["Hubzilla login name"] = "Nombre de inicio de sesión en Hubzilla"; App::$strings["Hubzilla channel name"] = "Nombre del canal de Hubzilla"; -App::$strings["Nickname"] = "Alias"; App::$strings["Hubzilla Crosspost Settings"] = "Ajustes de Hubzilla Crosspost"; -App::$strings["Post to Friendica"] = "Publicar en Friendica"; -App::$strings["rtof Settings saved."] = "Se han guardado los ajustes de rtof"; -App::$strings["Allow posting to Friendica"] = "Permitir publicar en Friendica"; -App::$strings["Send public postings to Friendica by default"] = "Enviar entradas públicas a Friendica por defecto"; -App::$strings["Friendica API Path"] = "Ruta a la API de Friendica"; -App::$strings["Friendica login name"] = "Nombre de inicio de sesión en Friendica"; -App::$strings["Friendica password"] = "Contraseña de Friendica"; -App::$strings["Hubzilla to Friendica Post Settings"] = "Ajustes de publicación de Hubzilla a Friendica"; -App::$strings["Extended Identity Sharing"] = "Compartir identidad extendida"; -App::$strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Compartir su identidad con todos los sitios web en Internet. Cuando se inhabilita, la identidad sólo se comparte con los sitios de la matriz."; -App::$strings["Some setting"] = "Algunos ajustes"; -App::$strings["A setting"] = "Un ajuste"; -App::$strings["Skeleton Settings"] = "Ajustes de Skeleton"; -App::$strings["Deactivate the feature"] = "Desactivar la funcionalidad"; -App::$strings["Hide the button and show the smilies directly."] = "Ocultar el botón y mostrar los smilies directamente."; -App::$strings["Smileybutton Settings"] = "Ajustes de Smileybutton"; -App::$strings["Page to load after login"] = "Página para cargar tras el inicio de sesión"; -App::$strings["Examples: "apps", "network?f=&gid=37" (privacy collection), "channel" or "notifications/system" (leave blank for default network page (grid)."] = "Ejemplos: "aplicaciones", "mi red?f=&gid=37" (grupo de canales), "mi canal" or "notificaciones del sistema" (dejar en blanco para la página de mi red por defecto (grid)."; -App::$strings["Startpage Settings"] = "Ajustes de startpage"; +App::$strings["Logfile archive directory"] = "Directorio de los ficheros de informe"; +App::$strings["Directory to store rotated logs"] = "Directorio para almacenar los informes rotados"; +App::$strings["Logfile size in bytes before rotating"] = "Tamaño del fichero de informe en bytes antes de rotarlo"; +App::$strings["Number of logfiles to retain"] = "Número de ficheros de informe que se deben retener"; +App::$strings["Friendica Photo Album Import"] = "Importar un álbum de fotos de Friendica"; +App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Esto importará todos sus álbumes de fotos de Friendica a este canal de Hubzilla."; +App::$strings["Friendica Server base URL"] = "URL base del servidor de Friendica"; +App::$strings["Friendica Login Username"] = "Nombre de inicio de sesión en Friendica"; +App::$strings["Friendica Login Password"] = "Contraseña de inicio de sesión en Friendica"; +App::$strings["Project Servers and Resources"] = "Servidores y recursos del proyecto"; +App::$strings["Project Creator and Tech Lead"] = "Creador del proyecto y director técnico"; +App::$strings["Admin, developer, directorymin, support bloke"] = "Administrador, desarrollador, administrador del directorio, trabajador de apoyo"; +App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = "Y los cientos de personas y organizaciones más que ayudaron a hacer posible Hubzilla."; +App::$strings["The Redmatrix/Hubzilla projects are provided primarily by volunteers giving their time and expertise - and often paying out of pocket for services they share with others."] = "Los proyectos Redmatrix / Hubzilla están proporcionados principalmente por voluntarios que les prestan su tiempo y experiencia, pagando a menudo de su bolsillo por los servicios que comparten con otros."; +App::$strings["There is no corporate funding and no ads, and we do not collect and sell your personal information. (We don't control your personal information - <strong>you do</strong>.)"] = "No hay financiación corporativa ni publicidad y no recogemos ni vendemos su información personal. (De hecho, no tenemos control sobre sus datos privados. <Strong>Usted lo tiene</strong>.)"; +App::$strings["Help support our ground-breaking work in decentralisation, web identity, and privacy."] = "Ayude apoyando nuestro trabajo pionero en la descentralización, la identidad web, y la privacidad."; +App::$strings["Your donations keep servers and services running and also helps us to provide innovative new features and continued development."] = "Sus donaciones mantienen servidores y servicios en ejecución y también nos ayudan a proporcionar nuevas características innovadoras y a mantener el desarrollo de forma continuada."; +App::$strings["Donate"] = "Donar"; +App::$strings["Choose a project, developer, or public hub to support with a one-time donation"] = "Elija un proyecto, desarrollador, o \"hub\" público para apoyar con una donación de una sola vez"; +App::$strings["Donate Now"] = "Donar ahora"; +App::$strings["<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"] = "<strong><em>O</em></strong> convertirse en un patrocinador del proyecto (sólo del proyecto Hubzilla)"; +App::$strings["Please indicate if you would like your first name or full name (or nothing) to appear in our sponsor listing"] = "Por favor, indique si desea que su nombre de pila o el nombre completo (o nada) aparezca en nuestra lista de patrocinadores"; +App::$strings["Sponsor"] = "Patrocinador"; +App::$strings["Special thanks to: "] = "Agradecimiento especial a: "; +App::$strings["This is a fairly comprehensive and complete guitar chord dictionary which will list most of the available ways to play a certain chord, starting from the base of the fingerboard up to a few frets beyond the twelfth fret (beyond which everything repeats). A couple of non-standard tunings are provided for the benefit of slide players, etc."] = "Se trata de un diccionario bastante amplio y completo de acordes de guitarra que enumerará la mayor parte de las formas disponibles para tocar un acorde determinado, partiendo de la base del diapasón hasta unos pocos trastes más allá del traste doce (más allá del cual todo se repite). Se proporcionan un par de afinaciones no convencionales para provecho de los guitarristas con \"slides\" ( barras de acero), etc."; +App::$strings["Chord names start with a root note (A-G) and may include sharps (#) and flats (b). This software will parse most of the standard naming conventions such as maj, min, dim, sus(2 or 4), aug, with optional repeating elements."] = "Los nombres de acordes comienzan con una nota fundamental (La-Sol) y pueden incluir sostenidos (#) y bemoles (b). Este software analizará la mayor parte de las convenciones de nomenclatura estándar como maj, min, tenue, SUS (2 ó 4), aug, con la repetición de elementos opcionales."; +App::$strings["Valid examples include A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."] = "Ejemplos válidos son A, A7, Am7, Amaj7, Amaj9, Ammaj7, Aadd4, Asus2Add4, E7b13b11 ..."; +App::$strings["Guitar Chords"] = "Acordes de guitarra"; +App::$strings["The complete online chord dictionary"] = "El diccionario completo de acordes en línea"; +App::$strings["Tuning"] = "Afinación"; +App::$strings["Chord name: example: Em7"] = "Nombre del acorde, por ejemplo: Em7"; +App::$strings["Show for left handed stringing"] = "Mostrar para tocadores zurdos"; +App::$strings["Quick Reference"] = "Referencia rápida"; +App::$strings["Post to Libertree"] = "Publicar en Libertree"; +App::$strings["Enable Libertree Post Plugin"] = "Habilitar el plugin de publicación en Libertree"; +App::$strings["Libertree API token"] = "Token de la API de Libertree"; +App::$strings["Libertree site URL"] = "URL del servidor de Libertree"; +App::$strings["Post to Libertree by default"] = "Publicar en Libertree por defecto"; +App::$strings["Libertree Post Settings"] = "Ajustes de publicación en Libertree"; +App::$strings["Libertree Settings saved."] = "Se han guardado los ajustes de Libertree."; +App::$strings["Flattr this!"] = "¡Apoyar esto en Flattr!"; +App::$strings["Flattr widget settings updated."] = "Los ajustes del widget Flattr han sido actualizados."; +App::$strings["Flattr user"] = "Usuario en Flattr"; +App::$strings["URL of the Thing to flattr"] = "URL de la Cosa para apoyar en flattr"; +App::$strings["If empty channel URL is used"] = "Si está vacío, se usa la URL del canal"; +App::$strings["Title of the Thing to flattr"] = "Título de la Cosa para apoyar en flattr"; +App::$strings["If empty \"channel name on The Hubzilla\" will be used"] = "Si está vacío, se usará \"nombre del canal en Hubzilla\""; +App::$strings["Static or dynamic flattr button"] = "Botón de flattr estático o dinámico"; +App::$strings["static"] = "estático"; +App::$strings["dynamic"] = "dinámico"; +App::$strings["Alignment of the widget"] = "Alineamiento del widget"; +App::$strings["left"] = "izquierda"; +App::$strings["right"] = "derecha"; +App::$strings["Enable Flattr widget"] = "Habilitar el widget Flattr"; +App::$strings["Flattr Widget Settings"] = "Ajustes del widget Flattr"; App::$strings["Post to GNU social"] = "Publicar en GNU social"; App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "Por favor, contacte con el administrador de su sitio.<br />La URL de la API proporcionada no es válida."; App::$strings["We could not contact the GNU social API with the Path you entered."] = "No podemos conectar con la API de GNU social con la ruta que ha proporcionado."; @@ -2139,25 +2251,43 @@ App::$strings["Clear OAuth configuration"] = "Limpiar la configuración de OAut App::$strings["GNU social Post Settings"] = "Ajustes de publicación en GNU social"; App::$strings["API URL"] = "URL de la API"; App::$strings["Application name"] = "Nombre de la aplicación"; -App::$strings["Currently blocked"] = "Actualmente bloqueado"; -App::$strings["No channels currently blocked"] = "No hay canales bloqueados actualmente"; -App::$strings["\"Superblock\" Settings"] = "Ajustes de \"Superblock\""; -App::$strings["Block Completely"] = "Bloquear completamente"; -App::$strings["superblock settings updated"] = "se han actualizado los ajustes de superblock"; -App::$strings["Your account on %s will expire in a few days."] = "Su cuenta en %s caducará en unos pocos días."; -App::$strings["Your $Productname test account is about to expire."] = "Su cuenta de prueba de $Productname está a punto de caducar."; -App::$strings["Three Dimensional Tic-Tac-Toe"] = "Juego en 3D Tic-Tac-Toe"; -App::$strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe"; -App::$strings["New game"] = "Nuevo juego"; -App::$strings["New game with handicap"] = "Nuevo juego con hándicap"; -App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "El juego en 3D tic-tac-toe es como el juego tradicional, excepto que se juega en varios niveles simultáneamente."; -App::$strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "En este caso hay tres niveles. Usted gana al conseguir tres en una fila en cualquier nivel, así como arriba, abajo, y en diagonal a través de los diferentes niveles."; -App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "El juego con hándicap deshabilita la posición central en el nivel medio porque el jugador que reclama este cuadrado a menudo tiene una ventaja injusta."; -App::$strings["You go first..."] = "Usted va primero..."; -App::$strings["I'm going first this time..."] = "Yo voy primero esta vez..."; -App::$strings["You won!"] = "¡Usted ha ganado!"; -App::$strings["\"Cat\" game!"] = "¡El juego del \"gato\"!"; -App::$strings["I won!"] = "¡He ganado yo!"; +App::$strings["QR code"] = "Código QR"; +App::$strings["QR Generator"] = "Generador QR"; +App::$strings["Enter some text"] = "Escribir algún texto"; +App::$strings["Invalid game."] = "Juego no válido."; +App::$strings["You are not a player in this game."] = "Usted no participa en este juego."; +App::$strings["You must be a local channel to create a game."] = "Debe ser un canal local para crear un juego"; +App::$strings["You must select one opponent that is not yourself."] = "Debe seleccionar un oponente que no sea usted mismo."; +App::$strings["Creating new game..."] = "Crear un nuevo juego..."; +App::$strings["You must select white or black."] = "Debe elegir blancas o negras."; +App::$strings["Error creating new game."] = "Error al crear un nuevo juego."; +App::$strings["Requested channel is not available."] = "El canal solicitado no está disponible."; +App::$strings["You must select a local channel /chess/channelname"] = "Debe seleccionar un canal local /chess/nombredelcanal"; +App::$strings["Enable notifications"] = "Habilitar notificaciones"; +App::$strings["Post to Twitter"] = "Publicar en Twitter"; +App::$strings["Twitter settings updated."] = "Se han actualizado los ajustes de Twitter."; +App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "No se encontró ningún par de \"consumer key\" para Twitter. Póngase en contacto con el administrador del sitio."; +App::$strings["At this Hubzilla instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "En esta instancia de Hubzilla, el complemento de Twitter estaba habilitado pero aún no ha conectado su cuenta a la cuenta de Twitter. Para ello, haga clic en el botón de abajo, para obtener un PIN de Twitter que debe copiar en el cuadro de entrada a continuación y enviar el formulario. Solo sus entradas <strong>públicas</ strong> se publicarán en Twitter."; +App::$strings["Log in with Twitter"] = "Iniciar sesión en Twitter"; +App::$strings["Copy the PIN from Twitter here"] = "Copiar aquí el PIN de Twitter"; +App::$strings["<strong>Note:</strong> Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Aviso:</strong> Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>), el enlace potencialmente incluido en las entradas públicas retransmitidas a Twitter llevará al visitante a una página en blanco informándolo de que el acceso a su perfil ha sido restringido."; +App::$strings["Allow posting to Twitter"] = "Permitir la publicación en Twitter"; +App::$strings["If enabled your public postings can be posted to the associated Twitter account"] = "Si está activado, sus entradas públicas se pueden publicar en la cuenta de Twitter asociada"; +App::$strings["Send public postings to Twitter by default"] = "Enviar mensajes públicos a Twitter de forma predeterminada"; +App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Si está activado, sus entradas públicas se publicarán en la cuenta de Twitter asociada de forma predeterminada."; +App::$strings["Twitter Post Settings"] = "Ajustes de publicación en Twitter"; +App::$strings["Deactivate the feature"] = "Desactivar la funcionalidad"; +App::$strings["Hide the button and show the smilies directly."] = "Ocultar el botón y mostrar los smilies directamente."; +App::$strings["Smileybutton Settings"] = "Ajustes de Smileybutton"; +App::$strings["This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool."] = "Este sitio es rastreado mediante la herramienta analítica <a href='http://www.piwik.org'>Piwik</a>."; +App::$strings["If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."] = "Si usted no quiere que sus visitas se registren de esta manera <a href='%s'>puede establecer una cookie para evitar que Piwik rastree otras visitas del sitio</a> (opt-out)."; +App::$strings["Piwik Base URL"] = "URL base de Piwik"; +App::$strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Ruta absoluta a la instalación de Piwik. (Sin protocolo (http/s), con barra diagonal)"; +App::$strings["Site ID"] = "ID del sitio"; +App::$strings["Show opt-out cookie link?"] = "Mostrar el enlace de la cookie opt-out?"; +App::$strings["Asynchronous tracking"] = "Rastreo asíncrono"; +App::$strings["Enable frontend JavaScript error tracking"] = "Habilitar la interfaz JavaScript de seguimiento de errores"; +App::$strings["This feature requires Piwik >= 2.2.0"] = "Esta funcionalidad requiere Piwik >= 2.2.0"; App::$strings["Edit your profile and change settings."] = "Editar su perfil y cambiar los ajustes."; App::$strings["Click here to see activity from your connections."] = "Pulsar aquí para ver la actividad de sus conexiones."; App::$strings["Click here to see your channel home."] = "Pulsar aquí para ver la página de inicio de su canal."; @@ -2193,43 +2323,45 @@ App::$strings["Save your search so you can repeat it at a later date."] = "Guard App::$strings["If you see this icon you can be sure that the sender is who it say it is. It is normal that it is not always possible to verify the sender, so the icon will be missing sometimes. There is usually no need to worry about that."] = "Si ve este icono puede estar seguro de que el remitente es quien dice ser. Es normal que no siempre sea posible verificar el remitente, por lo que el icono faltará en ocasiones. Por lo general, no hay necesidad de preocuparse por eso."; App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "¡Peligro! ¡Parece que alguien intentó falsificar un mensaje! ¡Este mensaje no es necesariamente de quien dice que es!"; App::$strings["Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can pause it at any time and continue where you left off by reloading the page, or navigting to another page.</p><p>You can also advance by pressing the return key"] = "¡Bienvenido/a a Hubzilla! ¿Quiere hacer un recorrido por la interfaz de usuario?</p> <p> Puede detenerlo en cualquier momento y continuar donde lo dejó recargando la página o navegando a otra.</p> <p> También puede avanzar pulsando la tecla de retorno"; -App::$strings["Post to Twitter"] = "Publicar en Twitter"; -App::$strings["Twitter settings updated."] = "Se han actualizado los ajustes de Twitter."; -App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "No se encontró ningún par de \"consumer key\" para Twitter. Póngase en contacto con el administrador del sitio."; -App::$strings["At this Hubzilla instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "En esta instancia de Hubzilla, el complemento de Twitter estaba habilitado pero aún no ha conectado su cuenta a la cuenta de Twitter. Para ello, haga clic en el botón de abajo, para obtener un PIN de Twitter que debe copiar en el cuadro de entrada a continuación y enviar el formulario. Solo sus entradas <strong>públicas</ strong> se publicarán en Twitter."; -App::$strings["Log in with Twitter"] = "Iniciar sesión en Twitter"; -App::$strings["Copy the PIN from Twitter here"] = "Copiar aquí el PIN de Twitter"; -App::$strings["<strong>Note:</strong> Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Aviso:</strong> Debido a su configuración de privacidad (<em>Ocultar los detalles de su perfil a los visitantes desconocidos?</em>), el enlace potencialmente incluido en las entradas públicas retransmitidas a Twitter llevará al visitante a una página en blanco informándolo de que el acceso a su perfil ha sido restringido."; -App::$strings["Allow posting to Twitter"] = "Permitir la publicación en Twitter"; -App::$strings["If enabled your public postings can be posted to the associated Twitter account"] = "Si está activado, sus entradas públicas se pueden publicar en la cuenta de Twitter asociada"; -App::$strings["Send public postings to Twitter by default"] = "Enviar mensajes públicos a Twitter de forma predeterminada"; -App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Si está activado, sus entradas públicas se publicarán en la cuenta de Twitter asociada de forma predeterminada."; -App::$strings["Twitter Post Settings"] = "Ajustes de publicación en Twitter"; -App::$strings["Submit Settings"] = "Enviar los ajustes"; -App::$strings["Show Upload Limits"] = "Mostrar los límites de subida"; -App::$strings["Hubzilla configured maximum size: "] = "Tamaño máximo configurado por Hubzilla: "; -App::$strings["PHP upload_max_filesize: "] = "PHP upload_max_filesize: "; -App::$strings["PHP post_max_size (must be larger than upload_max_filesize): "] = "PHP post_max_size (debe ser mayor que upload_max_filesize): "; -App::$strings["Recent Channel/Profile Viewers"] = "Visitantes recientes del canal o perfil"; -App::$strings["This plugin/addon has not been configured."] = "El plugin o complemento no se ha configurado."; -App::$strings["Please visit the Visage settings on %s"] = "Por favor, revise los ajustes de Visage en %s"; -App::$strings["your feature settings page"] = "su página de ajustes de las funcionalidades"; -App::$strings["No entries."] = "No hay entradas."; -App::$strings["Enable Visage Visitor Logging"] = "Habilitar el registro de visitantes de Visage"; -App::$strings["Visage Settings"] = "Ajustes de Visage"; -App::$strings["Who likes me?"] = "¿Quién me ha puesto \"Me gusta\"?"; -App::$strings["Post to WordPress"] = "Publicar en WordPress"; -App::$strings["Enable WordPress Post Plugin"] = "Habilitar el plugin de publicación en WordPress"; -App::$strings["WordPress username"] = "Nombre de usuario de WordPress"; -App::$strings["WordPress password"] = "Contraseña de WordPress"; -App::$strings["WordPress API URL"] = "URL de la API de WordPress"; -App::$strings["Typically https://your-blog.tld/xmlrpc.php"] = "Habitualmente https://your-blog.tld/xmlrpc.php"; -App::$strings["WordPress blogid"] = "Blog de WordPress"; -App::$strings["For multi-user sites such as wordpress.com, otherwise leave blank"] = "Para sitios multiusuario como wordpress.com, de lo contrario, dejar en blanco"; -App::$strings["Post to WordPress by default"] = "Publicar en WordPress por defecto"; -App::$strings["Forward comments (requires hubzilla_wp plugin)"] = "Reenviar comentarios (requerido por el plugin hubzilla_wp)"; -App::$strings["WordPress Post Settings"] = "Ajustes de publicación en WordPress"; -App::$strings["Wordpress Settings saved."] = "Se han guardado los ajustes de WordPress."; +App::$strings["Extended Identity Sharing"] = "Compartir identidad extendida"; +App::$strings["Share your identity with all websites on the internet. When disabled, identity is only shared with sites in the matrix."] = "Compartir su identidad con todos los sitios web en Internet. Cuando se inhabilita, la identidad sólo se comparte con los sitios de la matriz."; +App::$strings["Three Dimensional Tic-Tac-Toe"] = "Juego en 3D Tic-Tac-Toe"; +App::$strings["3D Tic-Tac-Toe"] = "3D Tic-Tac-Toe"; +App::$strings["New game"] = "Nuevo juego"; +App::$strings["New game with handicap"] = "Nuevo juego con hándicap"; +App::$strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "El juego en 3D tic-tac-toe es como el juego tradicional, excepto que se juega en varios niveles simultáneamente."; +App::$strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "En este caso hay tres niveles. Usted gana al conseguir tres en una fila en cualquier nivel, así como arriba, abajo, y en diagonal a través de los diferentes niveles."; +App::$strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "El juego con hándicap deshabilita la posición central en el nivel medio porque el jugador que reclama este cuadrado a menudo tiene una ventaja injusta."; +App::$strings["You go first..."] = "Usted va primero..."; +App::$strings["I'm going first this time..."] = "Yo voy primero esta vez..."; +App::$strings["You won!"] = "¡Usted ha ganado!"; +App::$strings["\"Cat\" game!"] = "¡El juego del \"gato\"!"; +App::$strings["I won!"] = "¡He ganado yo!"; +App::$strings["Message to display on every page on this server"] = "Mensaje para mostrar en todas las páginas de este servidor"; +App::$strings["Pageheader Settings"] = "Ajustes del encabezado de página"; +App::$strings["pageheader Settings saved."] = "Se han guardado los ajustes del encabezado de página."; +App::$strings["lonely"] = "Solo/a"; +App::$strings["drunk"] = "ebrio/a"; +App::$strings["horny"] = "caliente"; +App::$strings["stoned"] = "drogado/a"; +App::$strings["fucked up"] = "jodido/a"; +App::$strings["clusterfucked"] = "hecho/a polvo"; +App::$strings["crazy"] = "loco/a"; +App::$strings["hurt"] = "ofendido/a"; +App::$strings["sleepy"] = "soñoliento/a"; +App::$strings["grumpy"] = "gruñón/ona"; +App::$strings["high"] = "superior"; +App::$strings["semi-conscious"] = "semiconsciente"; +App::$strings["in love"] = "enamorado/a"; +App::$strings["in lust"] = "lujurioso/a"; +App::$strings["naked"] = "desnudo/a"; +App::$strings["stinky"] = "apestoso/a"; +App::$strings["sweaty"] = "sudoroso/a"; +App::$strings["bleeding out"] = "una maldición"; +App::$strings["victorious"] = "victorioso/a"; +App::$strings["defeated"] = "derrotado/a"; +App::$strings["envious"] = "envidioso/a"; +App::$strings["jealous"] = "celoso/a"; App::$strings["XMPP settings updated."] = "Se han actualizado los ajustes de XMPP."; App::$strings["Enable Chat"] = "Habilitar el chat"; App::$strings["Individual credentials"] = "Credenciales individuales"; @@ -2238,265 +2370,34 @@ App::$strings["XMPP Settings"] = "Ajustes de XMPP"; App::$strings["Jabber BOSH host"] = "BOSH de Jabber"; App::$strings["Use central userbase"] = "Usar la base de usuarios central"; App::$strings["If enabled, members will automatically login to an ejabberd server that has to be installed on this machine with synchronized credentials via the \"auth_ejabberd.php\" script."] = "Si está habilitado, los miembros se conectarán automáticamente a un servidor ejabberd que debe instalarse en esta máquina con credenciales sincronizadas a través del script \"auth ejabberd.php\"."; -App::$strings["Select Channel"] = "Seleccionar un canal"; -App::$strings["Read-write"] = "Lectura y escritura"; -App::$strings["Read-only"] = "Sólo lectura"; -App::$strings["My Calendars"] = "Mis calendarios"; -App::$strings["Shared Calendars"] = "Calendarios compartidos"; -App::$strings["Share this calendar"] = "Compartir este calendario"; -App::$strings["Calendar name and color"] = "Nombre y color del calendario"; -App::$strings["Create new calendar"] = "Crear un nuevo calendario"; -App::$strings["Calendar Name"] = "Nombre del calendario"; -App::$strings["Calendar Tools"] = "Gestión de calendarios"; -App::$strings["Import calendar"] = "Importar un calendario"; -App::$strings["Select a calendar to import to"] = "Seleccionar un calendario para importarlo"; -App::$strings["Addressbooks"] = "Agenda de direcciones"; -App::$strings["Addressbook name"] = "Nombre de la agenda"; -App::$strings["Create new addressbook"] = "Crear una nueva agenda de direcciones"; -App::$strings["Addressbook Name"] = "Nombre de la agenda"; -App::$strings["Addressbook Tools"] = "Gestión de agendas de direcciones"; -App::$strings["Import addressbook"] = "Importar una agenda de direcciones"; -App::$strings["Select an addressbook to import to"] = "Seleccionar una agenda para importarla"; -App::$strings["INVALID EVENT DISMISSED!"] = "¡EVENTO NO VÁLIDO RECHAZADO!"; -App::$strings["Summary: "] = "Resumen: "; -App::$strings["Date: "] = "Fecha: "; -App::$strings["Reason: "] = "Razón: "; -App::$strings["INVALID CARD DISMISSED!"] = "¡TARJETA NO VÁLIDA RECHAZADA!"; -App::$strings["Name: "] = "Nombre: "; -App::$strings["You have to enable this plugin in Feature/Addon Settings > CalDAV/CardDAV Settings before you can use it."] = "Debe habilitar este complemento en Ajustes/Complementos>Configuración de CalDAV/CardDAV antes de poder utilizarlo."; -App::$strings["Example: YYYY-MM-DD HH:mm"] = "Ejemplo: YYYY-MM-DD HH:mm"; -App::$strings["End date and time"] = "Fecha y hora de finalización"; -App::$strings["List month"] = "Lista mensual"; -App::$strings["List week"] = "Lista semanal"; -App::$strings["List day"] = "Lista diaria"; -App::$strings["More"] = "Más"; -App::$strings["Less"] = "Menos"; -App::$strings["Select calendar"] = "Seleccionar un calendario"; -App::$strings["Delete all"] = "Eliminar todos"; -App::$strings["Sorry! Editing of recurrent events is not yet implemented."] = "¡Disculpas! La edición de eventos recurrentes aún no se ha implementado."; -App::$strings["Errors encountered creating database table: "] = "Errores encontrados al crear la tabla de la base de datos: "; -App::$strings["Default Calendar"] = "Calendario por defecto"; -App::$strings["Default Addressbook"] = "Agenda de direcciones por defecto"; -App::$strings["CalDAV/CardDAV Settings saved."] = "Se ha guardado la configuración de CalDAV/CardDAV."; -App::$strings["Enable CalDAV/CardDAV Server for this channel"] = "Habilitar el servidor CalDAV/CardDAV para este canal"; -App::$strings["Your CalDAV resources are located at %s "] = "Los recursos de CalDAV se encuentran en %s"; -App::$strings["Your CardDAV resources are located at %s "] = "Sus recursos de CalDAV están localizados en %s "; -App::$strings["CalDAV/CardDAV Settings"] = "Configuración de CalDAV/CardDAV"; -App::$strings["Home, Voice"] = "Llamadas particulares"; -App::$strings["Home, Fax"] = "Fax particular"; -App::$strings["Work, Voice"] = "Llamadas de trabajo"; -App::$strings["Work, Fax"] = "Fax de trabajo"; -App::$strings["Invalid game."] = "Juego no válido."; -App::$strings["You are not a player in this game."] = "Usted no participa en este juego."; -App::$strings["You must be a local channel to create a game."] = "Debe ser un canal local para crear un juego"; -App::$strings["You must select one opponent that is not yourself."] = "Debe seleccionar un oponente que no sea usted mismo."; -App::$strings["Creating new game..."] = "Crear un nuevo juego..."; -App::$strings["You must select white or black."] = "Debe elegir blancas o negras."; -App::$strings["Error creating new game."] = "Error al crear un nuevo juego."; -App::$strings["Requested channel is not available."] = "El canal solicitado no está disponible."; -App::$strings["You must select a local channel /chess/channelname"] = "Debe seleccionar un canal local /chess/nombredelcanal"; -App::$strings["Enable notifications"] = "Habilitar notificaciones"; -App::$strings["Your Webbie:"] = "Su webbie: "; -App::$strings["Fontsize (px):"] = "Tamaño de fuente (px): "; -App::$strings["Link:"] = "Enlace: "; -App::$strings["Like us on Hubzilla"] = "Múestrenos su agrado en Hubzilla"; -App::$strings["Embed:"] = "Incorporado: "; -App::$strings["Male"] = "Hombre"; -App::$strings["Female"] = "Mujer"; -App::$strings["First Name"] = "Nombre"; -App::$strings["Last Name"] = "Apellido"; -App::$strings["Full Name"] = "Nombre completo"; -App::$strings["Profile Photo 16px"] = "Foto del perfil 16px"; -App::$strings["Profile Photo 32px"] = "Foto del perfil 32px"; -App::$strings["Profile Photo 48px"] = "Foto del perfil 48px"; -App::$strings["Profile Photo 64px"] = "Foto del perfil 64px"; -App::$strings["Profile Photo 80px"] = "Foto del perfil 80px"; -App::$strings["Profile Photo 128px"] = "Foto del perfil 128px"; -App::$strings["Timezone"] = "Zona horaria"; -App::$strings["Birth Year"] = "Año de nacimiento"; -App::$strings["Birth Month"] = "Mes de nacimiento"; -App::$strings["Birth Day"] = "Día de nacimiento"; -App::$strings["Birthdate"] = "Fecha de nacimiento"; -App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "Encontramos un problema al iniciar sesión con el OpenID que proporcionó. Compruebe si el ID está correctamente escrito."; -App::$strings["The error message was:"] = "El mensaje de error ha sido: "; -App::$strings["OpenID protocol error. No ID returned."] = "Error de protocolo OpenID. No se recuperó ninguna ID."; -App::$strings["Login failed."] = "El acceso ha fallado."; -App::$strings["Reconnecting %d connections"] = "Reconectando %d conexiones"; -App::$strings["Diaspora Reconnect"] = "Reconectar con Diaspora"; -App::$strings["Use this form to re-establish Diaspora connections which were initially made from a different hub."] = "Utilice este formulario para restablecer las conexiones de diáspora que se hicieron inicialmente desde un hub diferente."; -App::$strings["Reconnect"] = "Reconectar"; -App::$strings["Send test email"] = "Enviar un correo electrónico de prueba"; -App::$strings["Mail sent."] = "El correo electrónico ha sido enviado."; -App::$strings["Sending of mail failed."] = "No se pudo enviar el correo."; -App::$strings["Mail Test"] = "Prueba de correo"; -App::$strings["Errors encountered deleting database table "] = "Errores encontrados al eliminar la tabla de la base de datos"; -App::$strings["Drop tables when uninstalling?"] = "¿Eliminar tablas al desinstalar?"; -App::$strings["If checked, the Rendezvous database tables will be deleted when the plugin is uninstalled."] = "Si se selecciona, las tablas de la base de datos Rendezvous se eliminarán cuando se desinstale el plugin."; -App::$strings["Mapbox Access Token"] = "Token de acceso de Mapbox"; -App::$strings["If you enter a Mapbox access token, it will be used to retrieve map tiles from Mapbox instead of the default OpenStreetMap tile server."] = "Si introduce un token de acceso a Mapbox, se utilizará para recuperar los mapas de mosaicos de imágenes de Mapbox en lugar del servidor de mosaico de imágenes OpenStreetMap predeterminado."; -App::$strings["Rendezvous"] = "Rendezvous"; -App::$strings["This identity has been deleted by another member due to inactivity. Please press the \"New identity\" button or refresh the page to register a new identity. You may use the same name."] = "Esta identidad ha sido eliminada por otro miembro debido a su inactividad. Pulse el botón \"Nueva identidad\" o actualice la página para registrar una nueva identidad. Puede usar el mismo nombre."; -App::$strings["Welcome to Rendezvous!"] = "¡Bienvenido/a a Rendevous!"; -App::$strings["Enter your name to join this rendezvous. To begin sharing your location with the other members, tap the GPS control. When your location is discovered, a red dot will appear and others will be able to see you on the map."] = "Introduzca tu nombre para unirse a esta cita. Para comenzar a compartir su ubicación con los demás miembros, pulse en el control GPS. Cuando se descubra su ubicación, aparecerá un punto rojo y otros podrán verlo en el mapa."; -App::$strings["Let's meet here"] = "Reunámonos aquí"; -App::$strings["New marker"] = "Nuevo marcador"; -App::$strings["Edit marker"] = "Editar un marcador"; -App::$strings["New identity"] = "Nueva identidad"; -App::$strings["Delete marker"] = "Eliminar un marcador"; -App::$strings["Delete member"] = "Eliminar un miembro"; -App::$strings["Edit proximity alert"] = "Editar alerta de proximidad"; -App::$strings["A proximity alert will be issued when this member is within a certain radius of you.<br><br>Enter a radius in meters (0 to disable):"] = "Se emitirá una alerta de proximidad cuando este miembro esté dentro de un radio determinado respecto a usted.<br><br> Ingrese el radio en metros (0 para deshabilitar):"; -App::$strings["distance"] = "distancia"; -App::$strings["Proximity alert distance (meters)"] = "Distancia (en metros) para la alerta de proximidad"; -App::$strings["A proximity alert will be issued when you are within a certain radius of the marker location.<br><br>Enter a radius in meters (0 to disable):"] = "Se emitirá una alerta de proximidad cuando usted esté dentro de un radio determinado respecto al marcador de localización.<br><br> Ingrese el radio en metros (0 para deshabilitar):"; -App::$strings["Marker proximity alert"] = "Marcador de alerta de proximidad"; -App::$strings["Reminder note"] = "Recordatorio"; -App::$strings["Enter a note to be displayed when you are within the specified proximity..."] = "Introduzca una nota que se mostrará cuando esté dentro de la proximidad especificada..."; -App::$strings["Add new rendezvous"] = "Añadir una nueva cita"; -App::$strings["Create a new rendezvous and share the access link with those you wish to invite to the group. Those who open the link become members of the rendezvous. They can view other member locations, add markers to the map, or share their own locations with the group."] = "Cree una nueva cita y comparta los enlaces de acceso con los que desea invitar al grupo. Aquellos que abran el enlace se convertirán en miembros de la cita. Pueden ver otras ubicaciones de miembros, añadir marcadores al mapa o compartir sus propias ubicaciones con el grupo."; -App::$strings["Install Firefox Sharing Tools"] = "Instalar las herramientas de compartición de Firefox"; -App::$strings["Share content from Firefox to \$Projectname"] = "Compartir contenido desde Firefox a \$Projectname"; -App::$strings["Install Firefox Sharing Tools to this web browser"] = "Instalar las herramientas de compartición de Firefox en este navegador"; -App::$strings["Error retrieving wiki"] = "Error al recuperar el wiki"; -App::$strings["Error creating zip file export folder"] = "Error al crear el fichero comprimido zip de la carpeta a exportar"; -App::$strings["Error downloading wiki: "] = "Error al descargar el wiki: "; -App::$strings["Wiki Pages"] = "Páginas del wiki"; -App::$strings["Add new page"] = "Añadir una nueva página"; -App::$strings["Page name"] = "Nombre de la página"; -App::$strings["Wiki List"] = "Lista de wikis"; -App::$strings["Enable the GNU-Social protocol for this channel"] = "Activar el protocolo de GNU-Social para este canal"; -App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "Buscar %1\$s (%2\$s)"; -App::$strings["__ctx:opensearch__ \$Projectname"] = "\$Projectname"; +App::$strings["Who likes me?"] = "¿Quién me ha puesto \"Me gusta\"?"; +App::$strings["You are now authenticated to pumpio."] = "Ahora está autenticado en pump.io."; +App::$strings["return to the featured settings page"] = "Volver a la página de configuración destacada"; +App::$strings["Post to Pump.io"] = "Publicar en Pump.io"; +App::$strings["Pump.io servername"] = "Nombre del servidor de Pump.io"; +App::$strings["Without \"http://\" or \"https://\""] = "Sin \"http://\" or \"https://\""; +App::$strings["Pump.io username"] = "Nombre de usuario en Pump.io"; +App::$strings["Without the servername"] = "Sin el nombre del servidor"; +App::$strings["You are not authenticated to pumpio"] = "No está autenticado en pump.io"; +App::$strings["(Re-)Authenticate your pump.io connection"] = "(Re-)Autenticar su conexión en pump.io"; +App::$strings["Enable pump.io Post Plugin"] = "Habilitar el plugin de publicación en pump.io"; +App::$strings["Post to pump.io by default"] = "Publicar por defecto en pump.io"; +App::$strings["Should posts be public"] = "¿Las entradas deben ser públicas?"; +App::$strings["Mirror all public posts"] = "Reflejar todos los mensajes públicos"; +App::$strings["Pump.io Post Settings"] = "Ajustes de publicación en pump.io"; +App::$strings["PumpIO Settings saved."] = "Se han guardado los ajustes de PumpIO."; +App::$strings["An account has been created for you."] = "Se ha creado una cuenta para usted."; +App::$strings["Authentication successful but rejected: account creation is disabled."] = "Autenticación correcta pero rechazada: la creación de cuentas está deshabilitada."; App::$strings["Search \$Projectname"] = "Buscar \$Projectname"; -App::$strings["Cannot locate DNS info for database server '%s'"] = "No se ha podido localizar información de DNS para el servidor de base de datos “%s”"; -App::$strings["default"] = "por defecto"; -App::$strings["Select an alternate language"] = "Seleccionar un idioma alternativo"; -App::$strings["Not a valid email address"] = "Dirección de correo no válida"; -App::$strings["Your email domain is not among those allowed on this site"] = "Su dirección de correo no pertenece a ninguno de los dominios permitidos en este sitio."; -App::$strings["Your email address is already registered at this site."] = "Su dirección de correo está ya registrada en este sitio."; -App::$strings["An invitation is required."] = "Es obligatorio que le inviten."; -App::$strings["Invitation could not be verified."] = "No se ha podido verificar su invitación."; -App::$strings["Please enter the required information."] = "Por favor introduzca la información requerida."; -App::$strings["Failed to store account information."] = "La información de la cuenta no se ha podido guardar."; -App::$strings["Registration confirmation for %s"] = "Confirmación de registro para %s"; -App::$strings["Registration request at %s"] = "Solicitud de registro en %s"; -App::$strings["your registration password"] = "su contraseña de registro"; -App::$strings["Registration details for %s"] = "Detalles del registro de %s"; -App::$strings["Account approved."] = "Cuenta aprobada."; -App::$strings["Registration revoked for %s"] = "Registro revocado para %s"; -App::$strings["Click here to upgrade."] = "Pulse aquí para actualizar"; -App::$strings["This action exceeds the limits set by your subscription plan."] = "Esta acción supera los límites establecidos por su plan de suscripción "; -App::$strings["This action is not available under your subscription plan."] = "Esta acción no está disponible en su plan de suscripción."; -App::$strings["Categories"] = "Temas"; -App::$strings["Suggestions"] = "Sugerencias"; -App::$strings["See more..."] = "Ver más..."; -App::$strings["You have %1$.0f of %2$.0f allowed connections."] = "Tiene %1$.0f de %2$.0f conexiones permitidas."; -App::$strings["Add New Connection"] = "Añadir nueva conexión"; -App::$strings["Enter channel address"] = "Dirección del canal"; -App::$strings["Examples: bob@example.com, https://example.com/barbara"] = "Ejemplos: manuel@ejemplo.com, https://ejemplo.com/carmen"; -App::$strings["Notes"] = "Notas"; -App::$strings["Remove term"] = "Eliminar término"; -App::$strings["Saved Searches"] = "Búsquedas guardadas"; -App::$strings["add"] = "añadir"; -App::$strings["Saved Folders"] = "Carpetas guardadas"; -App::$strings["Everything"] = "Todo"; -App::$strings["Archives"] = "Hemeroteca"; -App::$strings["Refresh"] = "Recargar"; -App::$strings["Account settings"] = "Configuración de la cuenta"; -App::$strings["Channel settings"] = "Configuración del canal"; -App::$strings["Additional features"] = "Funcionalidades"; -App::$strings["Feature/Addon settings"] = "Complementos"; -App::$strings["Display settings"] = "Ajustes de visualización"; -App::$strings["Manage locations"] = "Gestión de ubicaciones (clones) del canal"; -App::$strings["Export channel"] = "Exportar canal"; -App::$strings["Connected apps"] = "Aplicaciones (apps) conectadas"; -App::$strings["Permission Groups"] = "Grupos de permisos"; -App::$strings["Premium Channel Settings"] = "Configuración del canal premium"; -App::$strings["Private Mail Menu"] = "Menú de correo privado"; -App::$strings["Combined View"] = "Vista combinada"; -App::$strings["Inbox"] = "Bandeja de entrada"; -App::$strings["Outbox"] = "Bandeja de salida"; -App::$strings["New Message"] = "Nuevo mensaje"; -App::$strings["Conversations"] = "Conversaciones"; -App::$strings["Received Messages"] = "Mensajes recibidos"; -App::$strings["Sent Messages"] = "Enviar mensajes"; -App::$strings["No messages."] = "Sin mensajes."; -App::$strings["Delete conversation"] = "Eliminar conversación"; -App::$strings["Events Tools"] = "Gestión de eventos"; -App::$strings["Export Calendar"] = "Exportar el calendario"; -App::$strings["Import Calendar"] = "Importar un calendario"; -App::$strings["Chatrooms"] = "Salas de chat"; -App::$strings["Overview"] = "Resumen"; -App::$strings["Chat Members"] = "Miembros del chat"; -App::$strings["__ctx:wiki_history__ Message"] = "Mensaje"; -App::$strings["Bookmarked Chatrooms"] = "Salas de chat preferidas"; -App::$strings["Suggested Chatrooms"] = "Salas de chat sugeridas"; -App::$strings["photo/image"] = "foto/imagen"; -App::$strings["Click to show more"] = "Hacer clic para ver más"; -App::$strings["Rating Tools"] = "Valoraciones"; -App::$strings["Rate Me"] = "Valorar este canal"; -App::$strings["View Ratings"] = "Mostrar las valoraciones"; -App::$strings["Forums"] = "Foros"; -App::$strings["__ctx:widget__ Activity"] = "Actividad"; -App::$strings["Tasks"] = "Tareas"; -App::$strings["Member registrations waiting for confirmation"] = "Inscripciones de nuevos miembros pendientes de aprobación"; -App::$strings["Inspect queue"] = "Examinar la cola"; -App::$strings["DB updates"] = "Actualizaciones de la base de datos"; -App::$strings["Admin"] = "Administrador"; -App::$strings["Plugin Features"] = "Extensiones"; -App::$strings["Tags"] = "Etiquetas"; -App::$strings["Keywords"] = "Palabras clave"; -App::$strings["have"] = "tener"; -App::$strings["has"] = "tiene"; -App::$strings["want"] = "quiero"; -App::$strings["wants"] = "quiere"; -App::$strings["likes"] = "gusta de"; -App::$strings["dislikes"] = "no gusta de"; -App::$strings["l F d, Y \\@ g:i A"] = "l d de F, Y \\@ G:i"; -App::$strings["Starts:"] = "Comienza:"; -App::$strings["Finishes:"] = "Finaliza:"; -App::$strings["This event has been added to your calendar."] = "Este evento ha sido añadido a su calendario."; -App::$strings["Not specified"] = "Sin especificar"; -App::$strings["Needs Action"] = "Necesita de una intervención"; -App::$strings["Completed"] = "Completado/a"; -App::$strings["In Process"] = "En proceso"; -App::$strings["Cancelled"] = "Cancelado/a"; -App::$strings["Birthday"] = "Cumpleaños"; -App::$strings["Age: "] = "Edad:"; -App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD"; -App::$strings["never"] = "nunca"; -App::$strings["less than a second ago"] = "hace un instante"; -App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s"; -App::$strings["__ctx:relative_date__ year"] = array( - 0 => "año", - 1 => "años", -); -App::$strings["__ctx:relative_date__ month"] = array( - 0 => "mes", - 1 => "meses", -); -App::$strings["__ctx:relative_date__ week"] = array( - 0 => "semana", - 1 => "semanas", -); -App::$strings["__ctx:relative_date__ day"] = array( - 0 => "día", - 1 => "días", -); -App::$strings["__ctx:relative_date__ hour"] = array( - 0 => "hora", - 1 => "horas", -); -App::$strings["__ctx:relative_date__ minute"] = array( - 0 => "minuto", - 1 => "minutos", -); -App::$strings["__ctx:relative_date__ second"] = array( - 0 => "segundo", - 1 => "segundos", -); -App::$strings["%1\$s's birthday"] = "Cumpleaños de %1\$s"; -App::$strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s"; +App::$strings["Redmatrix File Storage Import"] = "Importar repositorio de ficheros de Redmatrix"; +App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Esto importará todos sus ficheros de la nube de Redmatrix a este canal."; +App::$strings["file"] = "fichero"; +App::$strings["Send email to all members"] = "Enviar un correo electrónico a todos los miembros"; +App::$strings["$1%s Administrator"] = "Administrador de $1%s "; +App::$strings["%1\$d of %2\$d messages sent."] = "%1\$d de %2\$d mensajes enviados."; +App::$strings["Send email to all hub members."] = "Enviar un correo electrónico a todos los miembros del hub."; +App::$strings["Sender Email address"] = "Dirección de correo electrónico del remitente"; +App::$strings["Test mode (only send to hub administrator)"] = "Modo de prueba (enviar sólo al administrador del hub)"; App::$strings["Frequently"] = "Frecuentemente"; App::$strings["Hourly"] = "Cada hora"; App::$strings["Twice daily"] = "Dos veces al día"; @@ -2557,132 +2458,6 @@ App::$strings["Uncertain"] = "Indeterminado"; App::$strings["It's complicated"] = "Es complicado"; App::$strings["Don't care"] = "No me importa"; App::$strings["Ask me"] = "Pregúnteme"; -App::$strings["Who can see this?"] = "¿Quién puede ver esto?"; -App::$strings["Custom selection"] = "Selección personalizada"; -App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"."; -App::$strings["Show"] = "Mostrar"; -App::$strings["Don't show"] = "No mostrar"; -App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje."; -App::$strings["Image/photo"] = "Imagen/foto"; -App::$strings["Encrypted content"] = "Contenido cifrado"; -App::$strings["Install %s element: "] = "Instalar el elemento %s:"; -App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio."; -App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s escribió %2\$s siguiente %3\$s"; -App::$strings["Click to open/close"] = "Pulsar para abrir/cerrar"; -App::$strings["spoiler"] = "spoiler"; -App::$strings["$1 wrote:"] = "$1 escribió:"; -App::$strings["%1\$s's bookmarks"] = "Marcadores de %1\$s"; -App::$strings["New window"] = "Nueva ventana"; -App::$strings["Open the selected location in a different window or browser tab"] = "Abrir la dirección seleccionada en una ventana o pestaña aparte"; -App::$strings["Help:"] = "Ayuda:"; -App::$strings["Not Found"] = "No encontrado"; -App::$strings["New Page"] = "Nueva página"; -App::$strings["%d invitation available"] = array( - 0 => "%d invitación pendiente", - 1 => "%d invitaciones disponibles", -); -App::$strings["Find Channels"] = "Encontrar canales"; -App::$strings["Enter name or interest"] = "Introducir nombre o interés"; -App::$strings["Connect/Follow"] = "Conectar/Seguir"; -App::$strings["Examples: Robert Morgenstein, Fishing"] = "Ejemplos: José Fernández, Pesca"; -App::$strings["Random Profile"] = "Perfil aleatorio"; -App::$strings["Invite Friends"] = "Invitar a amigos"; -App::$strings["Advanced example: name=fred and country=iceland"] = "Ejemplo avanzado: nombre=juan y país=españa"; -App::$strings["%d connection in common"] = array( - 0 => "%d conexión en común", - 1 => "%d conexiones en común", -); -App::$strings["show more"] = "mostrar más"; -App::$strings["Delete this item?"] = "¿Borrar este elemento?"; -App::$strings["%s show less"] = "%s mostrar menos"; -App::$strings["%s expand"] = "%s expandir"; -App::$strings["%s collapse"] = "%s contraer"; -App::$strings["Password too short"] = "Contraseña demasiado corta"; -App::$strings["Passwords do not match"] = "Las contraseñas no coinciden"; -App::$strings["everybody"] = "cualquiera"; -App::$strings["Secret Passphrase"] = "Contraseña secreta"; -App::$strings["Passphrase hint"] = "Pista de contraseña"; -App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Aviso: los permisos han cambiado pero aún no han sido enviados."; -App::$strings["close all"] = "cerrar todo"; -App::$strings["Nothing new here"] = "Nada nuevo por aquí"; -App::$strings["Rate This Channel (this is public)"] = "Valorar este canal (esto es público)"; -App::$strings["Describe (optional)"] = "Describir (opcional)"; -App::$strings["Please enter a link URL"] = "Por favor, introduzca una dirección de enlace"; -App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Cambios no guardados. ¿Está seguro de que desea abandonar la página?"; -App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo"; -App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow"; -App::$strings["ago"] = "antes"; -App::$strings["from now"] = "desde ahora"; -App::$strings["less than a minute"] = "menos de un minuto"; -App::$strings["about a minute"] = "alrededor de un minuto"; -App::$strings["%d minutes"] = "%d minutos"; -App::$strings["about an hour"] = "alrededor de una hora"; -App::$strings["about %d hours"] = "alrededor de %d horas"; -App::$strings["a day"] = "un día"; -App::$strings["%d days"] = "%d días"; -App::$strings["about a month"] = "alrededor de un mes"; -App::$strings["%d months"] = "%d meses"; -App::$strings["about a year"] = "alrededor de un año"; -App::$strings["%d years"] = "%d años"; -App::$strings[" "] = " "; -App::$strings["timeago.numbers"] = "timeago.numbers"; -App::$strings["January"] = "enero"; -App::$strings["February"] = "febrero"; -App::$strings["March"] = "marzo"; -App::$strings["April"] = "abril"; -App::$strings["__ctx:long__ May"] = "mayo"; -App::$strings["June"] = "junio"; -App::$strings["July"] = "julio"; -App::$strings["August"] = "agosto"; -App::$strings["September"] = "septiembre"; -App::$strings["October"] = "octubre"; -App::$strings["November"] = "noviembre"; -App::$strings["December"] = "diciembre"; -App::$strings["Jan"] = "ene"; -App::$strings["Feb"] = "feb"; -App::$strings["Mar"] = "mar"; -App::$strings["Apr"] = "abr"; -App::$strings["__ctx:short__ May"] = "may"; -App::$strings["Jun"] = "jun"; -App::$strings["Jul"] = "jul"; -App::$strings["Aug"] = "ago"; -App::$strings["Sep"] = "sep"; -App::$strings["Oct"] = "oct"; -App::$strings["Nov"] = "nov"; -App::$strings["Dec"] = "dic"; -App::$strings["Sunday"] = "domingo"; -App::$strings["Monday"] = "lunes"; -App::$strings["Tuesday"] = "martes"; -App::$strings["Wednesday"] = "miércoles"; -App::$strings["Thursday"] = "jueves"; -App::$strings["Friday"] = "viernes"; -App::$strings["Saturday"] = "sábado"; -App::$strings["Sun"] = "dom"; -App::$strings["Mon"] = "lun"; -App::$strings["Tue"] = "mar"; -App::$strings["Wed"] = "mié"; -App::$strings["Thu"] = "jue"; -App::$strings["Fri"] = "vie"; -App::$strings["Sat"] = "sáb"; -App::$strings["__ctx:calendar__ today"] = "hoy"; -App::$strings["__ctx:calendar__ month"] = "mes"; -App::$strings["__ctx:calendar__ week"] = "semana"; -App::$strings["__ctx:calendar__ day"] = "día"; -App::$strings["__ctx:calendar__ All day"] = "Todos los días"; -App::$strings["Directory Options"] = "Opciones del directorio"; -App::$strings["Safe Mode"] = "Modo seguro"; -App::$strings["Public Forums Only"] = "Solo foros públicos"; -App::$strings["This Website Only"] = "Solo este sitio web"; -App::$strings["view full size"] = "Ver en el tamaño original"; -App::$strings["No Subject"] = "Sin asunto"; -App::$strings["OStatus"] = "OStatus"; -App::$strings["GNU-Social"] = "GNU Social"; -App::$strings["RSS/Atom"] = "RSS/Atom"; -App::$strings["Facebook"] = "Facebook"; -App::$strings["Zot"] = "Zot"; -App::$strings["LinkedIn"] = "LinkedIn"; -App::$strings["XMPP/IM"] = "XMPP/IM"; -App::$strings["MySpace"] = "MySpace"; App::$strings["%1\$s is now connected with %2\$s"] = "%1\$s ahora está conectado/a con %2\$s"; App::$strings["%1\$s poked %2\$s"] = "%1\$s ha dado un toque a %2\$s"; App::$strings["poked"] = "ha dado un toque a"; @@ -2774,84 +2549,26 @@ App::$strings["__ctx:noun__ Abstain"] = array( 0 => "se abstiene", 1 => "Se abstienen", ); -App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente."; -App::$strings["Add new connections to this privacy group"] = "Añadir conexiones nuevas a este grupo de canales"; -App::$strings["edit"] = "editar"; -App::$strings["Privacy Groups"] = "Grupos de canales"; -App::$strings["Edit group"] = "Editar grupo"; -App::$strings["Add privacy group"] = "Añadir un grupo de canales"; -App::$strings["Channels not in any privacy group"] = "Sin canales en ningún grupo"; -App::$strings["(Unknown)"] = "(Desconocido)"; -App::$strings["Visible to anybody on the internet."] = "Visible para cualquiera en internet."; -App::$strings["Visible to you only."] = "Visible sólo para usted."; -App::$strings["Visible to anybody in this network."] = "Visible para cualquiera en esta red."; -App::$strings["Visible to anybody authenticated."] = "Visible para cualquiera que esté autenticado."; -App::$strings["Visible to anybody on %s."] = "Visible para cualquiera en %s."; -App::$strings["Visible to all connections."] = "Visible para todas las conexiones."; -App::$strings["Visible to approved connections."] = "Visible para las conexiones permitidas."; -App::$strings["Visible to specific connections."] = "Visible para conexiones específicas."; -App::$strings["Privacy group is empty."] = "El grupo de canales está vacío."; -App::$strings["Privacy group: %s"] = "Grupo de canales: %s"; -App::$strings["Connection not found."] = "Conexión no encontrada"; -App::$strings["profile photo"] = "foto del perfil"; -App::$strings["[Edited %s]"] = "[se ha editado %s]"; -App::$strings["__ctx:edit_activity__ Post"] = "Publicar"; -App::$strings["__ctx:edit_activity__ Comment"] = "Comentar"; -App::$strings["Attachments:"] = "Ficheros adjuntos:"; -App::$strings["\$Projectname event notification:"] = "Notificación de eventos de \$Projectname:"; -App::$strings["guest:"] = "invitado: "; -App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado"; -App::$strings["Remote authentication"] = "Acceder desde su servidor"; -App::$strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor de inicio"; -App::$strings["Logout"] = "Finalizar sesión"; -App::$strings["End this session"] = "Finalizar esta sesión"; -App::$strings["Your profile page"] = "Su página del perfil"; -App::$strings["Manage/Edit profiles"] = "Administrar/editar perfiles"; -App::$strings["Edit your profile"] = "Editar su perfil"; -App::$strings["Sign in"] = "Acceder"; -App::$strings["Get me home"] = "Volver a la página principal"; -App::$strings["Log me out of this site"] = "Salir de este sitio"; -App::$strings["Create an account"] = "Crear una cuenta"; -App::$strings["Help and documentation"] = "Ayuda y documentación"; -App::$strings["Applications, utilities, links, games"] = "Aplicaciones, utilidades, enlaces, juegos"; -App::$strings["Search site @name, #tag, ?docs, content"] = "Buscar en el sitio por @nombre, #etiqueta, ?ayuda o contenido"; -App::$strings["Channel Directory"] = "Directorio de canales"; -App::$strings["Your grid"] = "Mi red"; -App::$strings["View your network/grid"] = "Ver su red"; -App::$strings["Mark all grid notifications seen"] = "Marcar todas las notificaciones de la red como vistas"; -App::$strings["Channel home"] = "Mi canal"; -App::$strings["View your channel home"] = "Ver su página principal del canal"; -App::$strings["Mark all channel notifications seen"] = "Marcar todas las notificaciones del canal como leídas"; -App::$strings["Notices"] = "Avisos"; -App::$strings["Notifications"] = "Notificaciones"; -App::$strings["View all notifications"] = "Ver todas las notificaciones"; -App::$strings["Private mail"] = "Correo privado"; -App::$strings["View your private messages"] = "Ver sus mensajes privados"; -App::$strings["Mark all private messages seen"] = "Marcar todos los mensajes privados como leídos"; -App::$strings["Event Calendar"] = "Calendario de eventos"; -App::$strings["View events"] = "Ver los eventos"; -App::$strings["Mark all events seen"] = "Marcar todos los eventos como leidos"; -App::$strings["Manage Your Channels"] = "Gestionar sus canales"; -App::$strings["Account/Channel Settings"] = "Ajustes de cuenta/canales"; -App::$strings["Site Setup and Configuration"] = "Ajustes y configuración del sitio"; -App::$strings["@name, #tag, ?doc, content"] = "@nombre, #etiqueta, ?ayuda, contenido"; -App::$strings["Please wait..."] = "Espere por favor…"; -App::$strings["Add Apps"] = "Añadir aplicaciones"; -App::$strings["Item was not found."] = "Elemento no encontrado."; -App::$strings["No source file."] = "Ningún fichero de origen"; -App::$strings["Cannot locate file to replace"] = "No se puede localizar el fichero que va a ser sustituido."; -App::$strings["Cannot locate file to revise/update"] = "No se puede localizar el fichero para revisar/actualizar"; -App::$strings["File exceeds size limit of %d"] = "El fichero supera el limite de tamaño de %d"; -App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos."; -App::$strings["File upload failed. Possible system limit or action terminated."] = "Error de carga, posiblemente por limite del sistema o porque la acción ha finalizado."; -App::$strings["Stored file could not be verified. Upload failed."] = "El fichero almacenado no ha podido ser verificado. El envío ha fallado."; -App::$strings["Path not available."] = "Ruta no disponible."; -App::$strings["Empty pathname"] = "Ruta vacía"; -App::$strings["duplicate filename or path"] = "Nombre duplicado de ruta o fichero"; -App::$strings["Path not found."] = "Ruta no encontrada"; -App::$strings["mkdir failed."] = "mkdir ha fallado."; -App::$strings["database storage failed."] = "el almacenamiento en la base de datos ha fallado."; -App::$strings["Empty path"] = "Ruta vacía"; +App::$strings["Can view my normal stream and posts"] = "Pueden verse mi actividad y publicaciones normales"; +App::$strings["Can view my webpages"] = "Pueden verse mis páginas web"; +App::$strings["Can post on my channel page (\"wall\")"] = "Pueden crearse entradas en mi página de inicio del canal (“muro”)"; +App::$strings["Can like/dislike stuff"] = "Puede marcarse contenido como me gusta/no me gusta"; +App::$strings["Profiles and things other than posts/comments"] = "Perfiles y otras cosas aparte de publicaciones/comentarios"; +App::$strings["Can forward to all my channel contacts via post @mentions"] = "Puede enviarse una entrada a todos mis contactos del canal mediante una @mención"; +App::$strings["Advanced - useful for creating group forum channels"] = "Avanzado - útil para crear canales de foros de discusión o grupos"; +App::$strings["Can chat with me (when available)"] = "Se puede charlar conmigo (cuando esté disponible)"; +App::$strings["Can write to my file storage and photos"] = "Puede escribirse en mi repositorio de ficheros y fotos"; +App::$strings["Can edit my webpages"] = "Pueden editarse mis páginas web"; +App::$strings["Somewhat advanced - very useful in open communities"] = "Algo avanzado - muy útil en comunidades abiertas"; +App::$strings["Can administer my channel resources"] = "Pueden administrarse mis recursos del canal"; +App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Muy avanzado. Déjelo a no ser que sepa bien lo que está haciendo."; +App::$strings["Directory Options"] = "Opciones del directorio"; +App::$strings["Safe Mode"] = "Modo seguro"; +App::$strings["Public Forums Only"] = "Solo foros públicos"; +App::$strings["This Website Only"] = "Solo este sitio web"; +App::$strings["%1\$s's bookmarks"] = "Marcadores de %1\$s"; +App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado."; +App::$strings["Cloned channel not found. Import failed."] = "No se ha podido importar el canal porque el canal clonado no se ha encontrado."; App::$strings["prev"] = "anterior"; App::$strings["first"] = "primera"; App::$strings["last"] = "última"; @@ -2892,11 +2609,30 @@ App::$strings["depressed"] = "deprimido/a"; App::$strings["motivated"] = "motivado/a"; App::$strings["relaxed"] = "relajado/a"; App::$strings["surprised"] = "sorprendido/a"; +App::$strings["Monday"] = "lunes"; +App::$strings["Tuesday"] = "martes"; +App::$strings["Wednesday"] = "miércoles"; +App::$strings["Thursday"] = "jueves"; +App::$strings["Friday"] = "viernes"; +App::$strings["Saturday"] = "sábado"; +App::$strings["Sunday"] = "domingo"; +App::$strings["January"] = "enero"; +App::$strings["February"] = "febrero"; +App::$strings["March"] = "marzo"; +App::$strings["April"] = "abril"; App::$strings["May"] = "mayo"; +App::$strings["June"] = "junio"; +App::$strings["July"] = "julio"; +App::$strings["August"] = "agosto"; +App::$strings["September"] = "septiembre"; +App::$strings["October"] = "octubre"; +App::$strings["November"] = "noviembre"; +App::$strings["December"] = "diciembre"; App::$strings["Unknown Attachment"] = "Adjunto no reconocido"; App::$strings["unknown"] = "desconocido"; App::$strings["remove category"] = "eliminar el tema"; App::$strings["remove from file"] = "eliminar del fichero"; +App::$strings["default"] = "por defecto"; App::$strings["Page layout"] = "Plantilla de la página"; App::$strings["You can create your own with the layouts tool"] = "Puede crear su propia disposición gráfica con la herramienta de plantillas"; App::$strings["Page content type"] = "Tipo de contenido de la página"; @@ -2918,8 +2654,27 @@ App::$strings["Export to cloud files"] = "Exportar a la nube de ficheros"; App::$strings["/path/to/export/folder"] = "/ruta/para/exportar/carpeta"; App::$strings["Enter a path to a cloud files destination."] = "Escriba una ruta de destino a la nube de ficheros."; App::$strings["Specify folder"] = "Especificar una carpeta"; -App::$strings["Logged out."] = "Desconectado/a."; -App::$strings["Failed authentication"] = "Autenticación fallida."; +App::$strings["%d invitation available"] = array( + 0 => "%d invitación pendiente", + 1 => "%d invitaciones disponibles", +); +App::$strings["Find Channels"] = "Encontrar canales"; +App::$strings["Enter name or interest"] = "Introducir nombre o interés"; +App::$strings["Connect/Follow"] = "Conectar/Seguir"; +App::$strings["Examples: Robert Morgenstein, Fishing"] = "Ejemplos: José Fernández, Pesca"; +App::$strings["Random Profile"] = "Perfil aleatorio"; +App::$strings["Invite Friends"] = "Invitar a amigos"; +App::$strings["Advanced example: name=fred and country=iceland"] = "Ejemplo avanzado: nombre=juan y país=españa"; +App::$strings["%d connection in common"] = array( + 0 => "%d conexión en común", + 1 => "%d conexiones en común", +); +App::$strings["show more"] = "mostrar más"; +App::$strings["Attachments:"] = "Ficheros adjuntos: "; +App::$strings["l F d, Y \\@ g:i A"] = "l d de F, Y \\@ G:i"; +App::$strings["\$Projectname event notification:"] = "Notificación de eventos de \$Projectname: "; +App::$strings["Starts:"] = "Comienza:"; +App::$strings["Finishes:"] = "Finaliza:"; App::$strings["Channel is blocked on this site."] = "El canal está bloqueado en este sitio."; App::$strings["Channel location missing."] = "Falta la dirección del canal."; App::$strings["Response from remote channel was incomplete."] = "Respuesta incompleta del canal."; @@ -2927,40 +2682,182 @@ App::$strings["Channel was deleted and no longer exists."] = "El canal ha sido e App::$strings["Protocol disabled."] = "Protocolo deshabilitado."; App::$strings["Channel discovery failed."] = "El intento de acceder al canal ha fallado."; App::$strings["Cannot connect to yourself."] = "No puede conectarse consigo mismo."; -App::$strings["Cannot create a duplicate channel identifier on this system. Import failed."] = "No se ha podido crear un canal con un identificador que ya existe en este sistema. La importación ha fallado."; -App::$strings["Channel clone failed. Import failed."] = "La clonación del canal no ha salido bien. La importación ha fallado."; -App::$strings["Cloned channel not found. Import failed."] = "No se ha podido importar el canal porque el canal clonado no se ha encontrado."; -App::$strings["Unable to import element \""] = "No se puede importar un elemento \""; +App::$strings["Delete this item?"] = "¿Borrar este elemento?"; +App::$strings["%s show less"] = "%s mostrar menos"; +App::$strings["%s expand"] = "%s expandir"; +App::$strings["%s collapse"] = "%s contraer"; +App::$strings["Password too short"] = "Contraseña demasiado corta"; +App::$strings["Passwords do not match"] = "Las contraseñas no coinciden"; +App::$strings["everybody"] = "cualquiera"; +App::$strings["Secret Passphrase"] = "Contraseña secreta"; +App::$strings["Passphrase hint"] = "Pista de contraseña"; +App::$strings["Notice: Permissions have changed but have not yet been submitted."] = "Aviso: los permisos han cambiado pero aún no han sido enviados."; +App::$strings["close all"] = "cerrar todo"; +App::$strings["Nothing new here"] = "Nada nuevo por aquí"; +App::$strings["Rate This Channel (this is public)"] = "Valorar este canal (esto es público)"; +App::$strings["Describe (optional)"] = "Describir (opcional)"; +App::$strings["Please enter a link URL"] = "Por favor, introduzca una dirección de enlace"; +App::$strings["Unsaved changes. Are you sure you wish to leave this page?"] = "Cambios no guardados. ¿Está seguro de que desea abandonar la página?"; +App::$strings["timeago.prefixAgo"] = "timeago.prefixAgo"; +App::$strings["timeago.prefixFromNow"] = "timeago.prefixFromNow"; +App::$strings["ago"] = "antes"; +App::$strings["from now"] = "desde ahora"; +App::$strings["less than a minute"] = "menos de un minuto"; +App::$strings["about a minute"] = "alrededor de un minuto"; +App::$strings["%d minutes"] = "%d minutos"; +App::$strings["about an hour"] = "alrededor de una hora"; +App::$strings["about %d hours"] = "alrededor de %d horas"; +App::$strings["a day"] = "un día"; +App::$strings["%d days"] = "%d días"; +App::$strings["about a month"] = "alrededor de un mes"; +App::$strings["%d months"] = "%d meses"; +App::$strings["about a year"] = "alrededor de un año"; +App::$strings["%d years"] = "%d años"; +App::$strings[" "] = " "; +App::$strings["timeago.numbers"] = "timeago.numbers"; +App::$strings["__ctx:long__ May"] = "mayo"; +App::$strings["Jan"] = "ene"; +App::$strings["Feb"] = "feb"; +App::$strings["Mar"] = "mar"; +App::$strings["Apr"] = "abr"; +App::$strings["__ctx:short__ May"] = "may"; +App::$strings["Jun"] = "jun"; +App::$strings["Jul"] = "jul"; +App::$strings["Aug"] = "ago"; +App::$strings["Sep"] = "sep"; +App::$strings["Oct"] = "oct"; +App::$strings["Nov"] = "nov"; +App::$strings["Dec"] = "dic"; +App::$strings["Sun"] = "dom"; +App::$strings["Mon"] = "lun"; +App::$strings["Tue"] = "mar"; +App::$strings["Wed"] = "mié"; +App::$strings["Thu"] = "jue"; +App::$strings["Fri"] = "vie"; +App::$strings["Sat"] = "sáb"; +App::$strings["__ctx:calendar__ today"] = "hoy"; +App::$strings["__ctx:calendar__ month"] = "mes"; +App::$strings["__ctx:calendar__ week"] = "semana"; +App::$strings["__ctx:calendar__ day"] = "día"; +App::$strings["__ctx:calendar__ All day"] = "Todos los días"; App::$strings["Unable to determine sender."] = "No ha sido posible determinar el remitente. "; App::$strings["No recipient provided."] = "No se ha especificado ningún destinatario."; App::$strings["[no subject]"] = "[sin asunto]"; App::$strings["Stored post could not be verified."] = "No se han podido verificar las publicaciones guardadas."; -App::$strings[" by "] = "por"; -App::$strings[" on "] = "en"; -App::$strings["Embedded content"] = "Contenido incorporado"; -App::$strings["Embedding disabled"] = "Incrustación deshabilitada"; -App::$strings["Invalid data packet"] = "Paquete de datos no válido"; -App::$strings["Unable to verify channel signature"] = "No ha sido posible de verificar la firma del canal"; -App::$strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la firma del sitio para %s"; -App::$strings["invalid target signature"] = "La firma recibida no es válida"; -App::$strings["Can view my normal stream and posts"] = "Pueden verse mi actividad y publicaciones normales"; -App::$strings["Can view my webpages"] = "Pueden verse mis páginas web"; -App::$strings["Can post on my channel page (\"wall\")"] = "Pueden crearse entradas en mi página de inicio del canal (“muro”)"; -App::$strings["Can like/dislike stuff"] = "Puede marcarse contenido como me gusta/no me gusta"; -App::$strings["Profiles and things other than posts/comments"] = "Perfiles y otras cosas aparte de publicaciones/comentarios"; -App::$strings["Can forward to all my channel contacts via post @mentions"] = "Puede enviarse una entrada a todos mis contactos del canal mediante una @mención"; -App::$strings["Advanced - useful for creating group forum channels"] = "Avanzado - útil para crear canales de foros de discusión o grupos"; -App::$strings["Can chat with me (when available)"] = "Se puede charlar conmigo (cuando esté disponible)"; -App::$strings["Can write to my file storage and photos"] = "Puede escribirse en mi repositorio de ficheros y fotos"; -App::$strings["Can edit my webpages"] = "Pueden editarse mis páginas web"; -App::$strings["Somewhat advanced - very useful in open communities"] = "Algo avanzado - muy útil en comunidades abiertas"; -App::$strings["Can administer my channel resources"] = "Pueden administrarse mis recursos del canal"; -App::$strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "Muy avanzado. Déjelo a no ser que sepa bien lo que está haciendo."; App::$strings[" and "] = " y "; App::$strings["public profile"] = "el perfil público"; App::$strings["%1\$s changed %2\$s to “%3\$s”"] = "%1\$s ha cambiado %2\$s a “%3\$s”"; App::$strings["Visit %1\$s's %2\$s"] = "Visitar %2\$s de %1\$s"; App::$strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s ha actualizado %2\$s, cambiando %3\$s."; +App::$strings["Item was not found."] = "Elemento no encontrado."; +App::$strings["No source file."] = "Ningún fichero de origen"; +App::$strings["Cannot locate file to replace"] = "No se puede localizar el fichero que va a ser sustituido."; +App::$strings["Cannot locate file to revise/update"] = "No se puede localizar el fichero para revisar/actualizar"; +App::$strings["File exceeds size limit of %d"] = "El fichero supera el limite de tamaño de %d"; +App::$strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Ha alcanzado su límite de %1$.0f Mbytes de almacenamiento de adjuntos."; +App::$strings["File upload failed. Possible system limit or action terminated."] = "Error de carga, posiblemente por limite del sistema o porque la acción ha finalizado."; +App::$strings["Stored file could not be verified. Upload failed."] = "El fichero almacenado no ha podido ser verificado. El envío ha fallado."; +App::$strings["Path not available."] = "Ruta no disponible."; +App::$strings["Empty pathname"] = "Ruta vacía"; +App::$strings["duplicate filename or path"] = "Nombre duplicado de ruta o fichero"; +App::$strings["Path not found."] = "Ruta no encontrada"; +App::$strings["mkdir failed."] = "mkdir ha fallado."; +App::$strings["database storage failed."] = "el almacenamiento en la base de datos ha fallado."; +App::$strings["Empty path"] = "Ruta vacía"; +App::$strings["guest:"] = "invitado: "; +App::$strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "El \"token\" de seguridad del formulario no es correcto. Esto ha ocurrido probablemente porque el formulario ha estado abierto demasiado tiempo (>3 horas) antes de ser enviado"; +App::$strings["(Unknown)"] = "(Desconocido)"; +App::$strings["Visible to anybody on the internet."] = "Visible para cualquiera en internet."; +App::$strings["Visible to you only."] = "Visible sólo para usted."; +App::$strings["Visible to anybody in this network."] = "Visible para cualquiera en esta red."; +App::$strings["Visible to anybody authenticated."] = "Visible para cualquiera que esté autenticado."; +App::$strings["Visible to anybody on %s."] = "Visible para cualquiera en %s."; +App::$strings["Visible to all connections."] = "Visible para todas las conexiones."; +App::$strings["Visible to approved connections."] = "Visible para las conexiones permitidas."; +App::$strings["Visible to specific connections."] = "Visible para conexiones específicas."; +App::$strings["Privacy group is empty."] = "El grupo de canales está vacío."; +App::$strings["Privacy group: %s"] = "Grupo de canales: %s"; +App::$strings["Connection not found."] = "Conexión no encontrada"; +App::$strings["profile photo"] = "foto del perfil"; +App::$strings["[Edited %s]"] = "[se ha editado %s]"; +App::$strings["__ctx:edit_activity__ Post"] = "Publicar"; +App::$strings["__ctx:edit_activity__ Comment"] = "Comentar"; +App::$strings["Unable to obtain identity information from database"] = "No ha sido posible obtener información sobre la identidad desde la base de datos"; +App::$strings["Empty name"] = "Nombre vacío"; +App::$strings["Name too long"] = "Nombre demasiado largo"; +App::$strings["No account identifier"] = "Ningún identificador de la cuenta"; +App::$strings["Nickname is required."] = "Se requiere un sobrenombre (alias)."; +App::$strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elija otro."; +App::$strings["Nickname has unsupported characters or is already being used on this site."] = "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio."; +App::$strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada"; +App::$strings["Default Profile"] = "Perfil principal"; +App::$strings["Create New Profile"] = "Crear un nuevo perfil"; +App::$strings["Visible to everybody"] = "Visible para todos"; +App::$strings["Gender:"] = "Género:"; +App::$strings["Homepage:"] = "Página personal:"; +App::$strings["Online Now"] = "Ahora en línea"; +App::$strings["Like this channel"] = "Me gusta este canal"; +App::$strings["j F, Y"] = "j F Y"; +App::$strings["j F"] = "j F"; +App::$strings["Birthday:"] = "Cumpleaños:"; +App::$strings["for %1\$d %2\$s"] = "por %1\$d %2\$s"; +App::$strings["Sexual Preference:"] = "Orientación sexual:"; +App::$strings["Tags:"] = "Etiquetas:"; +App::$strings["Political Views:"] = "Posición política:"; +App::$strings["Religion:"] = "Religión:"; +App::$strings["Hobbies/Interests:"] = "Aficciones o intereses:"; +App::$strings["Likes:"] = "Me gusta:"; +App::$strings["Dislikes:"] = "No me gusta:"; +App::$strings["Contact information and Social Networks:"] = "Información de contacto y redes sociales:"; +App::$strings["My other channels:"] = "Mis otros canales:"; +App::$strings["Musical interests:"] = "Preferencias musicales:"; +App::$strings["Books, literature:"] = "Libros, literatura:"; +App::$strings["Television:"] = "Televisión:"; +App::$strings["Film/dance/culture/entertainment:"] = "Cine, danza, cultura, entretenimiento:"; +App::$strings["Love/Romance:"] = "Vida sentimental o amorosa:"; +App::$strings["Work/employment:"] = "Trabajo:"; +App::$strings["School/education:"] = "Estudios:"; +App::$strings["Like this thing"] = "Me gusta esto"; +App::$strings["User '%s' deleted"] = "El usuario '%s' ha sido eliminado"; +App::$strings["This event has been added to your calendar."] = "Este evento ha sido añadido a su calendario."; +App::$strings["Not specified"] = "Sin especificar"; +App::$strings["Needs Action"] = "Necesita de una intervención"; +App::$strings["Completed"] = "Completado/a"; +App::$strings["In Process"] = "En proceso"; +App::$strings["Cancelled"] = "Cancelado/a"; +App::$strings["view full size"] = "Ver en el tamaño original"; +App::$strings["No Subject"] = "Sin asunto"; +App::$strings["Friendica"] = "Friendica"; +App::$strings["OStatus"] = "OStatus"; +App::$strings["GNU-Social"] = "GNU Social"; +App::$strings["RSS/Atom"] = "RSS/Atom"; +App::$strings["Diaspora"] = "Diaspora"; +App::$strings["Facebook"] = "Facebook"; +App::$strings["Zot"] = "Zot"; +App::$strings["LinkedIn"] = "LinkedIn"; +App::$strings["XMPP/IM"] = "XMPP/IM"; +App::$strings["MySpace"] = "MySpace"; +App::$strings["New Page"] = "Nueva página"; +App::$strings["Select an alternate language"] = "Seleccionar un idioma alternativo"; +App::$strings["Who can see this?"] = "¿Quién puede ver esto?"; +App::$strings["Custom selection"] = "Selección personalizada"; +App::$strings["Select \"Show\" to allow viewing. \"Don't show\" lets you override and limit the scope of \"Show\"."] = "Seleccione \"Mostrar\" para permitir la visualización. La opción \"No mostrar\" le permite anular y limitar el alcance de \"Mostrar\"."; +App::$strings["Show"] = "Mostrar"; +App::$strings["Don't show"] = "No mostrar"; +App::$strings["Post permissions %s cannot be changed %s after a post is shared.</br />These permissions set who is allowed to view the post."] = "Los permisos de la entrada %s no se pueden cambiar %s una vez que se ha compartido.</br /> Estos permisos establecen quién está autorizado para ver el mensaje."; +App::$strings["Cannot locate DNS info for database server '%s'"] = "No se ha podido localizar información de DNS para el servidor de base de datos “%s”"; +App::$strings["Image/photo"] = "Imagen/foto"; +App::$strings["Encrypted content"] = "Contenido cifrado"; +App::$strings["Install %s element: "] = "Instalar el elemento %s:"; +App::$strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Esta entrada contiene el elemento instalable %s, sin embargo le faltan permisos para instalarlo en este sitio."; +App::$strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s escribió %2\$s siguiente %3\$s"; +App::$strings["Click to open/close"] = "Pulsar para abrir/cerrar"; +App::$strings["spoiler"] = "spoiler"; +App::$strings["$1 wrote:"] = "$1 escribió:"; +App::$strings[" by "] = "por"; +App::$strings[" on "] = "en"; +App::$strings["Embedded content"] = "Contenido incorporado"; +App::$strings["Embedding disabled"] = "Incrustación deshabilitada"; App::$strings["General Features"] = "Funcionalidades básicas"; App::$strings["Multiple Profiles"] = "Múltiples perfiles"; App::$strings["Ability to create multiple profiles"] = "Capacidad de crear múltiples perfiles"; @@ -2979,7 +2876,7 @@ App::$strings["Photo Location"] = "Ubicación de las fotos"; App::$strings["If location data is available on uploaded photos, link this to a map."] = "Si los datos de ubicación están disponibles en las fotos subidas, enlazar estas a un mapa."; App::$strings["Access Controlled Chatrooms"] = "Salas de chat moderadas"; App::$strings["Provide chatrooms and chat services with access control."] = "Proporcionar salas y servicios de chat moderados."; -App::$strings["Provide alternate connection permission roles."] = "Proporcionar roles de acceso alternativas para esta conexión."; +App::$strings["Provide alternate connection permission roles."] = "Proporcionar roles de acceso alternativos para esta conexión."; App::$strings["Smart Birthdays"] = "Cumpleaños inteligentes"; App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Enlazar los eventos de cumpleaños con el huso horario en el caso de que sus amigos estén dispersos por el mundo."; App::$strings["Event Timezone Selection"] = "Selección del huso horario del evento"; @@ -3007,6 +2904,7 @@ App::$strings["Prevent posts with identical content to be published with less th App::$strings["Network and Stream Filtering"] = "Filtrado del contenido"; App::$strings["Search by Date"] = "Buscar por fecha"; App::$strings["Ability to select posts by date ranges"] = "Capacidad de seleccionar entradas por rango de fechas"; +App::$strings["Privacy Groups"] = "Grupos de canales"; App::$strings["Enable management and selection of privacy groups"] = "Activar la gestión y selección de grupos de canales"; App::$strings["Save search terms for re-use"] = "Guardar términos de búsqueda para su reutilización"; App::$strings["Network Personal Tab"] = "Actividad personal"; @@ -3034,92 +2932,117 @@ App::$strings["Tag Cloud"] = "Nube de etiquetas"; App::$strings["Provide a personal tag cloud on your channel page"] = "Proveer nube de etiquetas personal en su página de canal"; App::$strings["Premium Channel"] = "Canal premium"; App::$strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Le permite configurar restricciones y normas de uso a aquellos que conectan con su canal"; +App::$strings["Tags"] = "Etiquetas"; +App::$strings["Keywords"] = "Palabras clave"; +App::$strings["have"] = "tener"; +App::$strings["has"] = "tiene"; +App::$strings["want"] = "quiero"; +App::$strings["wants"] = "quiere"; +App::$strings["likes"] = "gusta de"; +App::$strings["dislikes"] = "no gusta de"; +App::$strings["Not a valid email address"] = "Dirección de correo no válida"; +App::$strings["Your email domain is not among those allowed on this site"] = "Su dirección de correo no pertenece a ninguno de los dominios permitidos en este sitio."; +App::$strings["Your email address is already registered at this site."] = "Su dirección de correo está ya registrada en este sitio."; +App::$strings["An invitation is required."] = "Es obligatorio que le inviten."; +App::$strings["Invitation could not be verified."] = "No se ha podido verificar su invitación."; +App::$strings["Please enter the required information."] = "Por favor introduzca la información requerida."; +App::$strings["Failed to store account information."] = "La información de la cuenta no se ha podido guardar."; +App::$strings["Registration confirmation for %s"] = "Confirmación de registro para %s"; +App::$strings["Registration request at %s"] = "Solicitud de registro en %s"; +App::$strings["your registration password"] = "su contraseña de registro"; +App::$strings["Registration details for %s"] = "Detalles del registro de %s"; +App::$strings["Account approved."] = "Cuenta aprobada."; +App::$strings["Registration revoked for %s"] = "Registro revocado para %s"; +App::$strings["Click here to upgrade."] = "Pulse aquí para actualizar"; +App::$strings["This action exceeds the limits set by your subscription plan."] = "Esta acción supera los límites establecidos por su plan de suscripción "; +App::$strings["This action is not available under your subscription plan."] = "Esta acción no está disponible en su plan de suscripción."; +App::$strings["Birthday"] = "Cumpleaños"; +App::$strings["Age: "] = "Edad:"; +App::$strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD"; +App::$strings["less than a second ago"] = "hace un instante"; +App::$strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s"; +App::$strings["__ctx:relative_date__ year"] = array( + 0 => "año", + 1 => "años", +); +App::$strings["__ctx:relative_date__ month"] = array( + 0 => "mes", + 1 => "meses", +); +App::$strings["__ctx:relative_date__ week"] = array( + 0 => "semana", + 1 => "semanas", +); +App::$strings["__ctx:relative_date__ day"] = array( + 0 => "día", + 1 => "días", +); +App::$strings["__ctx:relative_date__ hour"] = array( + 0 => "hora", + 1 => "horas", +); +App::$strings["__ctx:relative_date__ minute"] = array( + 0 => "minuto", + 1 => "minutos", +); +App::$strings["__ctx:relative_date__ second"] = array( + 0 => "segundo", + 1 => "segundos", +); +App::$strings["%1\$s's birthday"] = "Cumpleaños de %1\$s"; +App::$strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s"; +App::$strings["Remote authentication"] = "Acceder desde su servidor"; +App::$strings["Click to authenticate to your home hub"] = "Pulsar para identificarse en su servidor de inicio"; +App::$strings["End this session"] = "Finalizar esta sesión"; +App::$strings["Your profile page"] = "Su página del perfil"; +App::$strings["Manage/Edit profiles"] = "Administrar/editar perfiles"; +App::$strings["Edit your profile"] = "Editar su perfil"; +App::$strings["Sign in"] = "Acceder"; +App::$strings["Take me home"] = "Volver a la página principal"; +App::$strings["Log me out of this site"] = "Salir de este sitio"; +App::$strings["Create an account"] = "Crear una cuenta"; +App::$strings["Help and documentation"] = "Ayuda y documentación"; +App::$strings["Search site @name, #tag, ?docs, content"] = "Buscar en el sitio por @nombre, #etiqueta, ?ayuda o contenido"; +App::$strings["Your grid"] = "Mi red"; +App::$strings["View your network/grid"] = "Ver su red"; +App::$strings["Mark all grid notifications seen"] = "Marcar todas las notificaciones de la red como vistas"; +App::$strings["Channel home"] = "Mi canal"; +App::$strings["View your channel home"] = "Ver su página principal del canal"; +App::$strings["Mark all channel notifications seen"] = "Marcar todas las notificaciones del canal como leídas"; +App::$strings["Notices"] = "Avisos"; +App::$strings["Notifications"] = "Notificaciones"; +App::$strings["View all notifications"] = "Ver todas las notificaciones"; +App::$strings["Private mail"] = "Correo privado"; +App::$strings["View your private messages"] = "Ver sus mensajes privados"; +App::$strings["Mark all private messages seen"] = "Marcar todos los mensajes privados como leídos"; +App::$strings["Event Calendar"] = "Calendario de eventos"; +App::$strings["View events"] = "Ver los eventos"; +App::$strings["Mark all events seen"] = "Marcar todos los eventos como leidos"; +App::$strings["Manage Your Channels"] = "Gestionar sus canales"; +App::$strings["Account/Channel Settings"] = "Ajustes de cuenta/canales"; +App::$strings["Site Setup and Configuration"] = "Ajustes y configuración del sitio"; +App::$strings["@name, #tag, ?doc, content"] = "@nombre, #etiqueta, ?ayuda, contenido"; +App::$strings["Please wait..."] = "Espere por favor…"; +App::$strings["Add Apps"] = "Añadir aplicaciones"; App::$strings["Image exceeds website size limit of %lu bytes"] = "La imagen excede el límite de %lu bytes del sitio"; App::$strings["Image file is empty."] = "El fichero de imagen está vacío. "; App::$strings["Photo storage failed."] = "La foto no ha podido ser guardada."; App::$strings["a new photo"] = "una nueva foto"; App::$strings["__ctx:photo_upload__ %1\$s posted %2\$s to %3\$s"] = "%1\$s ha publicado %2\$s en %3\$s"; App::$strings["Upload New Photos"] = "Subir nuevas fotos"; -App::$strings["Unable to obtain identity information from database"] = "No ha sido posible obtener información sobre la identidad desde la base de datos"; -App::$strings["Empty name"] = "Nombre vacío"; -App::$strings["Name too long"] = "Nombre demasiado largo"; -App::$strings["No account identifier"] = "Ningún identificador de la cuenta"; -App::$strings["Nickname is required."] = "Se requiere un sobrenombre (alias)."; -App::$strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elija otro."; -App::$strings["Nickname has unsupported characters or is already being used on this site."] = "El alias contiene caracteres no admitidos o está ya en uso por otros miembros de este sitio."; -App::$strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada"; -App::$strings["Default Profile"] = "Perfil principal"; -App::$strings["Create New Profile"] = "Crear un nuevo perfil"; -App::$strings["Visible to everybody"] = "Visible para todos"; -App::$strings["Gender:"] = "Género:"; -App::$strings["Homepage:"] = "Página personal:"; -App::$strings["Online Now"] = "Ahora en línea"; -App::$strings["Like this channel"] = "Me gusta este canal"; -App::$strings["j F, Y"] = "j F Y"; -App::$strings["j F"] = "j F"; -App::$strings["Birthday:"] = "Cumpleaños:"; -App::$strings["for %1\$d %2\$s"] = "por %1\$d %2\$s"; -App::$strings["Sexual Preference:"] = "Orientación sexual:"; -App::$strings["Tags:"] = "Etiquetas:"; -App::$strings["Political Views:"] = "Posición política:"; -App::$strings["Religion:"] = "Religión:"; -App::$strings["Hobbies/Interests:"] = "Aficciones o intereses:"; -App::$strings["Likes:"] = "Me gusta:"; -App::$strings["Dislikes:"] = "No me gusta:"; -App::$strings["Contact information and Social Networks:"] = "Información de contacto y redes sociales:"; -App::$strings["My other channels:"] = "Mis otros canales:"; -App::$strings["Musical interests:"] = "Preferencias musicales:"; -App::$strings["Books, literature:"] = "Libros, literatura:"; -App::$strings["Television:"] = "Televisión:"; -App::$strings["Film/dance/culture/entertainment:"] = "Cine, danza, cultura, entretenimiento:"; -App::$strings["Love/Romance:"] = "Vida sentimental o amorosa:"; -App::$strings["Work/employment:"] = "Trabajo:"; -App::$strings["School/education:"] = "Estudios:"; -App::$strings["Like this thing"] = "Me gusta esto"; -App::$strings["User '%s' deleted"] = "El usuario '%s' ha sido eliminado"; -App::$strings["Source channel not found."] = "No se ha encontrado el canal de origen."; -App::$strings["Focus (Hubzilla default)"] = "Focus (predefinido)"; -App::$strings["Theme settings"] = "Ajustes del tema"; -App::$strings["Narrow navbar"] = "Estrechar la barra de navegación"; -App::$strings["Navigation bar background color"] = "Color de fondo de la barra de navegación"; -App::$strings["Navigation bar gradient top color"] = "Color superior del gradiente de la barra de navegación"; -App::$strings["Navigation bar gradient bottom color"] = "Color inferior del gradiente de la barra de navegación"; -App::$strings["Navigation active button gradient top color"] = "Color superior del gradiente del botón activo de navegación"; -App::$strings["Navigation active button gradient bottom color"] = "Color inferior del gradiente del botón activo de navegación"; -App::$strings["Navigation bar border color "] = "Color del borde de la barra de navegación"; -App::$strings["Navigation bar icon color "] = "Color del icono de la barra de navegación"; -App::$strings["Navigation bar active icon color "] = "Color del icono activo de la barra de navegación"; -App::$strings["link color"] = "Color del enlace"; -App::$strings["Set font-color for banner"] = "Ajustar el color del tipo de letra para el \"banner\""; -App::$strings["Set the background color"] = "Ajustar el color de fondo"; -App::$strings["Set the background image"] = "Ajustar la imagen de fondo"; -App::$strings["Set the background color of items"] = "Ajustar el color de los elementos de fondo"; -App::$strings["Set the background color of comments"] = "Ajustar el color de fondo de los comentarios"; -App::$strings["Set the border color of comments"] = "Ajustar el color del borde de los comentarios"; -App::$strings["Set the indent for comments"] = "Ajustar la indentación de los comentarios"; -App::$strings["Set the basic color for item icons"] = "Ajustar el color básico para los iconos de los elementos"; -App::$strings["Set the hover color for item icons"] = "Ajustar el color flotante para los iconos de los elementos"; -App::$strings["Set font-size for the entire application"] = "Ajustar el tamaño de letra para toda la aplicación"; -App::$strings["Example: 14px"] = "Ejemplo: 14px"; -App::$strings["Set font-size for posts and comments"] = "Ajustar el tamaño del tipo de letra para publicaciones y comentarios"; -App::$strings["Set font-color for posts and comments"] = "Establecer el color de la letra para publicaciones y comentarios"; -App::$strings["Set radius of corners"] = "Establecer el radio de curvatura de las esquinas"; -App::$strings["Set shadow depth of photos"] = "Ajustar la profundidad de sombras de las fotos"; -App::$strings["Set maximum width of content region in pixel"] = "Ajustar la anchura máxima de la región de contenido, en pixels"; -App::$strings["Leave empty for default width"] = "Dejar en blanco para la anchura predeterminada"; -App::$strings["Left align page content"] = "Alinear a la izquierda el contenido de la página"; -App::$strings["Set minimum opacity of nav bar - to hide it"] = "Ajustar la opacidad mínima de la barra de navegación - para ocultarla"; -App::$strings["Set size of conversation author photo"] = "Ajustar el tamaño de la foto del autor de la conversación"; -App::$strings["Set size of followup author photos"] = "Ajustar el tamaño de foto de los seguidores del autor"; -App::$strings["Update %s failed. See error logs."] = "La actualización %s ha fallado. Mire el informe de errores."; -App::$strings["Update Error at %s"] = "Error de actualización en %s"; -App::$strings["Create an account to access services and applications"] = "Crear una cuenta para acceder a los servicios y aplicaciones"; -App::$strings["Login/Email"] = "Inicio de sesión / Correo electrónico"; -App::$strings["Password"] = "Contraseña"; -App::$strings["Remember me"] = "Recordarme"; -App::$strings["Forgot your password?"] = "¿Olvidó su contraseña?"; -App::$strings["toggle mobile"] = "cambiar a modo móvil"; -App::$strings["Website SSL certificate is not valid. Please correct."] = "El certificado SSL del sitio web no es válido. Por favor, solucione el problema."; -App::$strings["[hubzilla] Website SSL error for %s"] = "[hubzilla] Error SSL del sitio web en %s"; -App::$strings["Cron/Scheduled tasks not running."] = "Las tareas del Planificador/Cron no están funcionando."; -App::$strings["[hubzilla] Cron tasks not running on %s"] = "[hubzilla] Las tareas de Cron no están funcionando en %s"; +App::$strings["Invalid data packet"] = "Paquete de datos no válido"; +App::$strings["Unable to verify channel signature"] = "No ha sido posible de verificar la firma del canal"; +App::$strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la firma del sitio para %s"; +App::$strings["invalid target signature"] = "La firma recibida no es válida"; +App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grupo suprimido con este nombre ha sido restablecido. <strong>Es posible</strong> que los permisos existentes sean aplicados a este grupo y sus futuros miembros. Si no quiere esto, por favor cree otro grupo con un nombre diferente."; +App::$strings["Add new connections to this privacy group"] = "Añadir conexiones nuevas a este grupo de canales"; +App::$strings["edit"] = "editar"; +App::$strings["Edit group"] = "Editar grupo"; +App::$strings["Add privacy group"] = "Añadir un grupo de canales"; +App::$strings["Channels not in any privacy group"] = "Sin canales en ningún grupo"; +App::$strings["New window"] = "Nueva ventana"; +App::$strings["Open the selected location in a different window or browser tab"] = "Abrir la dirección seleccionada en una ventana o pestaña aparte"; +App::$strings["Logged out."] = "Desconectado/a."; +App::$strings["Failed authentication"] = "Autenticación fallida."; +App::$strings["Help:"] = "Ayuda:"; +App::$strings["Not Found"] = "No encontrado"; diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index 8853a56c3..4ab2634ef 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -12,7 +12,6 @@ html { } body { - font-family: sans-serif, arial, freesans; font-size: 0.9rem; background-color: $bgcolour; background-image: url('$background_image'); diff --git a/view/tpl/atom_feed.tpl b/view/tpl/atom_feed.tpl index 37eaf954a..fb606af27 100755 --- a/view/tpl/atom_feed.tpl +++ b/view/tpl/atom_feed.tpl @@ -3,13 +3,13 @@ xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:at="http://purl.org/atompub/tombstones/1.0" xmlns:media="http://purl.org/syndication/atommedia" - xmlns:dfrn="http://purl.org/macgirvin/dfrn/1.0" + xmlns:dfrn="http://purl.org/macgirvin/dfrn/1.0" xmlns:zot="http://purl.org/zot" xmlns:as="http://activitystrea.ms/spec/1.0/" - xmlns:georss="http://www.georss.org/georss" - xmlns:poco="http://portablecontacts.net/spec/1.0" - xmlns:ostatus="http://ostatus.org/schema/1.0" - xmlns:statusnet="http://status.net/schema/api/1/" > + xmlns:georss="http://www.georss.org/georss" + xmlns:poco="http://portablecontacts.net/spec/1.0" + xmlns:ostatus="http://ostatus.org/schema/1.0" + xmlns:statusnet="http://status.net/schema/api/1/" > <id>{{$feed_id}}</id> <title>{{$feed_title}}</title> diff --git a/view/tpl/connection_template.tpl b/view/tpl/connection_template.tpl index 2a668d485..16915abda 100755 --- a/view/tpl/connection_template.tpl +++ b/view/tpl/connection_template.tpl @@ -1,5 +1,5 @@ <div id="contact-entry-wrapper-{{$contact.id}}"> - <div class="section-subtitle-wrapper"> + <div class="section-subtitle-wrapper clearfix"> <div class="pull-right"> {{if $contact.approve && $contact.ignore}} <form action="connedit/{{$contact.id}}" method="post" > diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl index 853146a17..1cc5a898a 100755 --- a/view/tpl/jot-header.tpl +++ b/view/tpl/jot-header.tpl @@ -420,7 +420,7 @@ function enableOnUser(){ }); getPhotoAlbumList(); $('#embedPhotoModalBodyAlbumDialog').off('click'); - $('#embedPhotoModal').modal(); + $('#embedPhotoModal').modal('show'); }; var choosePhotoFromAlbum = function (album) { |